diff options
author | 2015-03-17 04:33:12 +1000 | |
---|---|---|
committer | 2015-03-17 04:33:12 +1000 | |
commit | 46cf9cda32be99fcd658a926c14088e087d91b7e (patch) | |
tree | 05cd93a3fc5f7ecf94f37e4bb27cf70d60a877bd /Eigen/src/Core/functors | |
parent | 7b829940d1ce106f9b83aba63782cb7be689ba5d (diff) |
Add isfinite array support as isFinite
Diffstat (limited to 'Eigen/src/Core/functors')
-rw-r--r-- | Eigen/src/Core/functors/UnaryFunctors.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Eigen/src/Core/functors/UnaryFunctors.h b/Eigen/src/Core/functors/UnaryFunctors.h index 1745d8b55..a340963c2 100644 --- a/Eigen/src/Core/functors/UnaryFunctors.h +++ b/Eigen/src/Core/functors/UnaryFunctors.h @@ -606,6 +606,26 @@ struct functor_traits<scalar_isinf_op<Scalar> > }; }; +/** \internal + * \brief Template functor to compute the isFinite of a scalar + * \sa class CwiseUnaryOp, ArrayBase::isFinite() + */ +template<typename Scalar> struct scalar_isFinite_op { + EIGEN_EMPTY_STRUCT_CTOR(scalar_isFinite_op) + typedef bool result_type; + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type operator() (const Scalar& a) const { return numext::isfinite(a); } + typedef typename packet_traits<Scalar>::type Packet; + inline Packet packetOp(const Packet& a) const { return internal::pisFinite(a); } +}; +template<typename Scalar> +struct functor_traits<scalar_isFinite_op<Scalar> > +{ + enum { + Cost = NumTraits<Scalar>::MulCost, + PacketAccess = packet_traits<Scalar>::HasIsFinite + }; +}; + } // end namespace internal } // end namespace Eigen |