Next: Parameter Conventions, Previous: Function Classes, Up: GMP Basics [Index]
GMPが提供する関数は大概,入力引数より前に出力のための引数を置きます。これは代入演算子(=) に似せるためです。BSD MP互換関数の流儀はこれと異なり,出力のための引数は後ろに 置かれます。
GMPは1回の関数呼び出しで同じ変数を同時に入力値,出力値に指定することができます。例えば
整数の乗算を行う関数mpz_mulは,次のように指定することで,xの2乗を計算して
xに書き戻すことができます。
mpz_mul (x, x, x);
GMPの変数を使用可能にする前に,変数型ごとに決められた初期化関数を呼び出す必要があります。 変数を使い終わった後には,変数消去のための関数を呼び出す必要があります。詳細は 整数関数,有理数関数,浮動小数点数関数の章をそれぞれ参照して下さい。
変数の初期化は1回だけ行って下さい。また,再度初期化する際は,その前に一度消去しておいて 下さい。変数初期化の後は何度でも値の代入ができるようになります。
変数の初期化と消去の繰り返しは,動作遅延の元になりますので避けて下さい。以下の例のように, なるべく変数初期化は関数のスタート時に,消去は終了時に行うようにして下さい。
void
foo (void)
{
mpz_t n;
int i;
mpz_init (n);
for (i = 1; i < 100; i++)
{
mpz_mul (n, …);
mpz_fdiv_q (n, …);
…
}
mpz_clear (n);
}