10 #define TEST_ENABLE_TEMPORARY_TRACKING 28 ColMajorMatrixType
m1 = MatrixType::Random(rows, cols),
29 m2 = MatrixType::Random(rows, cols),
31 RowVectorType rv1 = RowVectorType::Random(rows), rvres(rows);
32 ColVectorType cv1 = ColVectorType::Random(cols), cvres(cols);
33 RowMajorMatrixType rm3(rows, cols);
35 Scalar s1 = internal::random<Scalar>(),
36 s2 = internal::random<Scalar>(),
37 s3 = internal::random<Scalar>();
39 Index c0 = internal::random<Index>(4,cols-8),
40 c1 = internal::random<Index>(8,cols-c0),
41 r0 = internal::random<Index>(4,cols-8),
42 r1 = internal::random<Index>(8,rows-r0);
69 VERIFY_EVALUATION_COUNT(( m3.block(r0,r0,
r1,
r1).noalias() += -m1.block(r0,c0,
r1,
c1) * (s2*m2.block(r0,c0,
r1,
c1)).
adjoint() ), 0);
70 VERIFY_EVALUATION_COUNT(( m3.block(r0,r0,
r1,
r1).noalias() -= s1 * m1.block(r0,c0,
r1,
c1) * m2.block(c0,r0,
c1,
r1) ), 0);
73 VERIFY_EVALUATION_COUNT(( m3.block(r0,r0,
r1,
r1).noalias() = s1 * m1.block(r0,c0,
r1,
c1) * (s1*
m2).
block(c0,r0,
c1,
r1) ), 1);
77 VERIFY_EVALUATION_COUNT( rm3.noalias() = (s1 * m1.adjoint()).
template triangularView<UnitUpper>() * m2.adjoint(), 0);
89 VERIFY_EVALUATION_COUNT( m3.noalias() = s2 * m2.adjoint() * (s1 * m1.adjoint()).
template selfadjointView<Upper>(), 0);
90 VERIFY_EVALUATION_COUNT( rm3.noalias() = (s1 * m1.adjoint()).
template selfadjointView<Lower>() * m2.adjoint(), 0);
96 VERIFY_EVALUATION_COUNT( m3.block(r0,c0,
r1,
c1).noalias() += m1.block(r0,r0,
r1,
r1).template selfadjointView<Upper>() * (s1*m2.block(r0,c0,
r1,
c1)), 0);
97 VERIFY_EVALUATION_COUNT( m3.block(r0,c0,
r1,
c1).noalias() = m1.block(r0,r0,
r1,
r1).template selfadjointView<Upper>() * m2.block(r0,c0,
r1,
c1), 0);
115 VERIFY_EVALUATION_COUNT( m3.col(0).template head<5>() * m3.col(0).transpose() + m3.col(0).template head<5>() * m3.col(0).transpose(), 0 );
void product_notemporary(const MatrixType &m)
m m block(1, 0, 2, 2)<< 4
void adjoint(const MatrixType &m)
void diagonal(const MatrixType &m)
void test_product_notemporary()
#define VERIFY_EVALUATION_COUNT(XPR, N)
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
NumTraits< Scalar >::Real RealScalar
#define TEST_SET_BUT_UNUSED_VARIABLE(X)
#define EIGEN_TEST_MAX_SIZE
A triangularView< Lower >().adjoint().solveInPlace(B)
The matrix class, also used for vectors and row-vectors.