diff options
-rw-r--r-- | test/CMakeLists.txt | 20 | ||||
-rw-r--r-- | test/cholesky.cpp | 32 | ||||
-rw-r--r-- | test/eigensolver_generic.cpp | 4 | ||||
-rw-r--r-- | test/eigensolver_selfadjoint.cpp | 53 |
4 files changed, 5 insertions, 104 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e1379d78b..6b17ed941 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -52,20 +52,6 @@ else() ei_add_property(EIGEN_MISSING_BACKENDS "SuperLU, ") endif() -find_package(GSL) -if(GSL_FOUND AND GSL_VERSION_MINOR LESS 9) - set(GSL_FOUND "") -endif(GSL_FOUND AND GSL_VERSION_MINOR LESS 9) -if(GSL_FOUND) - add_definitions("-DHAS_GSL" ${GSL_DEFINITIONS}) - include_directories(${GSL_INCLUDE_DIR}) - ei_add_property(EIGEN_TESTED_BACKENDS "GSL, ") -else(GSL_FOUND) - ei_add_property(EIGEN_MISSING_BACKENDS "GSL, ") - set(GSL_LIBRARIES "") -endif(GSL_FOUND) - - option(EIGEN_TEST_NOQT "Disable Qt support in unit tests" OFF) if(NOT EIGEN_TEST_NOQT) find_package(Qt4) @@ -128,7 +114,7 @@ ei_add_test(product_mmtr) ei_add_test(product_notemporary) ei_add_test(stable_norm) ei_add_test(bandmatrix) -ei_add_test(cholesky "" "${GSL_LIBRARIES}") +ei_add_test(cholesky) ei_add_test(lu) ei_add_test(determinant) ei_add_test(inverse) @@ -139,8 +125,8 @@ ei_add_test(upperbidiagonalization) ei_add_test(hessenberg) ei_add_test(schur_real) ei_add_test(schur_complex) -ei_add_test(eigensolver_selfadjoint "" "${GSL_LIBRARIES}") -ei_add_test(eigensolver_generic "" "${GSL_LIBRARIES}") +ei_add_test(eigensolver_selfadjoint) +ei_add_test(eigensolver_generic) ei_add_test(eigensolver_complex) ei_add_test(jacobi) ei_add_test(jacobisvd) diff --git a/test/cholesky.cpp b/test/cholesky.cpp index 2b646e329..66eae547f 100644 --- a/test/cholesky.cpp +++ b/test/cholesky.cpp @@ -41,10 +41,6 @@ static int nb_temporaries; VERIFY( (#XPR) && nb_temporaries==N ); \ } -#ifdef HAS_GSL -#include "gsl_helper.h" -#endif - template<typename MatrixType> void cholesky(const MatrixType& m) { typedef typename MatrixType::Index Index; @@ -77,34 +73,6 @@ template<typename MatrixType> void cholesky(const MatrixType& m) // FIXME: currently that fails !! //symm.template part<StrictlyLower>().setZero(); - #ifdef HAS_GSL -// if (internal::is_same<RealScalar,double>::value) -// { -// typedef GslTraits<Scalar> Gsl; -// typename Gsl::Matrix gMatA=0, gSymm=0; -// typename Gsl::Vector gVecB=0, gVecX=0; -// convert<MatrixType>(symm, gSymm); -// convert<MatrixType>(symm, gMatA); -// convert<VectorType>(vecB, gVecB); -// convert<VectorType>(vecB, gVecX); -// Gsl::cholesky(gMatA); -// Gsl::cholesky_solve(gMatA, gVecB, gVecX); -// VectorType vecX(rows), _vecX, _vecB; -// convert(gVecX, _vecX); -// symm.llt().solve(vecB, &vecX); -// Gsl::prod(gSymm, gVecX, gVecB); -// convert(gVecB, _vecB); -// // test gsl itself ! -// VERIFY_IS_APPROX(vecB, _vecB); -// VERIFY_IS_APPROX(vecX, _vecX); -// -// Gsl::free(gMatA); -// Gsl::free(gSymm); -// Gsl::free(gVecB); -// Gsl::free(gVecX); -// } - #endif - { LLT<SquareMatrixType,Lower> chollo(symmLo); VERIFY_IS_APPROX(symm, chollo.reconstructedMatrix()); diff --git a/test/eigensolver_generic.cpp b/test/eigensolver_generic.cpp index efacdb2b3..96ff4f873 100644 --- a/test/eigensolver_generic.cpp +++ b/test/eigensolver_generic.cpp @@ -27,10 +27,6 @@ #include <limits> #include <Eigen/Eigenvalues> -#ifdef HAS_GSL -#include "gsl_helper.h" -#endif - template<typename MatrixType> void eigensolver(const MatrixType& m) { typedef typename MatrixType::Index Index; diff --git a/test/eigensolver_selfadjoint.cpp b/test/eigensolver_selfadjoint.cpp index 49e22795a..26d3d1f70 100644 --- a/test/eigensolver_selfadjoint.cpp +++ b/test/eigensolver_selfadjoint.cpp @@ -27,10 +27,6 @@ #include <limits> #include <Eigen/Eigenvalues> -#ifdef HAS_GSL -#include "gsl_helper.h" -#endif - template<typename MatrixType> void selfadjointeigensolver(const MatrixType& m) { typedef typename MatrixType::Index Index; @@ -64,52 +60,6 @@ template<typename MatrixType> void selfadjointeigensolver(const MatrixType& m) // generalized eigen pb GeneralizedSelfAdjointEigenSolver<MatrixType> eiSymmGen(symmA, symmB); - #ifdef HAS_GSL - if (internal::is_same<RealScalar,double>::value) - { - // restore symmA and symmB. - symmA = MatrixType(symmA.template selfadjointView<Lower>()); - symmB = MatrixType(symmB.template selfadjointView<Lower>()); - typedef GslTraits<Scalar> Gsl; - typename Gsl::Matrix gEvec=0, gSymmA=0, gSymmB=0; - typename GslTraits<RealScalar>::Vector gEval=0; - RealVectorType _eval; - MatrixType _evec; - convert<MatrixType>(symmA, gSymmA); - convert<MatrixType>(symmB, gSymmB); - convert<MatrixType>(symmA, gEvec); - gEval = GslTraits<RealScalar>::createVector(rows); - - Gsl::eigen_symm(gSymmA, gEval, gEvec); - convert(gEval, _eval); - convert(gEvec, _evec); - - // test gsl itself ! - VERIFY((symmA * _evec).isApprox(_evec * _eval.asDiagonal(), largerEps)); - - // compare with eigen - VERIFY_IS_APPROX(_eval, eiSymm.eigenvalues()); - VERIFY_IS_APPROX(_evec.cwiseAbs(), eiSymm.eigenvectors().cwiseAbs()); - - // generalized pb - Gsl::eigen_symm_gen(gSymmA, gSymmB, gEval, gEvec); - convert(gEval, _eval); - convert(gEvec, _evec); - // test GSL itself: - VERIFY((symmA * _evec).isApprox(symmB * (_evec * _eval.asDiagonal()), largerEps)); - - // compare with eigen - MatrixType normalized_eivec = eiSymmGen.eigenvectors()*eiSymmGen.eigenvectors().colwise().norm().asDiagonal().inverse(); - VERIFY_IS_APPROX(_eval, eiSymmGen.eigenvalues()); - VERIFY_IS_APPROX(_evec.cwiseAbs(), normalized_eivec.cwiseAbs()); - - Gsl::free(gSymmA); - Gsl::free(gSymmB); - GslTraits<RealScalar>::free(gEval); - Gsl::free(gEvec); - } - #endif - VERIFY_IS_EQUAL(eiSymm.info(), Success); VERIFY((symmA.template selfadjointView<Lower>() * eiSymm.eigenvectors()).isApprox( eiSymm.eigenvectors() * eiSymm.eigenvalues().asDiagonal(), largerEps)); @@ -180,7 +130,8 @@ void test_eigensolver_selfadjoint() { int s; for(int i = 0; i < g_repeat; i++) { - // very important to test a 3x3 matrix since we provide a special path for it + // very important to test 3x3 and 2x2 matrices since we provide special paths for them + CALL_SUBTEST_1( selfadjointeigensolver(Matrix2d()) ); CALL_SUBTEST_1( selfadjointeigensolver(Matrix3f()) ); CALL_SUBTEST_2( selfadjointeigensolver(Matrix4d()) ); s = internal::random<int>(1,EIGEN_TEST_MAX_SIZE/4); |