diff options
author | Benoit Jacob <jacob.benoit.1@gmail.com> | 2009-11-16 21:28:26 -0500 |
---|---|---|
committer | Benoit Jacob <jacob.benoit.1@gmail.com> | 2009-11-16 21:28:26 -0500 |
commit | 07412b2075a0d2924ae302f4af7ca54c923c9115 (patch) | |
tree | a83ff20db87ace4a72b507e099c63f5ed515e294 /test/permutationmatrices.cpp | |
parent | b90744dc053d176f3ae00f67fbaac7f3b083b55e (diff) |
PermutationMatrix: add setIdentity and transpositions methods
LU: make use of that
Diffstat (limited to 'test/permutationmatrices.cpp')
-rw-r--r-- | test/permutationmatrices.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/permutationmatrices.cpp b/test/permutationmatrices.cpp index c4affc795..0ef0a371a 100644 --- a/test/permutationmatrices.cpp +++ b/test/permutationmatrices.cpp @@ -81,6 +81,30 @@ template<typename MatrixType> void permutationmatrices(const MatrixType& m) LeftPermutationType lp2(lv2); Matrix<Scalar,Rows,Rows> lm2(lp2); VERIFY_IS_APPROX((lp*lp2).toDenseMatrix().template cast<Scalar>(), lm*lm2); + + LeftPermutationType identityp; + identityp.setIdentity(rows); + VERIFY_IS_APPROX(m_original, identityp*m_original); + + if(rows>1 && cols>1) + { + lp2 = lp; + int i = ei_random<int>(0, rows-1); + int j; + do j = ei_random<int>(0, rows-1); while(j==i); + lp2.applyTranspositionOnTheLeft(i, j); + lm = lp; + lm.row(i).swap(lm.row(j)); + VERIFY_IS_APPROX(lm, lp2.toDenseMatrix().template cast<Scalar>()); + + RightPermutationType rp2 = rp; + i = ei_random<int>(0, cols-1); + do j = ei_random<int>(0, cols-1); while(j==i); + rp2.applyTranspositionOnTheRight(i, j); + rm = rp; + rm.col(i).swap(rm.col(j)); + VERIFY_IS_APPROX(rm, rp2.toDenseMatrix().template cast<Scalar>()); + } } void test_permutationmatrices() |