11 #ifndef EIGEN_BESSELFUNCTIONS_FUNCTORS_H 12 #define EIGEN_BESSELFUNCTIONS_FUNCTORS_H 15 #include "./InternalHeaderCheck.h" 26 template <
typename Scalar>
27 struct 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); }
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_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); }
60 template <
typename Scalar>
61 struct functor_traits<scalar_bessel_i0e_op<Scalar> > {
65 Cost = 20 * NumTraits<Scalar>::MulCost + 40 * NumTraits<Scalar>::AddCost,
66 PacketAccess = packet_traits<Scalar>::HasBessel
75 template <
typename Scalar>
76 struct 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); }
84 template <
typename Scalar>
85 struct functor_traits<scalar_bessel_i1_op<Scalar> > {
90 Cost = 28 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
91 PacketAccess = packet_traits<Scalar>::HasBessel
100 template <
typename Scalar>
101 struct 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); }
109 template <
typename Scalar>
110 struct functor_traits<scalar_bessel_i1e_op<Scalar> > {
114 Cost = 20 * NumTraits<Scalar>::MulCost + 40 * NumTraits<Scalar>::AddCost,
115 PacketAccess = packet_traits<Scalar>::HasBessel
124 template <
typename Scalar>
125 struct 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); }
133 template <
typename Scalar>
134 struct functor_traits<scalar_bessel_j0_op<Scalar> > {
139 Cost = 63 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
140 PacketAccess = packet_traits<Scalar>::HasBessel
149 template <
typename Scalar>
150 struct 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); }
158 template <
typename Scalar>
159 struct functor_traits<scalar_bessel_y0_op<Scalar> > {
164 Cost = 126 * NumTraits<Scalar>::MulCost + 96 * NumTraits<Scalar>::AddCost,
165 PacketAccess = packet_traits<Scalar>::HasBessel
174 template <
typename Scalar>
175 struct 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); }
183 template <
typename Scalar>
184 struct functor_traits<scalar_bessel_j1_op<Scalar> > {
189 Cost = 63 * NumTraits<Scalar>::MulCost + 48 * NumTraits<Scalar>::AddCost,
190 PacketAccess = packet_traits<Scalar>::HasBessel
199 template <
typename Scalar>
200 struct 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); }
208 template <
typename Scalar>
209 struct functor_traits<scalar_bessel_y1_op<Scalar> > {
214 Cost = 126 * NumTraits<Scalar>::MulCost + 96 * NumTraits<Scalar>::AddCost,
215 PacketAccess = packet_traits<Scalar>::HasBessel
224 template <
typename Scalar>
225 struct 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); }
233 template <
typename Scalar>
234 struct functor_traits<scalar_bessel_k0_op<Scalar> > {
239 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
240 PacketAccess = packet_traits<Scalar>::HasBessel
249 template <
typename Scalar>
250 struct 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); }
258 template <
typename Scalar>
259 struct functor_traits<scalar_bessel_k0e_op<Scalar> > {
264 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
265 PacketAccess = packet_traits<Scalar>::HasBessel
274 template <
typename Scalar>
275 struct 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); }
283 template <
typename Scalar>
284 struct functor_traits<scalar_bessel_k1_op<Scalar> > {
289 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
290 PacketAccess = packet_traits<Scalar>::HasBessel
299 template <
typename Scalar>
300 struct 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); }
308 template <
typename Scalar>
309 struct functor_traits<scalar_bessel_k1e_op<Scalar> > {
314 Cost = 68 * NumTraits<Scalar>::MulCost + 88 * NumTraits<Scalar>::AddCost,
315 PacketAccess = packet_traits<Scalar>::HasBessel
323 #endif // EIGEN_BESSELFUNCTIONS_FUNCTORS_H 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_j0_op< typename Derived::Scalar >, const Derived > bessel_j0(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:206
Namespace containing all symbols from the Eigen library.
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_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_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_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_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_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_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_i1_op< typename Derived::Scalar >, const Derived > bessel_i1(const Eigen::ArrayBase< Derived > &x)
Definition: BesselFunctionsArrayAPI.h:77