diff options
Diffstat (limited to 'Eigen')
-rw-r--r-- | Eigen/src/SVD/SVD.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Eigen/src/SVD/SVD.h b/Eigen/src/SVD/SVD.h index f9f9feb89..b68d1c834 100644 --- a/Eigen/src/SVD/SVD.h +++ b/Eigen/src/SVD/SVD.h @@ -125,7 +125,7 @@ template<typename MatrixType> class SVD { return (b >= Scalar(0.0) ? ei_abs(a) : -ei_abs(a)); } - + protected: /** \internal */ MatrixUType m_matU; @@ -254,11 +254,14 @@ void SVD<MatrixType>::compute(const MatrixType& matrix) if (g != Scalar(0.0)) { g = Scalar(1.0)/g; - for (j=l; j<n; j++) + if (m-l) { - s = A.col(i).end(m-l).dot(A.col(j).end(m-l)); - f = (s/A(i,i))*g; - A.col(j).end(m-i) += f * A.col(i).end(m-i); + for (j=l; j<n; j++) + { + s = A.col(i).end(m-l).dot(A.col(j).end(m-l)); + f = (s/A(i,i))*g; + A.col(j).end(m-i) += f * A.col(i).end(m-i); + } } A.col(i).end(m-i) *= g; } |