CやC++で数値計算をする場合,基本的にはint, long, doubleといったデータ型の数値を扱います.そして,それらのデータ型で表現できる数値には「精度」というものがあり,どこまでも大きな(あるいは小さな)数を扱うことはできません.
時として,非常に大きな数(何百桁あるいはそれ以上)やとても小さな数(小数点以下何百桁あるいはそれ以上)を扱う必要が出てくる場合があります.例えば暗号化に関する計算処理などがその代表例です.
また円周率πを高精度で求める計算もその例です.
GMP(GNU Multi-Precision Library)という数値計算用のライブラリを用いることで,高精度の数値計算を実現することができます.
GMPは商用/非商用問わず広く利用されているフリーソフトで,GMPはGNU LGPLライセンスの下で配布されています.
多くのUNIX系OS(MinGW含む)でGMPは標準機能として既に利用できる状態にありますが,最新のソースコードをGMPのWebサイト https://gmplib.org/ から入手することができます.AppleのOS Xの場合はMacPortsプロジェクト(https://www.macports.org/)のCVS下で入手できます.
【関連記事】
● GMPでの基本的なデータ型
● GMP利用の流れ
● MPFRの利用
● 応用作品