41 lines
652 B
Plaintext
41 lines
652 B
Plaintext
#SCALE = 10000
|
|
#ARRINT= 2000
|
|
|
|
Procedure Pi(Digits)
|
|
Protected First=#True, Text$
|
|
Protected Carry, i, j, sum
|
|
Dim Arr(Digits)
|
|
For i=0 To Digits
|
|
Arr(i)=#ARRINT
|
|
Next
|
|
i=Digits
|
|
While i>0
|
|
sum=0
|
|
j=i
|
|
While j>0
|
|
sum*j+#SCALE*arr(j)
|
|
Arr(j)=sum%(j*2-1)
|
|
sum/(j*2-1)
|
|
j-1
|
|
Wend
|
|
Text$ = RSet(Str(Carry+sum/#SCALE),4,"0")
|
|
If First
|
|
Text$ = ReplaceString(Text$,"3","3.")
|
|
First = #False
|
|
EndIf
|
|
Print(Text$)
|
|
Carry=sum%#SCALE
|
|
i-14
|
|
Wend
|
|
EndProcedure
|
|
|
|
If OpenConsole()
|
|
SetConsoleCtrlHandler_(?Ctrl,#True)
|
|
Pi(24*1024*1024)
|
|
EndIf
|
|
End
|
|
|
|
Ctrl:
|
|
PrintN(#CRLF$+"Ctrl-C was pressed")
|
|
End
|