MCPcopy Create free account
hub / github.com/PX4/eigen / run_nesting_ops_2

Function run_nesting_ops_2

test/nesting_ops.cpp:48–91  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

46}
47
48template <typename MatrixType> void run_nesting_ops_2(const MatrixType& _m)
49{
50 typedef typename MatrixType::Scalar Scalar;
51 Index rows = _m.rows();
52 Index cols = _m.cols();
53 MatrixType m1 = MatrixType::Random(rows,cols);
54 Matrix<Scalar,MatrixType::RowsAtCompileTime,MatrixType::ColsAtCompileTime,ColMajor> m2;
55
56 if((MatrixType::SizeAtCompileTime==Dynamic))
57 {
58 VERIFY_EVALUATION_COUNT( use_n_times<1>(m1 + m1*m1), 1 );
59 VERIFY_EVALUATION_COUNT( use_n_times<10>(m1 + m1*m1), 1 );
60
61 VERIFY_EVALUATION_COUNT( use_n_times<1>(m1.template triangularView<Lower>().solve(m1.col(0))), 1 );
62 VERIFY_EVALUATION_COUNT( use_n_times<10>(m1.template triangularView<Lower>().solve(m1.col(0))), 1 );
63
64 VERIFY_EVALUATION_COUNT( use_n_times<1>(Scalar(2)*m1.template triangularView<Lower>().solve(m1.col(0))), 2 ); // FIXME could be one by applying the scaling in-place on the solve result
65 VERIFY_EVALUATION_COUNT( use_n_times<1>(m1.col(0)+m1.template triangularView<Lower>().solve(m1.col(0))), 2 ); // FIXME could be one by adding m1.col() inplace
66 VERIFY_EVALUATION_COUNT( use_n_times<10>(m1.col(0)+m1.template triangularView<Lower>().solve(m1.col(0))), 2 );
67 }
68
69 {
70 VERIFY( verify_eval_type<10>(m1, m1) );
71 if(!NumTraits<Scalar>::IsComplex)
72 {
73 VERIFY( verify_eval_type<3>(2*m1, 2*m1) );
74 VERIFY( verify_eval_type<4>(2*m1, m1) );
75 }
76 else
77 {
78 VERIFY( verify_eval_type<2>(2*m1, 2*m1) );
79 VERIFY( verify_eval_type<3>(2*m1, m1) );
80 }
81 VERIFY( verify_eval_type<2>(m1+m1, m1+m1) );
82 VERIFY( verify_eval_type<3>(m1+m1, m1) );
83 VERIFY( verify_eval_type<1>(m1*m1.transpose(), m2) );
84 VERIFY( verify_eval_type<1>(m1*(m1+m1).transpose(), m2) );
85 VERIFY( verify_eval_type<2>(m1*m1.transpose(), m2) );
86 VERIFY( verify_eval_type<1>(m1+m1*m1, m1) );
87
88 VERIFY( verify_eval_type<1>(m1.template triangularView<Lower>().solve(m1), m1) );
89 VERIFY( verify_eval_type<1>(m1+m1.template triangularView<Lower>().solve(m1), m1) );
90 }
91}
92
93
94void test_nesting_ops()

Callers 1

test_nesting_opsFunction · 0.85

Calls 5

rowsMethod · 0.45
colsMethod · 0.45
solveMethod · 0.45
colMethod · 0.45
transposeMethod · 0.45

Tested by 1

test_nesting_opsFunction · 0.68