|8Bh||FN$VAR||calculate variance 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.|
Returns the sample variance 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 variance differs from the population variance in assuming that the data set provided constitutes a sample of the data rather than the complete population.
The sample variance has the formula:
N var(Xi) = (Sigma (Xi-Xm)**2)/(N-1) i=1
where Xm is the arithmetic mean.
If the complete data set IS provided, the population variance can be calculated by multiplying the sample variance by (N-1)/N.
The following code calculates the sample variance 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$VAR ;VARIANCE ON STACK BCS ERROR2 RTS
|Errors|| 253 - exponent overflow
249 - stack overflow