aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/CwiseBinaryOp.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2013-12-13 18:06:58 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2013-12-13 18:06:58 +0100
commite94fe4cc3e371f37b39f7b5f824cd3acc74af823 (patch)
tree362223c40e489233f11a13b2a859212822c4bb49 /Eigen/src/Core/CwiseBinaryOp.h
parent2ca0ccd2f2a88e7bae3c502ec2082178506a3d81 (diff)
fix resizing in noalias for blocks, and make -=/+= use evaluators
Diffstat (limited to 'Eigen/src/Core/CwiseBinaryOp.h')
-rw-r--r--Eigen/src/Core/CwiseBinaryOp.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/Eigen/src/Core/CwiseBinaryOp.h b/Eigen/src/Core/CwiseBinaryOp.h
index e20daacc8..5624a4718 100644
--- a/Eigen/src/Core/CwiseBinaryOp.h
+++ b/Eigen/src/Core/CwiseBinaryOp.h
@@ -213,8 +213,12 @@ template<typename OtherDerived>
EIGEN_STRONG_INLINE Derived &
MatrixBase<Derived>::operator-=(const MatrixBase<OtherDerived> &other)
{
+#ifdef EIGEN_TEST_EVALUATORS
+ call_assignment(derived(), other.derived(), internal::sub_assign_op<Scalar>());
+#else
SelfCwiseBinaryOp<internal::scalar_difference_op<Scalar>, Derived, OtherDerived> tmp(derived());
tmp = other.derived();
+#endif
return derived();
}
@@ -227,8 +231,12 @@ template<typename OtherDerived>
EIGEN_STRONG_INLINE Derived &
MatrixBase<Derived>::operator+=(const MatrixBase<OtherDerived>& other)
{
+#ifdef EIGEN_TEST_EVALUATORS
+ call_assignment(derived(), other.derived(), internal::add_assign_op<Scalar>());
+#else
SelfCwiseBinaryOp<internal::scalar_sum_op<Scalar>, Derived, OtherDerived> tmp(derived());
tmp = other.derived();
+#endif
return derived();
}