From 374deaed5fcebe08922e2451107a9727851b3e05 Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Mon, 31 Jan 2011 08:36:14 -0500 Subject: make eigen2 eigensolver test pass --- Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h | 33 ++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'Eigen/src/Eigenvalues') diff --git a/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h b/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h index 83d9c015c..3f3b08193 100644 --- a/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +++ b/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h @@ -29,6 +29,9 @@ #include "./EigenvaluesCommon.h" #include "./Tridiagonalization.h" +template +class GeneralizedSelfAdjointEigenSolver; + /** \eigenvalues_module \ingroup Eigenvalues_Module * * @@ -310,6 +313,36 @@ template class SelfAdjointEigenSolver */ static const int m_maxIterations = 30; + #ifdef EIGEN2_SUPPORT + SelfAdjointEigenSolver(const MatrixType& matrix, bool computeEigenvectors) + : m_eivec(matrix.rows(), matrix.cols()), + m_eivalues(matrix.cols()), + m_subdiag(matrix.rows() > 1 ? matrix.rows() - 1 : 1), + m_isInitialized(false) + { + compute(matrix, computeEigenvectors); + } + + SelfAdjointEigenSolver(const MatrixType& matA, const MatrixType& matB, bool computeEigenvectors = true) + : m_eivec(matA.cols(), matA.cols()), + m_eivalues(matA.cols()), + m_subdiag(matA.cols() > 1 ? matA.cols() - 1 : 1), + m_isInitialized(false) + { + static_cast*>(this)->compute(matA, matB, computeEigenvectors ? ComputeEigenvectors : EigenvaluesOnly); + } + + void compute(const MatrixType& matrix, bool computeEigenvectors) + { + compute(matrix, computeEigenvectors ? ComputeEigenvectors : EigenvaluesOnly); + } + + void compute(const MatrixType& matA, const MatrixType& matB, bool computeEigenvectors = true) + { + compute(matA, matB, computeEigenvectors ? ComputeEigenvectors : EigenvaluesOnly); + } + #endif // EIGEN2_SUPPORT + protected: MatrixType m_eivec; RealVectorType m_eivalues; -- cgit v1.2.3