Change the sign operator in Eigen to return NaN for NaN arguments, not zero.

This commit is contained in:
Rasmus Munk Larsen
2020-07-07 01:54:04 +00:00
parent cb63153183
commit 6964ae8d52
3 changed files with 18 additions and 5 deletions

View File

@@ -309,7 +309,7 @@ template<typename ArrayType> void array_real(const ArrayType& m)
VERIFY_IS_APPROX(m1.cube(), cube(m1));
VERIFY_IS_APPROX(cos(m1+RealScalar(3)*m2), cos((m1+RealScalar(3)*m2).eval()));
VERIFY_IS_APPROX(m1.sign(), sign(m1));
VERIFY((m1.sqrt().sign().isNaN() == (Eigen::isnan)(sign(sqrt(m1)))).all());
// avoid NaNs with abs() so verification doesn't fail
m3 = m1.abs();