RosettaCodeData/Task/Gamma-function/Maxima/gamma-function.maxima

22 lines
532 B
Plaintext

fpprec: 30$
gamma_coeff(n) := block([a: makelist(1, n)],
a[2]: bfloat(%gamma),
for k from 3 thru n do
a[k]: bfloat((sum((-1)^j * zeta(j) * a[k - j], j, 2, k - 1) - a[2] * a[k - 1]) / (1 - k * a[1])),
a)$
poleval(a, x) := block([y: 0],
for k from length(a) thru 1 step -1 do
y: y * x + a[k],
y)$
gc: gamma_coeff(20)$
gamma_approx(x) := block([y: 1],
while x > 2 do (x: x - 1, y: y * x),
y / (poleval(gc, x - 1)))$
gamma_approx(12.3b0) - gamma(12.3b0);
/* -9.25224705314470500985141176997b-15 */