| Bill Allombert on Mon, 05 Sep 2022 14:19:55 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Please test pari-2.15.0 prerelease 1 |
Dear PARI developers, We have made available a first prerelease of PARI 2.15.0 (stable). This is a new major stable release. The expected release date is 19/09/2022. Please test the prerelease tarball: <https://pari.math.u-bordeaux.fr/pub/pari/snapshots/pari-2.15.0-pre1.tar.gz> The digital signature is <https://pari.math.u-bordeaux.fr/pub/pari/snapshots/pari-2.15.0-pre1.tar.gz.asc> Please test the 64bit Windows installer: <https://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/Pari64-2-15-0-pre1.exe> I have also built the 32bit Windows installer: <https://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/Pari32-2-15-0-pre1.exe> and the following standalone Windows binaries: 32bit <https://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gp32-2-15-0-pre1.exe> <https://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gp32-readline-2-15-0-pre1.exe> 64bit <https://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gp64-2-15-0-pre1.exe> <https://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gp64-readline-2-15-0-pre1.exe> 64bit, multithreaded <https://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gppthread64-2-15-0-pre1.exe> <https://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gppthread64-readline-2-15-0-pre1.exe> There are no Macos binaries for now. We need your help with building binaries for the new M1. Our build setup is obsolete running on macos 'mavericks'. I join the draft of the release announcement (the NEW file) and the changelog (CHANGES). On behalf of the PARI Group, Bill
This file highlights some of the novelties in PARI/GP 2.15 compared to
latest stable branch 2.13.*. The detailed Changelog is in CHANGES.
Incompatible changes are described in COMPAT.
%%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION 2.15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A general overview (slides and video) of new features is available at
http://pari.math.u-bordeaux.fr/Events/PARI2022/index.html#TUTO
[The GP language]
- Notion of DebugLevel "domains" that allow to finely control diagnostics.
See setdebug()[,1] to obtain a list of domains. You can still print out
everything using \g 10, but you can also be more specific and use
\g qflll 10
which sets the debug level to 10 only for the "qflll" domain,
i.e. everything related to the LLL algorithm (there are 60 domains so far).
The alternate syntax setdebug("qflll", 10) is available.
- The syntax setdebug(dom, val) and default(def, val) are now recognized in
the GPRC file
- Recall that random(10) returns an integer in [0,9]; now random(-10) draws
a random integer in the symetrized interval [-9,9]. More generally,
recall that random(10 * x^3) returns a polynomial of degree <= 3 and
coefficients in [0, 9]; now random(-10 * x3) draws coefficients in [-9,9].
- Recall that valuation(x, t) computes the t-valuation of x; the t argument
is now optional for types affording a natural valuation: t_PADIC, t_POL
and t_SER:
? valuation(sin(x))
%1 = 1
? valuation(175 + O(5^5))
%2 = 2
[Linear Algebra]
- qflll() now implements most LLL modes in fplll (fast, dpe and heuristic),
allowing large speedups. Directly and in the many functions that use the
LLL algorithm.
- new GP function snfrank(), a utility function returning q-ranks from
Smith Normal Forms
[Elementary Number Theory]
- New GP function: harmonic(), to compute generalized harmonic numbers
- Rework Euler numbers, analogously to Benoulli's: eulervec() is now
faster and caches computed values, and a new GP function eulerreal()
computes floating point approximations.
- dirpowerssum() now allows to twist by a completely multiplicative function
? dirpowerssum(N, s, n->kronecker(-23,n)) \\ sum_{n <= N} chi(n)n^{-s}
- New GP function factormodcyclo(n, p) to quickly factor the n-th
cyclotomic polynomial over Fp
[Elliptic Curves]
- New module to compute the Mordell-Weil group of rational elliptic curves:
ell2cover ellrank ellrankinit ellsaturation
See the tutorial (slides and video) at
http://pari.math.u-bordeaux.fr/Events/PARI2022/index.html#ELL
* ellrank() implements 2-descent together with Cassels's pairing
restrictions yielding rational points and an interval for the rank. If the
Tate-Shafarevic group has no 4 torsion and we spend enough time looking for
rational points (on the curve and auxiliary quartics), we obtain the
Mordell-Weil rank and generators V for a subgroup of finite index in E(Q).
* ellrankinit() precomputes ellrank() data for all quadratic twists of E.
* function ellsaturation(E,V,B) updates the generators V and guarantees
than any prime dividing the index must be > B.
* ell2cover() returns everywhere locally soluble 2-covers of E
(rational quartics on which we try to find a rational point).
- New GP function elltrace() summing the Galois conjugates of a point on E
- New input format for elliptic curves: ellinit([j]) as a shortcut for
ellfromj(j).
[Curves of Higher Genus]
- genus2red(): the given integral model is now a pair [P,Q] such that
y^2+Q*y = P is minimal everywhere (was minimal over Z[1/2]).
- new GP functions to handle models of hyperelliptic curves
hyperelldisc hyperellisoncurve hyperellminimalmodel
hyperellminimaldisc hyperellred
[L-functions]
- New module for hypergeometric motives, see ??hgm. GP functions
hgmalpha hgmbydegree hgmcyclo hgminit
hgmtwist hgmcoef hgmeulerfactor hgmissymmetrical
lfunhgm hgmcoefs hgmgamma hgmparams
See the tutorial (slides and video) at
http://pari.math.u-bordeaux.fr/Events/PARI2022/index.html#HGM
- New GP function lfunparams() to return the [N, k, Gamma factors] attached
to a motivic L-function.
- New GP function lfuneuler() to return the local Euler factor at a prime p
[Modular Forms]
- Faster implementation of mfinit() and mfbasis() in weight 1
- Add optional argument to ramanujantau() to compute the newform of level 1
and given small weight; parallelize implementation.
[Quadratic Fields]
- qfbcomp() now implements general composition of integral binary quadratic
forms (of different discriminants); f * g and f^n are shorthand for
composition and powerings of forms, including (real) extended forms with a
Shanks distance component.
- New GP function qfbcornacchia, solving x^2 + Dy^2 = n in integers
in essentially linear time.
- New GP functions quadunitindex() (index of the unit group of a quadratic
order in the units for the maximal order), quadunitnorm() (norm of the
fundamental unit). Used to improve qfbclassno for non fundamental
positive discriminants.
[General Number Fields]
- nfinit(), nfdisc(), nfbasis() now use lazy factorization: partially
factor the polynomial discriminant, hoping the unfactored part will be a
square coprime to the field discriminant, and that we will be able to
prove it via a variant of Buchmann-Lenstra's algorithm.
- New bit in nfinit flag to prevent LLL on nf.zk, which is a major speedup
when the field degree is large and only basic field or ideal arithmetic
is needed.
- New GP functions nfeltissquare() and nfeltispower() to quickly check whether
an algebraic number is a k-th power (and obtain a k-th root when it is).
- New GP function galoissplittinginit(T) to compute the Galois group of the
splitting field of T. This can be used in all Galois theory functions,
e.g., galoissubgroups(), galoisidentify(), etc.
- New GP function nflist to list number fields with given small Galois
group by increasing discriminant. Some groups (such as A5 and A5(6))
require the new 'nflistdata' package. The same function gives a regular
extension of Q(t) with the requested Galois group for all transitive
subgroups of S_n, n <= 15.
- New GP function nfresolvent() computes classical Galois resolvents
attached to fields of small degree
- Recal that ideallist(nf, B) returns integral ideals of norm bounded
by B > 0. The new ideallist(nf, negative B) returns integral ideals
of norm |B| (in factored form).
[Class Field Theory]
- New GP function bnrcompositum() to construct the compositum of two
abelian extensions given by a class field theoretic description.
- New module to deal with class groups of abelian fields and their Iwasawa
invariants:
subcyclohminus subcycloiwasawa subcyclopclgp
See the tutorial (slides and video) at
http://pari.math.u-bordeaux.fr/Events/PARI2022/index.html#CYCLO
- New module to generate and compute with Hecke characters:
chareval gcharalgebraic gcharconductor
gcharduallog gcharidentify gcharinit gcharisalgebraic
gcharlocal gcharlog gcharnewprec
See ??"Hecke Grossencharacters" as well as the tutorial at
http://pari.math.u-bordeaux.fr/Events/PARI2022/index.html#HECKE
[Transcendental functions]
- New GP function lerchphi(), lerchzeta() for the Lerch Phi and zeta function.
- New GP functions bessljzero(), besselyzero(), for J and Y Bessel functions
- Lambert W functions are now all supported, one can specify a branch as an
optional argument: lambertw(y, -1) corresponds to W_{-1}, defined for
-exp(-1) <= y < 0. Complex arguments are allowed (as well as power series
and p-adics)
- Speedup for a number of transcendental functions at rational
arguments, in particular atanh(), gamma() and lngamma().
- Allow sqrtint(), sqrtnint() and logint() for positive real number arguments
- We now allow hypergeom(N, D, t_SER)
[Numerical summation and integration]
- New GP function sumnumsidi() for Sidi summation.
- New GP function intnumosc() to integrate quasi-periodic functions of
half-period H on a real half-line:
? \p200
? H = Pi; intnumosc(x = 0, sinc(x), H) - Pi/2
time = 1,241 ms.
%2 = 0.E-211
A number of summation algorithms are used (Lagrange, Sidi, Sumalt, Sumpos).
See ??9 for a comparison of available integration or summation algorithms
- Allow endpoints in solve() to by +oo or -oo
[Miscellaneous]
- poliscyclo(): replace Bradford-Davenport's Graeffe method by their
invphi algorithm (much faster)
- New GP function polsubcyclofast: fast variant of polsubcyclo() in small
degree, returning ad hoc generators (instead of Gaussian periods)
- New GP function poltomonic(T): fast monic integral generating polynomial
for Q[x] / (T)
- New GP function qfminimize to minimize a rational quadratic form.
- New GP function setdelta() for symmetric difference.
- New GP function serdiffdep() to find linear relations with polynomial
coefficients of bounded degree between derivatives of a power series:
? y = sum(i=0, 50, binomial(3*i,i)*t^i) + O(t^51);
? serdiffdep(y, 4, 3) \\ order <= 4 and degrees <= 3
%2 = [(27*t^2 - 4*t)*x^2 + (54*t - 2)*x + 6, 0]
? (27*t^2 - 4*t)*y'' + (54*t - 2)*y' + 6*y
%3 = O(T^50)
COMPATIBILITY ISSUES BETWEEN 2.13.* and 2.15.*
============================================
0) Obsoleted functions and interfaces:
- default(debugfiles,) is now obsolete, use setdebug("io",)
- Unify real and imaginary binary quadratic forms: there are no longer
t_QFI and t_QFR for real an imaginary forms, only generic t_QFB.
One can still create a form using q = Qfb(a,b,c) [ or Qfb(v) if v=[a,b,c] ],
and a pair [q, d] denotes an extended (real) form including a Shanks
distance component 'd' (which used to be part of 'q', but no longer).
1) Output changes:
- system(cmd) now returns the shell return value
- elltwist now returns an ellinit, and accepts the same input formats
as ellinit ([a1,a2,a3,a4,a6], [a4,a6], Cremona label)
- genus2red 3rd component is now a pair [P,Q] such that y^2+Q*y=P is
minimal everywhere.
2) Input changes:
- qfbredsl2(q, S): change format of S: was [D,isD], is now isD
Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/
Done for version 2.15.0 (released 19/09/2022):
Fixed
1- slowdown in zeta (e.g. zeta(Pi) at \p500)
2- GC error in idealinv [#2258]
3- qfminim inefficiency (initial bound from non-LLL-reduced matrix) 4- mfshimura in weight 3/2 => oo loop
5- zetahurwitz(s, huge x) => overflow or very slow
6- matsolve([1,1,1/2; 1,0,1/2; 2,1,0], [-1;1;-1]) -> SEGV [#2261]
7- qfminim(Mat(1),,,2) -> precision error [#2262]
8- subst(p, v, t_SER) very slow if p contains many variables [#2264]
9- mfsymboleval for trivial path returned 0 instead of a vector of 0s
when f has multiple embeddings [#2260]
10- 2^(1 + O(3^4)) -> type error
11- Zn_quad_roots(8,0,-1) to compute roots of x^2-1 mod 8 -> [4,[1,3]]
(1 or 3 mod 4) instead of the expected [2,[1]] (1 mod 2) [#2265]
12- tan(1+10^20*I) -> overflow (same for cotan and psi)
BA 13- Mod(2,3)^1000000000000000000001 -> Mod(-1,3) [#2266]
14- subst(O(y) + x, x, (1 - y + O(y^2))*x + O(x^2)) -> SEGV [#2267]
15- (Mod(0,3) + x) + O(x^2) -> x + O(x^2) [now Mod(1,3)*x + O(x^2)]
16- precision too low for units in mfgaloisprojrep
17- missing GC at the end of RgXn_inv
18- (-1)^(1/3) -> -1 instead of exp(log(-1)/3)
19- mfeisenstein(k, trivial characters mod N > 1) not handled correctly
BA 20- missing GC in qfsolve
21- missing GC in nfeltval + better algorithm when valuation is huge
22- rnfidealup(, non-integral ideal) -> division by 0
23- memory leak in ellheight
24- memory leak in bnfinit
25- zeta(-2 + O(x)) => division by 0
26- nfeltdiv(nfinit(x^2+1), 0, 1+x/2) -> SEGV [#2277]
27- numerical instability in polinterpolate [#2278]
28- znchargauss(g,chi,0) -> oo loop
29- bnflog(bnr, ...) -> SEGV
30- elliptic functions: incorrect reduction of z/w1 mod [1,tau] =>
catastrophic cancellation
31- powcx(x, t_COMPLEX with 0 imaginary part) -> crash
32- nfsubfields(t_POL in other var than x,,1) -> SEGV
33- extra terms in power t_SER substitutions [#2281]
f=1+4*t^2+36*t^4+O(t^6); g=q-4*q^3+14*q^5+O(q^7); subst(f,t,g)
-> spurious extra term -400*q^6
34- k=bnfinit(quadpoly(-2923,a)); bnrclassfield(k,3) -> SEGV [#2280]
BA 35- rnfdisc mishandled polynomials with denominators [#2284]
BA 36- elltamagawa(ellinit([-1456/243,93184/19683])) -> wrong result
37- mfsearch would sometimes miss the trivial form
38- typo in allh [affects ECPP tunings]
HC 39- mfisetaquo(mffrometaquo([1,12;193,12])) -> 0
40- polroots(1.E-47*t^6 + 1.E-47*t^5 + 4.E-46*t^4) -> bug in type [#2286]
41- ceil(quadgen(5)) -> 1 instead of 0 [#2288]
42- floor(Mod(0,3)*quadgen(5)) -> crash
43- padicappr(x^2+1, 1/3+O(3)) -> missing valuation and type checks
44- padicappr(x^2+25,5+O(5^2)) -> [O(5),O(5)] instead of
[2*5+O(5^2),3*5+O(5^2)]
45- wrong ispower(t_RFRAC) and issquare(t_RFRAC, &z) [#2289]
46- slow series substitution if valuation huge
f=t^50000+O(t^50001); g=q*Ser(vector(50000,i,1),q); h=subst(f,t,g)
47- 1+O(x)==O(x)
48- cmp() would use possibly uninitialized bits in t_POL codewords
BA 49- qfauto([[1,0;0,1],[0,0;1,0]]) -> SEGV
50- bnfsunit(...)[4] (the S-regulator) did not correspond to its
definition in the documentation [ was using log(p) instead of
log(Norm P)) for P in S above p ]
BA 51- rnfdisc could return corrupted result
52- quadtofp suffered from catastrophic cancellation [#2298]
z=66992092050551637663438906713182313772
-47370562574818466708936539960450008968*quadgen(8); z*1. -> 0.75
BA 53- concat(List([1])[1..0]) ->SEGV (instead of error) [#2299]
BA 54- List([1])[1..0]==List() -> 0 instead of 1
55- ZX_squff(T) did not follow its specification if T(0) = 0
56- (-1)^(-1/2) -> I instead of -I
57- lfuntheta inaccurate in large weight [#2305]
58- GC error in ZX_Uspensky(, flag = 0)
BA 59- ellisomat(ell/nf not integral) -> oo-loop or wrong result
BA 60- (f(~v)=v[1]=1);(g(v) = f(~v)); my(V=[0]);g(V);V -> [1] instead of [0]
due to missing copy on write [#2304]
61- hypergeom([1/12,1/12],2/3,3) -> wrong result (incorrect
limiting case of transformation formula)
62- overflow in mulu_interval(,ULONG_MAX) [#2309]
63- ellE(1) -> domain error [#2312]
64- log1p(-1 + 10^-10) -> oo time
65- bernvec entries were wrong from B_{2*4064} on [#2311]
66- plotrecthraw for multi-curves
67- RgXn_powu(,,1) wrong result [#2314]
68- erfc incorrect on negative imaginary axis [#2315]
69- mfgalpoistype bug for dihedral types (when conductor at oo is not
stable under Galois) [#2293]
BA 70- [32bit] forfactored(n=223092868, 223092871, ) -> SEGV [#2318]
71- Fp_issquare(0, p) would return 0
72- For z=x+wy a t_QUAD, z.pol returned the modulus z.mod instead of the
t_POL x+'w*y
73- allow eulerianpol(0) (= 1)
74- allow polylog(0,x) (was broken when eulerianpol was introduced)
BA 75- concat(t_LIST,t_LIST) was leaking memory
76- missing type checks in ellchangepoint (SEGV)
77- polsturm(-5500*x^4+440*x^3+21780*x^2-9680*x-29040,[-oo,-4])->corruption
78- ellheight(E,,Q) -> SEGV
79- besselj(80,66) -> oo loop
80- lfun(1, 0.0) "normalizing a series with a 0 leading term" [#2329]
81- (0. + O(x) == 1) returned 'true'
82- lfun(1, 0., 1) -> division by 0
83- fix lfuncost when root number is unknown (more a_n are needed)
84- idealismaximal(nfinit(x),Mat(2)) -> 0 [#2333]
85- O(29^(-1)) == 1 was FALSE (same for -1)
86- Mod(0, 2*x^0) == 1 was FALSE (same for -1)
BA 87- [X11] resizing a window could keep traces of previous drawing
BA 88- x->x+0x1 was not displayed correctly
89- bnfinit(Q) was not using current precision [#2335]
90- lfuncreate(x^2 + 1/2) -> internal error. Allow rational coefficients.
91- polresultant(t_POL with t_RFRAC coefs,...) -> internal errors
92- znchardecompose(znstar(2,1),[],2) -> SEGV [#2339]
93- genus2red(150*x^6+180*x^5-270*x^4+2040*x^3-1350*x^2+3060*x+270)
-> internal bug [#2331]
94- missing roots in nfroots(t_POL,) [#2345]
95- factorpadic: ensure leading coefs are powers of p [#2352]
96- nfsnf: wrong results [#2353]
XR 97- rare SEGV in nfdisc. [#2356]
BA 98- factor((Mod(1,2)*((t^2+1)*x^4+(t^4+1)*x^2+1))) -> division by 0
99- internal type errors in mfsymboleval [#2360]
100- incorrect chargalois for trivial group [#2341]
101- minpoly(Mod(1/(x-(t+1))*Mod(1,2),(t+1)*x^2+t*x+1)) -> error [#2363]
BA 102- factor(Mod(1,2)*x^5+a*x^3) -> div by 0
AP 103- nfgrunwaldwang: fix infinite loop [#2343]
104- ti=thueinit(3*x^3 + 5*x^2 - 14*x + 54,1); thue(ti,1) -> error [#2365]
105- algdep(t_POLMOD x) -> x.mod instead of correct result
106- bnrinit(,,,cycmod) failed to delete elementary divisors equal to 1
BA 107- bnrclassfield: incorrect result when fundamental units are large, e.g.
bnrclassfield(bnfinit(nfsplitting(a^3-a^2-202*a-3080),1),2) [#2371]
108- M8=mfinit([8,5/2]); mfatkininit(M8,8)[1] was 0 and shouldn't be
109- polylogmult instability
default(realprecision,366);a=(1+sqrt(5))/2;w=(1+sqrt(-3))/2;
polylogmult([1,1,1,1],[1/a,a,1,w]) -> error
110- valuation(x*(y^2-1), y+1) -> oo loop [#2381]
111- round(t_FRAC, &e): e was always -oo
112- FpM_center_inplace would crash for p = 3 [#2387]
BA 113- [gp interpreter] fix memory leak in pop_lex
114- numerator(1/x+1/y, 'x) -> x*y
115- colors = "no" (or "") handled incorrectly [#2402]
116- thue(thueinit(x^3-3*x^2+1,1), 2187) -> domain error in mplog [#2397]
117- Bessel function of huge order -> oo loop [e.g. besselj(220, 112)]
Added
HC 1- new GP function eulerreal
BA 2- fplll: fast, dpe and heuristic variants
3- dirpowerssum: allow a completely multiplicative function
4- [libpari] atanhuu, atanhui, powcx, powcx_prec, cx_approx0
5- new GP function lfunparams (initial implementation P. Molin)
6- [libpari] row_Q_primpart
BA 7- [libpari] RgXQ_trace, RgX_chinese_coprime, RgXQV_factorback
8- [libpari] FpM_intersect_i, Flm_intersect_i
HC 9- add optional argument to ramanujantau + parallelize code
HC 10- new GP functions bessljzero, besselyzero
BA 11- [libpari] Fle_ellweilpairing, Fle_elltatepairing, Flj_to_Fle
Fl_ellptors
BA 12- [libpari] ZC_divexactu, ZM_divexactu
HC 13- allow hypergeom(N, D, t_SER)
14- [libpari] qfbsqr, qfbcomp, qfbpow, qfbpowraw, qfbsqr_i, qfbcomp_i,
qfbpow_i, qfbpow, qfbpowraw, qfr3_compraw, qfr5_compraw
15- general composition of binary quadratic forms (in different orders)
BA 16- New GP functions ellrank, ellrankinit : implement 2-descent on
elliptic curve following a GP script by Denis Simon.
BA 17- [libpari] RgXY_derivx, RgX_recip_i
18- [libpari] RgC_RgV_mulrealsym, RgM_to_RgXV_reverse
BA 19- New GP function ellsaturation
20- [libpari] ZX_Z_eval
BA 21- [libpari] elltors_psylow
22- ellinit([j]); no need to use ellfromj
23- ideallist(nf, negative bound) to return ideals of norm |bound|
(in factored form)
24- rnfconductor(bnf,pol,flag): add flag=2 to only return the conductor
and its factorization (which comes for free)
HC 25- New GP functions nflist, nfresolvent
BA 26- [libpari] Hermite_bound
27- substvec: support t_VEC replacement values
BA 28- New GP function ell2cover
BA 29- nfsplitting: flag to get the embedding
BA 30- New GP function galoissplittinginit
HC 31- lambertw(y): support all values y > -1/e [#1472]
HC 32- lambertw: add optional 'branch' argument; support and complex, p-adic
and power series inputs
BA 33- [libpari] ZXC_to_FlxC, ZXM_to_FlxM
BA 34- [libpari] New function families F3v, F3m
BA 35- New GP function setdebug
36- allow shortcut \g n feat for setdebug("feat", n)
37- New GP function poltomonic [#2200]
38- in GPRC, support default(key,val) and setdebug(dom,val)
39- New GP function polsubcyclofast
40- [libpari] prV_primes, ideals_by_norm, nfV_to_scalar_or_alg, quadpoly_i
41- new bit in nfinit flag: don't perform LLL on nf.zk
BA 42- new flag value in nfisincl
43- [libpari] hclassno6u_from_cache, uhclassnoF_fact, hclassnoF_fact,
vandermondeinverseinit, vandermondeinverse, trans_evalgen,
sunits_mod_units, Qp_exp_prec
BA 44- [libpari] RgXQ_minpoly
45- [libpari] quadclassnos, quadclassnoF, unegquadclassnoF,
uposquadclassnoF, coredisc2_fact, coredisc2u_fact, uquadclassnoF_fact
quadclassnoF_fact, Z_issquarefree_fact
46- new GP functions quadunitnorm, quadunitindex
LGr 47- allow endpoints in solve() to by +oo or -oo
48- allow Vec(t_STR, n) and Vecsmall(t_STR, n)
49- new GP function: harmonic
50- allow digits(integral t_PADIC)
51- new GP function qfbcornacchia
52- [libpari] gc_all
BA 53- [libpari] Zp_inv, Zp_invlift, Zp_div, Zp_log, Zp_exp
BA 54- [libpari] FpXn_div, Flxn_div, RgXn_div, RgXn_div_i, FpXQXn_div, F2xn_div
55- [libpari] maxomegau, maxomegaoddu, ZV_snf_rank, ZV_snf_rank_u,
zv_snf_rank, F3c_to_ZC, F3c_to_mod, F3m_to_mod, ZX_unscale_divpow,
ZX_affine
56- new GP function snfrank
HC 57- allow lngamma(t_PADIC of negative valuation)
58- file LICENSE (for Software Heritage archiving)
BA 59- [libpari] RgXV_prod
BA 60- new GP function serdiffdep
61- new module for hypergeometric motives, see ??hgm. GP functions
hgmalpha hgmbydegree hgmcyclo hgminit
hgmtwist hgmcoef hgmeulerfactor hgmissymmetrical
lfunhgm hgmcoefs hgmgamma hgmparams
BA 62- new GP function lfuneuler
TF 63- new GP functions subcyclohminus, subcycloiwasawa, subcyclopclgp
64- new GP function bnrcompositum
65- [libpari] gdivgu, gdivgunextu, divrunextu, gmulgu, gmulug
66- [libpari] Zp_log, Zp_exp
67- new GP function intnumosc, sumnumsidi
BA 68- [x86_64,arm64] AVX,NEON support for hyperellratpoints
BA 69- [libpari functions ZX_digits, ZXV_ZX_fromdigits
NM 70- new GP function elltrace
BA 71- [libpari] FpXQXV_red, FpXQXT_red
BA 72- [libpari] ZpXQX_ZpXQXQ_liftroot, ZqX_ZqXQ_liftroot
73- [libpari] ZV_snfclean
74- allow bnrchar to construct a Dirichlet character (with a znstar input)
75- new GP functions nfeltissquare, nfeltispower
BA 76- [libpari] FlxqX_nbfact_by_degree
BA 77- [libpari] RgXY_cxevalx
78- allow f*g and f^n for qfbcomp/qfbpow also for extended (real) forms
79- [libpari] qfbpows
BA 80- [libpari] FlxM_to_FlxXV, FlxXC_sub
BA 81- [libpari] FlxqXC_FlxqXQ_eval, FlxqXC_FlxqXQV_eval
BA 82- new GP function qfminimize
BA 83- new GP functions hyperelldisc, hyperellminimalmodel,
hyperellminimaldisc, hyperellred
84- new GP function setdelta
BA 85- [libpari] RgX_homogenous_evalpow, QXQX_homogenous_evalpow
BA 86- [libpari] FpX_roots_mult
BA 87- [libpari] RgX_affine
HC 88- new GP function lerchphi, lerchzeta
BA 89- new GP function hyperellisoncurve
BA 90- [libpari] nfM_ker
91- [libpari] Qp_zeta
BA 92- [libpari] RgX_mul2n
93- [libpari] rfrac_to_ser_i
94- [libpari] FlxC_FlxqV_eval_pre, FlxC_Flxq_eval_pre,
Flx_FlxqV_eval_pre, Flx_Flxq_eval_pre, Flx_Frobenius_pre,
Flx_div_pre, Flx_divrem_pre, Flx_extgcd_pre, Flx_gcd_pre,
Flx_get_red_pre, Flx_halfgcd_pre, Flx_mul_pre, Flx_oneroot_pre,
Flx_oneroot_split_pre, Flx_rem_pre, Flx_roots_pre, Flx_sqr_pre,
Flxq_div_pre, Flxq_inv_pre, Flxq_invsafe_pre, Flxq_mul_pre,
Flxq_powers_pre, Flxq_powu_pre, Flxq_sqr_pre,
Flx_powu_pre, Flxn_div_pre, Flxn_mul_pre, Flxn_sqr_pre,
FlxqX_fromNewton_pre, FlxqX_Flxq_mul_pre, FlxqX_Flxq_mul_to_monic_pre,
FlxqX_FlxqXQV_eval_pre, FlxY_FlxqV_evalx_pre, FlxY_Flxq_evalx_pre,
FlxqX_Newton_pre, FlxqX_get_red_pre, FlxqX_invBarrett_pre,
FlxqX_powu_pre, FlxqXn_mul_pre, FlxqXn_sqr_pre, FlxqXn_inv_pre,
FlxqXn_expint_pre, FlxY_eval_powers_pre, FlxY_evalx_powers_pre,
FlxY_evalx_powers_pre, FlxqX_divrem_pre, FlxqXQ_inv_pre,
FlxqXQ_invsafe_pre, FlxqXQ_sqr_pre, FlxqX_rem_pre, FlxqX_sqr_pre,
FlxqXQ_pow_pre, FlxqXC_FlxqXQV_eval_pre, FlxqXQ_div_pre,
FlxqXQ_mul_pre, FlxqX_halfgcd_pre, FlxqX_mul_pre, FlxqX_extgcd_pre,
FlxqXQ_powers_pre, FlxqXQ_powu_pre, FlxqX_normalize_pre, FlxqX_red_pre,
Kronecker_to_FlxqX_pre, Flx_dotproduct_pre, FlxqX_div_pre,
FlxY_Flxq_evalx_pre, FlxqXC_FlxqXQV_eval_pre, Flx_is_smooth_pre,
Flxq_pow_pre, Flxq_pow_init_pre, Flxq_pow_table_pre,
Flx_matFrobenius_pre, FlxqV_dotproduct_pre, FlxqX_FlxqXQ_eval_pre,
Flxq_auttrace_pre, Flxq_minpoly_pre, Flxq_lroot_fast_pre, Flxq_lroot_pre
Flxq_matrix_pow_pre, Flx_ddf_pre, Flx_factor_squarefree_pre,
Flx_nbfact_pre, Flx_nbfact_Frobenius_pre, Flx_resultant_pre,
Flxq_autpow_pre, FlxqX_gcd_pre, FlxY_evalx_pre, FlxqXQ_autsum_pre,
FlxqXQ_minpoly_pre, FlxqXQ_autpow_pre, FlxqXQ_auttrace_pre,
FlxqX_Frobenius_pre, FlxqX_factor_squarefree_pre, FlxqE_weilpairing_pre
TF 95- new GP function factormodcyclo
TF 96- new libpari functions FpX_factcyclo, Flx_factcyclo
97- new libpari functions ZV_sort_shallow, ZV_sort_uniq_shallow,
tridiv_boundu
BA 98- rnfabelianconjgen
99- new libpari functions abmap_kernel, abmap_subgroup_image, ZV_ZV_mod,
ZM_ZV_mod
100- bnr_char_sanitize, bnr_subgroup_sanitize
TF 101- GP function znsubgroupgenerators
102- [libpari] RgV_is_prV
103- improve idealfactorback [using ideamulpowprime]
Changed
HC 1- faster implementation of eulervec + cache result
2- sumnummonieninit(,1): faster algorithm (complex step)
3- atanh(rational) now uses binary splitting
BA 4- FqV_to_FlxV, FqC_to_FlxC, FqM_to_FlxM: replaced by
ZXC_to_FlxC, ZXM_to_FlxM
5- FpM_intersect and Flm_intersect now guaranteed to return an
Fp-basis; use FpM_intersect_i if you only need a generating set
6- ZXX_to_Kronecker -> RgXX_to_Kronecker, ZXX_to_Kronecker_spec
-> RgXX_to_Kronecker_spec
7- [libpari] nbessel -> ybessel
8- faster implementation of mfinit and mfbasis in weight 1
9- ZabM_ker: replace final exact check by probabilistic check modulo a
63-bit prime
10- [libpari] ZC_u_divexact -> ZC_divexactu
11- unify real and imaginary binary quadratic forms, include discriminant
types t_QFI and t_QFR are replaced by t_QFB
12- allow Qfb([a,b,c]) and Vec(t_QFB)
13- qfbredsl2(q, S): change format of S: was [D,isD], is now isD
BA 14- [libpari] gp_read_stream now return NULL when EOF is reached (was gnil)
15- elltwist now returns an ellinit, and accepts the same input formats
as ellinit ([a1,a2,a3,a4,a6], [a4,a6], Cremona label)
16- gen_search / vecvecsmall_search: remove flag; the result is now
positive if the element is found else -i if element should be
inserted at position i.
17- allow t_COL of objects in gconcat1 / shallowconcat1
18- [libpari] Z_smoothen now uses (and returns) t_VEC arguments.
Use Z_lsmoothen to input small primes as a t_VECSMALL.
19- poliscyclo: replace Bradford-Davenport's Graeffe method by their
invphi algorithm (much faster)
BA 20- [libpari] QXX_QXQ_eval renamed to QXY_QXQ_evalx
21- [libpari] ZX_Zp_root(f,a,p,): assume 0 <= a < p
BA 22- [libpari] gen_factorback now take an extra parameter one.
23- [libpari] mplambertx_logx, mplambertX, mplambertxlogx_x
24- [libpari] absZ_factor_limit_strict no longer guarantees that q is
composite: this is useless for applications and possibly expensive
25- default(debugfiles,) is now obsolete, use setdebug("io",)
26- [libpari] quadclassno now has a second argument (to recover the
attached fundamental discriminant)
27- faster qfbclassno for non fundamental positive discriminants
(use quadunitindex)
28- removed appa.tex from users.dvi; inline the text in INSTALL.tex
29- divrunu, divgunu: use a single division in all cases (faster even if
denominator has 2 words)
30- allow random(negative integer N) -> a random integer in [-n,n], n=|N|-1.
31- allow sqrtint and sqrtnint for nonnegative real number argument
32- allow logint for positive real number argument
33- improve gamma and lngamma for t_FRAC inputs
34- renamed normalize -> normalizeser
35- nfinit/nfdisc/nfbasis: use lazy factorization by default [#2326]
36- in idealtyp(ideal, fa), allow setting fa to NULL
BA 37- system now return the shell return value.
38- allow valuation(x) when x is a t_PADIC, a t_POL or a t_SER
39- libpari function precision() now always return a 'prec' (integer > 2).
It used to return 2 for real 0 of non-negative exponent.
40- grndtoi(GEN x, long *e): allow setting e = NULL
BA 41- [libpari] pari_thread_start: do not allow threads started this way to
launch more threads.
BA 42- genus2red: 3rd component is now a pair [P,Q] such that y^2+Q*y=P is
minimal everywhere.
43- faster implementation of binomial
Removed
1- [libpari] obsolete functions qfi, qfr, qfi_1, qfr_1, redreal,
redrealnod, rhoreal, rhorealnod, qfrcomp, qfrcompraw, qfrsqr,
qfrsqrraw, qfisqrraw, qficompraw, qfipowraw, qfipow, qficomp,
qfisqr, redimag
2- [libpari] obsolete types t_QFI, t_QFR
3- [libpari] nfinitall is now obsolete; use nfinit with the same arguments
4- [libpari] order is now obsolete; use znorder