HMSBEAGLE  1.0.0
EigenDecompositionCube.h
1 /*
2  * EigenDecompositionCube.h
3  *
4  * Created on: Sep 24, 2009
5  * Author: msuchard
6  */
7 
8 #ifndef EIGENDECOMPOSITIONCUBE_H_
9 #define EIGENDECOMPOSITIONCUBE_H_
10 
11 #include "libhmsbeagle/CPU/EigenDecomposition.h"
12 
13 namespace beagle {
14 namespace cpu {
15 
16 BEAGLE_CPU_EIGEN_TEMPLATE
17 class EigenDecompositionCube : public EigenDecomposition<BEAGLE_CPU_EIGEN_GENERIC> {
18 
27 
28 protected:
29  REALTYPE** gCMatrices;
30 
31 public:
32  EigenDecompositionCube(int decompositionCount,
33  int stateCount,
34  int categoryCount,
35  long flags);
36 
37  virtual ~EigenDecompositionCube();
38 
39  virtual void setEigenDecomposition(int eigenIndex,
40  const double* inEigenVectors,
41  const double* inInverseEigenVectors,
42  const double* inEigenValues);
43 
44  virtual void updateTransitionMatrices(int eigenIndex,
45  const int* probabilityIndices,
46  const int* firstDerivativeIndices,
47  const int* secondDerivativeIndices,
48  const double* edgeLengths,
49  const double* categoryRates,
50  REALTYPE** transitionMatrices,
51  int count);
52 
53 };
54 
55 }
56 }
57 
58 // Include the template implementation
59 #include "libhmsbeagle/CPU/EigenDecompositionCube.hpp"
60 
61 #endif /* EIGENDECOMPOSITIONCUBE_H_ */