diff options
author | Gael Guennebaud <g.gael@free.fr> | 2013-12-02 14:06:17 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2013-12-02 14:06:17 +0100 |
commit | 626821b0e34a624e8fa8980339b771e155722ace (patch) | |
tree | 75a13197348b643e816ee3bf83efdc9986e207ed /test/evaluators.cpp | |
parent | 27ca9437a1e191f20724492275bf0b1415eee2d6 (diff) |
Add evaluator/assignment to TriangularView expressions
Diffstat (limited to 'test/evaluators.cpp')
-rw-r--r-- | test/evaluators.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/test/evaluators.cpp b/test/evaluators.cpp index 3fb0d9896..29192d7f9 100644 --- a/test/evaluators.cpp +++ b/test/evaluators.cpp @@ -3,6 +3,10 @@ #define EIGEN_ENABLE_EVALUATORS #endif +#ifdef EIGEN_TEST_EVALUATORS +#undef EIGEN_TEST_EVALUATORS +#endif + #include "main.h" namespace Eigen { @@ -101,7 +105,7 @@ void test_evaluators() copy_using_evaluator(w.transpose(), v_const); VERIFY_IS_APPROX(w,v_const.transpose().eval()); - +#if 0 // Testing Array evaluator { ArrayXXf a(2,3); @@ -401,4 +405,33 @@ void test_evaluators() arr_ref.row(1) /= (arr_ref.row(2) + 1); VERIFY_IS_APPROX(arr, arr_ref); } +#endif + { + // test triangular shapes + MatrixXd A = MatrixXd::Random(6,6), B(6,6), C(6,6); + A.setRandom();B.setRandom(); + VERIFY_IS_APPROX_EVALUATOR2(B, A.triangularView<Upper>(), MatrixXd(A.triangularView<Upper>())); + + A.setRandom();B.setRandom(); + VERIFY_IS_APPROX_EVALUATOR2(B, A.triangularView<UnitLower>(), MatrixXd(A.triangularView<UnitLower>())); + + A.setRandom();B.setRandom(); + VERIFY_IS_APPROX_EVALUATOR2(B, A.triangularView<UnitUpper>(), MatrixXd(A.triangularView<UnitUpper>())); + + A.setRandom();B.setRandom(); + C = B; C.triangularView<Upper>() = A; + copy_using_evaluator(B.triangularView<Upper>(), A); + VERIFY(B.isApprox(C) && "copy_using_evaluator(B.triangularView<Upper>(), A)"); + + A.setRandom();B.setRandom(); + C = B; C.triangularView<Lower>() = A.triangularView<Lower>(); + copy_using_evaluator(B.triangularView<Lower>(), A.triangularView<Lower>()); + VERIFY(B.isApprox(C) && "copy_using_evaluator(B.triangularView<Lower>(), A.triangularView<Lower>())"); + + + A.setRandom();B.setRandom(); + C = B; C.triangularView<Lower>() = A.triangularView<Upper>().transpose(); + copy_using_evaluator(B.triangularView<Lower>(), A.triangularView<Upper>().transpose()); + VERIFY(B.isApprox(C) && "copy_using_evaluator(B.triangularView<Lower>(), A.triangularView<Lower>().transpose())"); + } } |