# BcMath\Number::powmod

(PHP 8 >= 8.4.0)

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

### Description

public 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 non négatif et intégral (c'est-à-dire que l'échelle doit être zéro).
`modulus`
  Le modulo, en tant qu'intégral (c'est-à-dire que l'échelle doit être zéro).
`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 plus grand BcMath\Number::scale des trois nombres utilisés pour l'opération de modulo est utilisé.

### 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 fractionnel
- `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() - Elève un nombre de précision arbitraire
- BcMath\Number::mod() - Renvoie le modulo d'un nombre de précision arbitraire