c言語でGMPを使って多倍長演算

c言語でGMPを使って多倍長演算


c言語で標準では多倍長整数がサポートされていないのでこれらを扱いたい場合は自分で実装するかライブラリーを使う必要があります。

そこで今回はGMP(GNU Multi-Precision Library)という算術ライブラリを利用して多倍長整数を使ってみたいと思います。
https://gmplib.org/manual/index.html

片っ端からやっていってもきりがないので必要そうなところを触れておきたいと思います。


コンパイル


コンパイルは以下のように行います。

変数の初期化


ソースを見ればなんとなく何をやっているかわかるかと思います。

gmpではmpz_tという型を主に使うようですが、
mpz_tは値を割りあてたり演算をする前に初期化しなければいけないようです。
mpz_initで変数を初期化できます。
mpz_init_set_uiで初期化と割り当てを同時にすることもできます。
uiというのはunsigned intのことです。
int型だけでなくmpz_set_dでdouble型も割り当てることができます。

演算

加算


mpz_add(c, a, b)で多倍長と多倍長の加算ができます。
今回の場合aとbを足したものがcに格納されます。

mpz_add_uiで多倍長とunsigned int型の加算もできます。

減算


記述は加算とほぼ同じです。

乗算

除算

剰余


ひとまず普段プログラミングをしていてよく使う演算について触れました。
他にも演算関数が用意されていますが、それはその都度使い方を覚えていけばいいかなと思います。

c++から使う


c++からも使うことができます。
c++にはクラスが用意されていて、c言語からよりも使いやすいかもしれません。


コメントする