**PARI / GP** is a formal calculation system whose main objective is to facilitate calculations in number theory . It is free software distributed under the terms of the GNU General Public License , which runs under most operating systems .

## System Overview

The PARI / GP system is a set of software capable of performing very fast formal calculations on recursive types , and above all intended for number theorists. His main strengths are his speed, the ability to directly use data types familiar to mathematicians, and his vast algebraic number theory module .

The system consists of the following standard components:

**PARI**is a library written in C (which allows fast calculations ) that can be called from a high-level command language (written, for example, in C ++ , Pascal , Fortran , Perl , or Python ).**gp**is by command line interface user friendly and interactive with access to functions of PARI. It functions as a sophisticated programmable calculator containing most of the control instructions of a standard language such as C.**GP**is the name of the scripting language that can be used to program*gp*.

A compiler GP in C, **gp2c** is also available; It compiles the GP scripts and loads the resulting functions in *gp* transparently for the user, the advantage being that scripts compiled in this way run three to four times faster in general. At the moment, *however* , *gp2c* includes only part of the GP language.

PARI / GP performs arbitrary precision calculations ; Thus, the mantissa of data and results can have millions of digits or even billions on 64-bit processor machines . It can factorize , perform calculations on elliptic curves , or more generally calculations of algebraic number theory . It also makes it possible to manipulate matrices , polynomials , integer series , algebraic numbers as well as many special functions .

PARI / GP has graphic capabilities (essentially allowing it to draw the graph of a function ) and symbolic manipulation, for example polynomials and rational functions with several variables. On the other hand, its integration and formal derivation capacities are lower than those of more sophisticated formal computing systems, such as Mathematica .

PARI / GP can be compiled with GMP (the GNU multi-precision computational library), allowing faster computations than the original arbitrary precision kernel.

## History

The precursor of PARI / GP was a program called ISABELLE, an interpreter for problems of number theory written in 1979 by Henri Cohen and François Dress (at Bordeaux I university ). PARI / GP was developed in 1985 by a team led by Henri Cohen at the A2X Laboratory, and maintenance is now provided by Karim Belabas at Bordeaux 1 University, with the help of numerous volunteers. As of February 5, 2010, the stable version was 2.3.5, and a development version of 2.4.3 could be obtained. Since version 2.1.0, it is free software distributed under the terms of the GNU General Public License . It works under most operating systems .

### Origin of the name PARI / GP [ change | Change the code ]

The name PARI is a play on word coming from the early stages of the project, when the authors began to implement in Pascal a library of ARIthèmetics (however, they had to quickly abandon this language in favor of C ), and, of course, in reference To the *” Pascal bet ” *^{1} .

The first version of the *gp* calculator was initially called GPC, for Large Programmable Calculator. The final C disappeared for it is not clear why ^{1} .

## Examples of use

Below are some examples of how to use the *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 ^ + 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] / * This number field has the number of classes 3. * /

## References

- ( In ) This article is partially or entirely from the article in English entitled ” PARI / GP ” ( see the list of authors ) .

- ↑
^{a and b}“TRIVIA” section of “Manpage of GP,” [ archive ] August 10, 2004