有理数モードで多倍長計算

 投稿者:しばっち  投稿日:2016年 8月 6日(土)18時25分6秒
  1000桁モードは小数点1000桁までの計算が可能ですが、
有理数モードでは誤差がなく、その桁数はメモリー次第であり、小数点1000桁以上の精度を持つことができます。
ここでは有理数モードを使用し eを2500桁,2の平方根を5000桁,円周率2000桁を末位まで正確に求めます。
有理数→小数の変換に PRINT USING文では1000桁までなので使用しません。

OPTION ARITHMETIC RATIONAL
LET L=LEXP(1)
CALL DIV(L,2500)
PRINT
LET L=SQRT(2)
CALL DIV(L,5000)
PRINT
LET KETA=2000
LET L=183*ATAN(239,INT(KETA/4.75680340489133))+32*ATAN(1023,INT(KETA/6.01975126742432))-68*ATAN(5832,INT(KETA/7.53163503061984))+12*ATAN(110443,INT(KETA/10.0862763900263))-12*ATAN(4841182,INT(KETA/13.3699028197374))-100*ATAN(6826318,INT(KETA/13.6683730315326))
CALL DIV(4*L,KETA)
END

EXTERNAL  FUNCTION LEXP(X)
OPTION ARITHMETIC RATIONAL
LET S=1
LET SIGN=1
IF X<0 THEN
   LET SIGN=-1
   LET X=ABS(X)
END IF
FOR I=1 TO 1000 !'1/1000!≒10^(-2500)
   LET X=X/I*SIGN
   LET S=S+X
NEXT I
LET LEXP=S
END FUNCTION

EXTERNAL  FUNCTION SQRT(T)
OPTION ARITHMETIC RATIONAL
LET X=ABS(T)
FOR I=1 TO 13 !'12~13回程度
   LET X=X-(X*X-T)/(2*X) !'ニュートン法
NEXT I
LET SQRT=X
END FUNCTION

EXTERNAL  FUNCTION ATAN(X,NN) !'arctan(x)
OPTION ARITHMETIC RATIONAL
LET XX=1+X*X
LET S=1
LET A=1
FOR N=1 TO NN
   LET A=A*(2*N)/(2*N+1)/XX
   LET S=S+A
NEXT N
LET S=S*X/(1+X*X)
LET ATAN=S
END FUNCTION

EXTERNAL  SUB DIV(S,KETA) !'有理数→小数
OPTION ARITHMETIC RATIONAL
LET M=5          !'遅い時は M=10にする
LET A=NUMER(S)
LET B=DENOM(S)
FOR I=0 TO INT(KETA/M)
   LET Q=INT(A/B)
   LET R=A-Q*B
   LET A=R*10^M
   IF I=0 THEN
      PRINT Q;"."
   ELSE
      PRINT USING REPEAT$("%",M):Q;
      IF MOD(I,100/M)<>0 AND (MOD(I,5/M)=0 OR MOD(I,10/M)=0) THEN PRINT " ";
      IF MOD(I,100/M)<>0 AND MOD(I,50/M)=0 THEN PRINT "  ";
      IF MOD(I,100/M)=0 THEN PRINT ":";I*M
      IF MOD(I,1000/M)=0 THEN PRINT
   END IF
NEXT I
END SUB
 

Re: 有理数モードで多倍長計算

 投稿者:たろさ  投稿日:2016年 8月11日(木)10時20分6秒
  > No.4111[元記事へ]

しばっちさんへのお返事です。

大変勉強になりました。ありがとうございます。

私事ですが、自分の子供が全国中学校体育大会に参加するため
私はお祭り騒ぎのサポートに追われています。遅くなってごめんなさい。

皆様のご教授を元にスポーツに置き換えて応用しています。

錯覚かもしれません。でも、私の場合はこころの支えです。

人のこころは虚ろだから役に立つものだとすれば

虚ろなものを支えるのは

確率でしょうか?

その他にも何かあるのは感じますが錯覚かもしれません。

満身創痍 慢心

primenumber

素数を数える

地道な活動を続けようと思っています。

わたしはカメさんチームの潤滑油になれたらナノテクですが

電子の数で何が決まるのでしょうか?

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

 

戻る