API Platform Conference 2025

BcMath\Number::powmod

(PHP 8 >= 8.4.0)

BcMath\Number::powmodElè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
scale spécifié explicitement pour les résultats du calcul. Si null, le 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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top