From 26d7dad1389ca3eb46127dbe8c76c8359e6ded4b Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Thu, 21 Jul 2011 19:07:52 +0200 Subject: add a computeDirect method to SelfAdjointEigenSolver for fast eigen decomposition --- test/eigensolver_selfadjoint.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'test/eigensolver_selfadjoint.cpp') diff --git a/test/eigensolver_selfadjoint.cpp b/test/eigensolver_selfadjoint.cpp index 2078b93bc..a98f1dbf8 100644 --- a/test/eigensolver_selfadjoint.cpp +++ b/test/eigensolver_selfadjoint.cpp @@ -59,6 +59,8 @@ template void selfadjointeigensolver(const MatrixType& m) symmB.template triangularView().setZero(); SelfAdjointEigenSolver eiSymm(symmA); + SelfAdjointEigenSolver eiDirect; + eiDirect.computeDirect(symmA); // generalized eigen pb GeneralizedSelfAdjointEigenSolver eiSymmGen(symmA, symmB); @@ -112,11 +114,16 @@ template void selfadjointeigensolver(const MatrixType& m) VERIFY((symmA.template selfadjointView() * eiSymm.eigenvectors()).isApprox( eiSymm.eigenvectors() * eiSymm.eigenvalues().asDiagonal(), largerEps)); VERIFY_IS_APPROX(symmA.template selfadjointView().eigenvalues(), eiSymm.eigenvalues()); + + VERIFY_IS_EQUAL(eiDirect.info(), Success); + VERIFY((symmA.template selfadjointView() * eiDirect.eigenvectors()).isApprox( + eiDirect.eigenvectors() * eiDirect.eigenvalues().asDiagonal(), largerEps)); + VERIFY_IS_APPROX(symmA.template selfadjointView().eigenvalues(), eiDirect.eigenvalues()); SelfAdjointEigenSolver eiSymmNoEivecs(symmA, false); VERIFY_IS_EQUAL(eiSymmNoEivecs.info(), Success); VERIFY_IS_APPROX(eiSymm.eigenvalues(), eiSymmNoEivecs.eigenvalues()); - + // generalized eigen problem Ax = lBx eiSymmGen.compute(symmA, symmB,Ax_lBx); VERIFY_IS_EQUAL(eiSymmGen.info(), Success); -- cgit v1.2.3