Gamma function: Difference between revisions
Content added Content deleted
m (→mpfr version: removed notonline marker) |
(Gamma function en BASIC256) |
||
Line 702: | Line 702: | ||
2.00 0.95951 |
2.00 0.95951 |
||
</pre> |
</pre> |
||
=={{header|BASIC256}}== |
|||
{{trans|FreeBASIC}} - Stirling method. |
|||
{{trans|Phix}} - Lanczos method. |
|||
<lang freebasic>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</lang> |
|||
=={{header|BBC BASIC}}== |
=={{header|BBC BASIC}}== |