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();