std::tr1::__detail Namespace Reference


Detailed Description

Implementation details not part of the namespace std::tr1 interface.

Classes

Functions


Function Documentation

template<typename _Tp>
void std::tr1::__detail::__airy ( const _Tp  __x,
_Tp &  __Ai,
_Tp &  __Bi,
_Tp &  __Aip,
_Tp &  __Bip 
)

Compute the Airy functions $ Ai(x) $ and $ Bi(x) $ and their first derivatives $ Ai'(x) $ and $ Bi(x) $ respectively.

Parameters:
__n The order of the Airy functions.
__x The argument of the Airy functions.
__i_n The output Airy function.
__k_n The output Airy function.
__ip_n The output derivative of the Airy function.
__kp_n The output derivative of the Airy function.

Definition at line 375 of file modified_bessel_func.tcc.

References __bessel_ik(), __bessel_jn(), __isnan(), std::abs(), std::numeric_limits< _Tp >::quiet_NaN(), and std::sqrt().

template<typename _Tp>
_Tp std::tr1::__detail::__assoc_laguerre ( const unsigned int  __n,
const unsigned int  __m,
const _Tp  __x 
) [inline]

This routine returns the associated Laguerre polynomial of order n, degree m: $ L_n^m(x) $.

The associated Laguerre polynomial is defined for integral $ \alpha = m $ by:

\[ L_n^m(x) = (-1)^m \frac{d^m}{dx^m} L_{n + m}(x) \]

where the Laguerre polynomial is defined by:

\[ L_n(x) = \frac{e^x}{n!} \frac{d^n}{dx^n} (x^ne^{-x}) \]

Parameters:
__n The order of the Laguerre polynomial.
__m The degree of the Laguerre polynomial.
__x The argument of the Laguerre polynomial.
Returns:
The value of the associated Laguerre polynomial of order n, degree m, and argument x.

Definition at line 302 of file poly_laguerre.tcc.

template<typename _Tp>
_Tp std::tr1::__detail::__assoc_legendre_p ( const unsigned int  __l,
const unsigned int  __m,
const _Tp  __x 
)

Return the associated Legendre function by recursion on $ l $.

The associated Legendre function is derived from the Legendre function $ P_l(x) $ by the Rodrigues formula:

\[ P_l^m(x) = (1 - x^2)^{m/2}\frac{d^m}{dx^m}P_l(x) \]

Parameters:
l The order of the associated Legendre function. $ l >= 0 $.
m The order of the associated Legendre function. $ m <= l $.
x The argument of the associated Legendre function. $ |x| <= 1 $.

Definition at line 138 of file legendre_function.tcc.

References __isnan(), __N, __poly_legendre_p(), std::numeric_limits< _Tp >::quiet_NaN(), and std::sqrt().

template<typename _Tp>
_Tp std::tr1::__detail::__bernoulli ( const int  __n  )  [inline]

This returns Bernoulli number $B_n$.

Parameters:
__n the order n of the Bernoulli number.
Returns:
The Bernoulli number of order n.

Definition at line 138 of file gamma.tcc.

template<typename _Tp>
_Tp std::tr1::__detail::__bernoulli_series ( unsigned int  __n  ) 

This returns Bernoulli numbers from a table or by summation for larger values.

Recursion is unstable.

Parameters:
__n the order n of the Bernoulli number.
Returns:
The Bernoulli number of order n.

Definition at line 75 of file gamma.tcc.

References std::pow().

template<typename _Tp>
void std::tr1::__detail::__bessel_ik ( const _Tp  __nu,
const _Tp  __x,
_Tp &  __Inu,
_Tp &  __Knu,
_Tp &  __Ipnu,
_Tp &  __Kpnu 
)

Compute the modified Bessel functions $ I_\nu(x) $ and $ K_\nu(x) $ and their first derivatives $ I'_\nu(x) $ and $ K'_\nu(x) $ respectively. These four functions are computed together for numerical stability.

Parameters:
__nu The order of the Bessel functions.
__x The argument of the Bessel functions.
__Inu The output regular modified Bessel function.
__Knu The output irregular modified Bessel function.
__Ipnu The output derivative of the regular modified Bessel function.
__Kpnu The output derivative of the irregular modified Bessel function.

Definition at line 86 of file modified_bessel_func.tcc.

References __gamma_temme(), __N, std::abs(), std::cosh(), std::numeric_limits< _Tp >::epsilon(), std::exp(), std::numeric_limits< _Tp >::infinity(), std::log(), std::sin(), std::sinh(), and std::sqrt().

Referenced by __airy(), __cyl_bessel_i(), __cyl_bessel_k(), and __sph_bessel_ik().

template<typename _Tp>
void std::tr1::__detail::__bessel_jn ( const _Tp  __nu,
const _Tp  __x,
_Tp &  __Jnu,
_Tp &  __Nnu,
_Tp &  __Jpnu,
_Tp &  __Npnu 
)

Compute the Bessel $ J_\nu(x) $ and Neumann $ N_\nu(x) $ functions and their first derivatives $ J'_\nu(x) $ and $ N'_\nu(x) $ respectively. These four functions are computed together for numerical stability.

Parameters:
__nu The order of the Bessel functions.
__x The argument of the Bessel functions.
__Jnu The output Bessel function of the first kind.
__Nnu The output Neumann function (Bessel function of the second kind).
__Jpnu The output derivative of the Bessel function of the first kind.
__Npnu The output derivative of the Neumann function.

Definition at line 133 of file bessel_function.tcc.

References __gamma_temme(), __N, std::abs(), std::cosh(), std::numeric_limits< _Tp >::epsilon(), std::exp(), std::numeric_limits< _Tp >::infinity(), std::log(), std::max(), std::sin(), std::sinh(), and std::sqrt().

Referenced by __airy(), __cyl_bessel_j(), __cyl_neumann_n(), and __sph_bessel_jn().

template<typename _Tp>
_Tp std::tr1::__detail::__beta ( _Tp  __x,
_Tp  __y 
) [inline]

Return the beta function $ B(x,y) $.

The beta function is defined by

\[ B(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)} \]

Parameters:
__x The first argument of the beta function.
__y The second argument of the beta function.
Returns:
The beta function.

Definition at line 190 of file beta_function.tcc.

References __beta_lgamma(), __isnan(), and std::numeric_limits< _Tp >::quiet_NaN().

Referenced by __ellint_rj().

template<typename _Tp>
_Tp std::tr1::__detail::__beta_gamma ( _Tp  __x,
_Tp  __y 
)

Return the beta function: $B(x,y)$.

The beta function is defined by

\[ B(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)} \]

Parameters:
__x The first argument of the beta function.
__y The second argument of the beta function.
Returns:
The beta function.

Definition at line 80 of file beta_function.tcc.

References __gamma().

template<typename _Tp>
_Tp std::tr1::__detail::__beta_lgamma ( _Tp  __x,
_Tp  __y 
)

Return the beta function $B(x,y)$ using the log gamma functions.

The beta function is defined by

\[ B(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)} \]

Parameters:
__x The first argument of the beta function.
__y The second argument of the beta function.
Returns:
The beta function.

Definition at line 128 of file beta_function.tcc.

References __log_gamma(), and std::exp().

Referenced by __beta().

template<typename _Tp>
_Tp std::tr1::__detail::__beta_product ( _Tp  __x,
_Tp  __y 
)

Return the beta function $B(x,y)$ using the product form.

The beta function is defined by

\[ B(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)} \]

Parameters:
__x The first argument of the beta function.
__y The second argument of the beta function.
Returns:
The beta function.

Definition at line 159 of file beta_function.tcc.

template<typename _Tp>
_Tp std::tr1::__detail::__bincoef ( const unsigned int  __n,
const unsigned int  __k 
)

Return the binomial coefficient. The binomial coefficient is given by:

