diff --git a/src/solvers/BasicPreconditioners.hpp b/src/solvers/BasicPreconditioners.hpp index c3a82634c216b5b653705e5c9db123486ff4b977..92a9af5cbbe95272e062f088fb86c46955e58266 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 519770d265e0c809c645ff88115f52c9b1367db6..bea99da1029f4eb6d68635fd99511ac7d7366c8c 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 645825753fcb9bdc7bc6e9354285cdd8bd83255b..0cca3f8c9be43ea69ad90c0b75493b3257de9d95 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");