[][src]Trait special::Gamma

pub trait Gamma where
    Self: Sized
{ fn digamma(self) -> Self;
fn gamma(self) -> Self;
fn inc_gamma(self, p: Self) -> Self;
fn ln_gamma(self) -> (Self, i32);
fn trigamma(&self) -> Self; }

Gamma functions.

Required methods

fn digamma(self) -> Self

Compute the real-valued digamma function.

The formula is as follows:

       d ln(Γ(p))
ψ(p) = ----------
           dp

where Γ is the gamma function. The computation is based on an approximation as described in the reference below.

Examples

use special::Gamma;

const EULER_MASCHERONI: f64 = 0.57721566490153286060651209008240243104215933593992;
assert!((1.0.digamma() + EULER_MASCHERONI).abs() < 1e-15);

References

  1. M. J. Beal, Variational algorithms for approximate Bayesian inference. University of London, 2003, pp. 265–266.

fn gamma(self) -> Self

Compute the gamma function.

fn inc_gamma(self, p: Self) -> Self

Compute the regularized lower incomplete gamma function.

The formula is as follows:

          γ(x, p)    1   x
P(x, p) = ------- = ---- ∫ t^(p - 1) e^(-t) dt
           Γ(p)     Γ(p) 0

where γ is the incomplete lower gamma function, and Γ is the complete gamma function.

The code is based on a C implementation by John Burkardt. The original algorithm was published in Applied Statistics and is known as Algorithm AS 239.

fn ln_gamma(self) -> (Self, i32)

Compute the natural logarithm of the gamma function.

fn trigamma(&self) -> Self

Compute the trigamma function.

The code is based on a Julia implementation.

Loading content...

Implementations on Foreign Types

impl Gamma for f32[src]

impl Gamma for f64[src]

Loading content...

Implementors

Loading content...