EXPORT Keta := 1000; EXPORT d := 8; EXPORT ARRYS := floor((Keta+(d-1))/d)+1; EXPORT DIGIT := 10^d; // div L4(A)/f -> L4(B) div_A_f(f) BEGIN LOCAL i, w, t; LOCAL cy := 0; FOR i FROM 1 TO ARRYS DO t := cy*DIGIT+L4(i); w := floor(t / f); cy := t - w*f; L4(i) := w; END; END; // mul L4(A)*f -> L4(B) mul_A_f(f) BEGIN LOCAL i, w; LOCAL cy := 0; FOR i FROM ARRYS DOWNTO 1 DO w := L4(i)*f+cy; cy := floor(w/DIGIT); L4(i) := w-cy*DIGIT; END; END; EXPORT PI_CALC2() BEGIN LOCAL i, n, f, s, t; LOCAL str0,str1; // array initialize L4:=MAKELIST(0.0,X,1,ARRYS,1); // loop countre n := Keta/log(2); print(); print("PI "+d+"*"+ARRYS+"="+Keta+" DIGIT vZI"); s:=TICKS; FOR f FROM floor(n) DOWNTO 1 DO // A * f -> A mul_A_f(f); // A / f -> A div_A_f(f*2+1); // A + 2 -> A L4(1) := L4(1)+2; TEXTOUT_P("COUNT="+f+" ", 0, 50,0,#0,100,#FFFFFF); t:=TICKS-s; TEXTOUT_P("time: "+t/1000+"b",0,80,0,#0,100,#FFFFFF); END; t:=TICKS; print(); print("Calculation time: "+(t-s)/1000+"b"); print("PI=3."); str1 := ""; FOR i FROM 2 TO ARRYS DO str0 := string(L4(i)); while dim(str0)1 DO str0 := str0+left(str1,10)+" "; str1 := mid(str1,11); END; print(str0); END;