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


3.4 変数の利用法

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