From 7e2d2b95a17723ecb886d8acc1951fa32aebb96b Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Sat, 20 May 2023 22:24:30 -0400 Subject: [PATCH] tweak: save some progress. --- wip/nim/makefile | 2 ++ wip/nim/samples | Bin 122080 -> 122128 bytes wip/nim/samples.nim | 64 +++++++++++++++++++++++++++++++----------- wip/nim/sums/sums.nim | 3 +- 4 files changed, 51 insertions(+), 18 deletions(-) create mode 100644 wip/nim/makefile diff --git a/wip/nim/makefile b/wip/nim/makefile new file mode 100644 index 00000000..236cffdd --- /dev/null +++ b/wip/nim/makefile @@ -0,0 +1,2 @@ +build: samples.nim + nim c samples.nim diff --git a/wip/nim/samples b/wip/nim/samples index 724e5cc007224e49632dc9b03f6b998b5f7c27f7..bf7b6bf9296b9c13130179e9c98a92ce34753dd1 100755 GIT binary patch delta 10331 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%0DE7ZVPL0;2g@SraZ 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 a>0G`?bPc0~Tk7-9{jP|^4y0aHJN*x@gtV6c delta 9435 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 K(7DbM=CS&?V^fynw) zpqNTH`5Pqjh&`42OnE&jSFBlXk8EC!!pk;qO(@_K%v(=PlZ$oUhEfy)ZqpIqfqQx0 z-l9~_Pk)xbpNcr}H3DMduTTve)FEKh+!XtlM!q3=WkL4v7Uvcy`(qn5+>BWsA>{-q zU+g5tErM3Cyg|y5|NiHg=Ti>Lry=td;4H^HMhW7*7K7T$FdK00(izKm!&M5R(_;RmhG{Tx0*}YHV-~j0y%gNk1OgU zu|wxiR{>=h$~c}OuZPhx9xClTv;KK1D=1(WTH7V%3@O`MJ4sQH4d1e>b=GfED(5%w z70vu1n;9&dX+%XVcYw^DFMO%B5UOFjWn68wOC_&t zxhSKCh>PELk>8ii1j>7ly)1L~6V01nig%_Q*r{f!U`({aZLUln^-^+zkT+T7|9@l1 zprGC8`B7ONDXRlz7k;5Q$cE+}@pl62nRcg41k@q9`McGhjbuEoy5^obrgpW 2^100 + +proc log_slow(x: float): float = + # See: + 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 proc log(x: float): float = - var y = x - 1 - let n = 1000 - for i in 1..n: - let taylor = pow2(-1.0, n+1) * pow2(y, n) / float(n) - result = result + taylor - return result + return 1 +## Test these functions +echo factorial(5) +echo sine(1.0) +echo log(1.0) +echo log(2.0) + +## Distribution functions proc 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 - - -echo sine(0.1) diff --git a/wip/nim/sums/sums.nim b/wip/nim/sums/sums.nim index a49fe312..aac34608 100644 --- a/wip/nim/sums/sums.nim +++ b/wip/nim/sums/sums.nim @@ -1,5 +1,4 @@ import std/math -# randomize() proc factorial(n: int): int = if n == 0 or n < 0: @@ -19,5 +18,5 @@ proc sine(x: float): float = acc = acc + taylor return acc -# echo factorial(17) +echo factorial(17) echo sine(1.0)