fix the remainder of bug #159

This commit is contained in:
Benoit Jacob 2011-01-26 10:01:18 -05:00
parent f88ca0ac79
commit 313eea8f10
3 changed files with 15 additions and 2 deletions

View File

@ -238,8 +238,8 @@ template<typename _MatrixType, unsigned int _Mode> class TriangularView
return m_matrix.const_cast_derived().coeffRef(row, col); return m_matrix.const_cast_derived().coeffRef(row, col);
} }
const MatrixType& nestedExpression() const { return m_matrix; } const MatrixTypeNestedCleaned& nestedExpression() const { return m_matrix; }
MatrixType& nestedExpression() { return const_cast<MatrixType&>(m_matrix); } MatrixTypeNestedCleaned& nestedExpression() { return *const_cast<MatrixTypeNestedCleaned*>(&m_matrix); }
/** Assigns a triangular matrix to a triangular part of a dense matrix */ /** Assigns a triangular matrix to a triangular part of a dense matrix */
template<typename OtherDerived> template<typename OtherDerived>

View File

@ -150,6 +150,12 @@ void selfadjoint()
ref3 << 1, 0, ref3 << 1, 0,
0, 4; 0, 4;
VERIFY(m3 == ref3); VERIFY(m3 == ref3);
// example inspired from bug 159
int array[] = {1, 2, 3, 4};
Matrix2i::Map(array).part<SelfAdjoint>() = Matrix2i::Random().part<LowerTriangular>();
std::cout << "hello\n" << array << std::endl;
} }
void test_eigen2_triangular() void test_eigen2_triangular()

View File

@ -235,6 +235,11 @@ template<typename MatrixType> void triangular_rect(const MatrixType& m)
VERIFY_IS_APPROX(m2,m3); VERIFY_IS_APPROX(m2,m3);
} }
void bug_159()
{
Matrix3d m = Matrix3d::Random().triangularView<Lower>();
}
void test_triangular() void test_triangular()
{ {
for(int i = 0; i < g_repeat ; i++) for(int i = 0; i < g_repeat ; i++)
@ -255,4 +260,6 @@ void test_triangular()
CALL_SUBTEST_5( triangular_rect(MatrixXcd(r, c)) ); CALL_SUBTEST_5( triangular_rect(MatrixXcd(r, c)) );
CALL_SUBTEST_6( triangular_rect(Matrix<float,Dynamic,Dynamic,RowMajor>(r, c)) ); CALL_SUBTEST_6( triangular_rect(Matrix<float,Dynamic,Dynamic,RowMajor>(r, c)) );
} }
CALL_SUBTEST_1( bug_159() );
} }