# $Id: CHANGES,v 1.1546.2.29 2006/10/05 13:06:36 kb Exp $ Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/ Done for version 2.3.1 (released 06/10/2006): [last column crossreferences current development release 2.4.0] Fixed 1- typo in remiimul: wrong result in a "failsafe" branch (hardly ever taken). May affect modular powering /Fp if p >> 10^1300 [#457] Also affects the gmp kernel, for p >> 10^5800. [F1] 2- inconsistent return type in nffactormod [#460] [F3] 3- gammah(1+O(3^5)) --> incorrect type in ggamd. [F8] 4- invalid read in copy_leaf [ SEGV in some libc ] [F9] BA 5- ellheight short help was accidentally truncated. [F10] 6- substpol(1+O(x^(2*n)),x^2,x) --> 1+O(x) instead of 1+O(x^n) [#470] [F11] 7- [OS X] only use -no-cpp-precomp with Apple cc [F12] 8- divrem(x,x,y) --> [1/y*x, 0] [F13] 9- typo in qflll: in rare cases (exact input+floating point computation+ precision increase in last-but-1 step), the returned base change is not properly updated in last iteration --> basis not LLL-reduced [F15] 10- (1+x)/(1-x)/(1+x)^2 not simplified [#472,#473] [F14,F16] 11- ispower(x^k, k) would answer 0 for some x and k in {3,5,7} [#476] [F17] 12- content(t_MAT with exactly 1 col) gave a wrong result [F18] 13- rare bug in red_montgomery (returning 0 with + sign, an incorrect object) [ polrootspadic(x^11+x,11,10) --> corrupts gen_0 ] [F20] 14- qfbsolve(Qfb(1,2,10),5) --> [0,0; 0,0] instead of 0 [#479] [F21] 15- ispower(0, n, &z) would not set z [F22] 16- wrong result in conversion t_QUAD -> t_PADIC whenever disc = 1 (4) [F23] JJ 17- gaddgsz macro was wrong [#481] [F24] 18- polsubcyclo(p^k, q) --> wrong result [ gener_Fl(p^k) can't handle k > 1, use gener instead ] [#480] [F25] SC 19- [GMP] mp_set_memory_functions was called with an incompatible realloc function. [#484] [F26] AM 20- [TeXmacs] typo in texmacs_output: x --> [#491] [F30] BA 21- bnrstark prototype code was non-standard. [F34] 22- rnfkummer(,,degree) often found too many fields [#482] [F35] 23- missing GC in forvec(,,2) [F37] 24- loss of accuracy in p-adic ellinit: wrong digits and spurious errors: E.g i = 5; ellinit([1, -1, 1, -1, -14]*(1+O(17^i))) [F36] 25- possible stack corruption in charpoly(,1) [F39] 26- Ser(x) raised an error [#499] [F40] Changed 1- remove CPP from Configure tests [C3] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.3 0 (released 19/05/2006): Fixed 1- ispower(HUGE t_INT, n) could give wrong results (rounding errors) 2- ellheightoo (internal) and RgXQ_norm (public) not declared BA 3- [m68k kernel] didn't compile + need -fPIC 4- libpari.so: soname was incorrect %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.13 (released 26/04/2006): Fixed BA 1-[HPUX] 'program' bench failed for gp-sta [install did not work] 2- made BITS_IN_LONG and related constants 'signed long' [ avoid problems like : exp(10^10) --> 10^10 + 1 (silent overflow) ] 3- --kernel=none : libpari ended up not containing the 'divll' symbol 4- polgalois(x^3-2) --> [,,,"A3"] when new_galois_format was unset. 5- problem with negative valuations in ggcd(t_PADIC) [#411] 6- Fp_pow for huge moduli could return a negative number [#417] 7- y;x/y/z/x --> error [#410] 8- polredabs(x^4-35048*x^2+1016392*x-7368842) --> same, instead of x^4 - 17524*x^2 + 69403802. Rounding error, due to setting the relative precision wrt the wrong reference object. 9- nfisideal() could raise an error instead of returning 0 10- nfreducemodpr only accepted nf's (not bnf's or richer) 11- 1/a/x --> 1/a/x; 1/(a*x) --> 1/(a*x). Now 1/(a*x) in both cases (unify t_RFRAC normalization routines) 12- content(1.*a*x) --> 1 [ now returns a ] 13- content(1./a*x) --> 1.00000/a, but content(1./a*x + 1./a) --> 1/a [ now returns 1/a ] 14- t_SER ^ t_FRAC introduced floating point numbers even when rational expression available, e.g (8 + x)^(1/3) 15- round(t_POL/t_SER, &e) with leading coeff rounded to zero 16- trace(Mod(y,x)) --> SEGV 17- gcd(1, 1/x) --> 1 [ gcd(Pol(1),1/x) correctly returns 1/x ] content(x/y + 1) --> 1 [ content(x/y) correctly returns 1/y ] content(x + 1/y) --> 1 [ also wrong in pari-2.1.7 ] content(1/x/y) --> 1 [ should be 1/y ] 18- missing vectors in qfminim(x,b,,2) [ m omitted ] 19- 'make test-kernel' [ wouldn't compile ] 20- matsnf(matrix with t_POL entries, 1) ---> incorrect matrix V 21- O((-2)^3) --> invalid object 22- (0.*x)*(0.*x) --> 0.E-57 [ instead of 0.E-57*x^2 ] 23- qfminim(x,,m,2) [b omitted] -> [n,B,v]: output correct vectors (v), but reported too many (n too large). 24- qfminim(x,,,2) wrong when x has huge entries. Work out a sensible default precision if x has exact entries. BA 25- HPPA 32bit level0 inline assembly addmul constraint was too weak. 26- factorback(x,y) --> error if x,y were valid t_VEC with exactly 6 components [ typo in checknf_i ] 27- [configure] shared libraries on 64bit sparc require -fPIC / -KPIC 28- (x^3/y^3)^(1/3) -> x + O(x^17) [ leading coeff sometimes lost #433 ] 29- ??INT worked, but not ??t_INT 30- inconsistencies wrt variables in t_POLMOD, e.g Mod(x*a,x^2)' ---> Mod(x, x^2) deriv(Mod(x*a,x^2)) ---> 0 31- contfrac(sqrt(19),2^31-1) --> overflow [ signed overflow can't be reliably tested, use unsigned computations ] BA 32- on x86_64 + gcc-4.0, CFLAGS was missing a -fno-gcse-after-reload 33- [output=3] give more time to external prettyprinter [#209] 34- rare SEGV in factor(t_INT) with low stack space [ #345 ] 35- ispower(1) --> error, ispower(-8) --> error [ allow negative numbers ] 36- Configure -a + kernel = $arch-gmp didn't work [missing -lgmp #438] 37- divisors([]) --> SEGV [#441] 38- missing GC in bernfrac 39- bnrrootnumber(bnrinit(bnfinit(x),1),[]) --> SEGV [#443] 40- f()= local(m = matrix(2,2)); m[1,1] = 1 f() --> m[1,2] also set to 1 41- make test-kernel would always fail with gmp kernel. 42- elllseries(e, 0.) --> error [ only elllseries(e,0) worked ] [#445] 43- 'ftime' was never detected by Configure 44- setrand(74);quadclassunit(-83138791008,,[0.2,6]) --> oo loop [ large prime relation hashtable corrupted when changing subfactorbase ] 45- a(k)=if(k==0,0,a(k)=a(k-1)) a(1) --> SEGV [#447] (add refcounts to 'user function' structs) 46- getheap() did not report properly the "size" of user functions (value too small) 47- add compatibility macro decomp -> Z_factor [ used by mwrank ] BA 48- minpoly(,,v) might return polynomials in x instead of v. 49- make test-kernel required inlining compiler 50- make test-kernel didn't work with C++ compilers 51- ia64 kernel assumed 64bit longs, whereas compilers can be configured for 32bit Changed 1- RgX_simple_gcd: make sure result has non-zero leading term [#412] 2- simplify(t_RFRAC): remove assumption that deg(denom) > 0 [#413] 3- split bfffo.h from level0.h 4- semantic of t_SER with inexact coefficients is now the same as for t_POL: the sign is 0 iff all coefficients are zero. Either there are no coefficients, or the leading coefficient is an inexact zero. 5- removed all non-inline assembler kernels : they were complicated to Configure, mostly untested, and inefficient ( function call overhead + must use global variable hiremainder/overlow when operating on limbs instead of LOCAL_HIREMAINDER trick ). If this slows down your application (it should not), install gcc or use the gmp kernel. 6- allow arbitrary n in divisors(n) and fordiv(n,), provided factor(n) succeeds [ was restricted to t_INT or their factorization matrix ] 7- made LLL the default algorithm in algdep / lindep again [ replaces PSLQ ] Our PSLQ implementation is slow and unstable, and LLL performs much better, see the example in ??algdep. 8- addrr: extend accuracy much less frequently 9- make sure all kernel symbols are present in all versions of libpari (addll & friends could be inline) 10- change the meaning of gcd(x) and lcm(x) when x has vector/matrix components (a global recursive gcd/lcm is taken, instead of a cartesian product of individual gcd/lcm) 11- disallow vecmin([]), vecmax([]) [ returning stoi(+/- BIGINT) is not helpful ] 12- [libpari] renamed lellseries -> elllseries [ as in GP ] 13- semantics of stackdummy() [ make it consistent with gerepile ] 14- never assume that part of an object is "permanent" when it is out of the stack (was used by INTMOD/POLMOD/PADIC). Always copy it. As a result, 'gmodulo' and 'forcecopy' become obsolete. 15- use quadclassunit in qfbhclassno for large D, thereby ASSUMING GRH. 16- ellan was bypassing the check for CM 17- uniformize the generation of parilvl0.h [ genkernel ] Added 1- [library] new function isinexact. BA 2- [elldata] function forell() to loop over elliptic curves. BA 3- [elldata] function ellconvertname() to parse curve name. 4- [library] new function RgX_shift, RgX_mulXn, RgX_shift_shallow, RgX_Rg_div BA 5- m68k level0 inline assembly kernel 6- [library] new function isint, issmall, mkrfrac 7- Configure --time=timing_fun 8- [Configure] genkernel script Removed 1- kernel functions shiftl / shiftlr (inefficient, unused, untested) [ backward compatibility version in src/kernel/level1.h ] 2- obsolete functions forcecopy (use gcopy) and gmodulcp (use gmodulo). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.12 (released 24/01/2006): Fixed 1- incorrect detection of EditLine library 2- issquare(Mod(2,9)) --> 1 [ should be 0 ]. Implicitly assumed v_p(N) odd for all primes divising the modulus N. BA 3- poltschirnhaus(ffinit(2,4)) could return 0. BA 4- Configure -a did not propose fltk and Qt as graphic engine. 5- g()=local(x;f) -- oo-loop [#352] 6- charpoly( Mod(a, b) ) --> wrong result when 'a' is not a t_POL or t_INT. 7- \p2051 log(exp(-1)) --> printing bug [#357] 8- bad argument checks in qfrep() / qfminim() [#359] 9- fix mkintn to work as documented (even when leading word is 0) BA 10- [Linux] gp only accepts one SIGINT in batch mode [#251, #370] (initial patch JD). 11- contfrac(5/3.) was wrong: [1,2] instead of [1,1,2]. For a t_REAL x, when the last partial quotients of a lower and upper bound differ by 1, choose the one associated to the digits of x (followed by infinitely many 0s) unless it was too small and the next partial quotient was 1. [#371] 12- bnfisintnorm: results could have a wrong sign [#372] 13- isprime(N,2): oo loop if N is a perfect square 14- \p n was limited to a value ~ 10 times smaller than the actual limit BA 15- qfbsolve fix 2.2.11-F86 was not sufficient. 16- (1 + O(2))^2 was less precise than sqr(1+O(2)) 17- in the extended help pager, typing ' ' then \n would skip one page [#375] BA 18- config/has_stat.c didn't work with g++ 19- charpoly/minpol(Mod(a,T)) was only monic if T was. BA 20- 'make install' did not work if 'prefix' contained spaces 21- has_dlopen always compiled in on Mac OS X, even if present in libc 22- unsafe handling of t_QFI/t_QFR (setsigne) [#384] 23- idealaddtoone didn't handle zero ideals [#386] 24- workaround a bug in g++ version 3.4.1 (Mandrakelinux 10.1 3.4.1-4mdk) infinite loop on factor(41093858855767145965571) 25- constlog2() was not restartable [ no way to set glog2 = NULL ] 26- sloppy arg check in ellchangecurve [#388] 27- [internal] gprec_w reduced the accuracy of real 0s [#396] 28- wrong arg check in matsolve [#400] 29- minpoly([;]) --> SEGV 30- y*x^3/( 1+x+x^2 +O(y)) -> gerepile error [#403] 31- poldivrem didn't handle properly multivariate polynomials [#402] 32- insufficient accuracy in ellheight --> singular curve, SEGV [#404] 33- [MacOS X + fltk] installed gp binary couldn't use hi-res graphics (resource fork not copied) IZ 34- [2.2.9-A20] -fno-strict-aliasing not supported in older gcc 35- heapsize reported by getheap() were wrong (overestimate). 36- gerepile error in nfgaloisapply [#408] 37- wrong results in bessel functions at non-integer indices (typo in isint(t_REAL) ) [#409] 38- vector(3,n,n*=10) -> [10, 100, 1000] ( now [10, 20, 30] ) 39- bnf.codiff didn't work 40- content([[2]]) --> error Changed 1- speed up prime() by using checkpoints. 2- allow lists with vector entries in listsort (use lexsort) 3- allow vector of points in ellisoncurve() 4- tunings in quadclassunit (#298 / #355) 5- [Configure:] take CPPFLAGS into account 6- 'int' C type is now reserved for -1/0/1 values. Use 'long' otherwise. 7- Fl_inv and Fl_div now raise an error when divisor not invertible [ used to return 0 ] 8- removed the threshold that prevented exponent overflow in exp(-10^10) and returnd 0. instead [ either return correct digits or raise an exception ]. VL 9- honor C_INCLUDE_PATH in Configure (for get_readline) 10- [readline] remove old hack bypassing a bug in readline-2.0 [ did not release SIGINT ]: useless nowadays, and used deprecated functions. 11- export combine_factors [ needed by giac ] 12- do not alias labs to abs in paricom.h 13- randomize polredabs() to improve bound on difficult fields, e.g. f(k) = { p = polcompositum(x^6-3*k^3,x^6-3*k^3)[4]; polredabs(poltschirnhaus(poltschirnhaus(p)),16) } for k = 2, 5, 6, 8, ... 14- try more names in 'pari_unique_filename' (26^2 instead of 26)) 15- remove GCC_INLINE from CFLAGS. Define DISABLE_INLINE or DISABLE_VOLATILE to prevent the compiler from inlining or using the 'volatile' keyword 16- let paripriv.h include parinf.h 17- rename 'prec' -> 'precreal' [ from paripriv.h ] BA 18- define INLINE to 'inline static' for C++ compilers also 19- rename polx -> pol_x, polun -> pol_1 20- make hell, hell2 static to elliptic.c 21- rename decomp -> Z_factor, decomp_limit -> Z_factor_limit 22- rename wf -> weberf, wf1 -> weberf1, wf2 -> weberf2 23- make incpos / incneg static 24- export setseriesprecision, setrealprecision BA 25- make pari restartable 26- [initialization of GP hashtables] remove the 'module' structure, simplify pari_addfunctions, plug helpmessages in initializing entree arrays. 27- rename err -> pari_err, pariputsf -> pariprintf 28- rename rnfhermitebasis -> rnfhnfbasis 29- forbid t_STR, t_VECSMALL and t_LIST in gvar. 30- cleanup mpqs use of temporary files 31- pari_unique_filename now MT-safe, returns a malloc'ed buffer. 32- default() now always returns the value of the (possibly changed) default. No need for a flag anymore. The construction default(def,,1) is still valid but deprecated (the flag is ignored). 33- increase default accuracy in ellinit() when curve has large coefficients [ avoid large relative error on periods, #404 ] 34- qfminim(,,,0) often gives wrong results for matrices with large entries. Test whether rounding errors occur and abort if so [#407] 35- qfminim(x,b,m,flag): b and m are now optional. Allow omitting b (formerly b=0) if flag = 2 also. 36- eval("1a") is now '1' again (was "a" since 2.2.10) Removed BA 1- gnuplot graphic engine (complicated, did not work from gnuplot-4 on) 2- has_sigrelse.c & has_sigsetmask.c [ deprecated, unused after C-10 ] 3- src/desc/Makefile 4- log2old ( = 2atanh(1/3) ) 5- src/desc/gen_help BA 6- obsolete macros INIT_JMP/INIT_SIG Added 1- library function ellisoncurve() BA 2- library functions related to sorting: gen_sort_aux, gen_search_aux, vecsmall_indexsort 3- functions strtoi, strtor BA 4- function minpoly() 5- function zeromatcopy() BA 6- support for GNU/kFreeBSD and other GNU userlands. 7- document ZY_ZXY_rnfequation and ZY_ZXY_resultant 8- function pari_warn() use instead of pari_err() for warnings 9- function pari_add_function, pari_add_module 10- doc/develop.tex 11- library function uisprime, uissquarerem, Z_issquare, Z_issquarerem 12- library function pari_unique_dir 13- library function gp_default 14- library function rowcopy (GP2C) 15- library function traverseheap %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.11 (released 19/10/2005): Fixed 1- a()=b(1,) --> error message 2- agm(-1.0000000004656,1) --> oo loop [Bug #214] 3- sdivss_rem(x,y,&rem) did not set rem, contrary to the documentation BA 4- ellzeta(ellinit([0,0,0,0,1]),1) --> gerepile error 5- random() was less random on 64 bit machines 6- typing 0.e-28 returned 0.E-38 (!) 7- ellminimalmodel(e).a2 was not always in {-1,0,1} 8- check arguments in elllocalred BA 9- [GP2C] type-checking codes generated for some types was wrong. 10- stray output: (a()= for(i=1,1, return);) a() --> 0 11- qfminim & qfrep didn't check their arguments 12- [library:] pariputsf() and GP print() used different output formats 13- nfdisc(x^4 - 2947*x^2 + 1553545) --> SEGV [ incorrect test for gcd in Round 4: gcmp1(d) --> degpol(d) == 0 ] 14- forvec(v=vector(4,k,[1,4]),,2) -> oo loop [bad initialization] 15- eta(x << 1) used far too much accuracy in intermediate computations GN 16- MPQS warning "factoring this number will take several/many hours" now assume more current hardware. 17- off-by-1 error in initprimes0 allocation [Bug #237] -> SEGV in default(primelimit,155100 + 41*7) 18-[Cygwin] incorrect links created by 'make install' 19- a( --> oo loop in parser [Bug #240] 20- at \p366, the last digits of Pi were wrong [ not enough iterations, from 2.2.9, A-2]. [Bug #238] GTo21- wrong prototype for qfrep 22- factornf(P, T) did not accept non-monic T [Bug #241] 23- lngamma(1E+10) --> "Impossible assignment I --> S" 24- "couldn't deal with this field" errors in bnfinit/quadclassunit for tiny discriminants, huge Bach constants (e.g. 12), and unlucky random seeds. Remove arbitrary limits and let the loop run to completion. 25- neither freadseq() nor readGEN() were able to parse '{' / '}' [Bug #216] 26- accuracy problem in polroots (--> division by zero) [Bug #252] 27- acos(x < 0) --> result off by Pi [ introduced in 2.2.9-A3 ] 27- ellrootno(e,p) incorrect in the case of good reduction [#262] 28- (rare) "impossible assignment I-->I" in contfrac 29- typo in qfbclassno's hash function (when D < 0, function can't handle 0). qfbclassno(-948) --> division by 0 [GMP kernel] 30- [Makefiles:] the behaviour of '//' as path leader is undefined. Make sure path prefixes are not '/' [ e.g $prefix/lib --> //lib ] 31- pollead(u*v + (v+1)/v, v) --> 'x' [ should raise an error ] GN 32- problems in MPQS : some factors missed e.g factor(2^263-9) --> expensive extra runs ( + possible stack corruptions when many factors found simultaneously ). 33- tanh(x) was actually computing tanh(|x|) for real x ([#269] from 2.2.8) 34- [MacOS X] dlopen is now part of the system library. Don't redefine dlopen in darwin.c if HAS_DLOPEN is defined. 35- fix Trager's trick in factorff (from 2.2.10) 36- rnfisnorminit(quadpoly(145,y),quadray(145,1)) --> stack overflow [#273] 37- matker([1,2,3;4,5,6]*1.) --> [;] (missing 1 vector) 38- rnfconductor(bnfinit(y),x,1) --> error [#277] 39- gcc-4.0 miscompiles PARI on ix86 [#274] ( http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23453 ) 40- truncate(1/4/x+1+O(x)) -> (x + 1/4)/x instead of (4*x + 1)/(4*x) [#276] 41- bitneg(2^32-1,32) -> corrupt integer [#279] 42- typo in rnf_is_abelian [#277] GN 43- several minor fixes in mpqs.c BA 44- ellrootno(e,2) was wrong for curves of Kodaira type 3 and -7. ([#212] from 2.2.9) BA 45- galoisfixedfield() was not robust enough ([#256, #228 from 2.2.9) 46- tanh(-10^20) --> error instead of -1 [tanh(10^20) was treated properly] BA 47- wrong rounding in wr_float: with default(format,"f0.10") 1.23456789049999999997 -> 1.234567891 GH 48- typo in thue.c:MiddleSols() --> missing solutions [#264] 49- default(prettyprinter,,1) --> t_POL instead of t_STR [#296] BA 50- truncate(1/x+O(x)) --> SEGV 51- overflow in Flm_gauss (when solving triangular system) --> wrong result [#284] 52- isprime(25, 2) *** impossible inverse modulo: Mod(5, 25). although it's useful to get a factor, it's not nice to raise an error, since 'trap' then becomes mandatory. Removed this feature: the factor is silently discarded (exceedingly rare anyway). 53- (-1)^(any integer >= 2^31) --> -1 [ from 2.2.9 ] GH 54- zncoppersmith(x,1002,1001) --> SEGV [#221] 55- subst(1+O(x),x,x^2+O(x^3)) --> SEGV [#287] (patch by MSo) subst(1+O(x^2),x, x^2+O(x^3)) --> 1 + O(x^3) [ should be O(x^4) ] 56- component() didn't work on lists [ SEGV ] 57- quadclassunit(D,, [c0 > 6]) --> weird error message 58- weird errors in bnrstark [#285] 59- (x^0)^2^31 --> length overflow 60- polroots(pollegendre(51),1) --> SEGV [#293] 61- print({}) --> oo loop BA 62- when choosing between (p-1) and APRCL, isprime() required a complete factorization of p-1, whereas accumuluting factors up to sqrt(p-1) was enough. (e.g 2^127 - 1) BA 63- function name not always properly reported on interrupt (e.g if, while) 64- content([-1]) --> -1 65- memory leaks in quadclassunit (#318) BA 66- [Configure] check that 'readline' is not an EditLine wrapper [ ==> compilation failure otherwise ] 67- Str() --> junk string (uninitialized data) (#326) 68- arg(I*O(7^5)+1) --> junk, exp(3*I + O(3^5)) --> junk. (#328) 69- powiu(2, ulong n) called int2n(long n), incorrect for huge n (#331) 70- Qfb(8,-4,1)*Qfb(5,-4,1) --> Floating Point Exception (BIB, #332) 71- t_QRF distance component was evaluated using an unstable algorithm, possibly leading to catastrophic cancellation (#333) 72- dbltor did not recognize Infinity, NaN, or unnormalized numbers. 73- makerfrac(1,quadgen(24)*x^0)%b --> SEGV, where GEN makerfrac(GEN p,GEN q) { GEN z=cgetg(3,t_RFRAC); z[1]=lcopy(p); z[2]=lcopy(q); return z; } BA 74- exp(x) gave imprecise results at huge accuracies for expo(x) >> 1. 75- valuation(x,p) using a divide & conquer algorithm would kill the session if p = 1 76- (2 + O(2^8))^(-1/3) --> SEGV [#341] 77- exp(0.E100) --> invalid GEN 78- stack corruption in gsubst [#343] 79- Pol([Mat(0.1)],x)^3. --> crash [#346] 80- besseljh(0,2^65) --> crash [#340] BA 81- [plotQt:] ^C while hi-res window is present would crash the session 82- Strtex(Vecsmall) --> SEGV [#348] 83- oo loop in zeta() [catastrophic cancellation in get_xinf() ] 84- oo loop in nfdisc() [#350] 85- Mod(1,2)*x / (1/2) --> incorrect t_POL 86- qfbsolve forgot some solutions: qfbsolve(Qfb(2,1,3),3) --> 0 87- multiplying ideals could lead to factoring big integers (failsafe algorithm in idealtwoelt, when random trials don't work): fix idealtwoelt. Changed BA 1- FpM_FpV_mul is renamed to FpM_FpC_mul, Flm_Flv_mul to Flm_Flc_mul and FlxV_to_ZXC to FlxC_to_ZXC, Flv_to_ZC to Flc_to_ZC, FqV_to_FlxC to FqC_to_FlxC, zv_to_ZC to zc_to_ZC BA 2- FpXV_FpV_innerprod renamed to FpXV_FpC_mul and FlxV_Flv_innerprod to FlxV_Flc_mul 3- retain 'CHANGES' revision after 'make distrib' GN 4- extensive re-tuning in MPQS (all sizes) and avoid "sizing marginal, index1 too large" warning 5- rename globalreduction -> ellglobalred, localreduction -> elllocalred 6- taniyama(e) is deprecated. Use elltaniyama(e, prec) instead of old = precdl; precdl = prec; x = taniyama(e); precdl = old; 7- [bnfinit] retune compute_R to try and detect cheating with Bach's constant. 8- rename lisexpr -> readexp, lisseq -> readseq, flisexpr -> freadexpr, flisseq -> freadseq 9- rename Fp_gener -> gener_Fp, Fl_gener -> gener_Fl 10- change TeX output so that it's easier to handle: - replace \over by \frac [ most people use AMS styles which forbids \over, not plain TeX, which doesn't have \frac ] - remove many extra braces { } [ would prevent line breaks ] - insert carriage returns 11- [GP handling of print1()] get rid of 'added_newline' hack, replace by monitoring in pariputc/pariputs.[#243] 12- do not install libpari.a.xxx [ include files are not versionned either and libpari.a is useless without the correct ones, contrary to .so ] 13- rename gtrans_i -> shallowtrans, concatsp -> shallowconcat. 14- add GC in parsing loop for huge input vectors [ needs roughly 2 or 3 times less memory ] 15- implement pari_is_dir() using stat() instead of opendir() 16- moved defaults from gp/gp.c to language/default.c [ -> into libpari ] 17- moved input_loop to language/es.c [-> into libpari ] 18- when called as 'gp --test', disregard actual terminal dimensions 19- allow ellinit over any ring (support only basic operations) 20- allow ellchangecurve on e = [a1,a2,a3,a4,a6]. 21- typecast cleanup: move most of paricast.h to pariold.h 22- rename readGEN -> gp_read_stream, freadseq -> gp_read_str. freadexpr/readexpr are deprecated, use gp_read_str/readseq 23- make sure GP_DATA is always defined --> default() becomes available in libpari 24- make gnil public 25- change content() so that it always returns the gcd of all entries (as documented). Used to return the gcd of all _contents_ of the entries of a t_VEC/t_COL/t_MAT. 26- backport into quadclassunit some of the bnfinit improvements [specifically, change subfactorbase, #298] BA 27- rewrite rectdraw in an object-oriented way [ reduce code duplication in hi-res plot routines ] BA 28- change the semantic of includedir to not include the pari suffix. Instead /pari is automatically added by make install. 29- improve plindep (use lllintpartial and floating point LLL) + allow lindep with p-adic entries BA 30- allow relative paths in Configure --with-xxx directives BA 31- allow sinh, cosh, tanh with t_PADIC arguments XR 32- bnrstark(): try harder to find solutions [increase precision faster #255] BA 33- rename coefs_to_xxx() to mkxxxn() for xxx in {vec,col,pol,int}. 34- semantics of gcd with inexact zeros: now gcd(0., a) is 1 [used to be a and led to problems: e.g 0./(1.*a)/(1.*a) not simplified ] 35- warn if 'perl' is found but doesn't seem to work 36- forbid the f'(x) construction when x is not a constant type [#327] Added BA 1- polgalois(): 4th component: transitive group name following GAP4 BA 2- new functions ZX_add, ZX_sub, ZX_neg, ZX_Z_add, ZX_Z_mul BA 3- new functions FpC_to_mod, FqV_to_FlxV, FpC_red 4- member functions r1, r2 5- functions factoru(), factoru_pow(), powiu(), powuu(). 6- symbolic link $MANDIR/gp-$version.1 -> $MANDIR/gp.1 7- new functions shallowcopy, shallowconcat, shallowtrans, vecslice, vecpermute, vecslicepermute, rowslice, rowpermute, rowslicepermute BA 8- support for gp2c-run on cygwin BA 9- new optional package 'elldata' and new GP functions ellsearch and ellidentify to access it. BA 10- support for ellinit("") through elldata. 11- new functions vec_ei / col_ei BA 12- new function FpC_Fp_mul, FpV_FpC_mul BA 13- new functions const_col, const_vec, vec_is1to1, vec_isconst 14- new function gp_read_file BA 15- new function substvec BA 16- new divide_conquer_assoc (make divide_conquer_prod thread-safe) 17- p-adic zeta, cos, sin, tan, cotan BA 18- p-adic gamma BA 19- new routine readvec() %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.9 (released 23/12/2004): Fixed 1- ploth(,256). splines had stopped working 2- gamma(-1.), psi(-1.) [ non-positive integers masquerading as t_REALs ]: wrong results (oo) or 'division by 0' error messages 3- log(1. + 1e-20) --> print more decimals than are significant 4- [Mac OS X + Fltk]: remove the BROKEN_FORK assertion --> graphic window becomes independant of gp as under other OSes. 5- elllseries did not accept complex arguments GN 6- [ix86 + Sun cc] build fails [ unsatisfied symbol reference to 'mulll' ] 7- [libpari] gprec_w didn't behave well for real zero 8- gp -p 51234567890 --> internal overflow and primelimit set to smaller integer 9- [ GMP kernel ] incorrect resmod2n --> wrong 2-adic sqrt 10- [hi-res plot: fltk] fix compilation with g++-3.4 BA 11- [hi-res plot: fltk] line plotting was broken 12- oo loops in prodinf [ e.g prodinf(x=2, zeta(x)) ] 13- [compatible=3] wrong prototype for isoncurve, lex, sign, thetanullk 14- quadhilbert(D > 0) spent an unreasonable time to find a relative equation defined over Q [ use Galois theory instead of naive search ] 15- typo in resmod2n [ missing (ulong) typecast ] -> issquare((2^64+1)^2)=0 BA 16- galoisinit() could fail to find a polynomial defining the fixed field. 17- elllseries had an apparent singularity at s = 2 [ loss of accuracy ] 18- gcoeff, gmael & their variants were not lvalues. 19- typo in element_val(t_FRAC) [ "non invertible" errors in rnfpseudobasis ] 20- added -fno-strict-aliasing to gcc flags [ PARI code doesn't follow strict aliasing rules. In any case, gcc 3.3 can't handle new mael ] 21- 1.a --> 1.0000 [ should be error ]. (x.a = x+1); 1.a --> 1.0000 [ should be 2 ] 22- bnrdisclist(bnfinit(x,2),1) --> SEGV GN 23- [Solaris cc] use safer optimization flag [ -xalias_level=any, fix a pb with 18 above ] Changed 1- increased maximum binary exponent for t_REAL, and maximum GEN length on 64 bit machines. Bumped BINARY_VERSION for writebin --> objects saved in writebin format between 2.2.1 and 2.2.8 are incompatible. 2- use easier to differentiate colors for hi-res plots [ replace "sienna" by "violetred" and "cornsilk" by "green" ] 3- GP interface of function intnum [ old flags not recognized, much more elaborate interface ] 4- library interface of functions intnum, prodeuler, suminf, sumalt, sumalt2, sumpos, sumpos2, prodinf, prodinf1 [ GEN (*eval)(GEN,void*) everywhere instead of entree * ] BA 5- allow Configure -l [ in addition to /pari.cfg ] 6- renamed gzero --> gen_0, gun --> gen_1, gdeux --> gen_2. 7- replaced kludgy matexp.c example by straightforward extgcd Added 1- new algorithm for log( t_COMPLEX ), log(2) [ AGM ] 2- new algorithm for Pi [ AGM ] 3- new algorithm for atan, acos, asin [ AGM ] HC 4- "double exponential method" for numerical integration and sumation. See ??intnum. New functions intcirc, intfouriercos, intfourierexp, intfouriersin, intfuncinit, intlaplaceinv, intmellininv, intmellininvshort, intnuminit, intnuminitgen, intnumromb, intnumstep, sumnum, sumnumalt, sumnuminit 5- new universal constant gen_m1 6- [bench suite] test-intnum and test-stark toplevel targets %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.8 (released 25/11/2004): Fixed 1- gp --version: stack overflow 2- overflow (in C long multiplication) in zeta(4.45+292532.0*I) 3- setrand(1); bnr = bnrinit(bnfinit(quadpoly(1020,y)), 31,1); rnfkummer(bnr, matdiagonal([5,1,1])); --> SEGV ( typo in FpXQX_from_Kronecker ) 4- make -j4 bench could start the bench before the binary was built 5- matkerint had stopped working [from 2.2.7] GN 6- [Solaris + cc:] fix linker warnings (missing object types in src/kernel/*.S) 7- listsort(List([]), 1) --> SEGV 8- setrand(1582268146); bnr=bnrinit(bnfinit(y^12+6*y^10+31*y^8+84*y^6+159*y^4+166*y^2+1),4,1); rnfkummer(bnr,[1,0,0,0,0,0;0,1,0,0,0,0;0,0,1,0,0,0;0,0,0,1,0,0;0,0,0,0,2,1;0,0,0,0,0,1]); --> bug in gadd [ typo in FqX_split ] Smaller test-case: setrand(1701015992) factorff(x^2+y+2, 3, y^3+y^2+2) MSo 9- bug in print_version() --> SEGV on startup if cc version number too long 10- subst(O(x),x,x+O(x^2)) --> SEGV [ substituting in 0 t_SER ] MSo11- various bugs in anal.c: uninitialized reads in get_op_fun(), double_op() memory possibly freed twice because ep->args was not reset to NULL after being freed 12- (10^100 + 0.) / (10^100 + 1.) --> 0. [ display bug from 2.2.6 ] 13- rnfnormgroup(): restrict to primes of degree 1 [ much faster ] 14- gamma(351/2) --> 1.235874058265488750143951998 E740 [ = gamma(351) ] 15- gammah was much slower than gamma [ contrary to docs ] 16- problems with 0 t_SERs: O(y^5)/(1+x) + O(x^3) --> O(x^3) O(y^5)/(1+x+O(x^3)) --> O(y^5) + O(y^5)*x + O(y^5)*x^2 + O(x^3) O(y) / (1+x) --> O(y) O(y) * 1/(1+x) --> O(y) subst(x+O(b),x,a) --> a 17- (0. * x) / x --> 0.E-28 * x 18- content(0.*x) --> 0 19- nfinit([x^2+1, y]) --> SEGV (bad input) 20- lngamma(10^50*I) returned many more digits than were significant 21- bnfinit(x^4-768*x^3+220032*x^2-27869184*x+1316749312) --> recent oo loop 22- elllseries(large t_REAL) --> 0 [ instead of ~ 1 ] 23- erfc(0) --> error [ instead of 1 ] 24- bnfinit(,1) could return without giving fundamental units (if the computation is unfeasible). Raise an error instead. IS 25- config/get_head would not work only if one invoked $PWD/Configure 26- obscure simplification bug: x;s;t;u; a = -9*u*x^3+3*u*s*x^2-3*u*s^2*x+u*s^3+u^4 b = 9*u*x^3+3*u*s*x^2+3*u*s^2*x+u*s^3+u^4 bezout(a,b) * (2*u^4*s^3+2*u^7) --> involves terms like u^5/u^2 27- matrixqz(matrix(2,1,i,j,i-1),-2) --> [;] instead of [0;1] 28- possible SEGV in bnrinit [ when ray class group is trivial ] 29- negative definite forms allowed by Qfb() while most qfb* routines can only cope with positive definite forms. Explicitly disallow negative definite forms. 30- \p 38 ellinit([1,0,0,-19959260,-34323045317]) -> precision too low in initell 31- {p = x^36 - 252*x^34 + 27504*x^32 - 1723392*x^30 + 69300198*x^28 - 1894026456*x^2 6 + 36355251492*x^24 - 499350803616*x^22 + 4953373719489*x^20 - 355510821425 40*x^18 + 183790369965636*x^16 - 677399199594048*x^14 + 1751507793357696*x^1 2 - 3105079104411648*x^10 + 3651333353058816*x^8 - 2698458969378816*x^6 + 11 30370773667840*x^4 - 207898980728832*x^2 + 2879456034816; nfroots(nfinit(subst(p,x,y)), p); } --> loop forever in lllintpartial() Fix: abort lllintpartial if progress negligible (was: if _no_ progress) 32- some permanent structs not freed in freeall() 33- [--with-gmp] round(-4294967296.1) --> '-0' [ typo in mpent ] 34- polredabs(x^4-x^3-31*x^2-12*x+144) was not reduced [ typo in subfield detection algorithm ] 35- nffactor(nfinit(a^2+1),x^2+[]) --> SEGV GH 36- lngamma was not even continuous : its argument was reduced mod 2Pi 37- contfrac(sqrt(2)/2,,2) --> trying to overwrite a universal object 38- nfroots(nfinit(a^2+a+1),x^2-a/4) --> [] (leading coeff not properly taken into account in nf_DDF_roots) 39- Y=Mod(y,y+1);Mod(Y*x,x-1)^2 --> bug in FpX_divrem, p == NULL 40- return type for nffactormod was not a factorization (had become t_VEC) 41- Pol(Ser(1+x)) != 1+x [ bitmask not cleared properly in gconvsp() ] 42- default(datadir,"...") --> SEGV [ attempt to free a static string ] 43- Configure was missing log2/exp2 on systems that had it 44- typo in base2.c:init_norm() [ wrong result in idealprimedec for huge fields ] 45- matsnf([x,1; 0,x],6) --> incorrect type 46- qfgaussred(a) did not work if coefficients of a did not support the "sign" operation [ signature was computed internally ] BA 47- bitneg(1,0) --> SEGV (caused by 2.2.5 A10). 48- factorback([;]) didn't work [ should be 1 ] 49- f = factor(n); divisors(f) destroyed the factorization stored in f 50- add missing GC in hess() 51- [Configure:] runpathprefix was computed only in terms of $osname (assuming standard vendor supplied linker). At least check whether it's GNU ld first. 52- misleading error message rtodber "overflow or underflow in R->dbl" (in fact, only overflow) 53- quadgen(-8) * 0. --> SEGV 54- I + O(2^10) --> error 55- ((x + quadgen(-8))*Mod(1, i))/(x^2+1) --> SEGV [ from randomgen ] 56- Mod(a^0,i^0) --> Mod(1,1) [ should be Mod(0,1) ] 57- factor(HUGE, 100000) --> "pointers lost in gerepile" in random GC in ifac_realloc() [ missing copy() for (*partial)[2] ] 58- incorrect gerepile() behaviour on t_LIST [ would try to update non-existing components if list not full ] BA 59- quoted strings were not displayed properly quoted. 60- bestappr(0.1, 8) --> 0 [ should be 1/8 ] 61- rare bugs in copying routines [ clone bit sometimes not unset ] 62- SEGV in qfminim when integer entries and precision error occured BA 63- galoisidentify() could fail on WSS group with S4 residue. 64- t_POLMOD + t_MAT was incorrect. E.g Mat(1) + Mod(1,x) --> Mod(Mat(1),x) instead of Mat(Mod(1,x)) as for other scalars. 65- Mod(1,8) + O(2^2) --> Mod(1,8) [ should be error ] 66- lngamma(1.) returned a t_REAL of length 'realprecision' (instead of 3) BA 67- matsnf(Mat([])) was returning a matrix instead of a vector. 68- ellap(ellinit([0,1,0,1,0]), 100) --> FPE [ BIB: 100 is not prime, but make the routine more robust ] 69- give meaningful error messages (with context) for 1<<(1<<32), 1<S" ] 70- memory possibly freed twice in pop_val_if_newer() [ race condition on interrupt () during new_val_cell() ] 71- ellap(ellinit([0,1,0,1,0]),100) --> SEGV [ 100 is not prime ! ] MS 72- recover from readline history corruption [ don't trust history_length in history_is_new() ] 73- obscure bug in thue() [ unit of norm -1 not found due to interface inconsistencies ] t = thueinit(x^6 - 2); thue(t, 2638) --> [] JD 74- [Configure:] detection of times() 75- Forbid t_POL + t_VEC: useless and inconsistent [ we had: 1 + [] --> error, x + [] --> OK but x * [] --> [] instead of '[]*x' , etc. ] 76- obscure bugs wrt polynomials with t_MAT coefficients created via Pol() [ e.g content(x*[;]) --> [;], primitive_part(x*[;]) --> [;] ] 77- incorrect behaviour in scalarpol()/scalarser() for exact 0 argument 78- typo in ellap: e defined over Fp didn't work any more 79- t_SER ^ t_QUAD --> SEGV 80- nffactor(non-monic t_POL) --> SEGV due to FpX_red interface change [ don't allow t_INT argument, t_POL is mandatory ] 81- ZX_incremental_CRT: wrong handling of degree increase (--> oo loop) 82- SEGV in Karatsuba multiplication for polynomials, when high product was 0 (over a ring which is not an integral domain!) 83- 1 / Mod((a^2-a)*x^2-1,Mod(2,6)*x^3+Mod(1,2)*x^2+1) --> SEGV 84- ellap(e defined over F2, 2) gave wrong results [ assumed e defined over Q and reduced relevant data modulo 8 ] 85- matcompanion(degree 0 polynomial) --> stack corruption 86- incorrect handling of inexact polynomials in matsnf(,2) [ inexact leading 0 coefficients ] 87- writebin(file, 0) saved a "corrupted" object (0 couldn't be read back) 88- wrong prototype used in rnfdet() [ accepted 3 arguments instead of 2 ] 89- typo in to_Kronecker [ when at least 3 variables involved ] 90- typo in x = sqrt(t_PADIC) [ returned either x or -x ] 91- rare stack corruption in RgX_mul(t_POL, t_POL) [ when product of leading coefficient cancel, valuation is non-zero _and_ we use an "unsafe" gerepile right afterwards ] 92- component(Ser(x),2^31-1) --> SEGV 93- typos in krosi(), kronecker() [ e.g krosi(-4,1), kronecker(0,2^32+1) ] 94- agm(-1,2) --> oo loop 95- tanh(10^10) --> exponent overflow [ should be 1 ! ] 96- gamma(exp(-373)) --> exponent overflow 97- readline: assume a file 'foo' exists, \rf --> \foo [ r deleted! ] [\r f was OK]. Solution: just expand to '\r f'; hitting again completes properly --> \r foo. BA 98- Reduce stack consumption in ffinit and polsubcyclo. 99- (p/q)' wasn't simplified if q wasn't squarefree 100- polylog(n, x < 0) had a (small) non-zero imaginary part 101- 3 + O((-1)) --> oo loop 102- creating t_PADIC/t_SERs via x + O(...) eventually blew up the heap 103- fix memory leaks related to GP pointers and clones Changed 1- lgef / setlgef / evallgef removed. One may safely use lg for t_POLs. As a result maximal degree jumps to ~ 2^24 on 32bit machines 2- renamed *res(te) routines to *rem(ainder). Eg poldivres --> poldivrem, nfdivres --> nfdivrem BA 3- Internal u_Fp* routines now are renamed Fl* and made public. BA 4- [GMP kernel] Library soname changed to libpari-gmp[-2.2].so.N. BA 5- Library .so link changed to libpari.so for all versions. Static library changed to libpari.a for all versions. 6- COMPAT: ellheight now uses the standard normalization: twice the value it used to return. The values returned by ellbil() and ellheightmatrix are unaffected. In particular, ellheightmatrix() is the polar form of elleight(), and ellbil now satisfies the proper identity for B(P, Q) = (h(P+Q)-h(P)-h(Q)) / 2 7- renamed and declared gmul_mat_smallvec --> RM_zc_mul gmul_mati_smallvec--> ZM_zc_mul 8- move functions in highlvl.c to libpari, excluding install(). 9- bnfinit: use approximate integral LLL reduction (much faster than fp) 10- bnfinit: cache multiplication table by prime ideal anti-uniformizers (faster valuations) BA 11- improve binomial (use divide_conquer_prod) 12- improve bnrinit & idealstart when finite part of conductor is 1 (+ improve stability) 13- subgrouplist(bnr,...) does not require bnr to contain generators anymore ( bnrinit(,,1) ). Also much faster. 14- allow zetakinit() to use a bnf argument [ would be recomputed before, making it impossible to certify the result since bnfcertify could not be applied ] BA 15- error messages now mention the GP function when the error occured. 16- intro message [ no point in displaying "realprecision", "seriesprecision" and "format" on startup. One can query them individually, or ask for all defaults ] BA 17- macro varncmp(vx,vy) should now be used to compare variable numbers. BA 18- split substpol from subst ( reverse [ 2.2.1 C24 ] ). Use substpol for non-trivial algebraic substitution. 19- remove t_FRACN / t_RFRACN from \t output, add t_VECSMALL BA 20- bittest() now handle negative operand as 2-adic. BA 21- type() does not allow to change object types anymore. 22- internal routines setloop()/incloop() allocated 2 chunks of memory, then assumed they were connected [ true for the current allocation model ]. Remove that unecessary assumption. 23- more informative error messages in concat() 24- in affsi / affui (s, z) : do not check that lg(z) >= 3 25- replace gexpo(t_QUAD) by a rough aproximation (as t_COMPLEX): faster 26- made Mat(t_VEC of w t_COLs of the same length h) return a h x w matrix Used to be a 1 x w matrix whose elements were t_COLs. Obsoletes such hacks as: v = vector(...); v[1] = Mat(v[1]); concat(v). Now Mat(v) is enough. 27- move BEGINEXTERN / ENDEXTERN pairs out of kernel headers into pari.h 28- split the User's manual in two: PARI/GP and libpari. 29- updated and completed the tutorial 30- faster basic transcendental functions on small inputs (sqrt, log, exp) 31- rewrote basic generic kernel (add,mul,div) [ faster, less obfuscated ] 32- macroified gop1z, gop2z, gops2gsz, gops2sgz, gops2ssz 33- diviiz(x,y,z), divisz, divsiz and divssz always assign the euclidean quotient [ used to depend on the type of z: if t_REAL computed exact quotient ]. Use rdivii, rdivis, rdivsi, rdivss for analogous functionality (no "z" variant); 34- ensure proper rounding in divrs 35- renamed padiczero --> zeropadic [ as in zero[pol|ser|vec|col|mat] ] 36- macroified gcosz, gsinz, gexpz, etc + cleanup transcendental functions 37- macroified mulssz, addssz 38- rename mpent --> mpfloor 39- rename divise --> dvdii, gdivise --> gdvd, mpdivis --> dvdiiz, mpdivisis --> dvdisz 40- rename mpppcm --> lcmii, remove mppgcd [ use gcdii ] 41- rename resss --> remss, ressi --> remsi, resis --> remis, resii --> remii, gres --> grem 42- rename krogs --> krois, krosg --> krosi 43- rename FpXQX_FpXQ_mul -> FqX_Fq_mul, FpXQX_normalize -> FqX_normalize 44- rename adduumod, subuumod, muluumod, divuumod --> Fl_[add,sub,mul,div] invumod --> Fl_inv, invsmod --> Fl_inv_signed, powuumod --> Fl_pow powiumod --> Fp_powu, mpsqrtmod --> Fp_sqrt, mpsqrtnmod --> Fp_sqrtn 45- rename mpsqrt --> sqrtr, mpsqrtn --> sqrtnr 46- don't copy arguments of user functions for types which have no modifiable components (anything but VEC, COL, MAT, LIST, VECSMALL): much faster. 47- ':' no longer allowed as a substitute for ';' if compatible = 0. Use GP2C semantics [ x:int, v:vec ]. For the time being the type information is discarded. 48- modulargcd() was very inefficient for non-monic t_POLs [ e.g (poltchebi(x) - 1) / (x-1) ] JD 49- [timer: ] use sysconf(_SC_CLK_TCK) instead of CLK_TCK if available, and make sure one of these is available before choosing times() in Configure JD 50- check for 'exuberant-ctags' before 'ctags' in make_vi_tags [ and fail gracefully if neither is found ] BA 51- support for gp2c-run on Darwin 52- remove blanks in "raw" outputs ( default(output,0) ) 53- made .fu and .tu return t_POLMOD, not t_POL BA 54- [GMP kernel] use mpn_sqrtrem for sqrtr_abs 55- nfsubfields (use much less memory) GH 56- more robust thue(): faster enumeration of small solution, don't assume that the full unit group is known, warn when conditional result is obtained. 57- remove log() flag: decide alone whether to use AGM or not. Rewrote logagm and mpexp1 58- make ??? index search ignore case [ ???bernoulli will find Bernoulli ] 59- renamed svaluation --> u_lvalrem, pvaluation --> Z_pvalrem 60- change semantics of sqrtn to catch easily non-residues from the user's side 61- rewrote the 'tune' utility, add one tune.h file for each kernel, support for user override still needs to be rethought (or documented). Added 1- make test-all [ all available test suites (SLOW !)] BA 2- add support for GNU/Hurd. 3- conversion routines zv_to_ZC, zv_to_ZV, zm_to_ZM, and matrix multiplication: RgM_zm_mul, ZM_zm_mul. 4- output support for zm / Flm matrices (t_MAT with t_VECSMALLs instead of t_COLs) 5- FpM_rank 6- allow factor( an elt in Z[i] ) 7- put back bruteall [ used by Math::Pari ] BA 8- Configure support for sparc64, x86_64 and ppc64 BA 9- x86_64 level0 inline assembly kernel BA 10- add POSIX-style long options --fast, --quiet, --primelimit and --stacksize. 11- new internal library routine itos_or_0 12- new member function .index 13- rdivii, rdivis, rdivsi, rdivss to replace diviiz & co. 14- new routine mpround, mpfloor, mpceil, mptrunc, roundr, floorr, ceilr, truncr BA 15- galoisisabelian, galoisexport, galoisidentify and galoissubgroups now also accept subgroups returned by galoissubgroups. 16- new routine Fl_sqrt 17- new routines FpX_factor, FqX_factor, FpX_degfact, FqX_red 18- private header file pari-priv.h 19- new function ispower 20- forvec iterator GH 21- new function zncoppersmith 22- public interface to forvec() [ forvec_start + forvec_data, for GP2C ] 23- routine sqrtremi() [ Karatsuba square root ] 24- internal routine int2n() [ = 2^n ] 25- new functions Z_pval, Z_lval, u_lval 26- new function primepi BA 27- new default factor_add_primes BA 28- HPPA 32bit and 64bit level0 inline assembly kernel Removed 1- obsolete macro leadingcoeff [kept for backward compatibility but removed from the documentation]. Use leading_term. 2- obsolete undocumented type t_SMALL BA 3- revert 2.2.1 A14 and A17 (broken with GMP kernel, unmaintainable). BA 4- cornacchia, in favour of qfbsolve. 5- useless inefficient types FRACN / RFRACN 6- routines gred [useless] / gredz [ useless did not work ]. Define gred --> gcopy for backward compatibility 7- many obsolete error codes [ for err(...) ] 8- smodsi() [ useless, not well defined ] 9- buggy macros mppiz, mpeulerz [ undocumented, useless, broke compilation to use them ] 10- inconsistently named macros mpinv[sir]r [ were "z" functions ]. 11- public macros refering to static transcendental routines (e.g mpatanz) 12- undocumented, inconsistently named, useless, mulsii, addsii, divisii 13- useless routine umuluu [ use mulll ] 14- undocumented [macro] constants pariC1, pariC2, pariC3, pariK, pariK2, pariK4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.7 (released 18/12/2003): Fixed 1- bench input files: should all start by a 'gettime()' instruction 2- bnfisnorm(bnfinit(x^2-11),1) --> [Mod(1, #), 1] [ return a result involving MAXVARN on trivial input ] 3- [Mat(5)] * [[0]~]~ --> 0. Should be [0]~ [introduced in 2.2.6-C.25] 4- \p 1000 E=ellinit([1,0,1,-120039822036992245303534619191166796374,5042249924849106700108 01799168082726759443756222911415116]); x1=1e100; y1=ellordinate(E,x1)[1]; ellpointtoz(E,[x1,y1]); --> impossible addition t_VEC + t_VEC. [ precision error ] 5- erfc(non scalar) --> type error 6- raising to t_FRAC power didn't work with p-adics: (-1+O(5))^(1/2) --> 1 7- [ isprime / APRCL: ] integer overflow, e.g isprime(2^32 + 1, 2) 8- sum(i=2^32-10,2^32+10,1) --> 11 [ kind of overflow ] + didn't use the t_INT interface ==> broken with GMP kernel 9- polgalois(x^6-3*x^4+3) --> [24, -1, 1], should be [24, -1, 2]. From 2.2.4 10- nfisincl(x, x^2+1/2) --> SEGV [ assumed integral inputs ] 11- numbpart(10^15+2) --> SEGV [ check for x < 10^15 incorrect ] 12- polcompositum(x,x) --> SEGV [ problem with poldeflate(deg 0 pol) ] 13- zeta((1+I)/2^225) --> 7e28 [ precision error when using func. eq. ] 14- typos in qfsign/qfgaussred() [ aka sqred2 ]: wrong results: e.g qfsign([0, -1, 1, 1; -1, 0, 0, 1; 1, 0, 0, -1; 1, 1, -1, 0]) --> [2,2] ( should be [2,1] ) 15- numbpart(0) --> 0 [ should be 1 ] GN 16- assembler section of Sparc Makefiles relied on GNU make specific $< MSo17- off-by-1 error in Vec( t_STR ) [ memory corruption ] 18- off-by-1 error in itostr(), e.g 10^11 [ memory corruption ] BA 19- [hi-res plot: X-Windows] rescaling bug MSo20- bittest(1,32) --> 1 [ off-by-1 error ] 21- nfeltpowmodpr(nf,x, prime of degree 1) --> SEGV [ FpXQ_pow couldn't handle computation in prime fields ] 22- charpoly( Mod(mat, poly) ) --> SEGV [ out of stack components not treated properly ] 23- memory corruption when parsing floating point constants [ constante() ] 24- too little GC in serreverse() 25- bnfinit(huge field) --> "precision loss in truncation" [ missing term sqrt(disc(K)) in norm bound ] 26- allow conj(t_POLMOD) provided the modulus degree is <= 2. MSo27- ?0 with _many_ user functions defined --> SEGV [ typo in commands() ] 28- quadclassunit(5) --> PLEASE REPORT [ can't build subfactorbase, introduced in 2.2.6 ] 29- valuation(x^3, x^2) --> 3 [ valuation at a monomial assumed it had degree 1, introduced in 2.2.2 ] 30- Set(matid(2)) --> [ "[1, 0;\n0, 1]" ]. Ensure "raw" format is used, not "prettymat". 31- typo in rnfpolred(bnf, *). E.g rnfpolred(nfinit(polcyclo(3,a)),x^3-19) --> oo loop [ non-positive T_2 form ] 32- typo in ellap: rare wrong result. E.g E=ellinit([0,0,1,-5115523309,-140826120488927]); ellap(E, 1315717181) BA 33- qfbprimeform(-3, 1) --> data corruption [ gzero's signe set to 1 ] 34- qfbpowraw(x, n < 0) reduced its output 35- stack corruption when adding huge p-adics 36- idealintersect did not allow fractional ideals 37- Ser([1,2]) --> 1 + 2*x + O(x^2) [ OK ], but Ser([0,0]) --> O(x^16) 38- writebin() still produced incompatible output depending on the multiprecision kernel. 39- [alg | lin]dep( t_PADIC ) had stopped working in 2.2.6 40- some precision problems in polgalois(deg(p) > 7) [ changed slightly some heuristic settings: the algorithm is simply not rigorous... ] 41- typo in polredabs: polynomial of minimal T_2 norm might be missed [ actually found, then deleted due to a typo when "Sorting" small vectors, which would assess them the norm of a larger element ] 42- polredabs(,4): some polynomials of minimal norm could be eliminated due to fixed buffer size for the small vectors. Made that dynamic. 43- in certain situations (when using Allombert's algo.), subfields did not output subfields sorted by degree 44- [Windows installer:] online help did not work on most installations 45- lines continuation with \ did not work with DOS fileformat BG 46- random(2^31) returned integers in [0, 2^32-1] [ long/ulong problem ] 47- isprime(156499227435744375600531968861048687296374896432841731) --> SEGV [ missing case in aprcl:sqrmod5() ] BA 48- Configure: using gcc-3.3 + LANG=french, Configure failed to detect gcc [ messages translated ] 49- alpha kernel would not compile with a C++ compiler (missing extern "C") 50- rare stack corruption in gmul(t_COMPLEX, t_COMPLEX) [ when result is real ] 51- valuation(Mod(x,x^2), y) --> oo loop [ now 0 ] 52- optimization problems in new zeta() and gamma() [2.2.0 C13] ( e.g zeta(0.5 + 10000*I) was _much_ slower than before ) 53- precision problem in nffactor [ in get_R() ], could yield to a SEGV, e.g nffactor(nfinit(y^4+7^2),x^28-14*x^24+20321*x^20+166992*x^16+1171296*x^12+1342208*x^8-5005056*x^4+3211264); 54- contfrac(Pi/2,2) --> [1, 1] (doc says a_n != 1, so should be [2]) 55- factorint( 3280696195200006885547973357173182411881462602934802054749349683516314460050 2548596646024265171468102088952756084355402608216473040677346490348936595334 0299389230010814564530645152250241760175805765084544728012391149823776145022 4913178048870032606672750626773595019035786804361581343222144074318522768947 2061349830773562073895748494534362180537529975336881525935996152181576667869 0625865166662910961888106910345518707973056625912728422391238723575276042635 9727112469435556047168454738353621102783718736137552743946577993495054202848 9372915917197045423574773583244796785665263319216397122018435444897 ,11) --> impossible assignment I-->S [ stack corruption ]. 56- typo in kummer.c:invimsubgroup [ hnfmod --> hnfmodid ]. Very rare weird error message in rnfkummer(): "wrong subgroup in conductor". 57- typo in alglin2.c:hnfspec() [ same loop index used twice ] 58- zeta(x) very slow for large integer |x| (use new bernfrac() code) 59- removed -mimpure-text from DLLDFLAGS on non-sparc architecture XR 60- Configure/bench: use head -n # instead of head -# (deprecated and unsupported by GNU coreutils) 61- not enough GC in mpbern() [ Bernoulli numbers ] and psi() 62- \p50000, then polroots(x) --> exponent overflow 63- ellj( t_QUAD ) / eta( t_QUAD ) was forbidden. 64- polredabs(x,1) did not work when x was already reduced 65- polroots(x^3 + 0e-20) --> oo loop [ didn't handle nicely non-exact 0 as a constant coeff ] 66- 'make doc' always rebuilt the documentation, even if it was up to date Changed 1- bnfinit: [small_norm phase] speed up norm computations. 2- [make etags:] use $ETAGS instead of 'etags' if defined 3- [libpari:] renamed incgam4 --> incgam0, incgam3 --> incgamc BA 4- [Description system] Store GP functions in a database in src/functions/ instead of hard-coding them in C files. 5- [libpari:] modified zbrent interface to allow library programming 6- ellpointtoz(E, P): remove the test that P be on E [ useless and often wrong when P has inexact entries] 7- allow serconvol() with 0 series. MSo 8- allow numtoperm(0,k) [ --> [] ] 9- simplify result of basic op. involving complex numbers, e.g. I*I --> -1 as t_INT (was t_COMPLEX) 10- embedings of number fields: use x + iy --> (x + y, x - y) instead of (sqrt(2)x, sqrt(2)y) to map complex embeddings to R^2. 11- disallow Ser( t_MAT ) [ resulted in a series with t_COL coefficients ] 12- nf format to improve idealinv() [ nf[5][6] and nf[5][7] ] 13- disallow sqrtint( x < 0 ) 14- meaning of the GP_DATA_DIR global variable: now points to the directory _containing_ galdata, not to the galdata files 15- qfminim(,,2) + polredabs: look for points by (roughly) increasing norms (was: full enumeration and roughly decreasing norms) 16- exp(-10^10) --> 0.E2525223 [ was 'underflow' ] 17- polredabs: improve the search for subfields (no polynomial factorization required now, only linear algebra) 18- ellglobalred(): use gcd(e.c4, e.c6) to help factor e.disc 19- removed obsolete components ("checks", "bits of accuracy left in computation") from quadclassunit / bnfinit / bnfisprincipal / bnrisprincipal / bnfunit outputs. 20- 'make test-graphic' is gone. Use 'make test-ploth' HC 21- new implementation of gamma() 22- renamed Oxxx/dft.Config.in --> pari.cfg 23- new implementation of bernfrac() [ use zeta(2k), initial GP code by HC] 24- bernvec always calls bernfrac() [ hence has become useless ] 25- [sparcv8_super kernel:] replace asm divll with portable one (slightly slower but fixes many compilation problems, and easier to maintain on an architecture which has become hard to test) 26- buchall() [ bnfinit, etc ]: complete rewrite to avoid restarting from scratch after a precision increase. All relations stored in algebraic form, so that data is easily recomputed to higher accuracy if necessary. Use lower default precision. 27- remove special handling of t_STR by printtex / writetex [ 2-2-6-C19: a \ would be inserted in front of $, %, etc. ]. This broke things like printtex("$", x, "$"), and is better done by the user herself. 28- bnfinit(): remove useless components from the "technical parameter". Added 1- [Configure:] flag --with-ncurses-lib=* BA 2- support for FLTK graphical library [ hi-res plot ] BA 3- galoisidentify for order 96 to 127. 4- default 'datadir' [ to allow relocating 'galdata' for polgalois ] 5- hi-res plotting under Windows GTo 6- routine qfrep() BA 7- routine qfbsolve(Q,p) for Q imaginary and p prime 8- new testsuite: make test-galois (~ 1 minute) 9- new options to Configure: --with-fltk, --emacsdir, --datadir, --sysdatadir SG 10- updated micro-kernel for HPPA BA 11- Add code 'i' for functions returning C int (not long) Removed 1- bruteall [ useless, undocumented variant of 'brute' ] 2- option to Configure: --miscdir %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.6 (released 19/06/2003): Fixed 1- rnfidealtwoelt, rnfidealmult --> SEGV 2- agm(x+1, x+2) --> oo loop [2.2.5 F-61 was undone...] 3- setrand(1); elltors(ellinit(vector(5,k,random/random))) --> SEGV [ incorrect use of partial factorization in ellintegralmodel --> surviving denominator ] 4- old typo in cauchy_bound --> factor((x - 155)*(x^2 + 160*x + 12864)) returned a single irreducible factor [ missing factor 2: initial upper bound for roots was 125 instead of 250 ] 5- zeta(x) very slow near large negative integers 6- algdep(2^46,1) ---> 1 [from 2.2.5] 7- bnrclassnolist(bnfinit(y),[2,2]) --> SEGV IS 8- typo in paricom.h [extra , in enum] --> compilation failure IS 9- typo in part.c [ // comments ] --> compilation failure 10- y/(x/y) --> error [ wrong assumption that y is a genuine GEN in mulscalrfrac ] 11- example/Makefile wasn't up to date [ link with -lpari ] 12- zetak(zetakinit(y), 3-1e-28) --> -7.2e28 [ catastrophic precision loss triggered by anything non-integral but very close to an integer ] IS 13- gp-dyn build on AIX 14- subst(y*x,y^2,x) --> 0 15- rnfisnorminit(x,x^3-2) --> SEGV [ bad input. Missing argument checks ] 16- Compiling with g++ + gmp, missing gmp version number [missing stdio.h] IS 17- [AIX:] various compilation problems + select better CFLAGS (-qtune=auto -qmaxmem=8192) IS 18- [HPUX:] remove -E from DLCFLAGS 19- bnrconductor(bnfinit(x)) --> SEGV [ missing check ] 20- ellpow(E,...,-1) --> stack error [ from 2.2.5 ] 21- a:b:c; c/a/b == c/b/a --> 0 22- sparcv8 inline assembler kernel used global registers for hiremainder / overflow, which was dangerous, inefficient, and complicated. Now none of the inline kernels use any global variable. The non-inline assembler kernels do define and access globals hiremainder and overflow. BA 23- cos(2^2^22) --> precision too low [ idem sin, tan ] 24- setrand(1504969109; quadclassunit(-403195) --> incorrect. Check against L-value too liberal; now allow quotient in [ 0.8, 1.3 ], not [0.75,1.5] 25- TODO item: quadclassunit not reliable when fed non fundamental discriminant (oo loop [e.g quadclassunit(-352)], wrong result). [ fix: increase factor base ] 26- sign of elleisnum(E, 6, 1) was wrong BA 27- [GMP kernel] factor(18295370635792208009) --> error 28- idealprimedec(nfinit(x^16+16),256) --> SEGV [ bad input ] 29- setrand(1642014180);quadclassunit(1642014180) --> PLEASE REPORT [ bug in large prime relation code ] 30- TODO item: rnfpolred(nfinit(quadpoly(904,y)),quadray(904,1)) *** division by zero in gdiv, gdivgs or ginv BA 31- uninitialized memory read in divrr(x,y), when lg(y) < lg(x), leading to random rounding of result. 32- [Cygwin + bash >= 2.05a]: HOSTTYPE no longer auto-exported by bash --> Cygwin compilation broken. Define it to i386 by default. 33- TODO items related to polgalois + polgalois(x^8-1864259299553450972214799899167226732549697977945716*x^6+331143259018657601105207922631212331088735421305543663274125986698777318014979969*x^4-2225286541902342283500014249183311190477390*x^2+5); --> degree too large + setrand(7); polgalois(x^8+162644002617632464507038884216211529274267271168000002) --> wrong result + polgalois(x^11 - 2) took a looong time. 34- systematic warning in bnfisnorm() [ "useless flag" ] 35- charpoly could not handle t_POL in variable MAXVARN 36- \p400 + sin(2*Pi) boasted far too many significant digits 37- [Configure:] --with-readline=path did not work 38- [Configure:] $TOP/readline was added to search path for ncurses, termcap, etc 39- memory leak: x = vector(2); y = vectorv(2); while(1, m = matrix(2,2); m[2, ] = x; m[, 2] = y) --> out of memory 40- factor(12345)[,1][3] --> error 41- overflow in some GP interface routines: e.g default(realprecision,10^125) 42- polhensellift((x^2+1)*Mod(1,5),...) --> SEGV [ bad input ] 43- lindep([x,y]) --> SEGV [ bad input ] 44- polredabs(x^4+9670527181567158504671*x^2+4840282594390812607599424249,16); --> impossible concatenation in concat [ from 2.2.5 ] 45- [Cygwin compilation:] incorrect cygtop [ --> readline not found ] 46- [Cygwin:] DLL build. libpari.dll and gp-dyn build OK. Install does not work in gp-sta (SEGV) 47- rare SEGV in Round 4 when using non-primes in addprimes() 48- overflow when computing Euler's constant to 20000+ decimal digits MSo49- error message for unrecognized GP metacommand: off-by-1 error GN 50- Configure breaks if CFLAGS contains '/' (invoke sed with '!' separator) IZ 51- [tex2mail:] line couldn't start with {...\over...} (required indent) IZ 52- [tex2mail:] \over wasn't allowed within \left( \right) 53- ZX_QX_resultant (modular resultant with integer result): possible oo loop when the result is 0, and non trivial denominator. 54- elleta(E.omega) gave incorrect results [ conflicting normalizations ] 55- typo in charpoly(t_MAT) [ stack overflow after garbage collection ] 56- subst(y,x+y-x,y) --> 0 [ missing simplification ] 57- typo in nfroots [ returned inverse of roots when polynomial had small degree (using Trager's method) ] 58- 'path' default incorrectly set on Cygwin 59- [internal:] isprincipalfact() incorrect if flag contained nf_GEN_IF_PRINCIPAL (was unused). 60- bnfisintnorm(bnfinit(y^4+y+1), -1) --> SEGV [ could occur for any unit ] 61- stack corruption in matsnf() [ when GC occurs ] 62- vecsort(t_VECSMALL) --> SEGV 63- v = vector(2); j = 0; v[j++] = 1 --> j = 2 [ side effect of 2.2.4-F21: LHS for matrix assignment was evaluated twice ] Rem: v = vector(2); v[j++] = v = 0 --> SEGV. Don't cry. BA 64- [ix86 + gcc compilation]: fix "invalid preprocessing token" Warning BA 65- galoisinit could very rarely trigger a 'impossible inverse modulo' error. Changed 1- rnf structure (removed useless components) 2- rnfidealreltoabs, rnfidealup: now return a Z-basis as a vector of elements in the relative extension, instead of a meaningless HNF matrix wrt an unknown basis. Was especially dangerous if the extension also existed in nfinit form, since the HNF matrices were _not_ ideals wrt this nf structure. [ also consistent with rnfeltreltoabs ] 3- rnfidealabstorel now requires input in the above form, so use rnfidealabstorel(rnf, nf.zk * A), if A is a standard ideal in HNF form. Used to require matrices in HNF form, which was confusing since ideals such as A gave wrong results [ HNF wrt different implicit bases ]. 4- idealadd(x,y): multiply by lcm(denom(x), denom(y)), not their product 5- rewrote nfhnf/nfhnfmod/nfbezout [ many small improvements ] 6- rnf structure now filled incrementally [ absolute nf, data for norm computations ]. Use build_and_check_obj() mechanism already used for bnf: cycgen ( bnf.gen[i]^bnf.cyc[i] ) + matal (relations in algebraic form) 7- rewrote rnfpseudobasis, rnfordmax [+ new routine rnfallbase ] 8- always define checkmemory() in libpari [ was included only if MEMSTEP was defined ]. Could cause compilation failure when compiling with different flags. 9- upgrade pariemacs, see pariemacs.txt 10- faster divll for portable kernel [ inspired by GMP ] 11- allow system() under Windows (95 and higher) 12- use cmprr() in gegal(t_REAL, t_REAL) 13- have Configure check explicitly that the C compiler is ANSI 14- faster modular algorithm for characteristic polynomial of algebraic integers Mod(x, y) [ ZX_caract(): old would replace x by its integral part and correct at the end; new is fully modular ] 15- separated mpadd functions from [none|gmp]/mp.c --> kernel/add.c 16- use 'lgeflist' for t_LIST: remove the 65536 limit on list size 17- subst(1 + x^2 + O(x^5), x^2, y) --> 1 + y + O(y^2) 18- nffactor: allow modular factorization over primes of degree > 1 IZ 19- try to output usable TeX (avoid braces, let TeX split lines) 20- [libpari internals:] jmp_buf 'environnement' no longer global MSo21- allow poltchebi(n < 0) [ := poltchebi(-n), still satisfies the 3-term recursion ] IZ 22- prime sieve optimization [ primelimit ] 23- try to reduce the likelihood of an artefact relation in PSLQ [ use "confidence level" 2^(-20) ] IZ 24- [tex2mail:] add a "cut here" sign when expression does not fit in the linelength: \o3 \p240 [Pi, Pi]~ 25- faster multiplication [t_VEC | t_MAT] * t_COL for sparse t_COL [ induces faster charpoly for sparse t_MAT ] 26- matsnf: allow rectangular matrices + improvements for singular matrices 27- made startup errors ( GPRC ) non fatal. 28- allow vecsort(t_VECSMALL) 29- renamed mulssmod/divssmod --> muluumod/divuumod and changed their prototype (use ulong arguments, return ulong) [ was already the case, with various casts ] 30- renamed u_invmod --> invumod. Documented all level0 modular routines. [ also added invsmod ] 31- separated "negative or zero argument" (arither2) and "zero argument" (arither3) errors. Added 1- member function rnf.pol (polynomial generating absolute extension) 2- src/kernel/sparcv8_[micro|super] 3- in emacs/ : pari-completion.el pari-conf.el.in pari-fontification.el pari-help.el pari-messages.el sli-tools.el 4- Configure --builddir : find a decent name for build directory depending on kernel options (with/without gmp, exotic assembler kernel) GH 5- PowerPC level0 inline assembly kernel 6- support for install() on Mac OS X BA 7- GP function galoisexport IZ 8- logstyle and TeXstyle defaults 9- [GP defaults:] support 'G' suffix (for Giga) (already supported k and M) 10- extend GP command line: once flags (-xxx) are processed, remaining args are taken to be filenames, read upon startup [ _after_ the gprc read statements have been processed ] GH 11- IA64 level0 inline assembly kernel BA 12- GP function galoisidentify and groups identification facility 13- public function GENtoGENstr [ for GP2C ]. (was private: gtostr()) 14- function coefs_to_vec() NS 15- support for Qt graphical library [ hi-res plot ] Remove 1- remove emacs/compile [ integrated in Makefile ] 2- src/kernel/sparcv[89] 3- config/MANIFEST [ now built dynamically ] 4- config/Makefile.DLLs [ use recent libtool instead of dirty hacks ] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.5 (released 11/02/2003): Fixed 1- [bnfinit:] typo in be_honest() --> SEGV when cbach2 > cbach [from 2.2.4] 2- apprpadic() when p = 2 (could not work) + typos 3- typo in gphelp [detex mode]: ubiquitous "var" in translation [from 2.2.4] 4- typo in var_make_safe() [ protecting user variables after trapped "stack overflow" ] --> possible SEGV [from 2.2.4] BA 5- [Configure:] add -lm -lc to EXTRADLLDFLAGS, not DLLDFLAGS 6- typo in gp_main_loop: avma not restored properly after allocatemem. [from 2.2.4] 7- typo in [imag|real]_be_honest: SEGV in quadclassunit(D,,[c,c2]), c2 > c [from 2.2.4] 8- typo in rnfisnorminit (pol_up) 9- at \p28: x = (1. + 10^-28) - 1; for (j=1, 100, x = (x-10^-28) + 10^-28) now x has 200 words of precision 10- stack corruption in addition (t_INT + t_PADIC) 11- factorpadic(z+y,2,4) --> SEGV 12- wrong result in idealchinese when the y_i had denominator BA 13- sigma(n,-1) output a wrong result. BA 14- inline alpha assembler broken (registers clobbered) GH 15- polsturm(1, 0, 1) ---> error [ return 0! ] 16- "break loop" did not react correctly to allocatemem() read from a file with \r (stopped reading file right away) 17- matker(x, 1): internal loop forgot a pointer when garbage collecting --> SEGV (or weird error, e.g division by 0) 18- ideallog(nfinit(y),2,idealstar(nfinit(y),4,1)) --> SEGV [bad input] 19- ellrootno(ellinit([0,-25,0,-1250,0])) --> SEGV [from 2.2.3] 20- typo in elllocalred (wrong Tamagawa number, case I0). [from 2.2.4] 21- idealtwoelt(nfinit(y),2/3,1) --> SEGV [bad input] 22- for transcendental function f and polynomial p, f(p) only gave seriesprecision significant terms when val(p) = 0 23- Ser(a/b) --> 1 + O(x^16) (!!) 24- (x^2)^(1/2) --> error 25- idealnorm(nfinit(y),matdiagonal([1+I])) --> SEGV [bad input] 26- polylog(10,x^10) --> O(x^6) at \ps16 [ 16 significant terms ?] --> x^10 + O(x^21) at \ps 21 [missing x^20 term] 27- nffactor/nfroots: SEGV over Q 28- missing sanity checks in install() [ did not check the parser code ] 29- typo in nilord() [lg-->lgefint]: nfdisc() didn't work on 64bit HP 30- ellisoncurve(ellinit([0,0,0,0,1]),[1/2-sqrt(3)/2*I,0]) --> 0 31- type 'gphelp' from command line: carriage return is missing 32- typo in LLL_cmbf() [ rare oo loop in factor() over Z[X] ] IS 33- [HPUX:] should compile with cc -Ae, not -Aa 34- excessive memory usage in bnrstark() [ InitPrimes ] 35- bessel[jk](t_SER) not implemented around a!=0, but gave (bogus) results [output error message for now] IZ 36- [OS/2:] rename static functions _core[2] (conflict with stdlib.h) IZ 37- [OS/2:] ^C would only work once 38- algdep(.1^5,1,10) --> 1 39- { "a b" } \\ with an explicit \n produced "ab", whereas whitespace in strings is to be retained. 40- inconsistencies in return type from lindep [t_VEC/t_COL]. 41- possible oo loop in ellap [ typo in appell1 ] 42- made PSLQ (algdep/lindep) insensitive to 'realprecision' [use precision of the input] 43- nfinit(x^2-4*3,4) --> SEGV 44- Compilation failure on ORIGIN + Irix: rename 'sgi' --> 'SG' in basemath/galconj.c 45- '\r a' where file 'a' is empty --> "a is not a GP binary file". 46- make sure qflll[gram](x) never fails when x has exact entries [ much faster than qflll(x,1) when the entries are large ] 47- increase subFB sooner in buchall() + add GC in Q_denom { bnfinit(x^8 - 4*x^7 + 462*x^6 - 1372*x^5 + 85789*x^4 - 169296*x^3 + 7540560*x^2 - 7456140*x + 263038707) } took a long time, then overflowed the stack 48- make test-kernel did not work anymore (prototype error in kerntest.c) 49- overflow in u_FpM_gauss (oo loop in ZM_inv for huge matrices) 50- polcoeff(1+O(x^2),1,y) --> SEGV 51- content(y/x) --> 1 [ should be y ] 52- divrem(x,2) --> x/2 instead of [x/2, 0]~ 53- divrem([1.,2],x) --> stack corruption 54- ff(n)=local(v=[],w=[]);n f(n)=n ff(f(n))=n --> error (OK) + SEGV on Linux (same data freed twice) 55- qflll(matrix(2,3,x,y,x+y)) --> SEGV IZ 56- default(primelimit, 2156858852) --> SEGV and other signed/unsigned conversion problems. IZ 57- printtex("x1") and printtex("x_1") gave same output IZ 58- printtex(t_STR) [ protect special characters, eg ~ or \ ] IZ 59- [readline:] support old versions (1.0), try to recover from mismatched headers wrt. library, report version of loaded library in gp header [as opposed to library version at Configure time] BA 60- add "const" keyword to allow building with g++ 61- agm(1+x,2+x) --> oo loop 62- lindep([1,0]) --> error [ problem with trivial cases in PSLQ ] 63- wrong reconstruction bounds in nffactor 64- short help message for isprime/ispseudoprime 65- issquare(t_FRAC or t_RFRAC, &x) did not work [ worked without &x ] 66- nfgaloisconj(x^2+1,4, 0) --> SEGV [ bad input ] 67- typo in quadhilbert(-D): required O(D) memory instead of O(sqrt(D)) 68- all signed/unsigned compiler warnings 69- \p29, tan(Pi/2) --> "division by zero". Made error more explicit 70- nfnewprec(nfinit(x,3)) --> SEGV 71- bnrconductorofchar(0,0)--> SEGV [bad input] 72- qfjacobi( non-square matrix ) --> SEGV [bad input] 73- matmultodiagonal([;],matrix(0,1)); --> SEGV [bad input] 74- [GP, trap:] prevent oo recursion if default exception handler itself raises an exception 75- allow qfbred(,2) [don't update Shanks's distance] also for definite forms [ignore flag]. 76- lex(x,"y") --> error [ should be -1 ] 77- algdep(0,1) --> 0 [ should be x ] 78- log(1, AGM) --> oo loop 79- [Configure+gcc] remove useless -m* arguments from CFLAGS [ obsolete ] 80- improper rounding when printing floats: 1.2 --> 1.199999999 81- [default:] realprecision was allowed to be 0, and then treated as 9. 82- Precision loss in inputs of large exponent: 1e100000 -->9.99999824 E99999 83- quadgen / quadpoly accepted square inputs --> weird bugs later. 84- poldegree(x^2 / y^4, y) --> -1 85- setrand(178);quadclassunit(82421) --> 2 instead of 1 [from 2.2.4:] 86- polroots( Pol(subst([1,0,4*x,0,2*x^2+24,0,16*x,0,16],x,10^2589) ) --> division by zero [ double overflow ] 87- LLL-reduction over polynomial rings (almost always failed) 88- (x/y)*(y/x) --> y/y 89- fix pari_init_stackcheck to avoid bogus "deep recursion" messages on broken machines. 90- reused invalid (gerepile'd) pointer in mat_ideal_two_elt. Changed: 1- "not enough precomputed primes": output largest needed p if available XR 2- factorpadic so that factorback gives back the original polynomial, up to a power of p 3- type of avma, bot, top to 'pari_sp' (pari stack pointer) [does not break existing code] 4- [library:] make floating point assignments round the inputs (used to truncate) 5- ensure proper rounding in divrr/mulrr() [ important for numbers input in scientific format, e.g. 1e20 ] BA 6- moved internals of mppgcd to mp.c/gcdii BA 7- moved internals of genrand to mp.c/randomi BA 8- renamed mymyrand --> pari_rand31 9- bnrstark: use partial factorization of discriminant when (pol)reducing the polynomial [could embark into hopeless factorizations] 10- primedec: improved search for uniformizers when p | index IZ 11- [OS/2:] improve dlopen(NULL,...) IZ 12- [OS/2:] enable dynamic-linking build IZ 13- [OS/2:] use same CFLAGS as under Linux IZ 14- when using external prettyprinter, write in raw format to logfile [not in TeX format sent to prettyprinter] IZ 15- don't output pseudo-TeX sequences to logfile when using external prettyprinter (raw format) IZ 16- make X11.builtin-gnuplot-dynamic the default graphic library. IZ 17- allow changing the gnuplot DLL name for gnuplot-dynamic at Configure-time e.g. Configure --graphic=gnuplot-dynamic,gnpltdrw 18- allow Vecsmall(t_STR) 19- polredabs heuristic (try harder to detect subfields). Ex: try it on polcompositum(x^2 - d, polcyclo(11)); MSo20- simplified polzagier() DS 21- improvements in elltors() [ faster torsion bound, check bound > 1 before checking precision ] 22- minor improvements in plindep() [p-adic lindep/algdep] 23- 'make all' now builds the documentation [ that way, 'make install' need not run a bunch of TeX commands as root ] 24- improved idealaddtoone/idealchinese/idealapprfact [use dedicated HNF variant + simpler uniformizers in idealapprfact] 25- rnfkummer: do not return rational coeffs as POLMODs: -1, not Mod(-1,pol) 26- improved idealval() 27- simplified element_reduce, idealmodidele (redideal), compute_raygen (create bnr.gen): faster, smaller elements 28- new algorithm for conductor() and bnrdisc() [much faster, does not need bnr.gen]: find minimal f such that P_{1,f}(K) \subset H, computations are done for a fixed modulus F instead of computing the image of H in Cl_f(K) for many f | F. IZ 29- improve portability of make_vi_tags (cf 'make ctags') 30- using install() twice on the same symbol now updates the prototype code 31- re-enable ranlib support (disabled in 2.0.13) 32- declare first argument in pariputs[f] as 'const char*' 33- enabled Karatsuba multiplication for t_REAL 34- broken Configure into many smaller files (config/get_*) 35- let gphelp write all cross-references as [label:LABELNAME] (was [??]) IZ 36- cache optimization in initprimes() [ default(primelimit,.) ] 37- Str() now takes multiple arguments as print(). Str(,1) replaced by Strexpand() 38- prototype of strtoGENstr() [remove flag] 39- remove -Wno-implicit from CFLAGS 40- prototype code 's*' now produces a t_VEC of GENs [callee's business to call GENtostr] (used to be a NULL-terminated list) 41- [gphelp:] if perl not available, don't pretend extended help is. 42- try harder to detect precision problems in floating point lllgram 43- [ix86 kernel:] macroified bfffo() 44- made all GEN macros return signed types [ had inadvertently switched to ulong as a side effect of some other change, long ago ] BA 45- split kernel Makefiles in MakeLVL0 and MakeLVL1. BA 46- --disable-kernel Configure option replaced by --kernel=none 47- compute_polrel() [rnfkummer] was very slow for [L:K] > 5 (compute Newton sums directly) 48- simplified fincke_pohst() [don't recompute gram_matrix] 49- faster trueeta(), faster quadhilbert(D < 0) 50- faster isprime (trial divide by small primes, recognize 1-word moduli) 51- ellheight: use Mestre's AGM to compute Archimedean height 52- poldegree(0) is now VERYBIGINT 53- alpha + gcc: compile with -O3 [ since F14 fixed the optimizer "bugs" ] Added: 1- [TeXmacs:] contextual completion () BA 2- routines ishiftr, gfloor2n, isqrti, randomi 3- routine random_bits BA 4- [Configure:] --builddir flag IZ 5- File README.os2 6- Allow nfroots(, P) [ roots in Q ] 7- routines Strexpand(), Strtex() IZ 8- detect oo recursion on OS/2 [as on Unix systems] (cf STACK_CHECK) RS 9- routine numbpart() BA 10- GMP kernel BA 11- --kernel Configure option IZ 12- allow an arbitrary polynomial as a 2nd argument to subst() 13- many files in config/ [ from Configure ] Removed 1- macro definition BITS_IN_RANDOM (useless) 2- appr_reduce() [static base4.c]: lllreducemodmatrix does the same. Faster. 3- [useless,undocumented]: idealoplll, idealmullll, idealdivlll 4- 68k assembler kernel [ unmaintained, obsoleted by the GMP kernel ] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.4 (released 12/09/2002): Fixed 1- add default 'new_galois_format' to make 2.2.3 C-22 optional (by default, old format will be used, preserving compatibility) BA 2- FreeBSD: DL_DFLT_NAME value was incorrect 3- Configure: TIOCGWINSZ not detected on Linux BA 4- FpV_roots_to_pol not reduced when applied to a singleton 5- (a.x = [a]); "a".x ---> [a] \\ should be ["a"] 6- (a.x = [a]); print("a".x) ---> a0.E-28x \\ should be ["a"] 7- (a.x = [a]); 1.x ---> error \\ should be [1] 8- wrong rnfidealnorm[rel | abs] (wrong result if O_L not free O_K-module) 9- gcd(x + 1, x + 1/2) --> 1 \\ should be 1/2 [introduced in 2.2.1] 10- gcd for multivariate polynomials over finite fields slower than in characteristic 0 11- [library:] typo in vpariputs: pariputsf("%Z%Z",x,y) did not work (prints x and address of y) IZ 12- [gnuplot + dynamic link:] allow building even when dlopen() not available 13- [CVS:] warnings about unknown files (added .cvsignore files) 14- f()=return \\ return "void" g()=return(f()) \\ return eval("void") = 0 now g() returns "void" also 15- f(x=11,y=x)=local(t=ff(),u=t);1 --> parse error 16- conjvec([[],[],[]]) --> SEGV 17- galoisisabelian(x) --> SEGV 18- nfeltreducemodpr(nfinit(x),1,1) --> SEGV 19- idealmul(nf, principal ideal, prime ideal) returned wrong result [introduced sometime in 2.2] 20- elltors(ellinit([...], 1)) --> SEGV 21- try to make sure life of GP variables is not too short. Was: v = [0,0]; v + [v=0,v=0] --> SEGV u = Mod(x*Mod(1,2),polcyclo(25)*Mod(1,2)); sum(i=1,4,u=u^32) --> SEGV 22- typo in to_Fp_simple [ bnfcertify(bnfinit(x^2-40!)) --> type error ] 23- memory leak in gp when handling '&' arguments 24- removed hack in gcopy [ did not reset the isclone() flag because gunclone checks isonstack(). But other routines may want to use it ]. 25- apparent oo loop in bnfcertify [when computing lower bound for regulator] 26- ideallistarch(nfinit(x),[1,1],0); --> SEGV [bad input] 27- factor(x-I) --> x - #<16382> 28- ellsigma(...,matid(1)) --> SEGV [bad input] 29- ideleprincipal([],1) --> SEGV [bad input] 30- factorback(matid(1),nfinit(x)) --> SEGV [bad input] 31- incomplete help message for vecsort 32- polredabs fails to reduce x^8-2*x^7-34*x^6+78*x^5+265*x^4-628*x^3-389*x^2+1237*x-449 [typo in chk_gen_init: skipfirst not initialized properly] MW 33- (recent) typo in localred (char 2) 34- 2.2.3-C20 had broken backward compatibility: restore [inefficient, useless] previous output of nfelt*modpr routines 35- idealappr(nfinit(y),matid(2),1) --> SEGV [bad input] 36- sqrtn(0,...) ---> error 37- galoisinit(x^4 + 5264*x^3 + 8034856*x^2 + 4205424384*x + 504485485632) --> weird error 38- qfsign([;]) --> SEGV MW 39- torsion group of [0,0,0,-6648,208633] reported as C2 instead of C6 40- bnfinit: very rare stack corruption 41- bnfinit: used too much memory when needing huge number of relations [when computing fundamental units] 42- bnrL1(bnr with conductor 1) --> SEGV 43- "impossible inverse modulo ..." when using addprimes() + ROUND 2 MSo44- [gp: \x] missing 'break' statement in escape() 45- wrong bound in nf_LLL_cmbf (nffactor) [no counter example to the old bound, but proof was wrong anyway...] 46- [gp:] memory leak when assigning to multidimensional arrays (x[i][j]=1) 47- added user-friendly error message if Configure not run properly + fix INSTALL.tex about make gp.dbg / gp.prf 48- matcompanion(x*y) --> weird error 49- typos in hilbert(), e.g hilbert(Mod(1,2), y) --> SEGV, hilbert(-1+O(2^3), 12 + O(2^3)) accepted wheras 2-adic precision too low to decide BA 50- [FreeBSD:] PORTOBJFORMAT undefined by the system --> Configure fails 51- rnfisnorm() [errors, SEGV]. Had to change the prototype. BA 52- Oxxx/Makefile was not compatible with BSD make. 53- errors in files read from .gprc, containing trap() --> SEGV 54- bezoutres(Pol(sin(x)+Pi),Pol(cos(x))) --> "bug in subresext" 55- nfsubfields had a different output format when using galoissubfieds 56- polcoeff(1/x, -3) --> SEGV 57- (-2/x)/(-1/x) --> -2/-1 BA 58- [GP internals:] trap() had an invalid prototype [DI,DI] 59- M[,2][1]=1 --> error; M[1,][2]=1 --> no effect [ now <==> M[1,2]=1 ] 60- [GP:] newline in multiline comments /* */ was not ignored 61- [GP:] when using default 'colors' for input at \gn>1, first debugging msg could be colored 62- [GP:] in break loop, trailing ; was ignored (all results were printed) XR 63- smarter precision increase in update_alpha() (ROUND 4) [stick to padics don't go over Z] Ex: factorpadic(polzagier(18,3), 2, 30) much faster than before. 64- E=ellinit([0,0,0,-10301051460877581926458079712219,-12725370882271967125361344545020920373899020890]); ellap(E,1167254453) --> wrong result 65- factor(x^2 + I*1.) --> SEGV 66- when printing x < 0 t_REAL, was rounded in the wrong direction 67- [WINCE port:] small and SID are already defined in windows.h Changed 1- remove most global variables from gp.c (put them in struct gp_data). 2- use better bounds for size of factors in nffactor() 3- tuning for van Hoeij's factorizer (factor + nffactor) nffactor: call factornf when deg(pol) << deg(nf) + remove a priori overlift for d-1/d-2 test [major overkill] 4- automatic concatenation for strings: use longest match for expression. print("a"[1]) is not valid since "a" is not a vector print("a", [1]) prints 'a[1]' IZ 5- [gphelp:] allow uninstalled operation from $TOPDIR or $TOPDIR/Oarch IZ 6- [gphelp:] better error messages in case TeX compilation fails 7- [development version:] add version number for this file to the gp header when using CVS IZ 8- [library:] unified access to diffptr (NEXT_PRIME_VIADIFF macro) 9- buchall: re-use the same random seed when doubling prec (for units) 10- major cleanup in thue / thueinit 11- major improvements in rnfkummer (use elements in factored form): much faster, give smaller elements, allow arbitrary prime degree 12- improved quadray(D < 0) when relative degree is huge 13- improved bnfisprincipal when class group large: use factorisation (+idealred) instead of arch. components (require much less precision) 14- [library:] allow trapping invmoder and recovering the offending INTMOD 15- improved factor over Z[X] for _huge_ degrees (factorizations mod p) 16- change in ordering for primedec output [use cmp_prime_over_p] 17- [library:] moved (formerly) gp-specific write* and print* to libpari 18- input format to rnfisnorm() [use rnfisnorminit] 19- [GP:] break loop prompt from '>' to 'break>' 20- [GP:] don't get out of break loop after \r 21- type f(x=1)=; twice ---> x = 1 22- [trap:] the way default error handlers operate, how to get out of break loops (see section 2.7 of manual) Added BA 1- Add PARI_VERSION and PARI_VERSION_CODE to paricfg.h BA 2- Add pari_release at top of dft.Config.in 3- rnfpolredabs: flag to use partial factorization 4- [gprc:] test against VERSION number in .gprc 5- [gprc:] multiline constructs IZ 6- mnemonics for flags 7- internal flag nf_GEN_IF_PRINCIPAL to bnfisprincipal [isprincipalall] 8- routine rnfisnorminit() BA 9- [Makefile:] bzdist target 10- [library:] CATCH / TRY mechanism [ encapsulate err_catch ] Removed 1- (useless, undocumented) macros buchgen*, buchinit* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.3 (released 10/06/2002): Fixed 1- bnrinit(bnfinit(subst(polsubcyclo(89,8),x,-x)),4) --> SEGV [make sure isprincipalfact is used in makecygen, even in case of precision problems] 2- bnrisprincipal --> warning + "not an element in ..." [missing nf_FORCE] 3- oo loop in isprincipalfact when increasing bnf precision 4- stack corruption in ellap (LARGE p) 5- zeta(s) destroyed the Bernoulli cache when using the functional equation 6- oo loop in random_relation (called from bnfinit) 7- fixed lower bound for p in nfsubfields (could get oo loop: pol never squarefree mod p) 8- [Vecsmall([1, 2])][1][2][1] --> SEGV 9- typo in t_FRAC + t_PADIC [only numerator of t_FRAC used] 10- factorback(t,nfinit(x)) --> SEGV IZ 11- shift(x > 0,, flag!=0) didn't act as the docs said [flag now ignored] 12- lindep(Vec(x^48)) --> oo loop 13- could get NaN in max_modulus (polroots) --> havoc later 14- missing normalizepol() in centermod(t_POL,) 15- [Follow-up to 2.2.2-F10] even more recent pdftex failed again 16- not enough GC when printing a huge t_PADIC 17- factorpadic(x*(x+1),3,10) would corrupt polx --> SEGV later 18- delayed carry treated improperly in red_montgomery 19- F() = 0; local(x) ==> confusing error message IZ 20- OS/2: make bench didn't work [env wouldn't start shell scripts] BA 21- sqrtn(Mod(1,7),2,&z)-->z=1 should be -1 HC 22- Standard transcental functions exp, sin, cos, ^, *, are now orders of magnitude faster for t_POL arguments of small degree. HC 23- fixed a severe bug in p-adic/integer addition (1+3^4+O(3^10))+3 didn't work. HC 24- Corrected p-adic initell. 25- ellj / eta (t_SER) truncated result to seriesprecision 26- possible overflow in u_FpM_gauss (from ZM_inv) 27- various problems with C++ compilers 28- polredabs could fail to reduce "obvious" input, e.g x^2 + n*x + n^2 29- gcd(x,y,1) didn't check its arguments 30- typo in elltors: could forget a point of order 2 31- gdivgs(t_RFRAC,x) incorrect (if numerator had denominator) 32- serreverse(O(x) or x + O(x^2)) --> SEGV 33- dbltor(0) returned 2^-308, instead of 10^-308 34- precision problems in thue/thueinit setrand(5);tnf=thueinit(x^3 + x^2 - 43690*x - 3529208) --> error in mplog 35- typo in bnfnarrow ("impossible inverse") 36- subst(x,x^0,x) --> floating point exception ISo37- many typos in the documentation 38- [DOS/Windows]: incorrect conversion between 'double' and t_REAL 39- polrootspadic(4*x^2-1,2,2) --> impossible inverse: Mod(2, 16). [specific to 2, and non-monic equations] 40- discrepancy between bnfsunit output and docs [ bnfS[5][2] was t_MAT ] 41- matdet: pivoting strategy incorrectly chosen ("incorrect type in gexpo") 42- polcompositum output ordering depended on random seed 43- plotrecthraw(0,[0]) --> SEGV 44- plothraw([],[]) --> SEGV IZ 45- ix86 inline assembler compilation problem [divll] XR 46- forgotten case in Round4 [ nfdisc(x^12-10*x^11-57*x^10+740*x^9+353*x^8-16130*x^7+17749*x^6+100120*x^5-108466*x^4-292200*x^3+128380*x^2+380800*x+133112) --> impossible inverse: Mod(2, ...) ] 47- sin(1e-100) ---> 9.999999999999999999735998397 E-101 [ precision loss ] 48- idealpow(nf,x, n < 0, 1) did not reduce the result 49- gcd(0, -1) --> -1, content([0, Pi]) --> 3.14, content([0,Pi,Pi]) --> 1 BA 50- compilation problem on OSF (RTLD_GLOBAL undefined) BA 51- [X-Windows] hi-res plot: window not redrawn properly (BackingStore pb) 52- problems with tex2mail output (wrong alignment, wrong colors) 53- contfrac(sin(Pi/4),,2) --> impossible assignment 54- oo recursion in gaffect(t_POL, scalar) 55- content([-1]) was -1 [ should be 1 ] 56- stack corruption in u_FpV_polint (used by modular bivariate resultant) 57- polroots() used too high a precision when checking errors a posteriori (--> slow) 58- contfrac(1/x) --> SEGV 59- typo in sinh(0) --> wrong zero exponent 60- exp(O(x^-1)) = O(x^(-1)) [ouch...] 61- dilog(O(x^10)) = O(1) 62- cosh(O(1)) --> division by 0 63- sqrt(4*x^2) --> not an integer exponent for non invertible series in gpow 64- besselj(0,O(1)) [or besseli] --> precision<=0 in gprec. 65- O(1)' --> O(x^-1) 66- gcd(O(2^1), O(2^10)) --> O(2^10) 67- polrootspadic(x^2+8*x+4,2,2) --> "impossible assignment" 68- one could write() an object to a binary file, corrupting it MW 69- ellap(ellinit([0,0,1,-7077,235516]), 1075060289) --> "zero argument in an arithmetic function" MW 70- ellap(ellinit([0,0,1,-7077,235516]),1135392007) --> SEGV BA 71- user's manual index truncated if LANG=fr_FR 72- lex(string1, string2) could return something not in {-1,0,1} 73- bnfisprincipal(bnf,x, 0) was not instantaneous when bnf.no = 1 74- no GC in poleval 75- make clean did not remove libpari-2.2.* 76- incorrect result in gaffsg(s < 0, t_PADIC) [ wrong valuation ] Changed BA 1- improved Fp_isom IZ 2- remove all dependance on __OPTIMIZE__ for inlining [cf 2.0.14 F-24] 3- implementation of psi() [very slow + wrong results at low accuracy] 4- cleaned up forvec() [no more global variables] 5- improvements in bnrstark (precompute common data) BA 6- improved ffinit() 7- rewrote time-critical parts of bnrstark 8- all 'input filter' code removed from GP. es.c:filtre() now handles the full filtering [and has become reentrant] 9- isprime() now guarantees primality BA 10- improved polsubcyclo() BA 11- new interface for galoissubcyclo HC 12- gamma function for integral/rational arguments 13- faster factornf / nfgcd 14- removed readline-specific code from gp.c 15- allow bnrstark over Q 16- 'subgroup' argument made optional in bnrL1, bnrstark, rnfkummer 17- use relative van Hoeij algorithm in nffactor [can handle huge number of modular factors] 18- rewrote factorff() to use new modular functions 19- rewrote primedec() to use new modular functions 20- rewrote most *modpr functions 21- modified diagnostics for integral LLL to match floating point version 22- INCOMPATIBILITY: polgalois(); changed 3rd component of result so that it gives the numbering among all transitive subgroups of S_n [ was ad hoc up to 7, then as described above for n >= 8 ] 23- INCOMPATIBILITY: nf.zk is now T2-LLL-reduced 24- idealtwoelt was very slow when a small prime with many divisors divided the index (use approximation theorem) 25- content(scalar) = abs(scalar) [when it makes sense] 26- changed the interface to ispseudoprime and isprime 27- [internal] element_muli: check input is consistent 28- rewrote all LLL algorithms (use Householder, not Gram-Schmidt; do not use Gram matrix; unified code). 29- INCOMPATIBILITY: the internal components of nf[5] have changed (MC and T2 not needed anymore) 30- INCOMPATIBILITY: [library] polred & polredabs do not take a 'prec' argument anymore 31- unified nfinit, polred* [use dedicated structs internally] 32- rnfconductor(..., 1) doesn't need GRH anymore 33- extracted FpXQ_gener from idealstar 34- allow more types in gdivround 35- improved root_bound (first step in factor() over Z[X]) for huge pols. 36- faster bernfrac / bernvec 37- INCOMPATIBILITY: removed gentimer() / genmsgtimer(). Use TIMER/msgTIMER 38- let nfsubfields call galoissubfields (much faster when field is Galois) 39- Configure (locatelib): don't look for lib*.so.x [ pb on Linux with [readline | ncurses]-devel.rpm. Added 1- mplog2() function --> faster mplog() 2- gcd for Gaussian integers HC 3- APRCL primality test 4- (strong) Lucas primality test + Baillie-Pomerance-Selfridge-Wagstaff test BA 5- Facilities for permutation groups (perm.c). BA 6- New functions galoissubgroups, galoisubfields. HC 7- Implemented all Bessel functions J, I, N, K, H1, H2, and Bessel functions for power series and polynomials. HC 8- Implemented PSLQ [preliminary] GTo 9- Implemented Cipolla's algorithm for sqrt(Mod(x, p)) 10- library functions FpM_ker, FpM_deplin, diviiround, centermodii 11- library function gerepileall 12- library functions corepartial, core2partial 13- library functions affui, itou, stor, itor 14- library function lllint_ip (in place) 15- library functions Q_primitive_part, Q_primpart, Q_remove_denom, Q_denom 16- allow polredabs to use a partial factorisation of disc(nf) [as polred, but inconsistent values for flag. Backward compatibility problem here...] 17- routine ellminimalmodel() IZ 18- systems/ directory (currently for OS/2 only) IZ 19- [OS/2:] install() for OS/2 system (using builtin dlopen) IZ 20- gnuplot and X11 are now simultaneously supported %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.2 (released 10/01/2002): Fixed 1- qfbred(Qfb(4, 17, 18)) --> SIGFPE 2- broken compilation in arith.c when CC != gcc 3- nfhilbert (local case pr | 2) expected POLMOD argument without check 4- poldegree(P, t) slow when t != varn(P), and may not work in library mode 5- polrootspadic only worked when leading coeff was a unit 6- paddicappr was very slow (esp. when p was large) 7- Configure: check for 'double endianness' [used for double --> t_REAL conversion]. Previous check was failing on ARM architecture. 8- forsubgroup state not properly restored after ^C 9- libpari.so included symbols from libc without linking it explicitly (Debian requirement, and cleaner anyway) 10- recent pdftex failed to compile users.tex (\pdfannotlink undefined) 11- !nf.sign[1] was parsed as (!nf.sign)[1] 12- matrix(0,1) --> "identical index variables in matrix" [from 2.2.1 F48] 13- bnfinit could miss some relations in the "small norm" phase 14- x % y incorrect when y < 0 inexact (2 % -3. --> -1.) 15- typo in gcdreal (result < 0) [introduced in 2.2.1] 16- some obscure problems in rnfkummer 17- not enough GC in hnflll 18- sqrt(25 + O(2^5))^2 - 25 = O(2^4) 19- not enough GC when writing a t_PADIC 20- user member functions were very slow (unnecessary copy) 21- cd Oxxx; make -j4 bench ran things in the wrong order 22- poltchebi, pollegendre gave bogus output for negative degrees 23- possible SEGV or oo loop in polrootsmod when p not a prime 24- nfnewprec(bnf) could change bnf.gen (due to round-off errors) 25- SEGV in gcd(x,y) when operands have coeffs of the form Mod(t_INT,t_POL) 26- not enough GC in poldivres (= t_POL % t_POL) 27- issquare(Mod(3,27)) = 1 [from 2.2.1 C 10] 28- [BUG] message in 'elliptic' bench [made polroots more canonical] Changed 1- allow compressing *.dvi files for the online help system 2- index bound was restricted to MAXLONG in subgrouplist. Made it a GEN 3- try to guess correct precision earlier in polgalois/polroots 4- allow GP pointers to 'matrix components', e.g issquare(25,&x[i][j]) 5- changed assignment semantics to make it closer to C: x = y understood as (evaluate Y:=y, then set x:=Y), e.g i=0; i += (i=2) sets i to 4 (was 2) 6- output VECSMALLs as 'Vecsmall([...])' 7- more efficient polcoeff [also: made it independent of MAXVARN] 8- retuned bnfinit (let subfactorbase increase further): setrand(1);bnfinit(x^4 + 1159*x^2 + 335241) would never finish. 9- specified precisely lex() [see manual]. Now: lex([0,0],[0]) = 1 (was -1), lex(0,[0]) = -1 (was 0) 10- allow factorback(x, e) for prod x[i]^e[i] 11- don't store empty lines in history [cf 2.2.1 F57] 12- extend x \ y, x \/ y and divrem(x,y) XR 13- improvements in bnrstark (try harder to find modulus, need less memory) 14- global(x): ignore if x already global (used to raise a warning) BA 15- install: add RTLD_GLOBAL to dlopen flags [so that symbols can be used in other .so] 16- removed hack in gp_init.c [used "constant default args" to call print0] Added BA 1- New function 'vectorsmall'. 2- allow setting variable in divrem 3- GP operator #l for length(l) 4- a warning in zsign ("increase precision?") when dubious result 5- Montgomery reduction (only used in powmodulo() for now) 6- [experimental] basic tuning utilities (src/test/tune.c) [make tune] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.1 (released 18/10/2001): Fixed 1- typo in factornf (factor of degree 3 --> error message) 2- rnflllgram(), idealinv() didn't check their arguments 3- [readline] \r would complete using files matching r* 4- wrong result in ZY_ZXY_resultant when degree dropped in ERS 5- factor(x^2 + I*1.) --> stack corruption 6- \r directory was silently accepted 7- check arguments in polcompositum() TH 8- [Cygwin:] fixed paths for readline on cygwin 1.* XR 9- possible overflow in ComputeCoeff [ bnrstark() ] 10- numtoperm(2,x) --> SEGV [check arguments now] 11- rnfkummer could fail with "missing units" 12- factornf(P, non-monic t) --> error 13- forsubgroup/subgrouplist didn't check their arguments nor accepted SNF matrices XR 14- typo in nilord4 --> SEGV, e.g. nfdisc(x^16-363*x^14+53550*x^12-4091823*x^10+170172414*x^8 \ -3663509067*x^6+33703350345*x^4-63300912912*x^2+32451860736) 15- some messages didn't distinguish between MBytes and millions of Bytes 16- typo in BuildTree [hensel lift]: SEGV 17- (rare) oo loop in polroots, e.g. x^5-2*x^4-32*x^3+72*x^2+218*x-491 18- oo loop in ellpointtoz on certain rare inputs 19- stack corruption in factorff BA 20- better interface for galoissubcyclo BA 21- galoisfixedfield(,,2) now works with non Galois subfields BA 22- nfgaloisconj now use `d-1'-test + better strategy BA 23- fix accuracy problems in vandermondeinverse 24- missed some simplifications when handling multivariate t_RFRAC 25- [Cygwin:] incorrect default 'path' (used : instead of ;) 26- element_sqr didn't check its arguments (SEGV if bad input) 27- possible stack corruption in polroots (+ improved GC there) 28- typo in nfsubfields (incorrect bound: could miss a subfield) 29- typo in zsimpjoin (concat error in bnrdisclist, intr. in 2.2.0) IZ 30- typo in Configure [rl_save_prompt and _eprintf not found in target libs] MD 31- oo loop in ellap [uninitialized array length in apell1] 32- stack corruption in addfrac [wrong result for large denominators] MD 33- resmod2n [called from powmodulo] could return unnormalized integers 34- not enough GC in nfinit for huge degrees [get_mul_table] 35- intformal(1/2/t^2) --> apparent oo loop 36- polredabs(degree 1 polynomial) --> x [could be very slow] 37- polredabs() could use a basis which was not LLL reduced BA 38- pariformats (e.g %Z) incorrect on 64bit machines 39- polhensellift(x,[x,1],2,2) --> "bug in multiplication" 40- glitches in readline completion (random() * ne inserted args) IZ 41- CLK_TCK may reside in time.h 42- misleading definition for ?omega / ?bigomega 43- on \q, "Good bye" --> Goodbye 44- install() accepted gpnames which were not valid identifiers 45- bnfinit(x^4+65,,[.1]) --> SEGV (whenever c < c2) 46- when host badily configured (~ not expanded), gp would die on startup XR 47- factorpadic(, not a prime, ) --> SEGV 48- matrix(2,2,i,i, ...) allowed, with weird result BA 49- better arguments checking for galoisfixedfield 50- psi(I) --> incorrect type in rtodbl XR 51- increase precision automatically when needed in quadhilbertreal 52- idealstar(bnfinit(polcyclo(5)),11).clgp --> stack error 53- default(format,"g0.4"); 3./10 --> 0.300004577 [now: 0.3000] 54- subst() didn't check its arguments (e.g SEGV on t_STR) 55- qfbclassno(x < 0): wrong algo when x non fundamental 56- obscure bugs with types FRACN/RFRACN [when simplifies to INT/POL] IZ 57- readline history: while inputing continuation lines, the partial command was not put into history until full command was run 58- not enough GC in polroots (dft) for huge degrees 59- Cygwin: don't try to build gp-dyn.exe [crashes] 60- use vsnprintf to fix a long-standing bug in PARI output (using formats) used a fixed-length buffer that could overflow. If vsnprintf is not found by Configure, the bug remains. Changed 1- removed useless parameter prec in many bnr* and rnf* functions 2- major update of bnr* functions [use elements in factored form] 3- use /tmp instead of /var/tmp as default tmp directory [faster on Solaris] BA 4- Fp_PHlog (Pohlig-Hellman) can use a factorization of the subgroup order 5- major update of buchall() [bnfinit]: accurate precision increase, use multiplicative archimedean components (fewer logs), cleanup 6- [libpari:] rename permute/permuteInv to GP names numtoperm/permtonum 7- scalar + [;] --> error [made it [;]] BA 8- factorback, chinese, lcm and gcd now accept a single vector 9- Use I \cap Z instead of NI in hnfideal_inv 10- improved issquare(t_INTMOD) 11- improved subresultant routines (new function pseudodiv) 12- command-line options to Configure (installation directories) 13- rnfequation: use modular (bivariate) resultant 14- polynomial gcd (srgcd): uses modular algo (modulargcd,nfgcd) if possible 15- unified internal hnf* functions 16- improved nfsubfields [Hensel lift, allow nfsubfields(pol) instead of nf] 17- merged all "integer logarithms" + "safe ceil" functions (mylogint, get_e, floor_bound, myceil) 18- readline: TAB on empty parentheses following a function name has the same effect as M-h (used to insert args). IZ 19- faster computation of prime number table [better cache use] IS 20- obscure compiler bug in rootpol.c:max_modulus() [don't modify tau] 21- make bench ('elliptic'): explained [BUG] message 22- allow lift(t_PADIC) 23- faster polroots for Q of the form P(x^k) 24- allow subst(t, x^n, x) 25- ?user_fun: do not include function text if help available from addhelp [always include it for ??user_fun] 26- default values for used defined function arguments are evaluated when the function is called [used to be "when it's defined"] 27- allow subgrouplist(znstar(5)) [didn't accept groups in general form] 28- taught GP about GP2C-style type declaration [ignored] 29- 0. [realzero()] is now coded on 2 words (was 3, with third one ignored) IZ 30- readline history: lines are remembered as they were input (whitespace was deleted) Added BA 1- function pith() [= pi(x), naive implementation] 2- new target for Makefile: gp.dbg BA 3- library functions FpX_roots_to_pol, FqX_roots_to_pol BA 4- library function FpX_FpXQ_compo (Brent & Kung) 5- library function FpM_inv, FpM_gauss, ZM_inv, QM_inv 6- library function primitive_part IZ 7- readline: allow switching readline editing on/off [for commandtools] IZ 8- readline: F1 has same effect as M-h, and F1F1 as M-H (short/long help) 9- function writebin XR 10- new error message "precer" (precision too low in...) 11- allow minimal handling of t_VECSMALL under GP IZ 12- add error messages (as in err(shier2)) to emacs tag file 13- add error messages (as in err(shier2)) to vi tag file IZ 14- add flag to shift() to enable consistency with 2-complement semantic IZ 15- default 'prompt_cont' for continuation lines IZ 16- default 'readline' to switch readline on/off in readline-able binaries IZ 17- capabilities to 'bittest' (return bitmap, 2-complement arithmetic) GH 18- inline assembler micro-kernel for alpha + recent gcc (at least 2.95.3) Removed 1- obsolete functions twototwo, threetotwo, threetotwo2 XR 2- error message truer2 (superseded by precer) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.2.0 (released 30/04/2001): Fixed BA 1- gpflog could print some lines twice 2- return() could forget objects on heap 3- polhensellift didn't accept factors which were not squarefree 4- Configure missed some shared libraries (when only .so.version was there) 5- possible symlink attacks against mpqs() 6- internal requests for precision of bnfinit(x) [ = Q ] could yield SEGV 7- compatible = 3 not taken into account when reading a file 8- cbezout(0,0) = 1 (should be 0) 9- when lines > 0, output driver didn't reset properly after user output 10- nfdisc(x^5+2*x^4+3*x^3-3*x^2+122*x-1) --> impossible inverse 11- bug in gcc-2.95 -O3 -fomit-frame-pointer [Linux]: SEGV in quicksqri 12- addrfrac: could return a t_RFRAC whose denominator wasn't a t_POL 13- bnfcertify (zimmertbound): off by two error when reading bound 14- very inefficient Hensel lift (used ideas from Shoup's NTL) 15- incorrect assumption on factor degrees in polcompositum (SEGV in rare cases) 16- Vec(VECSMALL) --> incorrect object 17- galoispermtopol didn't check permutation length (--> SEGV on bad input) XR 18- rnfinit(nf, T) -> bug in multiplication if nf = Q 19- Pol(cotan(x)) -> SEGV 20- factor(tough polynomial over Z[X]) --> possible SEGV when padic precision is increased [e.g factor(polzagier(60,0))] XR 21- bug in ideal bound computation in rnfnormgroup 22- bnrisprincipal(...,y+z) --> SEGV 23- GP could forget about a function whose redefinition was stopped by a syntax error (sometimes with a delay!) 24- bnfisnorm result would include pols in MAXVARN: e.g. Mod(1, #) BA 25- pbs in Fp_factor_irred (factoring over Fq a pol. defined over Fp) 26- missing macros for gphelp (tex-mode) in chapter 5 27- nfsubfields(nfinit(polcyclo(13))) --> impossible inverse Mod(0, 29) 28- argument checks for element_mulid, nf_get_r1 (access to nf.sign) 29- typo in quadhilbertimag (SEGV for very large discriminants) 30- wrong precision used in numerical derivation BA 31- isprime(n < 2, 1 or 2) gave wrong result IZ 32- \r C:\a.gp wouldn't work [ : and \ forbidden... ] BA 33- bad PARI prototypes in init.c [were confusing GP2C] XR 34- nfdisc: fixed cache system in nilord (esp. precision handling) BA 35- nfgaloisconj(polcyclo(40)): accuracy lost nfgaloisconj(polcyclo(11)+1): oo loop IS 36- typo in squfof tuning on 64bit machines 37- -lm doesn't exist on MacOS X BD 38- typo in src/kernel/l0asm.c: ulong not recognized by MSVC IZ 39- TeX quasi-parsing in gphelp 40- ^C in gp would kill an xdvi launched by gphelp via ?? [detach from tty] 41- factor(P in Z[X]): wrong bound used in LLL_cmbf --> "no factor" 42- one extra blank line printed with some error messages [errcontext] 43- no typechecks in subgrouplist and forsubgroup 44- round4 [dbasis]: make sure polmodi gets a polynomial, not an int (SEGV) 45- various typos in rnfkummer (SEGV or 'non-maximal rank in nfhermite') 46- Configure -l (no argument) didn't work anymore BA 47- incorrect quoting in src/make_vi_tags (make ctags) 48- 1/[;] --> error, whereas [;]^-1 --> [;] [ now, allow 1/[;] ] 49- ??real only gave the help on t_REALs, not on real() 50- eigen: "missing eigenspace" [roundoff pb in ker() compared to exact 0] 51- error messages on GP metacommands (\...) indicated wrong context 52- bnr functions might fail with "indefinite matrix in lllgram" [prec pb] 53- nfhilbert(nf,a,b, pr | 2) would give bogus result if nf in variable 0 (x) MD 54- real(1 / (a+quadgen(...)*b)) was a / (a^2 + b^2) [assumed quadgen(-4) !] 55- wrong HNF (reduction not finished) when nblines >> nbcol [hnf(,0) only] 56- rare problem in isprincipal (large non Galois base field)--> wrong result (generators not required) or oo loop. 57- compatibility problems with readline-4.2 (build would fail) BA 58- pari format %Z (pariputsf) treated incorrectly on 64bit machines XR 59- typo in smallvectors (polredabs): possible oo loop Changed 1- DOS distribution archives (GPM removed) XR 2- round 4 algorithm: compute characteristic polynomials via Newton sums XR 3- nffactormod now calls factmod / factmod9 when possible XR 4- don't compute discriminant in nffactor/nfroots + better bounds in nfsqff 5- input loops rewritten (filtre more flexible + unified common code) 6- better modular arithmetic for polynomials (+ uniformized names) 7- bnfinit: "looking hard" part overdone in random relations. Tuned down. XR 8- added flag in rnfconductor to check extension is abelian (under GRH) 9- made Vec("pari") return ["p","a","r","i"] instead of ["pari"] 10- renamed library function gsize() to sizedigit() [conflict with gtk] XR 11- bnrstark: check if N0 is too large (=> computation impossible) IK 12- let readGEN() return NULL when EOF is met (was oo loop) 13- algorithm for zeta(), gamma() [initial GP code by HC] 14- improved rnfnormgroup() [reduce number of calls to isprincipal] IZ 15- flags for OS/2 build + use generic [pre|suf]fix for object files IZ 16- readline: hit_return() would not work after Esc-H extend online help recognition capabilities (Esc h/H, F1) 17- install the whole distribution (see ?12) 18- clean up in the bnrdisclist ray class group internal functions 19- naming scheme for development versions library: libpari-2.2.so.0.0.0 20- new Configure flags --share-prefix, --host 21- allow library functions to return NULL to the GP interpreter 22- let A^-1 and 1/A return a left inverse of A if it exists [A had to be square] 23- retuned factorization over Z[X] (+ "d-1 test" in naive recombination) 24- sort factorpadic() output Added 1- files README.WIN, config/[arch-osname|locatesymbol], doc/tex2mail.1 GN 2- Jebelean extended gcd + rational number reconstruction XR 3- new flag to rnfconductor (check extension is abelian) IZ 4- set of default colors (boldfg) 5- modular polynomial arithmetic ([uni|bi]variate resultant over Z, characteristic polynomial of algebraic numbers, nfgcd). [undocumented, experimental] 6- Pohlig-Hellman discrete log over Fp and nf.zk / pr BA 7- flag to galoissubcyclo (also output conductor) Changed 1- start using the new modular functions [polcompositum] BA 2- sqrtn, aka mpsqrtnmod (modular n-th root) uses Fp_shanks now Removed 1- obsolete undocumented functions oldidealinv, idealinv0 2- buggy function hnfhavas (hnflll is a better alternative) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.1.0 (released 17/11/2000): Fixed 1- non portable \e in es.c (pb with Sun cc) 2- ^C while prettyprinter in action --> gp crash 3- polresultant(a,b,x,2) --> b 4- exp(log(1.+x+y)) --> division by 0 TH 5- support cygwin version 1 6- TeXmacs interface 7- GP parser codes (sqrtint, idealprimedec) 8- trap (break loop) + NO readline + ^C at input time --> exit. 9- qfminim(,,,1) --> nonsensical result (typo) 10- SPARC + gcc-2.97 --> bug in addsmulsi (register reset too soon) 11- trapping allocatemem() could crash GP Changed 1- release PARI under the GNU GPL. Remove COPYRIGHT file, add COPYING =========================================================================== Done for version 2.0.21 (released 27/10/2000): Fixed 1- trap(gdiver2,a,1/0) trap(,a,1/0); trap(gdiver2,a,1/0) --> crash 2- lllgramintern could reduce a wrong lattice (after precision problems) XR 3- not enough GC in bezout() 4- use hnfmodid in ideallllred (work mod I \cap Z, not mod N(I)) IS 5- C++ compilation problem (compl is a C++ operator + casts) 6- factor(x^2 - 16810110*x + 62994937599000) --> division by 0 BA 7- Pocklington-Lehmer didn't stop factorisation after sqrt(N) 8- exp(log(Pi+x+y)*1.) --> SEGV (still gives an error, but a decent one) 9- factorff needed a prime field F_p where p was single precision 10- more digits than were significant could be printed (ex: precision(Pi,1)) 11- rnfisnorm didn't accept vectors on Zk basis as argument 12- [cygwin] fixed timer (always returned 0) IS 13- function prototypes (missing 'extern') 14- quadray(bnf, ...) didn't work when bnf.disc < 0. Could also return a relative equation over an intermediate field 15- deficient argument checks: asinh(2*x-1), agm(1,1-x), zetakinit(2*x-1), idealinv( , wrongtype), nfnewprec([2*x-1]), thueinit(non-monic or degree 1), lcm(x, 0) rnfidealmul(2*x-1,0), galoisfixedfield(2*x-1), qfbnupow(2*x-1, 0), polred([x,x]), bezout(Mod(x,x^2+1),0), numtoperm(-1,0), polred(nf), idealhnf(nf,y+z), factorpadic(,y,), nfelftreduce, rnfsteinitz, idealappr(not an nf, ...): SEGV 16- check variable numbers in algtobasis: nfalgtobasis(nfinit(P(y), x)) 17- factorcantor(x^4 - x^3 - 2*x - 1, 3) --> SEGV [typo!] 18- matsupplement(non-exact entries): fixed zero test (--> |x| < eps) 19- precision(I*1.) --> +oo (should be realprecision) 20- global() could check uninitialized memory 21- default(prettyprinter,"non-existent-file") ---> SIGPIPE and GP crash 22- gamma(1+O(3^2)+x) --> SIGFPE 23- typo in cxgamma (gamma(-4.1+Pi*I/2) --> exponent overflow) 24- Odos/paricfg.h defined PARIINFO incorrectly 25- inconsistenty t_POLMOD specification: Mod(x,y)+16 --> invalid object 26- bnfsunit error (impossible I-->S) when large class group 27- qfminim([;],...) / qfperfection([;]) --> SEGV 28- idealpow(,,,1) only reduced at the end, not after each multiplication 29- typo in zbrent (always used bisection) BA 30- cotan(x) wasn't accepted 31- wrong internal prototype for thetanullk (prec not taken into account) 32- various bugs in gphelp -detex (??\a) 33- trap + ^C + next would interrupt \r or read() IZ 34- external prettyprinter incompatible with colors 35- idealval used much larger numbers than necessary 36- sqrtint very inefficient (computed with full precision all along) 37- bnfisprincipal couldn't deal with some non-Galois fields 38- listcreate allowed creating longer lists than GP could later handle 39- INPUT colors was "leaking out" (affected status messages) 40- idealpowred(, power > 2^32) --> wrong result 41- when lines > 0, output driver didn't reset properly after overflow 42- huge precision losses in bnfinit computations (--> truncation error) 43- mateigen([1,2;3,4]) wouldn't work at default precision 44- leftover debugging statements in gphelp -to_pod 45- zeta(x) didn't always use the precision of x (contrary to the other trans. functions) 46- some Warnings from MIPSPro 7.2.1 compiler (contributed by PM) BA 47- gdiv(SER,POL) --> SEGV when POL has lgef < lg 48- check relative pol is monic before calling a rnf* function XR 49- cleaned up bnrL1 character computations XR 50- round 4: possible problems when increasing p-adic precision 51- stack corruption in mppgcd(huge t_FRAC, huge t_FRAC) BA 52- abs(t_SER) not allowed 53- nfdisc(non monic polynomial,, disc factorization) returned wrong answer 54- rnfidealnormrel(rnfinit(nfinit(y^2-2),x),2) --> SIGBUS 55- hardcoded paths in a few scripts (tex2mail, gpflog, make_vi_tags) Changed BA 1- more efficient quadratic Hensel lift 2- made ya optional in polinterpolate BA 3- more efficient factorff when pol belongs to Fp[X] (based on Fp_isom) 4- catch SIGFPE 5- made poltchebi efficient 6- write all real zeroes in exponential format (0e28) in format 'g' 7- bnfsunit: try to compute S-units even when the class group is large reduce class group generators 8- 0.e N now inputs a real 0 of decimal exponent N (was N-defaultprecision) 9- try to avoid errors due to precision loss (while computing archimedian components) in bnfnewprec/bnfmake 10- restore \o2 to previous meaning, use \o3 for alternate prettyprinter 11- normalized output of idealfactor (sort factors) 12- better TeXization (\left / \right) 13- allow color changes in error messages (when sample input is given) 14- format for bnf[9] (new isprincipal) 15- cleaned up isprincipal + bnfinit (small_norm, getfu, class_group_gen) XR 16- added flag for D>0 in quadhilbert: if non-zero, try more modulii 17- idealred: reduce huge ideals as Z-module first (using lllintpartial) 18- TeXmacs interface Added 1- library function zerovec 2- van Hoeij's algo. for modular factors recombination (factor over Z[X]) 3- algdep for p-adic numbers IZ 4- default values for 'colors' (light/dark) and 'prettyprinter' (tex2mail) 5- hnflll implementation (old one was preliminary and didn't work at all) GN 6- squfof implementation 7- numerical derivation XR 8- GP interface to hensel_lift functions (polhensellift) Removed 1- quadrayimagwei, preliminary implementation to quadray(D < 0) =========================================================================== Done for version 2.0.20.beta (released 07/06/2000): Fixed 1- gp -p1e -->SEGV 2- nfinit([x,1]) --> SEGV 3- ensure stack large enough [allocatemem(1) painted user in a corner] 4- make sure mpinl.o is linked (binaries may fail to build otherwise) 5- make sure sqrt(Mod(a,b)) terminates 6- memory leak with PARI pointers (issquare(4,&x)) 7- 'make clean' didn't affect doc 8- Configure didn't detect some SuperSparc + Linux combination 9- forprime (and friends) could crash when loop index was tampered with 10- trap(, -1, (1/0)) == -1 ---> -1 (analyseur not reset) XR 11- bnrstark initializations (incorrect when field not totally real) 12- member functions not very robust [e.g. ellinit(e,1).roots --> SEGV] 13- compiler warnings (gcc -O -Wall) 14- trap() not robust enough in library mode (nested handlers) 15- (x^2+3)/(2*x)*x --> invalid RFRAC 16- factorpadic result used too high a precision (+improved handling of nonmonic polynomials) 17- sqrt(Mod(0,1)) --> oo loop (+ improved a bit mpsqrtmod) 18- no GC in norml2 IZ 19- tex2mail had difficulties with rational functions 20- (rare) SIGBUS in quadclassunit(non-fundamental discriminant) 21- g()=f()==0 --> syntax error 22- } as last char of an input file (missing a final \n) caused problems 23- ??keyword@ didn't work properly (pattern modified between chapters) BA 24- bug in galconj.c:corediscpartial (could return half integer) 25- factorff and ffinit "not random enough" TH 26- Configure doesn't handle cygwin new directory structure CW 27- polsturm(x,0,1) = 1 (should be 0) 28- [library:] gentimer(3) didn't work PW 29- various bugs in qfminim(,,2) [bound was rounded up + stack corruption] 30- ellap(e,2) gave wrong result when 2 | e.disc 31- factorint: isprime() used on factors even within smallfact() GN 32- SEGV in mpqs main sieving routine (unsigned comparison) 33- prevent polredabs from keeping small vectors accumulating in a subfield Changed 1- renamed .DOC files to .txt (Explorer was getting confused...) 2- moved MANIFEST to config/MANIFEST IZ 3- meaning of flags > 1 in plothraw IZ 4- output of \x (a bit more verbose) 5- unified basic t_QFR routines (use exponential distance internally) Added BA 1- Pocklington-Lehmer primality prover BA 2- Fp_isom (library) BA 3- Mod(a,b)^(c/d) for a,b,c,d integers 4- flag to vecsort (decreasing order) BA 5- function sqrtn =========================================================================== Done for version 2.0.19.beta (released 17/03/2000): Fixed 1- buffer overflow in ploth (when extrema too large) 2- trap(,"") didn't work IS+BA 3- various fixes necessary for g++ 4- prototype inconsistency in level1.h (evalexpo/evalvalp) 5- trouble with pgcc -mk6 + variable k6 in elliptic.c HC 6- nfnewprec(bnf) could contain objects of low accuracy XR 7- check subgroup argument in bnrL1 8- typo in ideal_two_elt (oo loop) 9- pb with GNU as + preprocessor on Sparc 10- incorrect result in matdet over Z[1/n] (Gauss-Bareiss) [gdivexact] 11- solve(x=0,1,deriv(x)) --> SEGV 12- ??' --> weird error 13- generic SNF (polynomial entries) couldn't handle 0s on diagonal 14- incorrect handling of 0 ideals in some functions XR 15- typos in bnrL1 16- bad input not handled in rnfcharpoly() IZ 17- delay rounding in rectplot structures until plotting device 18- Mod(1,x) / matid(2) --> incorrect object 19- avoid getrusage on alpha (pb with gp-dyn) 20- incorrect file inclusions when using gas on Sparc (-->undefined symbols) 21- massive cancellations in zetak(nfz,) when current prec lower than nfz's XR 22- bnrstark(): fixed inconsistency between 32bit & 64bit versions + check maxprime() before starting the computation PW 23- hyperu bad input bug PW 24- intnum(x=1,2,0) --> oo loop 25- sin(x + y) --> error 26- next(i > 1) didn't work (part of the last loop could be executed) 27- typo in polrootspadic(p, 2, *) [singular case] Changed XR 1- bnrL1 now takes a congruence subgroup as second argument 2- allow some functions to modify bnf/bnr structures (matal + cycgen) CB 3- modified TeX macros for pdftex 4- have abs(t_COMPLEX) give an exact result if possible [abs(0*I) was 0.0] IS 5- improved generic gcc compilation flags 6- in qfbclassno(), compute in G^2 to get rid of cycli factors 7- improved bnrdisc/bnrconductor Added BA 1- function galoissubcyclo() BA 2- (for now internal) function inverseimage_mod_p() BA 3- optional arguments (vertical range) to plot() IZ 4- `ticks' on hi-res plots IZ 5- prettyprinter default and tex2mail file BA 6- new function Fq_ker =========================================================================== Done for version 2.0.18.beta (released 20/12/1999): Fixed 1- wrong method chosen in isinexactfield for 0 polynomials 2- stack corruption in sylvestermatrix(0,...): Mod(x,x)^-1 --> SEGV 3- garbage left on stack in ginv(1 / n) 4- typo: carreparfait --> gcarreparfait in nfiso0() 5- for (A=1, 2, A = -A) --> SEGV IZ 6- [gnuplot] couldn't set terminal as the first graphing operation DE 7- typo in kernel/sparcv7/level0.S: err --> pari_err 8- TeXmacs interface (use new protocol) 9- call simplify() before applying GP '==' and '!=' operators Ex: x;n;k;m; (n+m)==(k+1-k)*(n+m) was false. 10- sumdiv(N,...) required single precision N BA 11- bound problems in nfgaloisconj() 12- oo loop in do_agm() 13- "Warning: in Gauss lg(a)=1..." from isprincipalall0 14- specific error for precision problems with p-adic ell. curves IZ 15- ploth() plots are 1/2-pixel off BA 16- result was not always complete in nfgaloisconj() 17- type(1/y, RFRACN) --> SEGV + check compatibility before applying type() 18- made 'secure' safer. Confirm before write, prevent from changing 'help' 19- gettime() called the wrong timer(): was reset in debug mode 20- missing case (doubling) in apell1 21- gmod(x, mod) replaced by gmul(x, gmodulcp(gun,mod)) in poldivres [obscure bugs when dividing complicated polynomials with mixed polmods/intmods]. 22- Make sure result is a t_POL before doing a setvarn in caract2_i() 23- precision problems in ClxModulus (bnrstark()) [check leading term!=0] 24- elltors() could miss some points: determine needed precision first 25- clean up files after an error (not only under GP) 26- divisors(highly composite integer) --> "cryptic" error message 27- 'make clean' wasn't thorough 28- ellpointtoz(e, [0,0]) could correspond to the inverse point 29- "ideals not coprime" in rnfsteinitz BA 30- typo in Configure [CPP] (cc --> CC) BA 31- member functions for galoisinit 32- allowed power series in Mod(). Fixed cryptic error messages. 33- precision problems in zsigne 34- value of 'gzip' found by Configure overwritten in TOP_Make.SH XR 35- precision loss in Round 4 XR 36- ensure that fundamental unit is computed in quadray (if D > 0) XR 37- precision fixes in stark.c (inconsistencies 32/64 bit + early abort) 38- bug in P*Q for polynomials over (non prime) finite fields if Q is defined over the prime field XR 39- [stark.c]: bugs in RecCoeff3, reduced memory use in ComputeArtinNumber 40- core dump on oo recursion under GP 41- use appropriate precision in torselldoud (could be much too large) 42- removeprimes(addprimes) didn't work 43- (at least part of) numerical instability of LLL over R 44- f() = bug(x, &y) ---> syntax error XR 45- inefficiencies in ComputeArtinNumber for large modulus HC 46- no GC in dirmul 47- meaningless heap count for user functions 48- setrand(16);quadclassunit(48893) --> oo loop 49- rnfpolred(bnfinit(y^2+1),x) --> SEGV 50- float overflow in polroots (e.g polroots(x^3 + 2^1024*x + 1)) 51- charpoly(Mod(1,x^2+1)) --> SEGV 52- added GC in polsturm BA 53- bugs involving rarely used type combinations in generic operations 54- check x >= 0 in lllgramint(x) 55- in rnfdedekind: use rnfhermitemod, not rnfhermite (slooow) XR 56- updated factorpadic to use new Round 4 BA 57- nfgaloisconj: discrepancies between 32/64 bits architectures 58- random(1 << 32) could have 32 bits 59- missing newline in error messages on startup (reading .gprc) 60- silent codeword overflows (e.g. O(x^100000)) IZ 61- updated gnuplot support 62- x="a"; eval(x) --> error 63- general flakiness with buffer handling under GP (Ex: input() + allocatemem --> SEGV) 64- [1] == 2 --> error (instead of 0) 65- lngamma(-0.106) --> SEGV 66- quadray(-11,3) --> x^2 XR 67- typo in nilord2 (wrong value for modular reduction) 68- unsafe division t_SER / t_SER with clonable components 69- polroots(1E-28*I*x^2+1) --> bug in roots (conjugates) 70- typo in cxlngamma [ lngamma(-7.4927-0.418564*I) --> SEGV ] 71- polroots(polynomial of very small Norm wrt prec) behaved badly (SEGV) 72- polylog(1, Mod(1,2)) --> SEGV 73- zeta(22!/23) --> SEGV 74- not enough GC in rnformax 75- over-reactive 'secure' default (+ moved it later in default .gprc) 76- sqrt(Mod(15,y^2+1) + O(x^5)) --> SEGV BA 77- typo in isinexactfield 78- sum(x=1,10, expr1; seq) : seq silently ignored 79- ellan and elltaniyama didn't check their arguments 80- simplify(t_POLMOD) could create invalid objects (mod not a t_POL) 81- primes(-1) --> SEGV 82- addprimes(0) wasn't rejected 83- various inconsistant error bessages (e.g. factor("a")) 84- estimate for the precision of unit embeddings in isprincipalall 85- global("b") --> polvar corrupt 86- hnfmod --> hnfmodid whenever possible 87- check arguments in incgamc 88- non-rectangular matrices could trigger a SEGV (in error msg!) 89- qfminim(,,2) didn't like mixed t_REAL/ t_FRAC entries (typo) 90- inconsistant spacing after GP error messages 91- regrouped code between idealred and idealmin 92- prevent 'install' in secure mode DS 93- typo in bnfisnorm(,,flag > 1) [extraneous gtrans] 94- don't reset pariErr in err_recover() 95- highlevel.c had become dependent from gp.c XR 96- incorrect output of quadray(D,,1) when D>0 and rayclass is trivial 97- typo in lllall_trivial --> matkerint([0;0]) didn't work BA 98- incorrect object for gerepileupto in gscalcol 99- try to detect bad input (e.g quad. form not > 0) in (integral) LLL XR100- typo in nffactor ("keep the value of i") IS101- work around an obscure gcc bug (gcc-2.96, alpha-linux) in stark.c 102- rnfcharpoly(nfinit(y^2+1),1,1) --> SEGV BA103- tan(t_COMPLEX) gave bogus result BA104- trace([;]) --> SEGV Added IZ 1- [gnuplot] look up directory tree for gnuplot related files 2- improved on-line help wrt to defaults and ambiguities (? default/some_default, ? some_default) 3- library functions gentimer, genmsgtimer, get_timer HC 4- optional argument to direuler (length of result) 5- low-level kernel function for integer squarings (twice faster) 6- error trapping in library mode and under GP 7- break loop to investigate errors under GP 8- "sprintf-rounding" under GP IZ 9- string justification in high-res plot IZ 10- bit operations ( bit[ and | or | neg | negimply | xor ] ) XR 11- add new flag value in bnrstark/quadray: try to find a better modulus 12- Configure flags to indicate where gmp/readline library/headers are to be found Changed 1- default binary produced by Configure -g is now static 2- improved the heuristics in ellisoncurve HC 3- extend the range of direuler (maxp was 2^16) 4- trial divide by the "private primes" before the primality tests 5- don't double stack automatically 6- disable ff_poltype correction (for lack of decent finite fields) in gmul 7- slight optimization to hnf / hnfmod (skip zeroes) XR 8- nfsqff: choose a prime ideal with few factors + better heuristic bound IS 9- default CFLAGS on linux-alpha 10- improved factorcantor / factorff 11- default multiprecision kernel is GMP if the library is installed Removed 1- sunview "support" (didn't work, hard to test, X11 is a better standard) =========================================================================== Done for version 2.0.17.beta (released 24/09/1999): Fixed XR 1- typo in zarchstar (result possibly incorrect when more than two places) 2- check_unit not severe enough ([;] --> session could die !) 3- wrong error message when using global var as argument to user function 4- typo in boundfact(t_FRAC) --> SEGV 5- buchall: don't compute xarch if not needed 6- remove limit on string size + silent overflow, e.g Str(10^5000) 7- "break status" not checked often enough: [break, 1] --> SEGV 8- rewrote errcontext (use print_text to fit messages on terminal) BD 9- added workarounds against some MSVC annoyances (Windows version) IZ 10- typo in Gnuplot.h 11- typo in Configure ("2>&1 >/dev/null" replaced by ">/dev/null 2>&1") 12- simplified incgam[23] + typo (mulrr --> gmul) IZ 13- typo in LD_LIBRARY_PATH setting (benches) 14- inconsistency in gadd(0., FRAC) (should give 0. if FRAC small enough) 15- libraries/headers ordering inconsistent in Configure (report: IZ and KO) 16- typo in ff_poltype [symptom: (Mod(1, y^2 + 1)*x + 1)*x --> garbage] 17- qfbprimeform(4, [2]) --> SEGV 18- overflow in factorcantor(2*x^3+3*x^2+x, 2^31-1) 19- memory corruption in apell1 + no garbage collection, rewrote the function to parallel apell0, replaced hashing by sorting, use Montgomery's trick, removed the p < 10^25 limit IS 20- cc -64 warning in mp.c:vals() 21- bad free in gp_expand_path 22- extract([;], "..") --> SEGV 23- not enough GC in hnfall 24- recover gracefully when precision too low in lindep/algdep IS 25- cleaned up unused variables, fixed some missing casts 26- algdep(x) --> undefined behavior when x exact. Replace by decimal approximation IS 27- C++ keywords (new, class) occurred as variable names 28- arguments of ideallistarch not checked 29- Mod(t_FRAC or t_PADIC, t_INT) --> garbage 30- gcmp1(t_REAL) always false: polylog(2, 1) --> error 31- (spurious) compiler warnings about variables used before initialization 32- memory (possibly) freed twice in buchall + unsafe allocation of matcopy 33- online help for matsnf not updated 34- rnfequation() didn't check its arguments correctly 35- removed spurious special case in compute_class_number() 36- typo in the compatibility macros mpabsz / mpnegz (missing ;) 37- "lost pointers in gerepile" in bnfisprincipal(Q, ...) 38- bnfisprincipal(..., Pol(0)) accepted 39- [Configure] Makefile name didn't necessarily match object directory 40- zetak(nfz, integer + 0.) --> stack corruption 41- for(i=1, ..., zetak(nfz, any complex number)) went slower and slower 42- poltchebi(.,y), pollegendre(.,y) didn't work 43- confusing "array index out of allowed range" message (e.g [1-0]) IS 44- fixed obscure compiler optimization bugs in smithall() and eint1() GN 45- weird results in ellisoncurve() due to misguided precision heuristics 46- typo in forvec([],...): readexpr() --> readseq() 47- check arguments in ploth() XR 48- rare bug in bnrL1 (wrong value!) 49- precision problems in polredabs 50- division by 0 in rnfordmax [typo in mymod()] 51- removed all dangerous occurences of constpi/consteuler (cf 41-) 52- typo in det() [forgot to divide by a pivot] 53- divide by 0 error in lllgramintern (precision problem) 54- suminf(k=1,suminf(j=1,.067^(k+j)/k^4/(k+j))) ran forever 55- factor(2*x + 2) --> [2*x + 2, 1] (instead of stripping the content) 56- (ultra-rare) stack corruption in mpqs_solve_linear_system() 57- rl_refresh_line() prototype changed across readline's versions 58- incorrect handling of INTMODs modulo integers of different magnitude XR 59- matsnf(3 x 3 matrix, 4) --> SEGV 60- some pathological bnfinit() computations (strive to get maximal rank) XR 61- precision problems in nfsqff() [increase precision for T2-norm bound] 62- time wasted checking generators of the form [x,0,...,0] in polredabs 63- variables deleted too late in freeall() Changed XR 1- modulus choice in bnrstark 2- make sure that addii(x,y) returns gzero, not icopy(gzero) 3- cutoff in ellap to use Jacobi sums (457 --> 100) 4- pariputsf("%Z",(long)g): removed the casts (not needed) 5- cleaned up hnfspec 6- look for at least MIN_EXTRA extra relations in buchall 7- simplified calling interface to hnfspec/add 8 Used hnfspec in bnfsunit, changed the way S-units are found 9- output of bnfsunit modified (removed res[3], made res[2] suitable for hnfadd) 10- listput and listinsert now return the inserted element, not the list 11- check_break_status rewritten: was very inefficient 12- Used parser code DG whenever it was possible (moved reorder to init.c) 13- faster isunit() 14- added GC in expr() 15- buchall(): increase subfactorbase without starting over GN 16- minor tuning in pollardbrent() for huge integers (call ECM sooner) 17- renamed directories dos -> Odos, o.xxx.xxx --> Oxxx. Moved win32/* --> Odos OR 18- new version of pari.el XR 19- new modular round 4 implementation (nilord2) BA 20- improved algorithms in galconj.c Added 1- an optional argument to next() 2- MANIFEST YU 3- support for FreeBSD ELF binary format 4- file CVS.DOC 5- support for Windows CE (Nigel Smart + coworkers) BA 6- functions related to Galois theory: galoisinit, galoisfixedfield, etc 7- [library] trivial function realun() Removed 1- #define HIGHBITM1 (useless) 2- files config/tar_[include | exclude] (obsoleted by MANIFEST) =========================================================================== Done for version 2.0.16.beta (released 29/06/1999): Fixed 1- paricfg.tex (needed to compile INSTALL.tex) missing if Configure is not run. Added a test in parimacro.tex 2- non-portable casts in galconj.c 3- 64-bit graph benches (extra spaces) IZ 4- typos in plotgnuplot.c 5- unnecessary plothsizes in "graph" bench (fails if no X server) 6- typo in ff_poltype IZ 7- check rectwindow in rectcopy and rectclip IZ 8- /opt/local/lib missing in Configure's library path IZ 9- [Math::Pari] needs pariErr->die _before_ pariErr->flush IZ 10- wrong valence code for plotcolor, plotclip IS 11- obscure inlining bug (pgcc 1.1.3 -O3) in stark.c:ComputeKernel0() 12- gcc -E doesn't define __GNUC__. Add it explicitly to KERNELCPPFLAGS 13- whatnow(sigmak) didn't tell the arguments have been swapped 14- [1]~ * [[1]] --> SEGV 15- lim=(av+ x * bot) >> y can overflow if large addresses are available (e.g Linux...). Use lim_stack() instead 16- algdep(I,1), lindep([I,1]) entered an oo loop 17- removed the maxHastad (= 50) limit in algdep/lindep 18- typo in polrootspadic(,,1) --> SEGV 19- GC not frequent enough in idealval 20- in split_ideal (isprincipal), LLL-reduce first if ideal is big 21- factorpadic(,,,1) didn't work anymore 22- round 2 (= nfbasis(,2)) used too much memory 23- idealval did not accept all types of ideals GN 24- unsafe stack handling in auxdecomp 25- polroots[mod|padic] returned a t_VEC, not a t_COL (as polroots) 26- check coeffs of polynomials with coeffs in nf (rnf* functions) 27- typos in polredabs0 (get_Bnf + nf_RAW in storeallpols) BA 28- nfgaloisapply could forget to clean up the stack 29- typo in gp_rl.c (rl_save_prompt <--> rl_restore_prompt) DE 30- arch="sun4" non reconnu par Configure 31- uninitialized variable (prec) in quadhilbertimag IS 32- pari.el.in was not updated when gphelp was moved from miscdir to bindir 33- rnfkummer(bnrinit(bnfinit(y^2-y-1),101,1),[1,0;0,2]) --> gerepile error IZ 34- update gnuplot interface a) Strings were put too low in gnuplot terminal; b) Allow setting of output file sizes, as in plotterm("gif=300,200"); c) Allow querying of possible output terminals, via plotterm("?") d) Update to newer Gnuplot-interface-layer (Gnuplot.h) allows compilation on Linux (stdout was bad as an initializer), corrects bugs in processing of terminal options 35- in buchall, allow minfsb to increase before doubling cbach (bnfinit(x^4+5*239*x^2+5*239^2) couldn't be computed) 36- bnfnewprec can't handle bnf = bnfinit(,2) --> SEGV (now, error) 37- typo in pseudorem (didn't recognize 0 properly) GH 38- weird bugs in thue() on alpha: typo int <--> long in thue.c 39- bnrisconductor assumed moduli had small norm (< VERYBIGINT) 40- bnfnewprec didn't accept imaginary quadratic fields ("missing units") 41- inefficiency in zarchstar (VERYBIGINT --> BIGINT) (rnfconductor(bnfinit(y^3+972*y-12),x^2+x+1) ran forever) 42- too much memory used in rnfordmax (+ removed some inefficiencies) 43- try to recover in nffactormod if input not prime (SEGV) 44- SEGV in nffactormod if degree(pol) > 100 45- factornf(p(x), q(x)) was accepted (and produced incorrect objects) 46- nfisincl / nfisiso made use of the bug above 47- subgrouplist(bnr) with trivial ray class group --> SEGV 48- background color was assumed to be "white" (by gphelp and gp) Made it "transparent" by default 49- pages shifted by 1 in User's Manual's table of contents 50- Mod(x, x^2+1) + x return Mod(2*x, x^2+1), not x + Mod(x,x^2+1) (fixed gadd, gmul, gdiv) 51- for certain flag combinations buchrayall unsuitable for gerepileupto (+ cleaned up the code) 52- ^C in smithclean corrupt existing objects 53- silent overflow in qfbhclasso 54- nfreducemodpr didn't check its arguments 55- confusing error messages when precision too low in initell 56- polx[0] modified in nfsubfields(P(y)) 57- various memory optimizations in bnrstark 58- incorrect debugging output in calc_bloc (at \g6) 59- rare memory corruption when garbage collecting in mppgcd 60- type t_STR not treated correctly in changevar 61- C-long overflow in ellan 62- memory use in the incgam* functions 63- bad input bug: qfperfection(indefinite matrix) --> SEGV 64- mateigen dropped some eigenvectors when precision was too low Changed 1- err() --> parierr() [conflict with system library in Redhat 6.0] 2- use Doud's algorithm in elltors [initial patch: HC] 3- new (internal) function get_mul_table (for nfinit, padicff) 4- disable LD_LIBRARY_PATH before running benches 5- strtoGEN() --> strtoGENstr() + added flag 6- optimized stack usage in pollardbrent (in place) 7- don't try to compute units in buchrayall if bnf doesn't contain them 8- simplified misc/gprc.* (esp. colors) 9- use C long to keep track of exponent in regula 10- src/kernel/sparcv7/level0.s --> level0.S + include preprocessing stuff 11- extended matsnf flags: immediate cleanup (backward compatible) 12- arguments swapped in veceint1 13- allow @ markers (??keyword@) in extended help (was apropos only) 14- do all computations in mppgcd in place (as in Changed-6) OR 15- new pari.el (cf emacs/pariemacs.txt) 16- search multiple lines in apropos extended help (???key) Removed 1- make test duplicated the "make bench" computations. Removed the test and dotest targets 2 -veceint1() function. Can be reached in library mode or using a flag to eint1 Added 1- default 'secure' 2- optional flag to Str() 3- expand environment variables in filenames 4- TODO file 5- man page for gphelp 6- Trivia section in the pari/gp man page =========================================================================== Done for version 2.0.15.beta (released 21/05/1999): Fixed 1- ?? (TeX mode) didn't work anymore 2- rl_save_prompt incorrectly detected on a.out systems 3- allow extra_relation() (bnfclassunit) to abort 4- allow cbach to double once more before triggering PLEASE REPORT (introduced in 2.0.14) 5- check for non-monic pol in smallbuchinit 6- vecex --> SEGV on some Linux systems (typo in match_concat) 7- exceedingly rare but possible overflow in forvec(, flag == 1) 8- factorff(x^7-3,3,y^3+2) --> SEGV DC 9- ghpelp doesn't exit when problems arise in TeX processing 10- made idealprimedec random again (also use det_mod_P_n to compute norm) 11- inefficiencies in nfeltval (computing norm is a waste of time) 12- did same prime twice when collecting garbage in modulargcd (=> error) 13- ffinit(huge prime,) output a weird error message 14- highly inefficient memory use in nfsubfields IS 15- [cygwin] typo in Makefile generation 16- file leak in mpqs (COMB) 17- allow prime_to_ideal to be called with a t_INT argument (for quadray) 18- typo in nf_shanks (calling Fp_shanks with wrong parameters) 19- polun (possibly) destroyed in bnrstark IS 20- keep logfile in synch with screen output 21- reset DEBUGLEVEL correctly on ^C (was sometimes set to 0) 22- bnrstark does not require anymore the modulus to be the conductor 23- check bnrstark's arguments in the right order (bnrstark(1,0) --> SEGV) 24- inefficiencies in idealval (removed element_mulh) 25- idealadd unsuitable for gerepileupto HC 26- quadray should work in all cases now and give better polynomials XR 27- bnrstark should return smaller polynomials 28- very inefficient pseudo-remainder routine (psres) 29- forstep(x=a,b, 1/2, ...) --> SEGV (signe -> gsigne) IS 30- [Cygwin] Configure fix (use $HOSTTYPE instead of uname -m) 31- polcoeff(a*x^-1*y^-1+O(x^2)+O(y^2),-1,y) --> 0 HC 32- (false) accuracy problem in mpsc1 ("truncation error") 33- don't use mpqs_diffptr in mpqs_find_k, set it in mpqs_create_FB 34- (very rare) "precision loss in truncation" in buchall 35- C-long overflow in zarchstar 36- C-long overflow in zprimestar 37- (old versions of) GNU as not recognized correctly BA 38- ?? in TeX mode could not process some sections (missing macros) 39- factor(polynomial with t_PADIC coeffs) didn't work (factorpadic assumed coeffs were integers) 40- T=[1,x; x,1]; charpoly(T,Z) produced object with wrong variable ordering 41- polrootsmod(x^n,p) could corrupt the stack 42- Warnings/errors from HPUX and AIX native compilers OR 43- many problems in the emacs interface pari.el (introduced in 2.0.14) 44- factorpadic treated only monic polynomials 45- gphelp TeX mode (use general macros instead of a specific file) 46- under readline, input lines of length > 2048 could trigger SEGV 47- more thorough check in checkbid (accepted prime ideals->SEGV) GH 48- possible stack corruption in thueinit(totally real field) XR 49- various problems in bnrstark (oo loop in fincke_pohst) 50- in doc/Makefile: removed GNU-style make macros + put a missing TAB 51- sloppy garbage collecting in hnfperm 52- HPUX+cc: work around a compiler bug (wr_float) 53- warnings in make_emacs_tags (perl5.005) 54- Configure --static should not disable install() 55- in rare cases reduction not complete in lllgramall (off-by-1 error) 56- addshiftw (polynomial case) could produce non-normalized polynomials 57- take content into account in modulargcd as in srgcd (not normalized) GH 58- uninitialized variable in poldisc0 (purify warning) 59- inefficiencies in round 4: modular computations [more needed!] (starting from a patch by DF+XR) GN 60- lllintpartial did not output the right matrix 61- huge memory leaks in bnrstark 62- signed int overflow in allocatemem 63- parisize (local to gp/gp.c) not updated properly 64- *sol not properly initialized in subresall 65- in idealpowred, check whether |n| < 16, not n < 16 (would slow down bnfinit a lot when class number is large) 66- polrootsmod(x^6-10,25) --> SEGV (now error message) 67- SEGV when renormalizing zero series in gdiv XR 68- unify precision choice in bnrstark (4 different formulae used...) GN 69- oo loop in mpqs (64bits machines + harsh compiler) when more factors were found than were hoped for (1 <--> 1L) GN 70- SIGFPE in buchall (double didn't fit in 32-bit integer) 71- also check sign in real0 (internal: called by gauss_pivot) 72- use current realprecision in plot() (was fixed: 28 digits) 73- memory use in subgrouplist(bnr) 74- in bnfcertify: "Too many iterations in isprincipal" 75- auto detect precision in quadhilbertimag ("overflow in I+R") 76- error message numbers in src/kernel/m68k/mp.s 77- polroots(x^3-x-422!) --> "impossible R-> dbl conversion" 78- not enough modular reductions in buchrayall (bnrinit) 79- technical argument in quadclassunit not read correctly 80- factor(x^3-1 + 0.*I) --> gerepile error GN 81- gp -p (close to a p^2) --> p possibly missing in the prime table 82- until narrow class group in quadclassunit is implemented, non-zero flag raises an error IZ 83- some code numbers in functions_basic (for Math::Pari) 84- precision problem in initell (AGM) 85- "impossible assignment I-->S" in ellrootno 86- missing break in poltype (factor) Changed 1- ?? (no arguments) opens the users'manual in xdvi 2- print readline version in header on startup 3- compute multiplication table first in element_mulvec[row] 4- nf[5][7] is now stored in two-element form (faster ideal inversion) 5- install gphelp in BINDIR, not MISCDIR 6- simplified output of trivial matrices 7- replaced square_free_factorization by mysquare_free_factorization 8- call LLL before using idealtwoelt GH 9- choose random elements in idealtwoelt, and allow bigger ones in two_elt 10- cleaned up lllgramall/lllgramintern + give quality ratio as argument 11- in rnflllgram, try to survive lllgram errors (findmin) 12- simplified rnfpolredabs (simple interface to polredabs). Should be much more efficient 13- replace many gdiv by 1 ginv + many gmul in sqred1intern 14- optimized polredabs (always do the initial polred now: it is for free) 15- more efficient ideal multiplication in random_relation (bnfinit) 16- library names nfhermite[mod|basis] <--> nfhnf[mod|basis] 17- subgrouplist function (use Birkhoff algorithm) 18- improve recovery in lllgramintern 19- improved checkgenerator in polredabs (look directly for double roots) 20- for consistency, return S-units in t_POL format (as fundamental units) IZ 21- revamp gnuplot autodetection by Configure BA 22- nfgaloisconj(nf, 4) uses Allombert's algorithm instead of Kluners's Added 1- install-doc target 2- make install makes a symlink pari.1 --> gp.1 3- ??tutorial/refcard opens tutorial/refcard.dvi in xdvi 4- posibility to extract the complement in vecextract HC 5- Ducos's subresultant algorithm (polresultant(,,2)) HC 6- accept a "vector of steps" in forstep 7- examples/classno.gp XR 8- new function bnrL1 9- new function gdivexact (used in subresultant, Gauss-Bareiss...) 10- new function bnfnewprec 11- optional argument to \l and \e shortcut 12- nfinit,polred[abs] accept input of the form [pol, HNF basis for Z_K] 13- q-Pascal triangle (matpascal(n,q)) 14- file src/basemath/subgroup.c, new function forsubgroup() IZ 15- function plotclip IZ 16- new file examples/taylor.gp (nice example for plotclip) BA 17- new file galconj.c =========================================================================== Done for version 2.0.14.alpha (released 05/03/1999): Fixed 1- factormod(2*x+1, 2) --> "factor for general pol. not implemented" IK 2- gphelp could leak temporary files BD 3- for native Win32 build: buffer overflow in get_home, incomplete paricfg.h, typo in try_pipe (#endif misplaced) 4- nfsubfields: could miss subfields if index > 1 5- removed 3 useless setrand(1) in subfields.c 6- rare and obscure memory bug in inverseimage (lost pointers in gerepile) 7- memory bug in factorpadic4 (prime not copied before result) 8- memory consumption in round2 (allbase) GT 9- m68k version: duplicate symbols from mp.c IS 10- Cygwin: in mpqs.c, open files in binary mode (otherwise fseek goes crazy) 11- bnfisprincipal().gen gives the expected answer IZ 12- signatures for Math::Pari in highlvl.c / init.c + GNUPLOT set-output-file problem 13- if we think readline needs libiberty, check whether it's installed first DB 14- PowerMac: header inclusion in highlvl.c, lround def'd in system headers XR 15- rnfkummer makes sure to return an integer XR 16- rnfconductor accepts polynomials with rational coeffs 17- polredabs + internal precision change --> nfnewprec forgets nf[5][1] 18- don't log lines twice when pariecho is set 19- glitches in content() (e.g content("a") --> SEGV) 20- get_sep(2) reacted incorrectly to empty strings 21- rootmod could destroy its argument 22- Fp_pow_mod_pol(x, 1,...) should return gcopy(x), not x 23- galoisconj1 computed wrongly the precision needed (+ prototype change) IZ 24- remove __OPTIMIZE__ dependence (define GCC_INLINE instead) 25- off-by-1 error in apell1 26- misleading error message in minimalexponent() XR 27- in nffactor, forgot to update precision when increasing exponent (+ various typos) 28- sparc + non-gcc --> kernel2 possibly not included: compilation failure 29- when echo is set don't print prompt if line is empty 30- ellpointtoz sometimes return -x instead of x 31- gp -b 1 --> hangs gp DE 32- many glitches in manual 33- mathnf(x, 3) when x hasn't maximal rank (SEGV) 34- differences in buchall 32bit/64bit (PRECREG too high. bnfinit(x^13-6)) 35- various inefficiencies in nfshanks ("module too large in nfshanks") 36- memory leak in buchall (= bnf*) 37- "not a definite matrix in lllgram" after a call to bnf* 38- typo in factorff(x^3+2,3,y^2+1) --> SEGV 39- [internal] missing tags (e.g zprimestar) after make ctags 40- idealstar(*, big prime) --> cryptic error msg (more tolerant now) 41- have Mod(0,1)^-1 return Mod(0,1) (fixes znstar(prime)) 42- ginv(-1/2) --> 2 43- heap leak when using local() 44- overflow in addssmod 45- changed the syntax of round() 46- sqrt(1. + O(x)) --> oo recursion IZ 47- don't create GP variables when expanding strings 48- internal variable 'parisize' not properly updated after allocatemem() IS 49- config/display didn't work properly with ActivePerl IS 50- Configure didn't handle most recent Cygwin 51- polinterpolate([],[]) --> SEGV 52- adapted gp_rl.c to readline 4.0 53- glitches in whatnow database (new file src/gp/whatnow.c) 54- all warnings from gcc 2.8.1 55- uninitialized tetpil in gscal() (bnfreg(x^2+1)) 56- precision problems in polgalois (degree > 7) 57- config/locatelib prompted a lot of useless work (returning too many libraries) and could pick up the wrong library 58- very rare bug in nfbasis (discriminant ok, but wrong basis) 59- quadclassunit: make sure sub factor base is big enough (oo loop) 60- more flexible "colors" default (initial work IZ) Changed 1- x.fu outputs polynomials (as all bnf* functions), not polmods 2- improved mppgcd (including vali) 3- improved division vector/scalar 4- \x to print a * in front of out-of-stack moduli (t_[INT|POL]MOD) IZ 5- better commandline usage message 6- don't buffer log messages going to pari.log 7- accept [nf, t_POLMOD] where nf is expected 8- poldisc() and quadgen() accept an optional variable name 9- when defining user function check for duplicate variable names 10- [internal] is_entry always uses function_hash (use is_entry_intern) OR 11- pari.el updated (see emacs/pariemacs.txt) 12- removed shiftl from lgcdii 13- use roots_to_pol in polgalois 14- precision heuristic in gauss_get_prec 15- cleaned up lllall and lllgramall 16- sort the output of nffactor, nfroots, factorff and factornf 17- nfgaloisconj now guaranteed to find all conjugates (use nffactor) 18- Removed flag 1 in nfisisom/nfisincl: function checks its arguments, and uses the best algorithm (both guaranteed complete). Changed the names (nfiso/nfincl) in library mode to match GP usage 19- gerepile(ltop,lbot,0) no longer returns ltop - lbot 20- improved floor and round(t_FRAC) 21- removed some duplicate code from nffactor 22- passing a pointer to GEN in a GP funciton now explicitly requires an & IZ 23- more verbose error messages for online help 24- increased a bit poltschirnaus's period 25- DOS version: don't use more for external help 26- cleaned up buchall code 27- removed unnecessary gres from polarit1.c:to_fq() Added 1- apropos command in gphelp (-k switch), ??? under GP 2- function global() 3- function gp_variable to use sums, etc in library mode 4- [internal] new functions mulmat_real 5- new functions gerepileupto[leaf|int] 6- function znlog() IZ 7- added default(color, "yes" / "no") 8- --static flag to Configure GH 9- inline alpha assembler (gcc specific) Removed 1- isinclfast/isisomfast 2- rounderror =========================================================================== Done for version 2.0.13 alpha (released 14/12/98): Fixed IK 1- Configure hangs on FreeBSD systems RD 2- Roland's patch (2.0.11: Fixed- 42) had been incorrectly applied 3- stack corruption in glcm (if operands > 10^155) 4- index wrap-around in polsubcyclo (n > sqrt(2^31)) 5- incorrect placement of strings in psdraw 6- memory corruption in rhoimag0 7- fix up memory debug mode (\gm) when switching to alternate stack 8- memory corruption (new_chunk + mulii) in gmul/gdiv (t_FRAC) 9- escape chars in GP strings sometimes parsed twice (e.g Str("\\") --> "") 10- nfinit(x^18+16) --> impossible inverse mod(0,2) (bug in eltppm() introduced in 2.0.12) 11- weird SEGVs due to variable handling (changed the 'bloc' structure) 12- moved highlvl.c to src/gp (libpari was missing symbols from plotport) 13- polcyclo ignored its second argument (introduced in 2.0.12) TP 14- minor fixes in paridecl.h (poldivres, gredsp: C++ compiler exits) HC 15- still sign problems in resultant (see 2.0.12: Fixed-58) 16- (Solaris):GNU ld doesn't like empty object files: remove kernel2.o IZ 17- make bench forgot to treat the install() BUG in a special way 18- factor(x^2 + I) --> SEGV (also with t_QUADs) 19- factornf(x^3+1,y^2-1) --> stack doubling (now output error msg) IZ 20- for Math::Pari fix valence of factormod() IZ 21- outfile rename pari_outfile (conflict with gnuplot headers) 22- DEBUGLEVEL could be modified and not reset upon interrupt IK 23- make perl -wc gphelp happy 24- incorrect use of gettime() in the library (nffactor) --> wrong timings (in particular for the 'nfield' bench) 25- polred/polredabs used different types for output. Made both t_VEC 26- remove duplicate polynomials in polredabs(x,4) and polred XR 27- precision fixes in modules/[nffactor|stark].c 28- in compatible mode, \precision didn't work anymore 29- typo in Round4 (case "p small" and "p huge" were swapped) 30- incorrect prototype for conductor in compatible mode 31- factor((x^2-1)/2) --> SEGV (factpol assumed integer entries) 32- memory usage in Round2: nfbasis(*, 2) (also cleared some inefficiencies) IK 33- typo in primitive_pol_to_monic 34- deplin did not check its arguments 35- quadray() assumed variable "y" was not in use Changed 1- glength() returns a C-long integer 2- in hnfmodid(x,d) reduce mod d immediately 3- allow vector(n), and matrix(n,m) (filled with 0s) 4- under GP, wait for input if line ends with '=' (cf \) 5- wait for input when a line ends with an '=' sign 6- modified extended help to (potentially) search the whole manual 7- in nfdisc, specific error message if discriminant is 0 8- use divide_conquer_prod() in factorback() IZ 9- in test suite, add setrand(1) in front of poltschirnaus IZ 10- M-( bound by default IZ 11- improved gnuplot support 12- improved gcmp[1|_1](t_REAL) OR 13- new pari.el (see emacs/pariemacs.txt) Added 1- members e, f, p, gen for prime ideals 2- mathnf([M, M2]) computes mathnf(M), updating M2 (equivalent to v=mathnf(M,1) then M2*v[2], but much faster if M2 is small or over a finite field) 3- local() keyword for user function definitions in GP IZ 4- new functions plotfile(), plotpointsize() IZ 5- splines for ploth (flag 256) Removed 1- \k metacommand =========================================================================== Done for version 2.0.12 alpha (released 06/11/98): Fixed 1- GNU as incorrectly treated by Configure GN 2- various fixes in mpqs.c (incl. file descriptor leak) GN 3- [From 2.0.11- Fixed 14] floating point exponents: 1E1 --> possibly 0.1 4- 1 % Pol(2) still wasn't right [cf 2.0.11- Fixed 31] 5- src/test/dotest for DOS boxes (running sh) 6- removed unreachable err() in factor() 7- system() is defined under EMX, so make it available for DOS 8- possibly use / as path separator under EMX, check COMSPEC and EMXSHELL 9- compatible = 3 downcased all the following lines in gprc and caused incorrect behaviour of preprocessing statements 10- unified default commands + better checks (e.g: default(log,0)->SEGV) 11- memory leak in gp_main_loop: bufferlisit wasn't reset on error 12- gptimer() not initialized properly if ^C was first command 13- extra space (sometimes) output by command line completion in DOS version 14- modifying histsize could corrupt the history stack 15- incorrect error messages in gsqr 16- not enough garbage collection in rootmod (polgcdnun) TP 17- compilation using cc -64 on 64-bit SGI IS+GN 18- "(hit return to continue)" message did not flush stdin GN 19- ECM rewrite 20- incorect absi_cmp in buch3.c 21- useless garbage collecting in sqred2 22- O(1)^(1/2) --> SEGV 23- forvec(i=[],...) --> SEGV GN 24- deriv(x*y, y) --> 0 GN 25- inefficient GC in ispseudoprime() 26- fixed some (not all) compiler warnings (char * --> unsigned char *) 27- exp(too large number) now gives a meaningful error message AW 28- getrusage still not detected on FreeBSD 2.2.5 GN 29- off by 1 error in initprimes() (--> not enough calculated primes) 30- inefficiencies in factor(t_POL) HC 31- bug in rnfelementabstorel for Mod(scalar, t_POL) HC 32- typo in gaussmoduloall 33- idealred(principal ideal) always returned an archimedean part HC 34- idealpowprime wrong for negative powers 35- typo in binomial(n,k) (wrong answer if n<=k) 36- online help for polinterpolate 37- incorrect garbage collecting in quickmulii/quicksqri 38- reformatted the output in test mode (gp -test) 39- polroots((x-7)*(x-8)*(x+16)) took far too much time 40- ellap assumed ell was given in characteristic 0 IZ 41- outlook of plot function (better labels, better choice of chars) RD 42- when factoring over a non prime finite field and found a p-th power, forgot about Frobenius GN 43- rare memory bug in ellfacteur 44- gscalmat was not suitable for gerepileupto 45- polredabs(,2) didn't handle non-monic polynomials 46- check for various overflows (x ^ 1000000, etc.) 47- printtex(I) --> missing closing brace 48- setisset() did not check that elements were strings 49- typo in gdiv(t_POLMOD, t_POLMOD) with different variables KO 50- missing ; in level1.h (Windows specific code) 51- forprime(p=0,10,) indeed started at p=0 52- (cf 2.0.11 Fixed-1) put back 3 cgeti in galois.c (were necessary) 53- factorpadic could overstate the precision of the result 54- (very) rare memory corruption in allhnfmod (when cleaning up) PM 55- prototypes in paridecl.h (fussy IRIX compiler), cc -64 in MACHINES 56- factormod implemented for all primes (p = 2 and p > 2^31 called factorcantor which was much slower) 57- check for unsuitable input in [factor|roots] (SEGV for multivar. pol) 58- polresultant sometimes gave the wrong sign 59- extraneous space in err(impl,"") (= "sorry,... not implemented") 60- aliases treated incorrectly during error recovery (--> obscure bugs) 61- obscure bug when normalizing rational functions with real coeffs (corrected content()) Changed 1- paricfg.h in dos and win32 extracted by Configure before the release (to get version number right) 2- GPRC logic: try $GPRC, then look in $HOME, /etc (/ and C:/ under EMX) 3- make sure the output of pari_unique_filename() doesn't exist already 4- use a stack of files to gracefully handle errors/interrupts without leaking file descriptors 5- replaced fixed-size buffers by dynamically allocated ones (es.c/gp.c) 6- rename INSTALL.QUICK --> INSTALL.DOC (updated) Changelog --> CHANGES (looks better under DOS) 7- mention ?12 in the header 8- use ; (instead of :) as PATH separator under DOS, OS/2 or Windows (for drive letter) GN 9- ECM tunings 10- check for overflow in cget* (instead of silent wraparound) 11- gp_main_loop cut into (improved) pieces 13- simplified normalizepol 14- Warn when trying to replace an existing function with install (previously error) 15- new function mpcopy. replaced some inlined function (rcopy, absi, absr, negi, negr) by compatibility macros 16- gphelp now uses GPDOCDIR and GPTMPDIR 17- improved rational arithmetic by computing smaller gcds (gredsp removed) GN 18- improvements in MPQS (use less memory, count relations precisely) 19- text-mode (non-TeX) extended help printed screen by screen 20- retuned integer multiplication, and made polkaramul the default polynomial multiplication XR 21- stark.c rewritten IZ 22- updated the pariperl interface 23- improved handling of t_INTMODs (less GC) 24- improved (a lot) factoring/root finding for intmod polynomials 25- modified poldivres to avoid computing remainder when useless 26- removed inefficient shiftl/shiftlr from the kernel 27- from the same sources, Configure can now simultaneously run on different architectures 28- polynomial factorizer now sorts the factors (increasing degree) 29- ?an_obsolete_function now calls whatnow 30- .pol operates also on t_POLMOD 31- random() argument can have arbitrary length IZ 32- with gnuplot, pick a sensible terminal when X11 is not around IZ 33- change valences for use with Math::PARI IZ 34- various interface patches (new file highlvl.c, different prototype for foreignAutoload...) 35- optimized permute() 36- setrand, getrand, getstack, gettime return a C long, and not a GEN 37- pari_randseed no longer global. Don't reset random number generator when entering certain functions 38- improved smallvectors() (correcting the "not enough storage" bug) 39- improved computation of special polynomials ([sub]cyclo,tchebi,legendre) 40- read() and extern() are timed as a whole now 41- check if LONG_IS_64BIT is correctly defined in pari_init (in case we include the wrong pari.h) GN 42- use Lehmer-Jebelean to compute inverse mod p (TODO: extended gcd) 43- moved subcyclo() to bibli2.c 44- improved polredabs, suppressed flag 8 45- improved ground(), case t_REAL 46- modified the internal SMALL nf structure (add matrix M, for polredabs) Removed 1- doc/Makefile.SOS, since make should succeed even if Configure failed 2- many error messages from the analyzer (referer*, trucer1, matvecter...), better handled by talker2 3- obsolete test %_ in bench 4- polkaramul(), which is now the default multiplication 5- factmoder error message 6- obsolete function polredabsfast Added 1- `pipes' for DOS running EMX, i.e extern() and extended help are available (perl needed for the latter) 2- file handling functions pari_fopen, pari_fclose, pari_unlink 3- new default `debugfiles' 4- file README.DOS IZ 5- target etags in top Makefile 6- target ctags IZ 7- gnuplot support HC 8- elliptic functions package (ellzeta, ellwp, ellsigma) HC 9- quadray function, extending quadhilbert 10- files src/basemath/polarit3.c and src/gp/highlvl.c 11- user-defined member functions 12- possibility to choose sizeof(long) at Configure time when the hardware suports it (eg. MIPS) =========================================================================== Done for version 2.0.11 beta (released 30/07/98): Fixed 1- removed all dummy cgeti (--> new_chunk) 2- stack corruption in gcarreparfait (t_INTMOD) 3- incorrect Fq-loop in apprgen9 4- removed useless normalize in gdivgs, gdiv 5- some {} Warnings from gcc -Wall (unjustified, but doesn't hurt) 6- incorrect zero series return by deriv 7- gaffsg(, t_PADIC) misused the valuation (symptom: deriv((1+O(2^2))*x^2) 8- online help for ellinit GN 9- default gp built without X11 in presence of some versions of xmkmf 10- ggval: zero series + simplified the code in there 11- subst(O(q),q,x) --> O(q) 12- newtonpoly did not treat correctly zero coefficients IK 13- getrusage incorrectly detected (at least on Linux/FreeBSD machines) 14- constante() used far too much memory (+ an int should have been a long + an lg should have been an lgefint). Reading in a huge bnf needs much less memory now 15- y[2] checked in divri instead of is_bigint (see 2.0.10, Changed 2) 16- powgi, default case: missing gcopy + incorrect gerepilemany if y==NULL Also, uniformized random GC with gpowgs 17- stack corruption in hil(x,y,p) when typ(x) > typ(y) 18- SEGV if DISPLAY was unset and hi-res routine under X11 is called GN 19- ispseudoprime(negative integer) 20- removed -static from the CFLAGS of profiling version (didn't build) 21- linear algebra routines involving polynomials with real coeffs 22- compiles properly under DOS + EMX GN 23- Warnings from C++ compiler (include unistd.h and sys/ioctl.h where needed) 24- znprimroot(0) --> oo loop GN 25- various fixes in mpqs GN 26- add safety parentheses to macros in paricom.h 27- polroots needed too much precision (two extra words) 28- factor(1. * x + I) ---> rubbish or SEGV (bug in polynomialtype automat) 29- possible address wrapparound in gerepile* (cast to ulong) 30- in gerepile: useless special case for t_SER 31- Pol(1) % 1 returned 1, not 0 32- matdet([x1,1,1/x1; x2,1,1/x2 ; x3,1,1/x3]) returned wrong result (call to gdeuc should have been gdiv in all cases in det()) 33- SEGV in powmodulo (access garbage pointer just before exiting) GN 34- various problems in rho and mpqs Changed 1- simplified detint, fibo 2- simplified GC and optimized gmul: t_SERxt_SER, t_POLxt_POL, and gsqr (same types) 3- streamlined binomial 4- replaced all abusive cmpsi by the relevant egalii 5- prototype for error types [gmuler|gadder|gdiver][fi], assign[ri] using new function type_name 6- uniformized the test suites (make test*,bench,...) GN 7- add random GC in mppgcd. Use modified plus-minus algorithm (new cgcd) 8- format of bench files (to reduce size) 9- cleaned up factor and polynomialtype 10- matdet tries to return a significant 0 when called with a non-invertible argument, e.g matdet([1+O(3),1+O(3);O(3),O(3)]) --> O(3), not 0 11- made the output of make bench/test slightly more informative Removed 1- mpkaramul 2- error messages expter1 and gaffer13 Added 1- misc/gprc.dos a sample gprc for DOS boxes 2- Configure --prefix=dir is now recognized (in addition to -p) =========================================================================== Done for version 2.0.10 beta (released 09/07/98): Fixed 1- integer factoring engine (ECM): sisprime killed N XR 2- file closed twice in MPQS GN 3- bad argument checking in [next|prec]prime BD 4- warnings from MSVC compiler 5- warnings from purify (vpariputs + puissii) 6- sample program and Makefile in examples/ 7- v=...; forvec(a=v, v=...) ==> SEGV LG 8- support for HP running NextStep GN 9- have checkmemory (in cget*) check for overflows LG 10- avoid a bug in cc compiler (version 4.2) under Solaris (in factmod()) LG 11- some missing prototypes and typecasts (for C++) GN 12- add LOCAL_HIREMAINDER in mulssmod (factor(17!+1) => SEGV on some PCs) 13- non portable pari_is_rwxdir GN 14- lots of typos in the documentation Changed GN 1- add debugging output to ECM 2- forvec implementation (+ new flags) GN 3- rewrote the integer factorizer (use Pollard-Brent + improved ECM + new MPQS code from 2.0.9) 4- disabled pari-matched-insert under Emacs 5- reorganized vecsort & co 6- in library mode, classno3 --> hclassno XR 7- improved the nffactor module HC 8- elllseries (use ellglobalred + ellrootno) Added 1- new function in library mode readGEN() HC 2- new GP function ellrootno Removed 1- error message vecsorter2 2- functions vecindexsort, veclexsort (use vecsort with flag) =========================================================================== Done for version 2.0.9 alpha (released 16/06/98): Fixed 1- typo in qfbhclassno (SEGV when result in (1/3)Z) 2- too much memory allocated in factmod /factcantor (use clones) 3- removed the -DREADLINE_LIBRARY hack, use and not 4- version 2.0.8 did not compile with readline 1.* 5- after gaffect(0, padic), padic was unsuitable for further gaffect 6- length(a string) gave number of non code words, not string length 7- factorpadic(polynomial of degree one) did not convert coeffs to padics 8- reduction mod p^r forgotten in gaffsg(s,t_PADIC) 9- default(realprecision,,1) did not return # significant digits 10- typo in nfmodprinit (return x instead of 1-x) 11- matinverseimage did not check its arguments 12- mathess([;]) --> SEGV 13- matid(-100) --> SEGV 14- mateigen([;]) --> SEGV 15- matmultodiagonal([;],Mat(1)) --> SEGV 16- vecextract([;],"..") --> SEGV 17- introduced in 2.0.8 (Added 3-): aliases/user function + ==> SEGV GN 18- (t_RFRAC) ^ t_INT took an unreasonable amount of time 19- prevent quick succession of ^C from corrupting memory in recover() 20- hyperu could enter an oo loop due to round-off errors XR 21- matadjoint(Mat(n)) returned Mat(n), not Mat(1) 22- matadjoint([;]) returned [[;]] (???) 22- wrap some long error messages XR 23- inefficiencies in rnfpolredabs XR 24- nffactor (wrong format for discriminant computation + problems with unseparable polynomials + compute disc only once) HC 25- typos in kummer.c GN 26- check environment variable LINES, not ROWS 27- introduced in 2.0.7 (Fixed 7-): lift(Mod(O(2^0)*x, x^3 - 2)^4) was a zero polynomial with non-zero sign (=> pb when normalizing in poldivres) 28- timer always returned 0 if times() was used (e.g linux-alpha) 29- kill'ing the argument of a user function corrupted the function 30- make clean did not remove pariinline.h 31- incorrect memcopy in identifier, case 's' (removed * sizeof(long)) 32- online help for ?. (nf.nf does not exist) 33- lisseq0: gnil not respected after break/next. avma=av too brutal after return 34- ellwp assumed precdl > 3 35- under emacs, \c + hit return froze emacs (Emmanuel Kowalski) 36- (f()= f()=x); f; didn't set f properly GN 37- comments in anal.c 38- qflllgram([;]) --> SEGV 39- no online help for bernfrac 40- from 2.0.6 (Fixed-8): in padicff2, forgot to raise ideal to power e Changed 1- improved (trivially) gneg (case t_INTMOD), gtopoly 2- use macro is_bigint() instead of tests (ulong)x[2] < VERYBIGINT (led to typos as in Fixed-4 in 2.0.8) 3- improved poldivres by replacing many gsub by 1 gneg + many gadd 4- in pvaluation check for small integer 5- internal function rnfelement_*mod (prhall=NULL instead of gzero) 6- improved mathess 7- added error message "inconsistent data in" in parierr.h 8- gpui[gs] renamed to gpow[gs] GN 9- improved probable-primality tests ('end matching') 10- moved pseudo primality and ECM stuff into ifactor1.c GN 11- raise to an integer power using left-shift binary (new functions powi and powgi) 12- add some details in the online help headers GN 13- nextprime, precprime now accept real arguments TP 14- improved the alpha micro kernel (addllx and subllx) 15- simplified poltschirnaus 16- cleaned up identifier(): #ifdef __hpux__ + call_fun() modified 17- taylor() improved (one gerepile removed) 18- unified the treatment of zero series 19- gerepilemany faster and more efficient memory-wise (copy to heap first) GN 20- improved stack checking in lllgramall Removed 1- global variable defaultpadicprecision 2- function compute_prhall (nfmodprinit is better) 3- function [g]pseudopremier (miller[rabin] better) Added 1- function egalii 2- support for cygwin32 in Configure (Andy Stubbs) 3- new function gunclone to delete a clone (killbloc should be used by the analyser only) 4- comments in anal.c TP/XR 5- new function factorint(), using MPQS (_experimental_) =========================================================================== Done for version 2.0.8.alpha (released 07/05/98): Fixed 1- improved garbage collecting in polroots 2- zetak did not check its nfz argument properly 3- warnings from MSVC GN 4- isprime() did not work for numbers in [2^(BIL-1), 2^BIL-1] GN 5- precprime sometimes missed a prime 6- quaddisc(x in Q\Z) did not always work 7- powering of zero series 8- factorization of null matrices (SEGV) 9- mateigen for non-diagonalizable matrices (SEGV) GN 10- oo loops in some arithmetical functions when arg = big prime GN 11- cleaned up paridecl.h 12- gimag/greal for type t_RFRAC/t_RFRACN (fix: Terje Sparre Olsen) GN 13- ordinal numbers to number components seen through \x HC 14- lllgram: incorrect gabage collecting in first "warnmem" 15- theta(q exact, z) entered oo loop 16- typo in gdiventres (x<-->y in last line) MS 17- gtrunc for p-adics when valp(x) < 0 MS 18- polresultant(u+v,u-v,v) => x + u; polresultant(u+v,u-v) => 2*u MS 19- issquare(Pol), where Pol(0) = 0 IZ 20- use 15 points (by default) for recursive plotting as documented 21- matsnf for singular matrices (supersedes a patch by GN) LG 22- micro kernel support for HPUX LG 23- compilation with Sun's C++ compiler (version 4.2) 24- SEGV when factoring polynomials of huge degree (removed expos[100],etc) 25- garbage collection in gpuigs GN/BH 26- micro kernel support for ix86 running SunOS HC 27- handling of 0x0 matrix in some hnf* functions HC 28- bug in discrayabslist* (try bnrdisclist(bnfinit(y^2-2),200,,1) in 2.0.7) Changed: 1- moved hnf and snf from base1.c to alglin2.c (base1.c too big) 2- use gexpo in linear algebra functions when entries contain real numbers (work for inexact polynomial entries now). Still does not work properly for p-adics GN 3- in sigma() fall back to numbdiv() or sumdiv() when k < 2 4- made comments started in file through read("file") local to file (not so \r file) 5- valuation(0) now returns VERYBIGINT instead of raising an error MS 6- simplified gegal in case t_FRAC IZ/GN 7- faster initprimes, using less memory LG 8- improved Configure Added: 1- new function write1 MS 2- new Lisp-like quote operator 'a IZ 3- readline: electric parentheses, move across balanced expressions, add formal arguments to completion of GP command (when unique) 4- micro-kernel for hppa 5- quiet mode (gp -q) to suppress headers =========================================================================== Done for version 2.0.7.alpha (released 21/03/98): Fixed XR 1- SEGV in get_regulator for imag. quad. fields 2- "beautified" output (still ugly, less buggy, ok for simple objects) 3- error during "print()" could change output default 4- SEGV when syntax errors in gprc 5- make install failed when libpari.$sodest had been removed 6- moved term_width and term_heigth to es.c HC 7- inefficiency in mulii (Karatsuba used too easily) XR 8- many problems in stark.c XR 9- bugs in rnfpolredabs (+ new flag) GN 10- _many_ typos in tutorial and user's manual. New, much nicer, layout 11- whatnow not robust enough + faulty call by err_new_fun ==> SEGV 12- idealadd treated incorrectly the 0 ideal 13- default(realprecision) gave wrong value when format had been changed 14- bnfs structure was inefficient for applications (inverted 2nd comp.) 15- buffersize was incorrectly updated during complicated read() 16- one-line comments "ignored" if buffersize too small 17- using eval on object containing killed variables caused a SEGV 18- contfrac lost last term when first parameter was rational and numerators were supplied 19- problems when dividing with polynomials/series whose leading coeff is non-exact 0 BD 20- missing #ifdef ZCAT in es.c BD 21- check in paricom.h whether min / max are already defined BD 22- universal_constants freed early in freeall() (problems on Windows NT) BH 23- update Makefile.dos (nf.h --> parinf.h) BH 24- changed kernel/ix86/level0asm.c (FUNBEGIN/FUNEND + ALIGN) 25- cleaned the gauss_pivot functions + garbage collecting in gauss() 26- mathnfmod did not check its second argument 27- since 2.0.4 (item 24) install did not work anymore on FreeBSD + gp-dyn 28- cleaner malloc in plotX.c (to remove Warnings when debugmem > 0) 29- slightly optimized matdet (gsub --> gadd(,gneg)) 30- ? x=1; Pol(1) *** variable name expected: x,n, ^--- is fixed everwhere (wherever an optional variable name is expected) setting "x" to some value is now safe IZ 31- nicer looking plot() function 32- warnings while building for m68k arch 33- sqrt(Mod(1,2)) went into an oo loop 34- ?? did not resolve aliases 35- besselk near integers entered an oo loop 36- p-adic sqrt (bad valp) 37- hnfmodid could output wrong results (wrong diagonal) and wreck the powering of prime ideals 38- added garbage collecting in izeta 39- ??a_number now works as gphelp 40- in prettymatrix format, matrices 0xn and nx0 are always printed as [;] 41- 1 - "a" ==> SEGV Changed 1- reorganized output functions (es.c) 2- have mulir check if integer is small 3- part of GENtostr inlined (check_output_length()) HC 4- functions where it makes sense now admit an optional argument for "variable number" (intformal, deriv, things having to do with polynomials, etc) 5- lines of any length can be input interactively (previously 1k at most) 6- remove {} and \ from readline history 7- improve treatment of sample programs in gphelp -d 8- uniformized debugmem messages MSo 9- simplify the coinit function 10- changing the function set through default(compatible,) no longer resets installed functions 11- renamed nfker-->nfkermodpr, nfgauss-->nfsolvemodpr 12- simplified/extended dummycopy 13- listput gives more informative error messages Added 1- default: lines HC 2- (made known to GP) functions nfmodprinit, nfkermodpr & nfsolvemodpr XR 3- function bnrstark 4- install code D& (optional pointer) 5- function name_var (to use after fetch_var) 6- concatenation of lists (or row vectors) of objects (overloaded concat) 7- ranges for vecextract (eg. vecextract(x, "1..3")) Removed 1- useless code 'F' in analyzer 2- perl directory (moved the files in ./perl to ./doc) =========================================================================== Done for version 2.0.6.alpha (released 22/02/98): Fixed 1- \x (voir2) did not always print the correct number of words 2- in changevar, type POLMOD, modulus and polynomial were interchanged 3- all occurences of former header file names in the documentation 4- (from 2.0.5. item C5) using allocatemem in a script aborted file reading 5- expanded the documentation for bnrrootnumber 6- factor(pol. with rational non integer coeff) could corrupt the stack 7- Euler gave wrong results when prec > 80502 digits (also cleaned up Pi) 8- cleaned up ggcd, grando0, tayl and factorpadic2 9- is_scalar_t --> is_const_t in gvar/gvar2 IZ 10- Configure and example Makefile for OS/2 11- idealprincipal did not accept n x 1 matrices 12- idealhnf(nf,a,b) did not work for quadratic fields 13- matsolve[mod]([;],.) could corrupt the stack or accept incorrect input 14- modules/galois.c unnecessarily included BH 15- symbol name problem in level0asm.c (cancels patch by IZ) XR 16- fixes in stark.c 17- cleaned all occurences of HIGHVALPBIT and HIGHEXPOBIT 18- serconvol assumed main variable was "x" 19- (x + O(x^2))^(3/2) gave a stupid error message 20- types not checked correctly in gtoser 21- check more seriously arguments to default() 22- in Makefile: added some missing $(RM), changed an "ln -s" in $(LN) 23- extra '\n' after print1 + sequence of warnings 24- simplified a statement in addii() 25- typo in classno() (classno(-200183): "division by 0") + cleaned classno 26- all compiler warnings + most of lint's 27- make install would not work anymore if emacs was not found 28- HNF reduction not always complete when rank is small compared to dim 29- gphelp -d did not handle ~ properly (+ cosmetic changes) Removed 1- unused files src/kernel/ix86/{asmi386.h,asmi386inline.h} 2- useless macro gcopyifstack and global variable RAVYZARC 3- useless error message gcder1 4- useless (undocumented) function fasthnf Changed 1- simplified isonstack 2- extended valid inputs for matsolvemod 3- don't output a '\n' before an empty matrix 4- mpsincos no longer static (so that it can be installed) 5- reorganized gp_initrc() to cater for for non-UNIX arch 6- the "obsolete function" message now launches whatnow() directly (and caters for the special cases "i" and "o" now) 7- improved stack management in hnf/allhnfmod/fasthnf 8- moved powering functions to trans1.c 9- disable logfile while reading .gprc 10- (slightly) the output of whatnow() Added BH 1- support for DOS build using EMX (dos directory + fixes) 2- function cotan() and bernfrac() 3- a code for pointers (&) for analyzer and install() 4- ??readline now includes info about completion and online help =========================================================================== Done for version 2.0.5.alpha (released 07/02/98): Fixed BH 1- LOCAL_HIREMAINDER added twice more in mp.c LG 2- some symbols declared extern in gp_rl.c to avoid compiler warnings LG 3- isprime could corrupt the stack (isprime_proto removed) LG 4- possible redeclaration of macro from system header (MAX in bibli1.c) 5- typos in the user's manual 6- removed unused error numbers and fixed their ordering in mp.s 7- a ; or : after read/extern was not always correctly taken into account 8- a bug in polroots (possible SEGV in very rare cases) (Paul Zimmermann) Changed LG 1- (huge) reorganization of PARI kernel and headers 2- logfile example in gprc.dft to take advantage of "time expansion" XR 3- stark units module rewritten HC 4- rnfpolredabs improved 5- errors now cause GP to close any file it was reading instead of going on 6- increased the static limit for the number of files opened simultaneously Added XR 1- function bnrrootnumber =========================================================================== Done for version 2.0.4.alpha (released 26/01/98): Fixed 1- recovery on startup was not correctly disabled GN 2- pari.el (see emacs/pari.el-changes) 3- "" missing around a DLLD caused Configure to fail if shared library not available 4- component of GEN could be created before its root in gadd(t_SER, t_SER) 5- nffactormod did not like big primes 6- removed the `.' binary concat operator introduced in last update (broke semantics). Instead Str() argument evaluated in string context 7- solve did not find some obvious zeroes (solve(x=-2,1,x) for instance) 8- Configure -pg did not work 9- 68k version didn't work: corrected mp.s, moved some code & defines 10- subst(x,variable(x),1) did not work 11- flag acted contrary to doc in matsolvemod 12- in rare cases the prompt could still start at column > 1 13- bnfissunit much faster now 14- idealval could make mistakes with non-integers 15- Mat([1])[1,] gave a stack error 16- zetakinit(x-1) as well 17- zetakinit(K, even integer) gave a wrong result whenever r1(K)>0 18- typo in whatnow(hermite) and ?bnfsunit 19- missing newline in user error after print1 20- various typos and omissions in chapters 1, 2 and 5 of manual 21- (x-x)==(y-y) returned FALSE 22- polfactormod(f,0) gave a SIGFPE 23- some missing #ifdef UNIX BH 24- install() now works for gp-sta under Linux and OSF BH 25- gcc Warnings in gp.c + es.c BH 26- problems when installing from a different non-priviledged account BH 27- inefficiencies in mpinline.h (replace memory access by a constant) Changed 1- when logging mode is on, record command line as well as result, and flush buffer often 2- subdirectory lib now called misc. Changed some filenames in it 3- defaults psfile and logfile are now run through strftime 4- for benches total time now taken into account ([BUG] was excluded) 5- noerr is now the LAST error message (for CLISP interface) 6- cleaned path expansion (default(path,...)) 7- renamed types.h and cast.h (prefixed by "pari") 8- renamed type Rect to PariRect DB 9- kernel/kerPPC.s replaced by kernel/kerPPC.c 10- made static the arrays in check_isin() (for the Mac port) BH 11- overflow/hiremainder use local variables as much as possible 12- prompt not printed during a batch job, unless echo is set commands not echoed twice in interactive mode Added 1- gplogfilter script in misc 2- check for strftime in Configure 3- support for alpha running linux (include portability fix on keralpha.s) 4- file MACHINES 5- made message for "array index out of range" error more precise 6- more frequent garbage collecting in mathnf BH 7- inline asm for i386 GN 8- support for native compiler on AIX Removed 1- support for dynamic linking on AIX (did not work) =========================================================================== Done for version 2.0.3.alpha (released 13/01/98): Fixed: 1- rare bug in gadd (PADIC + PADIC) which caused one of the arguments to be overwritten 2- typos in refcard 3- galois.c still couldn't compile on the HP (_INCLUDE_POSIX_SOURCE) 4- introduced in 2.0.2: item 14 used gexpo incorrectly (bnfinit sometimes did not give units it could have computed) 5- replaced INFINITY by pariINFINITY in rootpol.c (cancels Warning on OS/2) 6- on OS/2, target ../gp-$dft in o.xxx/Makefile could not be built (extraneous $exe_suff) 7- command line switches so that one can enter them with or without white space (new function read_arg in gp.c) 8- setdcolors so that it can't unset disable_colors if we are under emacs 11- random did not check its argument correctly (random(2^32) was accepted) 12- b=10; for(a=1,b, b=2) exited immediately, whereas the upper bound is supposed to be evaluated only once 13- reorganized the error recovery system (initially because errpile could cause SEGV on Linux systems) 14- typo. problems in doc and refcard (interletter spacing in $nfz$...) Changed: 1- Reorganized Makefile.SH: extraction twice as fast 2- pari.menu and pariemacs.txt rewritten, pari.el updated 3- expanded the man gp.1 to mention command line switches 4- the implied input from non-interactive input command (like extern and read) does not go into the GP history (%x) anymore (it never went into readline's). The final output (value of last expression evaluated) of course still does! 5- updated chapter 5 of the User's Manual (removed obsolete information) Added: 1- better settings for handling the Meta key under readline in examples/Inputrc YU 2- support for shared libraries under FreeBSD 3- colors under Emacs 1) emulate exactly the "colors" default after a M-x gp 2) .gp files edited get a special highlighting 4- a flag to default() to get the result under GP 5- overloaded the "." (member) operator to concatenate as strings if LHS is a string 6- .gprc accepts some limited preprocessing directive (#if READL and #if EMACS (and #ifnot as well)). Updated lib/gprc.default to reflect the changes Removed: 1- some unused, undocumented functions (allocatemem(), checksqid()) made static some other (op_ReIm) =========================================================================== Done for version 2.0.2.alpha (released 15/12/1997): Fixed: 1- typos in the documentation for the random() function 2- removed an extra -emacs flag in pari.el 3- decodefactor was incorrectly remembered by whatnow (it's factorback now) 4- test mode did not prevent all prompt expansion (==> bug in make test) 5- gphelp stopped abruptly when meeting a cross-referencing macro 6- zetainit now aborts cleanly when disc. too big (caused memory fault) 7- exceedingly rare bug in the printing of real numbers (missing decimals) 8- too early rounding in polroots which in rare cases made GP think some error had happened 9- text overflowed the manual pages (and tutorial) on non-A4 paper 10- polred incorrectly assumed that nf arguments were totally real (in a non critical part: that just led to some unnecessary computations) 11- polred(f,2) could try to overwrite universal integer gzero 12- check if we are using GNU as or GNU ld in Configure 13- empty -R argument to $CC when building GP without graphics (==> link failed) 14- bnfinit acts sensibly when fundamental units are too large (before: "overflow in R*R") 15- cleaned up buch2.c (removed ideallllredpart1, removed gerepile in class_group_generators(), not_given now called from getfu) 16- nfgaloisconj(...,2) was unusable (tried an illegal multiplication) 17- is_totally_split was very inefficient (==> nfgaloisconj was very slow) 18- some unimportant typos (gexpo) in polgalois 19- compiling without readline gave a Warning in gp.c (already_hist) 20- some make programs don't like $< (suppressed from doc/Makefile) 21- ellap sometimes assumed wrongly that coeffs of the curve were integers 22- flag 0 and 1 in ellap had been mixed up 23- print an extra \n before an error message if last output did not include it 24- component(any non recursive type) gave a SEGV 25- suminf / prodinf / prodeuler assumed they treated a real expression 26- lindep / algep had problems with numbers having a rational component 27- last significant digits of bessel* and hyperu were wrong (now only the last one is) 28- expi now returns a long as documented (expi(gzero) returned 0 on 64-bit machines!) 29- g++ could not compile libpari.a (casts missing, extraneous extern "C", faulty inline, etc.) 30- cleaned up the enums in gp.h 31- incorrect target veryclean in doc/Makefile Changed: 1- '_' is now valid in GP identifiers 2- removed subsections from table of contents. pages in the manual are now numbered consecutively 3- gexpo now accepts exact 0 arguments (return -HIGHEXPOBIT) gexpo for complex numbers now return max(gexpo(Re), gexpo(Im)) 4- parts of lib/gprc.default 5- the second argument of subgrouplist is now optional Removed: 1- buggy label/goto functions 2- (now unused) error messages: labeler, gexpoer2 3- _ as shorthand for conj() 4- (useless, undocumented) function gnormalize 5- some files in the lib directory (functions, gp) Added: 1- some files in the lib directory (README, pari.xbm, xgp) ============================================================================== Done for version 2.0.1.alpha (released 29/11/1997): Fixed: 1- multiple factors forgotten when factoring univariate pols over Z 2- extraneous modifications of the random seed (period of random generator was ridiculously small for some buchxxx functions). Change the bench results (in a non essential way) 3- bad terminal size determination 4- aliases incorrectly killed (possible SEGV) 5- incrementing/decrementing array elements with the (valid) syntax v[i]++ / v[i]-- caused a weird error message 6- subgrouplist() could end up by a SEGV on Linux systems LG 7- on HP-UX, flag -Aa not taken into account in Configure (caused it to fail on has_TIOCGWINSZ.c) LG 8- added a missing #define _INCLUDE_POSIX_SOURCE in galois.c (7 & 8 independently fixed by OV) GN 9- the script examples/cl.gp called vecconcat() instead of concat() GN 10- make install-sta rebuilt gp-sta unnecessarily GN 11- many, many typos in the tutorial 12- tu / fu applied incorrectly to a bnfclassunit 13- bnfclassunit did not output a valid object (matrix whose elements were rows instead of columns) 14- conversion bug from t_QUAD to t_REAL/t_COMPLEX 15- off-by-1 error in the history recovery after an error 16- in fprintferr() (debug messages), embedded %Z did not work correctly 17- rnfequation over Q yielded a SEGV 18- string() in compatibility mode corrupted the stack 19- it is now safe to have colours in prompt and input line under readline 20- default colours restored upon exiting 21- default colors in lib/gprc.default used 0 instead of -1 for "no color" 22- psi and lngamma could give wrong results when the argument was not real 23- the make test-graphic bench was missing a newline 24- Pol(break) gave a SEGV 25- x=1; Pol(1) gave a stupid error message IZ 26- tutorial.tex was unnecessarily rebuilt 27- typos in ggcd (cases nobody will ever access: gcd of a non-reduced LG fraction with an intmod, etc.) LG 28- incorrect handling of integrals of vectors 29- gcd of polynomials with non-exact coeffs gave stupid results (they are still often wrong, since the mathematical notion is rather imprecise) 30- typos in rnfkummer (incorrect flag handling) 31- typo in idealpowprime (negative exponent gave wrong denominator) 32- multiplication t_COMPLEX x t_COMPLEX used 4 mult. instead of 3 33- some modular functions (j, f, f2) rewritten to take advantage of new eta function (trueta) Changed: 1- ?? (gphelp) starts in detex mode (-d) from a console window. tmp files now placed according to the $TMPDIR environment variable (in /tmp by default) 2- /usr/local/lib/pari/data is a better place for the Galois resolvents (which are not included yet in the standard distribution) 3- The example for prompt in gprc.default to discuss escape sequences under readline 4- Configure now starts by searching the toplevel directory for a temporary readline installation 5- The output of default(colors) was confusing. It is a string now 6- third argument of polinterpolate can be arbitrary and is now optional ("x" by default) (it had to be numeric) 7- directory configure renamed config, some of the Makefiles in there as well (to avoid confusion) 8- the low_stack macro to facilitate dynamic stack expansion 9- if, back to GP main loop, the last command was a print1(), output an extra newline. This way the prompt is guaranteed to be anchored on column 1 (suppresses a readline display bug as well) 10- Due to 9, pari.el now supposes the prompt starts in col. 1 11- Better handling of version numbers (LG) 12- decodefactor() renamed to factorback() Removed: 1- The (unused, undocumented) Malloc_Procs functions and macros 2- The (now unused) error message numvarer 3- some (useless, undocumented) targets in the top Makefile 4- (useless, undocumented) function polgcd() Added: 1- This file ! 2- new flags -ch, -cb, -cu (colour support) to gphelp (see its header) IZ 3- OS/2 (+ enough tools...) supported by Configure 4- file examples/Inputrc (example of .inputrc for readline) 5- Weber f1 function implemented 6- Karatsuba multiplication t_REAL x t_REAL (development code, not used by PARI yet). Test it with install if you wish