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

Function test_evaluators

test/evaluators.cpp:104–499  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

102#define VERIFY_IS_APPROX_EVALUATOR2(DEST,EXPR,REF) VERIFY_IS_APPROX(copy_using_evaluator(DEST,(EXPR)), (REF).eval());
103
104void test_evaluators()
105{
106 // Testing Matrix evaluator and Transpose
107 Vector2d v = Vector2d::Random();
108 const Vector2d v_const(v);
109 Vector2d v2;
110 RowVector2d w;
111
112 VERIFY_IS_APPROX_EVALUATOR(v2, v);
113 VERIFY_IS_APPROX_EVALUATOR(v2, v_const);
114
115 // Testing Transpose
116 VERIFY_IS_APPROX_EVALUATOR(w, v.transpose()); // Transpose as rvalue
117 VERIFY_IS_APPROX_EVALUATOR(w, v_const.transpose());
118
119 copy_using_evaluator(w.transpose(), v); // Transpose as lvalue
120 VERIFY_IS_APPROX(w,v.transpose().eval());
121
122 copy_using_evaluator(w.transpose(), v_const);
123 VERIFY_IS_APPROX(w,v_const.transpose().eval());
124
125 // Testing Array evaluator
126 {
127 ArrayXXf a(2,3);
128 ArrayXXf b(3,2);
129 a << 1,2,3, 4,5,6;
130 const ArrayXXf a_const(a);
131
132 VERIFY_IS_APPROX_EVALUATOR(b, a.transpose());
133
134 VERIFY_IS_APPROX_EVALUATOR(b, a_const.transpose());
135
136 // Testing CwiseNullaryOp evaluator
137 copy_using_evaluator(w, RowVector2d::Random());
138 VERIFY((w.array() >= -1).all() && (w.array() <= 1).all()); // not easy to test ...
139
140 VERIFY_IS_APPROX_EVALUATOR(w, RowVector2d::Zero());
141
142 VERIFY_IS_APPROX_EVALUATOR(w, RowVector2d::Constant(3));
143
144 // mix CwiseNullaryOp and transpose
145 VERIFY_IS_APPROX_EVALUATOR(w, Vector2d::Zero().transpose());
146 }
147
148 {
149 // test product expressions
150 int s = internal::random<int>(1,100);
151 MatrixXf a(s,s), b(s,s), c(s,s), d(s,s);
152 a.setRandom();
153 b.setRandom();
154 c.setRandom();
155 d.setRandom();
156 VERIFY_IS_APPROX_EVALUATOR(d, (a + b));
157 VERIFY_IS_APPROX_EVALUATOR(d, (a + b).transpose());
158 VERIFY_IS_APPROX_EVALUATOR2(d, prod(a,b), a*b);
159 VERIFY_IS_APPROX_EVALUATOR2(d.noalias(), prod(a,b), a*b);
160 VERIFY_IS_APPROX_EVALUATOR2(d, prod(a,b) + c, a*b + c);
161 VERIFY_IS_APPROX_EVALUATOR2(d, s * prod(a,b), s * a*b);

Callers

nothing calls this directly

Calls 15

swap_using_evaluatorFunction · 0.85
lazyprodFunction · 0.85
get_costFunction · 0.85
noaliasMethod · 0.80
realMethod · 0.80
imagMethod · 0.80
selectMethod · 0.80
colwiseMethod · 0.80

Tested by

no test coverage detected