(PHP 5, PHP 7, PHP 8)
bcpowmod — Eleva um número de precisão arbitrária para outro, reduzido por um módulo especificado
Utiliza o método de exponenciação rápida para elevar
num
para a potência
exponent
levando em conta o módulo
modulus
.
num
O número base, na forma de inteiro em string (a escala tem de ser zero).
exponent
O número expoente, na forma de um inteiro não negativo, em string (a escala tem de ser zero).
modulus
O número módulo, na forma de um inteiro em string (a escala tem de ser zero).
scale
null
o padrão será a escala definida com a função bcscale()
ou, em último caso, o valor da diretiva INI
bcmath.scale
.
Retorna o resultado como uma string.
Esta função lança uma exceção ValueError nos seguintes casos:
num
, exponent
ou modulus
não é uma string numérica BCMath bem formadanum
, exponent
ou modulus
tem uma parte fracionáriaexponent
é um valor negativoscale
está fora do intervalo válido
Esta função lança uma exceção DivisionByZeroError se modulus
for igual a 0
.
Versão | Descrição |
---|---|
8.0.0 |
scale agora pode ser nulo.
|
8.0.0 |
Agora lança uma exceção ValueError ao invés de retornar false se exponent for negativo.
|
8.0.0 |
Dividir por 0 agora lança uma exceção DivisionByZeroError ao invés de retornar false .
|
As seguintes instruções têm funcionalidades idênticas. A versão bcpowmod(), no entanto, executa em menos tempo e pode aceitar parâmetros maiores.
<?php
$a = bcpowmod($x, $y, $mod);
$b = bcmod(bcpow($x, $y), $mod);
// $a e $b são iguais.
?>
Nota:
Por esse método realizar operações em módulo, números que não sejam inteiros positivos podem gerar resultados inesperados.