Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:57:08

0001 // This file is part of Eigen, a lightweight C++ template library
0002 // for linear algebra.
0003 //
0004 // This Source Code Form is subject to the terms of the Mozilla
0005 // Public License v. 2.0. If a copy of the MPL was not distributed
0006 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
0007 
0008 #ifndef EIGEN_BESSELFUNCTIONS_BFLOAT16_H
0009 #define EIGEN_BESSELFUNCTIONS_BFLOAT16_H
0010 
0011 namespace Eigen {
0012 namespace numext {
0013 
0014 #if EIGEN_HAS_C99_MATH
0015 template <>
0016 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_i0(const Eigen::bfloat16& x) {
0017   return Eigen::bfloat16(Eigen::numext::bessel_i0(static_cast<float>(x)));
0018 }
0019 template <>
0020 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_i0e(const Eigen::bfloat16& x) {
0021   return Eigen::bfloat16(Eigen::numext::bessel_i0e(static_cast<float>(x)));
0022 }
0023 template <>
0024 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_i1(const Eigen::bfloat16& x) {
0025   return Eigen::bfloat16(Eigen::numext::bessel_i1(static_cast<float>(x)));
0026 }
0027 template <>
0028 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_i1e(const Eigen::bfloat16& x) {
0029   return Eigen::bfloat16(Eigen::numext::bessel_i1e(static_cast<float>(x)));
0030 }
0031 template <>
0032 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_j0(const Eigen::bfloat16& x) {
0033   return Eigen::bfloat16(Eigen::numext::bessel_j0(static_cast<float>(x)));
0034 }
0035 template <>
0036 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_j1(const Eigen::bfloat16& x) {
0037   return Eigen::bfloat16(Eigen::numext::bessel_j1(static_cast<float>(x)));
0038 }
0039 template <>
0040 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_y0(const Eigen::bfloat16& x) {
0041   return Eigen::bfloat16(Eigen::numext::bessel_y0(static_cast<float>(x)));
0042 }
0043 template <>
0044 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_y1(const Eigen::bfloat16& x) {
0045   return Eigen::bfloat16(Eigen::numext::bessel_y1(static_cast<float>(x)));
0046 }
0047 template <>
0048 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_k0(const Eigen::bfloat16& x) {
0049   return Eigen::bfloat16(Eigen::numext::bessel_k0(static_cast<float>(x)));
0050 }
0051 template <>
0052 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_k0e(const Eigen::bfloat16& x) {
0053   return Eigen::bfloat16(Eigen::numext::bessel_k0e(static_cast<float>(x)));
0054 }
0055 template <>
0056 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_k1(const Eigen::bfloat16& x) {
0057   return Eigen::bfloat16(Eigen::numext::bessel_k1(static_cast<float>(x)));
0058 }
0059 template <>
0060 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::bfloat16 bessel_k1e(const Eigen::bfloat16& x) {
0061   return Eigen::bfloat16(Eigen::numext::bessel_k1e(static_cast<float>(x)));
0062 }
0063 #endif
0064 
0065 }  // end namespace numext
0066 }  // end namespace Eigen
0067 
0068 #endif  // EIGEN_BESSELFUNCTIONS_BFLOAT16_H