aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/triangular.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2011-07-19 10:45:42 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2011-07-19 10:45:42 +0200
commit3fb65734abb04dfb616284066a7fc09bc729b83c (patch)
tree9219238863704bc5cddf020391d359bee415ebbc /test/triangular.cpp
parent22cc2b727b289b5dabba32d3e7a6e202a0784f74 (diff)
fix triangular unit test: it only accepts small matrices
Diffstat (limited to 'test/triangular.cpp')
-rw-r--r--test/triangular.cpp13
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>()) );