Élève un nombre de précision arbitraire, réduit par un modulo spécifié

# BcMath\Number::powmod

(PHP 8 >= 8.4.0)

BcMath\Number::powmod — Élève un nombre de précision arbitraire, réduit par un modulo spécifié

### Description

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

Utilise la méthode rapide d'exponentiation pour élever $this à la puissance `exponent` par rapport au modulo `modulus`.

### Liste de paramètres

`exponent`
  L'exposant, en tant que valeur non négative et entière (c'est-à-dire que l'échelle doit être nulle).
`modulus`
  Le modulo, en tant que valeur entière (c'est-à-dire que l'échelle doit être nulle).
`scale`
  BcMath\Number::scale spécifié explicitement pour les résultats du calcul. Si `null`, le BcMath\Number::scale du résultat du calcul sera défini automatiquement.

### Valeurs de retour

Renvoie le résultat sous forme d'un nouvel objet BcMath\Number.

Lorsque le BcMath\Number::scale du résultat est défini automatiquement, le BcMath\Number::scale de l'objet résultat sera toujours `0`.

### Erreurs / Exceptions

Cette méthode lève une ValueError dans les cas suivants :

- `exponent` ou `modulus` est un string et n'est pas une chaîne numérique BCMath bien formée
- $this, `exponent` ou `modulus` a une partie fractionnelle
- `exponent` est une valeur négative
- `scale` est en dehors de la plage valide

Cette méthode lève une exception DivisionByZeroError si `modulus` est `0`.

### Exemples

Exemple #1 Exemple de BcMath\Number::powmod() lorsque `scale` n'est pas spécifié

    <?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),
    );
    ?>

L'exemple ci-dessus va afficher :

    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)
    }

Exemple #2 Exemple de BcMath\Number::powmod() en spécifiant `scale` explicitement

    <?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),
    );
    ?>

L'exemple ci-dessus va afficher :

    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)
    }

### Voir aussi

- bcpowmod() - Calcule le reste modulo d'un nombre élevé à une puissance
- BcMath\Number::pow() - Élève un nombre de précision arbitraire
- BcMath\Number::mod() - Renvoie le modulo d'un nombre de précision arbitraire

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