30 lines
832 B
Plaintext
30 lines
832 B
Plaintext
print " x Stirling Lanczos"
|
|
print
|
|
for i = 1 to 20
|
|
d = i / 10.0
|
|
print d;
|
|
print chr(9); ljust(string(gammaStirling(d)), 13, "0");
|
|
print chr(9); ljust(string(gammaLanczos(d)), 13, "0")
|
|
next i
|
|
end
|
|
|
|
function gammaStirling (x)
|
|
e = exp(1) # e is not predefined in BASIC256
|
|
return sqr(2.0 * pi / x) * ((x / e) ^ x)
|
|
end function
|
|
|
|
function gammaLanczos (x)
|
|
dim p = {0.99999999999980993, 676.5203681218851, -1259.1392167224028, 771.32342877765313, -176.61502916214059, 12.507343278686905, -0.13857109526572012, 9.9843695780195716e-6, 1.5056327351493116e-7}
|
|
|
|
g = 7
|
|
if x < 0.5 then return pi / (sin(pi * x) * gammaLanczos(1-x))
|
|
x -= 1
|
|
a = p[0]
|
|
t = x + g + 0.5
|
|
|
|
for i = 1 to 8
|
|
a += p[i] / (x + i)
|
|
next i
|
|
return sqr(2.0 * pi) * (t ^ (x + 0.5)) * exp(-t) * a
|
|
end function
|