aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/evaluators.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2015-10-09 14:28:48 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2015-10-09 14:28:48 +0200
commit78b8c344b521231e4953b385cc15532000d6e580 (patch)
tree4febe853d2e1c00bb3db01955e09c8a742415a27 /test/evaluators.cpp
parent321cb56bf67c05fa94a518805e2f9be263902f28 (diff)
Add unit test for CoeffReadCost
Diffstat (limited to 'test/evaluators.cpp')
-rw-r--r--test/evaluators.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/test/evaluators.cpp b/test/evaluators.cpp
index 12dc1ffef..876dffe22 100644
--- a/test/evaluators.cpp
+++ b/test/evaluators.cpp
@@ -94,6 +94,7 @@ namespace Eigen {
}
+template<typename XprType> long get_cost(const XprType& ) { return Eigen::internal::evaluator<XprType>::CoeffReadCost; }
using namespace std;
@@ -470,7 +471,6 @@ void test_evaluators()
VERIFY_IS_APPROX_EVALUATOR2(B, prod(A.triangularView<Upper>(),A), MatrixXd(A.triangularView<Upper>()*A));
VERIFY_IS_APPROX_EVALUATOR2(B, prod(A.selfadjointView<Upper>(),A), MatrixXd(A.selfadjointView<Upper>()*A));
-
}
{
@@ -481,6 +481,19 @@ void test_evaluators()
VERIFY_IS_APPROX_EVALUATOR2(B, lazyprod(d.asDiagonal(),A), MatrixXd(d.asDiagonal()*A));
VERIFY_IS_APPROX_EVALUATOR2(B, lazyprod(A,d.asDiagonal()), MatrixXd(A*d.asDiagonal()));
-
+ }
+
+ {
+ // test CoeffReadCost
+ Matrix4d a, b;
+ VERIFY_IS_EQUAL( get_cost(a), 1 );
+ VERIFY_IS_EQUAL( get_cost(a+b), 3);
+ VERIFY_IS_EQUAL( get_cost(2*a+b), 4);
+ VERIFY_IS_EQUAL( get_cost(a*b), 1);
+ VERIFY_IS_EQUAL( get_cost(a.lazyProduct(b)), 15);
+ VERIFY_IS_EQUAL( get_cost(a*(a*b)), 1);
+ VERIFY_IS_EQUAL( get_cost(a.lazyProduct(a*b)), 15);
+ VERIFY_IS_EQUAL( get_cost(a*(a+b)), 1);
+ VERIFY_IS_EQUAL( get_cost(a.lazyProduct(a+b)), 15);
}
}