MCPcopy Create free account
hub / github.com/ai-techsystems/deepC / array

Function array

packages/eigen-eigen-323c052e1731/test/array.cpp:12–127  ·  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::Scalar Scalar;
15 typedef typename ArrayType::RealScalar RealScalar;
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 ArrayType m4 = m1; // copy constructor
26 VERIFY_IS_APPROX(m1, m4);
27
28 ColVectorType cv1 = ColVectorType::Random(rows);
29 RowVectorType rv1 = RowVectorType::Random(cols);
30
31 Scalar s1 = internal::random<Scalar>(),
32 s2 = internal::random<Scalar>();
33
34 // scalar addition
35 VERIFY_IS_APPROX(m1 + s1, s1 + m1);
36 VERIFY_IS_APPROX(m1 + s1, ArrayType::Constant(rows,cols,s1) + m1);
37 VERIFY_IS_APPROX(s1 - m1, (-m1)+s1 );
38 VERIFY_IS_APPROX(m1 - s1, m1 - ArrayType::Constant(rows,cols,s1));
39 VERIFY_IS_APPROX(s1 - m1, ArrayType::Constant(rows,cols,s1) - m1);
40 VERIFY_IS_APPROX((m1*Scalar(2)) - s2, (m1+m1) - ArrayType::Constant(rows,cols,s2) );
41 m3 = m1;
42 m3 += s2;
43 VERIFY_IS_APPROX(m3, m1 + s2);
44 m3 = m1;
45 m3 -= s1;
46 VERIFY_IS_APPROX(m3, m1 - s1);
47
48 // scalar operators via Maps
49 m3 = m1;
50 ArrayType::Map(m1.data(), m1.rows(), m1.cols()) -= ArrayType::Map(m2.data(), m2.rows(), m2.cols());
51 VERIFY_IS_APPROX(m1, m3 - m2);
52
53 m3 = m1;
54 ArrayType::Map(m1.data(), m1.rows(), m1.cols()) += ArrayType::Map(m2.data(), m2.rows(), m2.cols());
55 VERIFY_IS_APPROX(m1, m3 + m2);
56
57 m3 = m1;
58 ArrayType::Map(m1.data(), m1.rows(), m1.cols()) *= ArrayType::Map(m2.data(), m2.rows(), m2.cols());
59 VERIFY_IS_APPROX(m1, m3 * m2);
60
61 m3 = m1;
62 m2 = ArrayType::Random(rows,cols);
63 m2 = (m2==0).select(1,m2);
64 ArrayType::Map(m1.data(), m1.rows(), m1.cols()) /= ArrayType::Map(m2.data(), m2.rows(), m2.cols());
65 VERIFY_IS_APPROX(m1, m3 / m2);
66
67 // reductions
68 VERIFY_IS_APPROX(m1.abs().colwise().sum().sum(), m1.abs().sum());
69 VERIFY_IS_APPROX(m1.abs().rowwise().sum().sum(), m1.abs().sum());

Callers 1

test_arrayFunction · 0.70

Calls 15

ConstantClass · 0.85
isMuchSmallerThanFunction · 0.85
selectMethod · 0.80
colwiseMethod · 0.80
absMethod · 0.80
rowwiseMethod · 0.80
squareMethod · 0.80
cubeMethod · 0.80
realFunction · 0.70
MapClass · 0.50
absFunction · 0.50
powFunction · 0.50

Tested by

no test coverage detected