From 682b2ef17ee360ac11cebbe7286dc4edd9accfa3 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Thu, 8 Jun 2017 15:06:27 +0200 Subject: bug #1423: fix LSCG\'s Jacobi preconditioner for row-major matrices. --- .../IterativeLinearSolvers/BasicPreconditioners.h | 27 +++++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'Eigen/src/IterativeLinearSolvers') diff --git a/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h b/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h index 358444aff..279c9173c 100644 --- a/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +++ b/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h @@ -152,13 +152,28 @@ class LeastSquareDiagonalPreconditioner : public DiagonalPreconditioner<_Scalar> { // Compute the inverse squared-norm of each column of mat m_invdiag.resize(mat.cols()); - for(Index j=0; j0) - m_invdiag(j) = RealScalar(1)/sum; - else - m_invdiag(j) = RealScalar(1); + m_invdiag.setZero(); + for(Index j=0; j0) + m_invdiag(j) = RealScalar(1)/m_invdiag(j); + } + else + { + for(Index j=0; j0) + m_invdiag(j) = RealScalar(1)/sum; + else + m_invdiag(j) = RealScalar(1); + } } Base::m_isInitialized = true; return *this; -- cgit v1.2.3