50 #include "libhmsbeagle/platform.h"
59 enum BeagleReturnCodes {
61 BEAGLE_ERROR_GENERAL = -1,
62 BEAGLE_ERROR_OUT_OF_MEMORY = -2,
63 BEAGLE_ERROR_UNIDENTIFIED_EXCEPTION = -3,
64 BEAGLE_ERROR_UNINITIALIZED_INSTANCE = -4,
66 BEAGLE_ERROR_OUT_OF_RANGE = -5,
68 BEAGLE_ERROR_NO_RESOURCE = -6,
69 BEAGLE_ERROR_NO_IMPLEMENTATION = -7,
70 BEAGLE_ERROR_FLOATING_POINT = -8
82 BEAGLE_FLAG_PRECISION_SINGLE = 1 << 0,
83 BEAGLE_FLAG_PRECISION_DOUBLE = 1 << 1,
85 BEAGLE_FLAG_COMPUTATION_SYNCH = 1 << 2,
86 BEAGLE_FLAG_COMPUTATION_ASYNCH = 1 << 3,
88 BEAGLE_FLAG_EIGEN_REAL = 1 << 4,
89 BEAGLE_FLAG_EIGEN_COMPLEX = 1 << 5,
91 BEAGLE_FLAG_SCALING_MANUAL = 1 << 6,
92 BEAGLE_FLAG_SCALING_AUTO = 1 << 7,
93 BEAGLE_FLAG_SCALING_ALWAYS = 1 << 8,
94 BEAGLE_FLAG_SCALING_DYNAMIC = 1 << 19,
96 BEAGLE_FLAG_SCALERS_RAW = 1 << 9,
97 BEAGLE_FLAG_SCALERS_LOG = 1 << 10,
99 BEAGLE_FLAG_INVEVEC_STANDARD = 1 << 20,
100 BEAGLE_FLAG_INVEVEC_TRANSPOSED = 1 << 21,
102 BEAGLE_FLAG_VECTOR_SSE = 1 << 11,
103 BEAGLE_FLAG_VECTOR_NONE = 1 << 12,
105 BEAGLE_FLAG_THREADING_OPENMP = 1 << 13,
106 BEAGLE_FLAG_THREADING_NONE = 1 << 14,
108 BEAGLE_FLAG_PROCESSOR_CPU = 1 << 15,
109 BEAGLE_FLAG_PROCESSOR_GPU = 1 << 16,
110 BEAGLE_FLAG_PROCESSOR_FPGA = 1 << 17,
111 BEAGLE_FLAG_PROCESSOR_CELL = 1 << 18
205 BEAGLE_DLLEXPORT
int beagleCreateInstance(
int tipCount,
206 int partialsBufferCount,
207 int compactBufferCount,
210 int eigenBufferCount,
211 int matrixBufferCount,
213 int scaleBufferCount,
216 long preferenceFlags,
217 long requirementFlags,
229 BEAGLE_DLLEXPORT
int beagleFinalizeInstance(
int instance);
239 BEAGLE_DLLEXPORT
int beagleFinalize(
void);
255 BEAGLE_DLLEXPORT
int beagleSetTipStates(
int instance,
257 const int* inStates);
273 BEAGLE_DLLEXPORT
int beagleSetTipPartials(
int instance,
275 const double* inPartials);
289 BEAGLE_DLLEXPORT
int beagleSetPartials(
int instance,
291 const double* inPartials);
306 BEAGLE_DLLEXPORT
int beagleGetPartials(
int instance,
309 double* outPartials);
325 BEAGLE_DLLEXPORT
int beagleSetEigenDecomposition(
int instance,
327 const double* inEigenVectors,
328 const double* inInverseEigenVectors,
329 const double* inEigenValues);
342 BEAGLE_DLLEXPORT
int beagleSetStateFrequencies(
int instance,
343 int stateFrequenciesIndex,
344 const double* inStateFrequencies);
357 BEAGLE_DLLEXPORT
int beagleSetCategoryWeights(
int instance,
358 int categoryWeightsIndex,
359 const double* inCategoryWeights);
371 BEAGLE_DLLEXPORT
int beagleSetCategoryRates(
int instance,
372 const double* inCategoryRates);
383 BEAGLE_DLLEXPORT
int beagleSetPatternWeights(
int instance,
384 const double* inPatternWeights);
405 BEAGLE_DLLEXPORT
int beagleUpdateTransitionMatrices(
int instance,
407 const int* probabilityIndices,
408 const int* firstDerivativeIndices,
409 const int* secondDerivativeIndices,
410 const double* edgeLengths,
428 BEAGLE_DLLEXPORT
int beagleSetTransitionMatrix(
int instance,
430 const double* inMatrix,
446 BEAGLE_DLLEXPORT
int beagleGetTransitionMatrix(
int instance,
466 BEAGLE_DLLEXPORT
int beagleSetTransitionMatrices(
int instance,
467 const int* matrixIndices,
468 const double* inMatrices,
469 const double* paddedValues,
473 int destinationPartials;
474 int destinationScaleWrite;
475 int destinationScaleRead;
477 int child1TransitionMatrix;
479 int child2TransitionMatrix;
505 BEAGLE_DLLEXPORT
int beagleUpdatePartials(
const int instance,
508 int cumulativeScaleIndex);
526 BEAGLE_DLLEXPORT
int beagleWaitForPartials(
const int instance,
527 const int* destinationPartials,
528 int destinationPartialsCount);
541 BEAGLE_DLLEXPORT
int beagleAccumulateScaleFactors(
int instance,
542 const int* scaleIndices,
544 int cumulativeScaleIndex);
557 BEAGLE_DLLEXPORT
int beagleRemoveScaleFactors(
int instance,
558 const int* scaleIndices,
560 int cumulativeScaleIndex);
570 BEAGLE_DLLEXPORT
int beagleResetScaleFactors(
int instance,
571 int cumulativeScaleIndex);
582 BEAGLE_DLLEXPORT
int beagleCopyScaleFactors(
int instance,
583 int destScalingIndex,
584 int srcScalingIndex);
608 BEAGLE_DLLEXPORT
int beagleCalculateRootLogLikelihoods(
int instance,
609 const int* bufferIndices,
610 const int* categoryWeightsIndices,
611 const int* stateFrequenciesIndices,
612 const int* cumulativeScaleIndices,
614 double* outSumLogLikelihood);
643 BEAGLE_DLLEXPORT
int beagleCalculateEdgeLogLikelihoods(
int instance,
644 const int* parentBufferIndices,
645 const int* childBufferIndices,
646 const int* probabilityIndices,
647 const int* firstDerivativeIndices,
648 const int* secondDerivativeIndices,
649 const int* categoryWeightsIndices,
650 const int* stateFrequenciesIndices,
651 const int* cumulativeScaleIndices,
653 double* outSumLogLikelihood,
654 double* outSumFirstDerivative,
655 double* outSumSecondDerivative);
668 BEAGLE_DLLEXPORT
int beagleGetSiteLogLikelihoods(
int instance,
669 double* outLogLikelihoods);
682 BEAGLE_DLLEXPORT
int beagleGetSiteDerivatives(
int instance,
683 double* outFirstDerivatives,
684 double* outSecondDerivatives);