Karim Belabas on Wed, 15 May 2013 23:00:41 +0200

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

 pari-2.6.0 released !

Dear PARI lovers,

I would like to announce the release of pari-2.6.0-ALPHA, which starts a new
development cycle. The sources and a Windows binary can be obtained through
the address

http://pari.math.u-bordeaux.fr/download.html

A number of long-awaited, but stability threatening, improvements have
been committed to this new branch.

See http://pari.math.u-bordeaux.fr/Bugs/ for how to report problems
or submit wishlist items.

Have fun !

K.B.

HIGHLIGHTS FOR PARI-2.6.0-ALPHA:
================================

[The GP language]

- Ranges and slices: [a..b], x[a..b], x[^a]
? v = [2..8]
%1 = [2, 3, 4, 5, 6, 7, 8]
? v[2..4]
%2 = [3, 4, 5]
? v[^2]     \\ remove 2nd element
%3 = [2, 4, 5, 6, 7, 8]
? M = matid(3); M[1..2, ^2]  \\ first two rows, remove 2nd col
%4 =
[1 0]

[0 0]

- Set notations:
? [ p | p <- primes(10), isprime(p+2) ]
%1 = [3, 5, 11, 17, 29]

- Multiple assignments: [a,b,c] = V, for a = V[1], b = V[2], c = V[3]
? [D,U,V] = matsnf(A, 1)    \\ returns SNF and transformation matrices

- Error trapping: iferr() + a new data type 't_ERROR' to represent error
contexts. See ??iferr

\\ Compute [B]P on a "curve over Z/NZ". If an exception occurs,
\\ we found a zero divisor in Z/NZ, thereby factoring N.
? ECM(N, B = 1000!, nb = 100)=
{
for(a = 1, nb,
iferr(ellmul(ellinit([a,1], N), [0,1], B),
E, return(gcd(lift(component(E,2)),N)),
errname(E) == "e_INV"))
}
? ECM(2^101-1)
%2 = 7432339208719

- Timeouts: alarm(delay, expr) spends 'delay' seconds trying to evaluate
'expr', then aborts returning a t_ERROR object.

- Multi-if: to simplify successive 'else' clauses
? if (a == 1,     print("1"),                \
a < 0 ,     print("negative"),         \
isprime(a), print("prime"),            \
print("generic"))

- new function cmp() to "compare" arbitrary objects (transitive order
relation, returns 0 iff x === y). Useful for sets.

- new function getenv()

[The GP calculator]

- forprime(p = a, b, ...) now iterates over arbitrary ranges of primes,
independently of 'primelimit'. Parameter 'b' can be omitted (no upper
limit). More generally, primelimit is now deprecated: libpari functions
can quickly produce their own primes without relying on (enough)
precomputed primes.

- new iterators:  forcomposite() / forqfvec()

- GP debugger, new functions expanding the 'break loop' mechanism: dbg_up(),
dbg_down(), dbg_x(), breakpoint()

- new default 'linewrap'

[Multiprecision Kernel]

- binary splitting: Catalan's constant, Pi, log(2) (to be expanded)

[Elementary Number Theory]

- arithmetic functions no longer accept vector / matrix arguments
[ to allow passing factorization matrices ]: use apply()

- new convenience functions: hamming(), ispowerful(), digits() /
sumdigits(), ispolygonal(), istotient(), isprimepower()

- sqrtnint(a,n) for floor(a^(1/n))

- randomprime(), random([a,b])

- Bernoulli polynomials: bernpol() and sumformal()
? sumformal(n^2)     \\ F such that F(b) = \sum_{n <= b} n^2
%1 = 1/3*n^3 + 1/2*n^2 + 1/6*n

- renamed bezout() -> gcdext()

- sumdivmult: to Ñum multiplicative expressions

- seralgdep: to find linear relations with polynomial coefficients
? s = 1+1/2*y+3/8*y^2-3/16*y^3+3/128*y^4+15/256*y^5-57/1024*y^6 + O(y^7);
? seralgdep(s,2,2) \\ relation of degree <= 2, degree(coeffs) <= 2
%2 = -x^2 + (y^2 + y + 1)

- sieve algorithms for znlog() and fflog()

[Polynomial Arithmetic]

- polgraeffe(f): returns g such that g(x^2) = f(x)f(-x)

- poliscyclo(), poliscycloprod(), polcyclofactors(): cyclotomic factors
of rational polynomials

[Linear Algebra]
- mathnf for matrices over K[X]

- matqr() to compute the QR-decomposition of a real square matrix;
mathouseholder() to apply a sequence of Householder transforms

- internal support for sparse matrices and Wiedemann algorithm; currently
only used by the discrete log algorithms.

