MCPcopy Create free account
hub / github.com/LucaFulchir/libRaptorQ / array

Function array

external/eigen3/test/array.cpp:12–84  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10#include "main.h"
11
12template<typename ArrayType> void array(const ArrayType& m)
13{
14 typedef typename ArrayType::Index Index;
15 typedef typename ArrayType::Scalar Scalar;
16 typedef Array<Scalar, ArrayType::RowsAtCompileTime, 1> ColVectorType;
17 typedef Array<Scalar, 1, ArrayType::ColsAtCompileTime> RowVectorType;
18
19 Index rows = m.rows();
20 Index cols = m.cols();
21
22 ArrayType m1 = ArrayType::Random(rows, cols),
23 m2 = ArrayType::Random(rows, cols),
24 m3(rows, cols);
25
26 ColVectorType cv1 = ColVectorType::Random(rows);
27 RowVectorType rv1 = RowVectorType::Random(cols);
28
29 Scalar s1 = internal::random<Scalar>(),
30 s2 = internal::random<Scalar>();
31
32 // scalar addition
33 VERIFY_IS_APPROX(m1 + s1, s1 + m1);
34 VERIFY_IS_APPROX(m1 + s1, ArrayType::Constant(rows,cols,s1) + m1);
35 VERIFY_IS_APPROX(s1 - m1, (-m1)+s1 );
36 VERIFY_IS_APPROX(m1 - s1, m1 - ArrayType::Constant(rows,cols,s1));
37 VERIFY_IS_APPROX(s1 - m1, ArrayType::Constant(rows,cols,s1) - m1);
38 VERIFY_IS_APPROX((m1*Scalar(2)) - s2, (m1+m1) - ArrayType::Constant(rows,cols,s2) );
39 m3 = m1;
40 m3 += s2;
41 VERIFY_IS_APPROX(m3, m1 + s2);
42 m3 = m1;
43 m3 -= s1;
44 VERIFY_IS_APPROX(m3, m1 - s1);
45
46 // scalar operators via Maps
47 m3 = m1;
48 ArrayType::Map(m1.data(), m1.rows(), m1.cols()) -= ArrayType::Map(m2.data(), m2.rows(), m2.cols());
49 VERIFY_IS_APPROX(m1, m3 - m2);
50
51 m3 = m1;
52 ArrayType::Map(m1.data(), m1.rows(), m1.cols()) += ArrayType::Map(m2.data(), m2.rows(), m2.cols());
53 VERIFY_IS_APPROX(m1, m3 + m2);
54
55 m3 = m1;
56 ArrayType::Map(m1.data(), m1.rows(), m1.cols()) *= ArrayType::Map(m2.data(), m2.rows(), m2.cols());
57 VERIFY_IS_APPROX(m1, m3 * m2);
58
59 m3 = m1;
60 m2 = ArrayType::Random(rows,cols);
61 m2 = (m2==0).select(1,m2);
62 ArrayType::Map(m1.data(), m1.rows(), m1.cols()) /= ArrayType::Map(m2.data(), m2.rows(), m2.cols());
63 VERIFY_IS_APPROX(m1, m3 / m2);
64
65 // reductions
66 VERIFY_IS_APPROX(m1.abs().colwise().sum().sum(), m1.abs().sum());
67 VERIFY_IS_APPROX(m1.abs().rowwise().sum().sum(), m1.abs().sum());
68 using std::abs;
69 VERIFY_IS_MUCH_SMALLER_THAN(abs(m1.colwise().sum().sum() - m1.sum()), m1.abs().sum());

Callers 1

test_arrayFunction · 0.70

Calls 12

isMuchSmallerThanFunction · 0.85
selectMethod · 0.80
colwiseMethod · 0.80
absMethod · 0.80
rowwiseMethod · 0.80
MapClass · 0.50
absFunction · 0.50
rowsMethod · 0.45
colsMethod · 0.45
dataMethod · 0.45
sumMethod · 0.45
reduxMethod · 0.45

Tested by

no test coverage detected