(PHP 5, PHP 7, PHP 8)
bcpowmod — Возводит число произвольной точности в степень и делит результат возведения в степень на модуль числа
Функция возводит число num
в степень exponent
методом быстрого возведения в степень
и возвращает остаток от деления степени числа на модуль числа в аргументе modulus
.
num
Основание степени в виде строки с целым числом, без дробной части.
exponent
Показатель степени в виде строки с неотрицательным целым числом, без дробной части.
modulus
Неполное кратное в виде строки с целым числом, без дробной части.
scale
null
количество знаков после десятичного разделителя равняется значению по умолчанию,
которое установили для параметра глобально функцией bcscale(),
или резервному значению, которое указали в INI-директиве bcmath.scale
,
если глобальное значение не установили.
Функция возвращает результат в виде строки.
Функция выбрасывает ошибку ValueError в следующих случаях:
num
, exponent
или modulus
оказалось строкой, которую сформировали неправильно с точки зрения допустимого формата числовых строк в модуле BCMath.
num
, exponent
или modulus
содержит дробную часть.
exponent
передали отрицательное значение.
scale
выходит за пределы допустимого диапазона.
Функция выбрасывает ошибку DivisionByZeroError,
если значение аргумента modulus
равняется 0
.
Версия | Описание |
---|---|
8.0.0 |
Параметр scale теперь принимает значение null .
|
8.0.0 |
Функция теперь выбрасывает ошибку ValueError вместо возврата значения false ,
если показатель степени exponent оказался отрицательным значением.
|
8.0.0 |
Деление на 0 теперь выбрасывает ошибку DivisionByZeroError
вместо возврата значения false .
|
Следующие выражения дают одинаковый результат. Однако функция bcpowmod() работает быстрее и принимает бо́льшие значения аргументов.
<?php
$a = bcpowmod($x, $y, $mod);
$b = bcmod(bcpow($x, $y), $mod);
// $a == $b
?>
Замечание:
Поскольку функция выполняет операцию взятия остатка, отрицательные числа иногда дают неожиданные результаты.