PARI/GP

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Pari.
PARI/GP
Image illustrative de l'article PARI/GP
Logo

Développeur Henri Cohen, Karim Belabas et al., à l'université Bordeaux I
Première version 1985
Dernière version 2.7.1 (16 mai 2014)
Écrit en C
Environnement multiplate-forme
Langue anglais
Type système de calcul formel
Licence licence publique générale GNU
Site web Centre de développement de PARI/GP

PARI/GP est un système de calcul formel ayant pour objectif principal de faciliter les calculs en théorie des nombres. C'est un logiciel libre distribué selon les termes de la licence publique générale GNU, qui fonctionne sous la plupart des systèmes d'exploitation.

Vue générale du système[modifier | modifier le code]

Le système PARI/GP est un ensemble de logiciels capables d'effectuer des calculs formels très rapides sur des types récursifs, et avant tout destiné aux théoriciens des nombres. Ses principaux points forts sont sa vitesse, la possibilité d'utiliser directement des types de données familiers aux mathématiciens, et son vaste module de théorie algébrique des nombres.

Le système est constitué des composants standards suivants :

Un compilateur de GP en langage C, gp2c, est également disponible ; il compile les scripts de GP et charge les fonctions résultantes dans gp de façon transparente pour l'utilisateur, l'avantage étant que des scripts ainsi compilés s'exécutent trois à quatre fois plus vite en général. Pour le moment, gp2c ne comprend cependant qu'une partie du langage GP.

PARI/GP effectue des calculs en précision arbitraire ; ainsi, la mantisse des données et des résultats peut avoir des millions de chiffres, voire des milliards sur des machines à processeur 64 bits. Il peut factoriser, effectuer des calculs sur des courbes elliptiques, ou plus généralement des calculs de théorie algébrique des nombres. Il permet également de manipuler des matrices, des polynômes, des séries entières, des nombres algébriques ainsi que de nombreuses fonctions spéciales.

PARI/GP possède des capacités graphiques (lui permettant essentiellement de tracer le graphe d'une fonction) et de manipulation symbolique, par exemple des polynômes et des fonctions rationnelles à plusieurs variables. En revanche, ses capacités d'intégration et de dérivation formelle sont inférieures à celles de systèmes de calcul formel plus sophistiqués, tels que Mathematica.

PARI/GP peut être compilé avec GMP (la bibliothèque de calcul en multiprécision GNU), permettant des calculs plus rapides que ceux du noyau de calcul en précision arbitraire original.

Historique[modifier | modifier le code]

Le précurseur de PARI/GP était un programme appelé ISABELLE, un interpréteur pour des problèmes de théorie des nombres écrit en 1979 par Henri Cohen et François Dress (à l'université Bordeaux I). PARI/GP fut développé en 1985 par une équipe dirigée par Henri Cohen au Laboratoire A2X, et la maintenance en est à présent assurée par Karim Belabas à l'université Bordeaux 1, avec l'aide de nombreux volontaires. Au 5 février 2010, la version stable était la 2.3.5, et on pouvait obtenir une version de développement 2.4.3. Depuis la version 2.1.0, c'est un logiciel libre distribué selon les termes de la licence publique générale GNU. Il fonctionne sous la plupart des systèmes d'exploitation.

Étymologie du nom PARI/GP[modifier | modifier le code]

Le nom PARI est un jeu de mot venant des premiers stades du projet, lorsque les auteurs commencèrent à implémenter en Pascal une bibliothèque d'ARIthmétique (cependant, ils devaient rapidement abandonner ce langage en faveur de C), et, bien sûr, en référence au "pari de Pascal"[1].

La première version du calculateur gp était initialement appelée GPC, pour Grand Programmable Calculateur. Le C final disparut pour on ne sait trop quelle raison[1].

Exemples d'utilisation[modifier | modifier le code]

On trouvera ci-dessous quelques exemples d'utilisation du calculateur gp :

? \p 212
   realprecision = 221 significant digits (212 digits displayed)
? (1.378-0.09143*I)^(14.87+0.3721*I)
time = 0 ms.
%1 = 80.817082637557070449383034933010288336925078193546211741027496566803185
11092579265743992920628314516739962724446042667886245322716456966120413965187
3272488827365261487845201056199035423784093096984005713791800191 - 94.8384618
89186304973351271821601500916571303364865064205039706592481303045713982306764
33264430511752515705768858710051382035377195497482934017239179757538824688799
0680136241031895212412150770309289450962931402933*I


? 123456! + 0.
time = 1,656 ms.
%2 = 2.6040699049291378729513930560926568818273270409503019584610185579952057
37967683415793560716617127908735520017061666000857261271456698589373086528293
4317244121152865814030204645985573419251305342231135573491050756 E574964


? sin(x)
time = 0 ms.
%3 = x - 1/6*x^3 + 1/120*x^5 - 1/5040*x^7 + 1/362880*x^9 - 1/39916800*x^11
+ 1/6227020800*x^13 - 1/1307674368000*x^15 + O(x^17)


? for(z=25,30, print (factor(2^z-1)))
[31, 1; 601, 1; 1801, 1]
[3, 1; 2731, 1; 8191, 1]
[7, 1; 73, 1; 262657, 1]
[3, 1; 5, 1; 29, 1; 43, 1; 113, 1; 127, 1]
[233, 1; 1103, 1; 2089, 1]
[3, 2; 7, 1; 11, 1; 31, 1; 151, 1; 331, 1]
time = 5 ms.


? K = bnfinit(x^2 + 23); K.cyc
time = 1ms.
%4 = [3]
/* Ce corps de nombres a pour nombre de classes 3. */

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]


  1. a et b "TRIVIA" section de "Manpage of GP," 10 août 2004

Liens externes[modifier | modifier le code]