XXXVI. GMP

Introduction

Ces fonctions vous permettent de travailler avec des nombres de taille arbitraire, en utilisant la librairie GNU MP.

Ces fonctions ont été ajoutées en PHP 4.0.4.

Note : La majorité des fonctions GMP acceptent des nombres GMP comme arguments, définis ci-dessous comme resource. Cependant, la plupart de ces fonctions acceptent aussi des nombres et des chaînes à partir du moment où on peut les convertir en nombre. Si une fonction utilisant les entiers est plus rapide, elle sera automatiquement appelée si les arguments fournis sont des entiers. Cela se fait de manière transparente : vous pouvez donc utiliser des entiers avec les fonctions GMP sans perte de vitesse. Voir aussi gmp_init().

Avertissement

Si vous voulez explicitement spécifier un entier de grande taille, spécifiez le sous forme de chaîne. Si vous ne le faite pas, PHP va interpréter votre entier, et le transformer en une représentation interne, qui vous fera surement perdre de la précision.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Vous pouvez télécharger GMP sur le site de http://www.swox.com/gmp/. Ce site propose aussi un manuel GMP.

Vous devez utiliser GMP version 2 ou plus récent pour utiliser ces fonctions. Certaines d'entre elles peuvent requérir une version encore plus récente de GMP.

Installation

Pour pouvoir y accéder, vous devez compiler PHP avec le support GMP en utilisant l'option --with-gmp.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

GMP_ROUND_ZERO (entier)

GMP_ROUND_PLUSINF (entier)

GMP_ROUND_MINUSINF (entier)

Exemples

Exemple 1. Factorielle avec GMP

<?php
function fact($x) {
  if(
$x <= 1)
        return
1;
  else
        return
gmp_mul($x,fact($x-1));
}
print
gmp_strval(fact(1000))."\n";
?>

Cet exemple va calculer factorielle de 1000 (un plutôt grand nombre) très vite.

Voir aussi

D'autres fonctions mathématiques sont disponibles avec les extensions Nombres de grande taille BCMath et Mathématiques.

Table des matières
gmp_abs -- Valeur absolue GMP
gmp_add -- Addition de 2 nombres GMP
gmp_and -- ET logique
gmp_clrbit -- Annule un bit
gmp_cmp -- Compare des nombres GMP
gmp_com -- Calcule le complémentaire d'un nombre
gmp_div_q -- Divisions de 2 nombres GMP
gmp_div_qr -- Divise deux nombres GMP
gmp_div_r -- Reste de la division de deux nombres GMP
gmp_div -- Divise deux nombres GMP
gmp_divexact -- Division exacte de nombres GMP
gmp_fact -- Factorielle GMP
gmp_gcd -- PGCD
gmp_gcdext -- PGCD étendu
gmp_hamdist -- Distance de Hamming
gmp_init -- Crée un nombre GMP
gmp_intval -- Convertit un nombre GMP en entier
gmp_invert -- Inverse modulo
gmp_jacobi -- Symbole de Jacobi
gmp_legendre -- Symbole de Legendre
gmp_mod -- Modulo GMP
gmp_mul -- Multiplication de 2 nombres GMP
gmp_neg -- Opposé de nombre GMP
gmp_or -- OU logique
gmp_perfect_square -- Carré parfait GMP
gmp_popcount -- Compte de population
gmp_pow -- Puissance
gmp_powm -- Puissance et modulo
gmp_prob_prime -- Nombre GMP probablement premier
gmp_random -- Nombre GMP aléatoire
gmp_scan0 -- Recherche 0
gmp_scan1 -- Recherche 1
gmp_setbit -- Modifie un bit
gmp_sign -- Signe du nombre GMP
gmp_sqrt -- Racine carrée GMP
gmp_sqrtrm -- Racine carrée avec reste GMP
gmp_strval -- Convertit un nombre GMP en chaîne
gmp_sub -- Soustraction de 2 nombres GMP
gmp_xor -- OU exclusif logique