aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/functors
diff options
context:
space:
mode:
authorGravatar Deanna Hood <deanna.m.hood@gmail.com>2015-03-17 04:33:12 +1000
committerGravatar Deanna Hood <deanna.m.hood@gmail.com>2015-03-17 04:33:12 +1000
commit46cf9cda32be99fcd658a926c14088e087d91b7e (patch)
tree05cd93a3fc5f7ecf94f37e4bb27cf70d60a877bd /Eigen/src/Core/functors
parent7b829940d1ce106f9b83aba63782cb7be689ba5d (diff)
Add isfinite array support as isFinite
Diffstat (limited to 'Eigen/src/Core/functors')
-rw-r--r--Eigen/src/Core/functors/UnaryFunctors.h20
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