bug #51: make general_matrix_matrix_triangular_product use L3-blocking helper so that general symmetric rank-updates and general-matrix-to-triangular products do not trigger dynamic memory allocation for fixed size matrices.

This commit is contained in:
Gael Guennebaud
2016-01-25 17:16:33 +01:00
parent c10021c00a
commit e58827d2ed
3 changed files with 57 additions and 20 deletions

View File

@@ -81,11 +81,12 @@ template<typename MatrixType> void nomalloc(const MatrixType& m)
m2.template selfadjointView<Lower>().rankUpdate(m1.row(0),-1);
// The following fancy matrix-matrix products are not safe yet regarding static allocation
// m1 += m1.template triangularView<Upper>() * m2.col(;
// m1.template selfadjointView<Lower>().rankUpdate(m2);
// m1 += m1.template triangularView<Upper>() * m2;
// m1.col(1) += m1.template triangularView<Upper>() * m2.col(0);
m2.template selfadjointView<Lower>().rankUpdate(m1);
m2 += m2.template triangularView<Upper>() * m1;
m2.template triangularView<Upper>() = m2 * m2;
// m1 += m1.template selfadjointView<Lower>() * m2;
// VERIFY_IS_APPROX(m1,m1);
VERIFY_IS_APPROX(m2,m2);
}
template<typename Scalar>