\[ \left( \right) = \frac{n!}{(n-k)! k!} \]

.

Parameters:
__n The first argument of the binomial coefficient.
__k The second argument of the binomial coefficient.
Returns:
The binomial coefficient.

Definition at line 315 of file gamma.tcc.

References std::exp(), std::log(), and std::numeric_limits< _Tp >::quiet_NaN().

template<typename _Tp>
_Tp std::tr1::__detail::__comp_ellint_1 ( const _Tp  __k  ) 

Return the complete elliptic integral of the first kind $ K(k) $ using the Carlson formulation.

The complete elliptic integral of the first kind is defined as

\[ K(k) = F(k,\pi/2) = \int_0^{\pi/2}\frac{d\theta} {\sqrt{1 - k^2 sin^2\theta}} \]

where $ F(k,\phi) $ is the incomplete elliptic integral of the first kind.

Parameters:
__k The argument of the complete elliptic function.
Returns:
The complete elliptic function of the first kind.

Definition at line 196 of file ell_integral.tcc.

References __ellint_rf(), __isnan(), std::abs(), and std::numeric_limits< _Tp >::quiet_NaN().

Referenced by __ellint_1().

template<typename _Tp>
_Tp std::tr1::__detail::__comp_ellint_1_series ( const _Tp  __k  ) 

Return the complete elliptic integral of the first kind $ K(k) $ by series expansion.

The complete elliptic integral of the first kind is defined as

\[ K(k) = F(k,\pi/2) = \int_0^{\pi/2}\frac{d\theta} {\sqrt{1 - k^2sin^2\theta}} \]

This routine is not bad as long as |k| is somewhat smaller than 1 but is not is good as the Carlson elliptic integral formulation.

Parameters:
__k The argument of the complete elliptic function.
Returns:
The complete elliptic function of the first kind.

Definition at line 158 of file ell_integral.tcc.

template<typename _Tp>
_Tp std::tr1::__detail::__comp_ellint_2 ( const _Tp  __k  ) 

Return the complete elliptic integral of the second kind $ E(k) $ using the Carlson formulation.

The complete elliptic integral of the second kind is defined as

\[ E(k,\pi/2) = \int_0^{\pi/2}\sqrt{1 - k^2 sin^2\theta} \]

Parameters:
__k The argument of the complete elliptic function.
Returns:
The complete elliptic function of the second kind.

Definition at line 406 of file ell_integral.tcc.

References __ellint_rd(), __ellint_rf(), __isnan(), __N, std::abs(), and std::numeric_limits< _Tp >::quiet_NaN().

Referenced by __ellint_2().

template<typename _Tp>
_Tp std::tr1::__detail::__comp_ellint_2_series ( const _Tp  __k  ) 

Return the complete elliptic integral of the second kind $ E(k) $ by series expansion.

The complete elliptic integral of the second kind is defined as

\[ E(k,\pi/2) = \int_0^{\pi/2}\sqrt{1 - k^2 sin^2\theta} \]

This routine is not bad as long as |k| is somewhat smaller than 1 but is not is good as the Carlson elliptic integral formulation.

Parameters:
__k The argument of the complete elliptic function.
Returns:
The complete elliptic function of the second kind.

Definition at line 271 of file ell_integral.tcc.

template<typename _Tp>
_Tp std::tr1::__detail::__comp_ellint_3 ( const _Tp  __k,
const _Tp  __nu 
)

Return the complete elliptic integral of the third kind $ \Pi(k,\nu) = \Pi(k,\nu,\pi/2) $ using the Carlson formulation.

The complete elliptic integral of the third kind is defined as

\[ \Pi(k,\nu) = \int_0^{\pi/2} \frac{d\theta} {(1 - \nu \sin^2\theta)\sqrt{1 - k^2 \sin^2\theta}} \]

Parameters:
__k The argument of the elliptic function.
__nu The second argument of the elliptic function.
Returns:
The complete elliptic function of the third kind.

Definition at line 673 of file ell_integral.tcc.

References __ellint_rf(), __ellint_rj(), __isnan(), __N, std::abs(), std::numeric_limits< _Tp >::infinity(), and std::numeric_limits< _Tp >::quiet_NaN().

Referenced by __ellint_3().

template<typename _Tp>
_Tp std::tr1::__detail::__conf_hyperg ( const _Tp  __a,
const _Tp  __c,
const _Tp  __x 
) [inline]

Return the confluent hypogeometric function $ _1F_1(a;c;x) $.

Todo:
Handle b == nonpositive integer blowup - return NaN.
Parameters:
__a The "numerator" parameter.
__c The "denominator" parameter.
__x The argument of the confluent hypergeometric function.
Returns:
The confluent hypergeometric function.

Definition at line 227 of file hypergeometric.tcc.

References __conf_hyperg_luke(), __conf_hyperg_series(), __isnan(), std::exp(), std::numeric_limits< _Tp >::infinity(), and std::numeric_limits< _Tp >::quiet_NaN().

template<typename _Tp>
_Tp std::tr1::__detail::__conf_hyperg_luke ( const _Tp  __a,
const _Tp  __c,
const _Tp  __xin 
)

Return the hypogeometric function $ _2F_1(a,b;c;x) $ by an iterative procedure described in Luke, Algorithms for the Computation of Mathematical Functions.

Like the case of the 2F1 rational approximations, these are probably guaranteed to converge for x < 0, barring gross numerical instability in the pre-asymptotic regime.

Definition at line 120 of file hypergeometric.tcc.

References __N, std::abs(), std::numeric_limits< _Tp >::epsilon(), and std::pow().

Referenced by __conf_hyperg().

template<typename _Tp>
_Tp std::tr1::__detail::__conf_hyperg_series ( const _Tp  __a,
const _Tp  __c,
const _Tp  __x 
)

This routine returns the confluent hypergeometric function by series expansion.

\[ _1F_1(a;c;x) = \frac{\Gamma(c)}{\Gamma(a)} \sum_{n=0}^{\infty} \frac{\Gamma(a+n)}{\Gamma(c+n)} \frac{x^n}{n!} \]

If a and b are integers and a < 0 and either b > 0 or b < a then the series is a polynomial with a finite number of terms. If b is an integer and b <= 0 the confluent hypergeometric function is undefined.

Parameters:
__a The "numerator" parameter.
__c The "denominator" parameter.
__x The argument of the confluent hypergeometric function.
Returns:
The confluent hypergeometric function.

Definition at line 83 of file hypergeometric.tcc.

References __N, std::abs(), and std::numeric_limits< _Tp >::epsilon().

Referenced by __conf_hyperg().

template<typename _Tp>
_Tp std::tr1::__detail::__cyl_bessel_i ( const _Tp  __nu,
const _Tp  __x 
)

Return the regular modified Bessel function of order $ \nu $: $ I_{\nu}(x) $.

The regular modified cylindrical Bessel function is:

\[ I_{\nu}(x) = \sum_{k=0}^{\infty} \frac{(x/2)^{\nu + 2k}}{k!\Gamma(\nu+k+1)} \]

Parameters:
__nu The order of the regular modified Bessel function.
__x The argument of the regular modified Bessel function.
Returns:
The output regular modified Bessel function.

Definition at line 270 of file modified_bessel_func.tcc.

References __bessel_ik(), __cyl_bessel_ij_series(), __isnan(), __N, and std::numeric_limits< _Tp >::quiet_NaN().

template<typename _Tp>
_Tp std::tr1::__detail::__cyl_bessel_ij_series ( const _Tp  __nu,
const _Tp  __x,
const _Tp  __sgn,
const unsigned int  __max_iter 
)

This routine returns the cylindrical Bessel functions of order $ \nu $: $ J_{\nu} $ or $ I_{\nu} $ by series expansion.

The modified cylindrical Bessel function is:

