From 4c456d4211bead14edf2a6b11bfa9617b455b7e4 Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Wed, 4 Nov 2009 11:46:17 -0500 Subject: [PATCH] fix bug in svd solve reported on forum, was apparently assuming square matrix, not sure how the unit test could work. --- Eigen/src/SVD/SVD.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Eigen/src/SVD/SVD.h b/Eigen/src/SVD/SVD.h index da01cf396..99272258e 100644 --- a/Eigen/src/SVD/SVD.h +++ b/Eigen/src/SVD/SVD.h @@ -426,8 +426,11 @@ bool SVD::solve(const MatrixBase &b, ResultType* resul else aux.coeffRef(i) /= si; } - - result->col(j) = m_matV * aux; + const int cols = m_matV.rows(); + const int minsize = std::min(rows,cols); + result->col(j).start(minsize) = aux.start(minsize); + if(cols>rows) result->col(j).end(cols-minsize).setZero(); + result->col(j) = m_matV * result->col(j); } return true; }