blob: 8930d1a3cb6a472e7a612c8d25aded848560d09c [file] [log] [blame]
Austin Schuhc55b0172022-02-20 17:52:35 -08001// This file is part of Eigen, a lightweight C++ template library
2// for linear algebra.
3//
4// This Source Code Form is subject to the terms of the Mozilla
5// Public License v. 2.0. If a copy of the MPL was not distributed
6// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
8#ifndef EIGEN_BESSELFUNCTIONS_HALF_H
9#define EIGEN_BESSELFUNCTIONS_HALF_H
10
11namespace Eigen {
12namespace numext {
13
14#if EIGEN_HAS_C99_MATH
15template <>
16EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_i0(const Eigen::half& x) {
17 return Eigen::half(Eigen::numext::bessel_i0(static_cast<float>(x)));
18}
19template <>
20EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_i0e(const Eigen::half& x) {
21 return Eigen::half(Eigen::numext::bessel_i0e(static_cast<float>(x)));
22}
23template <>
24EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_i1(const Eigen::half& x) {
25 return Eigen::half(Eigen::numext::bessel_i1(static_cast<float>(x)));
26}
27template <>
28EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_i1e(const Eigen::half& x) {
29 return Eigen::half(Eigen::numext::bessel_i1e(static_cast<float>(x)));
30}
31EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_j0(const Eigen::half& x) {
32 return Eigen::half(Eigen::numext::bessel_j0(static_cast<float>(x)));
33}
34template <>
35EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_j1(const Eigen::half& x) {
36 return Eigen::half(Eigen::numext::bessel_j1(static_cast<float>(x)));
37}
38template <>
39EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_y0(const Eigen::half& x) {
40 return Eigen::half(Eigen::numext::bessel_y0(static_cast<float>(x)));
41}
42template <>
43EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_y1(const Eigen::half& x) {
44 return Eigen::half(Eigen::numext::bessel_y1(static_cast<float>(x)));
45}
46EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_k0(const Eigen::half& x) {
47 return Eigen::half(Eigen::numext::bessel_k0(static_cast<float>(x)));
48}
49template <>
50EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_k0e(const Eigen::half& x) {
51 return Eigen::half(Eigen::numext::bessel_k0e(static_cast<float>(x)));
52}
53template <>
54EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_k1(const Eigen::half& x) {
55 return Eigen::half(Eigen::numext::bessel_k1(static_cast<float>(x)));
56}
57template <>
58EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half bessel_k1e(const Eigen::half& x) {
59 return Eigen::half(Eigen::numext::bessel_k1e(static_cast<float>(x)));
60}
61#endif
62
63} // end namespace numext
64} // end namespace Eigen
65
66#endif // EIGEN_BESSELFUNCTIONS_HALF_H