BesselFunctionsHalf.h (2544B)
1 // 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 11 namespace Eigen { 12 namespace numext { 13 14 #if EIGEN_HAS_C99_MATH 15 template <> 16 EIGEN_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 } 19 template <> 20 EIGEN_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 } 23 template <> 24 EIGEN_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 } 27 template <> 28 EIGEN_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 } 31 EIGEN_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 } 34 template <> 35 EIGEN_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 } 38 template <> 39 EIGEN_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 } 42 template <> 43 EIGEN_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 } 46 EIGEN_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 } 49 template <> 50 EIGEN_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 } 53 template <> 54 EIGEN_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 } 57 template <> 58 EIGEN_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