計算プログラム紹介

ここでは円周率計算を 1 万桁以上の桁数計算できる インターネット上で入手可能なプログラムを紹介する。 プログラムの名前を付けず公開しているものについては、 私が勝手につけた仮称に(仮)をつけて表記する。

また参考までに 1677 万桁を計算するのにかかった時間を記載しておく。 計算環境は CPU が Pentium4 3.4GHz、メモリが 1GB (DDR2, 333MHz) の Windows Vista(64bit) で、GMP 環境については cygwin 上で gmp-5.0.1 を利用している。 1 回ずつしか計測していないため、再度実験したり、 別の環境で実行したりする場合は少々の時間差は逆転する可能性がある。

目次と概要

プログラム名 製作者 対応OS/環境 限界桁数 使用公式 参考計算時間
y-cruncher
[解説] [Site]
Alexander J. Yee Windows $\infty$ ChudnovskyRamanujan 38s
TachusPI
[解説] [Site]
F. Bellard Windows(64bit) / Linux(64bit) 2.7T ChudnovskyRamanujan 33s
pifast
[解説] [Site]
X.Gourdon Windows/hpux/irix/AIX 16G Chudnovsky 1m20s
GMP-Chudnovsky(仮)
[解説] [Site]
Hanhong Xue GMP $\infty$ Chudnovsky 1m23s
Ooura(仮)
[解説] [Site]
大浦拓哉 (Windows) Gauß-Legendre 2m42s

解説

y-cruncher (Alexander J. Yee)

マルチスレッド対応の Windows 用 $\pi$ 計算プログラム。 2010 年の 5 兆桁計算以降、世界記録の更新に使われている。 SIMD 演算を用いた高速化や、WinAPI を用いたマルチスレッド化が実装されている。 本来、各種 SIMD 命令の対応やキャッシュメモリサイズなど ハードウェアに合わせた調整が必要であるが、プログラムの中で自動的に行ってくれる。

計算公式に Chudnovsky の公式と Ramanujan の公式が利用できるため 時間さえかければ全桁計算での検証もできる。 また、円周率以外にも $e$ や $\log2$、$\log 10$、$\zeta(3)$、 カタラン数、オイラー数 $\gamma$ など各種定数が計算でき、 いずれも計算桁数の世界記録を打ち立てている。

TachusPI (F. Bellard)

2009 年の 2.7 兆桁の世界記録計算に用いられたプログラム。 名前の Tachus は古代ギリシア語で「速い」を意味する単語らしい。 64bit Windows 版も存在するが、非同期 I/O が実現できないために ディスクを使う計算では Linux 版より若干遅い。 ちなみに計算が遅くなるのは嫌だ、という理由で 32bit 版は作らない。 実行には SSE3 対応の CPU が必須。

pifast (X.Gourdon)

円周率の他、有理級数で定義できる定数なら計算できる。

GMP-Chudnovsky(仮)

プログラムソースで配布されている。 GMP を用いてコンパイルできる。

Binary splitting を用いた計算をしており、 適宜約分することで計算量を削減するという工夫を行っているなど 計算上の工夫も学ぶことができる。

Ooura(仮) (大浦拓哉)

FFT のライブラリチェックを兼ねたプログラム。 そのため C 言語のプログラムをコンパイルできる環境さえあれば自由に実行できる。 Windows だけはコンパイルしたものも配布している。

superπ (東京大学金田研究室)

1995 年の公開以来、2020 年の今でも自作 PC のベンチマーク定番として挙げられる。 16 bit CPU が一般的であった公開当時、32 bit アプリケーションとして提供された という意味でも先進的なソフトであった。 当時の世界記録の元になったプログラムをベースに作られたものだが、 2020 年現在の知識を元に観ると並列化、計算公式、キャッシュ効率、 といった点での改良が可能である。 (そもそも当時のスパコンと現在の PC では使われる CPU を始め様々なアーキテクチャが 異なるので仕方ないことである。) Windows だの OSX だの BSD だの Linux だの、 いろいろな環境用のバイナリを提供している唯一の例だったが、 2020 年、一次提供元のウェブサイトが無くなってしまった。 ここでは本来ネット上で入手できるプログラムだけの紹介だが、 上記の通り未だ参照される機会も多いと思うので記録用に書き残している。