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

Function comparisons

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

Source from the content-addressed store, hash-verified

256}
257
258template<typename ArrayType> void comparisons(const ArrayType& m)
259{
260 using std::abs;
261 typedef typename ArrayType::Scalar Scalar;
262 typedef typename NumTraits<Scalar>::Real RealScalar;
263
264 Index rows = m.rows();
265 Index cols = m.cols();
266
267 Index r = internal::random<Index>(0, rows-1),
268 c = internal::random<Index>(0, cols-1);
269
270 ArrayType m1 = ArrayType::Random(rows, cols),
271 m2 = ArrayType::Random(rows, cols),
272 m3(rows, cols),
273 m4 = m1;
274
275 m4 = (m4.abs()==Scalar(0)).select(1,m4);
276
277 VERIFY(((m1 + Scalar(1)) > m1).all());
278 VERIFY(((m1 - Scalar(1)) < m1).all());
279 if (rows*cols>1)
280 {
281 m3 = m1;
282 m3(r,c) += 1;
283 VERIFY(! (m1 < m3).all() );
284 VERIFY(! (m1 > m3).all() );
285 }
286 VERIFY(!(m1 > m2 && m1 < m2).any());
287 VERIFY((m1 <= m2 || m1 >= m2).all());
288
289 // comparisons array to scalar
290 VERIFY( (m1 != (m1(r,c)+1) ).any() );
291 VERIFY( (m1 > (m1(r,c)-1) ).any() );
292 VERIFY( (m1 < (m1(r,c)+1) ).any() );
293 VERIFY( (m1 == m1(r,c) ).any() );
294
295 // comparisons scalar to array
296 VERIFY( ( (m1(r,c)+1) != m1).any() );
297 VERIFY( ( (m1(r,c)-1) < m1).any() );
298 VERIFY( ( (m1(r,c)+1) > m1).any() );
299 VERIFY( ( m1(r,c) == m1).any() );
300
301 // test Select
302 VERIFY_IS_APPROX( (m1<m2).select(m1,m2), m1.cwiseMin(m2) );
303 VERIFY_IS_APPROX( (m1>m2).select(m1,m2), m1.cwiseMax(m2) );
304 Scalar mid = (m1.cwiseAbs().minCoeff() + m1.cwiseAbs().maxCoeff())/Scalar(2);
305 for (int j=0; j<cols; ++j)
306 for (int i=0; i<rows; ++i)
307 m3(i,j) = abs(m1(i,j))<mid ? 0 : m1(i,j);
308 VERIFY_IS_APPROX( (m1.abs()<ArrayType::Constant(rows,cols,mid))
309 .select(ArrayType::Zero(rows,cols),m1), m3);
310 // shorter versions:
311 VERIFY_IS_APPROX( (m1.abs()<ArrayType::Constant(rows,cols,mid))
312 .select(0,m1), m3);
313 VERIFY_IS_APPROX( (m1.abs()>=ArrayType::Constant(rows,cols,mid))
314 .select(m1,0), m3);
315 // even shorter version:

Callers 1

EIGEN_DECLARE_TESTFunction · 0.70

Calls 15

absMethod · 0.80
cwiseMinMethod · 0.80
cwiseMaxMethod · 0.80
colwiseMethod · 0.80
rowwiseMethod · 0.80
absFunction · 0.70
rowsMethod · 0.45
colsMethod · 0.45
selectMethod · 0.45
allMethod · 0.45
anyMethod · 0.45
minCoeffMethod · 0.45

Tested by

no test coverage detected