pub trait Gammawhere
Self: Sized,{
// Required methods
fn gamma(self) -> Self;
fn digamma(self) -> Self;
fn trigamma(&self) -> Self;
fn inc_gamma(self, p: Self) -> Self;
fn ln_gamma(self) -> (Self, i32);
}
Expand description
Gamma functions.
Required Methods§
sourcefn digamma(self) -> Self
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
- M. J. Beal, Variational algorithms for approximate Bayesian inference. University of London, 2003, pp. 265–266.
sourcefn trigamma(&self) -> Self
fn trigamma(&self) -> Self
Compute the trigamma function.
The code is based on a Julia implementation.
sourcefn inc_gamma(self, p: Self) -> Self
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.
Object Safety§
This trait is not object safe.