XXV. GMP 関数

以下の関数により、GNU MP ライブラリを使用して任 意長の整数を使用することが可能になります。これらの関数を利用可能と するには、オプション --with-gmp を使用することにより GMPサポートを有効にしてPHP をコンパイルする必要があります。

http://www.swox.com/gmp/ から GMP ライブラリをダウンロード可能です。このサイ トでは、GMP のマニュアルも入手可能です。

これらの関数を使用するには、GMP バージョン 2 以降が必要です。いく つかの関数はより新しいバージョンの GMP ライブラリを必要とする可能性 があります。

これらの関数は、PHP 4.0.4 で追加されました。

注意: 多くの GMP 関数は、resource で定義されたGMP 数 を引数としてとります。しかし、これらの関数の多くは、数値と文字列 の両方を引数として指定可能で、後者は数値に変換することが可能です。 また、整数引数を使用して処理を行うより高速な関数がある場合には、 指定された引数が整数である場合により低速となる関数の代わりに使用 されます。これは透過的に行われるため、結果的にGMP数値を引数とする 全ての関数について整数を使用することが可能です。関数 gmp_init() も参照下さい。

例 1. GMP を使用した階乗関数


<?php
function fact($x) {
  if($x <= 1) 
        return 1;
  else
        return gmp_mul($x,fact($x-1));
}

print gmp_strval(fact(1000))."\n";
?>
     
この例は、1000の階乗(非常に大きな数です)を非常に高速に計算します。

目次
gmp_init — GMP 数を作成する
gmp_intval — GMP 数を整数に変換する
gmp_strval — GMP 数を文字列に変換する
gmp_add — 数値の加算
gmp_sub — 数値の減算
gmp_mul — 数値の乗算
gmp_div_q — 数値の割算
gmp_div_r — 割算の余り
gmp_div_qr — 割算を行い、商と余りを得る
gmp_div — 割算を行う
gmp_mod — モジュロ演算
gmp_divexact — 正確な割算
gmp_cmp — 数を比較する
gmp_neg — 符号を反転する
gmp_abs — 絶対値
gmp_sign — 数の符号
gmp_fact — 階乗
gmp_sqrt — 平方根
gmp_sqrtrm — 余りと平方根
gmp_perfect_square — 平方数かどうかを調べる
gmp_pow — 累乗
gmp_powm — 累乗とモジュロ
gmp_prob_prime — 数が"ほぼ素数"であるかどうかを調べる
gmp_gcd — 最大公約数を計算する
gmp_gcdext — 最大公約数と乗数を計算する
gmp_invert — 法による逆
gmp_legendre — ルジェンドル記号
gmp_jacobi — ヤコビ記号
gmp_random — 乱数
gmp_and — 論理演算 AND
gmp_or — 論理演算 OR
gmp_xor — 論理演算 XOR
gmp_setbit — ビットを設定する
gmp_clrbit — ビットをクリアする
gmp_scan0 — 0を探す
gmp_scan1 — 1 を探す
gmp_popcount — カウントを増やす
gmp_hamdist — ハミング距離