time-to-botec/wip/nim/samples.nim

33 lines
639 B
Nim
Raw Normal View History

2023-05-21 01:13:51 +00:00
import std/random
import std/math
# randomize()
proc pow2(x:float, y:int): float =
return pow(x, float(y))
proc sine(x: float): float =
let n = 100
2023-05-21 01:45:01 +00:00
var acc = 0.0
2023-05-21 01:13:51 +00:00
for i in 0..n:
let k = 2*n + 1
2023-05-21 01:45:01 +00:00
let taylor = pow2(x, k) / float(k)
acc = acc + taylor
return acc
2023-05-21 01:13:51 +00:00
proc log(x: float): float =
var y = x - 1
let n = 1000
for i in 1..n:
2023-05-21 01:45:01 +00:00
let taylor = pow2(-1.0, n+1) * pow2(y, n) / float(n)
2023-05-21 01:13:51 +00:00
result = result + taylor
return result
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
2023-05-21 01:45:01 +00:00
echo sine(0.1)