16 lines
492 B
Nim
16 lines
492 B
Nim
import math, strutils
|
|
|
|
type SDAccum = object
|
|
sdN, sdSum, sdSum2: float
|
|
|
|
var accum: SDAccum
|
|
|
|
proc add(accum: var SDAccum; value: float): float =
|
|
# Add a value to the accumulator. Return the standard deviation.
|
|
accum.sdN += 1
|
|
accum.sdSum += value
|
|
accum.sdSum2 += value * value
|
|
result = sqrt(accum.sdSum2 / accum.sdN - accum.sdSum * accum.sdSum / (accum.sdN * accum.sdN))
|
|
|
|
for value in [float 2, 4, 4, 4, 5, 5, 7, 9]:
|
|
echo value, " ", formatFloat(accum.add(value), precision = -1)
|