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] `