aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Tim Holy <holy@wustl.edu>2011-12-09 21:04:44 +0100
committerGravatar Tim Holy <holy@wustl.edu>2011-12-09 21:04:44 +0100
commit2d7c3eea53a13a0adb8b4ae3948c87cbd4d3b85e (patch)
tree64a7391785ab0a3ba9e4ff48c1de4d6c4f648f5f /test
parent37f304a2e651ccd1121cf48fa2b830f62c4d1420 (diff)
feature 319: Add update and downdate functionality to LDLT
Diffstat (limited to 'test')
-rw-r--r--test/cholesky.cpp19
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)