aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/eigensolver_generalized_real.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2016-08-23 17:37:38 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2016-08-23 17:37:38 +0200
commit00b2666853d2e33eb62db256a5b948b26ea67812 (patch)
tree2c260ea9bd9337ab4444282779902a09b8da8156 /test/eigensolver_generalized_real.cpp
parent504a4404f11270df5cc372ff3465b07018a1d40b (diff)
bug #645: patch from Tobias Wood implementing the extraction of eigenvectors in GeneralizedEigenSolver
Diffstat (limited to 'test/eigensolver_generalized_real.cpp')
-rw-r--r--test/eigensolver_generalized_real.cpp9
1 files changed, 9 insertions, 0 deletions
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<typename MatrixType> 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<MatrixType>::EigenvectorsType D = eig.eigenvalues().asDiagonal();
+ typename GeneralizedEigenSolver<MatrixType>::EigenvectorsType V = eig.eigenvectors();
+ VERIFY_IS_APPROX(spdA*V, spdB*V*D);
}
// non symmetric case:
@@ -54,6 +59,10 @@ template<typename MatrixType> void generalized_eigensolver_real(const MatrixType
tmp /= tmp.norm();
VERIFY_IS_MUCH_SMALLER_THAN( std::abs(tmp.determinant()), Scalar(1) );
}
+ // check eigenvectors
+ typename GeneralizedEigenSolver<MatrixType>::EigenvectorsType D = eig.eigenvalues().asDiagonal();
+ typename GeneralizedEigenSolver<MatrixType>::EigenvectorsType V = eig.eigenvectors();
+ VERIFY_IS_APPROX(a*V, b*V*D);
}
// regression test for bug 1098