計算目的

ysd@KLab > 円周率 > 計算目的

お断り

私は金田研の学生ですが、以下に述べる「目的」と「金田先生が計算する目的」とは異なるかも知れません。講義や雑談などで聴いたことを元に、私なりに解釈してここに記述しているだけの物です。

目的

円周率を計算する目的を大きく2つに分けると、ハードウェア関連とソフトウェア関連に分かれます。

ハードウェア関連

まずハードウェア関連で言えば、コンピュータが

などを正確に行っているのかどうかを確認することにあります。計算途中で演算に誤りがあればもちろん結果は間違いますし、通信やI/Oに関しても同様です。また、これは通信やI/Oに関してですが、理論性能のうちどの程度まで実測で出せるかという検証にもなります。これ(実測性能/理論性能の比)が小さいと何かしらのトラブルがあることが検出できます。

あとは長時間動作させることによる熱暴走が起こらないことのチェックや、妙な高温部分(意図しない短絡)が無いかなどのチェックもできます。

ソフトウェア関連

次にソフトウェア関連ですが、

などが正しいのか、有用なのかということが確認できます。

アルゴリズムに関しては正しくなければそもそも正確な値が出ません。また、時間的なオーダを理論的に求められていたとしても、実際にそれを実装することが可能なのかどうかということも重要になります。

コンパイラは、正しくコンパイルしてくれるのは当然(それでも確認するでしょうが)として、最適がが適切に行われるかということも重要になります。例えば同じソースを前のバージョンでコンパイルして妙に遅くなっていたりしないかという確認を取るわけですね。

プログラムそれ自身というのは、言葉通りですが、同じ値を出すはずの計算を複数のパターンで行う(2002年の円周率記録で言えば高野喜久雄の公式とStormerの公式を使う)ことで確認を取るわけです。これは最終的な結果を保証するという意味でも重要です。

そして、どうせ動作確認をするなら何か少しでも意味のある(そして正確さの確認が出来る)事をしようということで円周率の計算がなされ、(コンピュータの性能が上がれば桁数を大きくしないと動作確認が不十分になるので)世界記録という分かりやすい結果が残るわけです。

何故円周率か

上記の項目を確認するだけならば、色んな方法があります。そんな中何故円周率の計算をするかというと

という理由がある。特に最後の項目は、別のプログラムを使うことで計算結果に誤りが無いことを保障するためにも重要。その際、使う公式が違っている(1999年までの金田教授の記録で使われたガウス・ルジャンドルとボールウェインのようなのが典型)とその結果が一致していれば途中に誤りは無かったと言って構わないくらいになります。

また、数値なら…ということで e や γ も槍玉に挙げられますが、これらは円周率ほど公式が無い(のか?)ためプログラムを作る人に与えられる自由度が小さすぎるのが欠点となります。作る人も面白味が無ければやってられません。あと、単純な知名度の問題ということもあるかも。eは高校に入らないと習いませんし、γなんて大学でも課程次第では習いませんし。明からにπ>>e>>(越えられない壁)>>γという知名度の差があります。