37 lines
1.2 KiB
Text
37 lines
1.2 KiB
Text
100 REM Cumulative standard deviation
|
|
110 DECLARE EXTERNAL SUB Init
|
|
120 DECLARE EXTERNAL SUB Add
|
|
130 DECLARE EXTERNAL FUNCTION Deviation
|
|
140 DIM TestData(1 TO 8)
|
|
150 FOR I = 1 TO 8
|
|
160 READ TestData(I)
|
|
170 NEXT I
|
|
180 DATA 2, 4, 4, 4, 5, 5, 7, 9
|
|
190 CALL Init(N, Sum, SumOfSquares)
|
|
200 PRINT "N ITEM AVG STDDEV"
|
|
210 FOR I = LBOUND(TestData) TO UBOUND(TestData)
|
|
220 CALL Add(N, Sum, SumOfSquares, TestData(I))
|
|
230 PRINT USING "# ": I;
|
|
240 PRINT USING " # ": TestData(I);
|
|
250 PRINT USING "#.### ": Sum / I;
|
|
260 PRINT USING " #.###": Deviation(N, Sum, SumOfSquares)
|
|
270 NEXT I
|
|
280 END
|
|
290 !
|
|
300 EXTERNAL SUB Init(N, Sum, SumOfSquares)
|
|
310 REM The parameters N, Sum, SumOfSquares are passed by reference. So, the arguments must be variables.
|
|
320 LET N = 0
|
|
330 LET Sum = 0.0
|
|
340 LET SumOfSquares = 0.0
|
|
350 END SUB
|
|
360 !
|
|
370 EXTERNAL SUB Add(N, Sum, SumOfSquares, P)
|
|
380 REM The parameters N, Sum, SumOfSquares are passed by reference. So, the arguments must be variables.
|
|
390 LET N = N + 1
|
|
400 LET Sum = Sum + P
|
|
410 LET SumOfSquares = SumOfSquares + P ^ 2
|
|
420 END SUB
|
|
430 !
|
|
440 EXTERNAL FUNCTION Deviation (N, Sum, SumOfSquares)
|
|
450 LET Deviation = SQR(SumOfSquares / N - (Sum / N) ^ 2)
|
|
460 END FUNCTION
|