ふと、円周率の計算をしてみる。Wikipediaの記事 wikipedia:円周率 を参考にした。簡単な式は、
だが、これは見るからに収束が遅いので、次の式を使った。
高速化を目指すと大変そうなので、安易にRationalに頼って、少数化は、倍するだけ。
def fact(n) (1..n).inject(:*) or 1 end NMAX=130 KETA=77 sum=0 (0..NMAX).each do |n| sum += Rational(6*fact(2*n),2**(4*n+1)*fact(n)**2*(2*n+1)) w = (sum*10**KETA).to_i.to_s w[1,0] = "." puts w end