8Ch FN$STD calculate standard deviation of a list
Input Pointer on stack to floating-point numbers.
Word on stack specifying the number of floats.
Output Floating-point result on the stack.
Description

Returns the sample standard deviation of the floating-point numbers pointed to by the parameter on the run-time stack at RTA_SP. The number of floats is passed as a word on the stack at RTA_SP+2.

The result is pushed onto the run-time stack, leaving the input parameters intact.

The sample standard deviation differs from the population standard deviation in assuming that the data set provided constitutes a sample of the data rather than the complete population.

The sample standard deviation has the formula:

                   N
    std(Xi) = sqrt((Sigma (Xi-Xm)**2)/(N-1)) = sqrt(var(Xi))
                   i=1

where Xm is the arithmetic mean.

If the complete data set IS provided, the population standard deviation can be calculated by multiplying the sample standard deviation by sqrt((N-1)/N).

See also: technical manual > utility system services > floating point numbers

LZ...

Example The following code calculates the sample standard deviation of COUNT floats at TABFLOATS and leaves the result on the stack.
        LDD     RTA_SP:         ;CURRENT RUNTIME STACK POINTER
        SUBD    #4              ;PREPARE TO PUSH 2 WORDS
        XGDX
        CPX     ALA_FREE        ;ENOUGH MEMORY FREE?
        BCS     ERROR1          ;NO
        STX     RTA_SP:         ;NEW STACK POINTER
        LDD     #TABFLOATS      ;POINT TO TABLE OF FLOATS
        STD     0,X             ;POINTER ON STACK
        LDD     COUNT           ;COUNT OF FLOATS AT TABFLOATS
        STD     2,X             ;COUNT ON STACK
        OS      FN$STD          ;STD ON STACK
        BCS     ERROR2
        RTS
Errors 253 - exponent overflow
249 - stack overflow