aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/permutationmatrices.cpp
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2009-11-16 21:28:26 -0500
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2009-11-16 21:28:26 -0500
commit07412b2075a0d2924ae302f4af7ca54c923c9115 (patch)
treea83ff20db87ace4a72b507e099c63f5ed515e294 /test/permutationmatrices.cpp
parentb90744dc053d176f3ae00f67fbaac7f3b083b55e (diff)
PermutationMatrix: add setIdentity and transpositions methods
LU: make use of that
Diffstat (limited to 'test/permutationmatrices.cpp')
-rw-r--r--test/permutationmatrices.cpp24
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()