46 lines
1 KiB
Text
46 lines
1 KiB
Text
INCLUDE "H6:REALMATH.ACT"
|
|
|
|
REAL sum,sum2
|
|
INT count
|
|
|
|
PROC Calc(REAL POINTER x,sd)
|
|
REAL tmp1,tmp2,tmp3
|
|
|
|
RealAdd(sum,x,tmp1) ;tmp1=sum+x
|
|
RealAssign(tmp1,sum) ;sum=sum+x
|
|
RealMult(x,x,tmp1) ;tmp1=x*x
|
|
RealAdd(sum2,tmp1,tmp2) ;tmp2=sum2+x*x
|
|
RealAssign(tmp2,sum2) ;sum2=sum2+x*x
|
|
count==+1
|
|
IF count=0 THEN
|
|
IntToReal(0,sd) ;sd=0
|
|
ELSE
|
|
IntToReal(count,tmp1)
|
|
RealMult(sum,sum,tmp2) ;tmp2=sum*sum
|
|
RealDiv(tmp2,tmp1,tmp3) ;tmp3=sum*sum/count
|
|
RealDiv(tmp3,tmp1,tmp2) ;tmp2=sum*sum/count/count
|
|
RealDiv(sum2,tmp1,tmp3) ;tmp3=sum2/count
|
|
RealSub(tmp3,tmp2,tmp1) ;tmp1=sum2/count-sum*sum/count/count
|
|
Sqrt(tmp1,sd) ;sd=sqrt(sum2/count-sum*sum/count/count)
|
|
FI
|
|
RETURN
|
|
|
|
PROC Main()
|
|
INT ARRAY values=[2 4 4 4 5 5 7 9]
|
|
INT i
|
|
REAL x,sd
|
|
|
|
Put(125) PutE() ;clear screen
|
|
MathInit()
|
|
IntToReal(0,sum)
|
|
IntToReal(0,sum2)
|
|
count=0
|
|
FOR i=0 TO 7
|
|
DO
|
|
IntToReal(values(i),x)
|
|
Calc(x,sd)
|
|
Print("x=") PrintR(x)
|
|
Print(" sum=") PrintR(sum)
|
|
Print(" sd=") PrintRE(sd)
|
|
OD
|
|
RETURN
|