summaryrefslogtreecommitdiffstats
path: root/test/lua/pcall_test.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/lua/pcall_test.lua')
-rw-r--r--test/lua/pcall_test.lua45
1 files changed, 45 insertions, 0 deletions
diff --git a/test/lua/pcall_test.lua b/test/lua/pcall_test.lua
new file mode 100644
index 0000000..26f3ae4
--- /dev/null
+++ b/test/lua/pcall_test.lua
@@ -0,0 +1,45 @@
+--[[ https://en.wikipedia.org/wiki/Normal_distribution ]]
+
+-- The Box–Muller method
+local function gaussian(mean, variance)
+ local U = math.random()
+ local V = math.random()
+ return math.sqrt(-2.0 * variance * math.log(U)) *
+ math.cos(2.0 * math.pi * V) + mean
+end
+
+local function mean(t)
+ local sum = 0
+ local count = #t
+ for i = 1, count do
+ sum = sum + t[i]
+ end
+ return sum / count
+end
+
+local function std(t, mean)
+ local squares = 0.0
+ for i = 1, #t do
+ local deviation = math.abs(mean - t[i])
+ squares = squares + deviation * deviation
+ end
+ local variance = squares / #t
+ return math.sqrt(variance)
+end
+
+local function do_the_call()
+ local t = {}
+ local mu = 34.0
+ local sigma = 10.0
+
+ for i = 1, 5 do
+ table.insert(t, gaussian(mu, sigma))
+ end
+
+ return string.format("Got mean: %1.5f, mu: %1.5f\nstd deviance:%1.5f, expected: %1.5f",
+ mean(t), mu,
+ std(t, mu), math.sqrt(sigma))
+end
+
+math.randomseed(os.time())
+return do_the_call