aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2015-06-17 15:33:09 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2015-06-17 15:33:09 +0200
commit40f326ef2ecf50022b082ec09bc9e545f19ebf6f (patch)
tree74cc363cda4028413cde3d64ba02b44a8044e8ee /test
parentab5db86fe9dbf3f94c46e3ca4b6694d6741bb1d3 (diff)
workaround clang's broken complex division
Diffstat (limited to 'test')
-rw-r--r--test/array.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/array.cpp b/test/array.cpp
index b802e52f6..b0210c682 100644
--- a/test/array.cpp
+++ b/test/array.cpp
@@ -346,7 +346,18 @@ template<typename ArrayType> void array_complex(const ArrayType& m)
std::complex<RealScalar> zero(0.0,0.0);
VERIFY(isnan(m1*zero/zero).all());
+#if EIGEN_COMP_CLANG
+ // clang's complex division is notoriously broken
+ if(numext::isinf(m1(0,0)/Scalar(0))) {
+#endif
VERIFY(isinf(m1/zero).all());
+#if EIGEN_COMP_CLANG
+ }
+ else
+ {
+ VERIFY(isinf(m1.real()/zero.real()).all());
+ }
+#endif
VERIFY((isfinite(m1) && !isfinite(m1*zero/zero) && !isfinite(m1/zero)).all());
VERIFY_IS_APPROX(inverse(inverse(m1)),m1);