aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/evaluators.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2013-12-02 14:06:17 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2013-12-02 14:06:17 +0100
commit626821b0e34a624e8fa8980339b771e155722ace (patch)
tree75a13197348b643e816ee3bf83efdc9986e207ed /test/evaluators.cpp
parent27ca9437a1e191f20724492275bf0b1415eee2d6 (diff)
Add evaluator/assignment to TriangularView expressions
Diffstat (limited to 'test/evaluators.cpp')
-rw-r--r--test/evaluators.cpp35
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())");
+ }
}