diff options
author | Gael Guennebaud <g.gael@free.fr> | 2013-12-02 16:37:58 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2013-12-02 16:37:58 +0100 |
commit | 34ca81b1bfe77b11effdd463099b30d12b6466c9 (patch) | |
tree | 738d49d2e3ef4ef36e68b7f2dcd64956e8d7471b /test | |
parent | 7f917807c6a72ae219880fb72e2d644d617427bc (diff) |
Add direct assignment of products
Diffstat (limited to 'test')
-rw-r--r-- | test/evaluators.cpp | 15 |
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); } { |