PHP 8.4.3 Released!

bcpowmod

(PHP 5, PHP 7, PHP 8)

bcpowmodEleva um número de precisão arbitrária para outro, reduzido por um módulo especificado

Descrição

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

Utiliza o método de exponenciação rápida para elevar num para a potência exponent levando em conta o módulo modulus.

Parâmetros

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
Este parâmetro opcional é usado para definir o número de dígitos após a casa decimal no resultado. Se for igual a null o padrão será a escala definida com a função bcscale() ou, em último caso, o valor da diretiva INI bcmath.scale.

Valor Retornado

Retorna o resultado como uma string.

Erros/Exceções

Esta função lança uma exceção ValueError nos seguintes casos:

  • num, exponent ou modulus não é uma string numérica BCMath bem formada
  • num, exponent ou modulus tem uma parte fracionária
  • exponent é um valor negativo
  • scale está fora do intervalo válido

Esta função lança uma exceção DivisionByZeroError se modulus for igual a 0.

Registro de Alterações

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.

Exemplos

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.

?>

Notas

Nota:

Por esse método realizar operações em módulo, números que não sejam inteiros positivos podem gerar resultados inesperados.

Veja Também

  • bcpow() - Eleva um número de precisão arbitrária a outro
  • bcmod() - Obtém o resto de uma divisão com precisão arbitrária

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top