11 #ifndef EIGEN_BESSELFUNCTIONS_FUNCTORS_H 12 #define EIGEN_BESSELFUNCTIONS_FUNCTORS_H 23 template <
typename Scalar>
24 struct scalar_bessel_i0_op {
25 EIGEN_EMPTY_STRUCT_CTOR(scalar_bessel_i0_op)
26 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
27 using numext::bessel_i0;
30 typedef typename packet_traits<Scalar>::type Packet;
31 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
32 return internal::pbessel_i0(x);
35 template <
typename Scalar>
36 struct functor_traits<scalar_bessel_i0_op<Scalar> > {
41 Cost = 28 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
42 PacketAccess = packet_traits<Scalar>::HasBessel
51 template <
typename Scalar>
52 struct scalar_bessel_i0e_op {
53 EIGEN_EMPTY_STRUCT_CTOR(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 {
60 return internal::pbessel_i0e(x);
63 template <
typename Scalar>
64 struct functor_traits<scalar_bessel_i0e_op<Scalar> > {
68 Cost = 20 * NumTraits<Scalar>::MulCost + 40 * NumTraits<Scalar>::AddCost,
69 PacketAccess = packet_traits<Scalar>::HasBessel
78 template <
typename Scalar>
79 struct scalar_bessel_i1_op {
80 EIGEN_EMPTY_STRUCT_CTOR(scalar_bessel_i1_op)
81 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
82 using numext::bessel_i1;
85 typedef typename packet_traits<Scalar>::type Packet;
86 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
87 return internal::pbessel_i1(x);
90 template <
typename Scalar>
91 struct functor_traits<scalar_bessel_i1_op<Scalar> > {
96 Cost = 28 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
97 PacketAccess = packet_traits<Scalar>::HasBessel
106 template <
typename Scalar>
107 struct scalar_bessel_i1e_op {
108 EIGEN_EMPTY_STRUCT_CTOR(scalar_bessel_i1e_op)
109 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
110 using numext::bessel_i1e;
113 typedef typename packet_traits<Scalar>::type Packet;
114 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
115 return internal::pbessel_i1e(x);
118 template <
typename Scalar>
119 struct functor_traits<scalar_bessel_i1e_op<Scalar> > {
123 Cost = 20 * NumTraits<Scalar>::MulCost + 40 * NumTraits<Scalar>::AddCost,
124 PacketAccess = packet_traits<Scalar>::HasBessel
133 template <
typename Scalar>
134 struct scalar_bessel_j0_op {
135 EIGEN_EMPTY_STRUCT_CTOR(scalar_bessel_j0_op)
136 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
137 using numext::bessel_j0;
140 typedef typename packet_traits<Scalar>::type Packet;
141 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
142 return internal::pbessel_j0(x);
145 template <
typename Scalar>
146 struct functor_traits<scalar_bessel_j0_op<Scalar> > {
151 Cost = 63 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
152 PacketAccess = packet_traits<Scalar>::HasBessel
161 template <
typename Scalar>
162 struct scalar_bessel_y0_op {
163 EIGEN_EMPTY_STRUCT_CTOR(scalar_bessel_y0_op)
164 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
165 using numext::bessel_y0;
168 typedef typename packet_traits<Scalar>::type Packet;
169 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
170 return internal::pbessel_y0(x);
173 template <
typename Scalar>
174 struct functor_traits<scalar_bessel_y0_op<Scalar> > {
179 Cost = 126 * NumTraits<Scalar>::MulCost + 96 * NumTraits<Scalar>::AddCost,
180 PacketAccess = packet_traits<Scalar>::HasBessel
189 template <
typename Scalar>
190 struct scalar_bessel_j1_op {
191 EIGEN_EMPTY_STRUCT_CTOR(scalar_bessel_j1_op)
192 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
193 using numext::bessel_j1;
196 typedef typename packet_traits<Scalar>::type Packet;
197 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
198 return internal::pbessel_j1(x);
201 template <
typename Scalar>
202 struct functor_traits<scalar_bessel_j1_op<Scalar> > {
207 Cost = 63 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
208 PacketAccess = packet_traits<Scalar>::HasBessel
217 template <
typename Scalar>
218 struct scalar_bessel_y1_op {
219 EIGEN_EMPTY_STRUCT_CTOR(scalar_bessel_y1_op)
220 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
221 using numext::bessel_y1;
224 typedef typename packet_traits<Scalar>::type Packet;
225 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
226 return internal::pbessel_y1(x);
229 template <
typename Scalar>
230 struct functor_traits<scalar_bessel_y1_op<Scalar> > {
235 Cost = 126 * NumTraits<Scalar>::MulCost + 96 * NumTraits<Scalar>::AddCost,
236 PacketAccess = packet_traits<Scalar>::HasBessel
245 template <
typename Scalar>
246 struct scalar_bessel_k0_op {
247 EIGEN_EMPTY_STRUCT_CTOR(scalar_bessel_k0_op)
248 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
249 using numext::bessel_k0;
252 typedef typename packet_traits<Scalar>::type Packet;
253 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
254 return internal::pbessel_k0(x);
257 template <
typename Scalar>
258 struct functor_traits<scalar_bessel_k0_op<Scalar> > {
263 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
264 PacketAccess = packet_traits<Scalar>::HasBessel
273 template <
typename Scalar>
274 struct scalar_bessel_k0e_op {
275 EIGEN_EMPTY_STRUCT_CTOR(scalar_bessel_k0e_op)
276 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
277 using numext::bessel_k0e;
280 typedef typename packet_traits<Scalar>::type Packet;
281 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
282 return internal::pbessel_k0e(x);
285 template <
typename Scalar>
286 struct functor_traits<scalar_bessel_k0e_op<Scalar> > {
291 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
292 PacketAccess = packet_traits<Scalar>::HasBessel
301 template <
typename Scalar>
302 struct scalar_bessel_k1_op {
303 EIGEN_EMPTY_STRUCT_CTOR(scalar_bessel_k1_op)
304 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
305 using numext::bessel_k1;
308 typedef typename packet_traits<Scalar>::type Packet;
309 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
310 return internal::pbessel_k1(x);
313 template <
typename Scalar>
314 struct functor_traits<scalar_bessel_k1_op<Scalar> > {
319 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
320 PacketAccess = packet_traits<Scalar>::HasBessel
329 template <
typename Scalar>
330 struct scalar_bessel_k1e_op {
331 EIGEN_EMPTY_STRUCT_CTOR(scalar_bessel_k1e_op)
332 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
333 using numext::bessel_k1e;
336 typedef typename packet_traits<Scalar>::type Packet;
337 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
338 return internal::pbessel_k1e(x);
341 template <
typename Scalar>
342 struct functor_traits<scalar_bessel_k1e_op<Scalar> > {
347 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
348 PacketAccess = packet_traits<Scalar>::HasBessel
357 #endif // EIGEN_BESSELFUNCTIONS_FUNCTORS_H const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_y1_op< typename Derived::Scalar >, const Derived > bessel_y1(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:278
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_j0_op< typename Derived::Scalar >, const Derived > bessel_j0(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:212
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_j1_op< typename Derived::Scalar >, const Derived > bessel_j1(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:256
Namespace containing all symbols from the Eigen library.
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_i0_op< typename Derived::Scalar >, const Derived > bessel_i0(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:32
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_i0e_op< typename Derived::Scalar >, const Derived > bessel_i0e(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:55
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_k1e_op< typename Derived::Scalar >, const Derived > bessel_k1e(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:190
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_y0_op< typename Derived::Scalar >, const Derived > bessel_y0(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:234
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_k1_op< typename Derived::Scalar >, const Derived > bessel_k1(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:167
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_k0_op< typename Derived::Scalar >, const Derived > bessel_k0(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:122
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_i1_op< typename Derived::Scalar >, const Derived > bessel_i1(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:77
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_k0e_op< typename Derived::Scalar >, const Derived > bessel_k0e(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:145