\[ Z_{\nu}(x) = \sum_{k=0}^{\infty} \frac{\sigma^k (x/2)^{\nu + 2k}}{k!\Gamma(\nu+k+1)} \]

where $ \sigma = +1 $ or$ -1 $ for $ Z = I $ or $ J $ respectively.

See Abramowitz & Stegun, 9.1.10 Abramowitz & Stegun, 9.6.7 (1) Handbook of Mathematical Functions, ed. Milton Abramowitz and Irene A. Stegun, Dover Publications, Equation 9.1.10 p. 360 and Equation 9.6.10 p. 375

Parameters:
__nu The order of the Bessel function.
__x The argument of the Bessel function.
__sgn The sign of the alternate terms -1 for the Bessel function of the first kind. +1 for the modified Bessel function of the first kind.
Returns:
The output Bessel function.

Definition at line 415 of file bessel_function.tcc.

References __log_gamma(), std::abs(), std::exp(), and std::log().

Referenced by __cyl_bessel_i(), and __cyl_bessel_j().

template<typename _Tp>
_Tp std::tr1::__detail::__cyl_bessel_j ( const _Tp  __nu,
const _Tp  __x 
)

Return the Bessel function of order $ \nu $: $ J_{\nu}(x) $.

The cylindrical Bessel function is:

\[ J_{\nu}(x) = \sum_{k=0}^{\infty} \frac{(-1)^k (x/2)^{\nu + 2k}}{k!\Gamma(\nu+k+1)} \]

Parameters:
__nu The order of the Bessel function.
__x The argument of the Bessel function.
Returns:
The output Bessel function.

Definition at line 459 of file bessel_function.tcc.

References __bessel_jn(), __cyl_bessel_ij_series(), __cyl_bessel_jn_asymp(), __isnan(), __N, and std::numeric_limits< _Tp >::quiet_NaN().

template<typename _Tp>
void std::tr1::__detail::__cyl_bessel_jn_asymp ( const _Tp  __nu,
const _Tp  __x,
_Tp &  __Jnu,
_Tp &  __Nnu 
)

This routine computes the asymptotic cylindrical Bessel and Neumann functions of order nu: $ J_{\nu} $, $ N_{\nu} $.

References: (1) Handbook of Mathematical Functions, ed. Milton Abramowitz and Irene A. Stegun, Dover Publications, Section 9 p. 364, Equations 9.2.5-9.2.10

Parameters:
__nu The order of the Bessel functions.
__x The argument of the Bessel functions.
__Jnu The output Bessel function of the first kind.
__Nnu The output Neumann function (Bessel function of the second kind).

Definition at line 358 of file bessel_function.tcc.

References std::cos(), std::sin(), and std::sqrt().

Referenced by __cyl_bessel_j(), and __cyl_neumann_n().

template<typename _Tp>
_Tp std::tr1::__detail::__cyl_bessel_k ( const _Tp  __nu,
const _Tp  __x 
)

Return the irregular modified Bessel function $ K_{\nu}(x) $ of order $ \nu $.

The irregular modified Bessel function is defined by:

\[ K_{\nu}(x) = \frac{\pi}{2} \frac{I_{-\nu}(x) - I_{\nu}(x)}{\sin \nu\pi} \]

where for integral $ \nu = n $ a limit is taken: $ lim_{\nu \to n} $.

Parameters:
__nu The order of the irregular modified Bessel function.
__x The argument of the irregular modified Bessel function.
Returns:
The output irregular modified Bessel function.

Definition at line 306 of file modified_bessel_func.tcc.

References __bessel_ik(), __isnan(), __N, and std::numeric_limits< _Tp >::quiet_NaN().

template<typename _Tp>
_Tp std::tr1::__detail::__cyl_neumann_n ( const _Tp  __nu,
const _Tp  __x 
)

Return the Neumann function of order $ \nu $: $ N_{\nu}(x) $.

The Neumann function is defined by:

\[ N_{\nu}(x) = \frac{J_{\nu}(x) \cos \nu\pi - J_{-\nu}(x)} {\sin \nu\pi} \]

where for integral $ \nu = n $ a limit is taken: $ lim_{\nu \to n} $.

Parameters:
__nu The order of the Neumann function.
__x The argument of the Neumann function.
Returns:
The output Neumann function.

Definition at line 501 of file bessel_function.tcc.

References __bessel_jn(), __cyl_bessel_jn_asymp(), __isnan(), __N, and std::numeric_limits< _Tp >::quiet_NaN().

template<typename _Tp>
_Tp std::tr1::__detail::__ellint_1 ( const _Tp  __k,
const _Tp  __phi 
)

Return the incomplete elliptic integral of the first kind $ F(k,\phi) $ using the Carlson formulation.

The incomplete elliptic integral of the first kind is defined as

\[ F(k,\phi) = \int_0^{\phi}\frac{d\theta} {\sqrt{1 - k^2 sin^2\theta}} \]

Parameters:
__k The argument of the elliptic function.
__phi The integral limit argument of the elliptic function.
Returns:
The elliptic function of the first kind.

Definition at line 224 of file ell_integral.tcc.

References __comp_ellint_1(), __ellint_rf(), __isnan(), __N, std::abs(), std::cos(), std::floor(), std::numeric_limits< _Tp >::quiet_NaN(), and std::sin().

template<typename _Tp>
_Tp std::tr1::__detail::__ellint_2 ( const _Tp  __k,
const _Tp  __phi 
)

Return the incomplete elliptic integral of the second kind $ E(k,\phi) $ using the Carlson formulation.

The incomplete elliptic integral of the second kind is defined as

\[ E(k,\phi) = \int_0^{\phi} \sqrt{1 - k^2 sin^2\theta} \]

Parameters:
__k The argument of the elliptic function.
__phi The integral limit argument of the elliptic function.
Returns:
The elliptic function of the second kind.

Definition at line 440 of file ell_integral.tcc.

References __comp_ellint_2(), __ellint_rd(), __ellint_rf(), __isnan(), __N, std::abs(), std::cos(), std::floor(), std::numeric_limits< _Tp >::quiet_NaN(), and std::sin().

template<typename _Tp>
_Tp std::tr1::__detail::__ellint_3 ( const _Tp  __k,
const _Tp  __nu,
const _Tp  __phi 
)

Return the incomplete elliptic integral of the third kind $ \Pi(k,\nu,\phi) $ using the Carlson formulation.

The incomplete elliptic integral of the third kind is defined as

\[ \Pi(k,\nu,\phi) = \int_0^{\phi} \frac{d\theta} {(1 - \nu \sin^2\theta) \sqrt{1 - k^2 \sin^2\theta}} \]

Parameters:
__k The argument of the elliptic function.
__nu The second argument of the elliptic function.
__phi The integral limit argument of the elliptic function.
Returns:
The elliptic function of the third kind.

Definition at line 713 of file ell_integral.tcc.

References __comp_ellint_3(), __ellint_rf(), __ellint_rj(), __isnan(), __N, std::abs(), std::cos(), std::floor(), std::numeric_limits< _Tp >::quiet_NaN(), and std::sin().

template<typename _Tp>
_Tp std::tr1::__detail::__ellint_rc ( const _Tp  __x,
const _Tp  __y 
)

Return the Carlson elliptic function $ R_C(x,y) = R_F(x,y,y) $ where $ R_F(x,y,z) $ is the Carlson elliptic function of the first kind.

The Carlson elliptic function is defined by:

\[ R_C(x,y) = \frac{1}{2} \int_0^\infty \frac{dt}{(t + x)^{1/2}(t + y)} \]

Based on Carlson's algorithms:

Parameters:
__x The first argument.
__y The second argument.
Returns:
The Carlson elliptic function.

Definition at line 499 of file ell_integral.tcc.

