diff options
author | Gael Guennebaud <g.gael@free.fr> | 2015-10-27 15:39:50 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2015-10-27 15:39:50 +0100 |
commit | 2475a1de48cb6f602ab7340d1e1afad15754a103 (patch) | |
tree | 8b8e0230658ec520976b4095f548e08b01475681 /Eigen/src/Core/BooleanRedux.h | |
parent | 699c33e76a949ae995c54cff05c873b655d15911 (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.h | 8 |
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 |