From 761b3bbb692c515a8c753bd64653b38986534216 Mon Sep 17 00:00:00 2001 From: Sergey Popov Date: Sat, 12 Jan 2013 12:07:49 +0100 Subject: [PATCH] Fix bug #540: SelfAdjointEigenSolver improperly used the upper triangular part to extract the scaling factor. --- Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h b/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h index fa7484a40..03c024927 100644 --- a/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +++ b/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h @@ -409,9 +409,10 @@ SelfAdjointEigenSolver& SelfAdjointEigenSolver MatrixType& mat = m_eivec; // map the matrix coefficients to [-1:1] to avoid over- and underflow. - RealScalar scale = matrix.cwiseAbs().maxCoeff(); + mat = matrix.template triangularView(); + RealScalar scale = mat.cwiseAbs().maxCoeff(); if(scale==RealScalar(0)) scale = RealScalar(1); - mat = matrix / scale; + mat.template triangularView() /= scale; m_subdiag.resize(n-1); internal::tridiagonalization_inplace(mat, diag, m_subdiag, computeEigenvectors);