Next: Function Classes, Previous: Headers and Libraries, Up: GMP Basics [Index]
本マニュアルでは,整数(integer)は常にGMPライブラリで定義している多倍長精度の整数を指す言葉として使用します。
Cのデータ型としてはmpz_t
として定義してあります。(多倍長)整数は次のように宣言して使います。
mpz_t sum; struct foo { mpz_t x, y; }; mpz_t vec[20];
有理数(Rational number)もまた,多倍長精度の分数を指す言葉として使用します。
Cのデータ型はmpq_t
で,次のように使います。
mpq_t quotient;
浮動小数点数(Floating point numberまたはFloat)は任意精度の仮数部(mantissa)
と,固定精度の指数部(exponent)を持ちます。Cのデータ型はmpf_t
で,次のように利用します。
mpf_t fp;
浮動小数点演算関数は,指数部を表現するmp_exp_t
型の値のやり取りを行います。
現状では通常long
型そのものですが,性能向上のために,いくつかのシステム上では
int
型になっていることもあります。
リム(limb)とは,多倍長精度型の値を構成する1マシンワード分を意味する用語です。この用語を
選んだ理由は,多倍長精度値の構成がちょうど人間の四肢(limb)に似ていて,
複数の指(digit)を持っているところもそっくり,ということです。通常,リムは32ビット
もしくは64ビット長で,Cのデータ型としてはmp_limb_t
型になります。
1つの多倍長精度数を構成するリムの数は,mp_size_t
型で表現します。
現状ではlong
型ですが,性能向上のためにint
型の場合もありますし,
将来はlong long
型にすることもあるでしょう。
1つの多倍長精度数が何ビットになるのかを表現する際にはmp_bitcnt_t
型を使います。
現状では必ずunsigned long
型になっていますが,将来はunsigned long long
型
にすることもあるでしょう。
乱数生成状態(Random state)は,選択した乱数生成アルゴリズムの種類と
現在の生成状態を意味する用語です。データ型としてはgmp_randstate_t
型として定義されており,
次のように使います。
gmp_randstate_t rstate;
一般に,mp_bitcnt_t
型はビット長と値の範囲を表現するの使いますが,size_t
型
はバイト単位,もしくは,文字単位の長さを表現するために使用します。