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) = ----------
dpwhere Γ 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 implementation 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) 0where γ is the incomplete lower gamma function, and Γ is the complete gamma function.
The implementation is based on a C implementation by John Burkardt. The original algorithm was published in Applied Statistics and is known as Algorithm AS 239.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.