From 81cb887baf7932285380d1db93b51a77a847fdbd Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Tue, 20 Jan 2009 16:21:56 +0000 Subject: [PATCH] fix bug in the computation of rank very difficult to catch in unit-tests because this is very noisy --- Eigen/src/LU/LU.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Eigen/src/LU/LU.h b/Eigen/src/LU/LU.h index 82b408d3c..b36dc3026 100644 --- a/Eigen/src/LU/LU.h +++ b/Eigen/src/LU/LU.h @@ -401,9 +401,11 @@ LU::LU(const MatrixType& matrix) m_det_pq = (number_of_transpositions%2) ? -1 : 1; - for(m_rank = 0; m_rank < size; ++m_rank) - if(ei_isMuchSmallerThan(m_lu.diagonal().coeff(m_rank), m_lu.diagonal().coeff(0))) - break; + RealScalar biggest_diagonal_coeff = m_lu.diagonal().cwise().abs().maxCoeff(); + m_rank = 0; + for(int k = 0; k < size; ++k) + if(!ei_isMuchSmallerThan(m_lu.diagonal().coeff(k), biggest_diagonal_coeff)) + ++m_rank; } template