MCPcopy Create free account
hub / github.com/Derious/cuMPC / array

Function array

dependence/eigen-3.4.0/test/array_cwise.cpp:85–256  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

83}
84
85template<typename ArrayType> void array(const ArrayType& m)
86{
87 typedef typename ArrayType::Scalar Scalar;
88 typedef typename ArrayType::RealScalar RealScalar;
89 typedef Array<Scalar, ArrayType::RowsAtCompileTime, 1> ColVectorType;
90 typedef Array<Scalar, 1, ArrayType::ColsAtCompileTime> RowVectorType;
91
92 Index rows = m.rows();
93 Index cols = m.cols();
94
95 ArrayType m1 = ArrayType::Random(rows, cols),
96 m2 = ArrayType::Random(rows, cols),
97 m3(rows, cols);
98 ArrayType m4 = m1; // copy constructor
99 VERIFY_IS_APPROX(m1, m4);
100
101 ColVectorType cv1 = ColVectorType::Random(rows);
102 RowVectorType rv1 = RowVectorType::Random(cols);
103
104 Scalar s1 = internal::random<Scalar>(),
105 s2 = internal::random<Scalar>();
106
107 // scalar addition
108 VERIFY_IS_APPROX(m1 + s1, s1 + m1);
109 VERIFY_IS_APPROX(m1 + s1, ArrayType::Constant(rows,cols,s1) + m1);
110 VERIFY_IS_APPROX(s1 - m1, (-m1)+s1 );
111 VERIFY_IS_APPROX(m1 - s1, m1 - ArrayType::Constant(rows,cols,s1));
112 VERIFY_IS_APPROX(s1 - m1, ArrayType::Constant(rows,cols,s1) - m1);
113 VERIFY_IS_APPROX((m1*Scalar(2)) - s2, (m1+m1) - ArrayType::Constant(rows,cols,s2) );
114 m3 = m1;
115 m3 += s2;
116 VERIFY_IS_APPROX(m3, m1 + s2);
117 m3 = m1;
118 m3 -= s1;
119 VERIFY_IS_APPROX(m3, m1 - s1);
120
121 // scalar operators via Maps
122 m3 = m1;
123 ArrayType::Map(m1.data(), m1.rows(), m1.cols()) -= ArrayType::Map(m2.data(), m2.rows(), m2.cols());
124 VERIFY_IS_APPROX(m1, m3 - m2);
125
126 m3 = m1;
127 ArrayType::Map(m1.data(), m1.rows(), m1.cols()) += ArrayType::Map(m2.data(), m2.rows(), m2.cols());
128 VERIFY_IS_APPROX(m1, m3 + m2);
129
130 m3 = m1;
131 ArrayType::Map(m1.data(), m1.rows(), m1.cols()) *= ArrayType::Map(m2.data(), m2.rows(), m2.cols());
132 VERIFY_IS_APPROX(m1, m3 * m2);
133
134 m3 = m1;
135 m2 = ArrayType::Random(rows,cols);
136 m2 = (m2==0).select(1,m2);
137 ArrayType::Map(m1.data(), m1.rows(), m1.cols()) /= ArrayType::Map(m2.data(), m2.rows(), m2.cols());
138 VERIFY_IS_APPROX(m1, m3 / m2);
139
140 // reductions
141 VERIFY_IS_APPROX(m1.abs().colwise().sum().sum(), m1.abs().sum());
142 VERIFY_IS_APPROX(m1.abs().rowwise().sum().sum(), m1.abs().sum());

Callers 1

EIGEN_DECLARE_TESTFunction · 0.70

Calls 15

isMuchSmallerThanFunction · 0.85
colwiseMethod · 0.80
absMethod · 0.80
rowwiseMethod · 0.80
squareMethod · 0.80
cubeMethod · 0.80
absFunction · 0.70
realClass · 0.70
MapClass · 0.50
powFunction · 0.50
rowsMethod · 0.45
colsMethod · 0.45

Tested by

no test coverage detected