GNU Multi-Precision Library
このために、以下の点を重視している。
基本算術型としてフルワードを使う。
オペランドの大きさによってそれぞれ異なるアルゴリズムを使う。非常に大きな数に有効なアルゴリズムは、小さい数では遅いことが多い。
重要なループには高度に最適化したアセンブリ言語コードを使う。当然、CPUによって異なったものになる。
最初のGMPは1991年にリリースされた。その後継続的に開発と保守が行われている。
公式サイトがgnu.orgにないので混乱する場合があるが、GMPはGNUプロジェクトの一部であり、GNU Lesser General Public License (LGPL) でライセンスされている。
GMPは多くの数式処理システムで整数の算術に使われている。例えばMathematicaがGMPを採用している。
GMPはGCCのビルドに必要である。
ここでは、GMPライブラリを使って大きな数字を掛け合わせて表示するC言語のコード例を示す。
このコードは、7612058254738945×9263591128439081の値を計算している。
このプログラムをコンパイルして実行すると、次のような結果が得られる。(Unixタイプのシステムでコンパイルする場合は-lgmpフラグが使用される)
C++プログラムで同様の内容を書くと次のようになる。(Unixタイプのシステムでコンパイルする場合は-lgmpxx -lgmpフラグが使用される)