References __N, std::abs(), std::numeric_limits< _Tp >::epsilon(), std::numeric_limits< _Tp >::max(), std::numeric_limits< _Tp >::min(), std::pow(), and std::sqrt().

Referenced by __ellint_rj().

template<typename _Tp>
_Tp std::tr1::__detail::__ellint_rd ( const _Tp  __x,
const _Tp  __y,
const _Tp  __z 
)

Return the Carlson elliptic function of the second kind $ R_D(x,y,z) = R_J(x,y,z,z) $ where $ R_J(x,y,z,p) $ is the Carlson elliptic function of the third kind.

The Carlson elliptic function of the second kind is defined by:

\[ R_D(x,y,z) = \frac{3}{2} \int_0^\infty \frac{dt}{(t + x)^{1/2}(t + y)^{1/2}(t + z)^{3/2}} \]

Based on Carlson's algorithms:

Parameters:
__x The first of two symmetric arguments.
__y The second of two symmetric arguments.
__z The third argument.
Returns:
The Carlson elliptic function of the second kind.

Definition at line 319 of file ell_integral.tcc.

References __N, std::abs(), std::numeric_limits< _Tp >::epsilon(), std::max(), std::numeric_limits< _Tp >::max(), std::numeric_limits< _Tp >::min(), std::pow(), and std::sqrt().

Referenced by __comp_ellint_2(), and __ellint_2().

template<typename _Tp>
_Tp std::tr1::__detail::__ellint_rf ( const _Tp  __x,
const _Tp  __y,
const _Tp  __z 
)

Return the Carlson elliptic function $ R_F(x,y,z) $ of the first kind.

The Carlson elliptic function of the first kind is defined by:

\[ R_F(x,y,z) = \frac{1}{2} \int_0^\infty \frac{dt}{(t + x)^{1/2}(t + y)^{1/2}(t + z)^{1/2}} \]

Parameters:
__x The first of three symmetric arguments.
__y The second of three symmetric arguments.
__z The third of three symmetric arguments.
Returns:
The Carlson elliptic function of the first kind.

Definition at line 79 of file ell_integral.tcc.

References __N, std::abs(), std::numeric_limits< _Tp >::epsilon(), std::max(), std::numeric_limits< _Tp >::max(), std::numeric_limits< _Tp >::min(), std::pow(), and std::sqrt().

Referenced by __comp_ellint_1(), __comp_ellint_2(), __comp_ellint_3(), __ellint_1(), __ellint_2(), and __ellint_3().

template<typename _Tp>
_Tp std::tr1::__detail::__ellint_rj ( const _Tp  __x,
const _Tp  __y,
const _Tp  __z,
const _Tp  __p 
)

Return the Carlson elliptic function $ R_J(x,y,z,p) $ of the third kind.

The Carlson elliptic function of the third kind is defined by:

\[ R_J(x,y,z,p) = \frac{3}{2} \int_0^\infty \frac{dt}{(t + x)^{1/2}(t + y)^{1/2}(t + z)^{1/2}(t + p)} \]

Based on Carlson's algorithms:

Parameters:
__x The first of three symmetric arguments.
__y The second of three symmetric arguments.
__z The third of three symmetric arguments.
__p The fourth argument.
Returns:
The Carlson elliptic function of the fourth kind.

Definition at line 570 of file ell_integral.tcc.

References __beta(), __ellint_rc(), __N, std::abs(), std::numeric_limits< _Tp >::epsilon(), std::max(), std::numeric_limits< _Tp >::max(), std::numeric_limits< _Tp >::min(), std::pow(), and std::sqrt().

Referenced by __comp_ellint_3(), and __ellint_3().

template<typename _Tp>
_Tp std::tr1::__detail::__expint ( const _Tp  __x  )  [inline]

Return the exponential integral $ Ei(x) $.

The exponential integral is given by

\[ Ei(x) = -\int_{-x}^\infty \frac{e^t}{t} dt \]

Parameters:
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 517 of file exp_integral.tcc.

References __expint_Ei(), __isnan(), and std::numeric_limits< _Tp >::quiet_NaN().

template<typename _Tp>
_Tp std::tr1::__detail::__expint ( const unsigned int  __n,
const _Tp  __x 
)

Return the exponential integral $ E_n(x) $.

The exponential integral is given by

\[ E_n(x) = \int_{1}^\infty \frac{e^{-xt}}{t^n} dt \]

This is something of an extension.

Parameters:
__n The order of the exponential integral function.
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 477 of file exp_integral.tcc.

References __expint_E1(), __expint_En_recursion(), __isnan(), std::exp(), std::numeric_limits< _Tp >::infinity(), and std::numeric_limits< _Tp >::quiet_NaN().

template<typename _Tp>
_Tp std::tr1::__detail::__expint_asymp ( const unsigned int  __n,
const _Tp  __x 
)

Return the exponential integral $ E_n(x) $ for large argument.

The exponential integral is given by

\[ E_n(x) = \int_{1}^\infty \frac{e^{-xt}}{t^n} dt \]

This is something of an extension.

Parameters:
__n The order of the exponential integral function.
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 409 of file exp_integral.tcc.

References std::abs(), and std::exp().

template<typename _Tp>
_Tp std::tr1::__detail::__expint_E1 ( const _Tp  __x  ) 

Return the exponential integral $ E_1(x) $.

The exponential integral is given by

\[ E_1(x) = \int_{1}^\infty \frac{e^{-xt}}{t} dt \]

Parameters:
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 379 of file exp_integral.tcc.

References __expint_E1_asymp(), __expint_E1_series(), __expint_Ei(), and __expint_En_cont_frac().

Referenced by __expint(), __expint_Ei(), and __expint_En_recursion().

template<typename _Tp>
_Tp std::tr1::__detail::__expint_E1_asymp ( const _Tp  __x  ) 

Return the exponential integral $ E_1(x) $ by asymptotic expansion.

The exponential integral is given by

\[ E_1(x) = \int_{1}^\infty \frac{e^{-xt}}{t} dt \]

Parameters:
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 119 of file exp_integral.tcc.

References std::abs(), and std::exp().

Referenced by __expint_E1().

template<typename _Tp>
_Tp std::tr1::__detail::__expint_E1_series ( const _Tp  __x  ) 

Return the exponential integral $ E_1(x) $ by series summation. This should be good for $ x < 1 $.

The exponential integral is given by

\[ E_1(x) = \int_{1}^{\infty} \frac{e^{-xt}}{t} dt \]

Parameters:
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 82 of file exp_integral.tcc.

References std::abs(), std::numeric_limits< _Tp >::epsilon(), and std::log().

Referenced by __expint_E1().

template<typename _Tp>
_Tp std::tr1::__detail::__expint_Ei ( const _Tp  __x  ) 

Return the exponential integral $ Ei(x) $.

The exponential integral is given by

\[ Ei(x) = -\int_{-x}^\infty \frac{e^t}{t} dt \]

Parameters:
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 355 of file exp_integral.tcc.

References __expint_E1(), __expint_Ei_asymp(), __expint_Ei_series(), and std::log().

Referenced by __expint(), and __expint_E1().

template<typename _Tp>
_Tp std::tr1::__detail::__expint_Ei_asymp ( const _Tp  __x  ) 

Return the exponential integral $ Ei(x) $ by asymptotic expansion.

The exponential integral is given by

\[ Ei(x) = -\int_{-x}^\infty \frac{e^t}{t} dt \]

Parameters:
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 322 of file exp_integral.tcc.

References std::exp().

Referenced by __expint_Ei().

template<typename _Tp>
_Tp std::tr1::__detail::__expint_Ei_series ( const _Tp  __x  ) 

Return the exponential integral $ Ei(x) $ by series summation.

The exponential integral is given by

\[ Ei(x) = -\int_{-x}^\infty \frac{e^t}{t} dt \]

Parameters:
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 291 of file exp_integral.tcc.

References std::log().

