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