diff options
author | Rasmus Munk Larsen <rmlarsen@google.com> | 2020-12-03 22:31:44 +0000 |
---|---|---|
committer | Rasmus Munk Larsen <rmlarsen@google.com> | 2020-12-03 22:31:44 +0000 |
commit | 4d91519a9be061da5d300079fca17dd0b9328050 (patch) | |
tree | 5546a7f478049ce24d8f69f20ad018d6a63ec807 /Eigen/src/Core/functors | |
parent | 25d8ae7465e6430bc2dc7f65800332932d3bb774 (diff) |
Add log2() operator to Eigen
Diffstat (limited to 'Eigen/src/Core/functors')
-rw-r--r-- | Eigen/src/Core/functors/UnaryFunctors.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Eigen/src/Core/functors/UnaryFunctors.h b/Eigen/src/Core/functors/UnaryFunctors.h index 8c0ed8481..c037576dc 100644 --- a/Eigen/src/Core/functors/UnaryFunctors.h +++ b/Eigen/src/Core/functors/UnaryFunctors.h @@ -396,6 +396,22 @@ struct functor_traits<scalar_log10_op<Scalar> > { enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = packet_traits<Scalar>::HasLog10 }; }; /** \internal + * + * \brief Template functor to compute the base-2 logarithm of a scalar + * + * \sa class CwiseUnaryOp, Cwise::log2() + */ +template<typename Scalar> struct scalar_log2_op { + EIGEN_EMPTY_STRUCT_CTOR(scalar_log2_op) + EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const { return Scalar(M_LOG2E) * std::log(a); } + template <typename Packet> + EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const { return internal::plog2(a); } +}; +template<typename Scalar> +struct functor_traits<scalar_log2_op<Scalar> > +{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = packet_traits<Scalar>::HasLog }; }; + +/** \internal * \brief Template functor to compute the square root of a scalar * \sa class CwiseUnaryOp, Cwise::sqrt() */ |