summaryrefslogtreecommitdiff
path: root/sterling_approx.awk
diff options
context:
space:
mode:
authorwukong <wukong@longaeva>2018-11-04 10:59:44 -0800
committerwukong <wukong@longaeva>2018-11-04 10:59:44 -0800
commite14342e827e2b42e43c006df90c7ad99e5124b3c (patch)
treec73e930f3b111bb659957df1509e7d9f5a3c8493 /sterling_approx.awk
parent72fdb25210c579beaabc35cae7ec803436887f20 (diff)
added gaussian.awk based on hamming script;
added pwr(x,p) function to sterling_approx; minor clean up all around;
Diffstat (limited to '')
-rw-r--r--sterling_approx.awk7
1 files changed, 6 insertions, 1 deletions
diff --git a/sterling_approx.awk b/sterling_approx.awk
index ca119ac..62825b3 100644
--- a/sterling_approx.awk
+++ b/sterling_approx.awk
@@ -12,12 +12,17 @@
### sterling_approx.awk
# https://en.wikipedia.org/wiki/Stirling%27s_approximation
+function pwr(x, p) {
+ return p ? exp(p*log(x)) : 1
+}
+
BEGIN {
+ #OFMT = "%.18g"
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))
+ f = sqrt(2*pi*n)*pwr(n*exp(-1), n)*(1 + 1/(12*n) + 1/(288*n*n) - 139/(51840*n*n*n) - 571/(2488320*n*n*n*n))
}
printf(OFMT ORS, f)
}