みなさん、リーマン予想にはまっていますね?!
!リーマンのゼータ関数
!ζ(s)=1/(1-2^(1-s))*∑[m=0,∞]{2^(-(m+1))*∑[j=0,m]{(-1)^j*comb(m,j)*(j+1)^(-s)}}
LET t0=TIME
LET M=50 !1850
DIM C(0 TO M) !∑2^(-(M+1))*∑comb(M,J)
LET C(0)=1
FOR K=1 TO M !パスカルの三角形のM段より、二項係数comb(m,j)を求める
FOR J=K TO 1 STEP -1
LET C(J)=(C(J)+C(J-1))/2 !※2^(-(m+1))も加味する
NEXT J
NEXT K
FUNCTION fnZeta(S) !リーマンのゼータ関数
local J,U
LET U=0
FOR J=0 TO M
LET U=U+(-1)^J*C(J)/(J+1)^S
NEXT J
LET U=U/(1-2^(1-S))
LET fnZeta=U
END FUNCTION
PRINT C(M) !debug
PRINT fnZeta(2) - PI*PI/6
PRINT "計算時間=";TIME-t0
END
私も、実数の範囲で計算させてみて、多桁の複素数計算の実装を考えようとしたのですが、
荒田浩二さんがすでに着手されたようで、、、
1000桁モードでは二項係数を求めるのに、苦戦しているようで時間がかかっています。
10進モードや2進モードや複素数モードの17桁程度では、M=50で十分でしょう。
50桁精度の場合は、M=100で十分でしょう。