Referenced by __expint_Ei().

template<typename _Tp>
_Tp std::tr1::__detail::__expint_En_cont_frac ( const unsigned int  __n,
const _Tp  __x 
)

Return the exponential integral $ E_n(x) $ by continued fractions.

The exponential integral is given by

\[ E_n(x) = \int_{1}^\infty \frac{e^{-xt}}{t^n} dt \]

Parameters:
__n The order of the exponential integral function.
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 202 of file exp_integral.tcc.

References __N, std::abs(), std::numeric_limits< _Tp >::epsilon(), std::exp(), and std::numeric_limits< _Tp >::min().

Referenced by __expint_E1().

template<typename _Tp>
_Tp std::tr1::__detail::__expint_En_recursion ( const unsigned int  __n,
const _Tp  __x 
)

Return the exponential integral $ E_n(x) $ by recursion. Use upward recursion for $ x < n $ and downward recursion (Miller's algorithm) otherwise.

The exponential integral is given by

\[ E_n(x) = \int_{1}^\infty \frac{e^{-xt}}{t^n} dt \]

Parameters:
__n The order of the exponential integral function.
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 247 of file exp_integral.tcc.

References __expint_E1(), __N, and std::exp().

Referenced by __expint().

template<typename _Tp>
_Tp std::tr1::__detail::__expint_En_series ( const unsigned int  __n,
const _Tp  __x 
)

Return the exponential integral $ E_n(x) $ by series summation.

The exponential integral is given by

\[ E_n(x) = \int_{1}^\infty \frac{e^{-xt}}{t^n} dt \]

Parameters:
__n The order of the exponential integral function.
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 156 of file exp_integral.tcc.

References __N, __psi(), _TR1_GAMMA_TCC, std::abs(), std::numeric_limits< _Tp >::epsilon(), and std::log().

template<typename _Tp>
_Tp std::tr1::__detail::__expint_large_n ( const unsigned int  __n,
const _Tp  __x 
)

Return the exponential integral $ E_n(x) $ for large order.

The exponential integral is given by

\[ E_n(x) = \int_{1}^\infty \frac{e^{-xt}}{t^n} dt \]

This is something of an extension.

Parameters:
__n The order of the exponential integral function.
__x The argument of the exponential integral function.
Returns:
The exponential integral.

Definition at line 443 of file exp_integral.tcc.

References std::abs(), and std::exp().

template<typename _Tp>
_Tp std::tr1::__detail::__gamma ( const _Tp  __x  )  [inline]

Return $ \Gamma(x) $.

Parameters:
__x The argument of the gamma function.
Returns:
The gamma function.

Definition at line 338 of file gamma.tcc.

References __log_gamma(), and std::exp().

Referenced by __beta_gamma(), and __gamma_temme().

template<typename _Tp>
void std::tr1::__detail::__gamma_temme ( const _Tp  __mu,
_Tp &  __gam1,
_Tp &  __gam2,
_Tp &  __gampl,
_Tp &  __gammi 
)

Compute the gamma functions required by the Temme series expansions of $ N_\nu(x) $ and $ K_\nu(x) $.

\[ \Gamma_1 = \frac{1}{2\mu} [\frac{1}{\Gamma(1 - \mu)} - \frac{1}{\Gamma(1 + \mu)}] \]

and

\[ \Gamma_2 = \frac{1}{2} [\frac{1}{\Gamma(1 - \mu)} + \frac{1}{\Gamma(1 + \mu)}] \]

where $ -1/2 <= \mu <= 1/2 $ is $ \mu = \nu - N $ and $ N $. is the nearest integer to $ \nu $. The values of $ \Gamma(1 + \mu) $ and $ \Gamma(1 - \mu) $ are returned as well.

The accuracy requirements on this are exquisite.

Parameters:
__mu The input parameter of the gamma functions.
__gam1 The output function $ \Gamma_1(\mu) $
__gam2 The output function $ \Gamma_2(\mu) $
__gampl The output function $ \Gamma(1 + \mu) $
__gammi The output function $ \Gamma(1 - \mu) $

Definition at line 95 of file bessel_function.tcc.

References __gamma(), and std::abs().

Referenced by __bessel_ik(), and __bessel_jn().

template<typename _Tp>
_Tp std::tr1::__detail::__hurwitz_zeta ( const _Tp  __a,
const _Tp  __s 
) [inline]

Return the Hurwitz zeta function $ \zeta(x,s) $ for all s != 1 and x > -1.

The Hurwitz zeta function is defined by:

\[ \zeta(x,s) = \sum_{n=0}^{\infty} \frac{1}{(n + x)^s} \]

The Riemann zeta function is a special case:

\[ \zeta(s) = \zeta(1,s) \]

Definition at line 431 of file riemann_zeta.tcc.

References __hurwitz_zeta_glob().

Referenced by __psi().

template<typename _Tp>
_Tp std::tr1::__detail::__hurwitz_zeta_glob ( const _Tp  __a,
const _Tp  __s 
)

Return the Hurwitz zeta function $ \zeta(x,s) $ for all s != 1 and x > -1.

The Hurwitz zeta function is defined by:

\[ \zeta(x,s) = \sum_{n=0}^{\infty} \frac{1}{(n + x)^s} \]

The Riemann zeta function is a special case:

\[ \zeta(s) = \zeta(1,s) \]

This functions uses the double sum that converges for s != 1 and x > -1:

\[ \zeta(x,s) = \frac{1}{s-1} \sum_{n=0}^{\infty} \frac{1}{n + 1} \sum_{k=0}^{n} (-1)^k \frac{n!}{(n-k)!k!} (x+k)^{-s} \]

Definition at line 366 of file riemann_zeta.tcc.

References __log_gamma(), _GLIBCXX_USE_C99_MATH_TR1, std::abs(), std::numeric_limits< _Tp >::epsilon(), std::exp(), std::log(), and std::pow().

Referenced by __hurwitz_zeta().

template<typename _Tp>
_Tp std::tr1::__detail::__hyperg ( const _Tp  __a,
const _Tp  __b,
const _Tp  __c,
const _Tp  __x 
) [inline]

Return the hypogeometric function $ _2F_1(a,b;c;x) $.

The hypogeometric function is defined by

\[ _2F_1(a,b;c;x) = \frac{\Gamma(c)}{\Gamma(a)\Gamma(b)} \sum_{n=0}^{\infty} \frac{\Gamma(a+n)\Gamma(b+n)}{\Gamma(c+n)} \frac{x^n}{n!} \]

Parameters:
__a The first "numerator" parameter.
__a The second "numerator" parameter.
__c The "denominator" parameter.
__x The argument of the confluent hypergeometric function.
Returns:
The confluent hypergeometric function.

Definition at line 729 of file hypergeometric.tcc.

References __hyperg_luke(), __hyperg_reflect(), __hyperg_series(), __isnan(), __N, std::abs(), std::numeric_limits< _Tp >::epsilon(), std::numeric_limits< _Tp >::infinity(), std::pow(), and std::numeric_limits< _Tp >::quiet_NaN().

template<typename _Tp>
_Tp std::tr1::__detail::__hyperg_luke ( const _Tp  __a,
const _Tp  __b,
const _Tp  __c,
const _Tp  __xin 
)

Return the hypogeometric function $ _2F_1(a,b;c;x) $ by an iterative procedure described in Luke, Algorithms for the Computation of Mathematical Functions.

Definition at line 305 of file hypergeometric.tcc.

References __N, std::abs(), std::numeric_limits< _Tp >::epsilon(), and std::pow().

Referenced by __hyperg().

template<typename _Tp>
_Tp std::tr1::__detail::__hyperg_reflect ( const _Tp  __a,
const _Tp  __b,
const _Tp  __c,
const _Tp  __x 
)

Return the hypogeometric function $ _2F_1(a,b;c;x) $ by the reflection formulae in Abramowitz & Stegun formula 15.3.6 for d = c - a - b not integral and formula 15.3.11 for d = c - a - b integral. This assumes a, b, c != negative integer.

The hypogeometric function is defined by

\[ _2F_1(a,b;c;x) = \frac{\Gamma(c)}{\Gamma(a)\Gamma(b)} \sum_{n=0}^{\infty} \frac{\Gamma(a+n)\Gamma(b+n)}{\Gamma(c+n)} \frac{x^n}{n!} \]

The reflection formula for nonintegral $ d = c - a - b $ is:

\[ _2F_1(a,b;c;x) = \frac{\Gamma(c)\Gamma(d)}{\Gamma(c-a)\Gamma(c-b)} _2F_1(a,b;1-d;1-x) + \frac{\Gamma(c)\Gamma(-d)}{\Gamma(a)\Gamma(b)} _2F_1(c-a,c-b;1+d;1-x) \]

The reflection formula for integral $ m = c - a - b $ is:

\[ _2F_1(a,b;a+b+m;x) = \frac{\Gamma(m)\Gamma(a+b+m)}{\Gamma(a+m)\Gamma(b+m)} \sum_{k=0}^{m-1} \frac{(m+a)_k(m+b)_k}{k!(1-m)_k} - \]

Definition at line 439 of file hypergeometric.tcc.

References __hyperg_series(), __log_gamma(), __log_gamma_sign(), __N, __psi(), std::abs(), std::numeric_limits< _Tp >::epsilon(), std::exp(), std::floor(), and std::log().

Referenced by __hyperg().

template<typename _Tp>
_Tp std::tr1::__detail::__hyperg_series ( const _Tp  __a,
const _Tp  __b,
const _Tp  __c,
const _Tp  __x 
)

Return the hypogeometric function $ _2F_1(a,b;c;x) $ by series expansion.

The hypogeometric function is defined by

\[ _2F_1(a,b;c;x) = \frac{\Gamma(c)}{\Gamma(a)\Gamma(b)} \sum_{n=0}^{\infty} \frac{\Gamma(a+n)\Gamma(b+n)}{\Gamma(c+n)} \frac{x^n}{n!} \]

This works and it's pretty fast.

Parameters:
__a The first "numerator" parameter.
__a The second "numerator" parameter.
__c The "denominator" parameter.
__x The argument of the confluent hypergeometric function.
Returns:
The confluent hypergeometric function.

Definition at line 271 of file hypergeometric.tcc.

References __N, std::abs(), and std::numeric_limits< _Tp >::epsilon().

Referenced by __hyperg(), and __hyperg_reflect().

template<typename _Tp>
_Tp std::tr1::__detail::__laguerre ( const unsigned int  __n,
const _Tp  __x 
) [inline]

This routine returns the Laguerre polynomial of order n: $ L_n(x) $.

The Laguerre polynomial is defined by:

\[ L_n(x) = \frac{e^x}{n!} \frac{d^n}{dx^n} (x^ne^{-x}) \]

Parameters:
__n The order of the Laguerre polynomial.
__x The argument of the Laguerre polynomial.
Returns:
The value of the Laguerre polynomial of order n and argument x.

Definition at line 325 of file poly_laguerre.tcc.

template<typename _Tp>
_Tp std::tr1::__detail::__log_bincoef ( const unsigned int  __n,
const unsigned int  __k 
)

Return the logarithm of the binomial coefficient. The binomial coefficient is given by:

\[ \left( \right) = \frac{n!}{(n-k)! k!} \]

.

Parameters:
__n The first argument of the binomial coefficient.
__k The second argument of the binomial coefficient.
Returns:
The binomial coefficient.

Definition at line 284 of file gamma.tcc.

References __log_gamma(), and std::log().

template<typename _Tp>
_Tp std::tr1::__detail::__log_gamma ( const _Tp  __x  ) 

Return $ log(|\Gamma(x)|) $. This will return values even for $ x < 0 $. To recover the sign of $ \Gamma(x) $ for any argument use __log_gamma_sign.

Parameters:
__x The argument of the log of the gamma function.
Returns:
The logarithm of the gamma function.

Definition at line 226 of file gamma.tcc.

References __log_gamma_lanczos(), __N, std::abs(), std::log(), and std::sin().

Referenced by __beta_lgamma(), __cyl_bessel_ij_series(), __gamma(), __hurwitz_zeta_glob(), __hyperg_reflect(), __log_bincoef(), __poly_laguerre_large_n(), __psi(), __riemann_zeta(), __riemann_zeta_glob(), and __sph_legendre().

template<typename _Tp>
_Tp std::tr1::__detail::__log_gamma_bernoulli ( const _Tp  __x  ) 

Return $log(\Gamma(x))$ by asymptotic expansion with Bernoulli number coefficients. This is like Sterling's approximation.

Parameters:
__x The argument of the log of the gamma function.
Returns:
The logarithm of the gamma function.

Definition at line 154 of file gamma.tcc.

References std::__lg(), and std::log().

template<typename _Tp>
_Tp std::tr1::__detail::__log_gamma_lanczos ( const _Tp  __x  ) 

Return $log(\Gamma(x))$ by the Lanczos method. This method dominates all others on the positive axis I think.

Parameters:
__x The argument of the log of the gamma function.
Returns:
The logarithm of the gamma function.

Definition at line 182 of file gamma.tcc.

References std::log().

Referenced by __log_gamma().

template<typename _Tp>
_Tp std::tr1::__detail::__log_gamma_sign ( const _Tp  __x  ) 

Return the sign of $ \Gamma(x) $. At nonpositive integers zero is returned.

Parameters:
__x The argument of the gamma function.
Returns:
The sign of the gamma function.

Definition at line 253 of file gamma.tcc.

References std::sin().

Referenced by __hyperg_reflect().

template<typename _Tp>
_Tp std::tr1::__detail::__poly_hermite ( const unsigned int  __n,
const _Tp  __x 
) [inline]

This routine returns the Hermite polynomial of order n: $ H_n(x) $.

The Hermite polynomial is defined by:

\[ H_n(x) = (-1)^n e^{x^2} \frac{d^n}{dx^n} e^{-x^2} \]

Parameters:
__n The order of the Hermite polynomial.
__x The argument of the Hermite polynomial.
Returns:
The value of the Hermite polynomial of order n and argument x.

Definition at line 117 of file poly_hermite.tcc.

References __isnan(), __poly_hermite_recursion(), and std::numeric_limits< _Tp >::quiet_NaN().

template<typename _Tp>
_Tp std::tr1::__detail::__poly_hermite_recursion ( const unsigned int  __n,
const _Tp  __x 
)

This routine returns the Hermite polynomial of order n: $ H_n(x) $ by recursion on n.

The Hermite polynomial is defined by:

\[ H_n(x) = (-1)^n e^{x^2} \frac{d^n}{dx^n} e^{-x^2} \]

Parameters:
__n The order of the Hermite polynomial.
__x The argument of the Hermite polynomial.
Returns:
The value of the Hermite polynomial of order n and argument x.

Definition at line 75 of file poly_hermite.tcc.

Referenced by __poly_hermite().

template<typename _Tpa, typename _Tp>
_Tp std::tr1::__detail::__poly_laguerre ( const unsigned int  __n,
const _Tpa  __alpha1,
const _Tp  __x 
) [inline]

This routine returns the associated Laguerre polynomial of order n, degree $ \alpha $: $ L_n^alpha(x) $.

The associated Laguerre function is defined by

\[ L_n^\alpha(x) = \frac{(\alpha + 1)_n}{n!} _1F_1(-n; \alpha + 1; x) \]

where $ (\alpha)_n $ is the Pochhammer symbol and $ _1F_1(a; c; x) $ is the confluent hypergeometric function.

The associated Laguerre polynomial is defined for integral $ \alpha = m $ by:

\[ L_n^m(x) = (-1)^m \frac{d^m}{dx^m} L_{n + m}(x) \]

where the Laguerre polynomial is defined by:

\[ L_n(x) = \frac{e^x}{n!} \frac{d^n}{dx^n} (x^ne^{-x}) \]

Parameters:
__n The order of the Laguerre function.
__alpha The degree of the Laguerre function.
__x The argument of the Laguerre function.
Returns:
The value of the Laguerre function of order n, degree $ \alpha $, and argument x.

Definition at line 249 of file poly_laguerre.tcc.

References __isnan(), __N, __poly_laguerre_hyperg(), __poly_laguerre_large_n(), __poly_laguerre_recursion(), and std::numeric_limits< _Tp >::quiet_NaN().

template<typename _Tpa, typename _Tp>
_Tp std::tr1::__detail::__poly_laguerre_hyperg ( const unsigned int  __n,
const _Tpa  __alpha1,
const _Tp  __x 
)

Evaluate the polynomial based on the confluent hypergeometric function in a safe way, with no restriction on the arguments.

The associated Laguerre function is defined by

\[ L_n^\alpha(x) = \frac{(\alpha + 1)_n}{n!} _1F_1(-n; \alpha + 1; x) \]

where $ (\alpha)_n $ is the Pochhammer symbol and $ _1F_1(a; c; x) $ is the confluent hypergeometric function.

This function assumes x != 0.

This is from the GNU Scientific Library.

Definition at line 132 of file poly_laguerre.tcc.

References std::abs().

Referenced by __poly_laguerre().

template<typename _Tpa, typename _Tp>
_Tp std::tr1::__detail::__poly_laguerre_large_n ( const unsigned  __n,
const _Tpa  __alpha1,
const _Tp  __x 
)

This routine returns the associated Laguerre polynomial of order $ n $, degree $ \alpha $ for large n. Abramowitz & Stegun, 13.5.21.

Parameters:
__n The order of the Laguerre function.
__alpha The degree of the Laguerre function.
__x The argument of the Laguerre function.
Returns:
The value of the Laguerre function of order n, degree $ \alpha $, and argument x.
This is from the GNU Scientific Library.

Definition at line 77 of file poly_laguerre.tcc.

References __log_gamma(), std::acos(), std::exp(), std::log(), std::sin(), and std::sqrt().

Referenced by __poly_laguerre().

template<typename _Tpa, typename _Tp>
_Tp std::tr1::__detail::__poly_laguerre_recursion ( const unsigned int  __n,
const _Tpa  __alpha1,
const _Tp  __x 
)

This routine returns the associated Laguerre polynomial of order $ n $, degree $ \alpha $: $ L_n^\alpha(x) $ by recursion.

The associated Laguerre function is defined by

\[ L_n^\alpha(x) = \frac{(\alpha + 1)_n}{n!} _1F_1(-n; \alpha + 1; x) \]

where $ (\alpha)_n $ is the Pochhammer symbol and $ _1F_1(a; c; x) $ is the confluent hypergeometric function.

The associated Laguerre polynomial is defined for integral $ \alpha = m $ by:

\[ L_n^m(x) = (-1)^m \frac{d^m}{dx^m} L_{n + m}(x) \]

where the Laguerre polynomial is defined by:

\[ L_n(x) = \frac{e^x}{n!} \frac{d^n}{dx^n} (x^ne^{-x}) \]

Parameters:
__n The order of the Laguerre function.
__alpha The degree of the Laguerre function.
__x The argument of the Laguerre function.
Returns:
The value of the Laguerre function of order n, degree $ \alpha $, and argument x.

Definition at line 189 of file poly_laguerre.tcc.

Referenced by __poly_laguerre().

template<typename _Tp>
_Tp std::tr1::__detail::__poly_legendre_p ( const unsigned int  __l,
const _Tp  __x 
)

Return the Legendre polynomial by recursion on order $ l $.

The Legendre function of $ l $ and $ x $, $ P_l(x) $, is defined by:

\[ P_l(x) = \frac{1}{2^l l!}\frac{d^l}{dx^l}(x^2 - 1)^{l} \]

Parameters:
l The order of the Legendre polynomial. $l >= 0$.
x The argument of the Legendre polynomial. $|x| <= 1$.

Definition at line 81 of file legendre_function.tcc.

References __isnan(), __N, and std::numeric_limits< _Tp >::quiet_NaN().

Referenced by __assoc_legendre_p(), and __sph_legendre().

template<typename _Tp>
_Tp std::tr1::__detail::__psi ( const unsigned int  __n,
const _Tp  __x 
)

Return the polygamma function $ \psi^{(n)}(x) $.

The polygamma function is related to the Hurwitz zeta function:

\[ \psi^{(n)}(x) = (-1)^{n+1} m! \zeta(m+1,x) \]

Definition at line 449 of file gamma.tcc.

References __hurwitz_zeta(), __log_gamma(), __N, __psi(), and std::exp().

template<typename _Tp>
_Tp std::tr1::__detail::__psi ( const _Tp  __x  ) 

Return the digamma function. The digamma or $ \psi(x) $ function is defined by

\[ \psi(x) = \frac{\Gamma'(x)}{\Gamma(x)} \]

For negative argument the reflection formula is used:

\[ \psi(x) = \psi(1-x) - \pi \cot(\pi x) \]

.

Definition at line 420 of file gamma.tcc.

References __psi_asymp(), __psi_series(), std::abs(), std::cos(), std::numeric_limits< _Tp >::epsilon(), std::numeric_limits< _Tp >::quiet_NaN(), and std::sin().

Referenced by __expint_En_series(), __hyperg_reflect(), and __psi().

template<typename _Tp>
_Tp std::tr1::__detail::__psi_asymp ( const _Tp  __x  ) 

Return the digamma function for large argument. The digamma or $ \psi(x) $ function is defined by

\[ \psi(x) = \frac{\Gamma'(x)}{\Gamma(x)} \]

.

The asymptotic series is given by:

\[ \psi(x) = \ln(x) - \frac{1}{2x} - \sum_{n=1}^{\infty} \frac{B_{2n}}{2 n x^{2n}} \]

Definition at line 389 of file gamma.tcc.

References std::abs(), and std::log().

Referenced by __psi().

template<typename _Tp>
_Tp std::tr1::__detail::__psi_series ( const _Tp  __x  ) 

Return the digamma function by series expansion. The digamma or $ \psi(x) $ function is defined by

\[ \psi(x) = \frac{\Gamma'(x)}{\Gamma(x)} \]

.

The series is given by:

\[ \psi(x) = -\gamma_E - \frac{1}{x} \sum_{k=1}^{\infty} \frac{x}{k(x + k)} \]

Definition at line 359 of file gamma.tcc.

References std::abs().

Referenced by __psi().

template<typename _Tp>
_Tp std::tr1::__detail::__riemann_zeta ( const _Tp  __s  ) 

Return the Riemann zeta function $ \zeta(s) $.

The Riemann zeta function is defined by:

\[ \zeta(s) = \sum_{k=1}^{\infty} k^{-s} for s > 1 \frac{(2\pi)^s}{pi} sin(\frac{\pi s}{2}) \Gamma (1 - s) \zeta (1 - s) for s < 1 \]

For s < 1 use the reflection formula:

\[ \zeta(s) = 2^s \pi^{s-1} \Gamma(1-s) \zeta(1-s) \]

Definition at line 294 of file riemann_zeta.tcc.

References __isnan(), __log_gamma(), __riemann_zeta_glob(), __riemann_zeta_product(), __riemann_zeta_sum(), std::exp(), std::numeric_limits< _Tp >::infinity(), std::pow(), std::numeric_limits< _Tp >::quiet_NaN(), and std::sin().

template<typename _Tp>
_Tp std::tr1::__detail::__riemann_zeta_alt ( const _Tp  __s  ) 

Evaluate the Riemann zeta function $ \zeta(s) $ by an alternate series for s > 0.

The Riemann zeta function is defined by:

\[ \zeta(s) = \sum_{k=1}^{\infty} \frac{1}{k^{s}} for s > 1 \]

For s < 1 use the reflection formula:

\[ \zeta(s) = 2^s \pi^{s-1} \Gamma(1-s) \zeta(1-s) \]

Definition at line 116 of file riemann_zeta.tcc.

References std::abs(), and std::pow().

template<typename _Tp>
_Tp std::tr1::__detail::__riemann_zeta_glob ( const _Tp  __s  ) 

Evaluate the Riemann zeta function by series for all s != 1. Convergence is great until largish negative numbers. Then the convergence of the > 0 sum gets better.

The series is:

\[ \zeta(s) = \frac{1}{1-2^{1-s}} \sum_{n=0}^{\infty} \frac{1}{2^{n+1}} \sum_{k=0}^{n} (-1)^k \frac{n!}{(n-k)!k!} (k+1)^{-s} \]

Havil 2003, p. 206.

The Riemann zeta function is defined by:

\[ \zeta(s) = \sum_{k=1}^{\infty} \frac{1}{k^{s}} for s > 1 \]

For s < 1 use the reflection formula:

\[ \zeta(s) = 2^s \pi^{s-1} \Gamma(1-s) \zeta(1-s) \]

Definition at line 158 of file riemann_zeta.tcc.

References __log_gamma(), _GLIBCXX_USE_C99_MATH_TR1, std::abs(), std::numeric_limits< _Tp >::epsilon(), std::exp(), std::fmod(), std::log(), std::pow(), and std::sin().

Referenced by __riemann_zeta().

template<typename _Tp>
_Tp std::tr1::__detail::__riemann_zeta_product ( const _Tp  __s  ) 

Compute the Riemann zeta function $ \zeta(s) $ using the product over prime factors.

\[ \zeta(s) = \Pi_{i=1}^\infty \frac{1}{1 - p_i^{-s}} \]

where $ {p_i} $ are the prime numbers.

The Riemann zeta function is defined by:

\[ \zeta(s) = \sum_{k=1}^{\infty} \frac{1}{k^{s}} for s > 1 \]

For s < 1 use the reflection formula:

\[ \zeta(s) = 2^s \pi^{s-1} \Gamma(1-s) \zeta(1-s) \]

Definition at line 253 of file riemann_zeta.tcc.

References std::pow().

Referenced by __riemann_zeta().

template<typename _Tp>
_Tp std::tr1::__detail::__riemann_zeta_sum ( const _Tp  __s  ) 

Compute the Riemann zeta function $ \zeta(s) $ by summation for s > 1.

The Riemann zeta function is defined by:

\[ \zeta(s) = \sum_{k=1}^{\infty} \frac{1}{k^{s}} for s > 1 \]

For s < 1 use the reflection formula:

\[ \zeta(s) = 2^s \pi^{s-1} \Gamma(1-s) \zeta(1-s) \]

Definition at line 79 of file riemann_zeta.tcc.

References __N, and std::pow().

Referenced by __riemann_zeta().

template<typename _Tp>
_Tp std::tr1::__detail::__sph_bessel ( const unsigned int  __n,
const _Tp  __x 
)

Return the spherical Bessel function $ j_n(x) $ of order n.

The spherical Bessel function is defined by:

\[ j_n(x) = \left( \frac{\pi}{2x} \right) ^{1/2} J_{n+1/2}(x) \]

Parameters:
__n The order of the spherical Bessel function.
__x The argument of the spherical Bessel function.
Returns:
The output spherical Bessel function.

Definition at line 573 of file bessel_function.tcc.

References __isnan(), __N, __sph_bessel_jn(), and std::numeric_limits< _Tp >::quiet_NaN().

template<typename _Tp>
void std::tr1::__detail::__sph_bessel_ik ( const unsigned int  __n,
const _Tp  __x,
_Tp &  __i_n,
_Tp &  __k_n,
_Tp &  __ip_n,
_Tp &  __kp_n 
)

Compute the spherical modified Bessel functions $ i_n(x) $ and $ k_n(x) $ and their first derivatives $ i'_n(x) $ and $ k'_n(x) $ respectively.

Parameters:
__n The order of the modified spherical Bessel function.
__x The argument of the modified spherical Bessel function.
__i_n The output regular modified spherical Bessel function.
__k_n The output irregular modified spherical Bessel function.
__ip_n The output derivative of the regular modified spherical Bessel function.
__kp_n The output derivative of the irregular modified spherical Bessel function.

Definition at line 340 of file modified_bessel_func.tcc.

References __bessel_ik(), and std::sqrt().

template<typename _Tp>
void std::tr1::__detail::__sph_bessel_jn ( const unsigned int  __n,
const _Tp  __x,
_Tp &  __j_n,
_Tp &  __n_n,
_Tp &  __jp_n,
_Tp &  __np_n 
)

Compute the spherical Bessel $ j_n(x) $ and Neumann $ n_n(x) $ functions and their first derivatives $ j'_n(x) $ and $ n'_n(x) $ respectively.

Parameters:
__n The order of the spherical Bessel function.
__x The argument of the spherical Bessel function.
__j_n The output spherical Bessel function.
__n_n The output spherical Neumann function.
__jp_n The output derivative of the spherical Bessel function.
__np_n The output derivative of the spherical Neumann function.

Definition at line 538 of file bessel_function.tcc.

References __bessel_jn(), and std::sqrt().

Referenced by __sph_bessel(), and __sph_neumann().

template<typename _Tp>
_Tp std::tr1::__detail::__sph_legendre ( const unsigned int  __l,
const unsigned int  __m,
const _Tp  __theta 
)

Return the spherical associated Legendre function.

The spherical associated Legendre function of $ l $, $ m $, and $ \theta $ is defined as $ Y_l^m(\theta,0) $ where

\[ Y_l^m(\theta,\phi) = (-1)^m[\frac{(2l+1)}{4\pi} \frac{(l-m)!}{(l+m)!}] P_l^m(\cos\theta) \exp^{im\phi} \]

is the spherical harmonic function and $ P_l^m(x) $ is the associated Legendre function.

This function differs from the associated Legendre function by argument ($x = \cos(\theta)$) and by a normalization factor but this factor is rather large for large $ l $ and $ m $ and so this function is stable for larger differences of $ l $ and $ m $.

Parameters:
l The order of the spherical associated Legendre function. $ l >= 0 $.
m The order of the spherical associated Legendre function. $ m <= l $.
theta The radian angle argument of the spherical associated Legendre function.

Definition at line 218 of file legendre_function.tcc.

References __isnan(), __log_gamma(), __N, __poly_legendre_p(), std::cos(), std::exp(), std::log(), std::numeric_limits< _Tp >::quiet_NaN(), and std::sqrt().

template<typename _Tp>
_Tp std::tr1::__detail::__sph_neumann ( const unsigned int  __n,
const _Tp  __x 
)

Return the spherical Neumann function $ n_n(x) $.

The spherical Neumann function is defined by:

\[ n_n(x) = \left( \frac{\pi}{2x} \right) ^{1/2} N_{n+1/2}(x) \]

Parameters:
__n The order of the spherical Neumann function.
__x The argument of the spherical Neumann function.
Returns:
The output spherical Neumann function.

Definition at line 611 of file bessel_function.tcc.

References __isnan(), __N, __sph_bessel_jn(), std::numeric_limits< _Tp >::infinity(), and std::numeric_limits< _Tp >::quiet_NaN().


Generated on Wed Mar 26 00:45:08 2008 for libstdc++ by  doxygen 1.5.1