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