"Fossies" - the Fresh Open Source Software Archive

Member "pari-2.13.1/CHANGES-2.12" (1 Nov 2020, 36002 Bytes) of package /linux/misc/pari-2.13.1.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/
    2 
    3 Done for version 2.13.0 (released 19/10/2020):
    4   Fixed
    5      1- sizebyte(objects containing t_LIST): would assign size 3 to all lists
    6      2- [Map(Mat([0, 0])), [0, 0, 1]] -> SEGV
    7      3- zeta(I+2^(-64)) -> SEGV
    8 BA   4- permorder returned incorrect results for large orders
    9      5- p=[4,54]; lfunmf(mfinit(p,0), mftraceform(p,0)) -> oo loop
   10 BA   6- printf("%5.2f",M) transposed M [#2252]
   11      7- bnfinit instability at low accuracy. E.g., at \p38
   12         P=x^7+22*x^6+184*x^5+764*x^4+2020*x^3+3792*x^2+5712*x+4;
   13         bnfinit(P,1).no -> 4 times too large
   14      8- accuracy problems in bnfisunit after bnfinit(P,1). E.g.,
   15         P=x^7-22*x^6+169*x^5-568*x^4+1263*x^3-1506*x^2+2295*x+2;
   16         setrand(1); K=bnfinit(P,1); U=bnfunits(K,idealprimedec(K,2));
   17         bnfisunit(K,4*(x^2-18*x+85)/x^2*Mod(1,K.pol),U) -> error
   18 
   19   Added
   20      1- examples/pari.f90: example FORTRAN binding
   21      2- [libpari] quodif
   22 BA   3- [libpari] perm_sqr, perm_powu, perm_orderu
   23 BA   4- asymptotically fast quadunit
   24 
   25   Changed
   26      1- faster intnumgaussinit + change default number of points to B/4,
   27         suitable when b - a ~ distance to the nearest pole
   28 BA   2- [libpari] perm_pow now take a t_INT exponent
   29 BA   3- [libpari] permorder and perm_order now return a t_INT.
   30 
   31 Done for version 2.12.1 (released 16/09/2020):
   32   Fixed
   33 BA   1- plotlines flag was ignored
   34      2- fileopen(,"w" or "a") was bypassing the check for 'secure' default
   35      3- bug in idealismaximal: K=nfinit(y^2+7); idealismaximal(K,[11,7;0,1])->0
   36      4- bnfcertify did not certify correctly its argument when DEBUGLEVEL > 1
   37         (\g 2 and above) and the computed class group was trivial (introduced
   38         in 2002, commit d3d44841). The code was correct at \g1 or \g0, and in
   39         all cases if the computed class group was non-trivial.
   40      5- nfdiscfactors(nfinit([x^2+1, [1,x]])) -> wrong result (didn't support
   41         inputs from nfinit([T, integer basis]))
   42      6- nfinit(rnf) would produce a broken nf (not supporting
   43         nf_get_ramified_primes)
   44      7- [mf,F] = mffromqf([2,0;0,2]); L=lfunmf(mf,F) => wrong values
   45      8- t=mfTheta();mfslashexpansion(mfinit(t),t,[0,1;-1,0],1,1) -> error
   46      9- poldisc(x^4 + 8/y*x) -> type error in Q_divi_to_int [#2157]
   47     10- T=mfTheta(); mfeval(mfinit(T),T,I/10) -> wrong sign
   48     11- mfslashexpansion(mf,F,huge matrix,...) -> overflow
   49     12- mf=mfinit([470,2],0);F=mfeigenbasis(mf)[7]; mfcuspval(mf,F,1/5)
   50         -> division by 0
   51     13- quadtofp(quadgen(-3)) -> t_FRAC component [#2158]
   52     14- [from 2.12.0] nfgcd wouldn't terminate [#2159]
   53     15- conjvec(t_FFELT of characteristic 2) was missing a conjugate
   54     16- nf2 = nfnewprec(nf) could return incompatible nf2 [#2154]
   55     17- [from 2.12.0] u_forprime_next around 2^63 could return primes larger
   56         than upper bound
   57     18- [from 2.12.0] gcd(2*x, 2*x+1) -> 2 [instead of 1]
   58     19- [from 2.12.0] deriv(2/(4*x^2+1),x)->inconsistent exact division [#2162]
   59     20- issquare(non square t_FFELT, &x) -> SEGV [#2163]
   60     21- rdivii / rdiviiz imprecise, e.g.
   61         a=28088408347805994933529600180306266460976;
   62         b=10333147966386144929666651337523200000000; rdivii(a, b)
   63     22- typo in QM_inv (wrong result)
   64     23- modular symbols package: better type checks
   65     24- division by 0 in Flx_extresultant when one input is 0
   66     25- [from 2.12.0] lfunconductor(1,[]) -> SEGV
   67     26- internal error in isprime(,1) after addprime() [#2166]
   68     27- ZM_gauss returned incorrect result for t_MAT RHS and 0 input
   69 BA  28- lfunhardy(..., t) with t<0 -> error
   70 BA  29- ellweilpairing(E,P,P, odd m) -> wrong result [#2172]
   71 PB  30- FlxqM_mul could return wrong result [#2174]
   72     31- p = 4*vecprod(primes([3,373]))*587-1; quadclassunit(-p) -> SEGV [#2175]
   73 BA  32- Using local in export()ed functions could crash GP
   74     33- Flx_div_by_X_x(A, x) didn't handle deg(A) <= 0
   75     34- M=mfinit([11,2,Mod(3,11)]); f=mfbasis(M)[1]; lfuncheckfeq(lfunmf(M,f))
   76         -> type error
   77     35- rare random SEGV in nfbasis [#2178]
   78     36- missing type checks in lfunthetacheckinit [#2179]
   79     37- idealispower(x,n,&y): y could be incorrect [#2181]
   80     38- SEGV in idealispower [#2183]
   81     39- inconsistencies in subst for constant polynomials: e.g.,
   82           type(subst('u^0,u,x)) -> t_POL (was t_INT)
   83           subst('u^0,u,Mat(Mod(1,2))) -> [Mod(1,2)] (was [1])
   84 XR  40- factorpadic: incorrect factors (might not lift to Qp)
   85         E.g. T=polsubcyclo(271,9); factorpadic(T,3,7)[4,1]
   86 BA  41- polcompositum(x^2+x/3+1,x^2+x/3+1) -> SEGV
   87     42- p=nextprime(2^20);q=nextprime(2*p);n=q*p;v=n+1;P=x^2-1;
   88         zncoppersmith(v*P,v*n,p,p*v) --> oo loop
   89     43- missing reduction of pr.gen in idealprimedec [ slowdown ]
   90         + nfmodprinit [ division by 0 ]
   91 JR  44- polylog(-m, tiny z): catastrophic cancellation, e.g. polylog(-100,.5)
   92     45- prodeulerrat((p-2)/(p-1)+(p-1)^(m-1)/p^m,1,3) slow and imprecise [#2192]
   93     46- Mod(1,5) * O(x) -> O(x) [instead of Mod(0,5) + O(x)]
   94     47- lfuninit: lfunrootres calls too expensive if rootno and polar part known
   95     48- incorrect rounding in divrr(realprec = 3)
   96     49- polrootsreal(x+0.) -> SEGV
   97 DB  50- mspolygon(1,2): incorrect drawing
   98     51- qflllgram([2,2,3;4,5,6]) -> SEGV
   99     52- printf("%10.6f\n",2^-100) -> SEGV [#2198]
  100     53- mfsturm: off-by-1 error
  101 BA  54- ((x^7+x^3+x+1)*Mod(1,Mod(1,2)*d))%(x^4+x^3+x^2+1)->x^3+x
  102         instead of Mod(1,2)*x^3+Mod(1,2)*x [#2199]
  103     55- tan(-127336279536511925./2^49) -> completely wrong at \pb64
  104     56- ellocalred / K != Q: wrong encoding for I0 (kod = 1 instead of 0)
  105     57- atanh near -1: large relative error
  106     58- acosh near 1 or -1: large relative error
  107     59- type(subst('x^0,'y,0)) -> t_INT (instead of t_POL)
  108     60- bnfisprincipal: overflow when h >> 1
  109     61- lfun: Pi^s or (2Pi)^s imprecise when Im(s) >> 1
  110 BA  62- factor((x-1)*(x-y)^2) --> oo-loop
  111 BA  63- ellap could fail with division by 0
  112     64- wrong results in bnfsunit [#2207]
  113     65- problems with gequal(t_SER or t_POL with inexact coefs or constant
  114         wrt. some variables). E.g. S=x+O(x^2);T=S+O(y); S == T -> 0 [#2188]
  115     66- mfkohnenbijection failure [#2211]
  116 MW  67- mateigen would sometime return eigenvalues instead of eigenvectors
  117 AE  68- [libpari] FpX_oneroot_split could fail for deg 2 and 3.
  118 BA  69- [pthread] Fix potential crashes when cancelling threads.
  119     70- derivnum: add sanity checks for 'ind' [#2216]
  120 NM  71- nfisincl(x^2-2^5,nfinit(x^4-2)) -> wrong result [#2213, #2214]
  121     72- nfeltsign: wrong results for non-primitive elements in presence of
  122         ramification at infinity [#2217]
  123 HC  73- F=mfbracket(mfbd(mfEk(4),4),mfTheta(),1); mfcoefs(F,0) -> SEGV
  124     74- gammamellininv([0, 10^-38], 3/10) -> junk
  125     75- mfshimura, mfkohnenbijection: could create mf spaces with
  126         inconsistent character.
  127 BA  76- [mpi] sending t_LIST to remote nodes did not work.
  128 BA  77- my(a,b); parvector(1,i,self()) --> SEGV
  129 AP  78- bnrclassfield(,,2) --> sometimes relative polynomial
  130 AP  79- nfgrunwaldwang could modify its arguments
  131     80- ldata_vecan(an, N, prec): make sure the function returns N coefficients
  132     81- T=Pol([1,0,6748,-750056,45535504,-2530688944,140646000784]);
  133         bnfinit(T,1).cyc -> [240, 12, 4, 2, 2, 2] (instead of [120, 4, 4, 2])
  134 BA  82- [mt] variable priorities in threads could be incorrect.
  135     83- galoissubcyclo: wrong result with bnr input [#2232]
  136     84- subgrouplist(bnr) != [] when modulus is not the conductor
  137     85- incorrect type checks in ideallist
  138 BA  86- polmodular(p,,q) incorrect for large q
  139 BA  87- [pthread] polgalois(deg>7) could crash
  140     88- forqfvec or qfminim with negative bound => crash [#2237]
  141     89- Z_issmooth_fact: incorrectly include 1 among prime factors
  142     90- Rg[MX]_rescale_to_int: result had a large power-of-2 content
  143 DJ  91- sqrtn(Mod(13,112),6) -> o loop [instead of 'bad input' error]
  144     92- addprimes() creates issues with nfdisc [wrong results], because it
  145         breaks the assumption that a potential composite in a "bounded
  146         factorization" has to come last.
  147     93- addprimes() creates issues with thue [wrong results].
  148         addprimes(360000000029);
  149         #thue(x^2+1,500009*500029* 360000000029* 2^100) -> 0 [instead of 32]
  150     94- factor(257377849,100) -> [61,2; 69169,1] instead of  [61,2; 263,2]
  151     95- addprimes() creates issues with nffactor [wrong results].
  152     96- gmulsg(0, t_REAL) followed mulsr semantic (t_REAL) instead of gmul's
  153        (t_INT). Analogous problem for gmulsg(0, t_COMPLEX)
  154 BA  97- MPQS choice of multiplier and tuning were not optimal
  155 
  156   Changed
  157      1- [libpari] rename rootsof1 -> nfrootsof1
  158      2- [libpari] rename isirreducible -> polisirreducible
  159      3- hyperellpadicfrobenius: allow X defined over a number field and
  160         compute Frobenius over unramified extension of Q_p
  161      4- matsnf(integral matrix): use modular algorithm
  162      5- rnf structure now contains the list of relative ramified primes
  163      6- use the documented semantic for Euclidean division involving real t_QUAD
  164         e.g. x % y is x - floor(x/y)*y; for a t_QUAD x and t_INT y, we used
  165         to mod out y in "real" and "imaginary" part independently.
  166      7- [libpari] rename rootpadic -> polrootspadic
  167      8- polrootspadic: allow computing roots in unramified extension of Q_p
  168      9- definition of lfunhardy for non-self-dual functions: remove
  169         rootnumber, which is not well defined since it depends on the choice
  170         of dual sequence a^*(n)
  171     10- improved RgXn_powu / RgXn_powu_i for large valuations
  172     11- improved ZM_ker for wide rectangular matrices
  173     12- lfun(t_INT D): allow arbitrary non-0 D encoding the attached
  174         primitive character coredisc(D) (as for other character formats)
  175     13- exp(small rational number): use binary splitting
  176     14- parsum: removed optional argument [allows grouping of subsums => faster]
  177 BA  15- old gen_ZpM_Dixon renamed to gen_ZpM_Dixon_Wiedemann,
  178         new gen_ZpM_Dixon with simpler interface
  179     16- better formula for Catalan
  180 BA  17- QXQ_div_ratlift renamed to QXQ_div
  181     18- disallow mfeisenstein(k,chi1,chi2) when Q(chi1 chi2) is not its field
  182         of definition
  183     19- improved ZM_rank for rectangular matrices
  184     20- asymptotically fast variant for RgX_translate algorithms
  185     21- ZX_Uspensky(flag = 0) is now guaranteed to find all rational roots
  186     22- lfunzeros: allow intervals not contained in R^+
  187     23- removed obsolete function 'bnfcompress'
  188     24- [libpari] rename perf -> qfperfection
  189     25- format of bnf structure, to allow compact representations
  190 BA  26- [libpari] Z_to_F2x(s,v): v is now a shifted variable number
  191 AP  27- matrixqz(,-1 or -2): faster code + no longer return result in HNF
  192 AP  28- allow nfsubfields([nf,fa],): van Hoeij-Klueners-Novocin algorithm
  193     29- nfsubfields: retune to avoid huge inertia degrees
  194 BA  30- qfbsolve new flag: bit 1: 1 solution, bit 2: add imprimitive solutions
  195 BA  31- revert 2-12-0 C18: qfbsolve with default flag = previous behaviour
  196     32- division/inversion power series: use Newton
  197     33- deprecate LLL_COMPATIBLE (now implicitly always set)
  198     34- bnfissunit is obsolete, use bnfisunit
  199     35- bnfsunit is mostly obsolete, use bnfunits
  200     36- bnfisunit and bnfissunit: torsion unit exponent is now a t_INT (used
  201         to be a t_INTMOD)
  202     37- support compact representation in nfeltmul, nfeltpow, nfeltdiv,
  203         nfmodpr, nfeltsign
  204     38- elldivpol for negative n: define f_{-n} = -f_n [ was f_n ]
  205     39- support plotinit/plotexport even when the graphic engine is disabled
  206         (Configure --graphic=none)
  207     40- gpow(x,n): faster and more precise when n is a t_COMPLEX
  208     41- faster formula for log(2)
  209 BA  42- nfgaloisconj(deg 2 pol): swap result to follow nfroots.
  210 BA  43- lexical variables names can now reuse builtin functions names as in
  211         fun(theta)=my(gamma=1/3);sum(omega=1,10,exp(2*I*Pi*gamma*theta*omega)
  212     44- mfshimura: disallow the discriminant D argument, only allow
  213         squarefree positive t
  214 BA  45- closures: do not copy the full context, only the accessible part
  215     46- add optional argument to randomprime [select congruence class]
  216     47- add optional argument to sqrtint [set remainder]  [#2229]
  217     48- gammamellininv*(A,...): allow A to be an L-function
  218     49- bnrinit: optional argument to compute Cl_f/n, avoid tough discrete logs
  219     50- rnfkummer: removed "all" flag, function now obsolete. Use bnrclassfield!
  220     51- rnfconductor: flag to compute Cl_f/[K:Q] instead of Cl_f
  221     52- bnrconductor_i is now obsolete, use bnrconductor_raw or bnrconductormod
  222     53- dvdxxx(x,y) allow y = 0 [and return 0 unless x = 0]
  223     54- [libpari] bnrsurjection now returns [matrix, cyc(F), cyc(f)]
  224     55- idealstar: optional argument to compute G/G^n, avoid tough discrete logs
  225 HC  56- zetamultall: add flag
  226     57- subgrouplist: allow any object affording a .cyc method
  227     58- remove zetamultinit and corresponding optional argument in zetamult
  228     59- [libpari] ZM_lll: flags LLL_INPLACE and LLL_GRAM are now incompatible
  229         (reducing a Gram matrix in place without returning the base change
  230         matrix is not useful; supporting it would complicate the code)
  231 AP  60- improve bnfisprincipal in fields of large degree (test more small
  232         elements)
  233     61- bnrgaloismatrix(bnr) no longer needs a bnr with generators
  234         (from bnrinit(,1))
  235     62- bnrisprincipal(bnr,1) no longer needs a bnr with generators
  236         (from bnrinit(,1)). Added flag 4 analogous to bnfisprincipal (compact
  237         representation of principal part)
  238     63- added sanity checks when parsing default args in 'install' prototypes
  239     64- improved zetahurwitz: faster & use less memory
  240 BA  65- MPQS does not use temporary files anymore
  241 
  242   Added
  243      1- new GP function rootsof1
  244 BA   2- [libpari] F2xqX_halfgcd, FFX_halfgcd
  245      3- [libpari] uis2psp, uispsp
  246      4- [libpari] ZV_lcm
  247      5- [libpari] nfhyperellpadicfrobenius
  248      6- [libpari] rnf_get_ramified_primes
  249      7- allow nfinit([T, basis, ramified primes])
  250      8- allow nf.p, rnf.p [rational ramified primes]
  251      9- [libpari] idealfactor_partial
  252     10- add flag bit to ZM_snfall_i
  253     11- allow real t_QUAD in floor, ceil, divrem, %, \, \/
  254     12- [libpari] ff_parse_Tp
  255     13- new GP function mfisetaquo
  256     14- [libpari] Qab_tracerel, QabV_tracerel, QabM_tracerel
  257 BA  15- [libpari] RgXV_to_FlxV, FlxV_Flv_multieval,
  258                   F2v_and_inplace, F2v_negimply_inplace, F2v_or_inplace,
  259                   F2v_hamming
  260     16- [libpari] ZpX_primedec
  261 BA  17- [libpari] QM_sqr, FqC_to_mod, ZXQX_gcd, QXQX_gcd
  262     18- [libpari] radicalu
  263     19- parallel support for lfuninit
  264     20- new GP function parplothexport
  265 BA  21- [libpari] gen_ZpM_Newton, ZpM_invlift
  266 BA  22- [libpari] F2xn_red, F2xn_inv, F2xX_to_F2xC, F2xXV_to_F2xM
  267 HC  23- direct formulas for quadratic Dirichlet L-functions at integers
  268     24- new GP functions: eulerfrac, eulerpol, eulervec
  269     25- [libpari] lfunquadneg
  270 BA  26- [libpari] vecvecsmall_sort_inplace, vecsmall_isconst, vecsmall_is1to1
  271 BA  27- [libpari] groupelts_quotient, quotient_groupelts, groupelts_to_group
  272     28- new GP functions mscosets, msfarey
  273     29- new GP function ellpadiclambdamu
  274 BA  30- [libpari] Flx_Fl_sub, Flx_is_totally_split, Flxq_autpowers
  275     31- [libpari] Flx_translate1_basecase
  276     32- [libpari] Vgaeasytheta
  277 BA  33- [libpari] RgV_type, RgV_type2, closure_callgen0prec
  278 BA  34- lfuncreate: support for closures of arity 0
  279     35- [libpari] ZX_sturm_irred, ZX_realroots_irred
  280     36- [libpari] QM_image, QM_image_shallow
  281     37- new GP function asympnumraw
  282     38- [libpari] QM_gauss_i, SL2_inv_shallow
  283     39- [libpari] checkfarey_i
  284     40- [libpari] mspadic_parse_chi, mspadic_unit_eigenvalue
  285     41- [libpari] ellQtwist_bsdperiod
  286     42- [libpari] mseval2_ooQ
  287     43- [libpari] etaquotype
  288     44- new GP functions fft, fftinv
  289 BA  45- [libpari] init_Flxq
  290     46- compact representation of units in bnf (bnfinit(pol,1)) and of
  291         principal ideal generators (bnfisprincipal(bnf,id,4))
  292     47- [libpari] Flv_factorback, FlxqV_factorback, famatV_zv_factorback,
  293         famatV_factorback, FqV_factorback
  294     48- [libpari] nflogembed, nf_cxlog, nfV_cxlog, ZMrow_equal0, ZC_u_divexact
  295 BA  49- [libpari] FpXn_expint, Flxn_expint, Flx_blocks, FlxX_blocks
  296     50- [libpari] bnf_get_sunits, nfsign_tu, nfsign_fu, ideallog_units,
  297         sunits_makecoprime, famat_remove_trivial, bnf_build_cheapfu,
  298         bnf_compactfu, bnf_compactfu_mat, bnf_has_fu, famat_idealfactor,
  299         famat_div, famat_nfvalrem
  300 BA  51- [libpari] factorial_Fl, factorial_Fp, FpV_prod
  301 BA  52- [libpari] ZX_compositum
  302 BA  53- [libpari] FlxXn_red, FlxqXn_mul, FlxqXn_sqr, FlxqXn_inv, FlxqXn_expint
  303 BA  54- [libpari] FlxX_Laplace, FlxX_invLaplace, FlxqX_Newton, FlxqX_fromNewton
  304     55- [libpari] vec_reduce, vec_equiv
  305     56- lfuncreate(znstar or bnr,): allow a vector of characters =>
  306         vector-valued L-function
  307     57- [libpari] gc_const
  308 AP  58- [libpari] QM_ImZ, QM_ImZ_all, QM_ImQ, QM_ImQ_all
  309 BA  59- [libpari] RgXn_expint, FpXQXn_expint, FqX_expint
  310 AP  60- new GP functions nfsubfieldscm, nfsubfieldsmax
  311 BA  61- new GP function lfunshift
  312     62- [libpari] Q_lval, Q_lvalrem
  313 BA  63- [libpari] ZXX_evalx0, zx_z_divexact, zx_lval, upowers
  314     64- [libpari] is_qfb_t
  315     65- new GP function eulerianpol
  316 BA  66- [libpari] FlxX_translate1, zlx_translate1, zlxX_translate1
  317     67- [libpari] rfracrecip
  318     68- [libpari] ZXQ_minpoly
  319     69- [libpari] bnrchar_primitive_raw
  320     70- new GP functions matreduce, bnfunits
  321 BA  71- [libpari] QXQ_to_mod_shallow
  322     72- [libpari] nf_cxlog_normalize
  323 BA  73- [libpari] cmpss, cmpuu
  324 BA  74- [libpari] FpX_Fp_div, FpX_divu
  325 BA  75- holes in multi-assignement: [a,,c]=[1,2,3]
  326     76- [libpari] expIPiR, expIPiC
  327 BA  77- [libpari] forqfvec1, pariplot, sumdivmultexpr
  328     78- [libpari] powPis, pow2Pis
  329 BA  79- nfisincl: new flag: return a single embedding
  330 BA  80- [libpari] FpXC_to_mod, FpXM_to_mod, FqXC_to_mod, FqXM_to_mod
  331 BA  81- [libpari] FFX_add, FpXY_FpXQ_evaly
  332 BA  82- [libpari] halfgcdii, RgX_halfgcd
  333 BA  83- new GP function halfgcd
  334 BA  84- [libpari] pari_realloc_ip
  335 BA  85- [libpari] random_zv, F2m_transpose, F2m_row
  336 BA  86- [libpari] F2Ms_ker, F2Ms_colelim, F2Ms_to_F2m, F2m_to_F2Ms
  337     87- [libpari] Qdivis, Qdiviu
  338     88- [libpari] bnr_subgroup_check
  339     89- [libpari] pow2Pis, powPis
  340 AP  90- [libpari] bnrisprincipalmod, ideallogmod
  341     91- [libpari] bnrconductor_raw, bnrconductor_factored
  342     92- [libpari] cyc_get_expo
  343     93- new GP function bnrmap
  344 HC  94- new GP function polylogmult
  345     95- new GP function zetamultdual
  346     96- [libpari] checkbnr_i
  347     97- [libpari] absZ_factor_limit_strict
  348     98- [libpari] Idealstarmod, ZV_snf_gcd, ideallog_units0
  349 BA  99- [libpari] FqC_FqV_mul
  350    100- [libpari] gen_sort_shallow, vecvecsmall_sort_shallow
  351 BA 101- new GP functions parforprimestep, parforeach
  352 BA 102- [libpari] ZXQ_powers, ZXX_Q_mul, QXQX_mul, QXQX_sqr, QXQX_powers
  353 BA 103- [libpari] Kronecker_to_ZXQX, QXQX_QXQ_mul, ZXQX_ZXQ_mul
  354    104- [libpari] zv_sumpart, div_content, hash_zv
  355 BA 105- [libpari] groupelts_conj_set, group_subgroup_is_faithful
  356    106- qflll(x,3) in place reduction: return x * qflll(x) [faster]
  357    107- [libpari] idealpseudominvec
  358    108- [libpari] galoismatrixapply
  359 BA 109- new GP function permcycles
  360 BA 110- [libpari] FpX_FpXV_multirem, FpXV_chinese
  361 BA 111- galoisinit: support for group (3x3):4 (GAP4(36,9))
  362 BA 112- [libpari] minim_zm
  363    113- new GP function dirpowerssum
  364    114- [libpari] vecfactorsquarefreeu_coprime
  365 BA 115- [libpari] nfX_disc, nfX_resultant
  366 BA 116- new GP function lfundual
  367    117- [libpari] RgM_ZM_mul
  368 
  369   Removed
  370      1- obsolete function rootsof1_kannan: use nfrootsof1
  371      2- obsolete function checkbnrgen: use bnr_get_gen
  372 
  373 Done for version 2.12.0 (released 01/06/2019):
  374   Fixed
  375      1- memory leaks due to the use of varhigher/varlower
  376      2- memory leak on error in plots
  377      3- memory leak on error in newtoncharpoly
  378      4- heap-buffer-overflow in init_prefix [readline]
  379      5- mfsplit(mf,,flag) could return uninitialized objects => SEGV
  380      6- mfeisenstein(k,,chi) was treated as E(k,chi) instead of E(k,1,chi)
  381      7- poldegree(y/x) -> 0 [ instead of -1 ]
  382      8- sumeulerrat(y/x^2,1) -> junk
  383 HC   9- incgam(-1000.4,2) -> SEGV
  384     10- mfatkininit(mfinit([366,2]),2) -> precision error
  385     11- forprimestep: wrong when wrapping word boundary (2^32 or 64) [#2071]
  386     12- mfbracket: [f,g]_m was multiplied by (-1)^m
  387     13- wrong results in mfatkininit / mfatkineigenvalues due to insufficient
  388         precision [#2073/#2074]
  389     14- issquare(Mod(x,ffinit(3,2))) -> wrong result [broken Fq_ispower]
  390     15- possible SEGV in rnfpseudobasis(, [pol,lim])
  391     16- wrong result in elllog over F_p, p in [2^63,2^64[
  392         p=13824553909862352061; A=8953655473130154624; B=9775907253961339458;
  393         P=[6444058885176327583,7963649599850249187];
  394         E=ellinit([A,B],p); Q=ellmul(E,P,2);
  395         elllog(E,Q,P) -> 0 [ Flj_mulu_pre would not accept n >= 2^63 ]
  396     17- wrong result in mfsymboleval when path extremities are close to real
  397         axis (cusps were OK) [#2075]
  398     18- mfcoefs(mfDelta(),0) -> SEGV [#2078]
  399     19- GC error in lfuncreate(elliptic curve over number field) [#2080]
  400     20- X11 and Qt graphic engine: pari_close called too soon => crash
  401     21- pariold.h: mix up with obsoleted  taille / taille2
  402 BA  22- foo(n)=vector(n)[1..n];123; would corrupt the GP interpreter [#2081]
  403     23- Pol(0)/'x -> t_INT 0 (instead of 0*x^0)
  404         Pol(0)/(Mod(1,2)*'x) -> t_INT 0 (instead of Mod(0,2)*x^0)
  405     24- missing typecheck in nfalgtobasis [#2084]
  406     25- dbllog2(t_COMPLEX of t_FRAC) => junk
  407     26- nffactor(t_POL, t_POL) => bug in LLL_cmbf [#2083]
  408     27- ideallog(pure archimedean conductor, t_FRAC) -> log(0) error
  409     28- lfunrootres: avoid oo-loop
  410     29- mfgaloistype: dihedral forms possibly incorrect for N > 3000
  411     30- mfgaloistype: error on mf=mfinit([1159,1,Mod(930,1159)],0);
  412     31- incorrect accuracy in limitnum / asympnum for alpha != 1
  413     32- missing GC in polint_i
  414     33- hash_GEN(x) returned different values depending on whether x was a clone
  415 BA  34- [mpi] setting nbthreads in .gprc could lead to crashes.
  416     35- accuracy too large in derivnum => slowdown
  417     36- nfisincl(x^5-x^4+x^3-2*x^2+3*x-1,x^20+x^15+x^10+x^5+1) -> SEGV
  418     37- stack corruption in addsub_frac
  419 AP  38- segfault in rnfidealup [#2093]
  420     39- Ser(x,x,0) -> error instead of O(x) [#2092]
  421     40- fix mspolygon(,2) [add 1/3rd hyperbolic triangles + fix labels]
  422     41- factor(3/(x^5+3*y*x^4+3*y^2*x^3+y^3*x^2)) -> SEGV
  423     42- output from bnfcompress() mistaken for rnf and vice-versa
  424     43- catastrophic cancellation in acosh / asinh for large t_COMPLEX
  425     44- zeta(1/2 + I*t) => internal error
  426     45- cos(z) and sin(z) imprecise when Im(z) is nonzero but tiny
  427 BA  46- hyperellcharpoly: wrong results over Z/3Z
  428     47- gmp kernel: off-by-1 error in red_mongomery [read uninitialized
  429         memory, then ignores result]
  430     48- intnuminit([-1,-1/2],[1,-1/2]) twice slower than it should
  431     49- forcomposite(n=2,4,print(n)) -> empty [#2096]
  432     50- relative extension of degree 1 was not properly supported in
  433         rnfidealprimedec and rnfidealup
  434     51- mfmul(f,g) created invalid forms when f (resp. g) had Nebentypus chi
  435         (resp. chi') and Q(chi * chi') != Q(chi) or != Q(chi')
  436         [analogously for mfpow, mfdiv, mfbracket]
  437     52- let [N,k,chi] = mfparams(f); f had coefficients in Q(chi)
  438         [or an extension thereof for eigenforms] but the values obtained
  439         from znchar(chi) and chareval were incompatible with mfcoefs when
  440         order(chi) = 2 (mod 4) [same cyclotomic field but different
  441         cyclotomic polynomial]
  442 FB  53- [Configure] library not found despite --with-readline-lib [#2097]
  443     54- besseli, besselj, besselk, besseln(nu, z): use asymptotic expansion
  444         for large z [#2006]
  445     55- minpoly(Mod(1,t^2)) -> SEGV [#2102]
  446     56- a=ffgen(3^2,'a);poldisc(x^6+a*x+y) -> division by 0 [ positive
  447         characteristic with a few t_INT coefficients ]
  448     57- intnumgaussinit(n) actually used 2*ceil(max(4,n/2)) quadrature points
  449 BA  58- [pthread] parapply could crash
  450 BA  59- ffinvmap(m) could SEGV on bad input
  451     60- ellisdivisible(E/K number field in 'x) -> incorrect priority[#2106]
  452     61- idealispower(nf, t_INT n) possibly wrong if (n, nf.disc) > 1
  453     62- zeta''(0): all precision lost [more generally f'...'(n quotes)
  454         imprecise in the neighbourhood of 0, while derivnum(,n) was OK]
  455     63- sumdigits(negative number, B) sometimes negative
  456     64- poldiscfactors(x^0) -> division by 0
  457     65- factormod(x^3+1,[y^2+1,2]) -> SEGV
  458     66- factormod(x^3+1,[y^2+1,5]) -> weird error message
  459     67- besseljh(huge n, z) -> junk
  460 BA  68- [pthread] localbitprec was not exported to threads
  461 BA  69- fix inefficiency in fplll not present in original code
  462     70- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/2000,[1/100,oo]): no root [#2112]
  463     71- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/1000,[1/10,oo]): extra root [#2112]
  464     72- lfun may crash on lfuncreate input with too short an vector [#2118]
  465 BA  73- incorrect use of graphcolors -> SEGV
  466     74- forcomposite(..., oo, ) was not supported
  467 BA  75- lfunartin with poles: incorrect result
  468 JD  76- factor: significant pointers lost [#2125]
  469 BA  77- matdet/matrank over large fields was inefficient
  470     78- poldisc(y^2/x + 1, y) -> error [also affects polresultant]
  471     79- poldisc(x^2/y + 1, y) -> 0 [also affects polresultant]
  472     80- ispower(2, 2^64) -> error
  473     81- (f(x) = x*'y); f'(1) -> error
  474 BA  82- sqrtn(Mod(3,19),4) -> no error [#2127]
  475     83- nfhnfmod: wrong result
  476     84- matdet(mat with t_RFRAC entries): wrong result [#2128]
  477     85- n-th derivative of zetahurwitz used 'seriesprecision' instead of n
  478         + imprecise value when n large [#2130]
  479     86- lfunzeros(f, [0, b]) wasn't allowed
  480     87- mateigen(): typo causing wrong results when correct results were
  481         achievable [#2131]
  482     88- intnum(x=-oo,[0,-1/2],1/sqrt(-x*(x^4+1))) -> division by 0
  483     89- eint1(large x > 0) didn't use asymptotic expansion [#2129]
  484     90- printtex(quadgen(-3,'z)) ==> w
  485 BA  91- [a,b]=a could lead to memory corruption
  486     92- memory leak in cgetalloc when lg overflows
  487     93- possible SEGV in padicappr [#2133]
  488     94- zeta(small even integer) was very slow at large accuracy
  489     95- core() could destroy its input, if stored in a GP variable
  490 BA  96- (f(x, y = 1) = x*y); f'(1) returned 0
  491     97- quadgen(2^64+1) * 1. => junk (stack corruption in quad_disc).
  492     98- ellmoddegree: infinite loop and stack corruption (e.g on 52a2)
  493     99- ellmoddegree(ellinit("10890ba6")) -> wrong result
  494    100- nfgcd called ZX_resultant(a,T) with typ(a) == t_INT
  495    101- random SEGVs in bnfinit with large fundamental units [#2139]
  496         (due to fundamental units computed via floating point approximations
  497         rounding to 1 or -1)
  498    102- qfisom([16,6;6,10],[4,3;3,10]) was not 0. [#2140]
  499    103- mfeval: wrong result when level of form and space didn't match [#2134]
  500 BA 104- nfisincl(x^3+9,x^6+2187): wrong result [#2144]
  501    105- ispower(27,2^60) -> SEGV [#2145]
  502 BA 106- matsolve(M,vector(n)) could return result of wrong dimension
  503    107- [Windows] no longer crash on deep recursion [#2105]
  504    108- factor(Mod(x^3 + x + y^2,2)) -> oo loop [#2148]
  505 
  506   Changed
  507      1- [libpari] gp_filter return value is now allocated on the stack
  508         [was undocumented, malloc'ed and resulted in memory leaks]
  509      2- improved n!, factorial(n), lngamma(n) and psi(n) for integral n
  510      3- improved bernvec: no longer Obsolete
  511      4- [libpari] mpbern is now obsolete: use constbern
  512      5- rewrote the Bernoulli number cache (using zeta(2n) = * B_{2n})
  513         and power recycling for zeta(2n) + additive Clausen von Staudt):
  514         orders of magnitude faster and always store Bernoulli in rational form
  515 BA   6- [libpari] ZpX_ZpXQ_liftroot_ea: change interface for 'early'
  516      7- bnf.fu: return '0' if bnf does not contain the fundamental units (was an
  517         error)
  518      8- support ?? _+_ and friends [extended help for specific operators
  519         instead of redirecting to "GP operators"]
  520      9- support ?? _op=_ and ?? op=; support ?? _++ and friends
  521     10- x ^ t_FRAC: return an exact result if possible; e.g. 4^(1/2) is now 2
  522 HC  11- gamma(t_FRAC) and lngamma: use direct formula when denom | 24
  523     12- serlaplace(scalar) -> return the scalar (understood as a constant
  524         polynomial) instead of raising an exception [#2082]
  525     13- implement hyperu for arbitrary complex parameters
  526     14- extend lex() to allow complex numbers
  527     15- lfunconductor(L, [a,b]) no longer supported to look for conductor in
  528         interval [a,b]; implement lfunconductor(L, list of potential N) instead
  529     16- renamed GP functions Strchr -> strchr (pari_strchr in libpari),
  530         Strexpand -> strexpand, Strprintf -> strprintf, Strtex -> strtex
  531     17- [help] move str* functions from "conversions" to "programming" section
  532 BA  18- qfbsolve now returns a vector of solutions.
  533     19- limitnum / asympnum: remove useless optional parameter 'muli/k'
  534         [now implicitly set to 1, not to 20]: just extrapolate u(muli*n).
  535     20- improve rdivii / rdiviiz [ use divri which may use divri_with_gmp ]
  536     21- mfparams now returns [N,k,CHI,space or P, Phi] where Phi is the
  537         cyclotomic polynomials defining the field of values of CHI
  538     22- inline / uninline are now obsolete, use export/unexport
  539     23- let localprec(p) accept non integral real p [replace by ceil(p)];
  540         same for localbitprec.
  541     24- let precision(x,p) accept non integral real p [replace by ceil(p)];
  542         same for bitprecision.
  543     25- besseln is now obsolete, use bessely
  544     26- [libpari] precision0 / bitprecision0 (meant to implement GP-specific
  545         commands, not for library use) are now obsolete. The new equivalent
  546         commands (still not meant for library use) are precision00 and
  547         bitprecision00.
  548     27- improve intnumgaussinit (use direct Newton instead of polrootsreal)
  549     28- improve sumeulerrat / prodeulerrat
  550     29- factor(x, D), D now encodes the domain over which to factor
  551     30- allow listinsert(L, x, n) for n > #L, like listput
  552     31- allow forsquarefree(n = a, b) with a*b < 0
  553     32- allow L[a..b] and L[^i] for t_LISTs
  554 BA  33- gen_factorback: change argument order to match other functions
  555     34- polinterpolate(X,Y,t,&e): e is now more precisely defined and the
  556         error estimate is given as a binary exponent; compared to the value
  557         dy returned up to this change, we have e = exponent(dy).
  558     35- suminf is now sensitive to bit precision. In library mode, use
  559         suminf_bitprec (precision in bits) rather than the historical suminf
  560         (precision in words)
  561     36- RgV_polint: use (asymptotically fast) FpV_polint over Fp
  562 BA  37- [libpari] pari_add_hist now take 3 arguments (data, cputime, realtime)
  563 BA  38- # and ## now also display the realtime when nbthreads is not 1
  564     39- gp_format_time: remove trailing ".\n" from formatted string
  565 BA  40- GP: arguments of the parser code W can start with ~ for clarity, e.g.
  566         listput(~L,x), mapput(~M,x)
  567 BA  41- GP: the argument of a user member function is now a reference
  568     42- make ellheight(E, torsion point) return an exact 0 [#2109]
  569     43- allow rnfdisc(k, polynomial with non-integral coeffs)
  570     44- allow rnfconductor(k, non-monic polynomial)
  571     45- poldisc(t_COMPLEX) now raises an exception (used to return -4)
  572     46- rnfdisc(nf, [T,B]) allow B a list of primes and maximal ideals
  573         (same for rnfbasis, rnfinit, rnfconductor, rnfpseudobasis)
  574     47- ??? include double quotes when needed (e.g. ???conductor) [#2122]
  575     48- improved the prime() function
  576     49- mpeint1: support all t_REAL x != 0 (was x > 0)
  577 LGr 50- nffactor now supports rational functions
  578     51- improve QM_gauss [treat contents sensibly]
  579     52- lngamma and psi near 1: cache values of zeta(odd integers)
  580     53- [libpari] nfbasis prototype changed: 3rd argument listP is gone, use
  581         nfbasis(mkvec2(T,listP), &disc). Note that the documentation was
  582         incorrect: it is not guaranteed that nfbasis([T, listP]) returns the
  583         maximal order even if listP contains all prime divisors of the field
  584         discriminant. See ??nfbasis
  585     54- nfbasis now accepts an optional argument &dK [order discriminant]
  586     55- mffromlfun: support forms of half-integral weight (e.g. from lfunqf)
  587 BA  56- [libpari] FF_Frobenius: return the image of the standard generator
  588     57- faster poldiscfactors()
  589     58- when 'log' is turned on, explicitly output the logfile name
  590 
  591   Added
  592      1- [libpari] nonsquare_Fl
  593      2- [libpari] set_avma
  594 BA   3- [libpari] FpXC_FpXQ_eval
  595      4- [libpari] mulu_interval_step
  596      5- new file src/basemath/bern.c
  597      6- [libpari] divisorsu_moebius
  598      7- [libpari] ZXQ_powu
  599      8- new GP functions hypergeom, airy
  600      9- [libpari] gc_bool, gc_double, gc_int, gc_long, gc_ulong, gc_NULL
  601     10- new GP functions strsplit, strjoin
  602     11- new file src/basemath/str.c
  603     12- [libpari] has_str_len
  604 BA  13- qfbsolve(Q,n) now support arbitrary integer n.
  605     14- [libpari] divisorsu_fact_factored
  606     15- [libpari] qfiseven
  607     16- [libpari] zv_cyc_minimize, zv_cyc_minimal
  608     17- limitnum/asympnum: allow closures of the form N->[u(1),...,u(N)],
  609         which allows to handle efficiently sums, recursions, continued
  610         fractions, etc.
  611 BA  18- new GP function polteichmuller
  612 BA  19- [libpari] Flx_Teichmuller, F2x_Teichmuller
  613     20- [libpari] mpsinhcosh
  614     21- new GP function dirpowers
  615 BA  22- [libpari] F2xqX_resultant, F2xqX_disc, FlxqX_resultant, FlxqX_disc,
  616         FpXQX_resultant, FpXQX_disc, FFX_resultant, FFX_disc
  617 BA  23- FFX_gcd, FFX_extgcd
  618     24- optional flag to pollegendre and polhermite
  619     25- new GP function pollaguerre
  620 BA  26- [libpari] Flxn_red, Flxn_sqr, Flx_integ
  621 BA  27- new GP functions export, unexport, exportall, unexportall
  622     28- [libpari] Fp_divu
  623 BA  29- [libpari] ZpXQX_liftroots
  624     30- new GP functions getlocalprec, getlocalbitprec
  625     31- [libpari] guncloneNULL, gluncloneNULL_deep
  626     32- allow subst(e, x, vector v) for vector(subst(e, x, v[i]))
  627     33- [libpari] pollegendre_reduced
  628 AP  34- new GP function mfgaloisprojrep
  629     35- optional v argument to nfmodprinit
  630     36- [libpari] rfrac_deflate, rfrac_deflate_order, rfrac_deflate_max
  631     37- [libpari] identity_zv, identity_ZV
  632     38- [libpari] polintspec, polint_i
  633 BA  39- [libpari] FF_var, FF_preimagerel
  634 BA  40- new GP function ffmaprel
  635 BA  41- [libpari] closure_derivn
  636 BA  42- [libpari] walltimer_start, walltimer_delay, pari_get_histrtime
  637 BA  43- new GP function strtime
  638 BA  44- [libpari] Flxn_exp, Flx_Newton, Flx_fromNewton, Flx_Laplace,
  639         Flx_invLaplace
  640 BA  45- Support call by reference in GP function: f(~L,x)=listput(~L,x+1)
  641 BA  46- Generic fast linear algebra using CUP decomposition
  642     47- [libpari] nfX_to_monic
  643 BA  48- new GP function derivn
  644 BA  49- new GP function arity
  645     50- new GP functions idealdown, idealismaximal
  646     51- [libpari] bid_get_fact2
  647 AP  52- new GP function bnrclassfield
  648 HC  53- implement lfunmfspec in odd weight
  649 HC  54- new GP functions ellE and ellK
  650     55- [libpari] maxprimeN
  651 BA  56- support for rational model in ellratpoints and hyperellratpoints
  652     57- [libpari] psi1series
  653     58- [libpari] constzeta
  654     59- new GP function nfdiscfactors
  655     60- [libpari] RgV_is_arithprog
  656     61- fast algorithm for zeta([a + b*n | n<-[0..N]])
  657 BA  62- ellheight(E) now returns the Faltings height of E
  658 BA  63- lfun now allows non-integral weights
  659 OB  64- example/parigp.sty to re-enable PARI's \pmatrix with amsmath [#2110]
  660 IZ  65- [win32+gp-sta] support for install()
  661     66- [libpari] setunion_i
  662 BA  67- [libpari] hash_init, hash_init_ulong
  663 BA  68- [libpari] FFXQ_minpoly
  664 BA  69- [libpari] F2x_recip
  665     70- [libpari] RgV_isin_i
  666 
  667   Removed
  668      1- member functions .futu and .tufu [deprecated since 2.2]
  669      2- inferior hash function hash_str2: use hash_str
  670      3- matsnf: remove obsolete binary flag '2' [make it a no no-op] (cf mathnf)