aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/IterativeLinearSolvers
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2017-06-09 11:57:53 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2017-06-09 11:57:53 +0200
commita7be4cd1b1ea4d85165f003d793f1d46b199b7bd (patch)
treef3ce1efddc643d59f4189beea0a42644c1767b98 /Eigen/src/IterativeLinearSolvers
parent498aa95a8b2b505c919efff8857a6fd2a5bbc172 (diff)
Fix LeastSquareDiagonalPreconditioner for complexes (issue introduced in previous commit)
Diffstat (limited to 'Eigen/src/IterativeLinearSolvers')
-rw-r--r--Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h b/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h
index 279c9173c..facdaf890 100644
--- a/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h
+++ b/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h
@@ -158,18 +158,18 @@ class LeastSquareDiagonalPreconditioner : public DiagonalPreconditioner<_Scalar>
for(Index j=0; j<mat.outerSize(); ++j)
{
for(typename MatType::InnerIterator it(mat,j); it; ++it)
- m_invdiag(it.index()) += it.value();
+ m_invdiag(it.index()) += numext::abs2(it.value());
}
for(Index j=0; j<mat.cols(); ++j)
- if(m_invdiag(j)>0)
- m_invdiag(j) = RealScalar(1)/m_invdiag(j);
+ if(numext::real(m_invdiag(j))>RealScalar(0))
+ m_invdiag(j) = RealScalar(1)/numext::real(m_invdiag(j));
}
else
{
for(Index j=0; j<mat.outerSize(); ++j)
{
RealScalar sum = mat.innerVector(j).squaredNorm();
- if(sum>0)
+ if(sum>RealScalar(0))
m_invdiag(j) = RealScalar(1)/sum;
else
m_invdiag(j) = RealScalar(1);