Statistics/Chi-squared distribution: Difference between revisions

m
gamma
m (correct formula)
m (gamma)
Line 82:
 
 
""" gamma function for x, using the MPFR library """
function gamma(xa, 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"))
returnif Float64(z)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
 
4,108

edits