diff options
author | Gael Guennebaud <g.gael@free.fr> | 2015-06-17 15:33:09 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2015-06-17 15:33:09 +0200 |
commit | 40f326ef2ecf50022b082ec09bc9e545f19ebf6f (patch) | |
tree | 74cc363cda4028413cde3d64ba02b44a8044e8ee /test | |
parent | ab5db86fe9dbf3f94c46e3ca4b6694d6741bb1d3 (diff) |
workaround clang's broken complex division
Diffstat (limited to 'test')
-rw-r--r-- | test/array.cpp | 11 |
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); |