diff options
author | Gael Guennebaud <g.gael@free.fr> | 2016-06-01 17:00:08 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2016-06-01 17:00:08 +0200 |
commit | 89099b0cf7028eedf125bcef6a1daa30e4a7f6ec (patch) | |
tree | 5d7078db2c293c3f2cdca4cd464fdd8f60462ef8 /Eigen/src/Core/functors/UnaryFunctors.h | |
parent | afd33539dde5611431696df93ffec84707c87e68 (diff) |
Expose log1p to Array.
Diffstat (limited to 'Eigen/src/Core/functors/UnaryFunctors.h')
-rw-r--r-- | Eigen/src/Core/functors/UnaryFunctors.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/Eigen/src/Core/functors/UnaryFunctors.h b/Eigen/src/Core/functors/UnaryFunctors.h index 3f7a635be..a7d8c3b52 100644 --- a/Eigen/src/Core/functors/UnaryFunctors.h +++ b/Eigen/src/Core/functors/UnaryFunctors.h @@ -266,7 +266,7 @@ struct functor_traits<scalar_exp_op<Scalar> > { * * \brief Template functor to compute the logarithm of a scalar * - * \sa class CwiseUnaryOp, Cwise::log() + * \sa class CwiseUnaryOp, ArrayBase::log() */ template<typename Scalar> struct scalar_log_op { EIGEN_EMPTY_STRUCT_CTOR(scalar_log_op) @@ -295,6 +295,26 @@ struct functor_traits<scalar_log_op<Scalar> > { /** \internal * + * \brief Template functor to compute the logarithm of 1 plus a scalar value + * + * \sa class CwiseUnaryOp, ArrayBase::log1p() + */ +template<typename Scalar> struct scalar_log1p_op { + EIGEN_EMPTY_STRUCT_CTOR(scalar_log1p_op) + EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { return numext::log1p(a); } + template <typename Packet> + EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const { return internal::plog1p(a); } +}; +template <typename Scalar> +struct functor_traits<scalar_log1p_op<Scalar> > { + enum { + PacketAccess = packet_traits<Scalar>::HasLog1p, + Cost = functor_traits<scalar_log_op<Scalar> >::Cost // TODO measure cost of log1p + }; +}; + +/** \internal + * * \brief Template functor to compute the base-10 logarithm of a scalar * * \sa class CwiseUnaryOp, Cwise::log10() |