11#ifndef EIGEN_BESSELFUNCTIONS_FUNCTORS_H
12#define EIGEN_BESSELFUNCTIONS_FUNCTORS_H
15#include "./InternalHeaderCheck.h"
26template <
typename Scalar>
27struct scalar_bessel_i0_op {
28 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
29 using numext::bessel_i0;
32 typedef typename packet_traits<Scalar>::type Packet;
33 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_i0(x); }
35template <
typename Scalar>
36struct functor_traits<scalar_bessel_i0_op<Scalar> > {
41 Cost = 28 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
42 PacketAccess = packet_traits<Scalar>::HasBessel
51template <
typename Scalar>
52struct scalar_bessel_i0e_op {
53 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
54 using numext::bessel_i0e;
57 typedef typename packet_traits<Scalar>::type Packet;
58 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_i0e(x); }
60template <
typename Scalar>
61struct functor_traits<scalar_bessel_i0e_op<Scalar> > {
65 Cost = 20 * NumTraits<Scalar>::MulCost + 40 * NumTraits<Scalar>::AddCost,
66 PacketAccess = packet_traits<Scalar>::HasBessel
75template <
typename Scalar>
76struct scalar_bessel_i1_op {
77 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
78 using numext::bessel_i1;
81 typedef typename packet_traits<Scalar>::type Packet;
82 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_i1(x); }
84template <
typename Scalar>
85struct functor_traits<scalar_bessel_i1_op<Scalar> > {
90 Cost = 28 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
91 PacketAccess = packet_traits<Scalar>::HasBessel
100template <
typename Scalar>
101struct scalar_bessel_i1e_op {
102 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
103 using numext::bessel_i1e;
106 typedef typename packet_traits<Scalar>::type Packet;
107 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_i1e(x); }
109template <
typename Scalar>
110struct functor_traits<scalar_bessel_i1e_op<Scalar> > {
114 Cost = 20 * NumTraits<Scalar>::MulCost + 40 * NumTraits<Scalar>::AddCost,
115 PacketAccess = packet_traits<Scalar>::HasBessel
124template <
typename Scalar>
125struct scalar_bessel_j0_op {
126 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
127 using numext::bessel_j0;
130 typedef typename packet_traits<Scalar>::type Packet;
131 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_j0(x); }
133template <
typename Scalar>
134struct functor_traits<scalar_bessel_j0_op<Scalar> > {
139 Cost = 63 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
140 PacketAccess = packet_traits<Scalar>::HasBessel
149template <
typename Scalar>
150struct scalar_bessel_y0_op {
151 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
152 using numext::bessel_y0;
155 typedef typename packet_traits<Scalar>::type Packet;
156 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_y0(x); }
158template <
typename Scalar>
159struct functor_traits<scalar_bessel_y0_op<Scalar> > {
164 Cost = 126 * NumTraits<Scalar>::MulCost + 96 * NumTraits<Scalar>::AddCost,
165 PacketAccess = packet_traits<Scalar>::HasBessel
174template <
typename Scalar>
175struct scalar_bessel_j1_op {
176 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
177 using numext::bessel_j1;
180 typedef typename packet_traits<Scalar>::type Packet;
181 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_j1(x); }
183template <
typename Scalar>
184struct functor_traits<scalar_bessel_j1_op<Scalar> > {
189 Cost = 63 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
190 PacketAccess = packet_traits<Scalar>::HasBessel
199template <
typename Scalar>
200struct scalar_bessel_y1_op {
201 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
202 using numext::bessel_y1;
205 typedef typename packet_traits<Scalar>::type Packet;
206 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_y1(x); }
208template <
typename Scalar>
209struct functor_traits<scalar_bessel_y1_op<Scalar> > {
214 Cost = 126 * NumTraits<Scalar>::MulCost + 96 * NumTraits<Scalar>::AddCost,
215 PacketAccess = packet_traits<Scalar>::HasBessel
224template <
typename Scalar>
225struct scalar_bessel_k0_op {
226 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
227 using numext::bessel_k0;
230 typedef typename packet_traits<Scalar>::type Packet;
231 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_k0(x); }
233template <
typename Scalar>
234struct functor_traits<scalar_bessel_k0_op<Scalar> > {
239 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
240 PacketAccess = packet_traits<Scalar>::HasBessel
249template <
typename Scalar>
250struct scalar_bessel_k0e_op {
251 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
252 using numext::bessel_k0e;
255 typedef typename packet_traits<Scalar>::type Packet;
256 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_k0e(x); }
258template <
typename Scalar>
259struct functor_traits<scalar_bessel_k0e_op<Scalar> > {
264 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
265 PacketAccess = packet_traits<Scalar>::HasBessel
274template <
typename Scalar>
275struct scalar_bessel_k1_op {
276 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
277 using numext::bessel_k1;
280 typedef typename packet_traits<Scalar>::type Packet;
281 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_k1(x); }
283template <
typename Scalar>
284struct functor_traits<scalar_bessel_k1_op<Scalar> > {
289 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
290 PacketAccess = packet_traits<Scalar>::HasBessel
299template <
typename Scalar>
300struct scalar_bessel_k1e_op {
301 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator()(
const Scalar& x)
const {
302 using numext::bessel_k1e;
305 typedef typename packet_traits<Scalar>::type Packet;
306 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp(
const Packet& x)
const {
return internal::pbessel_k1e(x); }
308template <
typename Scalar>
309struct functor_traits<scalar_bessel_k1e_op<Scalar> > {
314 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
315 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:269
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_k0e_op< typename Derived::Scalar >, const Derived > bessel_k0e(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:142
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_k0_op< typename Derived::Scalar >, const Derived > bessel_k0(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:120
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_k1_op< typename Derived::Scalar >, const Derived > bessel_k1(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:163
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_i0e_op< typename Derived::Scalar >, const Derived > bessel_i0e(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:56
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_i1e_op< typename Derived::Scalar >, const Derived > bessel_i1e(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:99
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_j1_op< typename Derived::Scalar >, const Derived > bessel_j1(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:248
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_y0_op< typename Derived::Scalar >, const Derived > bessel_y0(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:227
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_i0_op< typename Derived::Scalar >, const Derived > bessel_i0(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:34
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_k1e_op< typename Derived::Scalar >, const Derived > bessel_k1e(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:185
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_bessel_j0_op< typename Derived::Scalar >, const Derived > bessel_j0(const Eigen::ArrayBase< Derived > &x)
Definition BesselFunctionsArrayAPI.h:206