From 76ceae49c18908fd82393ddf3f22b2b3daa88b3a Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Wed, 10 Oct 2018 21:48:58 +0200 Subject: bug #1609: add inplace transposition unit test --- test/permutationmatrices.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'test/permutationmatrices.cpp') diff --git a/test/permutationmatrices.cpp b/test/permutationmatrices.cpp index 71f09be0f..a26b4ad45 100644 --- a/test/permutationmatrices.cpp +++ b/test/permutationmatrices.cpp @@ -126,6 +126,16 @@ template void permutationmatrices(const MatrixType& m) VERIFY_IS_APPROX(m_permuted, lp*m_original*rp.transpose()); VERIFY_IS_APPROX(lt.inverse()*m_permuted*rt.inverse(), m_original); + + // Check inplace transpositions + m_permuted = m_original; + VERIFY_IS_APPROX(m_permuted = lt * m_permuted, lp * m_original); + m_permuted = m_original; + VERIFY_IS_APPROX(m_permuted = lt.inverse() * m_permuted, lp.inverse() * m_original); + m_permuted = m_original; + VERIFY_IS_APPROX(m_permuted = m_permuted * rt, m_original * rt); + m_permuted = m_original; + VERIFY_IS_APPROX(m_permuted = m_permuted * rt.inverse(), m_original * rt.inverse()); } template @@ -147,7 +157,7 @@ void bug890() MapType(v1.data(),2,1,S(1,1)) = P * MapType(rhs.data(),2,1,S(1,1)); VERIFY_IS_APPROX(v1, (P * rhs).eval()); - + MapType(v1.data(),2,1,S(1,1)) = P.inverse() * MapType(rhs.data(),2,1,S(1,1)); VERIFY_IS_APPROX(v1, (P.inverse() * rhs).eval()); } @@ -160,8 +170,8 @@ EIGEN_DECLARE_TEST(permutationmatrices) CALL_SUBTEST_3( permutationmatrices(Matrix()) ); CALL_SUBTEST_4( permutationmatrices(Matrix4d()) ); CALL_SUBTEST_5( permutationmatrices(Matrix()) ); - CALL_SUBTEST_6( permutationmatrices(Matrix(20, 30)) ); - CALL_SUBTEST_7( permutationmatrices(MatrixXcf(15, 10)) ); + CALL_SUBTEST_6( permutationmatrices(Matrix(internal::random(1,EIGEN_TEST_MAX_SIZE), internal::random(1,EIGEN_TEST_MAX_SIZE))) ); + CALL_SUBTEST_7( permutationmatrices(MatrixXcf(internal::random(1,EIGEN_TEST_MAX_SIZE), internal::random(1,EIGEN_TEST_MAX_SIZE))) ); } CALL_SUBTEST_5( bug890() ); } -- cgit v1.2.3