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>
59namespace 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
828 ellint_3(_Tp __k, _Tpn __nu, _Tpp __phi)
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__
1203namespace __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
__gnu_cxx::__promote< _Tp >::__type sph_bessel(unsigned int __n, _Tp __x)
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)
__gnu_cxx::__promote_2< _Tpnu, _Tp >::__type cyl_bessel_k(_Tpnu __nu, _Tp __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)
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.
long double riemann_zetal(long double __s)
float cyl_bessel_kf(float __nu, float __x)
float comp_ellint_2f(float __k)
long double hermitel(unsigned int __n, long double __x)
float airy_bif(float __x)
__gnu_cxx::__promote_2< _Tp, _Tpp >::__type ellint_1(_Tp __k, _Tpp __phi)
long double sph_legendrel(unsigned int __l, unsigned int __m, long double __theta)
float ellint_1f(float __k, float __phi)
__gnu_cxx::__promote_2< _Tpnu, _Tp >::__type cyl_neumann(_Tpnu __nu, _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_4< _Tpa, _Tpb, _Tpc, _Tp >::__type hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x)
long double comp_ellint_2l(long double __k)
__gnu_cxx::__promote< _Tp >::__type airy_bi(_Tp __x)
__gnu_cxx::__promote< _Tp >::__type comp_ellint_2(_Tp __k)
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 legendre(unsigned int __l, _Tp __x)
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.
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_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.
float sph_neumannf(unsigned int __n, float __x)
__gnu_cxx::__promote< _Tp >::__type expint(_Tp __x)
long double ellint_1l(long double __k, long double __phi)
float comp_ellint_1f(float __k)
long double airy_ail(long double __x)
long double betal(long double __a, long double __b)
__gnu_cxx::__promote_3< _Tpa, _Tpc, _Tp >::__type conf_hyperg(_Tpa __a, _Tpc __c, _Tp __x)
float hermitef(unsigned int __n, float __x)
__gnu_cxx::__promote< _Tp >::__type riemann_zeta(_Tp __s)
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)
__gnu_cxx::__promote< _Tp >::__type sph_neumann(unsigned int __n, _Tp __x)
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)
__gnu_cxx::__promote< _Tp >::__type assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x)
float conf_hypergf(float __a, float __c, float __x)
__gnu_cxx::__promote_2< _Tp, _Tpn >::__type comp_ellint_3(_Tp __k, _Tpn __nu)
__gnu_cxx::__promote< _Tp >::__type sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta)
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 airy_ai(_Tp __x)
long double assoc_laguerrel(unsigned int __n, unsigned int __m, long double __x)
__gnu_cxx::__promote< _Tp >::__type hermite(unsigned int __n, _Tp __x)
__gnu_cxx::__promote_2< _Tpnu, _Tp >::__type cyl_bessel_j(_Tpnu __nu, _Tp __x)
float laguerref(unsigned int __n, float __x)
long double cyl_bessel_jl(long double __nu, long double __x)
__gnu_cxx::__promote< _Tp >::__type comp_ellint_1(_Tp __k)
__gnu_cxx::__promote_2< _Tp, _Tpp >::__type ellint_2(_Tp __k, _Tpp __phi)
__gnu_cxx::__promote< _Tp >::__type laguerre(unsigned int __n, _Tp __x)
float legendref(unsigned int __l, float __x)
__gnu_cxx::__promote_2< _Tpnu, _Tp >::__type cyl_bessel_i(_Tpnu __nu, _Tp __x)
float airy_aif(float __x)
__gnu_cxx::__promote< _Tp >::__type assoc_legendre(unsigned int __l, unsigned int __m, _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.