bcpowmod

(PHP 5, PHP 7, PHP 8)

bcpowmod任意精度数値のべき乗の、指定した数値による剰余

説明

bcpowmod(
    string $num,
    string $exponent,
    string $modulus,
    ?int $scale = null
): string

modulus で割った余りを求めることを考慮して、 numexponent 乗を高速に計算します。

パラメータ

num

基数を表す整数の文字列。 (つまり、scale は 0 でなければいけません)

exponent

指数を表す、負でない、整数の文字列。 (つまり、scale は 0 でなければいけません)

modulus

法を表す、整数の文字列。 (つまり、scale は 0 でなければいけません)

scale
結果の小数点以下の桁数を指定します。null の場合は、 bcscale() 関数でグローバルに 設定した桁数をデフォルトとして使用します。 それも設定されていない場合は bcmath.scale INI ディレクティブの値を使用します。

戻り値

結果を文字列で返します。

エラー / 例外

この関数は、以下の場合に ValueError をスローします:

  • numexponentmodulus のいずれかが、BCMath で有効でない数値形式の文字列である場合
  • numexponentmodulus のいずれかが整数値でない場合
  • 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 は同じ値になります

?>

注意

注意:

このメソッドでは剰余計算を行っているので、 正の整数以外を指定すると予期せぬ結果となります。

参考

  • bcpow() - 任意精度数値をべき乗する
  • bcmod() - 2 つの任意精度数値の剰余を取得する
  • BcMath\Number::powmod() - 任意精度数値のべき乗の、指定した数値による剰余

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top