[Elliptic curves]

- extend ellinit inputs: ellinit([a4, a6]). On singular curve, return []
instead of raising an error. New function ellfromj().

- new dynamic implementation of the 'ell' data structure: ellinit is now
used to record the coefficients of the curve and the domain over which it
is defined. Further data is added to the structure on demand, if and when
it is needed, e.g. cardinality and group structure. See ??ellinit.

- elliptic curves functions no longer assume that a curve over Q is given by
a minimal model. A non-miminal model used to silently produce wrong
answers; no longer!

- allow ellinit(E / Qp) for arbitrary p (also p = 2) and reduction type
(no longer restricted to Tate curves)

- allow ellinit(E / Fq) for non-prime finite fields, incl. point counting
(SEA, Harley)

- allow ellinit(E / C)

- new function ellheegner() to find a non-torsion rational point on
E / Q of rank 1.

- new implementation of ellweilpairing / elltatepairing

- renamed ellpow() -> ellmul()

[Number Fields]

- maximal orders (when the discriminant is hard to factor): allow to specify
a list of primes at which the order nf.zk must be maximal. This [T, listP]
format supersedes the old addprimes() hack as well as rigid optional
flags for nfbasis, nfdisc, polredabs. (And no longer depends on the
global 'primelimit'...) See ??nfinit
? T = polcompositum(x^5 - 101, polcyclo(7))[1];
? nf = nfinit( [T, 10^3] );
? nfcertify(nf)
%3 = []
A priori, nf.zk defines an order which is known to be maximal at all
primes  <= 10^3. The certification step proves it is actually globally
maximal.

- new function polredbest(): "best-effort" variant of polredabs(). Not
canonical but finishes in polynomial time.

P.S. The Changelog

Done for version 2.6.0 (released 15/05/2013):

