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
1388 #pragma GCC visibility pop
long double conf_hypergl(long double __a, long double __c, long double __x)
long double sph_bessell(unsigned int __n, long double __x)
float betaf(float __a, float __b)
long double expintl(long double __x)
float cyl_bessel_jf(float __nu, float __x)
float ellint_3f(float __k, float __nu, float __phi)
Return the incomplete elliptic integral of the third kind for float argument.
long double legendrel(unsigned int __l, long double __x)
__gnu_cxx::__promote_2< _Tpnu, _Tp >::__type cyl_bessel_i(_Tpnu __nu, _Tp __x)
long double comp_ellint_3l(long double __k, long double __nu)
Return the complete elliptic integral of the third kind for long double modulus k.
__gnu_cxx::__promote< _Tp >::__type sph_neumann(unsigned int __n, _Tp __x)
long double riemann_zetal(long double __s)
float cyl_bessel_kf(float __nu, float __x)
__gnu_cxx::__promote_3< _Tp, _Tpn, _Tpp >::__type ellint_3(_Tp __k, _Tpn __nu, _Tpp __phi)
Return the incomplete elliptic integral of the third kind .
float comp_ellint_2f(float __k)
long double hermitel(unsigned int __n, long double __x)
__gnu_cxx::__promote< _Tp >::__type comp_ellint_2(_Tp __k)
float airy_bif(float __x)
__gnu_cxx::__promote_3< _Tpa, _Tpc, _Tp >::__type conf_hyperg(_Tpa __a, _Tpc __c, _Tp __x)
long double sph_legendrel(unsigned int __l, unsigned int __m, long double __theta)
float ellint_1f(float __k, float __phi)
__gnu_cxx::__promote< _Tp >::__type assoc_legendre(unsigned int __l, unsigned int __m, _Tp __x)
__gnu_cxx::__promote< _Tp >::__type assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x)
float assoc_legendref(unsigned int __l, unsigned int __m, float __x)
long double sph_neumannl(unsigned int __n, long double __x)
__gnu_cxx::__promote< _Tp >::__type airy_ai(_Tp __x)
__gnu_cxx::__promote< _Tp >::__type sph_bessel(unsigned int __n, _Tp __x)
long double comp_ellint_2l(long double __k)
__gnu_cxx::__promote_2< _Tpnu, _Tp >::__type cyl_bessel_j(_Tpnu __nu, _Tp __x)
float sph_besself(unsigned int __n, float __x)
long double assoc_legendrel(unsigned int __l, unsigned int __m, long double __x)
__gnu_cxx::__promote< _Tp >::__type sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta)
long double airy_bil(long double __x)
float ellint_2f(float __k, float __phi)
Return the incomplete elliptic integral of the second kind for float argument.
__gnu_cxx::__promote_2< _Tpnu, _Tp >::__type cyl_neumann(_Tpnu __nu, _Tp __x)
long double ellint_2l(long double __k, long double __phi)
Return the incomplete elliptic integral of the second kind .
float cyl_neumannf(float __nu, float __x)
__gnu_cxx::__promote< _Tp >::__type riemann_zeta(_Tp __s)
__gnu_cxx::__promote_2< _Tpa, _Tpb >::__type beta(_Tpa __a, _Tpb __b)
long double comp_ellint_1l(long double __k)
float comp_ellint_3f(float __k, float __nu)
Return the complete elliptic integral of the third kind for float modulus k.
__gnu_cxx::__promote_2< _Tpnu, _Tp >::__type cyl_bessel_k(_Tpnu __nu, _Tp __x)
float sph_neumannf(unsigned int __n, float __x)
long double ellint_1l(long double __k, long double __phi)
float comp_ellint_1f(float __k)
long double airy_ail(long double __x)
__gnu_cxx::__promote< _Tp >::__type expint(_Tp __x)
long double betal(long double __a, long double __b)
float hermitef(unsigned int __n, float __x)
__gnu_cxx::__promote< _Tp >::__type hermite(unsigned int __n, _Tp __x)
long double hypergl(long double __a, long double __b, long double __c, long double __x)
long double ellint_3l(long double __k, long double __nu, long double __phi)
Return the incomplete elliptic integral of the third kind .
float sph_legendref(unsigned int __l, unsigned int __m, float __theta)
float cyl_bessel_if(float __nu, float __x)
long double laguerrel(unsigned int __n, long double __x)
long double cyl_bessel_il(long double __nu, long double __x)
float conf_hypergf(float __a, float __c, float __x)
long double cyl_bessel_kl(long double __nu, long double __x)
float hypergf(float __a, float __b, float __c, float __x)
__gnu_cxx::__promote< _Tp >::__type comp_ellint_1(_Tp __k)
long double assoc_laguerrel(unsigned int __n, unsigned int __m, long double __x)
__gnu_cxx::__promote< _Tp >::__type laguerre(unsigned int __n, _Tp __x)
__gnu_cxx::__promote< _Tp >::__type airy_bi(_Tp __x)
__gnu_cxx::__promote_2< _Tp, _Tpp >::__type ellint_2(_Tp __k, _Tpp __phi)
__gnu_cxx::__promote_2< _Tp, _Tpn >::__type comp_ellint_3(_Tp __k, _Tpn __nu)
float laguerref(unsigned int __n, float __x)
long double cyl_bessel_jl(long double __nu, long double __x)
__gnu_cxx::__promote_2< _Tp, _Tpp >::__type ellint_1(_Tp __k, _Tpp __phi)
float legendref(unsigned int __l, float __x)
float airy_aif(float __x)
__gnu_cxx::__promote_4< _Tpa, _Tpb, _Tpc, _Tp >::__type hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x)
__gnu_cxx::__promote< _Tp >::__type legendre(unsigned int __l, _Tp __x)
float assoc_laguerref(unsigned int __n, unsigned int __m, float __x)
long double cyl_neumannl(long double __nu, long double __x)
float riemann_zetaf(float __s)
ISO C++ entities toplevel namespace is std.
GNU extensions for public use.