12#ifndef EIGEN_BESSELFUNCTIONS_FUNCTORS_H
13#define EIGEN_BESSELFUNCTIONS_FUNCTORS_H
16#include "./InternalHeaderCheck.h"
27template <
typename Scalar>
28struct scalar_bessel_i0_op {
29 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
30 using numext::bessel_i0;
33 typedef typename packet_traits<Scalar>::type Packet;
34 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_i0(x); }
36template <
typename Scalar>
37struct functor_traits<scalar_bessel_i0_op<Scalar> > {
42 Cost = 28 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
43 PacketAccess = packet_traits<Scalar>::HasBessel
52template <
typename Scalar>
53struct scalar_bessel_i0e_op {
54 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
55 using numext::bessel_i0e;
58 typedef typename packet_traits<Scalar>::type Packet;
59 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_i0e(x); }
61template <
typename Scalar>
62struct functor_traits<scalar_bessel_i0e_op<Scalar> > {
66 Cost = 20 * NumTraits<Scalar>::MulCost + 40 * NumTraits<Scalar>::AddCost,
67 PacketAccess = packet_traits<Scalar>::HasBessel
76template <
typename Scalar>
77struct scalar_bessel_i1_op {
78 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
79 using numext::bessel_i1;
82 typedef typename packet_traits<Scalar>::type Packet;
83 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_i1(x); }
85template <
typename Scalar>
86struct functor_traits<scalar_bessel_i1_op<Scalar> > {
91 Cost = 28 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
92 PacketAccess = packet_traits<Scalar>::HasBessel
101template <
typename Scalar>
102struct scalar_bessel_i1e_op {
103 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
104 using numext::bessel_i1e;
107 typedef typename packet_traits<Scalar>::type Packet;
108 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_i1e(x); }
110template <
typename Scalar>
111struct functor_traits<scalar_bessel_i1e_op<Scalar> > {
115 Cost = 20 * NumTraits<Scalar>::MulCost + 40 * NumTraits<Scalar>::AddCost,
116 PacketAccess = packet_traits<Scalar>::HasBessel
125template <
typename Scalar>
126struct scalar_bessel_j0_op {
127 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
128 using numext::bessel_j0;
131 typedef typename packet_traits<Scalar>::type Packet;
132 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_j0(x); }
134template <
typename Scalar>
135struct functor_traits<scalar_bessel_j0_op<Scalar> > {
140 Cost = 63 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
141 PacketAccess = packet_traits<Scalar>::HasBessel
150template <
typename Scalar>
151struct scalar_bessel_y0_op {
152 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
153 using numext::bessel_y0;
156 typedef typename packet_traits<Scalar>::type Packet;
157 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_y0(x); }
159template <
typename Scalar>
160struct functor_traits<scalar_bessel_y0_op<Scalar> > {
165 Cost = 126 * NumTraits<Scalar>::MulCost + 96 * NumTraits<Scalar>::AddCost,
166 PacketAccess = packet_traits<Scalar>::HasBessel
175template <
typename Scalar>
176struct scalar_bessel_j1_op {
177 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
178 using numext::bessel_j1;
181 typedef typename packet_traits<Scalar>::type Packet;
182 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_j1(x); }
184template <
typename Scalar>
185struct functor_traits<scalar_bessel_j1_op<Scalar> > {
190 Cost = 63 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
191 PacketAccess = packet_traits<Scalar>::HasBessel
200template <
typename Scalar>
201struct scalar_bessel_y1_op {
202 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
203 using numext::bessel_y1;
206 typedef typename packet_traits<Scalar>::type Packet;
207 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_y1(x); }
209template <
typename Scalar>
210struct functor_traits<scalar_bessel_y1_op<Scalar> > {
215 Cost = 126 * NumTraits<Scalar>::MulCost + 96 * NumTraits<Scalar>::AddCost,
216 PacketAccess = packet_traits<Scalar>::HasBessel
225template <
typename Scalar>
226struct scalar_bessel_k0_op {
227 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
228 using numext::bessel_k0;
231 typedef typename packet_traits<Scalar>::type Packet;
232 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_k0(x); }
234template <
typename Scalar>
235struct functor_traits<scalar_bessel_k0_op<Scalar> > {
240 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
241 PacketAccess = packet_traits<Scalar>::HasBessel
250template <
typename Scalar>
251struct scalar_bessel_k0e_op {
252 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
253 using numext::bessel_k0e;
256 typedef typename packet_traits<Scalar>::type Packet;
257 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_k0e(x); }
259template <
typename Scalar>
260struct functor_traits<scalar_bessel_k0e_op<Scalar> > {
265 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
266 PacketAccess = packet_traits<Scalar>::HasBessel
275template <
typename Scalar>
276struct scalar_bessel_k1_op {
277 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
278 using numext::bessel_k1;
281 typedef typename packet_traits<Scalar>::type Packet;
282 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_k1(x); }
284template <
typename Scalar>
285struct functor_traits<scalar_bessel_k1_op<Scalar> > {
290 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
291 PacketAccess = packet_traits<Scalar>::HasBessel
300template <
typename Scalar>
301struct scalar_bessel_k1e_op {
302 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
303 using numext::bessel_k1e;
306 typedef typename packet_traits<Scalar>::type Packet;
307 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_k1e(x); }
309template <
typename Scalar>
310struct functor_traits<scalar_bessel_k1e_op<Scalar> > {
315 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
316 PacketAccess = packet_traits<Scalar>::HasBessel
Namespace containing all symbols from the Eigen library.
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_y1_op< typename Derived::Scalar >, const Derived > bessel_y1(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:270
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_k0e_op< typename Derived::Scalar >, const Derived > bessel_k0e(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:143
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_k0_op< typename Derived::Scalar >, const Derived > bessel_k0(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:121
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_k1_op< typename Derived::Scalar >, const Derived > bessel_k1(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:164
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_i1_op< typename Derived::Scalar >, const Derived > bessel_i1(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:78
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_i0e_op< typename Derived::Scalar >, const Derived > bessel_i0e(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:57
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_i1e_op< typename Derived::Scalar >, const Derived > bessel_i1e(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:100
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_j1_op< typename Derived::Scalar >, const Derived > bessel_j1(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:249
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_y0_op< typename Derived::Scalar >, const Derived > bessel_y0(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:228
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_i0_op< typename Derived::Scalar >, const Derived > bessel_i0(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:35
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_k1e_op< typename Derived::Scalar >, const Derived > bessel_k1e(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:186
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_j0_op< typename Derived::Scalar >, const Derived > bessel_j0(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:207