blob: ca119ac169af59016764c047c457ca9264f24cc1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#!/usr/bin/awk -f
# https://en.wikipedia.org/wiki/Sterling_Approximation
# An alternative approximation for the Gamma function stated by Srinivasa
# Ramanujan (Ramanujan 1988) is
# Gamma(1+x) ~= sqrt(pi)((x/e)^x)(8x^3 + 4x^2 + x + 1/30)^(1/6)
# for x >= 0. The equivalent approximation for ln(n!) has an asymptotic error
# of 1/(1400*n^3) ...
### sterling_approx.awk
# https://en.wikipedia.org/wiki/Stirling%27s_approximation
BEGIN {
ARGV[1] ? n = ARGV[1] : n = 0
pi = 4*atan2(1,1)
f = 0
if (n > 0) {
f = sqrt(2*pi*n)*exp(n*log(n*exp(-1)))*(1 + 1/(12*n) + 1/(288*n*n) - 139/(51840*n*n*n) - 571/(2488320*n*n*n*n))
}
printf(OFMT ORS, f)
}
|