!PiRamanujan.BAS の計算時間と精度確認の目的で作成
! √2 5万桁出力
OPTION ARITHMETIC RATIONAL
LET t0=TIME
LET s=SQRT(2)
!PRINT USING"#." & REPEAT$("#",999): s
LET TM=TIME-t0
PRINT USING"####." & REPEAT$("#",2):TM;
PRINT "秒"
LET t0=TIME
LET s=s-1
PRINT "1."
PRINT "[";STR$(1)&"-";STR$(1000)&"]"
PRINT
DO
LET s=s*10
LET b=INT(s)
LET cc=cc+1
IF MOD(cc,5)=0 THEN PRINT STR$(b)&" "; ELSE PRINT STR$(b);
IF MOD(cc,50)=0 THEN PRINT
IF MOD(cc,1000)=0 THEN
PRINT
PRINT "[";STR$(cc+1)&"-";STR$(cc+1000)&"]"
PRINT
END IF
LET s=s-b
LOOP UNTIL cc>5E4-1
PRINT
LET TM=TIME-t0
PRINT USING"####." & REPEAT$("#",2):TM;
PRINT "秒"
END
EXTERNAL FUNCTION SQRT(n)
OPTION ARITHMETIC RATIONAL
LET x=n !SQR(x)
LET z=0.5
LET a=(1+x)*z
LET b=x/a
DO
LET c=(a+b)*z
LET d=x/c
LET a=c
LET b=d
LET aa=ROUND(a,50001)
LET bb=ROUND(b,50001)
LOOP UNTIL aa=bb
LET SQRT=b
END FUNCTION
--------------------------------------
設定はLET s=SQRT(x) 欠点は数値が増大すると計算が遅くなる
有効桁数の設定
LET aa=ROUND(a,50001)
LET bb=ROUND(b,50001)
出力桁数の設定
LOOP UNTIL cc>5E4-1
計算時間 79.57秒 出力時間 303.22秒
■ パソコン環境
ウィンドウズ : Microsoft Windows 8.1
サービスパック : なし
システムの種類 : 32 ビット
プロセッサー : AMD Athlon(tm) 64 Processor 3800+
周波数 : 2.40 GHz
メモリー : 3.00 GB
出力時間を速くする方法を模索しています。
精度確認 ルート2 (square root of 2)
http://blogs.yahoo.co.jp/donald_stinger