円周率5万桁の出力に成功しました。

 投稿者:たろさ  投稿日:2016年10月21日(金)00時32分50秒
  !PiRamanujan.BAS
OPTION ARITHMETIC RATIONAL
LET t0=TIME
LET kou=1
LET s=kou*1103
LET i=1
DO
   LET kou=kou*(4*i-1)*(4*i-2)*(4*i-3)/(6147814464*i^3)
   LET s=s+kou*(26390*i+1103)
   !PRINT s
   LET i=i+1
LOOP WHILE ABS(kou)>1E-10001 !EPS(0)
LET x=8 ! SQR(8)をコンパイラに事前に計算させないため
LET s=9801/(s*SQRT(x))

!PRINT USING"#." & REPEAT$("#",999): s
!PRINT USING"#." & REPEAT$("#",999): PI

LET TM=TIME-t0
PRINT USING"####." & REPEAT$("#",2):TM;
PRINT "秒"


LET t0=TIME

LET s=s-3
PRINT "3."
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>1E4-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,10001)
   LET bb=ROUND(b,10001)
LOOP UNTIL aa=bb
LET SQRT=b
END FUNCTION
-----------------------------------------------------
1万桁の設定

設定方法は

LOOP WHILE ABS(kou)>1E-10001 !EPS(0)

LOOP UNTIL cc>1E4-1

   LET aa=ROUND(a,10001)
   LET bb=ROUND(b,10001)

4ヶ所 5万桁の精度確認済

5万桁計算時間 4時間22分54.06秒

■ パソコン環境
 ウィンドウズ : Microsoft Windows 7
 サービスパック : なし
 システムの種類 : 32 ビット
        メモリー : 3.00 GB
   プロセッサー :Intel Core i7 4790K

Processor 1 ID = 0
Number of cores 4 (max 8)
Number of threads 8 (max 16)
Name Intel Core i7 4790K
Codename Haswell
Specification Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
Package (platform ID) Socket 1150 LGA (0x1)
CPUID 6.C.3
Extended CPUID 6.3C
Core Stepping C0
Technology 22 nm
TDP Limit 88.0 Watts
Tjmax 100.0 ーC
Core Speed 4499.0 MHz
Multiplier x Bus Speed 45.0 x 100.0 MHz
Stock frequency 4000 MHz
Instructions sets MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, EM64T, VT-x, AES, AVX, AVX2, FMA3, TSX
L1 Data cache 4 x 32 KBytes, 8-way set associative, 64-byte line size
L1 Instruction cache 4 x 32 KBytes, 8-way set associative, 64-byte line size
L2 cache 4 x 256 KBytes, 8-way set associative, 64-byte line size
L3 cache 8 MBytes, 16-way set associative, 64-byte line size
FID/VID Control yes



精度確認は 円周率 (π, PI) を参照しました。

有理数モードの小数点以下の出力を、知る限り試しましたが、上手くできませんでした。

0をまたぐとズレます。よい方法教えて下さい。

http://blogs.yahoo.co.jp/donald_stinger

 

戻る