30#ifndef _GLIBCXX_BITS_SPECFUN_H
31#define _GLIBCXX_BITS_SPECFUN_H 1
35#define __glibcxx_want_math_spec_funcs
36#define __glibcxx_want_math_special_functions
39#if __cplusplus <= 201403L && __STDCPP_WANT_MATH_SPEC_FUNCS__ == 0
40# error include <cmath> and define __STDCPP_WANT_MATH_SPEC_FUNCS__
48#include <tr1/gamma.tcc>
49#include <tr1/bessel_function.tcc>
50#include <tr1/beta_function.tcc>
51#include <tr1/ell_integral.tcc>
52#include <tr1/exp_integral.tcc>
53#include <tr1/hypergeometric.tcc>
54#include <tr1/legendre_function.tcc>
55#include <tr1/modified_bessel_func.tcc>
56#include <tr1/poly_hermite.tcc>
57#include <tr1/poly_laguerre.tcc>
58#include <tr1/riemann_zeta.tcc>
60namespace std _GLIBCXX_VISIBILITY(default)
62_GLIBCXX_BEGIN_NAMESPACE_VERSION
206 {
return __detail::__assoc_laguerre<float>(__n, __m, __x); }
216 {
return __detail::__assoc_laguerre<long double>(__n, __m, __x); }
249 template<
typename _Tp>
250 inline typename __gnu_cxx::__promote<_Tp>::__type
253 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
254 return __detail::__assoc_laguerre<__type>(__n, __m, __x);
267 {
return __detail::__assoc_legendre_p<float>(__l, __m, __x); }
276 {
return __detail::__assoc_legendre_p<long double>(__l, __m, __x); }
295 template<
typename _Tp>
296 inline typename __gnu_cxx::__promote<_Tp>::__type
299 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
300 return __detail::__assoc_legendre_p<__type>(__l, __m, __x);
312 {
return __detail::__beta<float>(__a, __b); }
321 betal(
long double __a,
long double __b)
322 {
return __detail::__beta<long double>(__a, __b); }
340 template<
typename _Tpa,
typename _Tpb>
341 inline typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type
344 typedef typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type __type;
345 return __detail::__beta<__type>(__a, __b);
358 {
return __detail::__comp_ellint_1<float>(__k); }
368 {
return __detail::__comp_ellint_1<long double>(__k); }
388 template<
typename _Tp>
389 inline typename __gnu_cxx::__promote<_Tp>::__type
392 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
393 return __detail::__comp_ellint_1<__type>(__k);
406 {
return __detail::__comp_ellint_2<float>(__k); }
416 {
return __detail::__comp_ellint_2<long double>(__k); }
435 template<
typename _Tp>
436 inline typename __gnu_cxx::__promote<_Tp>::__type
439 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
440 return __detail::__comp_ellint_2<__type>(__k);
453 {
return __detail::__comp_ellint_3<float>(__k, __nu); }
463 {
return __detail::__comp_ellint_3<long double>(__k, __nu); }
486 template<
typename _Tp,
typename _Tpn>
487 inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type
490 typedef typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type __type;
491 return __detail::__comp_ellint_3<__type>(__k, __nu);
504 {
return __detail::__cyl_bessel_i<float>(__nu, __x); }
514 {
return __detail::__cyl_bessel_i<long double>(__nu, __x); }
532 template<
typename _Tpnu,
typename _Tp>
533 inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
536 typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
537 return __detail::__cyl_bessel_i<__type>(__nu, __x);
550 {
return __detail::__cyl_bessel_j<float>(__nu, __x); }
560 {
return __detail::__cyl_bessel_j<long double>(__nu, __x); }
578 template<
typename _Tpnu,
typename _Tp>
579 inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
582 typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
583 return __detail::__cyl_bessel_j<__type>(__nu, __x);
596 {
return __detail::__cyl_bessel_k<float>(__nu, __x); }
606 {
return __detail::__cyl_bessel_k<long double>(__nu, __x); }
630 template<
typename _Tpnu,
typename _Tp>
631 inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
634 typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
635 return __detail::__cyl_bessel_k<__type>(__nu, __x);
648 {
return __detail::__cyl_neumann_n<float>(__nu, __x); }
658 {
return __detail::__cyl_neumann_n<long double>(__nu, __x); }
678 template<
typename _Tpnu,
typename _Tp>
679 inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
682 typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
683 return __detail::__cyl_neumann_n<__type>(__nu, __x);
696 {
return __detail::__ellint_1<float>(__k, __phi); }
706 {
return __detail::__ellint_1<long double>(__k, __phi); }
726 template<
typename _Tp,
typename _Tpp>
727 inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
730 typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type;
731 return __detail::__ellint_1<__type>(__k, __phi);
744 {
return __detail::__ellint_2<float>(__k, __phi); }
754 {
return __detail::__ellint_2<long double>(__k, __phi); }
774 template<
typename _Tp,
typename _Tpp>
775 inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
778 typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type;
779 return __detail::__ellint_2<__type>(__k, __phi);
792 {
return __detail::__ellint_3<float>(__k, __nu, __phi); }
801 ellint_3l(
long double __k,
long double __nu,
long double __phi)
802 {
return __detail::__ellint_3<long double>(__k, __nu, __phi); }
827 template<
typename _Tp,
typename _Tpn,
typename _Tpp>
828 inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type
831 typedef typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type __type;
832 return __detail::__ellint_3<__type>(__k, __nu, __phi);
844 {
return __detail::__expint<float>(__x); }
854 {
return __detail::__expint<long double>(__x); }
867 template<
typename _Tp>
868 inline typename __gnu_cxx::__promote<_Tp>::__type
871 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
872 return __detail::__expint<__type>(__x);
885 {
return __detail::__poly_hermite<float>(__n, __x); }
895 {
return __detail::__poly_hermite<long double>(__n, __x); }
915 template<
typename _Tp>
916 inline typename __gnu_cxx::__promote<_Tp>::__type
919 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
920 return __detail::__poly_hermite<__type>(__n, __x);
933 {
return __detail::__laguerre<float>(__n, __x); }
943 {
return __detail::__laguerre<long double>(__n, __x); }
959 template<
typename _Tp>
960 inline typename __gnu_cxx::__promote<_Tp>::__type
963 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
964 return __detail::__laguerre<__type>(__n, __x);
977 {
return __detail::__poly_legendre_p<float>(__l, __x); }
987 {
return __detail::__poly_legendre_p<long double>(__l, __x); }
1004 template<
typename _Tp>
1005 inline typename __gnu_cxx::__promote<_Tp>::__type
1008 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1009 return __detail::__poly_legendre_p<__type>(__l, __x);
1022 {
return __detail::__riemann_zeta<float>(__s); }
1032 {
return __detail::__riemann_zeta<long double>(__s); }
1055 template<
typename _Tp>
1056 inline typename __gnu_cxx::__promote<_Tp>::__type
1059 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1060 return __detail::__riemann_zeta<__type>(__s);
1073 {
return __detail::__sph_bessel<float>(__n, __x); }
1083 {
return __detail::__sph_bessel<long double>(__n, __x); }
1099 template<
typename _Tp>
1100 inline typename __gnu_cxx::__promote<_Tp>::__type
1103 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1104 return __detail::__sph_bessel<__type>(__n, __x);
1117 {
return __detail::__sph_legendre<float>(__l, __m, __theta); }
1128 {
return __detail::__sph_legendre<long double>(__l, __m, __theta); }
1146 template<
typename _Tp>
1147 inline typename __gnu_cxx::__promote<_Tp>::__type
1150 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1151 return __detail::__sph_legendre<__type>(__l, __m, __theta);
1164 {
return __detail::__sph_neumann<float>(__n, __x); }
1174 {
return __detail::__sph_neumann<long double>(__n, __x); }
1190 template<
typename _Tp>
1191 inline typename __gnu_cxx::__promote<_Tp>::__type
1194 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1195 return __detail::__sph_neumann<__type>(__n, __x);
1200_GLIBCXX_END_NAMESPACE_VERSION
1203#ifndef __STRICT_ANSI__
1204namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
1206_GLIBCXX_BEGIN_NAMESPACE_VERSION
1220 float __Ai, __Bi, __Aip, __Bip;
1221 std::__detail::__airy<float>(__x, __Ai, __Bi, __Aip, __Bip);
1231 long double __Ai, __Bi, __Aip, __Bip;
1232 std::__detail::__airy<long double>(__x, __Ai, __Bi, __Aip, __Bip);
1239 template<
typename _Tp>
1240 inline typename __gnu_cxx::__promote<_Tp>::__type
1243 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1244 __type __Ai, __Bi, __Aip, __Bip;
1245 std::__detail::__airy<__type>(__x, __Ai, __Bi, __Aip, __Bip);
1255 float __Ai, __Bi, __Aip, __Bip;
1256 std::__detail::__airy<float>(__x, __Ai, __Bi, __Aip, __Bip);
1266 long double __Ai, __Bi, __Aip, __Bip;
1267 std::__detail::__airy<long double>(__x, __Ai, __Bi, __Aip, __Bip);
1274 template<
typename _Tp>
1275 inline typename __gnu_cxx::__promote<_Tp>::__type
1278 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1279 __type __Ai, __Bi, __Aip, __Bip;
1280 std::__detail::__airy<__type>(__x, __Ai, __Bi, __Aip, __Bip);
1295 {
return std::__detail::__conf_hyperg<float>(__a, __c, __x); }
1306 {
return std::__detail::__conf_hyperg<long double>(__a, __c, __x); }
1324 template<
typename _Tpa,
typename _Tpc,
typename _Tp>
1325 inline typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type
1328 typedef typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type __type;
1329 return std::__detail::__conf_hyperg<__type>(__a, __c, __x);
1342 hypergf(
float __a,
float __b,
float __c,
float __x)
1343 {
return std::__detail::__hyperg<float>(__a, __b, __c, __x); }
1353 hypergl(
long double __a,
long double __b,
long double __c,
long double __x)
1354 {
return std::__detail::__hyperg<long double>(__a, __b, __c, __x); }
1373 template<
typename _Tpa,
typename _Tpb,
typename _Tpc,
typename _Tp>
1374 inline typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type
1375 hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x)
1377 typedef typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>
1379 return std::__detail::__hyperg<__type>(__a, __b, __c, __x);
1383_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.
__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 .
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.