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); }