diff options
author | Gael Guennebaud <g.gael@free.fr> | 2014-03-12 16:24:25 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2014-03-12 16:24:25 +0100 |
commit | 74b1d79d779fbd9fb5bc5df60ad318c012451da7 (patch) | |
tree | 71023286c86b9542dec0189cab0a7a2ca6935a91 /Eigen/src/Cholesky/LDLT.h | |
parent | 0b362e0c9ab1670e73fc8ae951d765f686342882 (diff) | |
parent | 2379ccffcb8f1af10f8ed91353d5cb8b3a9a7847 (diff) |
merge default and evaluator branches
Diffstat (limited to 'Eigen/src/Cholesky/LDLT.h')
-rw-r--r-- | Eigen/src/Cholesky/LDLT.h | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/Eigen/src/Cholesky/LDLT.h b/Eigen/src/Cholesky/LDLT.h index c5ae2c87e..d66110821 100644 --- a/Eigen/src/Cholesky/LDLT.h +++ b/Eigen/src/Cholesky/LDLT.h @@ -309,13 +309,6 @@ template<> struct ldlt_inplace<Lower> cutoff = abs(NumTraits<Scalar>::epsilon() * biggest_in_corner); } - // Finish early if the matrix is not full rank. - if(biggest_in_corner < cutoff) - { - for(Index i = k; i < size; i++) transpositions.coeffRef(i) = i; - break; - } - transpositions.coeffRef(k) = index_of_biggest_in_corner; if(k != index_of_biggest_in_corner) { @@ -351,6 +344,7 @@ template<> struct ldlt_inplace<Lower> if(rs>0) A21.noalias() -= A20 * temp.head(k); } + if((rs>0) && (abs(mat.coeffRef(k,k)) > cutoff)) A21 /= mat.coeffRef(k,k); |