Karim Belabas on Thu, 21 Apr 2005 19:20:09 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
pari-2.2.10 released |
Dear PARI enthusiast, I would like to announce the release of pari-2.2.10.ALPHA. The sources and a pre-compiled binary for Windows can be obtained through the address http://pari.math.u-bordeaux.fr/download.html %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% This is mostly a bug-fix release. The main user-visible changes are faster basic routines, propagating to high-level ones. - factoring : trial division, MPQS, factorization of polynomials over non-prime finite fields, polroots() - exponential function - quadclassunit(). Have fun, Karim. P.S: The Changelog Done for version 2.2.10 (released 17/04/2005): Fixed BA 1- gp2c description of == operator was broken. 2- asin(I) --> SEGV, acos(1 + 0. * I) --> SEGV, atan(I/2) --> SEGV sqrt(0*I),acosh(1+0*I) --> oo loop 3- make test-kernel didn't work [missing gen_m1 & int2n] 4- thetanullk(1/2,1) --> SEGV [from 2.2.9] 5- unit component in factor(t_INT + 0*I) was wrong 6- no typecheck for qfbhclassno input 7- diviuexact destroyed input and made further assumptions [=> wrong results in ellglobalred]. Replaced it by a clean wrapper. GH 8- thue(thueinit(x^3 - 2), 2) --> SEGV 9- reorder([1]) --> SEGV (bad input, but sanity check was wrong) 10- rnfconductor(,1) [ = rnf_is_abelian() ] didn't accept polynomials with POLMOD coeffs + used a wrong algorithm [ not modular + wrong result ] 11- broken code in hnfmodid() wrt GC (would add one 0 column, Bug #129) 12- sqrti(gen_0) --> SEGV [native kernel] BA 13- polrootsmod(,,1) could return a line vector instead of a column. 14- issquare(Pol(1)) --> SEGV BA 15- polsubcyclo() used too much memory for large conductors. 16- typo in quadtoc() --> quadgen(odd t_INT)*1. was wrong 17- subgrouplist([], [2]) --> [[;]] (instead of []) 18- typo in FqX_split [ (!degpol(x)) --> degpol(x) <= 0 ] -> very rare SEGV 19- after alias(a, b); kill(b), invoking 'a' would access corrupted data 20- round(-0.5) --> -1 [ should be 0, as was output by round(-0.5, &e) ] RS 21- gcc-3.4 breaks on compatibility code to support old readline versions [ pre-4.2 ]. Typecast parameters, not functions and dump (approximate) support for g++ + old readlines in gp_rl.c 22- \p 8000 E=ellinit([0,0,0,0,1296]); P=[-8,28]; ellpointtoz(E,P) --> oo loop 23- idealaddtoone(nfinit(y),[0]) --> SEGV [ BIB ] 24- aprcl would wrongly report composites [ introduced aprcl.c:1.48, before release-2-2-8 ] 25- ellchangecurve(e over Qp) --> e.w not updated 26- ellheight(e over Fp, pt) --> SEGV 27- issquare(Mat(2), &z); z --> SEGV [ don't allow matrices as input ] issquare(1/x^2) --> SEGV [ typo in polcarrecomplet ] 28- rnfkummer(over Q) --> type error. 29- allow qfbprimeform(d > 0, p < 0) 30- Since exp(-1e100) --> 0. [ tolerable: alternative being underflow error ], we shouldn't have exp(-1e100) --> truncation error. Fixed. 31- rnfkummer(bnrinit(bnfinit(y),nextprime(10^20),1),Mat(3)) --> module too large in Fp_shanks [ conductor() was computing unnecessarily tough discrete logs ] 32- [Configure:] add /lib64 and /usr/lib64 to library search path 33- SEGV in nfeltpowmodpr() for primes of degree 1 [see 2.2.7-F21] + inputs containing t_INTMODs yield unpredictable [wrong] results 34- znlog(x,g): first check whether x == g [ quite frequent ] 35- rnfisnorminit(nfinit(y^2+y+1), x^3-y,2) --> "incompatible variables" 36- nffactormod() returned a factorization which was not a proper t_MAT 37- rnfequation(y^2+1, x + Mod(z*y - 1, y^2+1)) --> SEGV [ BIB ] 38- many problems in matfrobenius for _inexact_ matrices LGr39- very rare SEGV in idealprimedec() [ typo in init_norm(), using FpX_red on a t_INT, which is no longer valid ] 40- [library:] precision() output "wrong" value for small non-zero t_REAL (depended on exponent, not the bit accuracy of the input). Change so that true bit accuracy is used unless input is 0 (then use exponent). 41- rare memory corruption in thue() [ SmallSols ] 42- gamma(z) for tiny z suffered from catastrophic cancellation 43- ??? sometimes output extra entries [ e.g. ???eigen output matfrobenius ] 44- bezout(0., 0.) --> division by 0 45- issquare(5, &n) --> SEGV 46- factor(x in Q[i] \ Z[i]) --> rubbish [ typo in factor_gauss() ] 47- ellrootno & elllseries didn't check their arguments 48- rnfisnorminit(non-monic polynomial) --> SEGV 49- prevent Ser & Pol from creating invalid objects (e.g Pol(x+y, y) -> y+y) 50- TODO item: polrootspadic(x^2+8*x+4, 2, 2) --> 2 + O(2^2), whereas there's no padic root. The documentation is not clear enough: should polrootspadic(x,p,r) find roots in Z/p^r [current behaviour], or use the precision of the supplied polynomial to compute roots in Qp, then return them at precision p^r [ better, polroots() and factorpadic() behave this way ] ? 51- padicappr(f, t_POLMOD) didn't work 52- rnfidealnormabs(rnfinit(nfinit(y),x^2+1),1) --> SEGV 53- no argument check in primepi() 54- ellminimalmodel(ellinit([1,2,3,4,5])) --> gerepile error 55- gcd([]) was 1 [ should be 0 ] + gcd([...]) used an inefficient algorithm 56- [readline] completion in extended help context ?? didn't include GP defaults 57- [from 2.2.9] nfsubfields(x) had become unable to exploit the trivial case when x is irreducible modulo some prime 58- [from 2.2.9] typo in krosi -> wrong result [ affected aprcl only ] 59- dirdiv([],[]) -> SEGV 60- using allocatemem() in files input with read() could corrupt stack allocatemem() does not end by a longjmp anymore; it is still impossible to use it in loops 61- typo in matrixqz: matrixqz(Mat([1,1]~)/2,0) --> "not a rational matrix" 62- [cf 2.2.7-F23-] use safer parameters in bernfrac(): bernfrac(166) was wrong. 63- [Bug #201] gp --test: line split mode initialized too late print(vector(1000)) would bypass it. 64- [Bug #200] gmul2n(t_POL, n) would not normalize the resulting polynomial [ needed in characteristic 2 for instance ]. 65- FpX_center and centermod didn't use the same normalizations. Fix FpX_center 66- factormod(T,p,1): output was not sorted BA 67- [from 2.2.9] -fPIC missing for gp2c-run on platforms that require it. 68- if(1,print,print(no)) --> no was printed [a function expecting any number of string objects, called without parentheses (no args), would read the following arguments as its own ] 69- more stringent tests in ideal* functions: don't accept t_COL with incorrect length as ideals ([]~ produced SEGV in many cases) 70- factorback([1,1; 0,1],nfinit(x^3+2)) --> SEGV 71- [Bug #156] kbessel was unstably evaluated ? besselk(1,120) %1 = 448600744132608.0000000000000 72- hyperu and kbessel(,1) inaccurate. E.g: hyperu(1,1,1) at \p28 -> last 3 digits wrong Added 1- routines equalsi/equalis, equaliu/equalui, cmpui/cmpiu 2- exported FFTinit() / FFT() wrappers to rootpol.c:fft() [not under GP yet] 3- routines Rg_to_Fl, Rg_to_Fp, RgX_to_FpX, RgX_to_FpXQX, RgX_to_FqX, RgV_to_FpV, RgXQ_mul, RgXQ_sqr, RgX_div_by_X_x, FpX_div_by_X_x, RgXV_unscale 4- file Qfb.c [ stuff related to binary quad. forms moved out of arith1.c ] 5- routines truedivii, truedvmdis, truedivis BA 6- [GMP] faster divri routine. BA 7- support for real forms for qfbsolve. 8- routines RgX_gcd_simple, RgX_extgcd_simple [ when no coeff explosion in base field ] BA 9- new algorithm for exp(t_REAL) [ Newton ] 10- new macro ndec2prec() 11- use Trager's trick in factorff() 12- member function .bid (from a bnr). Extend mod, clgp, no, cyc, gen to bid and bnr structure. 13- new keywords for ?? : bid, CFT, ideal, idele, modulus, rnf. 14- new construction %#: number of history entries so far PC 15- an optional 2nd argument to znorder() to limit the search space Changed 1- renamed gegal --> gequal, gegalgs --> gequalgs, gegalsg --> gequalsg, egalii --> equalii 2- improve trial division in all basic arithmetic functions [ e.g try for(i=1,10^5, factor(1009)), or moebius, or ... ]. Old logic was broken for small inputs (tried far too many primes) 3- improve quadclassunit(D >> 1), about 10 times faster in the 40 digits range [forbid long reduction cycles (too costly to update arch. info when a relation is found + streamline factorquad() ]. See Z_lvalrem_stop() + remove extra_relations() and use large prime variation all the way [almost all relations are found this way] 4- streamline/clean-up polroots [ complete rewrite, much faster for small degrees ]. 5- improved zetakinit() [save some multiplications, about half of them for quadratic fields. Less so as the degree increases. ] 6- renamed RgX_RgX_compo -> RgX_RgXQ_compo 7- renamed binome -> binomial, chinois -> chinese [ added chinese1(x) for chinese(x, NULL) ] 8- add GC in integer valuation functions + use recursive algorithm when valuation looks large 9- no longer raise an exception when online help used on unknown id or obsolete function [report 'unknown identifier' or 'obsolete function'] 10- removed buggy support for narrow class group in quadclassunit + rewrite binary quadratic forms [ qfr3 / qfr5 ]. TODO: move from arith1.c to qfb.c 11- reinstate cornacchia + cornacchia2 with a different interface [ use cornacchia in qfbsolve ] 12- allow non-real arguments in incgamc, incgam MW 13- ellap: if E has CM by a principal order, use Cornacchia instead of Shanks/Mestre 14- more efficient algorithm for issquare(t_FRAC | t_RFRAC) 15- don't return t_INTMODs component in *modpr routines, but lifted representatives. 16- FpX_roots, FpX_factor: normalize input first + direct support for quadratic and linear polynomials [ no need to compute X^p !] 17- FpXQ_powers and similar routines: use multiplications when input has small degree, squarings otherwise. 18- matsnf over polynomial rings: make sure elementary divisors are monic 19- ellpointtoz() now returns z such that 0 <= Im(z) < Im(w2), 0 <= Re(z) < Re(w1). 20- bnfinit(non-monic t_POL) --> now discard variable change 21- rename apprgen9 -> padicappr, factmod9 -> factorff 22- rewrite padicappr() 23- [COMPAT] bnrdisclist has lost its 4th argument 'flag', and omitting the archimedean component now means that all 2^r1 possible values are substituted (formerly: indicate no ramification at infinity). The prototype of bnrdisclist0 has likewise changed. 24- renamed isprincipalrayall -> bnrisprincipal, rayclassno -> bnrclassno rayclassnolist -> bnrclassnolist 25- Change the output of ideallist with technical (flag 2,3) [ with units ]: instead of two vectors, output a vector of 2-component vectors. Change the input of all list routines (bnrclassnolist, bnrdisclist) accordingly. 26- %0 (undocumented) is no longer accepted as an alias for % 27- renamed realzero -> real_0, realun -> real_1, realmun -> real_m1. GN 28- MPQS rewrite [cleaner, faster] Removed 1- obsolete implementation incgam1 [ use incgam. As far as private functions go, incgam2 is better ] 2- removed ideallistarch0, ideallistarchgen, ideallistunitarch, ideallistunitarchgen. Just use ideallistarch. 3- obsolete default 'buffersize'. Flag -b is a no-op. -- Karim Belabas Tel: (+33) (0)1 69 15 57 48 Dep. de Mathematiques, Bat. 425 Fax: (+33) (0)1 69 15 60 19 Universite Paris-Sud http://www.math.u-psud.fr/~belabas/ F-91405 Orsay (France) http://pari.math.u-bordeaux.fr/ [PARI/GP]