aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/evaluators.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2014-02-17 16:10:55 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2014-02-17 16:10:55 +0100
commitbffa15142c4271313a70801e6bb7d01365a00bc9 (patch)
tree205f1a6031a294d939501cfbcc058ad3eb6c8171 /test/evaluators.cpp
parent94acccc126d430bf34587527d84ff9b389219c2f (diff)
Add evaluator support for diagonal products
Diffstat (limited to 'test/evaluators.cpp')
-rw-r--r--test/evaluators.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/test/evaluators.cpp b/test/evaluators.cpp
index 69a45661f..305047a6a 100644
--- a/test/evaluators.cpp
+++ b/test/evaluators.cpp
@@ -151,19 +151,19 @@ void test_evaluators()
c = a*a;
copy_using_evaluator(a, prod(a,a));
VERIFY_IS_APPROX(a,c);
-
+
// check compound assignment of products
d = c;
add_assign_using_evaluator(c.noalias(), prod(a,b));
d.noalias() += a*b;
VERIFY_IS_APPROX(c, d);
-
+
d = c;
subtract_assign_using_evaluator(c.noalias(), prod(a,b));
d.noalias() -= a*b;
VERIFY_IS_APPROX(c, d);
}
-
+
{
// test product with all possible sizes
int s = internal::random<int>(1,100);
@@ -458,4 +458,15 @@ void test_evaluators()
VERIFY_IS_APPROX_EVALUATOR2(B, prod(A.selfadjointView<Upper>(),A), MatrixXd(A.selfadjointView<Upper>()*A));
}
+
+ {
+ // test diagonal shapes
+ VectorXd d = VectorXd::Random(6);
+ MatrixXd A = MatrixXd::Random(6,6), B(6,6);
+ A.setRandom();B.setRandom();
+
+ 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()));
+
+ }
}