fix += return by value like operations

This commit is contained in:
Gael Guennebaud
2010-09-06 11:51:42 +02:00
parent 62eb4dc99b
commit 9bb75937cc
5 changed files with 32 additions and 6 deletions

View File

@@ -168,6 +168,21 @@ template<typename MatrixType> void cholesky(const MatrixType& m)
}
}
// test some special use cases of SelfCwiseBinaryOp:
MatrixType m1 = MatrixType::Random(rows,cols), m2(rows,cols);
m2 = m1;
m2 += symmLo.template selfadjointView<Lower>().llt().solve(matB);
VERIFY_IS_APPROX(m2, m1 + symmLo.template selfadjointView<Lower>().llt().solve(matB));
m2 = m1;
m2 -= symmLo.template selfadjointView<Lower>().llt().solve(matB);
VERIFY_IS_APPROX(m2, m1 - symmLo.template selfadjointView<Lower>().llt().solve(matB));
m2 = m1;
m2.noalias() += symmLo.template selfadjointView<Lower>().llt().solve(matB);
VERIFY_IS_APPROX(m2, m1 + symmLo.template selfadjointView<Lower>().llt().solve(matB));
m2 = m1;
m2.noalias() -= symmLo.template selfadjointView<Lower>().llt().solve(matB);
VERIFY_IS_APPROX(m2, m1 - symmLo.template selfadjointView<Lower>().llt().solve(matB));
}
template<typename MatrixType> void cholesky_cplx(const MatrixType& m)

View File

@@ -27,7 +27,7 @@
template<typename MatrixType> void linearStructure(const MatrixType& m)
{
/* this test covers the following files:
Sum.h Difference.h Opposite.h ScalarMultiple.h
CwiseUnaryOp.h, CwiseBinaryOp.h, SelfCwiseBinaryOp.h
*/
typedef typename MatrixType::Index Index;
typedef typename MatrixType::Scalar Scalar;