17template void copyBppToEigen (
const std::vector<ExtendedFloat>& bppVector, Eigen::RowVectorXd& eigenVector);
18template void copyBppToEigen (
const std::vector<ExtendedFloat>& bppVector, Eigen::VectorXd& eigenVector);
35 return lhs.exponent_part() < rhs.exponent_part();
39 eigenVector.
float_part() = Eigen::MatrixXd::NullaryExpr(
static_cast<Eigen::Index
>(bppVector[0].rows()),
40 static_cast<Eigen::Index
>(bppVector.size()),
41 [&maxE, &bppVector](
int i,
int j){
42 return bppVector[(size_t)j].float_part()(i) * bpp::constexpr_power<double> (bpp::ExtendedFloat::radix, bppVector[(size_t)j].exponent_part () - maxE);
47void copyBppToEigen (
const std::vector<Eigen::VectorXd>& bppVector, Eigen::MatrixXd& eigenMatrix)
50 const auto eigenRows =
static_cast<Eigen::Index
>(bppVector[0].rows());
51 const auto eigenCols =
static_cast<Eigen::Index
>(bppVector.size());
53 eigenMatrix.resize (eigenRows, eigenCols);
55 for (Eigen::Index j = 0; j < eigenCols; ++j)
57 for (Eigen::Index i = 0; i < eigenRows; ++i)
59 eigenMatrix (i, j) = bppVector[(std::size_t)j](i);
67 const auto eigenRows =
static_cast<Eigen::Index
>(bppMatrix.
getNumberOfRows ());
69 eigenMatrix.
resize (eigenRows, eigenCols);
71 for (Eigen::Index i = 0; i < eigenRows; ++i)
73 for (Eigen::Index j = 0; j < eigenCols; ++j)
75 eigenMatrix.
float_part() (i, j) = bppMatrix (
static_cast<std::size_t
>(i),
static_cast<std::size_t
>(j));
79 std::cerr <<
"=== copyBppToEigen(" <<
typeid(bppMatrix).name() <<
", " <<
typeid(eigenMatrix).name() <<
") ===" << std::endl;
80 std::cerr << &bppMatrix << std::endl;
81 std::cerr << eigenRows <<
"," << eigenCols << std::endl;
82 std::cerr << eigenMatrix << std::endl;
83 std::cerr <<
"=== end copyBppToEigen === " << std::endl;
89 const auto eigenRows =
static_cast<Eigen::Index
>(bppMatrix.
getNumberOfRows ());
91 eigenMatrix.resize (eigenRows, eigenCols);
93 for (Eigen::Index i = 0; i < eigenRows; ++i)
95 for (Eigen::Index j = 0; j < eigenCols; ++j)
97 eigenMatrix (i, j) = bppMatrix (
static_cast<std::size_t
>(i),
static_cast<std::size_t
>(j));
101 std::cerr <<
"copyBppToEigen(" <<
typeid(bppMatrix).name() <<
", " <<
typeid(eigenMatrix).name() <<
")" << std::endl;
102 std::cerr << &bppMatrix << std::endl;
103 std::cerr << eigenRows <<
"," << eigenCols << std::endl;
104 std::cerr << eigenMatrix << std::endl;
115template void copyEigenToBpp(
const Eigen::MatrixXd& eigenMatrix, std::vector<std::vector<double>>& bppMatrix);
116template void copyEigenToBpp(
const Eigen::MatrixXd& eigenMatrix, std::vector<std::vector<bpp::ExtendedFloat>>& bppMatrix);
120 const auto eigenRows =
static_cast<std::size_t
>(eigenMatrix.
rows());
121 const auto eigenCols =
static_cast<std::size_t
>(eigenMatrix.
cols());
123 bppMatrix.
resize (eigenRows, eigenCols);
124 for (
size_t i = 0; i < eigenRows; ++i)
126 for (
size_t j = 0; j < eigenCols; ++j)
128 bppMatrix(i, j) =
convert (eigenMatrix (
static_cast<Eigen::Index
>(i),
static_cast<Eigen::Index
>(j)));
155 std::size_t seed = 0;
178 "recreate called with dependencies, but node does not have dependencies");
183template class ConstantZero<uint>;
184template class ConstantZero<double>;
185template class ConstantZero<char>;
186template class ConstantZero<std::string>;
188template class ConstantZero<Parameter>;
189template class ConstantZero<TransitionFunction>;
191template class ConstantZero<Eigen::VectorXd>;
192template class ConstantZero<Eigen::RowVectorXd>;
193template class ConstantZero<Eigen::MatrixXd>;
195template class ConstantZero<ExtendedFloatVectorXd>;
196template class ConstantZero<ExtendedFloatRowVectorXd>;
197template class ConstantZero<ExtendedFloatMatrixXd>;
200template class ConstantOne<uint>;
201template class ConstantOne<double>;
202template class ConstantOne<char>;
203template class ConstantOne<std::string>;
205template class ConstantOne<Parameter>;
206template class ConstantOne<TransitionFunction>;
208template class ConstantOne<Eigen::VectorXd>;
209template class ConstantOne<Eigen::RowVectorXd>;
210template class ConstantOne<Eigen::MatrixXd>;
212template class ConstantOne<ExtendedFloatVectorXd>;
213template class ConstantOne<ExtendedFloatRowVectorXd>;
214template class ConstantOne<ExtendedFloatMatrixXd>;
217template class Identity<double>;
218template class Identity<ExtendedFloatMatrixXd>;
219template class Identity<Eigen::MatrixXd>;
222template class NumericConstant<uint>;
223template class NumericConstant<double>;
224template class NumericConstant<size_t>;
225template class NumericConstant<std::string>;
227template class NumericConstant<ExtendedFloatVectorXd>;
228template class NumericConstant<ExtendedFloatRowVectorXd>;
229template class NumericConstant<ExtendedFloatMatrixXd>;
231NumericConstant<char>
NodeX(
'X');
233template class NumericConstant<Eigen::VectorXd>;
234template class NumericConstant<Eigen::RowVectorXd>;
235template class NumericConstant<Eigen::MatrixXd>;
237template class NumericMutable<uint>;
238template class NumericMutable<double>;
240template class NumericMutable<ExtendedFloatVectorXd>;
241template class NumericMutable<ExtendedFloatRowVectorXd>;
242template class NumericMutable<ExtendedFloatMatrixXd>;
244template class NumericMutable<Eigen::VectorXd>;
245template class NumericMutable<Eigen::RowVectorXd>;
246template class NumericMutable<Eigen::MatrixXd>;
248template class Convert<double, double>;
250template class Convert<ExtendedFloatVectorXd, double>;
251template class Convert<ExtendedFloatVectorXd, ExtendedFloatVectorXd>;
252template class Convert<ExtendedFloatVectorXd, Eigen::VectorXd>;
253template class Convert<ExtendedFloatVectorXd, Eigen::VectorXi>;
254template class Convert<ExtendedFloatVectorXd, Transposed<ExtendedFloatRowVectorXd>>;
255template class Convert<ExtendedFloatVectorXd, Transposed<Eigen::RowVectorXd>>;
257template class Convert<Eigen::VectorXd, ExtendedFloatVectorXd>;
259template class Convert<ExtendedFloatRowVectorXd, double>;
260template class Convert<ExtendedFloatRowVectorXd, ExtendedFloatRowVectorXd>;
261template class Convert<ExtendedFloatRowVectorXd, Eigen::RowVectorXd>;
262template class Convert<ExtendedFloatRowVectorXd, Eigen::RowVectorXi>;
263template class Convert<ExtendedFloatRowVectorXd, Transposed<ExtendedFloatVectorXd>>;
264template class Convert<ExtendedFloatRowVectorXd, Transposed<Eigen::VectorXd>>;
266template class Convert<ExtendedFloatMatrixXd, double>;
267template class Convert<ExtendedFloatMatrixXd, ExtendedFloatMatrixXd>;
268template class Convert<ExtendedFloatMatrixXd, Eigen::MatrixXd>;
269template class Convert<ExtendedFloatMatrixXd, Transposed<ExtendedFloatMatrixXd>>;
270template class Convert<ExtendedFloatMatrixXd, Transposed<Eigen::MatrixXd>>;
272template class Convert<Eigen::VectorXd, double>;
273template class Convert<Eigen::VectorXd, Eigen::VectorXd>;
274template class Convert<Eigen::VectorXd, Eigen::VectorXi>;
275template class Convert<Eigen::VectorXd, Transposed<Eigen::RowVectorXd>>;
277template class Convert<Eigen::RowVectorXd, double>;
278template class Convert<Eigen::RowVectorXd, Eigen::RowVectorXd>;
279template class Convert<Eigen::RowVectorXd, Eigen::RowVectorXi>;
280template class Convert<Eigen::RowVectorXd, Transposed<Eigen::VectorXd>>;
282template class Convert<Eigen::MatrixXd, double>;
283template class Convert<Eigen::MatrixXd, Eigen::MatrixXd>;
284template class Convert<Eigen::MatrixXd, Transposed<Eigen::MatrixXd>>;
virtual const MatType & float_part() const
Eigen::Index cols() const
Eigen::Index rows() const
virtual const ExtType & exponent_part() const
void resize(Eigen::Index rows, Eigen::Index cols)
virtual size_t getNumberOfColumns() const=0
virtual void resize(size_t nRows, size_t nCols)=0
virtual size_t getNumberOfRows() const=0
void checkDimensionIsSquare(const MatrixDimension &dim)
Defines the basic types of data flow nodes.
std::size_t hash(const MatrixDimension &dim)
std::vector< double > Vdouble
NumericConstant< char > NodeX('X')
std::string to_string(const NoDimension &)
template void copyEigenToBpp(const ExtendedFloatMatrixXd &eigenMatrix, std::vector< std::vector< double > > &bppMatrix)
void checkRecreateWithoutDependencies(const std::type_info &contextNodeType, const NodeRefVec &deps)
std::vector< NodeRef > NodeRefVec
Alias for a dependency vector (of NodeRef).
std::string prettyTypeName(const std::type_info &ti)
Debug: return a readable name for a C++ type descriptor (from typeid operator).
template void copyBppToEigen(const std::vector< ExtendedFloat > &bppVector, Eigen::RowVectorXd &eigenVector)
double convert(const bpp::ExtendedFloat &ef)
std::string to_string(const MatrixDimension &dim)
void combineHash(std::size_t &seed, const T &t)
Combine hashable value to a hash, from Boost library.
Basic matrix dimension type.
Empty type representing no dimensions.