mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 03:39:01 +08:00
bug #1435: fix aliasing issue in exressions like: A = C - B*A;
This commit is contained in:
parent
2971503fed
commit
4bbc320468
@ -207,6 +207,12 @@ struct evaluator_assume_aliasing<CwiseBinaryOp<internal::scalar_sum_op<typename
|
|||||||
static const bool value = true;
|
static const bool value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<typename OtherXpr, typename Lhs, typename Rhs>
|
||||||
|
struct evaluator_assume_aliasing<CwiseBinaryOp<internal::scalar_difference_op<typename OtherXpr::Scalar,typename Product<Lhs,Rhs,DefaultProduct>::Scalar>, const OtherXpr,
|
||||||
|
const Product<Lhs,Rhs,DefaultProduct> >, DenseShape > {
|
||||||
|
static const bool value = true;
|
||||||
|
};
|
||||||
|
|
||||||
template<typename DstXprType, typename OtherXpr, typename ProductType, typename Func1, typename Func2>
|
template<typename DstXprType, typename OtherXpr, typename ProductType, typename Func1, typename Func2>
|
||||||
struct assignment_from_xpr_op_product
|
struct assignment_from_xpr_op_product
|
||||||
{
|
{
|
||||||
|
@ -51,6 +51,7 @@ template<typename MatrixType> void product_notemporary(const MatrixType& m)
|
|||||||
VERIFY_EVALUATION_COUNT( m3.noalias() = s1 * (m1 * m2.transpose()), 0);
|
VERIFY_EVALUATION_COUNT( m3.noalias() = s1 * (m1 * m2.transpose()), 0);
|
||||||
|
|
||||||
VERIFY_EVALUATION_COUNT( m3 = m3 + (m1 * m2.adjoint()), 1);
|
VERIFY_EVALUATION_COUNT( m3 = m3 + (m1 * m2.adjoint()), 1);
|
||||||
|
VERIFY_EVALUATION_COUNT( m3 = m3 - (m1 * m2.adjoint()), 1);
|
||||||
|
|
||||||
VERIFY_EVALUATION_COUNT( m3 = m3 + (m1 * m2.adjoint()).transpose(), 1);
|
VERIFY_EVALUATION_COUNT( m3 = m3 + (m1 * m2.adjoint()).transpose(), 1);
|
||||||
VERIFY_EVALUATION_COUNT( m3.noalias() = m3 + m1 * m2.transpose(), 0);
|
VERIFY_EVALUATION_COUNT( m3.noalias() = m3 + m1 * m2.transpose(), 0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user