Description of the main changes between versions 1.37 and 1.38 In addition to the new programs and improvements described below, many bugs have been corrected and improvements have been made. See the file Changes for details. It will be observed that the main changes deal with general number fields. The use of a few functions has been changed, so your old GP or Pari programs may have to be slightly modified accordingly. These modifications are preceded by the mention WARNING below. 1) Elementary functions a) New programs Settype (set to a different type, very useful for avoiding useless GCD calculations), setrand (reseed the random number generator), getrand (gives the current random seed), getstack (get current stack value), gettime (get current time used), bytesize (byte occupation of a Pari object). b) Improvements mod() now accepts vector and fractional arguments. The binary program works now with multiprecision integers and reals. The % (modulo) function accepts real or fractional moduli. The random() program is now internal to Pari and hence does not depend on the machine/system used. 2) Transcendental functions a) New programs b) Improvements 3) Arithmetic functions a) New programs Bestappr (best approximation to a real number with denominator less than a given bound). b) Improvements The integer factoring algorithm now includes a test to see whether the unfactored part is a square, which often happens for number field discriminants. The issquare program can be used now on almost all types. 4) Functions related to elliptic curves a) New programs Taniyama (modular parametrization of an elliptic curve), bilhell (canonical height bilinear form), orderell (order of a point on a rational elliptic curve), torsell (torsion subgroup of a rational elliptic curve). b) Improvements Lseriesell can now be used for conductors larger than 2^31 (but it becomes very slow for much larger conductors). hell and binhell can have one vector/matrix argument. c) IMPORTANT WARNING: for people using old versions of Pari, the syntax of the function powell has been changed, to make it consistent with other powering functions. It is now powell(e,z,n) instead of powell(e,n,z), where z is the point to be raised to the power n. In addition the function matell is now called mathell. Please modify your old GP programs accordingly. 5) Functions related to number fields a) New programs Initalg2 (express old algebraic number in terms of the new one given by initalg), conjvec (conjugate vector representation of an algebraic number), idealmul (ideal multiplication in number fields), primedec (prime ideal decomposition in number fields), idealmulprime (product of an ideal by a prime ideal and in particular hermite normal form of a prime ideal), idealval (valuation of an ideal at a prime ideal), ideallllred (almost complete reduction of an ideal along a vector), buchgen and related functions (general class group and unit program), different (different of a number field, obtained as nf[5][5] in initalg and initalg0), idealinv (inverse of an ideal in a number field), idealpow (power of an ideal), idealmulred (reduced ideal multiplication), idealpowred (reduced ideal power), isprincipal (solve the principal ideal problem in arbitrary number fields), isideal (check if a matrix represents an ideal), base and related programs (Ford-Letard's implementation of Zassenhaus's round 4 algorithm), idealfactor (factorization of an ideal into prime ideal powers), idealadd, idealdiv, idealintersect (operations on ideals), principalideal and principalidele (create a principal ideal/idele), isunit (decompose a unit on the fundamental units). b) Improvements Buchimag() and buchreal() are now more robust, and give explicitly generators of the class group. initalg() has two extra components, one giving the Hermite normal form of the integral basis, the second giving the multiplication table. The meaning of the 5th and 6th component have also changed. The round 2 algorithm which was used in functions such as base, discf, polred, initalg, etc... has been replaced by the round 4 algorithm which can be up to 20 times faster. The round 2 version has been temporarily preserved under the name base2(). c) WARNINGS: * the names of the functions compose and redcomp have been changed to compimag and redimag, which are more logical. * Also, the function factornf() uses variables as factfq() which is also more logical. * In future versions, the buchxxx functions will take only one argument and will probably be unified. 6) Polynomials and power series a) New programs Simplefactmod (polynomial factoring mod p with only degrees and exponents), factorpadic (a much more efficient version of p-adic factorization using the round 4 algorithm), b) Improvements The factorpadic() program is now complete for polynomials with integer coefficients. 7) Linear algebra a) New programs perf (perfection of a lattice), hermitemod (HNF reduction using mod D techniques, much faster than hermite), imager (image of a matrix in case of real non-exact coefficients), vecmin and vecmax (minimum and maximum of the coefficients of a vector/matrix), detint (multiple of the determinant of the lattice generated by vectors), hermitehavas (HNF reduction using an algorithm of G. Havas, still better than hermitemod). b) Improvements The "bit" parameter of algdep2 and lindep2 is now "dec", i.e. decimal digits instead of bits. Column vectors and matrices are printed slightly differently (using [] instead of ||). The rank program is now much faster. The vecsort program can now sort according to several indices at once. The hermite program now accepts matrices with rational entries. 8) Sums, products, etc... a) New programs b) Improvements The sum and product functions can have their upper limit lower than their lower limit with the result making sense. 9) Plotting functions a) New programs Rectscale (scale under GP, scaling of rectwindows), b) Improvements The coordinate parameters of rline and rbox are now relative to the cursor, as for rpoint. The functions ploth and ploth2 now really use the current precision and not a precision of 9. So the user should switch to low precision before calling these functions if low precision is enough for the computations to be done accurately. The functions plothraw and postplothraw have now their y-coordinates going in the same direction as ploth and ploth2, and the x and y-limits of the window are printed, again as in ploth. 10) Programming a) New programs b) Improvements In emacs GP-mode, one can now use command-name completion. The help system outside of emacs has been considerably improved, in particular allowing the use of a menu. 11) Documentation and coding a) New style and platforms The code has been completely revised so that it is now written in ANSI-C and hence cannot be compiled with a K&R C compiler anymore. It is also C++-compatible, although no C++-specific constructions have been introduced. The code has been completely revised by J. Kouhia and H. Cohen so that it can be ported with little effort to 64-bit machines. Also, a distinction between Supersparc and Microsparc based sparcv8 platforms has been introduced for efficiency. b) Improvements The manual produces now a single dvi file instead of a separate one for the index. The manual has now a specific section devoted to functions for general algebraic number fields.