diff options
author | Gael Guennebaud <g.gael@free.fr> | 2017-01-31 14:22:42 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2017-01-31 14:22:42 +0100 |
commit | 53026d29d41e81065b28631445e8eb5c4044c187 (patch) | |
tree | 1f38ee49f72cb17a89711fb0c4fe6160945bb986 /Eigen/src/Eigenvalues/ComplexEigenSolver.h | |
parent | 63de19c0004933c7b2b1e418292b9f2ae6c138f4 (diff) |
bug #478: fix regression in the eigen decomposition of zero matrices.
Diffstat (limited to 'Eigen/src/Eigenvalues/ComplexEigenSolver.h')
-rw-r--r-- | Eigen/src/Eigenvalues/ComplexEigenSolver.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Eigen/src/Eigenvalues/ComplexEigenSolver.h b/Eigen/src/Eigenvalues/ComplexEigenSolver.h index ec3b1633e..dc5fae06a 100644 --- a/Eigen/src/Eigenvalues/ComplexEigenSolver.h +++ b/Eigen/src/Eigenvalues/ComplexEigenSolver.h @@ -250,7 +250,7 @@ template<typename _MatrixType> class ComplexEigenSolver EigenvectorType m_matX; private: - void doComputeEigenvectors(const RealScalar& matrixnorm); + void doComputeEigenvectors(RealScalar matrixnorm); void sortEigenvalues(bool computeEigenvectors); }; @@ -284,10 +284,12 @@ ComplexEigenSolver<MatrixType>::compute(const EigenBase<InputType>& matrix, bool template<typename MatrixType> -void ComplexEigenSolver<MatrixType>::doComputeEigenvectors(const RealScalar& matrixnorm) +void ComplexEigenSolver<MatrixType>::doComputeEigenvectors(RealScalar matrixnorm) { const Index n = m_eivalues.size(); + matrixnorm = numext::maxi(matrixnorm,(std::numeric_limits<RealScalar>::min)()); + // Compute X such that T = X D X^(-1), where D is the diagonal of T. // The matrix X is unit triangular. m_matX = EigenvectorType::Zero(n, n); |