XXXVIGMP 関数

導入

以下の関数により、GNU MP ライブラリを使用して任 意長の整数を使用することが可能になります。

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

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

警告

より大きな整数を明示的に指定するには、文字列として指定して下さい。 そうしない場合、PHPは整数リテラルを最初に解釈し、 GMP にわたるまでに精度の劣化を生じる可能性が あります。

注意この拡張モジュールはWindows環境では利用できません。

要件

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

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

インストール手順

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

実行用の設定

この拡張モジュールは設定ディレクティブを全く 定義しません。

リソース型

この拡張モジュールはリソース型を全く定義し ません。

定義済みの定数

これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。

GMP_ROUND_ZERO (integer)

GMP_ROUND_PLUSINF (integer)

GMP_ROUND_MINUSINF (integer)

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

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

print gmp_strval (fact (1000)) . "\n";
?>

この例は、1000の階乗(非常に大きな数です)を非常に高速に計算します。

以下も参照下さい:

より数学的な関数は、 BCMath 任意精度関数および 数学関数の節にあります。

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