RosettaCodeData/Task/Standard-deviation/Icon/standard-deviation.icon

23 lines
427 B
Plaintext

rocedure 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