mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* stdlib tests now check refc too * typo * fixes line numbers * disable cpp * do not touch
62 lines
1.7 KiB
Nim
62 lines
1.7 KiB
Nim
discard """
|
|
matrix: "--mm:refc; --mm:orc"
|
|
"""
|
|
|
|
import std/[stats, assertions]
|
|
import std/math
|
|
|
|
|
|
func `~=`(x, y: float32): bool =
|
|
math.almostEqual(x, y)
|
|
|
|
template main() =
|
|
var rs: RunningStat
|
|
rs.push(@[1.0, 2.0, 1.0, 4.0, 1.0, 4.0, 1.0, 2.0])
|
|
doAssert(rs.n == 8)
|
|
doAssert rs.mean ~= 2.0
|
|
doAssert rs.variance() ~= 1.5
|
|
doAssert rs.varianceS() ~= 1.71428571
|
|
doAssert rs.skewness() ~= 0.81649658
|
|
doAssert rs.skewnessS() ~= 1.01835015
|
|
doAssert rs.kurtosis() ~= -1.0
|
|
doAssert rs.kurtosisS() ~= -0.7000000000000001
|
|
|
|
var rs1, rs2: RunningStat
|
|
rs1.push(@[1.0, 2.0, 1.0, 4.0])
|
|
rs2.push(@[1.0, 4.0, 1.0, 2.0])
|
|
let rs3 = rs1 + rs2
|
|
doAssert rs3.variance ~= rs.variance
|
|
doAssert rs3.skewness ~= rs.skewness
|
|
doAssert rs3.kurtosis ~= rs.kurtosis
|
|
rs1 += rs2
|
|
doAssert rs1.variance ~= rs.variance
|
|
doAssert rs1.skewness ~= rs.skewness
|
|
doAssert rs1.kurtosis ~= rs.kurtosis
|
|
rs1.clear()
|
|
rs1.push(@[1.0, 2.2, 1.4, 4.9])
|
|
doAssert rs1.sum ~= 9.5
|
|
doAssert rs1.mean() ~= 2.375
|
|
|
|
when not defined(cpu32):
|
|
# XXX For some reason on 32bit CPUs these results differ
|
|
var rr: RunningRegress
|
|
rr.push(@[0.0, 1.0, 2.8, 3.0, 4.0], @[0.0, 1.0, 2.3, 3.0, 4.0])
|
|
doAssert rr.slope() ~= 0.9695585996955861
|
|
doAssert rr.intercept() ~= -0.03424657534246611
|
|
doAssert rr.correlation() ~= 0.9905100362239381
|
|
var rr1, rr2: RunningRegress
|
|
rr1.push(@[0.0, 1.0], @[0.0, 1.0])
|
|
rr2.push(@[2.8, 3.0, 4.0], @[2.3, 3.0, 4.0])
|
|
let rr3 = rr1 + rr2
|
|
doAssert rr3.correlation() ~= rr.correlation()
|
|
doAssert rr3.slope() ~= rr.slope()
|
|
doAssert rr3.intercept() ~= rr.intercept()
|
|
|
|
block: # bug #18718
|
|
var rs: RunningStat
|
|
rs.push(-1.0)
|
|
doAssert rs.max == -1.0
|
|
|
|
static: main()
|
|
main()
|