Anonymous user
Cumulative standard deviation: Difference between revisions
moved ooRexx to it's proper place. -- ~~~~
(moved ooRexx to it's proper place. -- ~~~~) |
|||
Line 1,319:
Standard deviation: 2
</pre>
=={{header|ooRexx}}==
{{works with|oorexx}}▼
This is indeed Object REXX.▼
<lang rexx>sdacc = .SDAccum~new▼
x = .array~of(2,4,4,4,5,5,7,9)▼
sd = 0▼
do i = 1 to x~size▼
sd = sdacc~value(x[i])▼
end▼
say "std dev = "sd▼
::class SDAccum▼
::method sum attribute▼
::method sum2 attribute▼
::method count attribute▼
::method init▼
self~sum = 0.0▼
self~sum2 = 0.0▼
self~count = 0▼
::method value▼
expose sum sum2 count▼
parse arg x▼
sum = sum + x▼
sum2 = sum2 + x*x▼
count = count + 1▼
return self~stddev▼
::method mean▼
expose sum count▼
return sum/count▼
::method variance▼
expose sum2 count▼
m = self~mean▼
return sum2/count - m*m▼
::method stddev▼
return self~sqrt(self~variance)▼
::method sqrt▼
arg n▼
if n = 0 then return 0▼
ans = n / 2▼
prev = n▼
do until prev = ans▼
prev = ans▼
ans = ( prev + ( n / prev ) ) / 2▼
end▼
return ans</lang>▼
=={{header|PARI/GP}}==
Line 1,673 ⟶ 1,723:
=={{header|REXX}}==
<lang rexx>
▲{{works with|oorexx}}
</lang>
▲This is indeed Object REXX.
▲<lang rexx>sdacc = .SDAccum~new
▲x = .array~of(2,4,4,4,5,5,7,9)
▲sd = 0
▲do i = 1 to x~size
▲ sd = sdacc~value(x[i])
▲end
▲say "std dev = "sd
▲::class SDAccum
▲::method sum attribute
▲::method sum2 attribute
▲::method count attribute
▲::method init
▲ self~sum = 0.0
▲ self~sum2 = 0.0
▲ self~count = 0
▲::method value
▲ expose sum sum2 count
▲ parse arg x
▲ sum = sum + x
▲ sum2 = sum2 + x*x
▲ count = count + 1
▲ return self~stddev
▲::method mean
▲ expose sum count
▲ return sum/count
▲::method variance
▲ expose sum2 count
▲ m = self~mean
▲ return sum2/count - m*m
▲::method stddev
▲ return self~sqrt(self~variance)
▲::method sqrt
▲ arg n
▲ if n = 0 then return 0
▲ ans = n / 2
▲ prev = n
▲ do until prev = ans
▲ prev = ans
▲ ans = ( prev + ( n / prev ) ) / 2
▲ end
▲ return ans</lang>
=={{header|Ruby}}==
|