diff options
author | Gael Guennebaud <g.gael@free.fr> | 2015-11-20 14:52:08 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2015-11-20 14:52:08 +0100 |
commit | 4a985e793c6c6f822c18243f8c10508e4a8b635c (patch) | |
tree | 04bffa441b5d9a3859cc808e3f21ee734c62e18e /test | |
parent | 5c9c0dca4dcf6c62b5b63c529f18421df3d4f36e (diff) |
Workaround msvc broken complex/complex division in unit test
Diffstat (limited to 'test')
-rw-r--r-- | test/array.cpp | 10 |
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); |