From 54ad6aa2902fc4c05411580a2bd60ccf74ca9965 Mon Sep 17 00:00:00 2001 From: jcarpent <jcarpent@laas.fr> Date: Tue, 28 Nov 2017 09:47:57 +0100 Subject: [PATCH] [All] Handle old version of Eigen --- src/solvers/BasicPreconditioners.hpp | 4 ++++ src/solvers/preconditioners.cpp | 2 ++ src/solvers/solvers.cpp | 7 ++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/solvers/BasicPreconditioners.hpp b/src/solvers/BasicPreconditioners.hpp index c3a8263..92a9af5 100644 --- a/src/solvers/BasicPreconditioners.hpp +++ b/src/solvers/BasicPreconditioners.hpp @@ -39,8 +39,10 @@ namespace eigenpy cl .def(bp::init<>("Default constructor")) .def(bp::init<MatrixType>(bp::arg("A"),"Initialize the preconditioner with matrix A for further Az=b solving.")) +#if EIGEN_VERSION_AT_LEAST(3,3,0) .def("info",&Preconditioner::info, "Returns success if the Preconditioner has been well initialized.") +#endif .def("solve",&solve,bp::arg("b"), "Returns the solution A * z = b where the preconditioner is an estimate of A^-1.") @@ -91,6 +93,7 @@ namespace eigenpy } }; +#if EIGEN_VERSION_AT_LEAST(3,3,0) template<typename Scalar> struct LeastSquareDiagonalPreconditionerVisitor : PreconditionerBaseVisitor<Eigen::LeastSquareDiagonalPreconditioner<Scalar> > { @@ -113,6 +116,7 @@ namespace eigenpy } }; +#endif struct IdentityPreconditionerVisitor : PreconditionerBaseVisitor<Eigen::IdentityPreconditioner > { diff --git a/src/solvers/preconditioners.cpp b/src/solvers/preconditioners.cpp index 519770d..bea99da 100644 --- a/src/solvers/preconditioners.cpp +++ b/src/solvers/preconditioners.cpp @@ -25,7 +25,9 @@ namespace eigenpy using namespace Eigen; DiagonalPreconditionerVisitor<double>::expose(); +#if EIGEN_VERSION_AT_LEAST(3,3,0) LeastSquareDiagonalPreconditionerVisitor<double>::expose(); +#endif IdentityPreconditionerVisitor::expose(); // LimitedBFGSPreconditionerBaseVisitor< LimitedBFGSPreconditioner<double,Eigen::Dynamic,Eigen::Upper|Eigen::Lower> >::expose("LimitedBFGSPreconditioner"); diff --git a/src/solvers/solvers.cpp b/src/solvers/solvers.cpp index 6458257..0cca3f8 100644 --- a/src/solvers/solvers.cpp +++ b/src/solvers/solvers.cpp @@ -16,7 +16,10 @@ #include "eigenpy/solvers/solvers.hpp" #include "eigenpy/solvers/ConjugateGradient.hpp" -#include "eigenpy/solvers/LeastSquaresConjugateGradient.hpp" + +#if EIGEN_VERSION_AT_LEAST(3,3,0) + #include "eigenpy/solvers/LeastSquaresConjugateGradient.hpp" +#endif namespace eigenpy { @@ -24,7 +27,9 @@ namespace eigenpy { using namespace Eigen; ConjugateGradientVisitor< ConjugateGradient<MatrixXd,Lower|Upper> >::expose(); +#if EIGEN_VERSION_AT_LEAST(3,3,0) LeastSquaresConjugateGradientVisitor< LeastSquaresConjugateGradient<MatrixXd, LeastSquareDiagonalPreconditionerFix<MatrixXd::Scalar> > >::expose(); +#endif // Conjugate gradient with limited BFGS preconditioner ConjugateGradientVisitor< ConjugateGradient<MatrixXd,Lower|Upper,IdentityPreconditioner > >::expose("IdentityConjugateGradient"); -- GitLab