RosettaCodeData/Task/Cumulative-standard-deviation/Icon/cumulative-standard-deviation.icon
2023-07-01 13:44:08 -04:00

22 lines
427 B
Text

procedure main()
stddev() # reset state / empty
every s := stddev(![2,4,4,4,5,5,7,9]) do
write("stddev (so far) := ",s)
end
procedure stddev(x) # running standard deviation
static X,sumX,sum2X
if /x then { # reset state
X := []
sumX := sum2X := 0.
}
else { # accumulate
put(X,x)
sumX +:= x
sum2X +:= x^2
return sqrt( (sum2X / *X) - (sumX / *X)^2 )
}
end