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
9namespace bpp
10{
11void 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
24template class CWiseApply<MatrixLik, MatrixLik, TransitionFunction>;
25
26template class CWiseAdd<double, std::tuple<double, double>>;
27template class CWiseAdd<ExtendedFloat, std::tuple<ExtendedFloat, ExtendedFloat>>;
28template class CWiseAdd<VectorLik, std::tuple<VectorLik, VectorLik>>;
29template class CWiseAdd<RowLik, std::tuple<RowLik, RowLik>>;
30template class CWiseAdd<MatrixLik, std::tuple<MatrixLik, MatrixLik>>;
31template class CWiseAdd<TransitionFunction, std::tuple<TransitionFunction, TransitionFunction>>;
32
33template class CWiseAdd<RowLik, MatrixLik>;
34template class CWiseAdd<VectorLik, MatrixLik>;
35template class CWiseAdd<DataLik, VectorLik>;
36template class CWiseAdd<DataLik, RowLik>;
37
38template class CWiseAdd<double, ReductionOf<double>>;
39template class CWiseAdd<ExtendedFloat, ReductionOf<ExtendedFloat>>;
40template class CWiseAdd<VectorLik, ReductionOf<VectorLik>>;
41template class CWiseAdd<RowLik, ReductionOf<RowLik>>;
42template class CWiseAdd<MatrixLik, ReductionOf<MatrixLik>>;
43template class CWiseAdd<TransitionFunction, ReductionOf<TransitionFunction>>;
44
45template class CWiseMean<VectorLik, ReductionOf<VectorLik>, ReductionOf<double>>;
46template class CWiseMean<RowLik, ReductionOf<RowLik>, ReductionOf<double>>;
47template class CWiseMean<MatrixLik, ReductionOf<MatrixLik>, ReductionOf<double>>;
48template class CWiseMean<double, ReductionOf<double>, ReductionOf<double>>;
49template class CWiseMean<ExtendedFloat, ReductionOf<ExtendedFloat>, ReductionOf<double>>;
50
51template class CWiseMean<VectorLik, ReductionOf<VectorLik>, Eigen::VectorXd>;
52template class CWiseMean<RowLik, ReductionOf<RowLik>, Eigen::VectorXd>;
53template class CWiseMean<MatrixLik, ReductionOf<MatrixLik>, Eigen::VectorXd>;
54template class CWiseMean<VectorLik, ReductionOf<VectorLik>, Eigen::RowVectorXd>;
55template class CWiseMean<RowLik, ReductionOf<RowLik>, Eigen::RowVectorXd>;
56template class CWiseMean<MatrixLik, ReductionOf<MatrixLik>, Eigen::RowVectorXd>;
57
58template class CWiseSub<double, std::tuple<double, double>>;
59template class CWiseSub<ExtendedFloat, std::tuple<ExtendedFloat, ExtendedFloat>>;
60template class CWiseSub<VectorLik, std::tuple<VectorLik, VectorLik>>;
61template class CWiseSub<RowLik, std::tuple<RowLik, RowLik>>;
62template class CWiseSub<MatrixLik, std::tuple<MatrixLik, MatrixLik>>;
63
64template class CWiseSub<VectorLik, std::tuple<VectorLik, DataLik>>;
65template class CWiseSub<RowLik, std::tuple<RowLik, DataLik>>;
66
67template class CWiseMul<double, std::tuple<double, double>>;
68template class CWiseMul<double, std::tuple<double, uint>>;
69template class CWiseMul<ExtendedFloat, std::tuple<ExtendedFloat, ExtendedFloat>>;
70template class CWiseMul<ExtendedFloat, std::tuple<ExtendedFloat, uint>>;
71template class CWiseMul<VectorLik, std::tuple<VectorLik, VectorLik>>;
72template class CWiseMul<RowLik, std::tuple<RowLik, RowLik>>;
73template class CWiseMul<MatrixLik, std::tuple<MatrixLik, MatrixLik>>;
74
75template class CWiseMul<RowLik, std::tuple<RowLik, Eigen::RowVectorXi>>;
76template class CWiseMul<VectorLik, std::tuple<VectorLik, Eigen::RowVectorXi>>;
77template class CWiseMul<VectorLik, std::tuple<DataLik, VectorLik>>;
78template class CWiseMul<RowLik, std::tuple<DataLik, RowLik>>;
79template class CWiseMul<MatrixLik, std::tuple<DataLik, MatrixLik>>;
80template class CWiseMul<TransitionFunction, std::tuple<TransitionFunction, TransitionFunction>>;
81template class CWiseMul<TransitionFunction, std::tuple<double, TransitionFunction>>;
82
83template class CWiseMul<double, ReductionOf<double>>;
84template class CWiseMul<ExtendedFloat, ReductionOf<ExtendedFloat>>;
85template class CWiseMul<VectorLik, ReductionOf<VectorLik>>;
86template class CWiseMul<RowLik, ReductionOf<RowLik>>;
87template class CWiseMul<MatrixLik, ReductionOf<MatrixLik>>;
88
89template class CWiseNegate<double>;
90template class CWiseNegate<ExtendedFloat>;
91template class CWiseNegate<VectorLik>;
92template class CWiseNegate<RowLik>;
93template class CWiseNegate<MatrixLik>;
94
95template class CWiseInverse<double>;
96template class CWiseInverse<ExtendedFloat>;
97template class CWiseInverse<VectorLik>;
98template class CWiseInverse<RowLik>;
99template class CWiseInverse<MatrixLik>;
100
101template class CWiseLog<double>;
102template class CWiseLog<ExtendedFloat>;
103template class CWiseLog<VectorLik>;
104template class CWiseLog<RowLik>;
105template class CWiseLog<MatrixLik>;
106
107template class CWiseExp<double>;
108template class CWiseExp<ExtendedFloat>;
109template class CWiseExp<VectorLik>;
110template class CWiseExp<RowLik>;
111template class CWiseExp<MatrixLik>;
112
113template class CWiseConstantPow<double>;
114template class CWiseConstantPow<ExtendedFloat>;
115template class CWiseConstantPow<VectorLik>;
116template class CWiseConstantPow<RowLik>;
117template class CWiseConstantPow<MatrixLik>;
118
119template class ScalarProduct<DataLik, VectorLik, VectorLik>;
120template class ScalarProduct<DataLik, RowLik, RowLik>;
121
122template class LogSumExp<DataLik, VectorLik, Eigen::VectorXd>;
123template class LogSumExp<DataLik, RowLik, Eigen::RowVectorXd>;
124
125template class SumOfLogarithms<VectorLik>;
126template class SumOfLogarithms<RowLik>;
127
128template class MatrixProduct<ExtendedFloatRowVectorXd, Eigen::RowVectorXd, ExtendedFloatMatrixXd>;
129template class MatrixProduct<Eigen::RowVectorXd, Eigen::RowVectorXd, Eigen::MatrixXd>;
130template class MatrixProduct<MatrixLik, Eigen::MatrixXd, MatrixLik>;
131template class MatrixProduct<MatrixLik, Transposed<Eigen::MatrixXd>, MatrixLik>;
132
133template class ShiftDelta<double>;
134template class ShiftDelta<VectorLik>;
135template class ShiftDelta<RowLik>;
136template class ShiftDelta<MatrixLik>;
137
138template class CombineDeltaShifted<double>;
139template class CombineDeltaShifted<VectorLik>;
140template class CombineDeltaShifted<RowLik>;
141template class CombineDeltaShifted<MatrixLik>;
142template 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()