(PHP 5, PHP 7, PHP 8)
bcpowmod — 任意精度数値のべき乗の、指定した数値による剰余
modulus
で割った余りを求めることを考慮して、
num
の
exponent
乗を高速に計算します。
num
基数を表す整数の文字列。 (つまり、scale は 0 でなければいけません)
exponent
指数を表す、負でない、整数の文字列。 (つまり、scale は 0 でなければいけません)
modulus
法を表す、整数の文字列。 (つまり、scale は 0 でなければいけません)
scale
null
, it will default to the default scale set with bcscale(),
or fallback to the value of the
bcmath.scale
INI directive.
結果を文字列で返します。
This function throws a ValueError in the following cases:
num
, exponent
or modulus
is not a well-formed BCMath numeric stringnum
, exponent
or modulus
has a fractional partexponent
is a negative valuescale
is outside the valid range
This function throws a DivisionByZeroError exception if modulus
is 0
.
バージョン | 説明 |
---|---|
8.0.0 |
scale は、nullable になりました。
|
8.0.0 |
Now throws a ValueError instead of returning false if exponent is a negative value.
|
8.0.0 |
Dividing by 0 now throws a DivisionByZeroError exception instead of returning false .
|
以下の 2 つの文は機能的に同じです。しかし bcpowmod() バージョンのほうが実行時間が早いうえ、 より大きな値の計算が可能です。
<?php
$a = bcpowmod($x, $y, $mod);
$b = bcmod(bcpow($x, $y), $mod);
// $a と $b は同じ値になります
?>
注意:
このメソッドでは剰余計算を行っているので、 正の整数以外を指定すると予期せぬ結果となります。