INCLUDE "H6:REALMATH.ACT" DEFINE PTR="CARD" DEFINE REAL_SIZE="6" BYTE ARRAY realArray(1536) PTR FUNC RealArrayPointer(BYTE i) PTR p p=realArray+i*REAL_SIZE RETURN (p) PROC InitRealArray() REAL r2,r255,ri,div REAL POINTER pow INT i IntToReal(2,r2) IntToReal(255,r255) FOR i=0 TO 255 DO IntToReal(i,ri) RealDiv(ri,r255,div) pow=RealArrayPointer(i) Power(div,r2,pow) OD RETURN PROC CalcPi(INT n REAL POINTER pi) BYTE x,y INT i,counter REAL tmp1,tmp2,tmp3,r1,r4 REAL POINTER pow counter=0 IntToReal(1,r1) IntToReal(4,r4) FOR i=1 TO n DO x=Rand(0) pow=RealArrayPointer(x) RealAssign(pow,tmp1) y=Rand(0) pow=RealArrayPointer(y) RealAssign(pow,tmp2) RealAdd(tmp1,tmp2,tmp3) IF RealGreaterOrEqual(tmp3,r1)=0 THEN counter==+1 FI OD IntToReal(counter,tmp1) RealMult(r4,tmp1,tmp2) IntToReal(n,tmp3) RealDiv(tmp2,tmp3,pi) RETURN PROC Test(INT n) REAL pi PrintF("%I samples -> ",n) CalcPi(n,pi) PrintRE(pi) RETURN PROC Main() Put(125) PutE() ;clear the screen PrintE("Initialization of data...") InitRealArray() Test(10) Test(100) Test(1000) Test(10000) RETURN