(PHP 5, PHP 7, PHP 8)
bcpowmod — 任意精度数値のべき乗の、指定した数値による剰余
modulus
で割った余りを求めることを考慮して、
num
の
exponent
乗を高速に計算します。
num
基数を表す整数の文字列。 (つまり、scale は 0 でなければいけません)
exponent
指数を表す、負でない、整数の文字列。 (つまり、scale は 0 でなければいけません)
modulus
法を表す、整数の文字列。 (つまり、scale は 0 でなければいけません)
scale
null
の場合は、 bcscale() 関数でグローバルに
設定した桁数をデフォルトとして使用します。
それも設定されていない場合は bcmath.scale
INI ディレクティブの値を使用します。
結果を文字列で返します。
この関数は、以下の場合に ValueError をスローします:
num
か exponent
か modulus
のいずれかが、BCMath で有効でない数値形式の文字列である場合num
か exponent
か modulus
のいずれかが整数値でない場合exponent
が負の値である場合scale
が範囲外の値である場合
この関数は、modulus
の値が 0
である場合、
DivisionByZeroError 例外をスローします。
バージョン | 説明 |
---|---|
8.0.0 |
scale は、nullable になりました。
|
8.0.0 |
exponent が負の値の場合、false を返す代わりに ValueError をスローするようになりました。
|
8.0.0 |
0 除算を行うと、DivisionByZeroError
例外がスローされるようになりました。以前は false が返されていました。
|
以下の 2 つの文は機能的に同じです。しかし bcpowmod() バージョンのほうが実行時間が早いうえ、 より大きな値の計算が可能です。
<?php
$a = bcpowmod($x, $y, $mod);
$b = bcmod(bcpow($x, $y), $mod);
// $a と $b は同じ値になります
?>
注意:
このメソッドでは剰余計算を行っているので、 正の整数以外を指定すると予期せぬ結果となります。