From ccdeb77f3fc2e48f876483d722a037cedf3f2167 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Sat, 20 May 2023 23:06:34 -0400 Subject: [PATCH] feat: remove odd log implementation, get normal, lognormal & to --- wip/nim/samples | Bin 126344 -> 136400 bytes wip/nim/samples.nim | 57 ++++++++++++++++++++++++++------------------ 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/wip/nim/samples b/wip/nim/samples index 5c675c4de3db96a6d068553b07862025580d7025..d2fece247dcbc486bb0019624070d7e7fd0573e7 100755 GIT binary patch delta 51074 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

UYNL(-B#k)yMkocTqPLm|N zU%W|BD}z?o?io*A?>=_S>F)2;*MGKG9|ui1_fu@Mn8{D>4P7ixow80%+{pzd=r`rO(!McUL(n4N2!<*w+VEy|AnPw<@PY-S{uW!{JVD`|q9Zb$_fU_swRG K+x|PJ)&BwY^|gio delta 40005 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 diff --git a/wip/nim/samples.nim b/wip/nim/samples.nim index 0187f154..2b395b76 100644 --- a/wip/nim/samples.nim +++ b/wip/nim/samples.nim @@ -1,7 +1,7 @@ import std/math import std/random -# randomize() +randomize() ## Basic math functions proc factorial(n: int): int = @@ -23,18 +23,6 @@ proc sine(x: float): float = return acc ## Log function - -## Old implementation using Taylor expansion -proc log_slow(x: float): float = - var y = x - 1 - let n = 100000000 - var acc = 0.0 - for i in 1..n: - let taylor = pow(-1.0, float(i+1)) * pow(y, i.float) / i.float - acc = acc + taylor - return acc - -## New implementation ## ## Arithmetic-geomtric mean @@ -64,16 +52,39 @@ proc log(x: float): float = return ( PI / (2.0 * ag(1, 4.0/s)) ) - m * ln2 ## Test these functions -echo factorial(5) -echo sine(1.0) -echo log(1.0) -echo log(2.0) -echo log(3.0) -echo pow(2.0, 32.float) - +## echo factorial(5) +## echo sine(1.0) +## echo log(0.1) +## echo log(2.0) +## echo log(3.0) +## echo pow(2.0, 32.float) + ## Distribution functions -proc normal(): float = + +## Normal +## +proc ur_normal(): float = let u1 = rand(1.0) let u2 = rand(1.0) - let z = 1 - # see https://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform#Basic_form + let z = sqrt(-2.0 * log(u1)) * sine(2 * PI * u2) + return z + +proc normal(mean: float, sigma: float): float = + return (mean + sigma * ur_normal()) + +proc lognormal(logmean: float, logsigma: float): float = + let answer = pow(E, normal(logmean, logsigma)) + return answer + +proc to(low: float, high: float): float = + let normal95confidencePoint = 1.6448536269514722 + let loglow = log(low) + let loghigh = log(high) + let logmean = (loglow + loghigh)/2 + let logsigma = (loghigh - loglow) / (2.0 * normal95confidencePoint); + return lognormal(logmean, logsigma) + +echo ur_normal() +echo normal(10, 20) +echo lognormal(2, 4) +echo to(10, 90)