Fixed
1- Euclidean chains were confused by t_POLs with t_INTMOD/t_POLMOD coeffs
[ because a 0 polynomial could have lg() == 3 ]
2- numerical instability in ellheightoo [#1204]
3- Flm_gauss(m, smallish p): fix and enable the OK_ulong switch [ faster ]
4- remi2n didn't allow negative arguments [native kernel] [#1215] 5- ellrootno(e, p) started by computing a global minimal model for e
instead of a local one at p.
6- qfbred(t_QFR) wrong when frac( sqrt(D) ) > 0.5
7- add GC in sumalt()
8- problems with diagnostic messages when changing a 'default', e.g. \o3
9- divru() could call bfffo(0) => overflow in expo()
AMe10- (t_FRAC<0) * t_INTMOD => wrong result
11- trace(t_POL or t_SER) could yield an unormalized object [0 leading term]
LGr12- off-by-1 error in primepi() when argument is = primelimit
13- bestappr(0.*x+1) -> incorrect object
14- znlog(3, Mod(3,8), 2) -> error
15- crash when default(prettyprinter,...) points to a non-existent command
16- qfperfection(): wrong result in unlucky cases [#1223]
17- allocatemem() did not reset parse error [#1226]
BA 18- (x->vector(1,j,x))(1) --> significant pointers lost [#1211]
VL 19- [makefile] Incorrect -I and -L flags order [#1212]
20- nfbasis / nfdisc(f,, partial factorization) would sometimes spend a
lot of time trying to factorize a discriminant [#1227]
21- numerical instability in qfgaussred / qfsign [#1232]
22- missing consistency checks in conjvec [#1231]
23- numerical instability in polredabs [#1228, #1229]
24- wrong result in bezoutres [#1233]
25- wrong sign in polresultant() [#1234]
26- change default(realprecision) so that it returns the internal precision
[ as precision(1.) ], not the number of printed digits. [#1235]
27- subst(Y/X,X,x) -> 0
PB 28- polrootsff(x^2-x-ffgen((v^2+1) * Mod(1,3))) -> SEGV [#1241]
29- intnum(t=[0,0],[1],(sin(t)/t)^2) -> "precision too low in mpsc1"
BA 30- functions ending by the x[y]=z construct could corrupt the stack.
31- nfbasis(pol, 0, factorization containing (-1)^1) -> wrong [#1244]
32- qfminim(): better type checks for matrix entries
33- qfminim(): incorrect GC in smallvectors()
34- padicappr(x^2+1+O(3), -1+O(5^10)) --> no error
35- tests test-kernel and test-ploth were broken
36- lots of missing sanity checks in hilbert(x,y,p)
[ e.g. hilbert(O(3), Pi, 5) -> 0 ]
BA 37- for(i=1,10^7,) + SIGINT -> SEGV [#1249]
38- ellwp: take flag into account also for t_SER output [ was: numerical
case only ]
39- factor(p) was much slower than isprime(p) for p a "small" prime
BA 40- mateigen precision error was not trappable.
41- accuracy problems in bnfisunit [#1253]
42- broken rnfeltup [#1255]
43- x===y was always wrong for x,y t_SER
BA 44- gamma(t_SER) with positive valuation did not work.
45- ispower(x < 0) could return an even value ! [#1259]
46- ispower(1 / n) return a wrong result [#1259]
BA 47- [breakloop] initial context could be lost.
BA 48- Ser([1+O(x)],x) returned an invalid object.
BA 49- ispseudoprime used too much stack for huge operands.
50- [rnfidealup doc] idealgentoHNF() was incorrect.
DS 51- elldivpol returned wrong result for degree n >=8.
52- overflow in mpbern(n) for huge n [#1256]
53- idealfactor(nf, non integral ideal) would remove a rational content
instead of factoring A/B with A,B coprime integer ideal. Which led
to costly factorizations [#1158]
LGr54- the global variables associated to the primetable _maxprime / diffptr
could become inconsistent
55- psdraw() ignored plot colors
BA 56- stack_base() was not C89 standard compliant.
BA 57- my(f(x)=x+1);f --> SEGV                                       [#1273]
58- ellheight([0, 0, 1, -1, 0], [0., 0.]) -> BUG
59- allow bnrL1 over Q [#1279]
60- factorpadic(,,,1) => SEGV when linear factors/Q [#1278]
61- mathnf(..., 4) didn't remove 0 columns from HNF [#1271]
JD 62- possible SEGV in pari_init_opts [#1264]
BA 63- ellorder(E,P*Mod(1,p)) did not work if E was defined over Z
64- allow writebin to save user functions (t_CLOSURE) [#1171]
65- sqrtn(1+O(5),5) -> error, ispower(1+O(5),5) -> error [#1261]
66- parimacro.tex: pdftex --output-format dvi  would produce a PDF
BA 67- pari_close failed to free all allocated memory [#1297]
BA 68- pari_close did not restore GMP memory functions
69- avoid outputing ANSI escape sequences to reset terminal state when
unnecessary [#1289]
BA 70- ellpointtoz was numerically unstable
71- issquarefree(0) => error [#1304]
72- sizebyte(t_LIST) returned the size of the wrapper type, not the list
itself [#1307]
73- ellgroup(E over Q, p) now returns the structure of the group of
non-singular points, when the curve has bad reduction at p.
74- factor_proven not taken into account in factor(n), where n is a
BPSW-pseudoprime
75- core(5*(huge composite)^2) was very slow [#1305]
76- sqrt(0.E-97-1.12-97*I) -> div by 0 [#1309]
BA 77- FpX_gcd(0,x) -> div by 0
78- x; y; p; q; subst(Mod(q,p), q, x + y) --> Mod(1, p)*x [#1321]
79- off-by-1 error when placing prime table sentinel after e.g.
default(primelimit, 2);
80- t_REAL with huge exponents print incorrectly [#1322]
81- a1;a2;a3;a4;a6;ellinit([a1,a2,a3,a4,a6],1) was very slow
BA 82- FpX_factorff and FpX_rootsff were not using standard argument order
PB 83- printf("%.6f", 5E-5) -> SEGV [#1328]
BA 84- diffop(Mod(y,x^2-y),[y],[1]) -> wrong result
BA 85- calling a GP function with a lot of omitted arguments could cause a crash
GH 86- missing solutions in thue(), e.g. thue(thueinit(x^3+92*x+1),3^3)
87- t_RFRAC == t_RFRAC could return a wrong result [#1339]
88- obscure bug in polroots() (sage #13314)
89- polinterpolate([1,2] * Mod(1,7), [2,3], 0) -> incorrect type in gabs
BA 90- printf() did not flush output
91- logint() used too much memory and could return a wrong result:
logint(3^64, 3) --> 33
92- eint1(x < 0) normalization. Now eint1(x) = incgam(0, x) [#418]
93- polrootsff(2*x+1,2,y) -> SEGV [#1350]
94- resultant(x,x,y) -> 0 and related problems
95- thue((x^4+1)^2, 4) -> no solution
BA 96- idealramgroups() and idealfrobenius() did not accept a bnf
97- using new operators with default(compatible,3) caused a crash
98- rare corruption in ECM [#1240] factorint(,1) => SEGV
99- add missing call to normalize() in lift(t_POL/t_SER) [#1359]
BA 100- listput was not SIGINT safe
BA 101- znorder(Mod(5,16),200) -> 5 instead of 4
102- e.tate lost accuracy
103- 2-adic ellinit
104- allow ellinit over C
105- ellpointtoz(E / Qp, ...)  [ wrong result / error messages ]
JD 106- galoisinit(x^3+x^2-2*x-1) -> uninitialized read [#1389]
BA 107- polhermite(66) -> corrupted result [#1393]
108- nfhnf() would only accept matrices of maximal rank
BA 109- galoisfixedfield() could return a wrong result for polynomials with
large roots [#1406]
110- bnrdisc could return a wrong result if the modulus had more than
2 prime divisors [#1399]
111- a = Mod(1,2)*x; gcd(a,a) return x instead of Mod(1,2)*x
112- changing primelimit from within forprime loop yielded unpredictable
results (potential SEGV)
113- y;z;(x^2+y)*w/z/x -> significant pointers lost [#1248]
114- log(t_FRAC close to 1) => junk (idem lngamma) [#1238]
115- thue(thueinit(x^3-1493,1),3) -> error
LGr116- typo in modr_safe -> precision error [#1413]
117- nfhnfmod(non-integral module) => wrong result
nf=nfinit(y); A = [[1,1/2;0,1],[1,1]];
nfhnfmod(nf, A, nfdetint(nf,A))

Changed
1- mathnf: swapped flag 3 and 5.
2- allow ellinit([a4,a6]) [#1213]
3- ellinit(... singular curve ...]): return [] instead of raising an error
4- GP set elements are no longer converted to t_STR (requiring "eval" to
recover the underlying object). Arbitrary GENs can be stored in a set.
5- moved Odos/* to relevant src/systems subdirectory
6- removed Odos directory
7- no longer allow Vec()/Vecrev(), Col(), Vecsmall(),  without argument.
Use [], []~, Vecsmall([]), respectively.
8- allow specifying an optional dimension in Vec/Vecrev, Col, Vecsmall.
9- allow Vecsmall(t_POL or t_SER)
LGr10- nicer printout of small matrices: justify columns
11- improve gmul(t_REAL, t_FRAC) when numerator of t_FRAC is 1
BA 12- [darwin] do not use dylib_ prefix to ld options [#1210]
13- allow idealhnf(nf, t_QFI / t_QFR) for quadratic fields
14- no longer allow 3 arguments in bestappr() [useless], no longer
mix Pade approximants and continued fractions [too confusing: must a
t_SER be converted to a t_RFRAC or be treated coefficientwise?]
15- if znlog() has no solution, return [] instead of error
16- znlog(x, g): no longer assume that g is a primitive root, nor that the
underlying (Z/N)^* is cyclic
17- renamed gen_eltorder -> gen_order
18- logfile: strip properly color escape sequences [#1225]
19- change nfbasis(T, flag, fa) to nfbasis(T, listP). flag was used to invoke
round2 instead of round4 (inefficient=> useless) OR to only
partially factor poldisc(T), up to primelimit (very dangerous since
primelimit is a global variable). Now listP describes a list of primes,
and we return a basis of an order which is p-maximal at all those primes:
either a vector of primes, a factorisation (as fa before) or an integer
B to indicated {p <= B} (a safe and flexible version of nfbasis(T, 1)).
nfdisc() was changed similarly.
20- first call isanypower() in BPSP_psp_nosmalldiv() when input is > 2^512
[ < 1% of required time, 1 order of magnitude faster when it succeeds ]
[ #1074 ]
21- sort polroots() output so that it no longer depends on current precision
22- delete README-subversion, replace with README-git
23- move README.os2 to src/system/os2/README
24- change compiler version printout in gp header
25- much faster final divisibility test in nfgcd() [#1214]
26- error type sqrter5 "not a quadratic residue in sqrt" now generalized
to denote "not an n-th power residue in sqrtn"
BA 27- global_err_data is now a GEN.
BA 28- more usable form of alarm(s, code): evaluate code, aborting after s
seconds. Return the result or a t_ERROR object.
29- [non-Unix systems] the name of the preferences file is now "gprc.txt"
(it remains ".gprc" on Unix systems)
30- also look for the preferences file in PARI's "datadir"
31- removed rootsold() code : polroots(x, 1) is no longer accepted
32- rewrite ellan using C-longs + new function anellsmall()
33- renamed all libpari error codes [ pari_err() arguments ]
34- allow t_VECSMALL in vecextract
35- look for a few more short vectors in polred(), only return subfields
and the best primitive polynomial [wrt discriminant]
36- [library] remove precdl argument in ellwp0: use a t_SER argument like
in all other transcendental functions.
37- ellsigma / ellzeta: allow t_SER arguments, like ellwp.
38- polcoeff(x+2*y,1,y) -> 2  [ was 2*x^0 ]
39- quadhilbert / quadray: replace final polredabs call by polredbest [#1025]
40- listsort() now uses the cmp() comparison function, and becomes fully
compatible with setsearch() [#1167]
41- vecsort(,,2) [lexicographic order] is now always on. The flag is
now deprecated and ignored.
42- allow t_SER with integral coefficients to use asymptotically fast
(ZX_mul / ZX_sqr) polynomial multiplication
LGr43- let initprimes0 use an existing prime table
44- rename stackmalloc -> stack_malloc. Add stack_calloc
45- matimagecompl() now returns a permutation (t_VECMALL) no longer a t_VEC
46- remove config/gitversion from 'make snapshot' tarball
JM 47- Better implementation of ellweilpairing/elltatepairing
BA 48- agm now returns the optimal AGM
49- unify make_emacs_tags / make_vi_tags => make_tags + fix problems for
(exuberant-ctags)-based etags. Both tag files (emacs / vi) contain
the same tags now.
50- ellglobalred(E) now also returns the conductor factorization [4th compo]
51- library functions *_incremental_CRT no longer need the product of the
moduli, instead they compute it and update the running modulus.
52- factor_proven now affects all the factoring machinery, as documented, i.e
also multiplicative function (moebius, sumdiv,...)
53- allow t_VECSMALL in lex()
54- nfrootsof1(K) check whether K.pol is a translate of a cyclotomic pol.
[initial patch LGr, #1175]
55- format of cached Bernoulli table: now a t_VEC of t_FRAC / t_REALs.
Removed bern() macro. The new data must be accessed using bernfrac /
bernreal.
56- [libpari] simplify init_primepointer(n, p, &pd) interface
=> init_primepointer(n, &pd). Remove argument 'p', ignore the previous
value of pd [ remove assumption that it pointed into a prime table ]
and always set pd to a pointer into the private prime table.
57- forprime loop: no longer allow to modify the loop index
? forprime(p = 2, 10, p = [])
***   at top-level: forprime(p=2,10,p=[])
***                                   ^---
***   prime index read-only: was changed to [].
58- faster forparii() [ for() with t_INT lower bound ]
59- forprime(p = a, b, ...) now iterates over arbitrary ranges of primes,
independently of 'primelimit'. Parameter 'b' can be omitted (no upper
limit). More generally primelimit is no longer a true limit to iterate
over primes: all libpari functions use the forprime_t interface
60- rename ggval -> gvaluation
BA 70- GP function ellpow is renamed to ellmul
BA 71- rename powell->ellmul, addell->elladd, subell->ellsub
72- is_pth_power interface [ pass a forprime_t iterator ]
73- polrootsmod(, 4) is no longer accepted
74- revert to Ramanujan's formula to compute Pi [ + binary splitting ]
75- polinterpolate(,, 'x) use divide & conquer algorithm
BA 76- binary(0) now return []
77- polisirreducible() now avoids factoring in most cases
HC 78- reimplement incgam()
79- allow eint1(t_COMPLEX)
80- when 'echo = 1', no longer echo commands if they were entered
interactively [commands ended up printed twice]
81- unless 'echo = 1', no longer log commands entered non-interactively
when 'log = 1'. '\r file' used to log the entire content of 'file'.
82- allow thue(t_POL, rhs) for thue(thueinit(t_POL, rhs))
83- elltors now uses division polynomials by default
84- modified "Hit Return to Continue" message so that it becomes a comment
when copy-pasted
85- rnf_fix_pol() takes an extra argument, the calling function's name
86- fast gerepilecopy() for leaves
87- rename leftright_pow_fold -> gen_pow_fold, leftright_pow_fold_i
-> gen_pow_fold_i
88- upowuu now returns 0 on overflow
89- primes(n) no longer needs precomputed primes
90- prime(n) no longer needs precomputed primes
91- primepi(n) no longer needs precomputed primes
92- removed 3s delay when recompiling PARI after modifying a header
[ Was there to avoid problems on slightly out-of-synch NFS fileserver
host. Had become an annoyance on fast multicore servers, esp. when
bisecting to find a broken commit. ]
93- improve Configure --tune + let tune -t/-tt/-ttt print more and more
verbose messages [ old 'tune -t' corresponds to current 'tune -tt' ]
94- arithmetic functions no longer accept vector / matrix arguments [ to
later allow passing factorization matrices ]: use apply()
BA 95- rename RgX_check_ZXY -> RgX_check_ZXX, ZXY_max_lg -> to ZXX_max_lg
96- elleta() and elleisnum(e, 2) to use a theta series formula in
O~(prec^(3/2)) instead of O~(prec^2).
BA 97- zv_cmp0 renamed to zv_equal0
98- allow ellinit / Qp for arbitrary reduction type
99- ellpointtoz(E / Qp, ...), now return phi(P) [ used to return the same
result for phi(P) and phi(-P) [ split multiplicative reduction ],
resp. phi(P) + 1/phi(P) [ non-split reduction ]
100- ellinit(E / Qp).tate : the u component is now always a square root
of u2, also in the non-split case (in which case it lives in a
quadratic extension of Qp)
101- renamed library function divsum() => sumdivexpr()
102- listpop(empty list) => no-op [ was "domain error" ]
103- ellap, ellak, ellan: allow non-minimal model
104- when timer = 1, no longer print timing if the time is negligible;
in particular, no timing should be printed when defining a user function
or and alias.
105- The proper way to initialize an nf structure when the polynomial
discriminant is hard to factor is nfinit([T, listP]), where listP
specifies a list of primes (see ??nfinit). nfdisc, nfbasis, all the
polred functions allow analogous arguments (see Changed-19). This is
cleaner and more flexible than old flags relying on the value
primelimit (e.g. nfinit([T, nfbasis(T, 1)]), now deprecated). Also,
the nfinit function now sees the local specifications and can
take steps to avoid problems (instead of taking for granted a basis,
without knowing whether it is correct or not). The result can
also be certified (nfcertify)
106- polredabs() with (deprecated) nf_PARTIALFACT flag (or new [T,listP]
argument) now returns 0 if the resulting order cannot be proven to be
maximal.
107- rename bezout() -> gcdext(), polresultant() -> polresultantext()
108- the prime table is now computed once and for all on startup and can
no longer be increased by modifying primelimit: the dynamic forprime
machinery allows fast primes up to primelimit^2 which is more than
enough even with a small table. The default value of 500.000 is already
larger than necessary
109- removed the mechanism allowing prime gaps larger than 255 in the
prime table: as a result it now limited to 436273290, allowing fast
primes up to 1.9 10^17
BA110- permtonum/numtoperm now use the standard lexicographic numbering
111- issquare(t_INTMOD), ispower(t_INTMOD): factor modulus incrementally,
in case we hit a local non-residue -> early abort [#1376]
112- gphelp + OS/X : make "open" the default PDF viewer (was "acroread")
113- renamed exp_Ir -> expIr

Added
1- mathnf for matrices over K[X] [#41]
BA  2- GP function ellheegner
BA  3- asm inline macro addllx8 for faster addition
BA  4- Library function FpXQ_autpowers
5- GP default 'linewrap'
6- functions Fp_issquare, Fq_issquare.
7- GP function cmp [ universal comparison ]
8- library functions Fp_addmul, addmulii, addmulii_inplace, addmuliu,
addmuliu_inplace, lincombii, mulsubii, submulii, submuliu,
submuliu_inplace
LGr 9- Catalan's constant [ Catalan() ]
BA 10- library functions F2x_issquare/F2x_sqrt
BA 11- [INSTALL] Documentation of RUNTEST
12- library function bestapprPade
13- library function gen_factored_order, Fp_factored_order
14- macros retmkvec, retmkvec2, retmkvec3, retmkvec4, retmkcol, retmkcol2,
retmkmat, retmkmat2, retmkintmod, retmkpolmod
retmkintmod, retmkpolmod, retconst_col, retconst_vec
15- allow Ser(t_VECSMALL)
BA 16- library function gsprintf/gvsprintf
BA 17- new PARI type t_ERROR (error messages)
BA 18- new error trapping system and GP functions iferr,iferrname
BA 19- implement lngamma(t_PADIC)
LGr20- new PARI functions F2m_gauss, F2m_inv, F2m_rank, F2m_image, matid_F2m,
F2m_mul, F2m_F2c_mul
BA 21- GP function getenv
22- new error class e_PRIME [ pari_err() ]
BA 23- low-level function int_bit
24- library function stack_strcat
25- function polredbest [ adapting a preliminary patch by BA ]
BA 26- library functions Fl_invsafe, F2x_halfgcd, Flx_Flxq_eval and Flx_FlxqV_eval.
BA 27- support for sparse matrix and Wiedemann algorithm
28- GP function vecsearch() [ use with vecsort() ]
BA 29- library function Z_issmooth
BA 30- linear sieve algorithm for Fp_log/znlog
BA 31- library functions Flx_to_FlxX, F2m_to_Flm, F2c_to_Flc, and Flxq_powu
32- GP function idealnumden()
LGr33- library function uprecprime()
34- library function ZM_pivots()
35- library functions nm_Z_mul, ZM_togglesign, ZM_nm_mul [ to improve Zlm_gauss ]
BA 36- [breakloop] GP functions dbg_up/dbg_down (like gdb up/down)
37- library functions rootsof1_Fp, rootsof1u_Fp, rootsof1_Fl
BA 38- GP functions dbg_x (like \x) and dbg_err (current error data)
39- matconcat()
BA 40- library functions Flm_Fl_add, Flm_invimage, FlxY_evalx
BA 41- library functions Flx_ffisom, Flx_ffintersect, Flxq_ffisom_inv
BA 42- library functions Flx_is_irred, Flx_is_smooth, F2x_is_irred
BA 43- accessors functions for t_CLOSURE: closure_arity,closure_codestr,closure_get_*
44- library functions ZMs_ZC_mul, ZpMs_ZpCs_solve, gen_ZpM_Dixon
BA 45- [breakloop] GP function breakpoint
BA 46- GP function ffnbirred
BA 47- cubic sieve algorithm for Flxq_log
BA 48- library functions F2x_F2xqV_eval, F2x_F2xq_eval
BA 49- forqfvec()
BA 50- library functions FqM_image, FqM_rank, FpXQXQ_powers, FpXQXQ_matrix_pow
BA 51- ellgroup(,,1): also return the generators
BA 52- library functions FpVV_to_mod, FpE_changepoint, FpE_changepointinv
BA 53- GP syntax [a..b] : [a,a+1,...,b]
BA 54- GP syntax [a(x)|x<-b,c(x)] : apply(a,select(c,b))
BA 55- GP syntax M[a..b,^c] : vecextract(M,"a..b","^c")
BA 56- library function FpE_log
57- select(f, v, 1) for indirect selection
58- hamming() function [initial implementation CG]
59- ispowerful() function
60- polgraeffe() function
61- functions poliscyclo(), poliscycloprod(), polcyclofactors()
62- function setbinop(f,X,Y) = { f(x,y), x in X, y in Y }
63- libpari function moebiusu()
64- sumdigits() function
65- libpari functions addiu, addui, subiu, subui, uissquare
66- randomprime() function. Allow random([a,b])  (return n, a <= n <= b)
67- ispolygonal() function
68- libpari functions uissquarefree, uposisfundamental, unegisfundamental
69- istotient() function
70- implement Haible/Papanikolaou binary splitting
BA 71- PARI functions FlxqX_nbroots, FpXQX_nbroots, FpXQX_nbfact.
BA 72- PARI function zv_search
BA 73- GP syntax: multiif if(a==1,b,a==2,c,default).
BA 74- GP syntax: multi assignement: [a,b,c]=V -> a=V[1];b=V[2];c=V[3]
BA 75- PARI functions gen_gener, gen_ellgroup, gen_ellgens, gen_powers
BA 76- FlxqE functions family (for elliptic curves over field of small characteristic>3)
BA 77- PARI functions Flxq_sqrt, FpXQ_sqrt
78- bernpol() function
79- sumformal() function
BA 80- PARI functions ZX_equal1, zvV_equal, ZXV_equal, FpXX_neg, FqX_neg
BA 81- FpXQE functions family (for elliptic curves over field of large characteristic)
BA 82- added GP function ellcard
BA 83- PARI functions FpXQ_powu, Fq_powu, FpXX_mulu, Fq_mulu, Fq_div
BA 84- PARI functions FqXQ_powers, FqXQ_matrix_pow, FqX_mulu, FqX_Fq_add
BA 85- PARI functions FqXY_eval, FqXY_evalx, FpXY_Fq_evaly
BA 86- SEA over non-prime finite field (for char p > 1000)
LGr87- Add clock_gettime timer option
88- add new error type e_DOMAIN
BA 89- Add black box finite fields for generic linear algebra
BA 90- PARI functions FlxqM_image, FlxqM_ker, FqM_deplin
BA 91- GP function ellneg
BA 92- PARI functions Fp_ellcard, FpXQ_ellcard, Flxq_ellcard
LGr93- vecmax / vecmin: add optional pointer argument (to hold index of a
largest/smallest entry)
94- printsep() function
CG 95- isprimepower() function
96- PARI functions F2v_to_F2x, F2x_valrem, F2x_deflate, F2x_shift
97- PARI function RgV_polint
BA 98- GP function digits
99- GP default 'sopath' [ rewritten from initial patch by GTo ]
LGr100- allow polylog(n, t_SER) around a != 0
BA 101- PARI functions ZX_shifti, ZX_remi2n, ZXV_remi2n
102- PARI functions cxexp1, mpsincos1
BA 103- GP function ellfromj
103- GP function forcomposite
104- new error class e_PRIORITY [ pari_err() ]
BA 105- Add black box algebra for Brent and Kung algorithm
106- PARI function RgM_dimensions()
BA 107- PARI functions RgX_splitting(), Flx_splitting()
108- made public the CATCH / TRY interface, renamed pari_CATCH / pari_TRY
PARI functions err_get_num(), err_get_compo(), pari_err_last()
109- PARI function stack_sprintf()
110- PARI function RgX_is_QX()
BA 111- PARI functions retmkmat2,retmkcol2,mkmat2,mkcol2,mkcols,mkcol2s et al.
BA 112- PARI functions ZXV_dotproduct(), ZXX_Z_divexact()
BA 113- PARI function gen_ZpX_Newton()
114- optional argument to contfracpnqn: return all convergents up to
p_n/q_n, not only the last 2
BA 115- PARI functions Flxq_autpow, F2xq_autpow
BA 116- PARI functions FpX_divrem_Barrett and unconditional FpX_rem_Barrett
BA 117- PARI functions F2xq_sqrt_fast, Flxq_lroot, Flxq_lroot_fast
BA 118- PARI functions FlxqV_dotproduct, FlxV_red
BA 119- PARI functions ZpXQ_inv, ZpXQ_invlift, ZpXQ_log
120- PARI functions absi_shallow, mpabs_shallow, absfrac_shallow,
Q_abs_shallow
BA 121- PARI functions FlxX_Flx_add, FlxX_Fl_mul, FlxX_Flx_mul, FlxX_neg
BA 122- PARI functions Fp_ellj, FpXQ_ellj, Flxq_ellj
BA 123- PARI functions FpX_mulu, Flx_mulu, ZX_mulu
BA 124- PARI functions FlxqXQV_autpow, FlxqXQV_autsum
BA 125- PARI functions FpXQXQV_autpow, FpXQXQV_autsum
BA 126- PARI functions FpXT_red, FlxT_red, ZXT_to_FlxT, ZXT_remi2n
BA 127- Support for preconditionned reduction in FpXQ/Flxq
128- PARI functions padic_to_Q, padic_to_Q_shallow, QpV_to_QV, Q_pvalrem,
ZX_Zp_root, Zp_appr, Fp_muls, retmkfrac
BA 129- Add safegel et al. for GP2C -C option
HC 130- Function sqrtnint
131- sumdivmult() to sum multiplicative functions
132- ?? online help: allow searching labels, e.g. ??"se:priority"@
133- PARI function ZpM_echelon, zlm_echelon
134- GP functions matqr and mathouseholder, PARI functions QR_init,
QgM_QR_init, gaussred_from_QR, R_from_QR, gtomp, RgC_gtomp, RgM_gtomp
135- PARI functions trivial_fact, prime_fact
136- PARI function rfrac_to_ser
137- PARI functions padic_lindep, Xadic_lindep
138- GP function seralgdep
BA 139- arm, mips and mips64 level0 inline assembly kernel
140- new error class e_COMPONENT
141- PARI functions init_primepointer_geq, init_primepointer_gt,
init_primepointer_leq, init_primepointer_lt
BA 142- new default strictargs for mandatory arguments
143- GP function nfcertify
144- GP function ellchangepointinv
145- optional 'variable' argument to polresultantext()
146- export part of the ifac_* interface (ifact_start, ifact_next,
ifac_read, ifac_skip, ifac_isprime)
147- PARI function expIxy
148- poor man's graphic engine 'plotps' (Configure --graphic=ps) when
no graphic library is available; dumps the hi-res plot to a temporary
PostScript file, then opens a PostScript viewer ('open -W' by default,
\$GP_POSTSCRIPT_VIEWER otherwise). Works around #1354 on OS/X.

Removed
1- dropped DOS support
2- qfrep(): bit 2 of flag is now meaningless, we now always return a
t_VECSMALL
3- file language/errmsg.c and global errmessage[] array: all error
messages are now part of pari_err_display())
4- error types arither1,mattype1,notpoler (merged with typeer), matinv1
(merged with gdiver)
5- legacy lindep and PSLQ implementations [algdep/lindep with
negative flags]: now use LLL in all cases.
BA  6- [libpari] removed unusable functions dbg_close/dbg_release.
7- [libpari] gisfundamental, gkronecker, gbigomega, geulerphi,
gissquarefree, gmoebius, gnextprime, gnumbdiv, gomega, gprecprime,
gsumdiv, gdumdivk, znprimroot0
8- ellsigma: flags 3 and 4 [ inefficient algorithm using the product
formula ]
9- Member function 'w' (this is technical, and no longer needed:-)
10- obsolete function weipell(). Use ellwpseries()
11- [libpari] obsolete function Polred. Use polredbest
--
Karim Belabas, IMB (UMR 5251)  Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1          Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation    http://www.math.u-bordeaux1.fr/~kbelabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux1.fr/  [PARI/GP]
`