30 #ifndef _GLIBCXX_BITS_SPECFUN_H
31 #define _GLIBCXX_BITS_SPECFUN_H 1
35 #define __STDCPP_MATH_SPEC_FUNCS__ 201003L
37 #define __cpp_lib_math_special_functions 201603L
39 #if __cplusplus <= 201403L && __STDCPP_WANT_MATH_SPEC_FUNCS__ == 0
40 # error include <cmath> and define __STDCPP_WANT_MATH_SPEC_FUNCS__
47 #include <tr1/gamma.tcc>
48 #include <tr1/bessel_function.tcc>
49 #include <tr1/beta_function.tcc>
50 #include <tr1/ell_integral.tcc>
51 #include <tr1/exp_integral.tcc>
52 #include <tr1/hypergeometric.tcc>
53 #include <tr1/legendre_function.tcc>
54 #include <tr1/modified_bessel_func.tcc>
55 #include <tr1/poly_hermite.tcc>
56 #include <tr1/poly_laguerre.tcc>
57 #include <tr1/riemann_zeta.tcc>
59 namespace std _GLIBCXX_VISIBILITY(default)
61 _GLIBCXX_BEGIN_NAMESPACE_VERSION
205 {
return __detail::__assoc_laguerre<float>(__n, __m, __x); }
215 {
return __detail::__assoc_laguerre<long double>(__n, __m, __x); }
248 template<
typename _Tp>
249 inline typename __gnu_cxx::__promote<_Tp>::__type
252 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
253 return __detail::__assoc_laguerre<__type>(__n, __m, __x);
266 {
return __detail::__assoc_legendre_p<float>(__l, __m, __x); }
275 {
return __detail::__assoc_legendre_p<long double>(__l, __m, __x); }
294 template<
typename _Tp>
295 inline typename __gnu_cxx::__promote<_Tp>::__type
298 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
299 return __detail::__assoc_legendre_p<__type>(__l, __m, __x);
311 {
return __detail::__beta<float>(__a, __b); }
320 betal(
long double __a,
long double __b)
321 {
return __detail::__beta<long double>(__a, __b); }
339 template<
typename _Tpa,
typename _Tpb>
340 inline typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type
343 typedef typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type __type;
344 return __detail::__beta<__type>(__a, __b);
357 {
return __detail::__comp_ellint_1<float>(__k); }
367 {
return __detail::__comp_ellint_1<long double>(__k); }
387 template<
typename _Tp>
388 inline typename __gnu_cxx::__promote<_Tp>::__type
391 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
392 return __detail::__comp_ellint_1<__type>(__k);
405 {
return __detail::__comp_ellint_2<float>(__k); }
415 {
return __detail::__comp_ellint_2<long double>(__k); }
434 template<
typename _Tp>
435 inline typename __gnu_cxx::__promote<_Tp>::__type
438 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
439 return __detail::__comp_ellint_2<__type>(__k);
452 {
return __detail::__comp_ellint_3<float>(__k, __nu); }
462 {
return __detail::__comp_ellint_3<long double>(__k, __nu); }
485 template<
typename _Tp,
typename _Tpn>
486 inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type
489 typedef typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type __type;
490 return __detail::__comp_ellint_3<__type>(__k, __nu);
503 {
return __detail::__cyl_bessel_i<float>(__nu, __x); }
513 {
return __detail::__cyl_bessel_i<long double>(__nu, __x); }
531 template<
typename _Tpnu,
typename _Tp>
532 inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
535 typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
536 return __detail::__cyl_bessel_i<__type>(__nu, __x);
549 {
return __detail::__cyl_bessel_j<float>(__nu, __x); }
559 {
return __detail::__cyl_bessel_j<long double>(__nu, __x); }
577 template<
typename _Tpnu,
typename _Tp>
578 inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
581 typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
582 return __detail::__cyl_bessel_j<__type>(__nu, __x);
595 {
return __detail::__cyl_bessel_k<float>(__nu, __x); }
605 {
return __detail::__cyl_bessel_k<long double>(__nu, __x); }
629 template<
typename _Tpnu,
typename _Tp>
630 inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
633 typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
634 return __detail::__cyl_bessel_k<__type>(__nu, __x);
647 {
return __detail::__cyl_neumann_n<float>(__nu, __x); }
657 {
return __detail::__cyl_neumann_n<long double>(__nu, __x); }
677 template<
typename _Tpnu,
typename _Tp>
678 inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
681 typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
682 return __detail::__cyl_neumann_n<__type>(__nu, __x);
695 {
return __detail::__ellint_1<float>(__k, __phi); }
705 {
return __detail::__ellint_1<long double>(__k, __phi); }
725 template<
typename _Tp,
typename _Tpp>
726 inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
729 typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type;
730 return __detail::__ellint_1<__type>(__k, __phi);
743 {
return __detail::__ellint_2<float>(__k, __phi); }
753 {
return __detail::__ellint_2<long double>(__k, __phi); }
773 template<
typename _Tp,
typename _Tpp>
774 inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
777 typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type;
778 return __detail::__ellint_2<__type>(__k, __phi);
791 {
return __detail::__ellint_3<float>(__k, __nu, __phi); }
800 ellint_3l(
long double __k,
long double __nu,
long double __phi)
801 {
return __detail::__ellint_3<long double>(__k, __nu, __phi); }
826 template<
typename _Tp,
typename _Tpn,
typename _Tpp>
827 inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type
830 typedef typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type __type;
831 return __detail::__ellint_3<__type>(__k, __nu, __phi);
843 {
return __detail::__expint<float>(__x); }
853 {
return __detail::__expint<long double>(__x); }
866 template<
typename _Tp>
867 inline typename __gnu_cxx::__promote<_Tp>::__type
870 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
871 return __detail::__expint<__type>(__x);
884 {
return __detail::__poly_hermite<float>(__n, __x); }
894 {
return __detail::__poly_hermite<long double>(__n, __x); }
914 template<
typename _Tp>
915 inline typename __gnu_cxx::__promote<_Tp>::__type
918 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
919 return __detail::__poly_hermite<__type>(__n, __x);
932 {
return __detail::__laguerre<float>(__n, __x); }
942 {
return __detail::__laguerre<long double>(__n, __x); }
958 template<
typename _Tp>
959 inline typename __gnu_cxx::__promote<_Tp>::__type
962 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
963 return __detail::__laguerre<__type>(__n, __x);
976 {
return __detail::__poly_legendre_p<float>(__l, __x); }
986 {
return __detail::__poly_legendre_p<long double>(__l, __x); }
1003 template<
typename _Tp>
1004 inline typename __gnu_cxx::__promote<_Tp>::__type
1007 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1008 return __detail::__poly_legendre_p<__type>(__l, __x);
1021 {
return __detail::__riemann_zeta<float>(__s); }
1031 {
return __detail::__riemann_zeta<long double>(__s); }
1054 template<
typename _Tp>
1055 inline typename __gnu_cxx::__promote<_Tp>::__type
1058 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1059 return __detail::__riemann_zeta<__type>(__s);
1072 {
return __detail::__sph_bessel<float>(__n, __x); }
1082 {
return __detail::__sph_bessel<long double>(__n, __x); }
1098 template<
typename _Tp>
1099 inline typename __gnu_cxx::__promote<_Tp>::__type
1102 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1103 return __detail::__sph_bessel<__type>(__n, __x);
1116 {
return __detail::__sph_legendre<float>(__l, __m, __theta); }
1127 {
return __detail::__sph_legendre<long double>(__l, __m, __theta); }
1145 template<
typename _Tp>
1146 inline typename __gnu_cxx::__promote<_Tp>::__type
1149 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1150 return __detail::__sph_legendre<__type>(__l, __m, __theta);
1163 {
return __detail::__sph_neumann<float>(__n, __x); }
1173 {
return __detail::__sph_neumann<long double>(__n, __x); }
1189 template<
typename _Tp>
1190 inline typename __gnu_cxx::__promote<_Tp>::__type
1193 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1194 return __detail::__sph_neumann<__type>(__n, __x);
1199 _GLIBCXX_END_NAMESPACE_VERSION
1202 #ifndef __STRICT_ANSI__
1203 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
1205 _GLIBCXX_BEGIN_NAMESPACE_VERSION
1219 float __Ai, __Bi, __Aip, __Bip;
1220 std::__detail::__airy<float>(__x, __Ai, __Bi, __Aip, __Bip);
1230 long double __Ai, __Bi, __Aip, __Bip;
1231 std::__detail::__airy<long double>(__x, __Ai, __Bi, __Aip, __Bip);
1238 template<
typename _Tp>
1239 inline typename __gnu_cxx::__promote<_Tp>::__type
1242 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1243 __type __Ai, __Bi, __Aip, __Bip;
1244 std::__detail::__airy<__type>(__x, __Ai, __Bi, __Aip, __Bip);
1254 float __Ai, __Bi, __Aip, __Bip;
1255 std::__detail::__airy<float>(__x, __Ai, __Bi, __Aip, __Bip);
1265 long double __Ai, __Bi, __Aip, __Bip;
1266 std::__detail::__airy<long double>(__x, __Ai, __Bi, __Aip, __Bip);
1273 template<
typename _Tp>
1274 inline typename __gnu_cxx::__promote<_Tp>::__type
1277 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1278 __type __Ai, __Bi, __Aip, __Bip;
1279 std::__detail::__airy<__type>(__x, __Ai, __Bi, __Aip, __Bip);
1294 {
return std::__detail::__conf_hyperg<float>(__a, __c, __x); }
1305 {
return std::__detail::__conf_hyperg<long double>(__a, __c, __x); }
1323 template<
typename _Tpa,
typename _Tpc,
typename _Tp>
1324 inline typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type
1327 typedef typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type __type;
1328 return std::__detail::__conf_hyperg<__type>(__a, __c, __x);
1341 hypergf(
float __a,
float __b,
float __c,
float __x)
1342 {
return std::__detail::__hyperg<float>(__a, __b, __c, __x); }
1352 hypergl(
long double __a,
long double __b,
long double __c,
long double __x)
1353 {
return std::__detail::__hyperg<long double>(__a, __b, __c, __x); }
1372 template<
typename _Tpa,
typename _Tpb,
typename _Tpc,
typename _Tp>
1373 inline typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type
1374 hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x)
1376 typedef typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>
1378 return std::__detail::__hyperg<__type>(__a, __b, __c, __x);
1382 _GLIBCXX_END_NAMESPACE_VERSION
1384 #endif // __STRICT_ANSI__
1386 #endif // _GLIBCXX_BITS_SPECFUN_H