アカウント名:
パスワード:
毎回ひとけた目から計算って、なんかもったいない。
前回結果をサーバーにアップロードし、次回はそこから400万桁を計算とかすると未知の領域までいけるんじゃないでしょうか。
それがそうでも無いんですよ。
binary splitting を使うと、過去の計算結果を有効利用することは可能です。挙げられた資料中にもありますが、円周率の計算は最終結果が出るまで分数の形式で保存しているわけですが、10兆桁の計算をする時には、前半5兆桁の計算結果と後半5兆桁分の計算結果から計算するような形になります。(厳密にはもうちょっと複雑ですけど)
データ量がたくさん必要なのは確かにそうなのですが、最終結果の直前のデータだけ取っておけばいいので、大体求めた円周率のデータの5倍くらいです。
なので、ゼロから計算し直すのに比べると、三分の一位の時間は節約できるんじゃないですかね。
実際のところ結果をまとめる一か所で行う計算が結構時間がかかるので、あまり分散には向かないですけどね。再帰的にある程度の塊に分割して結果をやり取りすることは可能ですけど、ネットワーク越しにデータをやり取りするコストを考えると、手元で計算したほうが早い感じです。
#世界記録級の円周率の計算なんて、CPU のベンチマークというよりも、メモリやディスクI/O のベンチマークをしているようなものですけど。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常
スーパーPi クラウド対応できませんかね? (スコア:0)
毎回ひとけた目から計算って、なんかもったいない。
前回結果をサーバーにアップロードし、次回はそこから400万桁を計算とかすると
未知の領域までいけるんじゃないでしょうか。
Re: (スコア:2, 参考になる)
P.10に「nを1つ進めるごとに約14桁精度が上がる」とあるので、大ざっぱには、X/14個の小数点以下X桁の値を計算し、
それらを全部を足したら、X桁目まで正確なπになるとかそういう感じ。
表で考えると、縦がX/14行、横がX列の表を作って、その各枠に入る数字を全部求めれば良いことになる。
例えば、この方法で140桁の円周率を求めたとすると、縦10行、横140列の表が完成する。
次の140桁まで正しい280桁の円周率を求めようとすると、必要となる表は縦20行、横280列。
Re: (スコア:2)
それがそうでも無いんですよ。
binary splitting を使うと、過去の計算結果を有効利用することは可能です。
挙げられた資料中にもありますが、円周率の計算は最終結果が出るまで分数の形式で保存しているわけですが、
10兆桁の計算をする時には、前半5兆桁の計算結果と後半5兆桁分の計算結果から計算するような形になります。
(厳密にはもうちょっと複雑ですけど)
データ量がたくさん必要なのは確かにそうなのですが、最終結果の直前のデータだけ取っておけばいいので、
大体求めた円周率のデータの5倍くらいです。
なので、ゼロから計算し直すのに比べると、三分の一位の時間は節約できるんじゃないですかね。
Re:スーパーPi クラウド対応できませんかね? (スコア:1)
Re:スーパーPi クラウド対応できませんかね? (スコア:1)
実際のところ結果をまとめる一か所で行う計算が結構時間がかかるので、あまり分散には向かないですけどね。
再帰的にある程度の塊に分割して結果をやり取りすることは可能ですけど、ネットワーク越しにデータをやり取りするコストを考えると、手元で計算したほうが早い感じです。
#世界記録級の円周率の計算なんて、CPU のベンチマークというよりも、メモリやディスクI/O のベンチマークをしているようなものですけど。