From 62bf04b339d0e393728a561cc236003400c532e9 Mon Sep 17 00:00:00 2001 From: Hauke Heibel Date: Thu, 23 Sep 2010 11:15:36 +0200 Subject: Fixed bad memory access in the SVD. --- Eigen/src/SVD/SVD.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Eigen/src') diff --git a/Eigen/src/SVD/SVD.h b/Eigen/src/SVD/SVD.h index 76c1995b8..7379b72f4 100644 --- a/Eigen/src/SVD/SVD.h +++ b/Eigen/src/SVD/SVD.h @@ -464,7 +464,7 @@ struct ei_solve_retval, Rhs> { Matrix aux = dec().matrixU().adjoint() * rhs().col(j); - for (Index i = 0; i < dec().rows(); ++i) + for (Index i = 0; i < dec().singularValues().size(); ++i) { Scalar si = dec().singularValues().coeff(i); if(si == RealScalar(0)) @@ -472,6 +472,8 @@ struct ei_solve_retval, Rhs> else aux.coeffRef(i) /= si; } + aux.tail(aux.size() - dec().singularValues().size()).setZero(); + const Index minsize = std::min(dec().rows(),dec().cols()); dst.col(j).head(minsize) = aux.head(minsize); if(dec().cols()>dec().rows()) dst.col(j).tail(cols()-minsize).setZero(); -- cgit v1.2.3