diff options
author | Tim Holy <holy@wustl.edu> | 2011-12-09 21:04:44 +0100 |
---|---|---|
committer | Tim Holy <holy@wustl.edu> | 2011-12-09 21:04:44 +0100 |
commit | 2d7c3eea53a13a0adb8b4ae3948c87cbd4d3b85e (patch) | |
tree | 64a7391785ab0a3ba9e4ff48c1de4d6c4f648f5f /test | |
parent | 37f304a2e651ccd1121cf48fa2b830f62c4d1420 (diff) |
feature 319: Add update and downdate functionality to LDLT
Diffstat (limited to 'test')
-rw-r--r-- | test/cholesky.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/test/cholesky.cpp b/test/cholesky.cpp index 66eae547f..d9806e5c3 100644 --- a/test/cholesky.cpp +++ b/test/cholesky.cpp @@ -155,7 +155,7 @@ template<typename MatrixType> void cholesky(const MatrixType& m) m2.noalias() -= symmLo.template selfadjointView<Lower>().llt().solve(matB); VERIFY_IS_APPROX(m2, m1 - symmLo.template selfadjointView<Lower>().llt().solve(matB)); - // Cholesky update/downdate + // LLT update/downdate { MatrixType symmLo = symm.template triangularView<Lower>(); MatrixType symmUp = symm.template triangularView<Upper>(); @@ -173,6 +173,23 @@ template<typename MatrixType> void cholesky(const MatrixType& m) VERIFY_IS_APPROX(symmCpy, cholup.reconstructedMatrix()); } + // LDLT update/downdate + { + MatrixType symmLo = symm.template triangularView<Lower>(); + MatrixType symmUp = symm.template triangularView<Upper>(); + + VectorType vec = VectorType::Random(rows); + + MatrixType symmCpy = symm + vec * vec.adjoint(); + + LDLT<MatrixType,Lower> chollo(symmLo); + chollo.rankUpdate(vec); + VERIFY_IS_APPROX(symmCpy, chollo.reconstructedMatrix()); + + LDLT<MatrixType,Upper> cholup(symmUp); + cholup.rankUpdate(vec); + VERIFY_IS_APPROX(symmCpy, cholup.reconstructedMatrix()); + } } template<typename MatrixType> void cholesky_cplx(const MatrixType& m) |