PARI/GP Changelog

What's new in PARI/GP 2.8.1 Beta

Nov 1, 2016
  • Fixed:
  • nfroots(non-monic t_POL) => wrong result [#1841] [from 2.8.0]
  • crash on BIB in ellpointtoz(t_PADIC) [#1840]
  • nfisideal(nfinit(x^2+1),[1,0;0,2]) -> 1 instead of 0
  • intnuminit(-oo,oo,1) -> error [#1847]
  • idealstar([f_0,f_oo]) for f_oo t_VECSMALL (place selection) didn't work
  • msinit objects could not be saved to file then read back in [from 2.8.0]
  • wrong value for bnrrootnumber for non-primitive characters [#1848]
  • allow znstar(N,flag) for idealstar(,N,flag)
  • allow znlog(x,G) for G = znstar(N), instead of ideallog(,x,G), for DL wrt. G.gen; in addition to traditional znlog(x,g), where an arbitrary generator g is specified
  • e=ellinit([1,-1,1,98,126],O(5^10)); ellpointtoz(e,[1,14]) -> div. by 0
  • ellpointtoz(E / Qp, P) was not reduced mod q^Z
  • [breakloop] changes done in the first-level breakloop were lost when leaving the second-level breakloop.
  • polinterpolate could create illegal objects [#1837] (test-case by PB)
  • [libpari] FqX_nbfact did not work
  • incorrect change of variable in elllocalred over a number field for places dividing 6 [from 2.8.0]
  • contfraceval([[],[]],1) -> SEGV [from 2.8.0]
  • agm(1.0, 1.0*I + x + O(x^200)) -> oo loop [#1654]
  • primepi(2750160) -> crash [#1855]
  • polinterpolate([],[],Mod(1,3)) => 0 instead of Mod(0,3)
  • subst(Pol(0),x,Mod(1,3)) => 0 instead of Mod(0,3)
  • subst(Pol(1),x,Mod(1,3)) => 1 instead of Mod(1,3)
  • e=znconreyexp(idealstar(,N),) could give a result with (e,N) = 2 when N = 2 (mod 4) [from 2.8.0]
  • idealprincipalunits(,,1) not supported [ concat error ] [from 2.8.0]
  • stack corruption in pollardbrent() at g4 [#1858]
  • fflog could crash in char 2. [from 2.8.0]
  • is_universal_constant() made (possibly wrong) assumptions about memory layout (gen_0 < ghalf)
  • lfundiv(L1,L2): division by 0 if L2[6] (rootno) is 0.
  • inconsistent thresholds for zeta(2*n); e.g. at p100000, zeta(22934) was much faster than zeta(22936)
  • [pthread] fix race conditions that caused memory corruption
  • rare SEGV in bnfisprincipal
  • Added:
  • permtonum: allow t_VECSMALL input
  • [libpari] Z_to_perm, perm_to_Z
  • [libpari] checkprid_i, is_nf_factor, is_nf_extfactor
  • extend ellissupersingular for E/nf
  • added a tag Obsolete: to the RFC822 description system (pari.desc)
  • new GP functions nfmodpr, nfmodprlift
  • [libpari] get_arith_Z, get_arith_ZZM
  • [libpari] Mod2, Mod4, Mod8, Mod16, Mod32, Mod64, umodi2n
  • [libpari] logint, logintall
  • [libpari] zk_inv, zkmultable_capZ, zkmultable_inv, nfC_multable_mul, zkC_multable_mul
  • [libpari] Idealstarprk
  • [libpari] ZpX_monic_factor
  • [libpari] nf_to_Fp_coprime
  • [libpari] idealprod, idealHNF_Z_factor
  • [libpari] rnfcomplete, rnf_build_nfabs, bnf_build_cycgen, bnf_build_units, bnf_build_matalpha
  • [libpari] rnf_zkabs
  • [libpari] get_nf_field (black box field arithmetic over a number field nf), nfM_det, nfM_inv, nfM_mul, nfM_nfC_mul
  • [libpari] bnftestprimes
  • [libpari] upr_norm
  • [libpari] bid_get_fact, bid_get_ind, bid_get_sarch, bid_get_sprk
  • [libpari] qfbforms
  • [libpari] nfroots_if_split
  • [libpari] nfmaxord_to_nf, nfinit_basic, nfinit_complete, idealprimedec_kummer, nf_deg1_prime
  • [libpari] ZNstar, znstar0, znlog0
  • GP function znchartokronecker
  • [libpari] ser_inv
  • allow ellztopoint for E/Qp
  • [libpari] F2x_factor_squarefree, F2xqX_factor, FlxqX_factor
  • [libpari] FlxXC_to_F2xXC, F2xXC_to_ZXXC
  • [libpari] pr_uniformizer, prV_lcm_capZ, pr_inv, pr_inv_p, pr_basis_perm
  • [libpari] cmp_padic
  • [libpari] ZV_snf_trunc, ZM_hnfmodall_i, ZM_hnfall_i, ZC_Z_div
  • [libpari] uisprime_101, uisprime_661
  • [libpari] lift_shallow
  • [libpari] rowsplice
  • GP functions bnflogef, bnflog, bnflogdegree, nfislocalpower, rnfislocalcyclo
  • [libpari] varnmin, varnmax
  • allow ellglobalred for E over a number field
  • [libpari] FpXQX_split_part
  • [libpari] ZpXQX_roots, ZqX_roots, ZqX_liftfact, ZqX_liftroot, Zq_sqrtnlift
  • [libpari] hash_dbg
  • [libpari] Qdivii, ceildivuu
  • GP function ellintegralmodel
  • [libpari] ZM_hnf_knapsack, hnf_invscale
  • [libpari] pol_xn, pol_xnall, retmkrfrac
  • allow lindep(vector of t_VEC), lindep(vector of t_COL) [#1857]
  • [libpari] famat_pow_shallow, famat_mulpow_shallow
  • [libpari] modRr_safe
  • [libpari] Z_ppo, u_ppo
  • Changed:
  • remove useless flag in idealappr: directly allow factorization
  • [libpari] idealappr0 is now obsolete: use idealappr
  • replace qfbil(x,y,{q}) by qfeval({q},x,y) and qfnorm(x,{q}) by qfeval({q},x): it makes more sense to have q first, and a single function for qf+polar form (as in all other qf-like routines: ellheight, etc.)
  • functions nfeltdivmodpr, nfeltmulmodpr, nfeltpowmodpr, nfeltreducemodpr, nfkermodpr, nfsolvemodpr are obsolete. Use nfmodpr, work in the finite field, then lift back using nfmodprlift.
  • split off historical refcard in submodules basic, ell, lfun, mf, nf
  • rewrite nfeltinv / nfeltdiv (use mult. table rather than polmod representation)
  • idealred algorithm (find small y in I^(-1), not in I)
  • bnf format (allow dynamically adding units): old bnfs will be detected as invalid. Dirty trick to force conversion: bnf[10]=vector(3);
  • nfelt* functions may now return scalars (t_INT/t_FRAC) in addition to t_COL on nf.zk basis.
  • remove flag = 2 in nfgaloisconj (slow, unreliable, obsolete for 15 years)
  • bnfcertify(K): use automorphisms (speedup roughly #Aut_Q(K))
  • idealstar format, to access data more conveniently (and avoid recomputations): old bid and bnr structures from versions up to 2.8.0 are now invalid
  • narchstar output: include finf in output
  • set_sign_mod_divisor prototype: module is now useless (implicitly contained in sarch argument)
  • [libpari] removed discrayabs, discrayabscond, discrayrel, discrayrelcond, discrayabslistlong: obsoleted since 2.0
  • gcd(t_VEC/t_COL/t_MAT, ...) is now forbidden, same for lcm
  • E/Qp: add sequence of isogenous curves to structure (converges to the singular E_oo) => much faster ellpointtoz
  • ZpX_liftfact no longer handles extensions of Qp, use ZqX_liftfact
  • char_rootof1 renamed to rootsof1_cx, char_rootof1_u -> rootsof1u_cx
  • gp --test: consider that the session is not interactive
  • [libpari] rename listcreate to mklist
  • [libpari] rename idealinv_HNF -> idealHNF_inv, idealinv_HNF_Z -> idealHNF_inv, idealmul_HNF -> idealHNF_mul
  • [libpari] made famat_mul_shallow a true equivalent of famat_mul
  • move 'install' tests from test-program to test-install target
  • allow normlp(v, +oo)
  • [documentation] removed .ps files (use dvips -o if you need them); install dvis

New in PARI/GP 2.7.6 (Nov 1, 2016)

  • Fixed:
  • [from 2.7.5] O(1) == O(x) returned 0
  • matsolve(a,b) and a^(-1) gave wrong results [or SEGV] when t_MAT [F86] a was not square and a,b "modular" (F2m,Flm,FpM,FqM,F2xqM,FlxqM) same for x^(-1)
  • e=ellinit("11a1"); ellztopoint(e,3*e.omega[1]/5)[2] wrong
  • K.codiff incorrect if [K:Q] > 2
  • nfrootsof1(polcyclo(85)) -> 85 instead of 170
  • at p19, polroots((x+1)^2*(x-1)^7*(x^2-x+1)^5*1.0)-> SEGV
  • ellsea returned the trace instead of the cardinal as documented.
  • ellsea(,,1) could return a wrong result
  • memory leak in pari_close: sopath not freed
  • isprimepower(30011^(3*17)) returned 0
  • [mpi] interrupt/alarm could cause a crash
  • [mpi] relinking empty t_LIST caused a crash
  • my(s=1,a=0);forstep(i=1,20,s,s++;a+=i);a -> wrong result
  • sqrt(0) -> loss of accuracy (sqrtn was correct)
  • K = bnrinit(bnfinit(y^2-5),[1,[1,1]]); bnrdisc(K) ->wrong
  • ellztopoint(ellinit([-1,0]), I) -> wrong result

New in PARI/GP 2.4.2 Alpha (Apr 5, 2010)

  • divrs(0., negative integer) had the wrong exponent
  • vecsort(,,4) was broken in 2.4.1
  • allocatemem(z) didn't check that z >= 0 [#556]
  • 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]
  • nfeltreduce(nf,t_POLMOD,id) didn't work [#558]
  • [library] missing function intfourierexp()
  • segv in polrootspadic / repeated roots in FpX_root (only in deg 2) [#562]
  • log(2+O(4^4)) --> oo loop
  • log(exp(1e-100)) -> 1.000000000149525401279188592 E-100
  • [ for some accuracies, log & exp inacurate near 1 and 0 resp. ]
  • numbpart inaccurate (and slow). E.g numbpart(52602) off by 1 [#557].
  • BA 13- &, |, && and || were right-associative instead of left-associative
  • remove type assumptions in mulcxI, mulcxmI: unsafe [#516]]
  • too much memory allocated to print real numbers
  • (y/x)/(x^0/y) not correctly simplified
  • \s reported a misleading number of available user variables
  • 1/(quadgen(-4)*x)+0. -> exponent overflow [#591]
  • sumpos(x=1,1/x^2,1) had the wrong sign [#587]
  • matrixqz(x,0) would not work if first two determinants were 0
  • might lose pointers in gerepile
  • sumpos(x=1,0) -> oo loop [#585]
  • qfminim([[;]],,,2) --> SEGV [#598]
  • intformal(1) --> incorrect object
  • intformal(y,x) --> y*y
  • matadjoint(0) --> gerepile error
  • prodinf(x=0,0), prodinf(x=0,-1,1) --> oo loop
  • agm(-1, 1+1e-55) --> oo loop, agm(-1,1) --> wrong result