Eleva un número de precisión arbitraria, reducido por un módulo especificado

# BcMath\Number::powmod

(PHP 8 >= 8.4.0)

BcMath\Number::powmod — Eleva un número de precisión arbitraria, reducido por un módulo especificado

### Descripción

public function BcMath\Number::powmod(BcMath\Number|string|int `$exponent`, BcMath\Number|string|int `$modulus`, ?int `$scale` = `null`): BcMath\Number

Utiliza el método rápido de exponentiación para elevar $this a la potencia `exponent` en relación con el módulo `modulus`.

### Parámetros

`exponent`
  El exponente, como no negativo e integral (es decir, la escala debe ser cero).
`modulus`
  El módulo, como integral (es decir, la escala debe ser cero).
`scale`
  BcMath\Number::scale especificado explícitamente para los resultados del cálculo. Si `null`, el BcMath\Number::scale del resultado del cálculo será definido automáticamente.

### Valores devueltos

Devuelve el resultado en forma de un nuevo objeto BcMath\Number.

Cuando la propiedad BcMath\Number::scale del resultado se establece automáticamente, se utiliza la mayor BcMath\Number::scale de los tres números utilizados para la operación de módulo.

### Errores/Excepciones

Este método lanza una ValueError en los siguientes casos:

- `exponent` o `modulus` es un string y no es una cadena numérica BCMath bien formada
- $this, `exponent` o `modulus` tiene una parte fraccionaria
- `exponent` es un valor negativo
- `scale` está fuera del rango válido

Este método lanza una excepción DivisionByZeroError si `modulus` es `0`.

### Ejemplos

Ejemplo #1 Ejemplo de BcMath\Number::powmod() cuando `scale` no está especificado

    <?php
    var_dump(
        new BcMath\Number('8')->powmod(new BcMath\Number('3'), 5),
        new BcMath\Number('-8')->powmod(new BcMath\Number('3'), 5),
        new BcMath\Number('8')->powmod('2', -3),
        new BcMath\Number('-8')->powmod(5, 7),
    );
    ?>

El ejemplo anterior mostrará:

    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(1) "2"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(2) "-2"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(1) "1"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#5 (2) {
      ["value"]=>
      string(2) "-1"
      ["scale"]=>
      int(0)
    }

Ejemplo #2 Ejemplo de BcMath\Number::powmod() especificando `scale` explícitamente

    <?php
    var_dump(
        new BcMath\Number('8')->powmod(new BcMath\Number('3'), 5, 1),
        new BcMath\Number('-8')->powmod(new BcMath\Number('3'), 5, 2),
        new BcMath\Number('8')->powmod('2', -3, 3),
        new BcMath\Number('-8')->powmod(5, 7, 4),
    );
    ?>

El ejemplo anterior mostrará:

    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(3) "2.0"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(5) "-2.00"
      ["scale"]=>
      int(2)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(5) "1.000"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#5 (2) {
      ["value"]=>
      string(7) "-1.0000"
      ["scale"]=>
      int(4)
    }

### Ver también

- bcpowmod() - Eleva un número de precisión arbitraria a otro, reducido por un módulo especificado
- BcMath\Number::pow() - Eleva un número de precisión arbitraria
- BcMath\Number::mod() - Devuelve el módulo de un número de precisión arbitraria

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open