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

Function comparisons

test/array.cpp:130–205  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

128}
129
130template<typename ArrayType> void comparisons(const ArrayType& m)
131{
132 using std::abs;
133 typedef typename ArrayType::Index Index;
134 typedef typename ArrayType::Scalar Scalar;
135 typedef typename NumTraits<Scalar>::Real RealScalar;
136
137 Index rows = m.rows();
138 Index cols = m.cols();
139
140 Index r = internal::random<Index>(0, rows-1),
141 c = internal::random<Index>(0, cols-1);
142
143 ArrayType m1 = ArrayType::Random(rows, cols),
144 m2 = ArrayType::Random(rows, cols),
145 m3(rows, cols),
146 m4 = m1;
147
148 m4 = (m4.abs()==Scalar(0)).select(1,m4);
149
150 VERIFY(((m1 + Scalar(1)) > m1).all());
151 VERIFY(((m1 - Scalar(1)) < m1).all());
152 if (rows*cols>1)
153 {
154 m3 = m1;
155 m3(r,c) += 1;
156 VERIFY(! (m1 < m3).all() );
157 VERIFY(! (m1 > m3).all() );
158 }
159 VERIFY(!(m1 > m2 && m1 < m2).any());
160 VERIFY((m1 <= m2 || m1 >= m2).all());
161
162 // comparisons array to scalar
163 VERIFY( (m1 != (m1(r,c)+1) ).any() );
164 VERIFY( (m1 > (m1(r,c)-1) ).any() );
165 VERIFY( (m1 < (m1(r,c)+1) ).any() );
166 VERIFY( (m1 == m1(r,c) ).any() );
167
168 // comparisons scalar to array
169 VERIFY( ( (m1(r,c)+1) != m1).any() );
170 VERIFY( ( (m1(r,c)-1) < m1).any() );
171 VERIFY( ( (m1(r,c)+1) > m1).any() );
172 VERIFY( ( m1(r,c) == m1).any() );
173
174 // test Select
175 VERIFY_IS_APPROX( (m1<m2).select(m1,m2), m1.cwiseMin(m2) );
176 VERIFY_IS_APPROX( (m1>m2).select(m1,m2), m1.cwiseMax(m2) );
177 Scalar mid = (m1.cwiseAbs().minCoeff() + m1.cwiseAbs().maxCoeff())/Scalar(2);
178 for (int j=0; j<cols; ++j)
179 for (int i=0; i<rows; ++i)
180 m3(i,j) = abs(m1(i,j))<mid ? 0 : m1(i,j);
181 VERIFY_IS_APPROX( (m1.abs()<ArrayType::Constant(rows,cols,mid))
182 .select(ArrayType::Zero(rows,cols),m1), m3);
183 // shorter versions:
184 VERIFY_IS_APPROX( (m1.abs()<ArrayType::Constant(rows,cols,mid))
185 .select(0,m1), m3);
186 VERIFY_IS_APPROX( (m1.abs()>=ArrayType::Constant(rows,cols,mid))
187 .select(m1,0), m3);

Callers 1

test_arrayFunction · 0.70

Calls 15

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

Tested by 1

test_arrayFunction · 0.56