From 00b2666853d2e33eb62db256a5b948b26ea67812 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 23 Aug 2016 17:37:38 +0200 Subject: bug #645: patch from Tobias Wood implementing the extraction of eigenvectors in GeneralizedEigenSolver --- test/eigensolver_generalized_real.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'test/eigensolver_generalized_real.cpp') diff --git a/test/eigensolver_generalized_real.cpp b/test/eigensolver_generalized_real.cpp index da14482de..1abddfab5 100644 --- a/test/eigensolver_generalized_real.cpp +++ b/test/eigensolver_generalized_real.cpp @@ -42,6 +42,11 @@ template void generalized_eigensolver_real(const MatrixType VectorType realEigenvalues = eig.eigenvalues().real(); std::sort(realEigenvalues.data(), realEigenvalues.data()+realEigenvalues.size()); VERIFY_IS_APPROX(realEigenvalues, symmEig.eigenvalues()); + + // check eigenvectors + typename GeneralizedEigenSolver::EigenvectorsType D = eig.eigenvalues().asDiagonal(); + typename GeneralizedEigenSolver::EigenvectorsType V = eig.eigenvectors(); + VERIFY_IS_APPROX(spdA*V, spdB*V*D); } // non symmetric case: @@ -54,6 +59,10 @@ template void generalized_eigensolver_real(const MatrixType tmp /= tmp.norm(); VERIFY_IS_MUCH_SMALLER_THAN( std::abs(tmp.determinant()), Scalar(1) ); } + // check eigenvectors + typename GeneralizedEigenSolver::EigenvectorsType D = eig.eigenvalues().asDiagonal(); + typename GeneralizedEigenSolver::EigenvectorsType V = eig.eigenvectors(); + VERIFY_IS_APPROX(a*V, b*V*D); } // regression test for bug 1098 -- cgit v1.2.3