円周率πの近似値1億桁の壁が突破できない

円周率πの近似値1億桁の壁が突破できない.8千万桁まではクリアしているが,一億桁を超えられない.比較検証用にJulia 備え付けπの基準値を用いれば多分パスするはずだが,ある種の循環論法になってしまうのでやりたくない.基準π値を用いない方法として,Julia の標準三角関数にπを代入して確認する方法を試している.sinπ=0,cosπ=1,tan(π/4)=1となるから,これらと一致すれば,得られたπ値は(指定精度の近似値として)正しいと言える.tanで試してみた結果は,

Precision set to 536870912 bits, which is approximately 161614248 decimal digits.
Θ = 2.382564904887951073216169781732674520415196125559e-323228497,N=1073741824
z = 1.000000000000000000000000e+00 + 7.485048401896851550940689e-323228497 i
sinΘ = 7.485048401896851550940688646230092416056892404614e-323228497
pai = 3.1415926535897932384626433832795028841971693993751058209749445923e+00
n=1, Θ=2.382564904887951073216170e-323228497 tanp4=1.000000000000000000000000e+00

tanp4=tan(pai/4) とBigFloat(1)を比較しているのだが,一致しない.多分,tan4pに微小な端数が残っているのだろう.1とtan(pai/4)の差分Δがゼロに等しいことの代わりに,Δ<θ で代用することは考えられる.このロジックではθ~0とみなされ.これまでにも,この方法は試みてはいるのだが,そこまでゆく前に極微小量の計算でクラッシュしてしまっていた.tanに切り替えたのはそれを回避するためだが,もしかすればうまくゆく可能性はあるような気がする.

ダメだ.Δ=1-tan(pai/4)として,Δ > θ になってしまう.Δ=4.88e-161614249 で.θ=2.38e^323228497.Δは設定された精度で1だが,θは擬似的な0なのでそれよりもずっと小さい.これは避けられないと思う.base~1なので,これと比較すればよいのでは?いや,BigFloat(1)と比較しているのだから,それもおかしい.どうしたらよいのだろう?打つ手がなくなってきた...

現行とは逆にθをより小さくする方向で動かしたらどうなるか?いや,現行ではNはnに従って増加するようになっているのだから,θは小さくなっているのではないか?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA