diff options
author | Gael Guennebaud <g.gael@free.fr> | 2011-07-19 10:45:42 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2011-07-19 10:45:42 +0200 |
commit | 3fb65734abb04dfb616284066a7fc09bc729b83c (patch) | |
tree | 9219238863704bc5cddf020391d359bee415ebbc /test/triangular.cpp | |
parent | 22cc2b727b289b5dabba32d3e7a6e202a0784f74 (diff) |
fix triangular unit test: it only accepts small matrices
Diffstat (limited to 'test/triangular.cpp')
-rw-r--r-- | test/triangular.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/test/triangular.cpp b/test/triangular.cpp index 7d49f6f65..73bb27cb5 100644 --- a/test/triangular.cpp +++ b/test/triangular.cpp @@ -113,14 +113,14 @@ template<typename MatrixType> void triangular_square(const MatrixType& m) // check M * inv(L) using in place API m4 = m3; - m3.transpose().template triangularView<Eigen::Upper>().solveInPlace(trm4); - VERIFY(m4.cwiseAbs().isIdentity(test_precision<RealScalar>())); + m1.transpose().template triangularView<Eigen::Upper>().solveInPlace(trm4); + VERIFY_IS_APPROX(m4 * m1.template triangularView<Eigen::Lower>(), m3); // check M * inv(U) using in place API m3 = m1.template triangularView<Upper>(); m4 = m3; m3.transpose().template triangularView<Eigen::Lower>().solveInPlace(trm4); - VERIFY(m4.cwiseAbs().isIdentity(test_precision<RealScalar>())); + VERIFY_IS_APPROX(m4 * m1.template triangularView<Eigen::Upper>(), m3); // check solve with unit diagonal m3 = m1.template triangularView<UnitUpper>(); @@ -172,7 +172,7 @@ template<typename MatrixType> void triangular_rect(const MatrixType& m) MatrixType m1up = m1.template triangularView<Upper>(); MatrixType m2up = m2.template triangularView<Upper>(); - if (rows*cols>1) + if (rows>1 && cols>1) { VERIFY(m1up.isUpperTriangular()); VERIFY(m2up.transpose().isLowerTriangular()); @@ -242,10 +242,11 @@ void bug_159() void test_triangular() { + int maxsize = std::min(EIGEN_TEST_MAX_SIZE,20); for(int i = 0; i < g_repeat ; i++) { - int r = internal::random<int>(2,EIGEN_TEST_MAX_SIZE); EIGEN_UNUSED_VARIABLE(r); - int c = internal::random<int>(2,EIGEN_TEST_MAX_SIZE); EIGEN_UNUSED_VARIABLE(c); + int r = internal::random<int>(2,maxsize); EIGEN_UNUSED_VARIABLE(r); + int c = internal::random<int>(2,maxsize); EIGEN_UNUSED_VARIABLE(c); CALL_SUBTEST_1( triangular_square(Matrix<float, 1, 1>()) ); CALL_SUBTEST_2( triangular_square(Matrix<float, 2, 2>()) ); |