diff options
Diffstat (limited to 'Eigen/src/SVD/SVD.h')
-rw-r--r-- | Eigen/src/SVD/SVD.h | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/Eigen/src/SVD/SVD.h b/Eigen/src/SVD/SVD.h index 0ec41e36d..c1b14128c 100644 --- a/Eigen/src/SVD/SVD.h +++ b/Eigen/src/SVD/SVD.h @@ -205,7 +205,7 @@ SVD<MatrixType>& SVD<MatrixType>::compute(const MatrixType& matrix) g = s = scale = 0.0; if (i < m) { - scale = A.col(i).end(m-i).cwise().abs().sum(); + scale = A.col(i).tail(m-i).cwise().abs().sum(); if (scale != Scalar(0)) { for (k=i; k<m; k++) @@ -219,18 +219,18 @@ SVD<MatrixType>& SVD<MatrixType>::compute(const MatrixType& matrix) A(i, i)=f-g; for (j=l-1; j<n; j++) { - s = A.col(j).end(m-i).dot(A.col(i).end(m-i)); + s = A.col(j).tail(m-i).dot(A.col(i).tail(m-i)); f = s/h; - A.col(j).end(m-i) += f*A.col(i).end(m-i); + A.col(j).tail(m-i) += f*A.col(i).tail(m-i); } - A.col(i).end(m-i) *= scale; + A.col(i).tail(m-i) *= scale; } } W[i] = scale * g; g = s = scale = 0.0; if (i+1 <= m && i+1 != n) { - scale = A.row(i).end(n-l+1).cwise().abs().sum(); + scale = A.row(i).tail(n-l+1).cwise().abs().sum(); if (scale != Scalar(0)) { for (k=l-1; k<n; k++) @@ -242,13 +242,13 @@ SVD<MatrixType>& SVD<MatrixType>::compute(const MatrixType& matrix) g = -sign(ei_sqrt(s),f); h = f*g - s; A(i,l-1) = f-g; - rv1.end(n-l+1) = A.row(i).end(n-l+1)/h; + rv1.tail(n-l+1) = A.row(i).tail(n-l+1)/h; for (j=l-1; j<m; j++) { - s = A.row(i).end(n-l+1).dot(A.row(j).end(n-l+1)); - A.row(j).end(n-l+1) += s*rv1.end(n-l+1).transpose(); + s = A.row(i).tail(n-l+1).dot(A.row(j).tail(n-l+1)); + A.row(j).tail(n-l+1) += s*rv1.tail(n-l+1).transpose(); } - A.row(i).end(n-l+1) *= scale; + A.row(i).tail(n-l+1) *= scale; } } anorm = std::max( anorm, (ei_abs(W[i])+ei_abs(rv1[i])) ); @@ -265,12 +265,12 @@ SVD<MatrixType>& SVD<MatrixType>::compute(const MatrixType& matrix) V(j, i) = (A(i, j)/A(i, l))/g; for (j=l; j<n; j++) { - s = V.col(j).end(n-l).dot(A.row(i).end(n-l)); - V.col(j).end(n-l) += s * V.col(i).end(n-l); + s = V.col(j).tail(n-l).dot(A.row(i).tail(n-l)); + V.col(j).tail(n-l) += s * V.col(i).tail(n-l); } } - V.row(i).end(n-l).setZero(); - V.col(i).end(n-l).setZero(); + V.row(i).tail(n-l).setZero(); + V.col(i).tail(n-l).setZero(); } V(i, i) = 1.0; g = rv1[i]; @@ -282,7 +282,7 @@ SVD<MatrixType>& SVD<MatrixType>::compute(const MatrixType& matrix) l = i+1; g = W[i]; if (n-l>0) - A.row(i).end(n-l).setZero(); + A.row(i).tail(n-l).setZero(); if (g != Scalar(0.0)) { g = Scalar(1.0)/g; @@ -290,15 +290,15 @@ SVD<MatrixType>& SVD<MatrixType>::compute(const MatrixType& matrix) { for (j=l; j<n; j++) { - s = A.col(j).end(m-l).dot(A.col(i).end(m-l)); + s = A.col(j).tail(m-l).dot(A.col(i).tail(m-l)); f = (s/A(i,i))*g; - A.col(j).end(m-i) += f * A.col(i).end(m-i); + A.col(j).tail(m-i) += f * A.col(i).tail(m-i); } } - A.col(i).end(m-i) *= g; + A.col(i).tail(m-i) *= g; } else - A.col(i).end(m-i).setZero(); + A.col(i).tail(m-i).setZero(); ++A(i,i); } // Diagonalization of the bidiagonal form: Loop over @@ -408,7 +408,7 @@ SVD<MatrixType>& SVD<MatrixType>::compute(const MatrixType& matrix) for (int i=0; i<n; i++) { int k; - W.end(n-i).maxCoeff(&k); + W.tail(n-i).maxCoeff(&k); if (k != 0) { k += i; @@ -451,8 +451,8 @@ struct ei_solve_retval<SVD<_MatrixType>, Rhs> aux.coeffRef(i) /= si; } const int minsize = std::min(dec().rows(),dec().cols()); - dst.col(j).start(minsize) = aux.start(minsize); - if(dec().cols()>dec().rows()) dst.col(j).end(cols()-minsize).setZero(); + dst.col(j).head(minsize) = aux.head(minsize); + if(dec().cols()>dec().rows()) dst.col(j).tail(cols()-minsize).setZero(); dst.col(j) = dec().matrixV() * dst.col(j); } } |