add part<SelfAdjoint>... it's never too late and I need this for eigen2support

This commit is contained in:
Benoit Jacob 2011-01-25 19:49:38 -05:00
parent 0c8a25ef94
commit 1869a02f52

View File

@ -121,11 +121,40 @@ template<typename MatrixType> void triangular(const MatrixType& m)
m3.setZero();
m3.template part<Eigen::UpperTriangular>().setOnes();
VERIFY_IS_APPROX(m2,m3);
}
void selfadjoint()
{
Matrix2i m;
m << 1, 2,
3, 4;
VERIFY(m.part<SelfAdjoint>() == m);
Matrix2i m1 = Matrix2i::Zero();
m1.part<SelfAdjoint>() = m;
Matrix2i ref1;
ref1 << 1, 2,
2, 4;
VERIFY(m1 == ref1);
Matrix2i m2 = Matrix2i::Zero();
m2.part<SelfAdjoint>() = m.part<UpperTriangular>();
Matrix2i ref2;
ref2 << 1, 2,
2, 4;
VERIFY(m2 == ref2);
Matrix2i m3 = Matrix2i::Zero();
m3.part<SelfAdjoint>() = m.part<LowerTriangular>();
Matrix2i ref3;
ref3 << 1, 0,
0, 4;
VERIFY(m3 == ref3);
}
void test_triangular()
{
CALL_SUBTEST( selfadjoint() );
for(int i = 0; i < g_repeat ; i++) {
CALL_SUBTEST( triangular(Matrix<float, 1, 1>()) );
CALL_SUBTEST( triangular(Matrix<float, 2, 2>()) );