bpp-phyl3  3.0.0
DataFlowCWiseComputing.cpp
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: The Bio++ Development Group
2 //
3 // SPDX-License-Identifier: CECILL-2.1
4 
5 #include <Bpp/Exceptions.h>
6 
8 
9 namespace bpp
10 {
11 void failureDeltaNotDerivable (const std::type_info& contextNodeType)
12 {
13  throw Exception (prettyTypeName (contextNodeType) +
14  ": does not support derivation for the delta dependency");
15 }
17 {
18  throw Exception ("Numerical derivation of expression is not configured: define the node "
19  "providing the delta value, and choose a computation type.");
20 }
21 
22 // Precompiled instantiations of numeric nodes
23 
24 template class CWiseApply<MatrixLik, MatrixLik, TransitionFunction>;
25 
26 template class CWiseAdd<double, std::tuple<double, double>>;
27 template class CWiseAdd<ExtendedFloat, std::tuple<ExtendedFloat, ExtendedFloat>>;
28 template class CWiseAdd<VectorLik, std::tuple<VectorLik, VectorLik>>;
29 template class CWiseAdd<RowLik, std::tuple<RowLik, RowLik>>;
30 template class CWiseAdd<MatrixLik, std::tuple<MatrixLik, MatrixLik>>;
31 template class CWiseAdd<TransitionFunction, std::tuple<TransitionFunction, TransitionFunction>>;
32 
33 template class CWiseAdd<RowLik, MatrixLik>;
34 template class CWiseAdd<VectorLik, MatrixLik>;
35 template class CWiseAdd<DataLik, VectorLik>;
36 template class CWiseAdd<DataLik, RowLik>;
37 
38 template class CWiseAdd<double, ReductionOf<double>>;
39 template class CWiseAdd<ExtendedFloat, ReductionOf<ExtendedFloat>>;
40 template class CWiseAdd<VectorLik, ReductionOf<VectorLik>>;
41 template class CWiseAdd<RowLik, ReductionOf<RowLik>>;
42 template class CWiseAdd<MatrixLik, ReductionOf<MatrixLik>>;
43 template class CWiseAdd<TransitionFunction, ReductionOf<TransitionFunction>>;
44 
45 template class CWiseMean<VectorLik, ReductionOf<VectorLik>, ReductionOf<double>>;
46 template class CWiseMean<RowLik, ReductionOf<RowLik>, ReductionOf<double>>;
47 template class CWiseMean<MatrixLik, ReductionOf<MatrixLik>, ReductionOf<double>>;
48 template class CWiseMean<double, ReductionOf<double>, ReductionOf<double>>;
49 template class CWiseMean<ExtendedFloat, ReductionOf<ExtendedFloat>, ReductionOf<double>>;
50 
51 template class CWiseMean<VectorLik, ReductionOf<VectorLik>, Eigen::VectorXd>;
52 template class CWiseMean<RowLik, ReductionOf<RowLik>, Eigen::VectorXd>;
53 template class CWiseMean<MatrixLik, ReductionOf<MatrixLik>, Eigen::VectorXd>;
54 template class CWiseMean<VectorLik, ReductionOf<VectorLik>, Eigen::RowVectorXd>;
55 template class CWiseMean<RowLik, ReductionOf<RowLik>, Eigen::RowVectorXd>;
56 template class CWiseMean<MatrixLik, ReductionOf<MatrixLik>, Eigen::RowVectorXd>;
57 
58 template class CWiseSub<double, std::tuple<double, double>>;
59 template class CWiseSub<ExtendedFloat, std::tuple<ExtendedFloat, ExtendedFloat>>;
60 template class CWiseSub<VectorLik, std::tuple<VectorLik, VectorLik>>;
61 template class CWiseSub<RowLik, std::tuple<RowLik, RowLik>>;
62 template class CWiseSub<MatrixLik, std::tuple<MatrixLik, MatrixLik>>;
63 
64 template class CWiseSub<VectorLik, std::tuple<VectorLik, DataLik>>;
65 template class CWiseSub<RowLik, std::tuple<RowLik, DataLik>>;
66 
67 template class CWiseMul<double, std::tuple<double, double>>;
68 template class CWiseMul<double, std::tuple<double, uint>>;
69 template class CWiseMul<ExtendedFloat, std::tuple<ExtendedFloat, ExtendedFloat>>;
70 template class CWiseMul<ExtendedFloat, std::tuple<ExtendedFloat, uint>>;
71 template class CWiseMul<VectorLik, std::tuple<VectorLik, VectorLik>>;
72 template class CWiseMul<RowLik, std::tuple<RowLik, RowLik>>;
73 template class CWiseMul<MatrixLik, std::tuple<MatrixLik, MatrixLik>>;
74 
75 template class CWiseMul<RowLik, std::tuple<RowLik, Eigen::RowVectorXi>>;
76 template class CWiseMul<VectorLik, std::tuple<VectorLik, Eigen::RowVectorXi>>;
77 template class CWiseMul<VectorLik, std::tuple<DataLik, VectorLik>>;
78 template class CWiseMul<RowLik, std::tuple<DataLik, RowLik>>;
79 template class CWiseMul<MatrixLik, std::tuple<DataLik, MatrixLik>>;
80 template class CWiseMul<TransitionFunction, std::tuple<TransitionFunction, TransitionFunction>>;
81 template class CWiseMul<TransitionFunction, std::tuple<double, TransitionFunction>>;
82 
83 template class CWiseMul<double, ReductionOf<double>>;
84 template class CWiseMul<ExtendedFloat, ReductionOf<ExtendedFloat>>;
85 template class CWiseMul<VectorLik, ReductionOf<VectorLik>>;
86 template class CWiseMul<RowLik, ReductionOf<RowLik>>;
87 template class CWiseMul<MatrixLik, ReductionOf<MatrixLik>>;
88 
89 template class CWiseNegate<double>;
90 template class CWiseNegate<ExtendedFloat>;
91 template class CWiseNegate<VectorLik>;
92 template class CWiseNegate<RowLik>;
93 template class CWiseNegate<MatrixLik>;
94 
95 template class CWiseInverse<double>;
96 template class CWiseInverse<ExtendedFloat>;
97 template class CWiseInverse<VectorLik>;
98 template class CWiseInverse<RowLik>;
99 template class CWiseInverse<MatrixLik>;
100 
101 template class CWiseLog<double>;
102 template class CWiseLog<ExtendedFloat>;
103 template class CWiseLog<VectorLik>;
104 template class CWiseLog<RowLik>;
105 template class CWiseLog<MatrixLik>;
106 
107 template class CWiseExp<double>;
108 template class CWiseExp<ExtendedFloat>;
109 template class CWiseExp<VectorLik>;
110 template class CWiseExp<RowLik>;
111 template class CWiseExp<MatrixLik>;
112 
113 template class CWiseConstantPow<double>;
114 template class CWiseConstantPow<ExtendedFloat>;
115 template class CWiseConstantPow<VectorLik>;
116 template class CWiseConstantPow<RowLik>;
117 template class CWiseConstantPow<MatrixLik>;
118 
119 template class ScalarProduct<DataLik, VectorLik, VectorLik>;
120 template class ScalarProduct<DataLik, RowLik, RowLik>;
121 
122 template class LogSumExp<DataLik, VectorLik, Eigen::VectorXd>;
123 template class LogSumExp<DataLik, RowLik, Eigen::RowVectorXd>;
124 
125 template class SumOfLogarithms<VectorLik>;
126 template class SumOfLogarithms<RowLik>;
127 
128 template class MatrixProduct<ExtendedFloatRowVectorXd, Eigen::RowVectorXd, ExtendedFloatMatrixXd>;
129 template class MatrixProduct<Eigen::RowVectorXd, Eigen::RowVectorXd, Eigen::MatrixXd>;
130 template class MatrixProduct<MatrixLik, Eigen::MatrixXd, MatrixLik>;
131 template class MatrixProduct<MatrixLik, Transposed<Eigen::MatrixXd>, MatrixLik>;
132 
133 template class ShiftDelta<double>;
134 template class ShiftDelta<VectorLik>;
135 template class ShiftDelta<RowLik>;
136 template class ShiftDelta<MatrixLik>;
137 
138 template class CombineDeltaShifted<double>;
139 template class CombineDeltaShifted<VectorLik>;
140 template class CombineDeltaShifted<RowLik>;
141 template class CombineDeltaShifted<MatrixLik>;
142 template class CombineDeltaShifted<TransitionFunction>;
143 } // namespace bpp
Defines the basic types of data flow nodes.
ExtendedFloatMatrixXd MatrixLik
Definition: Definitions.h:13
void failureDeltaNotDerivable(const std::type_info &contextNodeType)
std::string prettyTypeName(const std::type_info &ti)
Debug: return a readable name for a C++ type descriptor (from typeid operator).
Definition: DataFlow.cpp:43
void failureNumericalDerivationNotConfigured()