From 9673755bdb345b3c10fe447425394e4813f06dd8 Mon Sep 17 00:00:00 2001 From: Viktor Gal Date: Fri, 3 Feb 2017 17:29:11 +0800 Subject: [PATCH] workaround for eigen 3.2.93 bug it's because yakkety ships with such eigen... --- src/shogun/mathematics/eigen3.h | 5 +++++ tests/unit/regression/lars_unittest.cc | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/shogun/mathematics/eigen3.h b/src/shogun/mathematics/eigen3.h index 7224f668e8e..d68b71247a4 100644 --- a/src/shogun/mathematics/eigen3.h +++ b/src/shogun/mathematics/eigen3.h @@ -76,6 +76,11 @@ // c.f. github isse #3486 #define EIGEN_WITH_OPERATOR_BUG 1 #endif + +#if ((EIGEN_WORLD_VERSION == 3) && (EIGEN_MAJOR_VERSION == 2) && \ + ((EIGEN_MINOR_VERSION >= 93))) + #define EIGEN_WITH_TRANSPOSITION_BUG 1 +#endif namespace shogun { template class SGSparseMatrix; diff --git a/tests/unit/regression/lars_unittest.cc b/tests/unit/regression/lars_unittest.cc index 29acdf2a3c7..c39570d59c8 100644 --- a/tests/unit/regression/lars_unittest.cc +++ b/tests/unit/regression/lars_unittest.cc @@ -451,11 +451,16 @@ TEST(LeastAngleRegression, ols_equivalence) Map feat(mat.matrix, mat.num_rows, mat.num_cols); Map l(lab.vector, lab.size()); // OLS +#if EIGEN_WITH_TRANSPOSITION_BUG + MatrixXd feat_t = feat.transpose().eval(); + VectorXd solve=feat_t.colPivHouseholderQr().solve(l); +#else VectorXd solve=feat.transpose().colPivHouseholderQr().solve(l); +#endif // Check if full LAR model is equivalent to OLS EXPECT_EQ( w.size(), n_feat); - EXPECT_NEAR( (map_w - solve).norm(), 0.0, 1E-12); + EXPECT_NEAR( (map_w - solve).norm(), 0.0, 1E-12); SG_UNREF(proc1);