Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/ Done for version 2.12.0 (released 01/06/2019): Fixed 1- memory leaks due to the use of varhigher/varlower 2- memory leak on error in plots 3- memory leak on error in newtoncharpoly 4- heap-buffer-overflow in init_prefix [readline] 5- mfsplit(mf,,flag) could return uninitialized objects => SEGV 6- mfeisenstein(k,,chi) was treated as E(k,chi) instead of E(k,1,chi) 7- poldegree(y/x) -> 0 [ instead of -1 ] 8- sumeulerrat(y/x^2,1) -> junk HC 9- incgam(-1000.4,2) -> SEGV 10- mfatkininit(mfinit([366,2]),2) -> precision error 11- forprimestep: wrong when wrapping word boundary (2^32 or 64) [#2071] 12- mfbracket: [f,g]_m was multiplied by (-1)^m 13- wrong results in mfatkininit / mfatkineigenvalues due to insufficient precision [#2073/#2074] 14- issquare(Mod(x,ffinit(3,2))) -> wrong result [broken Fq_ispower] 15- possible SEGV in rnfpseudobasis(, [pol,lim]) 16- wrong result in elllog over F_p, p in [2^63,2^64[ p=13824553909862352061; A=8953655473130154624; B=9775907253961339458; P=[6444058885176327583,7963649599850249187]; E=ellinit([A,B],p); Q=ellmul(E,P,2); elllog(E,Q,P) -> 0 [ Flj_mulu_pre would not accept n >= 2^63 ] 17- wrong result in mfsymboleval when path extremities are close to real axis (cusps were OK) [#2075] 18- mfcoefs(mfDelta(),0) -> SEGV [#2078] 19- GC error in lfuncreate(elliptic curve over number field) [#2080] 20- X11 and Qt graphic engine: pari_close called too soon => crash 21- pariold.h: mix up with obsoleted taille / taille2 BA 22- foo(n)=vector(n)[1..n];123; would corrupt the GP interpreter [#2081] 23- Pol(0)/'x -> t_INT 0 (instead of 0*x^0) Pol(0)/(Mod(1,2)*'x) -> t_INT 0 (instead of Mod(0,2)*x^0) 24- missing typecheck in nfalgtobasis [#2084] 25- dbllog2(t_COMPLEX of t_FRAC) => junk 26- nffactor(t_POL, t_POL) => bug in LLL_cmbf [#2083] 27- ideallog(pure archimedean conductor, t_FRAC) -> log(0) error 28- lfunrootres: avoid oo-loop 29- mfgaloistype: dihedral forms possibly incorrect for N > 3000 30- mfgaloistype: error on mf=mfinit([1159,1,Mod(930,1159)],0); 31- incorrect accuracy in limitnum / asympnum for alpha != 1 32- missing GC in polint_i 33- hash_GEN(x) returned different values depending on whether x was a clone BA 34- [mpi] setting nbthreads in .gprc could lead to crashes. 35- accuracy too large in derivnum => slowdown 36- nfisincl(x^5-x^4+x^3-2*x^2+3*x-1,x^20+x^15+x^10+x^5+1) -> SEGV 37- stack corruption in addsub_frac AP 38- segfault in rnfidealup [#2093] 39- Ser(x,x,0) -> error instead of O(x) [#2092] 40- fix mspolygon(,2) [add 1/3rd hyperbolic triangles + fix labels] 41- factor(3/(x^5+3*y*x^4+3*y^2*x^3+y^3*x^2)) -> SEGV 42- output from bnfcompress() mistaken for rnf and vice-versa 43- catastrophic cancellation in acosh / asinh for large t_COMPLEX 44- zeta(1/2 + I*t) => internal error 45- cos(z) and sin(z) imprecise when Im(z) is nonzero but tiny BA 46- hyperellcharpoly: wrong results over Z/3Z 47- gmp kernel: off-by-1 error in red_mongomery [read uninitialized memory, then ignores result] 48- intnuminit([-1,-1/2],[1,-1/2]) twice slower than it should 49- forcomposite(n=2,4,print(n)) -> empty [#2096] 50- relative extension of degree 1 was not properly supported in rnfidealprimedec and rnfidealup 51- mfmul(f,g) created invalid forms when f (resp. g) had Nebentypus chi (resp. chi') and Q(chi * chi') != Q(chi) or != Q(chi') [analogously for mfpow, mfdiv, mfbracket] 52- let [N,k,chi] = mfparams(f); f had coefficients in Q(chi) [or an extension thereof for eigenforms] but the values obtained from znchar(chi) and chareval were incompatible with mfcoefs when order(chi) = 2 (mod 4) [same cyclotomic field but different cyclotomic polynomial] FB 53- [Configure] library not found despite --with-readline-lib [#2097] 54- besseli, besselj, besselk, besseln(nu, z): use asymptotic expansion for large z [#2006] 55- minpoly(Mod(1,t^2)) -> SEGV [#2102] 56- a=ffgen(3^2,'a);poldisc(x^6+a*x+y) -> division by 0 [ positive characteristic with a few t_INT coefficients ] 57- intnumgaussinit(n) actually used 2*ceil(max(4,n/2)) quadrature points BA 58- [pthread] parapply could crash BA 59- ffinvmap(m) could SEGV on bad input 60- ellisdivisible(E/K number field in 'x) -> incorrect priority[#2106] 61- idealispower(nf, t_INT n) possibly wrong if (n, nf.disc) > 1 62- zeta''(0): all precision lost [more generally f'...'(n quotes) imprecise in the neighbourhood of 0, while derivnum(,n) was OK] 63- sumdigits(negative number, B) sometimes negative 64- poldiscfactors(x^0) -> division by 0 65- factormod(x^3+1,[y^2+1,2]) -> SEGV 66- factormod(x^3+1,[y^2+1,5]) -> weird error message 67- besseljh(huge n, z) -> junk BA 68- [pthread] localbitprec was not exported to threads BA 69- fix inefficiency in fplll not present in original code 70- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/2000,[1/100,oo]): no root [#2112] 71- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/1000,[1/10,oo]): extra root [#2112] 72- lfun may crash on lfuncreate input with too short an vector [#2118] BA 73- incorrect use of graphcolors -> SEGV 74- forcomposite(..., oo, ) was not supported BA 75- lfunartin with poles: incorrect result JD 76- factor: significant pointers lost [#2125] BA 77- matdet/matrank over large fields was inefficient 78- poldisc(y^2/x + 1, y) -> error [also affects polresultant] 79- poldisc(x^2/y + 1, y) -> 0 [also affects polresultant] 80- ispower(2, 2^64) -> error 81- (f(x) = x*'y); f'(1) -> error BA 82- sqrtn(Mod(3,19),4) -> no error [#2127] 83- nfhnfmod: wrong result 84- matdet(mat with t_RFRAC entries): wrong result [#2128] 85- n-th derivative of zetahurwitz used 'seriesprecision' instead of n + imprecise value when n large [#2130] 86- lfunzeros(f, [0, b]) wasn't allowed 87- mateigen(): typo causing wrong results when correct results were achievable [#2131] 88- intnum(x=-oo,[0,-1/2],1/sqrt(-x*(x^4+1))) -> division by 0 89- eint1(large x > 0) didn't use asymptotic expansion [#2129] 90- printtex(quadgen(-3,'z)) ==> w BA 91- [a,b]=a could lead to memory corruption 92- memory leak in cgetalloc when lg overflows 93- possible SEGV in padicappr [#2133] 94- zeta(small even integer) was very slow at large accuracy 95- core() could destroy its input, if stored in a GP variable BA 96- (f(x, y = 1) = x*y); f'(1) returned 0 97- quadgen(2^64+1) * 1. => junk (stack corruption in quad_disc). 98- ellmoddegree: infinite loop and stack corruption (e.g on 52a2) 99- ellmoddegree(ellinit("10890ba6")) -> wrong result 100- nfgcd called ZX_resultant(a,T) with typ(a) == t_INT 101- random SEGVs in bnfinit with large fundamental units [#2139] (due to fundamental units computed via floating point approximations rounding to 1 or -1) 102- qfisom([16,6;6,10],[4,3;3,10]) was not 0. [#2140] 103- mfeval: wrong result when level of form and space didn't match [#2134] BA 104- nfisincl(x^3+9,x^6+2187): wrong result [#2144] 105- ispower(27,2^60) -> SEGV [#2145] BA 106- matsolve(M,vector(n)) could return result of wrong dimension 107- [Windows] no longer crash on deep recursion [#2105] 108- factor(Mod(x^3 + x + y^2,2)) -> oo loop [#2148] Changed 1- [libpari] gp_filter return value is now allocated on the stack [was undocumented, malloc'ed and resulted in memory leaks] 2- improved n!, factorial(n), lngamma(n) and psi(n) for integral n 3- improved bernvec: no longer Obsolete 4- [libpari] mpbern is now obsolete: use constbern 5- rewrote the Bernoulli number cache (using zeta(2n) = * B_{2n}) and power recycling for zeta(2n) + additive Clausen von Staudt): orders of magnitude faster and always store Bernoulli in rational form BA 6- [libpari] ZpX_ZpXQ_liftroot_ea: change interface for 'early' 7- bnf.fu: return '0' if bnf does not contain the fundamental units (was an error) 8- support ?? _+_ and friends [extended help for specific operators instead of redirecting to "GP operators"] 9- support ?? _op=_ and ?? op=; support ?? _++ and friends 10- x ^ t_FRAC: return an exact result if possible; e.g. 4^(1/2) is now 2 HC 11- gamma(t_FRAC) and lngamma: use direct formula when denom | 24 12- serlaplace(scalar) -> return the scalar (understood as a constant polynomial) instead of raising an exception [#2082] 13- implement hyperu for arbitrary complex parameters 14- extend lex() to allow complex numbers 15- lfunconductor(L, [a,b]) no longer supported to look for conductor in interval [a,b]; implement lfunconductor(L, list of potential N) instead 16- renamed GP functions Strchr -> strchr (pari_strchr in libpari), Strexpand -> strexpand, Strprintf -> strprintf, Strtex -> strtex 17- [help] move str* functions from "conversions" to "programming" section BA 18- qfbsolve now returns a vector of solutions. 19- limitnum / asympnum: remove useless optional parameter 'muli/k' [now implicitly set to 1, not to 20]: just extrapolate u(muli*n). 20- improve rdivii / rdiviiz [ use divri which may use divri_with_gmp ] 21- mfparams now returns [N,k,CHI,space or P, Phi] where Phi is the cyclotomic polynomials defining the field of values of CHI 22- inline / uninline are now obsolete, use export/unexport 23- let localprec(p) accept non integral real p [replace by ceil(p)]; same for localbitprec. 24- let precision(x,p) accept non integral real p [replace by ceil(p)]; same for bitprecision. 25- besseln is now obsolete, use bessely 26- [libpari] precision0 / bitprecision0 (meant to implement GP-specific commands, not for library use) are now obsolete. The new equivalent commands (still not meant for library use) are precision00 and bitprecision00. 27- improve intnumgaussinit (use direct Newton instead of polrootsreal) 28- improve sumeulerrat / prodeulerrat 29- factor(x, D), D now encodes the domain over which to factor 30- allow listinsert(L, x, n) for n > #L, like listput 31- allow forsquarefree(n = a, b) with a*b < 0 32- allow L[a..b] and L[^i] for t_LISTs BA 33- gen_factorback: change argument order to match other functions 34- polinterpolate(X,Y,t,&e): e is now more precisely defined and the error estimate is given as a binary exponent; compared to the value dy returned up to this change, we have e = exponent(dy). 35- suminf is now sensitive to bit precision. In library mode, use suminf_bitprec (precision in bits) rather than the historical suminf (precision in words) 36- RgV_polint: use (asymptotically fast) FpV_polint over Fp BA 37- [libpari] pari_add_hist now take 3 arguments (data, cputime, realtime) BA 38- # and ## now also display the realtime when nbthreads is not 1 39- gp_format_time: remove trailing ".\n" from formatted string BA 40- GP: arguments of the parser code W can start with ~ for clarity, e.g. listput(~L,x), mapput(~M,x) BA 41- GP: the argument of a user member function is now a reference 42- make ellheight(E, torsion point) return an exact 0 [#2109] 43- allow rnfdisc(k, polynomial with non-integral coeffs) 44- allow rnfconductor(k, non-monic polynomial) 45- poldisc(t_COMPLEX) now raises an exception (used to return -4) 46- rnfdisc(nf, [T,B]) allow B a list of primes and maximal ideals (same for rnfbasis, rnfinit, rnfconductor, rnfpseudobasis) 47- ??? include double quotes when needed (e.g. ???conductor) [#2122] 48- improved the prime() function 49- mpeint1: support all t_REAL x != 0 (was x > 0) LGr 50- nffactor now supports rational functions 51- improve QM_gauss [treat contents sensibly] 52- lngamma and psi near 1: cache values of zeta(odd integers) 53- [libpari] nfbasis prototype changed: 3rd argument listP is gone, use nfbasis(mkvec2(T,listP), &disc). Note that the documentation was incorrect: it is not guaranteed that nfbasis([T, listP]) returns the maximal order even if listP contains all prime divisors of the field discriminant. See ??nfbasis 54- nfbasis now accepts an optional argument &dK [order discriminant] 55- mffromlfun: support forms of half-integral weight (e.g. from lfunqf) BA 56- [libpari] FF_Frobenius: return the image of the standard generator 57- faster poldiscfactors() 58- when 'log' is turned on, explicitly output the logfile name Added 1- [libpari] nonsquare_Fl 2- [libpari] set_avma BA 3- [libpari] FpXC_FpXQ_eval 4- [libpari] mulu_interval_step 5- new file src/basemath/bern.c 6- [libpari] divisorsu_moebius 7- [libpari] ZXQ_powu 8- new GP functions hypergeom, airy 9- [libpari] gc_bool, gc_double, gc_int, gc_long, gc_ulong, gc_NULL 10- new GP functions strsplit, strjoin 11- new file src/basemath/str.c 12- [libpari] has_str_len BA 13- qfbsolve(Q,n) now support arbitrary integer n. 14- [libpari] divisorsu_fact_factored 15- [libpari] qfiseven 16- [libpari] zv_cyc_minimize, zv_cyc_minimal 17- limitnum/asympnum: allow closures of the form N->[u(1),...,u(N)], which allows to handle efficiently sums, recursions, continued fractions, etc. BA 18- new GP function polteichmuller BA 19- [libpari] Flx_Teichmuller, F2x_Teichmuller 20- [libpari] mpsinhcosh 21- new GP function dirpowers BA 22- [libpari] F2xqX_resultant, F2xqX_disc, FlxqX_resultant, FlxqX_disc, FpXQX_resultant, FpXQX_disc, FFX_resultant, FFX_disc BA 23- FFX_gcd, FFX_extgcd 24- optional flag to pollegendre and polhermite 25- new GP function pollaguerre BA 26- [libpari] Flxn_red, Flxn_sqr, Flx_integ BA 27- new GP functions export, unexport, exportall, unexportall 28- [libpari] Fp_divu BA 29- [libpari] ZpXQX_liftroots 30- new GP functions getlocalprec, getlocalbitprec 31- [libpari] guncloneNULL, gluncloneNULL_deep 32- allow subst(e, x, vector v) for vector(subst(e, x, v[i])) 33- [libpari] pollegendre_reduced AP 34- new GP function mfgaloisprojrep 35- optional v argument to nfmodprinit 36- [libpari] rfrac_deflate, rfrac_deflate_order, rfrac_deflate_max 37- [libpari] identity_zv, identity_ZV 38- [libpari] polintspec, polint_i BA 39- [libpari] FF_var, FF_preimagerel BA 40- new GP function ffmaprel BA 41- [libpari] closure_derivn BA 42- [libpari] walltimer_start, walltimer_delay, pari_get_histrtime BA 43- new GP function strtime BA 44- [libpari] Flxn_exp, Flx_Newton, Flx_fromNewton, Flx_Laplace, Flx_invLaplace BA 45- Support call by reference in GP function: f(~L,x)=listput(~L,x+1) BA 46- Generic fast linear algebra using CUP decomposition 47- [libpari] nfX_to_monic BA 48- new GP function derivn BA 49- new GP function arity 50- new GP functions idealdown, idealismaximal 51- [libpari] bid_get_fact2 AP 52- new GP function bnrclassfield HC 53- implement lfunmfspec in odd weight HC 54- new GP functions ellE and ellK 55- [libpari] maxprimeN BA 56- support for rational model in ellratpoints and hyperellratpoints 57- [libpari] psi1series 58- [libpari] constzeta 59- new GP function nfdiscfactors 60- [libpari] RgV_is_arithprog 61- fast algorithm for zeta([a + b*n | n<-[0..N]]) BA 62- ellheight(E) now returns the Faltings height of E BA 63- lfun now allows non-integral weights OB 64- example/parigp.sty to re-enable PARI's \pmatrix with amsmath [#2110] IZ 65- [win32+gp-sta] support for install() 66- [libpari] setunion_i BA 67- [libpari] hash_init, hash_init_ulong BA 68- [libpari] FFXQ_minpoly BA 69- [libpari] F2x_recip 70- [libpari] RgV_isin_i Removed 1- member functions .futu and .tufu [deprecated since 2.2] 2- inferior hash function hash_str2: use hash_str 3- matsnf: remove obsolete binary flag '2' [make it a no no-op] (cf mathnf)