Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
# $Id$ Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/ Done for version 2.5.0 (released 31/05/2011): Fixed BA 1- DESTDIR did not work. [#1194] BA 2- Improve Darwin shared library support. LGr 3- bnfinit -> oo-loop if class number is divisible by 27449 [#1197] BA 4- [gp2c] error("foo") did not work. 5- wrong generators in quadclassunit(D > 0) [ fix qfr3_pow / qfr5_pow ] [#1195] 6- setrand(45);quadclassunit(185477) -> SEGV [#1200] 7- fix derivnum for large arguments [#1201] 8- "#if READL" always evaluated to "FALSE" in gprc [#1202] 9- matsnf(non-square matrix, 4) --> SEGV [#1208] HC 10- fix p-adic Gamma inefficiency for small p: gamma(O(2^20))->no answer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.4.4 (released 29/04/2011): Fixed BA 1- FpX_gcd did not garbage-collect for large input. BA 2- 'make all' failed to build the documentation. 3- typo in polgalois() when new_galois_format is 0 : returned [3,1,2] instead of [3,1,1] for C_3 4- rnfkummer was using too much stack. 5- nfgaloisapply did not work on extended ideals. 6- Strprintf and printf0 prototypes were wrong. 7- Mod(4*x+1,Mod(1,2)*x) -> SEGV [#1116] 8- gcd(t_INTMOD, t_FRAC) -> SEGV 9- qfjacobi failed on a matrix of zeros (or in presence of 0s of large exponent) [#990] 10- t_SER / t_SER where denominator has 0 leading term -> SEGV [#1120] 11- (t_COMPLEX of t_INTMOD) + t_PADIC -> SEGV [#1121] 12- (t_QUAD of t_INTMOD) + t_PADIC -> SEGV [#1122] LGr13- bnfinit: various performance improvement. BA 14- several instance of random garbage collection were broken. BA 15- [install]: support for D0,G, and D"str",s, in prototype code. BA 16- [gp2c]: foo(x:mp)=... did not work. 17- when the divisor's leading term was 0, RgX_divrem(,,&rem) created rem before the quotient (invalidating the use of cgiv() suggested in the documentation) [#1129] 18- gadd(t_COMPLEX of t_REAL, t_QUAD = 0) -> SEGV [#1131] 19- log(11+11^2+O(11^3)) -> bug in log_p [#1136] BA 20- (ffgen(ffinit(2,10))*0)^-1 -> oo-loop BA 21- ispseudoprime(-3,0) != ispseudoprime(-3,1) BA 22- text form of a closure now include the closure context. BA 23- reading compressed files could corrupt the stack. BA 24- t_CLOSURE==t_CLOSURE and t_CLOSURE===t_CLOSURE did not work. 25- gequal1(0.*x + 1) returned 0 26- ispower((100!)^2) -> 0 [#1155] Affected pure powers divisible by more than 22 of the 26 primes <= 101. (introduced in 2.4.3) BA 27- LLL could fail (rarely) due to insufficient precision [#1154] 28- rnfisnorminit(y,x^2-Mod(2+y,y)): polynomial not in Z[X] in nfinit [#1157] 29- factorff failed to merge identical irreducible factors [#1159] BA 30- ploth(x=0,1,0,"Complex|Recursive") -> SEGV [#1163] 31- mathnf(dim > 8) could return a non-HNF upper triangular matrix [#1153] BA 32- forsubgroup() did not handle break/next/return. 33- modular resultant, e.g. rnfequation(polcyclo(17,y), x+y^6,1) [#1151] 34- gequal1(x) / gequalm1(x) did not implement gequal(x, 1) for t_COL/t_MAT 35- matsize(vecextract(M,0,y)) -> [;] instead of matrix with 0 and the requested number of columns [#1170] 36- readline completion : allow commas ',' in directory names [#105] 37- List() == List() returned 0. 38- [Configure] C_INCLUDE_PATH was not used when looking for libgmp BA 39- polroots(1) returned [] instead of []~. 40- a succession of <C-C> in breakloop context would reinitialize timer 41- matsnf(matdiagonal([x,0])) --> [x,0] instead of [0,x] BA 42- qfbred(large discriminant, small prec): precision too low in truncr [#1173] PMo43- erfc(large x) was slow and inaccurate [#364] 44- erfc() : allow t_COMPLEX inputs 45- stack corruption in ifac_decomp_break() [#1115] 46- factor(0) returned 0^1, but factorint(0) raised an error. Allow factorint(0), core(0), coredisc(0), etc. 47- ellwp, ellzeta, ellsigma only used realprecision, instead of the input precision [#1184] BA 48- tuning for 32bit and 64bit, with or without GMP5. 49- idealintersect(K, 1/2,1/2) -> 1/4 instead of 1/2 [#1192] Changed LGr1- universal constants (gen_0,gen_1, etc.) are now read-only 2- qfjacobi : sort eigenvalues by increasing order 3- [libpari] gtoser : add a third precdl argument. 4- [libpari] swap the last 2 arguments of ellwp0 (prec and precdl) 5- ellwp now outputs a number of terms equal to the default seriesprecision, instead of *twice* that number. 6- Ser, ellwp, taylor, elltaniyama: add an optional 'precdl' argument (by default equal to 'seriesprecision'). One no longer has to rely on (and change locally) a global variable to handle conversion to power series. LGr7- add information to the version() output [backward compatible if version() used as recommended in the documentation] [#1130] 8- O(x^0) is now printed as is, not as O(1). t_SER and t_PADIC are now treated in the same way. 9- inverse trigonometric functions (acos,asin,atan,acosh,asinh,atanh): values on the branch cuts changed to conform to standards, e.g. "implementations shall map a cut so the function is continuous as the cut is approached coming around the finite endpoint of the cut in a counter clockwise direction." (ISO C99) [initial patch Richard Kreckel, #1084] BA 10-[libpari] nf_get_TrInv renamed to nf_get_diff 11- Qfb() : forbid square discriminants (-> corrupted objects [#1145]) 12- allow gequal1 / gequalm1 to return 'true' for t_SER 13- follow-up to (2.4.3, C104) [#1156]: - stop using the undocumented feature Z_factor_limit(x,1) = Z_factor(x). - abide by the "lim" parameter in all cases : factor(100,1 or 2) -> [10; 2] (was [2,2; 5,2]) 14- include GP defaults in the function description system + use standard hashtables instead of ad hoc types 15- cleanup and document term_color() and term_get_color() BA 16- prototype of summations functions now is fun(void *E, GEN call(void*, GEN),...) BA 17- traversesubgroups renamed to forsubgroup. 18- t_QFR with the same coefficients but different distance component are now tested equal by == (they are still different according to ===). 19- bnfinit no longer outputs a warning when fundamental units couldn't be computed (annoying and rather useless) [#1166] 20-[Configure] no longer support a link to an uninstalled readline library in PARI toplevel 21- thue() no longer outputs a Warning when the result is conditional on the GRH. 22- [libpari] rename TIMER -> timer_delay, TIMERread -> timer_get, TIMERstart -> timer_start, msgTIMER -> timer_printf BA 23- polrootsff now returns a t_COL 24- default(a, b) used to return "b". Now returns gnil 25- [libpari] remove allocatemem0 [make it private to GP], write allocatemem 26- matdet() : allow Guass-Bareiss to develop somewhat wrt. rows/columns [ cf test O1 in Lewis-Wester's bench ] 27- addprimes() now includes its argument as-is (used to take gcds, making an insertion linear in the table size instead of O(1); filling an inially empty table was quadratic in the final table size). They must be true primes, otherwise number theoretic routines may return wrong values. [#322] 28- rename fprintferr -> err_printf, flusherr -> err_flush 29- ellpow (CM case). Try to determine the discriminant of the endomorphism ring first [#1186] Added BA 1- trap keyword "syntaxer" to trap syntax error from eval. BA 2- Flx_shift now support negative shift BA 3- [gp2c] add description _(_) for closure evaluation BA 4- PARI function FpX_halfgcd() and subquadratic FpX_gcd(), FpX_extgcd() BA 5- PARI function Flx_halfgcd() and subquadratic Flx_gcd(), Flx_extgcd() BA 6- random() now allow to draw random polynomials BA 7- PARI functions pol_0, pol0_Flx, pol0_F2x VB 8- [mingw] --datadir=@ option to Configure BA 9- PARI functions FlxqX_div 10- PARI function ismpzero BA 11- PARI function bnr_get_clgp 12- new default 'histfile' (to save readline history in between sessions) 13- PARI function cmp_universal BA 14- [gp2c] add descriptions to support intnum/suminf type functions. BA 15- function diffop 16- PARI function zero_Flm_copy 17- PARI function mantissa_real BA 18- PARI functions F2v_clear, F2m_clear, Z_to_F2x, F2x_set, F2x_clear, F2x_flip, F2x_coeff BA 19- PARI functions F2xq_sqrt, F2x_deriv BA 20- PARI functions FpXQ_trace, Flxq_trace, F2xq_trace BA 21- PARI functions FpM_det, Flm_det, F2m_det Removed BA 1- PARI function CM_CardEFp (ellsea script deprecated). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.4.3 (released 08/10/2010): Fixed 1- \h m-n no longer worked BA 2- some error messages displayed internal token names (e.g for '1) 3- named colors in 'graphcolormap' were not portable across graphic drivers 4- setunion(Set(),Set()) -> SEGV [#714] DE 5- [Solaris] pari.desc won't compile [#715] 6- 822.pm broke the formatting of inline program examples 7- memory leaks in pari_close_opts [ freeep(), parser stacks, some defaults... ]. FIXME: calls to getpwuid introduce (small) leaks 8- ZV_Z_mul might not reset clonebit. 9- nfeltreducemodpr --> gerepile errors [#716]. Also SEGV for residue degre > 1 (when p does not divide the index) JD 10- write1("/dev/null", foo);1 --> extra newline JD 11- is_dir_stat() gave incorrect results on special files (pipes,...) JD 12- read() would block on pipes 13- nfeltreducemodpr used different canonical representatives than all other modpr routines [#719] 14- rnfconductor(,,1) did not recognize some abelian extensions [#718] (when the discriminant of a defining polynomial for the absolute number field could not be factored). Related to Changed-4. 15- polgalois could confuse S_11 and F_110(11) if a certain polynomial discriminant could not be fully factored. Related to Changed-4. 16- a = 0./x; a+a --> 0. BA 17- [from 2.4.2] use of pointers in recursive expressions [#717] BA 18- [from 2.4.2] trap() did not restore evaluator states [#722] 19- simplifications missed when adding t_RFRAC [#721] 20- gtofp(1 + 0*I, prec) should not return 1. + 0.*I but 1. gtofp(0 + (tiny real) * I, prec) should make sure the real part is converted to a zero of sufficiently small exponent (otherwise the modulus of the result is zero, because 1E-100 + 0E-28 = 0E-28) 21- factor(500501^36): impossible assignment I-->S 22- quadray(-7,6) [or other "impossible conductors"] --> oo loop [#725] 23- acosh([Pol(1)]) -> gerepile error [#728] (same asin, asinh) 24- rnf functions sometimes do not reduce their output when relative extension has degree 1 [#727] 25- zetakinit(bnfinit(...)) -> gerepile error 26- zeta(1-2^31 or 1-2^63) -> SEGV [#730] BA 27- priority of << had become lower than priority of * (should be =) 28- last digit of polylogs was wrong BA 29- missing GC in the leftrightpow functions 30- bnr=bnrinit(bnfinit(y^2-229,1),5,1); rnfkummer(bnr,,3) --> oo loop 31- mathnf(a,1) could have negative entries if non-trivial kernel [#741] 32- [Configure -pg] some variables not written to pari.cfg 33- missing subfields in nfsubfields [#744] 34- [readline] <F1> or <M-h> would fail on 'fun()'. Delete trailing garbage in help routine. 35- modular matrix inversion routines used O(n^2) inversions instead of O(n) 36- print1() + read() or extern() + error/warning ==> missing \n 37- infinite loop in nffactor [#751] 38- ellordinate couldn't handle t_FFELTs 39- eint1(10,10) completely wrong 40- ispower broken due to 1) uninitialized variable, 2) insufficient precision [#916] 41- compilation fails with yacc unable to handle parse.y [ add explicit rule in Makefile to prevent from generating a wrong one ] 42- duplicate factors in nffactor (easy cases) [#761] 43- ellisoncurve(e, P) didn't check that "point" P had the correct format 44- znlog(...,znprimroot(p)) --> SEGV [#765] 45- wrong signs in bnfisintnorm e.g. [bnfinit(x^3+5), 5] -> x [#767] 46- x/(x+2) * Mod(1,2) -> Mod(1, 2)*x/(x + 2) [ should be Mod(1,2) ] 47- substpol(x/(y^3*x+1),y^2,1) -> x/(y^3*x + 1) [ should be x/(y*x+1) ] 48- missing sanity checks in rnfbasistoalg() 49- setrand(1); E=ellinit([0,0,0,1,T^4]*Mod(1,ffinit(2,7,T))) --> "weird base ring; can't divide" 50- nffactor(nfinit(y),x*y) nffactor(nfinit(y),x^2*y+1) nffactor(nfinit(y),x^2*y) --> errors or SEGV. [#769] 51- hilbert(1,1,1) --> oo loop [#770] 52- nffactor(y^2+1, x+1/2) --> x+1/2 [ not integral ] 53- nffactor(y^2+1,x*y+1) --> x*y + 1 [ not normalized, missing POLMOD ] 54- nffactor(y^2+1,x^2+2*y+1) --> x^2+2*y+1 [ missing POLMOD ] 55- ellpow() with CM raised a "division by 0" instead of returning [0] [#777] 56- ellpow(e,z,2^20*I) --> norm too large in CM. 57- p=x^4-x^3+x^2-x+1; tnf = thueinit(p); thue(tnf,1) -> missing solutions (could occur whenever p has no real root) [#764] 58- missing GC in numtoperm() 59- harmless uninitialized memory read in mulrrz_i() 60- sigma(..., 2) --> SEGV [ introduced in 2.4.1 ] [#783] 61- tuning problems in bnfinit bnfinit(polredabs(quadhilbert(-2939))) --> oo loop 62- minor inaccuracy in GMP kernel (affir) 63- missing GC in gamma / lngamma 64- obscure SEGV when setting 'log' in a file read from command-line as gp foo.gp [#789] 65- check that moduli are compatible in Rg_to_Fp(t_INTMOD, t_INT) 66- matsolve([1;2;3],[1,2,4]~) --> [1]~ (should raise an error) 67- allow polredabs(x in Q[X]) BA 68- [galoisinit] Documentation of "weakly" supersolvable was incorrect. 69- binomial(t_REAL or t_COMPLEX, k) was very slow for large k 70- quadclassunit(-3 or -4) --> one extra (obsolete) component. BA 71- the evaluator did not garbage collect huge expressions [#713] BA 72- changing a function in use caused a crash [#784] 73- vecsort() would not check the type of element in 1-dimensional vector [ e.g. vecsort([I] now raises an error ] 74- RgX_val would raise a SEGV on t_POLs with exact *non-rational* 0 leading coeff, e.g. Mod(0,2)*x 75- SEGV (stack corruption) in idealval(K, rational number, pr) [#808] 76- All the charpoly(x,v) variants failed when v > variable(x) BA 77- conjvec did not support FFELTs. 78- memory leak in t_LIST handling 79- polrootsmod(,1) could return an incomplete result [when 0 was a root or there was a double root], e.g. polrootsmod(x^3 + x^2 + 21*x,23,1) IM 80- lngamma(x) gave incorrect results (off by 2*Pi*I) when real(x) was a negative half-integer. 81- trying to write to a binary file and failing leaked a file descriptor 82- long-standing stack corruption when <C-C> pressed during gclone [#458] 83- idealaddtoone had problems with 0 ideals [#829] 84- wrong results in qfgaussred() [only totally real case was correct] 85- uninitialized memory read in divrr (both kernels), would only affect the last bit of the result, but could cause SEGV on empty stack. 86- After A=1/(y + 0.); B=1. + O(y); all of A*B, A/B, B/A caused an error 87- wrong result in ellap(E, 2) if bad reduction 88- 0.*x+1 == 1 --> 1 but 0.*x^2+x == x --> 0 [ latter is now 1 ] 89- ffinit(2,30) --> division by 0 [typo in FlxY_Flx_div], [#859] 90- when unexpected exception/signal raised (^C, stack overflow, out of memory), == would cancel it and silently return wrong value [#329] 91- reading recently freed memory in popinfile() 92- contfrac(1,[],-1) ==> SEGV [#865] 93- missing type checks in bnrconductorofchar [#867], nfhilbert [#868] 94- unstable evaluation of tan(t_COMPLEX); at \p9, try ploth(t=-0.1,0.1,abs(tan(10*I+t))) BA 95- Vecsmall([1,1])^-1 returned garbage 96- was not handling nffactor(*huge degree* nf, *non-monic* t_POL) properly --> wrong result and possible memory corruption [#870] 97- polredabs: excessive stack usage [#872] 98- besselj(0., 0) --> error [#880] 99- polred didn't accept non-monic inputs 100- factor(..., 10^100) ==> "overflow in t_INT-->long conversion" [#855] IZ101- missing `const's in groupid.c cause massive copying to stack. 102- [native kernel only] int_normalize() didn't treat properly inputs of lgefint 2 103- gerepile errors in quadclassunit(13).gen or .cyc 104- from_Kronecker & FpXQX_from_Kronecker returned polynomials with invalid first codeword [ unused bits not reset to 0 ] 105- gred_rfrac_simple(n,d) [ basic constructor for t_RFRAC n/d ] did not cater for d = constant polynomial 106- RgX_extgcd created invalid objects in trivial cases [ gen_0 used by RgX-only routines ] BA107- Fix detection for ppc64 running in 32bit mode. 108- Fp_div used remii instead of modii: Mod(3,5)-1/3 -> Mod(0, 5) [#893] 109- trying to prevent accuracy problems in thue() caused oo loop 110- wrong results in matsnf with t_POL entries [#901] minpoly(matrix(4,4,i,j,i/j)) -> x^3 - 4*x^2 + x 111- thue(thueinit(x^3-100,1), 25) -> "Short continued fraction" 112- thue(thueinit(x^3-48, 320) -> missing solutions (similar problem when LHS is a polynomial of degree d and RHS includes a d-th power). 113- completely wrong results in nfsnf 114- intformal(A,Y) -> 1/2*A^2 115- uninitialized memory read in sin / cos / exp (possibly fed random final digits to the algorithm, normally truncated away before returning) 116- nffactor(): SEGV if "relifting" was necessary (very rare) 117- nffactor(): obscure "no factor" bug [when trial division found and extracted *non monic* factors], #930 118- incorrect output type in FpX_factor [#933] 119- possible stack corruption in polylog() + missing imaginary part. 120- incorrect final simplification in idealtwoelt(nf, x, y). Eg: idealtwoelt(nfinit(x^2+23), 3, 6) -> [0, 0]~ BA121- listsort() could return a pointer referencing freed memory: make it return void BA122- src/kernel/ix86/asm0.h had an incorrect #line entry. 123- rnfkummer could miss some fields ( bug in rnfnormgroup() ), e.g. bnrM = bnrinit(bnfinit(X^4 - 34*X^2 + 1189,1), 5, 1); rnfkummer(bnrM, matdiagonal([3,1,1])) 124- nfgaloisconj(y,1) -> invalid object 125- weird error message in ellpointtoz on loss of accuracy [#962] 126- ^C before inital prompt appears ==> SEGV [#965] BA127- ellsea(,,1) did not work BA128- COMPAT file was missing some functions renamed in 2.3: flisexpr, flisseq -> gp_read_str; lisGEN -> gp_read_stream AF129- fix for documentation of polcoeff, extern and readvec BA130- 1/matrix(2,2,i,j,Mod(0, 2)) -> SEGV 131- wrong results for qfminim(A,,,2) if minimal norm < 1. E.g. A = matid(2)/2 BA132- besselk(0.001,1) -> SEGV BA133- galoisinit(x).gen was not a t_VEC 134- lngamma(10^1000) -> precision too low in truncr. Same for psi() 135- nffactor could segfault. [#979] 136- Mod(10,37)^10000000000 -> SEGV 137- missing Flx_renormalize at the end of Flx_mulspec_basecase() & Flx_sqrspec_basecase() [#984] 138- after \y0, [1,x]*[0,0]~ returned 0 t_INT, which should be a t_POL [#983] 139- isprime(x) possibly incorrect on 64 bit machines when 10^15 < x < 2^64 LM140- fix for the documentation of deriv, intformal, poldisc and taylor. JD141- fix for the documentation of install, matsnf and polsturm. LM142- general documentation spelling fixes. BA143- detection of exp2 and log2 was broken with C++ BA144- support for shared library on netbsd. IZ145- [readline] 'foo)' + M-C-b -> infinite loop 146- factorff / polrootsff : wrong result if t_FFELT coefficients in variable 'x BA147- nfisideal did not reject invalid hnf ideal matrices [#999] 148- v=vectorv(1);concat([matrix(0,0),v,v,v,v,v,v,v,v,v,v,v,v,v,v,v,v]) -> SEGV [#1002] BA149- minpoly([-5,0,-1,1;0,-5,-1,-1;1,1,-5,0;-1,1,0,-5]/3) -> wrong result[#994] BA150- 2/O(5) -> O(5^-1) (should raise an error) [#1009] 151- factor(13533236897) -> I/O Warning [#1012] BA152- usqrtsafe result could be off by one. BA153- faster algorithm for nfgaloisapply. 154- bnfisnorm: output could have constant t_POL(MAXVARN) components instead of t_INT. E.g. bnfisnorm( bnfinit(x^2+10), 1690 ) [#1026] IZ155- [OS/2] Fix warning about string signedness. IZ156- [OS/2] Fix symbol checking in Configure. BA157- upowuu(2,31) returned a wrong result [#1031] BA158- [from 2.4.2] issquare(x^2+y^2) -> SEGV [#1027] BA159- [from 2.4.2] pointers to Vecsmall components were broken. BA160- [from 2.4.2] ellap could return a wrong result. [#1030] 161- thue() could return wrong results (ZX_Z_normalize() didn't follow its documentation) [#1032] 162- qfminim([1,2;2,1]*1.,,,2) -> SEGV [#1033] 163- [doc] const_col, const_vec: typo in prototype [#1040] BA164- precision(0.E100) returned an invalid object. 165- nbits2nlong, nbits2prec, nbits2nchar : avoid overflow [#1037] 166- normalization problems in RgX_Rg_add & friends, leading to t_POL with sign incorrectly set to 0, e.g. O(2)*x + 1 [#1042] 167- t_FFELT + t_FRAC -> SEGV (missing case in gadd) 168- polred(x) -> stack overflow [#1044] 169- sign of t_POL whose coefficients were all equal to 0 was not always set to 0 (RgX_add / RgX_sub) [#1053] 170- problems with p-adic gamma function : - remove extra digit in Morita's algorithm [ e.g. gamma(1/2+O(3^10)) ] - better threshold between Morita and Dwork's algorithm BA171- qfbhclassno(x) was wrong for x<0 172- subst(t_LIST,x,y) returned a copy without substituting [#969] substvec & substpol didn't work on t_LISTs BA173- RETRY macro was incorrect and could cause crash [#1064] BA174- factorpadic(,,,1) was actually using ROUND4 [#1064 again] 175- nfbasis(x^2+1,,factor(-4)) --> oo loop [#1072] 176- factorpadic: incorrect conversion from ZX to ZpX [#1073] 177- bnfinit() : possible overflow in double -> long conversion [#1099] 178- various inconsistencies in polinterpolate() [#1096] 179- rnfequation() broken when called over the prime field Q [#1079] BA180- F2x_divrem could call bfffo(0) which is not defined. 181- remove restriction on forsubgroup / subgrouplist that cyclic factors of all p-Sylows should have less than 2^32 / 2^64 elements Changed 1- [libpari] prototype of gpmalloc, gprealloc [ return void * ] 2- contfrac(x, b): no longer allow (undocumented) type t_MAT for b BA 3- builtin-in GP functions can now be used as closures. 4- allow nffactor(t_POL, t_POL), nfroots(t_POL, t_POL) [ necessary when nf.disc could not be factored and addprimes() would have to be used ] 5- removed undocumented interface FpM_mul(x,y,NULL), and analogously for FpV_dotproduct, FpV_dotsquare, FpM_FpC_mul 6- [library] major names cleanup; rename *lots* of functions: BSW_* -> BPSW_* Z_factor_limit -> Z_factor_until, auxdecomp -> Z_factor_limit assmat -> matcompanion certifybuchall -> bnfcertify derivpol -> RgX_deriv discf -> nfdisc, nfdiscf0 -> nfdisc0 element_div -> nfdiv, element_divmodpr -> nfdivmodpr, element_mul -> nfmul, element_mulmodpr -> nfmulmodpr, element_pow -> nfpow, element_powmodpr -> nfpowmodpr, element_reduce -> nfreduce, element_val -> nfval factorback0 -> factorback2 factorpadic4 -> factorpadic, factorpadic2 now static fundunit -> quadunit gcmp0 -> gequal0, gcmp1 -> gequal1, gcmp_1 -> gequalm1 Flx_cmp1->Flx_equal1, F2x_cmp1->F2x_equal1, FF_cmp1->FF_equal1 FF_cmp0->FF_equal0, FF_cmp_1->FF_equalm1 ZV_cmp0 -> ZV_equal0 gener -> znprimroot, ggener -> znprimroot0 greffe -> RgX_to_ser (+ change prototype) hil0 -> hilbert, hilii -> hilbertii [ delete useless hil() ] ideal_two_elt* -> idealtwoelt*, idealhermite -> idealhnf initalg -> nfinit, initalgred -> nfinitred, initalgred2 -> nfinitred2 initell -> ellinit, smallinitell -> smallellinit isfundamental -> Z_isfundamental ismonome -> RgX_is_monomial isunit -> bnfisunit matrixqz -> QM_minors_coprime matrixqz2 -> QM_ImZ_hnf matrixqz3 -> QM_ImQ_hnf minideal -> idealmin and change prototype mu -> moebius, gmu -> gmoebius, nfhermite -> nfhnf, nfhermitemod -> nfhnfmod, nfsmith -> nfsnf phi -> eulerphi, gphi -> geulerphi, phiu -> eulerphiu, poldeflate -> RgX_deflate_max polymodrecip -> modreverse powraw -> qfbpowraw, compraw -> qfbcompraw primedec -> idealprimedec racine -> sqrtint, regula -> quadregulator rename cmp_ZV -> ZV_cmp smith2 -> smithall, gsmith2 -> gsmithall srgcd -> RgX_gcd subfields0 -> nfsubfields, subres -> resultant, subresall -> resultant_all. torsell -> elltors and document it zideallog -> ideallog RgXQ_caract -> RgXQ_charpoly ZX_caract -> ZXQ_charpoly ZX_isirreducible -> ZX_is_irred pariputc -> pari_putc, pariputs -> pari_puts, pariflush -> pari_flush, gpmalloc -> pari_malloc, gprealloc -> pari_realloc, gpfree -> pari_free ordell -> ellordinate 7- polvaluation -> RgX_valrem(x, pz) and no longer accept pz = NULL (use RgX_val). Same for ZX_valuation -> ZX_valrem [ & ZX_val ] 8- rename u2toi -> uu32toi [ paste two 32-bit unsigned into a t_INT ] Write uutoi for the more natural operation of pasting two ulongs into a t_INT. 9- prototype of FpX_center [ add one argument ] BA 10- [svn/CVS] number development snapshots according to repository version 11- delete CVS.txt and replace it with README-subversion 12- syntax errors, SIGINT and "PARI bugs" are no longer trapped 13- quadray no longer allows an (optional) 3rd argument 14- 'format' was updated after each 'realprecision' change. Don't update if 'format' is Xm.-1 (show all significant digits). 15- the algorithm used to round t_REAL for output 16- the "minimum field width" component of the 'format' default is now ignored (was used only for integers in 'prettyprint' output mode and defaulted to 0 [no effect]). Use printf ! 17- %Z is no longer a valid conversion specification for PARI formats, since this is now handled as a length modifier. Use %Ps instead (P stands for PARI). 18- remove the (ugly) prettyprint engine ('output' = 2), render as matbrute. printp / printp1 now act as print/print1 19- pariprintf renamed to pari_printf, %Z conversion disappeared (use %Ps) 20- check for small prime divisors in ispower [ large speedup ] 21- the conversion style 'g' of the 'format' default now printfs in style 'f' if the decimal exponent is < -4 ( was: if the binary exponent is < -32 ), in order to conform to standard printf specifications. 22- [GMP kernel] enable GMP exact division 23- matdetint: use less memory + faster finish 24- change the default algorithm for mathnf(a) [ much faster ], flag 0 is no longer deprecated 25- library/GP function galoisinit() now returns NULL/0 on failure (used to raise an exception) 26- allow nfgaloisconj(t_POL, 1) [ cf C-4 ], never resort to nfgaloisconj(,2) [ slow, unreliable ] with default flag = 0 27- [library]: gsub now implemented directly when typ(x) = typ(y) BA 28- all LLL variants now use an implementation of NGuyen & Stehle's algorithm 29- [library]: the "prec" parameter of floating point LLLs has disappeared 30- Vecrev(x) now equivalent to extract(Vec(x), "-1..1") [was only for t_POL] 31- allow t_COMPLEX as well as t_QUAD in ellpow 32- we used to have Set(1) == Set("1") ( = ["1"] ). Now the latter returns ["\"1\""] (the Set whose element evaluate to the character string "1") 33- plotinit: change the way default arguments are evaluated (omit, instead of interpreting 0 in a special way) 34- nfbasistoalg / nfalgtobasis no longer accept t_VEC/t_COL/t_MAT, use matbasistoalg / matalgtobasis, which now also accept t_VEC/t_COL 35- uniformize factornf and nffactor outputs (+ speed them up for non-squarefree inputs: compute valuations mod a suitable prime) 36- treat Mat(t_LIST) as Mat(t_VEC) 37- t_POL^0 always returned t_INT 1 [ try to return 1 in coefficient ring ] 38- polresultant(x,y,,0) now chooses the best algorithm by itself [Ducos, modular, Sylvester], polresultant(x,y,,2) is now a synonym for the default. The change also improves poldisc(). 39- regression tests in src/test/in/ no longer need to end with 'print("Total time spent: ",gettime)' 40- arguments of stirling1 / stirling2 are now ulongs [ were longs ] BA 41- user variables can now be aliased [#790] 42- conjvec(POLMOD of INTMODs) was slow 43- bnfcertify can now handle Zimmert/Minkowski bounds > 2^31 44- moved misc/dico.new to src/whatnow + integrate it in the description system [ new script desc/whatnow ] 45- bittest(x, n) no longer accepts t_VEC arguments n 46- split library function disable_dbg() -> dbg_block() / dbg_release() 47- make the semantics of substpol more precise and less surprising: substpol((x^2+x+1)/(x^2+x-1),x^2,x^3) -> (x^3 + x + 1)/(x^3 + x - 1) [ was: (x^6 - x^3 - 2*x - 1)/(x^6 - 3*x^3 + 1) ] 48- deprecated flag '2' for bnfinit [ don't compute units ] is now ignored ==> bnfunit becomes totally useless. 49- the last component in prime ideals "primedec" format is a number field element, but no longer necessarily in t_COL form 50- no longer allow ideals in *non-square* t_MAT form 51- idealmin now returns a number field element, instead of the associated "principal idele" 52- cleared up the confusion caused by PARI "ideles", which were remotely related to the mathematical notion, and covered two distinct uses. The first one (ideal + list of real places) is now called "divisor"; the second one (ideal + factorization matrix, which used to be a vector of logarithms of complex embeddings) is now called "extended ideal". 53- Allow Scalar + t_COL: x + y returns [ y[1]+x, y[2],... ]. Consistent with RgC_Rg_add and RgV_isscalar, and allows linear algebra over number fields with less rigid data types (can mix freely t_COL, t_INT and t_FRAC, instead of converting everything to t_COL). 54- Functions quadunit(), quadregulator(), and factor() no longer apply componentwise to vector / matrix arguments. Use apply() 55- [libpari] removed obsolete 'prec' argument from prototypes of idealmul0, idealmulred, idealpow0, idealpowred, ideallllred, algdep, algdep0, lindep, lindep0 56- factorback() no longer accepts an optional 3rd argument (nf). Use idealfactorback(). See also nffactorback(). 57- Extend polhensellift to work over unramified extensions of Q_p [ was Q_p only ] 58- [libpari] changed prototypes of bnrdisc, bnrconductor, bnrisconductor 59- slightly change the matrices used in idealmin (round them): the elements returned are a little different. 60- no longer export private library function incgam2. Remove it also under GP when compatible = 3. Like incgam1 (suppressed), 1.39.15 doc stated it was provided "for debugging only". 61- addhelp: TABs are now treated properly (would overflow line without wrapping) and \n are no longer ignored. No longer add a trailing '.' when missing. 62- Useless nfinit flags 4, 5 (partial polred) removed. 63- Split off inline functions unrelated to the kernel from src/kernel/level1.h 64- Swap the order of the 2 arguments to select(): selection function now comes first [ as in apply() ] 65- error() messages now prefixed with the customary *** [ used to be ### ] 66- dvmdiiz(x, y, z) now expects z to be a t_INT [ to be consistent with all other xxxz functions where xxx includes only i,s,u arguments ] 67- improved charpoly(,,2) [ Hessenberg form ] 68- allow Flxq_mul and Flxq_sqr to call Flx_rem_montgomery 69- t_POLMOD * t_POLMOD with same modulus: if all coefficients are in Z/NZ, call specialized functions FpXQ_mul / Flxq_mul [ analog with gsqr, gdiv, ginv, powgi ] 70- bezout(): make sure the leading term of the gcd of 2 polynomials is positive (when it makes sense), as was already the case for gcd() 71- mpcopy, Flv_copy, Flx_copy, vecsmall_copy have all become aliases for leafcopy. 72- trap(,,foo) was actually equivalent to trap(,foo) changing the global exception handler, which was awkward an unintended 73- norml2(t_POL) now returns the expected (square of) the standard L^2 norm. Use x * conj(x) to get back the old behaviour. norml2 now raises an error on t_POLMOD and t_FFELT components; used to add relative norms as in ? norml2([Mod(Mod(1,3)*x,x^2-2), 2]) %1 = Mod(2, 3) 74- [library] kernel functions involving a t_INT and a t_REAL now return a t_REAL, e.g. divsr(0, x) or mulir(gen_0,x) return real_0(...) [ used to return gen_0 ] ==> much better control of object types when writing kernel code. Generic functions (gmul, gdiv), as called from gp still return a result as precise as possible given the input: 0 * 1. --> gen_0 75- [library] cleanup t_COMPLEX arithmetic to take advantage of real parts equal to a t_INT 0. Imaginary parts equal to 0 should never be created by our generic functions (so no need to cater for them specially: they will be very rare, produced by ad hoc routines). Special case trigonometric functions on pure imaginary arguments. 76- kill(z) no longer destroys user variable, only resets them to their "undefined" value (as z = 'z would). 77- [library] prototype of galoisconj [ add one argument ], and made it correspond to the default nfgaloisconj flag 78- allow ordinary sorted vectors in set* functions [ sets are still t_VECs of t_STR, but if components can be directly compared, ordinary vectors are simpler and faster ] 79- allow arbitrary nf entries in relative matrices; nfhnf and nfhnfmod return matrices whose entries may be t_INT or t_FRAC besides the traditionnal nfalgtobasis form. Allow ideals in arbitrary form [was: necessarily HNF] 80- linear algebra routines: determines first whether we are over Z/NZ then call specialized FpM_* routines if possible [fixes #376] 81- [library] commented out a large section of pariold.h. Define PARI_OLD_NAMES to recover compatibility macros for old friends like 'un' and 'lstoi' 82- Mat(t_QFI or t_QFR) now returns the associated 2x2 symmetric matrix 83- [library] rename Buchall -> Buchall_param and export a new Buchall with a simplified interface. 84- trap() no longer allows installing default error handlers. 85- GP's break loop is now *enabled* by default [ set breakloop = 0 in your gprc to disable it ], and no longer controlled by trap(). To get out of a break loop, hit Return three times (next, return, break are no longer accepted) BA 86- factormod and matker: faster linear algebra over F2. 87- remove duplicate polynomials in polred output [#874] 88- let forvec(X = v,...) respect the type of v (t_VEC or t_COL) 89- polred: compute characteristic polynomials as in polredabs [ using complex embeddings, not ZX_charpoly ] PMo90- algorithm for nfrootsof1 now defaults to nffactor: generically a little slower than qfminim, but safer and sometimes much faster (e.g. 1mn against a few hours) 91- added a new component nf_get_roundG to the nf structure [ to speed up ideal reductions ] BA 92- make test-xxx: trap SIGINT in benching script to exit on <C-C> 93- removed optional flag to rnfconductor, use rnfisabelian. 94- improved dirzetak() by an order of magnitude: e.g. K=nfinit(x^3-10*x+8), dirzetak(K, 10^6) from 4min (2.4.2) to 2.5s 95- renormalize rnfkummer output so that it cannot be written as P(C * x)*C^(-deg P) for any integer C > 1 [ saves large powers of C in disc P ] 96- added a flag to the (mostly useless) function rnfdedekind(), the version with the flag set is a little more useful. Allow list of prime ideals instead of single prime ideal, and make this list optional (omitted = test for maximality at ALL primes) 97- the "zetakinit" format: bnf no longer included 98- thueinit / thue: allow reducible and non-monic polynomials 99- rnfdedekind: allow non-monic polynomials 100- bnrclassno(bnr,id) : allow bid as well as modules for the 'id' argument. 101- GP 'path' now also applies for file paths containing a '/' provided they do not *start* with a '/' (i.e. not an absolute path) 102- [library mode] the function znlog now takes an extra "order" argument 103- added an optional "order" argument to znlog, fflog, elllog, znorder, fforder, ellorder, whose preferred format is [ord, factor(ord)] and ord is the order of the group 104- factor(t_INT/t_FRAC, lim) used to trial divide by primes up to min(lim, primelimit). Now we trial divide up to lim and raise an error if lim > primelimit. [ Having the routine return an obviously "wrong" result depending on an invisible parameter was not a good idea. ] 105- factor(t_INT/t_FRAC, 1) was the same as factor(t_INT/t_FRAC, 0). Now abide by the input value and leave (..., 0) as the single special case (shortcut for "the largest precomputed prime") BA106- [native kernel] Schoenhage-Strassen multiplication/squaring 107- factorff(A, p, T): make p & T optional if A has t_FFELT coefficients BA108- [TLS] Change pari_thread calling convention 109- allow x.a1, ..., x.a6 for an "ell5" x (5-component vector) 110- removed 'primelimit' grom gp_data struct: we now print the actual limit of the primetable, not the value input by the user (which may be a little less) BA111- listsort(L) no longer returns the list L: it now returns nothing. (No point in sorting in place if we must immediately copy the result.) 112- allow component(t_VECSMALL,...) [#957] 113- allow bestappr(x) [2nd argument made optional] BA114- GMP kernel chosen by default when GMP is available BA115- Rename RgXQ_u_pow to RgXQ_powu 116- Darwin: add -search_paths_first to LDFLAGS (try to solve the Editline / Readline conflict in a user-friendly way) BA117- [enable-tls] Library soname changed to libpari[-gmp]-tls[-2.4].so.N. 118- integrate a final polredabs in quadhilbertreal() BA119- Rename leftright_pow to gen_pow, leftright_pow_u to gen_pow_u and implement sliding window powering. BA120- galoisapply now accept automorphisms in t_COL format. 121- allow moduli equal to 0 in matsolvemod (was SEGV) [#947] + rigorously size-reduce the output in all cases. 122- the bnr structure in a minor way (bnr[6] has 3 components now) 123- cleaned up the code used by the GP evaluator to call PARI (and installed) functions. Functions can now have 20 arguments [#795] BA124- galoisfixedfield now accept subgroups. 125- ellap(E, p) second argument now optional if E has t_INTMOD or t_PADIC coefficients. 126- generalize the "generic pivot" strategy to all linear algebra (support RgM_solve and det() in addition to existing functions); implement maximal pivot strategy for p-adics [#1054] BA127- padic_sqrt -> Qp_sqrt, padic_sqrtn -> Qp_sqrtn, gammap -> Qp_gamma 128- rename rnfinitalg -> rnfinit 129- [readline + vi-mode] h/H no longer clobbered by online help. 'h' will now act as expected (= 'move left one character') 130- any of break / next / return now get out of the break loop debugger (as they used to in 2.3) 131- typing <Return> thrice no longer gets out of the break loop : use break 132- faster eta(,1), weber() and quadhilbert() [ rewrite using eta's functional equation explicitely ] 133- checked that no 2-strong pseudoprime passes BSPW primality test up to 2^64 (use Feitsma's list, extending Galway's) Added 1- many new benches (make test-all) 2- split up some large monolithic files: new files src/basemath/ RgV.c, FpV.c, ZX.c, ZV.c, concat.c, lll.c, hnf_snf.c prime.c, bit.c src/modules/ QX_factor.c, Hensel.c, DedekZeta.c 3- split off module of general inline functions: src/headers/pariinl.h. 4- Write or rename / document many convenience library functions: pari_calloc, cgetalloc mkfraccopy, mkquad, mkvecsmall4, absfrac, sqrfrac, mul_content, mul_denom roundr_safe, trunc_safe shallowextract, shallowconcat1, concat1, BPSW_psp & BPSW_isprime Z_smoothen, Z_ispower, Z_ispowerall Z_isanypower, chinese_coprime_Z, Z_chinese, Z_chinese_all, Z_chinese_coprime, Z_chinese_post, Z_chinese_pre, Z_incremental_CRT, Z_init_CRT, ZM_incremental_CRT, ZM_init_CRT, ZX_incremental_CRT, ZX_init_CRT, ZX_to_monic, ZX_primitive_to_monic, ZX_squff, ZX_gcd_all, nfgcd, nfgcd_all, RgX_disc, quad_disc, qfb_disc, ZpX_liftfact, ZpX_gcd, ZpX_reduced_resultant, ZpX_reduced_resultant_fast Fp_center, FpM_center, FpV_center Fp_ratlift, FpM_ratlift, FpX_ratlift FpM_FpC_mul_FpX Fp_red, FpXQ_red Flxq_add, Flxq_sub, FpXQ_add, FpXQ_sub, FqXQ_add, FqXQ_sub FqX_add, FqX_sub FqX_roots, FpX_factorff, FpX_rootsff FpXQX_div, FpXQX_rem, FpXQXQ_mul, FpXQXQ_sqr, FpXQXQ_pow FpXQXQ_inv, FpXQXQ_invsafe, FpXQXQ_div FqXQ_mul, FqXQ_sqr, FqXQ_pow, FqXQ_inv, FqXQ_invsafe, FqXQ_div FqX_extgcd ZC_ZV_mul, ZM_is_identity, ZM_copy, ZM_neg, ZM_add, ZM_mul, ZM_pow ZM_max_lg, ZM_sub, ZM_ZC_mul, ZXV_Z_mul, ZM_Z_mul, ZV_Z_mul, ZV_isscalar, ZV_copy, ZV_neg, ZV_neg_inplace ZV_togglesign, ZV_indexsort ZMrow_ZC_mul, ZV_ZM_mul, ZV_cmp0, ZV_content, ZV_equal, ZC_lincomb, ZC_lincomb1_inplace, ZC_z_mul, ZV_prod, ZV_pval, ZV_pvalrem zv_prod ZM_Z_divexact, ZC_Z_divexact, ZX_Z_divexact, ZM_charpoly, Flm_charpoly, Flm_hess Z_ZX_sub, ZX_Z_sub, Fp_FpX_sub, Flc_Fl_div, Flc_Fl_div_inplace, Flc_Fl_mul, Flc_Fl_mul_inplace, Flm_Fl_mul, Flm_Fl_mul_inplace, Flm_copy, Flm_mul, Flm_inage, Flv_Fl_mul_inplace, Flv_add, Flv_add_inplace, Flv_copy, Flv_dotproduct, Flv_sub, Flv_sub_inplace, Fl_order, Flx_nbfact_by_degree, Flx_roots_naive, FF_sub, Fp_mulu, FpV_inv, FpXQ_inv, FqV_inv, FpXY_eval, FpXY_evalx, FpXY_evaly, Flx_Fl_mul_to_monic, FlxqX_Flxq_mul_to_monic, FlxqX_rem, FlxqX_gcd, FlxqX_extgcd, FlxqXQ_mul, FlxqXQ_sqr, FlxqXQ_inv, FlxqXQ_invsafe, pol1_FlxX, FpX_Fp_sub, FpX_Fp_sub_shallow, FpX_Fp_mul_to_monic, FqX_Fq_mul_to_monic, FpXX_Fp_mul, RgM_check_ZM, RgM_det_trianguar, RgM_isdiagonal, RgV_check_ZV, RgV_neg, RgV_add, RgV_sub, RgV_Rg_mul, RgC_neg, RgC_add, RgC_sub, RgC_Rg_div, RgC_Rg_mul, RgM_neg, RgM_add, RgM_sub, RgM_Rg_div, RgM_Rg_mul, RgC_RgM_mul, RgC_RgV_mul, RgM_RgC_mul, RgM_RgV_mul, RgM_mul, RgM_sqr, RgV_RgM_mul, RgV_RgC_mul, RgV_add, RgV_neg, RgV_sub, RgC_Rg_add RgM_diagonal, RgM_diagonal_shallow, RgM_inv, RgM_solve, RgM_mulreal, mulreal, RgX_RgM_eval RgV_sum, RgV_sumpart, RgV_sumpart2 RgX_neg, RgX_add, RgX_add_shallow, RgX_sub, RgX_Rg_add, RgX_Rg_sub, Rg_RgX_sub, RgX_equal, RgX_equal_var, RgX_translate, RgX_to_nfX, RgM_to_nfM, RgC_to_nfC, RgX_type, RgX_type_decode, RgX_type_is_composite, RgX_Rg_divexact, RgXQ_norm, RgXQ_pow, RgXQ_caract, RgXQ_reverse RgXQX_translate, RgXQV_to_mod, RgXQXV_to_mod RgXQX_pseudorem, RgXQX_pseudodivrem, RgX_check_ZX, RgX_check_ZXY, RgX_pseudodivrem, RgX_pseudorem, RgX_recip, RgX_recip_shallow, ZC_hnfrem, ZC_hnfremdiv, ZM_det_triangular, ZM_detmult, ZM_equal, ZM_hnf, ZM_hnfall, ZM_hnfcenter, ZM_hnflll, ZM_hnfmod, ZM_hnfmodid, ZM_hnfmodall, ZM_hnfrem, ZM_hnfremdiv, ZM_hnfperm, ZM_snf, ZM_snfall, ZM_snfall_i, ZM_snf_group, ZM_snfclean ZM_lll, ZM_lll_norms, hnfmerge_get_1, ZXY_max_lg, ZX_copy, ZX_equal, ZX_max_lg, row_Flm, row_zm, scalar_ZX, scalar_ZX_shallow, deg1pol, deg1pol_shallow togglesign_safe, setabssign, zero_Flm, zero_Flv, zero_zm, zero_zv, zm_copy, zv_cmp0, zv_copy, zv_equal, zv_content, zx_renormalize, identity_perm, cyclic_perm, perm_mul, perm_commute, perm_inv, perm_pow, cyc_pow_perm, cyc_pow, perm_cycles, perm_order, vecperm_orbits bitvec_test_set, RgX_get_0, RgX_get_1, resultant, resultant_all, QX_disc, QX_resultant, lllfp, lllintpartial, lllintpartial_inplace, reducemodlll, reducemodinvertible, closemodinvertible, init_primepointer, galoisinit0, get_nfpol, get_bnfpol, get_prid, bnf_get_nf, bnr_get_bnf, bnr_get_bid, bnr_get_mod, bnr_get_nf nf_get_r1, nf_get_r2, nf_get_roots, nf_get_sign, nf_get_roots, nf_get_M, nf_get_G, nf_get_roundG, nf_get_Tr, nf_get_TrInv, nf_get_disc, nf_get_index, nf_get_pol, nf_get_zk nf_get_prec (was nfgetprec), nf_to_scalar_or_basis, nf_to_scalar_or_alg nf_to_Fq_init, nf_to_Fq, Fq_to_nf, zkmodprinit, zk_to_Fq_init, zk_to_Fq, nfM_to_FqM, FqM_to_nfM, nfX_to_FqX, FqX_to_nfX zk_multable, zk_scalar_or_multable, multable, tablemul, tablemul_ei, tablemul_ei_ej, tablemulvec, tablesqr, ei_multable. nfordmax, nfarchstar (was zarchstar), nfadd, nfsign, nfnorm, nftrace nfsign_arch, nfsign_units, nfsign_from_logarch, Buchquad, Buchall, Idealstar, idealaddtoone_i, idealcoprimefact, nfinvmodideal, nfpowmodideal, idealsqr, nfpow_u numberofconjugates, bnrisconductor0, bnrdisc0, bnrconductor0, bnrsurjection, ABC_to_bnr, idealred, idealred0 (was ideallllred), idealred_elt, idealred_elt0 ellinit_padic, ellinit_real, ellinf, ell_is_inf, ell_is_padic, ell_is_real, checkerr_real, checkell_padic, checksmallell, checkell5, checkellpt trueeta, exp_Ir, roots_from_deg1, deg1_from_roots 5- [libpari] public generic hashtables 6- library functions sqrr and invr [ Newton inversion, called by ginv() ] BA 7- library functions checkgroup, galois_group, cyclicgroup, dicyclicgroup, abelian_group, group_domain, group_elts, group_order, group_isabelian, group_abelianHNF, group_abelianSNF, group_isA4S4, group_leftcoset, group_rightcoset, group_perm_normalize, group_quotient, quotient_perm, quotient_group, quotient_subgroup_lift, group_subgroups, groupelts_abelian_group, groupelts_center, group_export, group_ident 8- library functions pr_get_p, pr_get_gen, pr_get_e, pr_get_f, pr_get_tau to access components of prime ideals BA 9- handle numerical derivation as an operation on closure. RB 10- GP functions printf, Strprintf 11- pari_printf, pari_fprintf, pari_sprintf, pari_vfprintf, pari_vprintf, pari_vsprintf BA 12- docpdf and install-docpdf targets (toplevel Makefile) JD 13- add an optional argument to quit() 14- universal constant gen_m2, for symmetry 15- GP function version() [ current version number ] BA 16- [ellap] Port of SEA algorithm from the ellsea GP package BA 17- new alarm GP function and alarmer error code RM 18- partitions() 19- New chapters in Libpari Guide: usersch6.tex, usersch7.tex 20- library function dbg_pari_heap 21- function bnfcompress() [ to create a "small bnf" from a true bnf, to be recoved using bnfinit ]. More consistent than old bnfnit(,3) / bnfmake. 22- a concept of "extended ideal" [I, t], where t is an algebraic number (possibly in factored form). The pair represents the ideal I x (t) In applications the norm of I stays bounded for a given base field, and t keeps track of the "principal part" of the ideal (usually in factored form to avoid coefficient explosion). 23- public interface to forsubgroup: traversesubgroups() 24- library function bnfisprincipal0 (with new public flags, see nf_GENMAT) 25- GP functions nffactorback / idealfactorback JD 26- GP function warning() 27- new flag to charpoly [ integral matrix, modular algorithm ] BA 28- GP function galoisisnormal() BA 29- F2x functions family for polynomials over GF(2) and BA 30- t_FFELT subtype_FF_F2xq for GF(2^n) BA 31- F2v/F2m functions family and F2m_ker for linear algebra over GF(2) BA 32- extra debugging data in t_CLOSURE and debugging facility. BA 33- compile-time copy optimizer BA 34- elliptic discrete logarithm function elllog() BA 35- direct implementation of ZX_mul, ZX_sqr using Kronecker's trick + mulii 36- rnfisabelian GP function 37- default 'recover' 38- more possibilities to draw "random" elements in natural sets using random(), e.g. finite fields, elliptic curve over finite field. 39- GP routines nfeltadd, nfelttrace, nfeltnorm BA 40- Pollard rho discrete logarithm algorithm (function gen_Pollard_log) 41- GP routine polrootsff 42- matadjoint: implement division-free algorithm (flag = 1) [#937] BA 43- GP routines and PARI functions ellweilpairing, elltatepairing and ellgroup BA 44- FpE functions family for points on E(F_p) BA 45- GP routine galoisgetpol and PARI function galoisgetpol, galoisnbpol BA 46- GP routine and PARI function elldivpol BA 47- GP routine and PARI function ellmodulareqn BA 48- function RgXQ_ratlift for reconstruction of rational functions. 49- optional flag to bnfcertify : only check that the correct class group is a quotient of the computed one. VB 50- mingw support VB 51- plotwin32 graphic engine 52- plotQt4 graphic engine BA 53- low-level accessors functions gal_get_* for galoisinit objects 54- libpari functions cvstop2, z_lval, z_lvalrem, z_pvalrem 55- GP function externstr() 56- library function ZC_reducemodmatrix, ZM_reducemodmatrix, ZC_reducemodlll, ZM_reducemodlll BA 57- libpari functions vecsmall_max and vecsmall_min BA 58- GP functions idealfrobenius and idealramgroups BA 59- library functions Zn_sqrt, Zn_issquare 60- library function gidentical BA 61- GP operator === that use gidentical 62- GP function sumdedekind() JD 63- [gphelp] support for bzip2 compressed documentation. Removed 1- obsolete GP functions printp, printp1. Either replace them by print / print1 [ or the new printf ], or define aliases alias(printp, print); alias(printp1, print1) 2- obsolete GP functions bnfclassunit, bnfreg, bnfclgp, bnfunit. Use bnfinit. 3- obsolete GP functions bnrclass. Use bnrinit or bnrclassno. 4- obsolete GP function idealprincipal. Use number field elements "as is" 5- obsolete GP function ideleprincipal. No routine remains that would use the auxiliary "archimedean information" 6- obsolete library functions extract and matextract 7- obsolete optional argument to quadhilbert(D < 0) 8- unused undocumented library functions os_open/os_read/os_close 9- obsolete README.DOS and README.WIN 10- cant_deflate, elliper1, lllger3, varer1, obsoler, infprecer, errlg, errexpo, errvalp, rtodber, affer2, primer2, siginter error codes 11- obsolete library function bruteall 12- useless undocumented library function gkrogs (use krois) 13- obsolete library functions roots2 and rootsold are no longer public 14- useless library function isnfscalar 15- obsolete undocumented library function factpol(), lift_to_pol() 16- library function combine_factors() is no longer public 17- obsolete undocumented library function rnfdet0, rnfdet2 18- obsolete library function discsr(). Use RgX_disc (or quad_disc, qfb_disc) 19- obsolete library function element_powmodidele() [use element_powmodideal + set_sign_mod_idele], ideleaddone, reducemodmatrix, nfreducemodidele, nfreducemodideal, nfreducemodideal_i, elementinv_modpr 20- useless macros gaddgsz, gaddsgz, gdiventgsz, gdiventsgz, gdivgsz, gdivsgz, gmaxgsz, gmaxsgz, gmingsz, gminsgz, gmodgsz, gmodsgz, gmulgsz, gmulsgz, gsubgsz, gsubsgz, gachz, gacosz, gashz, gasinz, gatanz, gathz, gchz, gcosz, gcotanz, gexpz, ggamdz, ggammaz, glngammaz, glogz, gpsiz, gshz, gsinz, gsqrtz, gtanz, gthz, gzetaz, gmaxz, gminz, TRgopgz, mpfloorz, mptruncz, mpdvmdz 21- obsolete library function gmillerrabin, gpolcomp, caradj0 22- obsolete library functions allbase, base, base2, factoredbase, smallbase, discf2, factoreddiscf, smalldiscf. Use nfbasis0 / nfdisc0 / nfmaxord 23- obsolete library function pari_rand31 [ use pari_rand ] 24- obsolete undocumented library function bruterr 25- obsolete library function smallbuchinit 26- awkward flag '3' for bnfinit. Use bnfcompress(). 27- badly named bnfmake. Use bnfinit(sbnf). 28- useless component v[6] in "small bnfs" (was 'different', is 0) 29- obsolete library functions buchray, buchrayinit, buchrayinitgen: use Buchray. 30- obsolete library function smallfact [ use boundfact or Z_factor_limit ] 31- obsolete library function gracine [ use sqrtint ] 32- obsolete library function ispsp, gispsp. Use ispseudoprime or BPSW_psp. 33- obsolete library function gregula, gfundunit, gboundfact. Use quadregulator, quadunit, boundfact 34- obsolete library functions ideallistunit, ideallistunitgen, ideallistzstar, ideallistzstargen. Use ideallist0. 35- obsolete library function algdep2. Use algdep0 (same arguments). 36- obsolete library function Mod0. Use gmodulo. 37- obsolete undocumented library function poldvd. Use RgX_divrem(x,y, ONLY_DIVIDES) 38- obsolete library function kerint1. Use kerint or ZM_lll(,0.99,LLL_KER) 39- header file paritype.h [ split between parigen.h and pariinl.h ] 40- obsolete library functions sor, outbrute, outbeaut 41- dangerous macros max & min [ use maxss/minss, maxuu/minuu, maxdd/mindd ] 42- deprecated global constants gi, geuler, gpi. Use mulcxI/mkcomplex/gen_I(), mpeuler() and mppi(). BA 43- bitvec family function. Use F2v instead. BA 44- useless prototype code 'S'. Use 'r' instead. BA 45- useless function delete_named_var. 46- obsolete and dangerous switch_stack() [#1013] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.4.2 (released 22/12/2007): Fixed 1- divrs(0., negative integer) had the wrong exponent 2- vecsort(,,4) was broken in 2.4.1 3- allocatemem(z) didn't check that z >= 0 [#556] 4- remove hack in internal function 'readbin' that used the clone bit as a special marker hence returned an invalid object, which could be propagated to higher level public functions. BA 5- sqrtn(Mod(a,p),..) and factorff() were broken in 2.4.1 BA 6- bitnegimply(1,2^65) returned a wrong result [#560] 7- nfeltreduce(nf,t_POLMOD,id) didn't work [#558] 8- [library] missing function intfourierexp() 9- segv in polrootspadic / repeated roots in FpX_root (only in deg 2) [#562] 10- log(2+O(4^4)) --> oo loop 11- log(exp(1e-100)) -> 1.000000000149525401279188592 E-100 [ for some accuracies, log & exp inacurate near 1 and 0 resp. ] 12- numbpart inaccurate (and slow). E.g numbpart(52602) off by 1 [#557]. BA 13- &, |, && and || were right-associative instead of left-associative 14- remove type assumptions in mulcxI, mulcxmI: unsafe [#516]] 15- too much memory allocated to print real numbers 16- (y/x)/(x^0/y) not correctly simplified 17- \s reported a misleading number of available user variables 18- 1/(quadgen(-4)*x)+0. -> exponent overflow [#591] 19- sumpos(x=1,1/x^2,1) had the wrong sign [#587] 20- matrixqz(x,0) would not work if first two determinants were 0 + might lose pointers in gerepile 21- sumpos(x=1,0) -> oo loop [#585] 22- qfminim([[;]],,,2) --> SEGV [#598] 23- intformal(1) --> incorrect object 24- intformal(y,x) --> y*y 25- matadjoint(0) --> gerepile error 26- prodinf(x=0,0), prodinf(x=0,-1,1) --> oo loop 27- agm(-1, 1+1e-55) --> oo loop, agm(-1,1) --> wrong result LGr28- killing hi-res graphic window created zombie process (missing wait()) 29- missing type check in eint1(x,n) 30- ploth(...) + Ctrl-C --> hi-res graphic window killed [use pari_daemon()] 31- quadgen([]) --> incorrect object [#606] 32- hyperu(0,1,1) --> oo loop [#608] 33- fix headers so that ulong is always defined 34- read("a b.gz") \\ filename contains a space gzip: ./a.gz: No such file or directory 35- logagmcx inaccurate [ used for log(t_COMPLEX), large precision ] 36- RgX_divrem: prevent "impossible" situations for weird base rings 1/ Mod((y-1)*x-1, Mod(2,6)*x^3-Mod(1,2)*x^2-1) --> SEGV 37- gclone didn't work on t_INTs with lg > lgefint 38- GC error in add_rfrac() [#612] 39- missing type check in subgrouplist [#616] 40- inconsistent type checking in nfeltdivmodpr [#617] 41- nfdisc(x^32+24888960*x^30+227077545803904*x^28+887225199431341086720*x^26+1145458263702669503266741248*x^24-459489127319699704284694158213120*x^22+73430099675988831740428200872826863616*x^20-6599321778961370851005469933592282336329728*x^18+369563540304176984501448638025309170375722401792*x^16-13214618078037183940422584396181416089308059714715648*x^14+291247424536170563676138246427605494527806096141868597248*x^12-3407227562250271661213064368167141844394234574629997803208704*x^10+8699659624155196549893192408316795253695601521375537680749690880*x^8+153390110447793800411208197070089975539253907830958400507847198638080*x^6-34704742472413552993642506624568826441560550586777137133227202205188096*x^4+43389826962123095743039577910848855441856968086933919852164410699581227008*x^2+336462877895453750216450425189196151877685043455706101021513167474262016, 1) --> "not a prime" error (help Round4 to recover when using non-primes, instead of raising immediate errors) [#624] 42- vecextract: C14 in 2.4.0 didn't work for large masks [#623] 43- clean up version handling: move version setting code to config/version and always set PARIVERSION from CHANGES if 'CVS' [ used to require a 'Configure' ] 44- zeta(0e1) --> SEGV [#627], exp(0e1*I) --> SEGV [#630] 45- exp(2^200*I) --> catastrophic cancellation [cos/sin were OK] [#631] DE 46- on NFS filesystems, make install would rebuild all [#503] 47- default(compatible,3); default(compatible,1) --> case no longer taken into account [#629] 48- missing GC in 'sigma' 49- eta(x): valuation would overflow if seriesprecision is large 50- typo in src/kernel/none/mp.c:convi --> inefficiency 51- concat(v) used too much memory (quadratic in #v, make it linear) [#634] BA 52- gp -q -f < eval('y) --> SEGV 53- "significant pointers lost" for objects involving 0 t_SERs [#635] 54- for trivial x, isanypower(x,&p) would not set p MSo55- [Configure] don't rely on $CC exit status, check whether a non-0 size executable is produced [ problems with tcc ] BA 56- wrong Prototype for subgrouplist [ extra 'p' ] 57- hole in 'secure' mode: don't allow changing psfile / logfile [#645] 58- nf.codiff was only correct up to multiplication by some rational number [cf #510 & 2.4.1-F7] 59- cgiv failed to delete the last object on stack [ if recursive ] LGr60- first default(parisize,*) would segfault [due to C-1, #569] 61- pariputs("") --> invalid read of size 1 [ valgrind ] 62- ell.omega, ell.eta, pr.gen could lead to gerepile error [#641] 63- y=[x];eval('y) --> error [#652] 64- incorrect use of gerepileupto in inittestlift [ galoisconj ] 65- extra multiplication in the innermost loop of Cholesky decomposition (qfgaussred, etc). 66- made FpX_add, FpX_sub, Fq_add, Fq_sub stack-clean. FpX_neg, Fq_neg returned an incorrect result if input was not reduced mod p 67- setrand(4);polgalois(x^8-264*x^6+25410*x^4-1054152*x^2+15856203) --> wrong result [#660] 68- build fails with "env: parameter list too long" [#661] 69- factorff did not accept inputs with t_FFELT coeffs 70- could use PARI stack while reading gprc [ before pari_init ] 71- Mod(Mod(1,v),v) --> invalid object. 72- a = Mod(y, v); y = Mod(1,v); eval(a) --> invalid object 73- for some complicated t_RFRAC z: z' --> impossible assignment I-->S 74- typo in bnfisintnorm(): missed some solutions [ couldn't find a unit of norm -1 even though one exists ] 75- ffprimroot(ffgen( t_POL of degree 1)) --> oo loop 76- wrong result in theta(q, z) if sin(nz) was small for some small n [#667] 77- 1/Mod(0,2) --> impossible inverse modulo: Mod(2, 2) 78- alias(a,b), then ?a --> 'a is aliased to a' 79- -Mod(0,2) --> Mod(2,2) MA 80- [Linux-PPC] missing -fPIC in DLCFLAGS 81- possible oo loop in _isprincipal [ precision was supposed to increase, but could in fact remain the same ] 82- quadregulator(y) -> SEGV [#674] 83- acos(x^0) -> division by 0 [ instead of O(x^8), at \ps 16 ] Analogously, acosh(x^0), asin(x^0), asinh(I+O(x)) --> division by 0 84- dilog(-1) [ more generally polylog of < 0 t_REALs ] should have 0 imaginary part 85- problems with [ build/install ] directory names containing spaces 86- avoid catastrophic cancellation in 3M [ Karatsuba ] formula for t_COMPLEX * t_COMPLEX 87- ix86, x86_64: missing earlyclobber constraint for addllx, subllx, divll 88- ploth(,4) --> huge memory use for large plots 89- stirling(0,0,2) --> 0 [ should be 1, #690 ] 90- deriv(x/(x+1),y) --> invalid t_RFRAC with exact 0 numerator [#687] 91- issquare(t_POL) assumed characteristic 0 [#549] 92- sqrt(Mod(4,5) + x) --> error [ e.g. stack overflow ] 93- hyperu(0*I,1,1) --> forbidden assignment t_COMPLEX --> t_REAL. BA 94- fix compilation problem with g++-4.2 and GMP. 95- ??factor_proven, ??factor_add_primes did not work 96- typo in znprimroot: wrong result for large moduli znprimroot(5*2^127+1) --> 2 [#696] 97- ffgen(x*Mod(1,2)) --> x [ should be 0 ] 98- ffprimroot(ffgen((x+1)*Mod(1,2))) --> oo loop 99- nffactor(nfinit(y),x^2+Mod(1,y)) --> SEGV [#699] 100- "precision error in minim0" on qfminim(G, norml2(M[,1]), 100) from tutorial 101- nffactor(nfinit(y^2+1),(2*x+1)*x*(x+1)) --> SEGV [#702] 102- isprime((6^2176+1)/(6^128+1)) --> length (lg) overflow [#697] [ analogous problems for any large integer ] 103- various problems related to allocatemem() [ + document quirks ] Remove the br_ALOCATEMEM construct and end allocatemem0() by a longjmp 104- missing GC in det_simple_gauss() [ matdet for inexact inputs ] 105- rare stack corruption in add_rfrac [#700] 106- add missing GC in gsubst 107- polred([pol, b]) computed unnecessary but possibly expensive invariants of pol [ e.g. disc, index ] 108- compilation failed on AIX [ YYSIZE_T, pow ] 109- ? Mod(1,2)*x + Mod(1,2)*y %1 = Mod(1, 2)*x + (Mod(1, 2)*y) \\ extra parentheses in constant term ? % + 0*z %2 = Mod(1, 2)*x + Mod(1, 2)*y 110- factornf(x^5+(-a+2)*x^4-a*x^3+(3*a-6)*x^2+(5*a-10)*x+(2*a-5), a^2-5) --> SEGV [ not squarefree -> denominators creeping in ] [#708] 111- problems with isexactzero and t_INTMODs. Mod(0,2)*x*1. -> 0, Pol(Mod(0,2))+2 -> 2, (2+0*I)+I*Mod(0,4)->Mod(2,4), Mod(0,2)/x -> 0 Use isrationalzero instead. 112- substvec(x^2, [x^2], [y]) --> y^2 [ should be an error ] 113- typo in FpM_gauss_pivot: FpM_rank, FpM_image, FpM_suppl, FpM_indexrank much slower than they should be. Analogous problem in FqM_gauss_pivot. BA114- missing GP2C descriptions for Pol and Polrev. BA115- zero FFELTs were not considered as exact zeros [#710] 116- rare SEGV in gp when recovering from error (dereferencing global_err_data equal to BREAK_LOOP) 117- vecsort(t_LIST) returned a t_VEC 118- gp "huge file" + stack overflow --> stack overflow in next interactive command (+ minor memoryleak) [#712] Changed BA 1- The combined GP parser/evaluator has been replaced by a bytecode compiler and a bytecode evaluator BA 2- install(): parser code 'E' and 'I' now refer to closures, not strings: 'I': closure whose value is ignored, like in for() loop 'E': closure whose value is used, like in sum() loop 3- Fl_pow renamed to Fl_powu [ exponent may not be negative ] 4- split usersch3.tex moving function documentation to src/functions/* 5- simplify table of contents for users.dvi 6- rename Flx_rand -> random_Flx, FpX_rand -> random_FpX BA 7- use factor_pn_1 to compute various orders in FF.c 8- file usersch3.tex is now generated from functions/* 9- rewrote logr_abs [ inaccurate + slow for x = 2^k * (1 - epsilon) ] 10- rewrote exp1r_abs [ inaccurate + slow ] and mpexp_basecase [ reduce input mod log(2) ] 11- rewrote mpsc1 [ slow ] -> faster sin and cos 12- [library] rename pointch -> ellchangepoint, coordch -> ellchangecurve 13- prototype of constpi, consteuler. 14- use a little less memory to compute pi, euler, log(2) 15- qfminim(x,b,m,flag) made 'm' parameter optionnal also when flag=0 16- made second argument to matrixqz optional, allow non-prime values 17- matpascal(n < -1), mathilbert(n < 0) now raise an error 18- add optional extra argument to ffprimroot, fforder, fflog 19- allow znlog(x,g) where g a t_PADIC or an t_INTMOD modulo any N that znprimroot(N) would accept 20- log(x t_PADIC): check whether x = 1 (mod p) before replacing x <- x^(p-1) 21- znprimroot(p^k): use isanypower() instead of factor(). E.g. znprimroot(nextprime(10^20)^1000): 8mn --> 12ms znprimroot(N) no longer checks reliably whether (Z/N)^* is cyclic. Result undefined if it is not. 22- padic sqrt much faster [ small and large accuracies ] 23- let primes() indicate a value of primelimit if unable to answer [#625] 24- remove variable names from ?0 25- exp(0e10) returned 1.000, made it 0exxx [ no significant digit ] MSo26- define polchebyshev(n, 1 or 2), pollegendre(n) for n < 0 27- znorder faster for non-prime modulus [ try it for Mod(2,5^10*7^10) ] (compute lcm of local p-adic orders) 28- changed icopyifstack / copyifstack macros so that their arguments are GENs, not GENs typecast to long. 29- add -funroll-loops to gcc flags when compiling arithmetic kernel 30- improve ellap (Shanks) by computing #E(F_p) mod 2 [ idea stolen from Pierrick Gaudry ] 31- nfreducemodpr was exceedingly slow for large t_POL inputs, e.g. w=x^48 + 158*x^46 + 4*x^45 + 12103*x^44 + 448*x^43 + 597874*x^42 + 23928*x^41 + 21373779*x^40 + 802424*x^39 + 588314524*x^38 + 18516794*x^37 + 12951694530*x^36 + 294992428*x^35 + 233870773964*x^34 + 2752210590*x^33 + 3524535272389*x^32 - 5797649292*x^31 + 44873186922754*x^30 - 798816466566*x^29 + 486736157075707*x^28 - 18082470992066*x^27 + 4523171646555185*x^26 - 271968456240780*x^25 + 36127625049532658*x^24 - 3144283847234232*x^23 + 248308835345289047*x^22 - 29271322082172250*x^21 + 1467438460133718165*x^20 - 223406933340907742*x^19 + 7435650911902583447*x^18 - 1405525828628464338*x^17 + 32139937168429173010*x^16 - 7272631544138987758*x^15 + 117563850386577478340*x^14 - 30686320483051428956*x^13 + 359649878031434743177*x^12 - 103986861631984042496*x^11 + 904392935429691313557*x^10 - 276283466933590000414*x^9 + 1822091999374665372405*x^8 - 554259164403897051340*x^7 + 2827767569115449802250*x^6 - 788757355446858093774*x^5 + 3170224521565069297504*x^4 - 708295322502763110380*x^3 + 2280480720610858280676*x^2 - 300602103002034938488*x + 788466592242441477569; nf=nfinit([w, nfbasis(w,1)]); modpr=nfmodprinit(nf, idealprimedec(nf,5)[1]); L = nfgaloisconj(w); vector(#L,i, nfeltreducemodpr(nf,L[i],modpr)); (in this example, the last reduction is down from ~ 1minute to ~ 2s) 32- make sure nfmodprininit chooses a monic T to represent Fq ~ Fp[X]/(T) [#646] 33- remove obsolete undocumented functions outerr, outbeauterr, outsor, outtex. Rename voir -> dbgGEN. Functions brute, outbrute, matbrute, outmat, sor, outbeaut are obsoleted and no longer documented. 34- rename errfile -> pari_errfile, infile -> pari_infile, logfile -> pari_logfile 35- extra test infrastructure [ drop file in src/test/in and possibly src/test/[32|64], then run Configure, no need to edit config/get_tests ] 36- inline gerepileupto/gerepileuptoleaf + improve gerepileupto 37- [libpari] cleanup of user / temp variable handling. manage_var obsoleted (kept for backward compatibility, to be removed), see Section 5.9 for new equivalents. Fixes #633, #650 38- fix t_LIST as components: v = [List()]; listput(v[1],) didn't work [#468] 39- listcreate() and listkill() are obsolete, don't use them. L = List() should be enough in all cases. All lists now grow as needed, without requiring an awkward maximal length (from listcreate). 40- rename sqred -> qfgaussred, signat -> qfsign, sqred1 -> qfgaussred_positive 41- rename gaddmat -> RgM_Rg_add and swap arguments. Add RgM_Rg_add_shallow 42- document library functions zv_neg, zm_transpose, fix typo in documentation for RgX_neg 43- document library functions gmaxgs, gmaxsg, gmings, gminsg. 44- document library function gfloor2n 45- document library function zx_shift 46- cleaned up splines handling [ ploth(,,,256) ] : remove quark_gen & QUARK BA 47- implicitly local variables are lexically-scoped BA 48- local and my can now appear anywhere in a program. 49- [library] rename apell -> ellap 50- Removed the OK_ULONG macro and renamed u_OK_ULONG -> SMALL_ULONG 51- Rename BIGINT -> NO_VARIABLE [used by gvar()], VERYBIGINT -> LONG_MAX, MAXULONG -> LONG_UMAX. Remove BYTES_IN_LONG, TWOPOTBYTES_IN_LONG 52- implement directly gsubsg [ was a macro calling a trivial wrapper ] 53- optimize multiplication for quadratic t_POLMOD [ t_QUAD remains faster ] 54- theta(q,z) very inefficient for large accuracies 55- remove support for nf of the form [nf, change of variable] in nfnewprec() [#672] 56- global() now obsolete and scheduled for removal LGr57- 'make ctags' gctags-specific flags [ add #defines, typedefs ] 58- prototype of nfsubfields [ 2nd argument GEN -> long ] 59- allow t_FFELT in issquare / issquarerem / ispower 60- sqrt(t_SER) now uses Newton iteration 61- rename gissquarerem -> gissquareall, uissquarerem -> uissquareall, Z_issquarerem -> Z_issquareall (analogy with sqrtrem was faulty: we do not store a remainder but the square root) BA 62- User functions are now regular variables holding values of type t_CLOSURE 63- Output of \u is now sorted 64- More explicit error messages in gp_history, e.g. *** History result %10 not available [%1-%6] BA 65- vecsmall_uniq(v) no longer assumes that v is sorted 66- allow ellorder to handle curves over Fp, add an optional parameter to indicate a multiple of the order as in znorder. 67- allow polcyclo(n, a) for an arbitrary a [ had to be a variable ] + major speedups: polcyclo(10^6) 5min -> 16ms. Similarly for polchebyshev, pollegendre and polhermite 68- ?0 listed all "user-defined identifiers". Restrict to "functions" 69- use simplify in setsearch() and Set() [#707] 70- change gcd(t_POL, t_POL) so that inexact inputs have scalar gcd [ used to compute a "sensible" approximate gcd ] Added 1- library functions expu, adduu, subuu 2- library functions divisorsu, factor_pn_1 (using cyclotomic factors and Aurifeuille), merge_factor 3- library function divru, dbllog2r 4- library function ZX_gcd, ZX_isirreducible 5- library function gtos 6- library function pari_daemon 7- library function Fp_sqr, padicsqrtlift 8- library function RgXQ_inv 9- bench 'extract' 10- charpoly: Berkowitz division-free algorithm (new default) [#541] 11- library function phiu 12- library function mkvecsmalln 13- library function chk_gerepileupto, dbg_gerepile, dbg_gerepileupto 14- library function gen_sort_uniq, gen_indexsort_uniq+add flag 8 in vecsort 15- library function remi2n, cmp_RgX, gen_cmp_RgX 16- library function RgV_dotproduct, ZV_dotproduct, RgV_dotsquare, ZV_dotsquare, FpV_dotproduct, FpV_dotsquare 17- library function FpX_Fp_add_shallow 18- library function Q_pval BA 19- new keyword "my" to declare lexically-scopped local variables. 20- new GP function listpop() 21- library function RgX_inflate, RgX_deflate, Flx_inflate, Flx_deflate, poldeflate 22- library function Fp_neg, Fp_add, Fp_sub 23- library function ugcd 24- library function vecinv, vecmul, vecpow, vecdiv, vecmodii 25- library function RgM_isidentity, RgV_isin 26- library function nfnewprec_shallow, bnfnewprec_shallow, bnrnewprec_shallow 27- library function Zp_issquare 28- library function dvmdsBIL, divsBIL, remsBIL 29- library functions gassoc_proto, map_proto_G, map_proto_GG, map_proto_GL, map_proto_lG, map_proto_lGG, map_proto_lGL [ were private with other names ] 30- default factor_proven 31- experimental -balloon option to gphelp LGr32- defaults graphcolormap, graphcolors [runtime-defined colormap for plots] LGr33- bit 4096 [ complex ] to ploth 34- member function .p / .mod for t_PADIC 35- same mnemonic flags to plotrecth as in ploth BA 36- member function .pol, .mod and .p for t_FFELT BA 37- New type t_CLOSURE to store GP functions 38- Ability to use arbitrary comparison functions in vecsort() 39- library functions closure_callgen1, closure_callgen2, closure_callgen, closure_callgenvec. 40- GP function apply(), select() 41- library functions FF_issquare, FpXQ_issquare, Flxq_issquare BA 42- library function vecsmall_uniq_sorted 43- bench 'ff', 'exact0' 44- has_getenv.c 45- library function FpX_oneroot 46- library function gcmpX 47- library functions ZV_sort, ZV_sort_uniq, ZV_search Removed 1- obsolete function kbessel2 (now static). Removed optional flag in besselk 2- Removed obsolete optional flag in ellap(), Mod() and gcd() 3- Rename gen_search_aux -> gen_search and document it [ old gen_search disappears: use tablesearch() ] 4- undocumented library functions gpolylogz, polylog, polylogd, polylogp, polylogdold. Use polylog0 with appropriate flags. 5- undocumented library function ghell2. Use ellheight0 with appropriate flag. 6- obsolete function log0; use glog 7- obsolete undocumented library function mpdivz, polzagreel, RgX_powers (use RgXQ_powers) 8- obsolete undocumented library function sqred3 9- the emacs/ directory: PariEmacs is now distributed separately. 10- obsolete functions ellap0, apell2 11- obsolete header file pariport.h 12- obsolete error codes paramer1, valencer1, accurer, caracer1 13- removed obsolete system-specific #ifdefs (macintosh, alliant) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.4.1 (released 28/03/2007): Fixed 1- qflll / qflllgram (t_MAT with t_FRAC entries) would not reduce to the integer case (--> insufficient precision, SEGV) [#505] 2- [Cygwin] missing -L... -lgmp when compiling with gmp. 3- ispower(522^3) -> 0 [ looked like a 7th power to is_357_power(), which then forgot to test for cubes ] [#506] LGr 4- [gphelp] race condition --> incomplete cleanup (improved patch BA) 5- Cleanup library linking: do not link libpari with -ld [only gp], do not link gp with -lgmp [only libpari]. Side effect: libgmp.so no longer needed for modules compiled by gp2c-run 6- when nf.disc < 0, nf.diff was an incorrect PARI ideal [#510] 7- nf.codiff was only correct up to multiplication by some rational number (a divisor of nf.disc) [#510] 8- inaccuracy (>= 2ulp) in [cached] log(2) [#498] 9- exp, sinh, asinh, tanh, atanh were inaccurate near 0 10- [GMP kernel] forvec(x=[[-1,0]],print(x)) --> error [#509] [ 'resetloop' failed when passing through '0' ] 11- nfbasistoalg(nfinit(y),x) created an invalid t_POLMOD 12- incorrect result in ZX_resultant (accuracy loss in bound computation) 13- bnfinit(): avoid further precision problems for large degree fields 14- [Configure] gcc-specific flags were used on linux/freebsd/cygwin, even when __gnuc__ was unset 15- factor( pure power FqX ) --> SEGV 16- [GMP kernel] polrootsmod(f, 4) --> wrong result [ low level t_INT manipulation not using the int_* macros ] 17- polrootspadic(f, 2, r) --> some roots would be found twice [ due to FpX_roots(f, 4) called ] [#521] 18- ??sumalt doesn't compile: in GPHELP, treat \ref in verbatim mode [#518] 19- matinverseimage returned [;] when no pre-image exists. Conform to the docs: "an empty vector or matrix", depending on the input types. 20- [Configure] abort when $CFLAGS is not supported by $CC 21- 3.5 % 2 --> error [ should be 0.5 ] 22- sin(1/10^100) --> 0e-28 [ also affected cos,tan,cotan ] 23- fix e.eta and elleta such that e.eta = 2 ellzeta(e,e.omega/2) [ was ellzeta(e,e.omega/2) ]. COMPAT. 24- elleta(e) was different from elleta(e.omega). Analogous problems in all quasi-elliptic functions. COMPAT: change e.omega so that e.omega[1] / e.omega[2] belongs to the Poincare half plane [ used to be the inverse ]. Together with 24: the Legendre relation now reads w1 e2 - w2 e1 = 2 I Pi Rationale: 1) the action of Sl_2(R) becomes the standard one, not a twisted one 2) fixes quite a few normalization problems in our code. 25- check that k >= 0 in thetanullk [#531] 26- isprime(-2,1) returned 1 27- Fix 'Not enough precision in thue' error BA 28- [OS X] Fix kernel detection on x86_64-darwin 29- Remove "VERY long time" Warning in bnfcertify (few minutes nowadays) BA 30- missing prototype for documented function ZY_ZXY_rnfequation 31- sqrt(x^2/y^2) --> SEGV [#536] 32- \r foo no longer worked if foo was a directory and foo.gp a valid input file [#540] BA 33- [Configure] spectacular failure to recognize gcc under some locales. 34- polredabs(x^8+2*x^6-5*x^4+78*x^2+9) was incorrect [ missed x^8+6*x^6-x^4+54*x^2+25 due to incorrect "skipfirst" ] [#542] 35- typo in resmod2n (both kernels) [#546] 36- At \p28, 0.1 - 0.1 would return 0.E-30 instead of 0.E-29 BA 37- missing prototype for documented function FpX_div_by_X_x 38- isprime(,0) very slow when primelimit is large [#546] 39- nfmodprinit could create FpX's which were not reduced mod p 40- O(x^3)^(1/2) was O(x^2) instead of O(x) RB 41- the following TODO item: v = vector(2); v[1] = v = 0 --> SEGV. Occurs with high probability if any variable is "deleted", while it (or part of it) is still in use Reference count could be helpful here. 42- substpol(x^-2+O(x^-1),x^2,x) --> error [#555] BA 43- [TLS] addss, addsr and subsr were not reentrant. Changed 1- concat(t_VECSMALL, t_VECSMALL) to return the concatenated vector [was: a vector with two t_VECSMALL entries] 2- pariprintf() so that it handles t_STR as print() [ don't include quotes ] LGr 3- [Makefile] make generated src/funclist independent of locale 4- Extend Pocklington-Lehmer to the case N-1 = FU, F > N^(1/3) BA 5- Much faster base-2 to base-10 conversion. BA 6- FpX_Fp_add() is now clean. BA 7- rename ZY_ZXY_resultant -> ZX_ZXY_resultant, ZY_ZXY_rnfequation -> ZX_ZXY_rnfequation and FpY_FpXY_resultant -> FpX_FpXY_resultant. BA 8- FpV_polint() now take a variable number as last parameter. 9- use Miller-Rabin-like improvement in znprimroot and FpXQ_gener 10- indexrank, indexsort and indexlexsort now return t_VECSMALLs 11- API for gen_sort, vecsort Added BA 1- derivnum(x=a,expr) for numerical derivations BA 2- library function strntoGENstr 3- function Vecrev BA 4- ppc64 level0 inline assembly kernel 5- library function floor_safe() 6- library function itostr() BA 7- library function Fp_div(), Fp_mul() BA 8- library function FpXQ_norm() BA 9- library functions FlxX_resultant() and Flx_FlxY_resultant() BA 10- library function FlxY_Flx_div() BA 11- library function Flm_transpose() BA 12- library function Flx_Fl_add() BA 13- library function Flxq_div() BA 14- function stirling (Stirling numbers of 1st and 2nd kind) BA 15- library function FpX_valrem() 16- library function Flxq_gener BA 17- library function Flxq_norm, Flxq_minpoly, Flxq_charpoly BA 18- [toplevel benchmark] ffisom BA 19- library functions Fp_order, FpXQ_order, FpXQ_log, FpXQ_sqrtn, Flxq_order, Flxq_log, Flxq_sqrtn 20- library functions gen_sort_inplace, gen_indexsort, sort_factor, indexvecsort BA 21- New PARI type t_FFELT and support functions (FF_*) for finite field elements. BA 22- functions ffgen, fforder, fflog, ffprimroot for finite field elements. Removed 1- obsolete functions readexpr(), readexpr_nobreak() 2- pariemacs support from Configure 3- obsolete functions sindexsort, sindexlexsort, sindexrank %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Done for version 2.4.0 (released 06/10/2006): 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. 2- rare accuracy problem in bnfinit P=x^8-787856*x^6+232721637848*x^4-30546112988506688*x^2+1503204734505922286224; setrand(1974190693); bnfinit(P) --> non invertible matrix in gauss 3- inconsistent return type in nffactormod [#460] 4- the following TODO item bnfinit may give wrong answers because we cheat on the value of Bach's bound, using B := 0.3 log^2 D by default, where 0.3 should really be 12 (under GRH). If the prime ideals of norm <= B do not generate the classgroup, we may not detect it, and compute junk. Ex: * setrand(3); bnfinit(y^4 + 1190*y^2 + 1416100).cyc --> [8,2,2,2]. The correct structure is [8,4,2]. * setrand(1414185642); bnfinit(y^4 + 635*y^2 + 403225).reg [twice the correct value] * setrand(867341586); bnfinit(y^4-y^3+6122*y^2+6121*y+37466641).gen[2] [is principal]. Group structure and regulator are correct! Retune check_bach() IZ 5- remove bogus test for "external help" (= ??) IZ 6- [OS/2]: stack check [prevent oo recursion] present but not enabled IZ 7- [OS/2]: bogus [BUG] in 'program' bench (install pb not detected) 8- gammah(1+O(3^5)) --> incorrect type in ggamd. 9- invalid read in copy_leaf [ SEGV in some libc ] BA 10- ellheight short help was accidentally truncated. 11- substpol(1+O(x^(2*n)),x^2,x) --> 1+O(x) instead of 1+O(x^n) [#470] 12- [OS X] only use -no-cpp-precomp with Apple cc 13- divrem(x,x,y) --> [1/y*x, 0] 14- (1+x)/(1-x)/(1+x)^2 not simplified [#472] 15- 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 16- simplification missed in div_scal_rfrac() [ #473 ] 17- ispower(x^k, k) would answer 0 for some x and k in {3,5,7} [#476] 18- content(t_MAT with exactly 1 col) gave a wrong result 19- random(N) was not uniformly distributed in [0,N-1] (use a reject strategy instead of moding out) [#210] 20- rare bug in red_montgomery (returning 0 with + sign, an incorrect object) [ polrootspadic(x^11+x,11,10) --> corrupts gen_0 ] 21- qfbsolve(Qfb(1,2,10),5) --> [0,0; 0,0] instead of 0 [#479] 22- ispower(0, n, &z) would not set z 23- wrong result in conversion t_QUAD -> t_PADIC whenever disc = 1 (4) JJ 24- gaddgsz macro was wrong [#481] 25- gener_Fl(p^k) can't handle k > 1, use gener_Zl instead [#480] SC 26- [GMP] mp_set_memory_functions was called with an incompatible realloc function. [#484] 27- raising a t_QFI or t_QFR to the power n would return a reduced form (OK) except when n = 1. Make it systematic. 28- in rare cases (return 0, native kernel) int_normalize was not suitable for gerepileupto 29- idealnorm(nf, t_POL) didn't work AM 30- [TeXmacs] typo in texmacs_output: x --> <bluex> [#491] 31- accuracy errors in bnfinit: setrand(3); bnfinit(x^2+999999999999971) [ use a failsafe version of gmod (modr_safe), and increase accuracy if necessary ] 32- possible corruption of gen_2 in mynegi() [ hnflll ] 33- factor(4/x) --> [2, 2; x -1] (content not removed) BA 34- bnrstark prototype code was non-standard. 35- rnfkummer(,,degree) often found too many fields [#482] 36- 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))) 37- missing GC in forvec(,,2) BA 38- Interrupting GP could lead to a freeze. [#488] 39- possible stack corruption in charpoly(,1) 40- Ser(x) raised an error [#499] Changed 1- moved cgiv, gtofp to inline kernel 2- reduce amount of memory needed by APRCL 3- remove CPP from Configure tests (not needed) 4- allow arbitrary sequences (not only expressions) in sum, prod, etc. sum(i = 1, 2, 1;2) --> 4 [ was: error ] 5- checked that no 2-strong pseudoprime passes BSPW primality test up to 10^15 (use Galway's list, extending Pinch's 10^13) 6- random() now uses Brent's XORGEN (replaces congruential linear generator) getrand() returns the FSR internal state array, used by setrand(). The latter no longer returns the input seed. (Initial patch by RR) 7- for install(): parser code 'E' is now obsolete, use 'I' 8- if issquare(x, &n) == 1, always set n to a square root of x 9- if ispower(x, k, &n) == 1, always set n to a k-root of x 10- issquare(t_QFI or t_QFR) now is an error. Use explicitly issquare(component(x,1)) if you relied(?) on the old behaviour 11- [library] rename gener_Fp -> pgener_Fp, gener_Fl -> pgener_Fp [ contrary to 'gener', these assume that their argument is prime ] 12- [library] rename cyclo -> polcyclo, subcyclo -> polsubcyclo, tchebi -> polchebyshev1, legendre -> pollegendre 13- restrict the types allowed in gaffect and gaffsg to scalar types and vectors of such. 14- vecextract(x, bitmask) much faster [ read bits, don't use shifts ] 15- improve hyperu 16- remove gp-specific signal handler. Use the one in libpari 17- [library] pol_1 and pol_x are no longer global arrays but functions 18- [GMP] was inefficient for small sizes (e.g. 1-word operands) 19- optimized rectplothrawin & plot (remove gaffect, use gtodouble whenever possible). Coordinate computations should be faster and more accurate. Added BA 1- function Flm_rank BA 2- Add experimental --enable-tls Configure option and thread-local stack support. Warning: using this option break the ABI. 3- centerlift(t_PADIC) 4- pgener_Zp, pgener_Zl 5- dvdiu, dvdis, dvdiu, dvdsi, affgr 6- cgetipos, cgetineg, togglesign RM 7- polhermite, polchebyshev2 8- allow rnf.zk and rnf.nf 9- [toplevel benchmarks] bnfisintnorm, quadclassunit, rnfkummer 10- ZX_factor, QX_factor 11- allow gzip'ped elldata & galdata files 12- allow t_VECSMALL in vecmin / vecmax BA 13- add pari_stackcheck_init() function to control deep recursion detection 14- Configure --tune flag Removed 1- Odos/Makefile (no longer functional, obsolete) 2- old CodeWarrior-specific hack (malloc) 3- error code: intger2, affer3, overwriter 4- useless static function gp_handle_SIGINT 5- functions changevar() [ use substvec ] and reorder() [ use variable() to get the list of user variables ], global arrays pol_1[], pol_x[] ordvar[] and polvar[]