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