Vectorize cbrt for float and double.

This commit is contained in:
Rasmus Munk Larsen
2025-04-17 23:31:20 +00:00
parent 5330960900
commit 33f5f59614
12 changed files with 183 additions and 11 deletions

View File

@@ -558,11 +558,15 @@ struct functor_traits<scalar_sqrt_op<bool>> {
template <typename Scalar>
struct scalar_cbrt_op {
EIGEN_DEVICE_FUNC inline const Scalar operator()(const Scalar& a) const { return numext::cbrt(a); }
template <typename Packet>
EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const {
return internal::pcbrt(a);
}
};
template <typename Scalar>
struct functor_traits<scalar_cbrt_op<Scalar>> {
enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false };
enum { Cost = 20 * NumTraits<Scalar>::MulCost, PacketAccess = packet_traits<Scalar>::HasCbrt };
};
/** \internal