Next: , Previous: , Up: GMP Basics   [Index]


3.2 用語とデータ型

本マニュアルでは,整数(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型 はバイト単位,もしくは,文字単位の長さを表現するために使用します。