aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/evaluators.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2013-12-02 16:37:58 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2013-12-02 16:37:58 +0100
commit34ca81b1bfe77b11effdd463099b30d12b6466c9 (patch)
tree738d49d2e3ef4ef36e68b7f2dcd64956e8d7471b /test/evaluators.cpp
parent7f917807c6a72ae219880fb72e2d644d617427bc (diff)
Add direct assignment of products
Diffstat (limited to 'test/evaluators.cpp')
-rw-r--r--test/evaluators.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/test/evaluators.cpp b/test/evaluators.cpp
index 7a20014dd..c07146260 100644
--- a/test/evaluators.cpp
+++ b/test/evaluators.cpp
@@ -47,14 +47,14 @@ namespace Eigen {
void add_assign_using_evaluator(const DstXprType& dst, const SrcXprType& src)
{
typedef typename DstXprType::Scalar Scalar;
- call_assignment(dst.const_cast_derived(), src.derived(), internal::add_assign_op<Scalar>());
+ call_assignment(const_cast<DstXprType&>(dst), src.derived(), internal::add_assign_op<Scalar>());
}
template<typename DstXprType, typename SrcXprType>
void subtract_assign_using_evaluator(const DstXprType& dst, const SrcXprType& src)
{
typedef typename DstXprType::Scalar Scalar;
- call_assignment(dst.const_cast_derived(), src.derived(), internal::sub_assign_op<Scalar>());
+ call_assignment(const_cast<DstXprType&>(dst), src.derived(), internal::sub_assign_op<Scalar>());
}
template<typename DstXprType, typename SrcXprType>
@@ -151,6 +151,17 @@ 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);
}
{