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

Function array_real

test/array.cpp:207–318  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

205}
206
207template<typename ArrayType> void array_real(const ArrayType& m)
208{
209 using std::abs;
210 using std::sqrt;
211 typedef typename ArrayType::Index Index;
212 typedef typename ArrayType::Scalar Scalar;
213 typedef typename NumTraits<Scalar>::Real RealScalar;
214
215 Index rows = m.rows();
216 Index cols = m.cols();
217
218 ArrayType m1 = ArrayType::Random(rows, cols),
219 m2 = ArrayType::Random(rows, cols),
220 m3(rows, cols),
221 m4 = m1;
222
223 m4 = (m4.abs()==Scalar(0)).select(1,m4);
224
225 Scalar s1 = internal::random<Scalar>();
226
227 // these tests are mostly to check possible compilation issues with free-functions.
228 VERIFY_IS_APPROX(m1.sin(), sin(m1));
229 VERIFY_IS_APPROX(m1.cos(), cos(m1));
230 VERIFY_IS_APPROX(m1.tan(), tan(m1));
231 VERIFY_IS_APPROX(m1.asin(), asin(m1));
232 VERIFY_IS_APPROX(m1.acos(), acos(m1));
233 VERIFY_IS_APPROX(m1.atan(), atan(m1));
234 VERIFY_IS_APPROX(m1.sinh(), sinh(m1));
235 VERIFY_IS_APPROX(m1.cosh(), cosh(m1));
236 VERIFY_IS_APPROX(m1.tanh(), tanh(m1));
237
238 VERIFY_IS_APPROX(m1.arg(), arg(m1));
239 VERIFY_IS_APPROX(m1.round(), round(m1));
240 VERIFY_IS_APPROX(m1.floor(), floor(m1));
241 VERIFY_IS_APPROX(m1.ceil(), ceil(m1));
242 VERIFY((m1.isNaN() == (Eigen::isnan)(m1)).all());
243 VERIFY((m1.isInf() == (Eigen::isinf)(m1)).all());
244 VERIFY((m1.isFinite() == (Eigen::isfinite)(m1)).all());
245 VERIFY_IS_APPROX(m1.inverse(), inverse(m1));
246 VERIFY_IS_APPROX(m1.abs(), abs(m1));
247 VERIFY_IS_APPROX(m1.abs2(), abs2(m1));
248 VERIFY_IS_APPROX(m1.square(), square(m1));
249 VERIFY_IS_APPROX(m1.cube(), cube(m1));
250 VERIFY_IS_APPROX(cos(m1+RealScalar(3)*m2), cos((m1+RealScalar(3)*m2).eval()));
251 VERIFY_IS_APPROX(m1.sign(), sign(m1));
252
253
254 // avoid NaNs with abs() so verification doesn't fail
255 m3 = m1.abs();
256 VERIFY_IS_APPROX(m3.sqrt(), sqrt(abs(m1)));
257 VERIFY_IS_APPROX(m3.rsqrt(), Scalar(1)/sqrt(abs(m1)));
258 VERIFY_IS_APPROX(rsqrt(m3), Scalar(1)/sqrt(abs(m1)));
259 VERIFY_IS_APPROX(m3.log(), log(m3));
260 VERIFY_IS_APPROX(m3.log1p(), log1p(m3));
261 VERIFY_IS_APPROX(m3.log10(), log10(m3));
262
263
264 VERIFY((!(m1>m2) == (m1<=m2)).all());

Callers 1

test_arrayFunction · 0.85

Calls 15

inverseFunction · 0.85
selectMethod · 0.80
absMethod · 0.80
sinMethod · 0.80
cosMethod · 0.80
sinhMethod · 0.80
coshMethod · 0.80
tanhMethod · 0.80
roundMethod · 0.80
floorMethod · 0.80
ceilMethod · 0.80
squareMethod · 0.80

Tested by 1

test_arrayFunction · 0.68