30 #ifndef _GLIBCXX_BITS_SPECFUN_H
31 #define _GLIBCXX_BITS_SPECFUN_H 1
33 #pragma GCC visibility push(default)
37 #define __STDCPP_MATH_SPEC_FUNCS__ 201003L
39 #define __cpp_lib_math_special_functions 201603L
41 #if __cplusplus <= 201403L && __STDCPP_WANT_MATH_SPEC_FUNCS__ == 0
42 # error include <cmath> and define __STDCPP_WANT_MATH_SPEC_FUNCS__
49 #include <tr1/gamma.tcc>
50 #include <tr1/bessel_function.tcc>
51 #include <tr1/beta_function.tcc>
52 #include <tr1/ell_integral.tcc>
53 #include <tr1/exp_integral.tcc>
54 #include <tr1/hypergeometric.tcc>
55 #include <tr1/legendre_function.tcc>
56 #include <tr1/modified_bessel_func.tcc>
57 #include <tr1/poly_hermite.tcc>
58 #include <tr1/poly_laguerre.tcc>
59 #include <tr1/riemann_zeta.tcc>
61 namespace std _GLIBCXX_VISIBILITY(default)
63 _GLIBCXX_BEGIN_NAMESPACE_VERSION
207 {
return __detail::__assoc_laguerre<float>(__n, __m, __x); }
217 {
return __detail::__assoc_laguerre<long double>(__n, __m, __x); }
250 template<
typename _Tp>
251 inline typename __gnu_cxx::__promote<_Tp>::__type
254 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
255 return __detail::__assoc_laguerre<__type>(__n, __m, __x);
268 {
return __detail::__assoc_legendre_p<float>(__l, __m, __x); }
277 {
return __detail::__assoc_legendre_p<long double>(__l, __m, __x); }
296 template<
typename _Tp>
297 inline typename __gnu_cxx::__promote<_Tp>::__type
300 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
301 return __detail::__assoc_legendre_p<__type>(__l, __m, __x);
313 {
return __detail::__beta<float>(__a, __b); }
322 betal(
long double __a,
long double __b)
323 {
return __detail::__beta<long double>(__a, __b); }
341 template<
typename _Tpa,
typename _Tpb>
342 inline typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type
345 typedef typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type __type;
346 return __detail::__beta<__type>(__a, __b);
359 {
return __detail::__comp_ellint_1<float>(__k); }
369 {
return __detail::__comp_ellint_1<long double>(__k); }
389 template<
typename _Tp>
390 inline typename __gnu_cxx::__promote<_Tp>::__type
393 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
394 return __detail::__comp_ellint_1<__type>(__k);
407 {
return __detail::__comp_ellint_2<float>(__k); }
417 {
return __detail::__comp_ellint_2<long double>(__k); }
436 template<
typename _Tp>
437 inline typename __gnu_cxx::__promote<_Tp>::__type
440 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
441 return __detail::__comp_ellint_2<__type>(__k);
454 {
return __detail::__comp_ellint_3<float>(__k, __nu); }
464 {
return __detail::__comp_ellint_3<long double>(__k, __nu); }
487 template<
typename _Tp,
typename _Tpn>
488 inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type
491 typedef typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type __type;
492 return __detail::__comp_ellint_3<__type>(__k, __nu);
505 {
return __detail::__cyl_bessel_i<float>(__nu, __x); }
515 {
return __detail::__cyl_bessel_i<long double>(__nu, __x); }
533 template<
typename _Tpnu,
typename _Tp>
534 inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
537 typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
538 return __detail::__cyl_bessel_i<__type>(__nu, __x);
551 {
return __detail::__cyl_bessel_j<float>(__nu, __x); }
561 {
return __detail::__cyl_bessel_j<long double>(__nu, __x); }
579 template<
typename _Tpnu,
typename _Tp>
580 inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
583 typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
584 return __detail::__cyl_bessel_j<__type>(__nu, __x);
597 {
return __detail::__cyl_bessel_k<float>(__nu, __x); }
607 {
return __detail::__cyl_bessel_k<long double>(__nu, __x); }
631 template<
typename _Tpnu,
typename _Tp>
632 inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
635 typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
636 return __detail::__cyl_bessel_k<__type>(__nu, __x);
649 {
return __detail::__cyl_neumann_n<float>(__nu, __x); }
659 {
return __detail::__cyl_neumann_n<long double>(__nu, __x); }
679 template<
typename _Tpnu,
typename _Tp>
680 inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
683 typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
684 return __detail::__cyl_neumann_n<__type>(__nu, __x);
697 {
return __detail::__ellint_1<float>(__k, __phi); }
707 {
return __detail::__ellint_1<long double>(__k, __phi); }
727 template<
typename _Tp,
typename _Tpp>
728 inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
731 typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type;
732 return __detail::__ellint_1<__type>(__k, __phi);
745 {
return __detail::__ellint_2<float>(__k, __phi); }
755 {
return __detail::__ellint_2<long double>(__k, __phi); }
775 template<
typename _Tp,
typename _Tpp>
776 inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
779 typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type;
780 return __detail::__ellint_2<__type>(__k, __phi);
793 {
return __detail::__ellint_3<float>(__k, __nu, __phi); }
802 ellint_3l(
long double __k,
long double __nu,
long double __phi)
803 {
return __detail::__ellint_3<long double>(__k, __nu, __phi); }
828 template<
typename _Tp,
typename _Tpn,
typename _Tpp>
829 inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type
832 typedef typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type __type;
833 return __detail::__ellint_3<__type>(__k, __nu, __phi);
845 {
return __detail::__expint<float>(__x); }
855 {
return __detail::__expint<long double>(__x); }
868 template<
typename _Tp>
869 inline typename __gnu_cxx::__promote<_Tp>::__type
872 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
873 return __detail::__expint<__type>(__x);
886 {
return __detail::__poly_hermite<float>(__n, __x); }
896 {
return __detail::__poly_hermite<long double>(__n, __x); }
916 template<
typename _Tp>
917 inline typename __gnu_cxx::__promote<_Tp>::__type
920 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
921 return __detail::__poly_hermite<__type>(__n, __x);
934 {
return __detail::__laguerre<float>(__n, __x); }
944 {
return __detail::__laguerre<long double>(__n, __x); }
960 template<
typename _Tp>
961 inline typename __gnu_cxx::__promote<_Tp>::__type
964 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
965 return __detail::__laguerre<__type>(__n, __x);
978 {
return __detail::__poly_legendre_p<float>(__l, __x); }
988 {
return __detail::__poly_legendre_p<long double>(__l, __x); }
1005 template<
typename _Tp>
1006 inline typename __gnu_cxx::__promote<_Tp>::__type
1009 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1010 return __detail::__poly_legendre_p<__type>(__l, __x);
1023 {
return __detail::__riemann_zeta<float>(__s); }
1033 {
return __detail::__riemann_zeta<long double>(__s); }
1056 template<
typename _Tp>
1057 inline typename __gnu_cxx::__promote<_Tp>::__type
1060 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1061 return __detail::__riemann_zeta<__type>(__s);
1074 {
return __detail::__sph_bessel<float>(__n, __x); }
1084 {
return __detail::__sph_bessel<long double>(__n, __x); }
1100 template<
typename _Tp>
1101 inline typename __gnu_cxx::__promote<_Tp>::__type
1104 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1105 return __detail::__sph_bessel<__type>(__n, __x);
1118 {
return __detail::__sph_legendre<float>(__l, __m, __theta); }
1129 {
return __detail::__sph_legendre<long double>(__l, __m, __theta); }
1147 template<
typename _Tp>
1148 inline typename __gnu_cxx::__promote<_Tp>::__type
1151 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1152 return __detail::__sph_legendre<__type>(__l, __m, __theta);
1165 {
return __detail::__sph_neumann<float>(__n, __x); }
1175 {
return __detail::__sph_neumann<long double>(__n, __x); }
1191 template<
typename _Tp>
1192 inline typename __gnu_cxx::__promote<_Tp>::__type
1195 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1196 return __detail::__sph_neumann<__type>(__n, __x);
1201 _GLIBCXX_END_NAMESPACE_VERSION
1204 #ifndef __STRICT_ANSI__
1205 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
1207 _GLIBCXX_BEGIN_NAMESPACE_VERSION
1221 float __Ai, __Bi, __Aip, __Bip;
1222 std::__detail::__airy<float>(__x, __Ai, __Bi, __Aip, __Bip);
1232 long double __Ai, __Bi, __Aip, __Bip;
1233 std::__detail::__airy<long double>(__x, __Ai, __Bi, __Aip, __Bip);
1240 template<
typename _Tp>
1241 inline typename __gnu_cxx::__promote<_Tp>::__type
1244 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1245 __type __Ai, __Bi, __Aip, __Bip;
1246 std::__detail::__airy<__type>(__x, __Ai, __Bi, __Aip, __Bip);
1256 float __Ai, __Bi, __Aip, __Bip;
1257 std::__detail::__airy<float>(__x, __Ai, __Bi, __Aip, __Bip);
1267 long double __Ai, __Bi, __Aip, __Bip;
1268 std::__detail::__airy<long double>(__x, __Ai, __Bi, __Aip, __Bip);
1275 template<
typename _Tp>
1276 inline typename __gnu_cxx::__promote<_Tp>::__type
1279 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1280 __type __Ai, __Bi, __Aip, __Bip;
1281 std::__detail::__airy<__type>(__x, __Ai, __Bi, __Aip, __Bip);
1296 {
return std::__detail::__conf_hyperg<float>(__a, __c, __x); }
1307 {
return std::__detail::__conf_hyperg<long double>(__a, __c, __x); }
1325 template<
typename _Tpa,
typename _Tpc,
typename _Tp>
1326 inline typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type
1329 typedef typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type __type;
1330 return std::__detail::__conf_hyperg<__type>(__a, __c, __x);
1343 hypergf(
float __a,
float __b,
float __c,
float __x)
1344 {
return std::__detail::__hyperg<float>(__a, __b, __c, __x); }
1354 hypergl(
long double __a,
long double __b,
long double __c,
long double __x)
1355 {
return std::__detail::__hyperg<long double>(__a, __b, __c, __x); }
1374 template<
typename _Tpa,
typename _Tpb,
typename _Tpc,
typename _Tp>
1375 inline typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type
1376 hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x)
1378 typedef typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>
1380 return std::__detail::__hyperg<__type>(__a, __b, __c, __x);
1384 _GLIBCXX_END_NAMESPACE_VERSION
1386 #endif // __STRICT_ANSI__
1388 #pragma GCC visibility pop
1390 #endif // _GLIBCXX_BITS_SPECFUN_H