aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/BooleanRedux.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2015-10-27 15:39:50 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2015-10-27 15:39:50 +0100
commit2475a1de48cb6f602ab7340d1e1afad15754a103 (patch)
tree8b8e0230658ec520976b4095f548e08b01475681 /Eigen/src/Core/BooleanRedux.h
parent699c33e76a949ae995c54cff05c873b655d15911 (diff)
bug #1008: stabilize isfinite/isinf/isnan/hasNaN/allFinite functions for fast-math mode.
Diffstat (limited to 'Eigen/src/Core/BooleanRedux.h')
-rw-r--r--Eigen/src/Core/BooleanRedux.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/Eigen/src/Core/BooleanRedux.h b/Eigen/src/Core/BooleanRedux.h
index ba45cf5c3..be4cd9b3a 100644
--- a/Eigen/src/Core/BooleanRedux.h
+++ b/Eigen/src/Core/BooleanRedux.h
@@ -142,7 +142,11 @@ inline Eigen::Index DenseBase<Derived>::count() const
template<typename Derived>
inline bool DenseBase<Derived>::hasNaN() const
{
+#if EIGEN_COMP_MSVC || (defined __FAST_MATH__)
+ return derived().array().isNaN().any();
+#else
return !((derived().array()==derived().array()).all());
+#endif
}
/** \returns true if \c *this contains only finite numbers, i.e., no NaN and no +/-INF values.
@@ -152,7 +156,11 @@ inline bool DenseBase<Derived>::hasNaN() const
template<typename Derived>
inline bool DenseBase<Derived>::allFinite() const
{
+#if EIGEN_COMP_MSVC || (defined __FAST_MATH__)
+ return derived().array().isFinite().all();
+#else
return !((derived()-derived()).hasNaN());
+#endif
}
} // end namespace Eigen