# Module: Distribution::Gamma::Ruby_

Extended by:
Math
Defined in:
lib/distribution/gamma/ruby.rb

## Class Method Summary collapse

• Gamma cumulative distribution function.

• Gamma distribution probability density function.

## Class Method Details

### .cdf(x, a, b) ⇒ Object

Gamma cumulative distribution function

 ``` 37 38 39 40 41 42 43``` ```# File 'lib/distribution/gamma/ruby.rb', line 37 def cdf(x, a, b) return 0.0 if x <= 0.0 y = x.quo(b) return (1 - Math::IncompleteGamma.q(a, y)) if y > a (Math::IncompleteGamma.p(a, y)) end```

### .pdf(x, a, b) ⇒ Object

Gamma distribution probability density function

If you're looking at Wikipedia's Gamma distribution page, the arguments for this pdf function correspond as follows:

• +x+: same
• +a+: alpha or k
• +b+: theta or 1/beta

This is confusing! But we're trying to most closely mirror the GSL function for the gamma distribution (see references).

Adapted the function itself from GSL-1.9 in rng/gamma.c: gsl_ran_gamma_pdf

==References

 ``` 24 25 26 27 28 29 30 31 32 33 34``` ```# File 'lib/distribution/gamma/ruby.rb', line 24 def pdf(x, a, b) return 0 if x < 0 if x == 0 return 1.quo(b) if a == 1 return 0 elsif a == 1 Math.exp(-x.quo(b)).quo(b) else Math.exp((a - 1) * Math.log(x.quo(b)) - x.quo(b) - Math.lgamma(a).first).quo(b) end end```