diff options
-rw-r--r-- | test/cholesky.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/test/cholesky.cpp b/test/cholesky.cpp index 9335270f4..16db380f6 100644 --- a/test/cholesky.cpp +++ b/test/cholesky.cpp @@ -225,7 +225,20 @@ template<typename MatrixType> void cholesky(const MatrixType& m) ldltlo.compute(A); VERIFY_IS_APPROX(A, ldltlo.reconstructedMatrix()); vecX = ldltlo.solve(vecB); - VERIFY_IS_APPROX(A * vecX, vecB); + + if(ldltlo.vectorD().real().cwiseAbs().minCoeff()>RealScalar(0)) + { + VERIFY_IS_APPROX(A * vecX,vecB); + } + else + { + RealScalar large_tol = std::sqrt(test_precision<RealScalar>()); + VERIFY((A * vecX).isApprox(vecB, large_tol)); + + ++g_test_level; + VERIFY_IS_APPROX(A * vecX,vecB); + --g_test_level; + } } } |