Statistics/Chi-squared distribution: Difference between revisions
Content added Content deleted
m (correct formula) |
m (gamma) |
||
Line 82: | Line 82: | ||
""" gamma function |
""" gamma function """ |
||
function gamma( |
function gamma(a, sigdigits = 8) |
||
p = [ 0.99999999999980993, 676.5203681218851, -1259.1392167224028, |
|||
isnan(x) && return x |
|||
771.32342877765313, -176.61502916214059, 12.507343278686905, |
|||
z, bigx = BigFloat(), BigFloat(x) |
|||
-0.13857109526572012, 9.9843695780195716e-6, 1.5056327351493116e-7 ] |
|||
ccall((:mpfr_gamma, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Int32), z, x, 0) |
|||
x = a |
|||
isnan(z) && throw(DomainError(x, "NaN for gamma in BigFloat library")) |
|||
if x < 0.5 |
|||
return π / (sinpi(x) * gamma(1.0 - x)) |
|||
else |
|||
x -= 1.0 |
|||
t = p[1] |
|||
for i in 1:8 |
|||
t += p[i+1] / (x + i) |
|||
end |
|||
end |
|||
w = x + 7.5 |
|||
return sqrt(2.0 * π) * w^(x+0.5) * exp(-w) * t |
|||
end |
end |
||