Change the sign operator in Eigen to return NaN for NaN arguments, not zero.
diff --git a/test/array_cwise.cpp b/test/array_cwise.cpp
index b3fb59b..48c0935 100644
--- a/test/array_cwise.cpp
+++ b/test/array_cwise.cpp
@@ -309,7 +309,7 @@
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();