bcpowmod

(PHP 5, PHP 7, PHP 8)

bcpowmod — Calcule le reste modulo d'un nombre élevé à une puissance

Description

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

Utilise la méthode d'exponentiation rapide pour élever le nombre num à la puissance exponent, et en calculant le reste modulo modulus.

Liste de paramètres

num

La base, sous la forme d'une chaîne de caractères (c'est-à-dire que l'échelle doit être nulle).

exponent

L'exposant, sous la forme d'une chaîne de caractères non négative (c'est-à-dire que l'échelle doit être nulle).

modulus

Le modulo, sous la forme d'une chaîne de caractères (c'est-à-dire que l'échelle doit être nulle).

scale

Ce paramètre est utilisé pour définir le nombre de chiffres après la virgule dans le résultat. Si null , il prendra la valeur par défaut de l'échelle définie avec bcscale() , ou utilisera la valeur de la directive INI bcmath.scale si disponible.

Valeurs de retour

Retourne le résultat, sous la forme d'une chaîne de caractères.

Erreurs / Exceptions

Cette fonction lève une exception ValueError dans les cas suivants :

  • num, exponent ou modulus n'est pas une chaîne numérique BCMath correctement formée
  • num, exponent ou modulus possède une partie fractionnaire
  • exponent est une valeur négative
  • scale est en dehors de la plage valide

Cette fonction lève une exception DivisionByZeroError si modulus est égal à 0.

Historique

Version Description
8.0.0 scale est désormais nullable.
8.0.0 Lève désormais une exception ValueError au lieu de retourner false si exponent est une valeur négative.
8.0.0 La division par 0 lève désormais une exception DivisionByZeroError au lieu de retourner false .

Exemples

Les deux lignes suivantes produisent le même résultat. La version qui utilise bcpowmod() est bien plus rapide, et accepte des paramètres plus grands.

<?php
$a = bcpowmod($x, $y, $mod);
$b = bcmod(bcpow($x, $y), $mod);
// $a et $b sont égaux.
?>

Notes

Note:

Comme cette méthode utilise les opérations de modulo, les nombres qui ne sont pas des entiers positifs risquent de donner des résultats inattendus.

Voir aussi

  • bcpow() - Élève un nombre à une puissance donnée
  • bcmod() - Retourne le reste d'une division entre nombres de grande taille
  • BcMath\Number::powmod() - Élève un nombre de précision arbitraire, réduit par un modulo spécifié

Found A Problem?

Learn How To Improve This Page • Submit a Pull Request • Report a Bug
+add a note

User Contributed Notes

There are no user contributed notes for this page.

AltStyle によって変換されたページ (->オリジナル) /