RosettaCodeData/Task/Cumulative-standard-deviation/Icon/cumulative-standard-deviation.icon

23 lines
427 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
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