aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2015-11-20 14:52:08 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2015-11-20 14:52:08 +0100
commit4a985e793c6c6f822c18243f8c10508e4a8b635c (patch)
tree04bffa441b5d9a3859cc808e3f21ee734c62e18e /test
parent5c9c0dca4dcf6c62b5b63c529f18421df3d4f36e (diff)
Workaround msvc broken complex/complex division in unit test
Diffstat (limited to 'test')
-rw-r--r--test/array.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/test/array.cpp b/test/array.cpp
index e2b20f9e9..d437105da 100644
--- a/test/array.cpp
+++ b/test/array.cpp
@@ -365,11 +365,15 @@ template<typename ArrayType> void array_complex(const ArrayType& m)
std::complex<RealScalar> zero(0.0,0.0);
VERIFY((Eigen::isnan)(m1*zero/zero).all());
+#if EIGEN_COMP_MSVC
+ // msvc complex division is not robust
+ VERIFY((Eigen::isinf)(m4/RealScalar(0)).all());
+#else
#if EIGEN_COMP_CLANG
- // clang's complex division is notoriously broken
+ // clang's complex division is notoriously broken too
if((numext::isinf)(m4(0,0)/RealScalar(0))) {
#endif
- VERIFY((Eigen::isinf)(m4/zero).all());
+ VERIFY((Eigen::isinf)(m4/zero).all());
#if EIGEN_COMP_CLANG
}
else
@@ -377,6 +381,8 @@ template<typename ArrayType> void array_complex(const ArrayType& m)
VERIFY((Eigen::isinf)(m4.real()/zero.real()).all());
}
#endif
+#endif // MSVC
+
VERIFY(((Eigen::isfinite)(m1) && (!(Eigen::isfinite)(m1*zero/zero)) && (!(Eigen::isfinite)(m1/zero))).all());
VERIFY_IS_APPROX(inverse(inverse(m1)),m1);