# $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