aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/cholesky.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-06-03 22:22:14 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-06-03 22:22:14 +0200
commite64460d5d003448e090bac23b9ddc93e7af2ca5a (patch)
treeacd2ec2edf05ffff69e112a62774d60b2422420f /test/cholesky.cpp
parent4159db979d8a502d628f3ec7fd6f49ded84165d4 (diff)
LDLT: make it honors the Lower/Upper directive and make it works inplace
Diffstat (limited to 'test/cholesky.cpp')
-rw-r--r--test/cholesky.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/test/cholesky.cpp b/test/cholesky.cpp
index 0ae26c7d5..d403af7ba 100644
--- a/test/cholesky.cpp
+++ b/test/cholesky.cpp
@@ -118,11 +118,18 @@ template<typename MatrixType> void cholesky(const MatrixType& m)
}
{
- LDLT<SquareMatrixType> ldlt(symm);
- VERIFY_IS_APPROX(symm, ldlt.reconstructedMatrix());
- vecX = ldlt.solve(vecB);
+ LDLT<SquareMatrixType,Lower> ldltlo(symm);
+ VERIFY_IS_APPROX(symm, ldltlo.reconstructedMatrix());
+ vecX = ldltlo.solve(vecB);
VERIFY_IS_APPROX(symm * vecX, vecB);
- matX = ldlt.solve(matB);
+ matX = ldltlo.solve(matB);
+ VERIFY_IS_APPROX(symm * matX, matB);
+
+ LDLT<SquareMatrixType,Upper> ldltup(symm);
+ VERIFY_IS_APPROX(symm, ldltup.reconstructedMatrix());
+ vecX = ldltup.solve(vecB);
+ VERIFY_IS_APPROX(symm * vecX, vecB);
+ matX = ldltup.solve(matB);
VERIFY_IS_APPROX(symm * matX, matB);
}