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