improve aliasing detection for inverse and add unit test

This commit is contained in:
Gael Guennebaud
2010-06-02 10:12:13 +02:00
parent 4ebb80490a
commit 143e6ab9d0
2 changed files with 17 additions and 2 deletions

View File

@@ -82,6 +82,19 @@ template<typename MatrixType> void inverse(const MatrixType& m)
m3.computeInverseWithCheck(m4, invertible);
VERIFY( rows==1 ? invertible : !invertible );
#endif
// check in-place inversion
if(MatrixType::RowsAtCompileTime>=2 && MatrixType::RowsAtCompileTime<=4)
{
// in-place is forbidden
VERIFY_RAISES_ASSERT(m1 = m1.inverse());
}
else
{
m2 = m1.inverse();
m1 = m1.inverse();
VERIFY_IS_APPROX(m1,m2);
}
}
void test_inverse()