| Karim Belabas on Mon, 14 May 2018 21:20:41 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| pari-2.10.0 released ! [ALPHA] |
Dear PARI lovers,
I am pleased to announce the release of pari-2.10.0-ALPHA, incorporating two
years worth of development into an official release !
Sources and binaries for Windows or MacOS can be obtained through the address
http://pari.math.u-bordeaux.fr/download.html
This new branch contains a brand new package for spaces of Modular Forms,
a wealth of new functions for elliptic curves or number fields,
new iterators, and a long expected ECPP primality prover !
See http://pari.math.u-bordeaux.fr/Bugs/ for how to report problems
or submit wishlist items.
Have fun,
K.B.
HIGHLIGHTS FOR PARI-2.10.0-ALPHA: see below for COMPATIBILITY ISSUES.
=================================
[The GP language]
- new iterators: forperm (over permutations), forsubset (over subsets),
forfactored/fordivfactored (over integers/divisors in factored form),
forsquarefree (over squarefree integers), forprimestep (over primes in
arithmetic progressions). We also allow forstep(a,b, Mod(c,q), ...)
- new interface for handling files: fileclose, fileextern, fileflush,
fileopen fileread, filereadstr, filewrite, filewrite1. Orders of magnitude
faster than read / write for small incremental I/O operations
- allow \r "foo bar" to allow filenames containing spaces (quotes around
file names are optional; also for \l and \w).
- new function printp to print matrices in 2-D as output by gp
[ existed in 2.5 with a different meaning: "pretty" format ]
- default(echo, 2): print lines as is, including whitespace and comments
[Multiprecision Kernel]
- new function exponent()
- new function log1p(x) = log(1+x) accurate near 0
- improvements to sqrtn, log, lngamma, expm1
[Numerical summation and integration]
- derivnum: allow order k derivatives
? derivnum(x = 0, exp(sin(x)), 16) \\ 16-th derivative
%1 = -52635599.000000000000000000000000000000
- new numerical summation functions: sumnumap / sumnumapinit (Abel-Plana),
sumnumlagrange / sumnulagrangeinit (Lagrange)
- new functions prodeulerrat, sumeulerrat, sumnumrat, prodnumrat for
numerical summation/product of rational functions at integers or primes
- intnum: allow power series as limits for the integration interval
- new function laurentseries
[Combinatorics]
- new functions permorder (order of a permutation), permsign (signature)
- binomial(n): vector of all binomial(n, k), 0 <= k <= n
- new function vecprod = prod(i = 1, #v, v[i]) using product tree
- new function matpermanent
[Elementary Number Theory]
- ECPP primality proof: primecert, primecertexport, primecertisvalid; also
used by isprime()
- new function divisorslenstra (divisors in residue classes)
- new functions to manipulate Abelian characters
* general characters: chargalois (Galois orbits), charpow (chi^n),
* Dirichlet characters: znchar (convert datum to Dirichlet character)
znchargauss (complex Gauss sum), zncharconductor, znchartoprimitive,
znchardecompose (chi mod N = chi_Q chi_N/Q),
- issquarefree / isfundamental / quaddisc: allow integers in factored form
- fast chinese remainder, fast multimodular reduction (reduce integer N mod
p1, ..., pk)
- optional flag to 'divisors' (include factorization)
[Finite fields]
- new interface to handle maps between finite fields: ffmap (evaluate a map),
ffinvmap (invert a map), ffcompomap (compose maps), ffextend (create a map
from K to K[t]/(T)), ffembed(a,b) (create a map from k(a) to k(b)),
fffrobenius (create Frobenius as a map)
- parallel znlog/fflog over large prime fields and fields of
characteristic <= 5
[Polynomials]
- new interface to factorization and root finding over finite fields;
extend factormod(f, D) for general finite fields: D = p prime [over Fp],
D = [T,p] (over Fp[x]/(T)) D a t_FFELT (over attached Fq), or omited
[over field of definition of f]. Same for polrootsmod.
- new functions factormodSQF (squarefree factorization), factormodDDF
(distinct degree factorization)
- new function polrootsbound (sharp upper bound for complex roots)
[Linear Algebra]
- Linear algebra over Z/NZ: matdetmod, matimagemod, matinvmod, matkermod,
matsolvemod (also makes matrixqz(,-1 or- 2) an order of magnitude faster)
- new modular implementation of linear algebra over Z and cyclotomic rings
- asymptotically fast linear algebra over finite fields, using CUP
decomposition
- allow matsolve(M,b) when M is only left-invertible
[Elliptic curves]
- E/Qp now allowed in ellap, ellcard, ellgroup, ellissupersingular
[these four now also allow models which are not p-integral],
ellintegralmodel, ellpadicfrobenius, ellpadics2 (now allows curve with
multiplicative reduction), elllocalred
- extend support for curves over number fields: ellheight, ellrootno,
ellpointtoz, E.omega, E.eta, E.area, ellgroup(E,P) for a maximal ideal P,
ellisomat [E without CM].
- new functions elltamagawa, ellbsd, ellpadicbsd, ellpadicregulator,
ellweilcurve, ellminimaldisc
- new functions ellratpoints and hyperellratpoints based on
Michael Stoll 'ratpoints'.
[Spaces of Modular Forms] New package; see ??14 and ??tutorial-mf
getcache lfunmf mfDelta mfEH
mfEk mfTheta mfatkin mfatkineigenvalues
mfatkininit mfbasis mfbd mfbracket
mfcoef mfcoefs mfconductor mfcosets
mfcuspisregular mfcusps mfcuspval mfcuspwidth
mfderiv mfderivE2 mfdescribe mfdim
mfdiv mfeigenbasis mfeigensearch mfeisenstein
mfembed mfeval mffields mffromell
mffrometaquo mffromlfun mffromqf mfgaloistype
mfhecke mfheckemat mfinit mfisCM
mfisequal mfkohnenbasis mfkohnenbijection mfkohneneigenbasis
mflinear mfmanin mfmul mfnumcusps
mfparams mfperiodpol mfperiodpolbasis mfpetersson
mfpow mfsearch mfshift mfshimura
mfslashexpansion mfspace mfsplit mfsturm
mfsymbol mfsymboleval mftaylor mftobasis
mftocoset mftonew mftraceform mftwist
[Modular symbols & p-adic L functions]
- the package now supports level N = 1
- new functions msdim (dimension), mslattice (canonical integral structure),
mspetersson (intersection product), mspolygon (hyperbolic polygon / Farey
symbol attached to Gamma_0(N))
- msfromell: use a much faster modular algorithm, allow a vector
of isogenous curves
- allow mssplit(M) by itself, splits msnew(M) by default
[Complex L-functions]
- lfuncreate: allow specifying an arbitrary growth rate a(n) << n^(c + eps)
[by default, assume Ramanujan-Petersson]
- new functions lfuntwist (twist by Dirichlet character), lfunsympow
(symmetric power)
- allow zeta(power series)
- new function zetahurwitz (complex or p-adic inputs)
- new function zetamultall (all MZV of bounded weight), zetamultinit,
zetamultconvert
[Number Fields]
- new functions nfeltembed (complex embeddings), nfeltsign (signs of real
embeddings), nfpolsturm (number of real roots of s(T) for T in K[X] and
s a real embedding of K), bestapprnf (algdep for a known number field),
idealispower (I = J^n ?), idealredmodpower (reduce mod n-th powers)
poldiscfactors (fast partial factorisation of poldisc(T)),
- new functions to handle representations of galoisinit G:
galoisconjclasses (conjugacy classes of G), galoischartable (character
table), galoischarpoly (characteristic polynomial of representation),
galoischardet (determinant).
- bnrinit(,,1) [include generators] is no longer necessary for bnrL1,
bnrconductor, bnrrootnumber, bnrstark, rnfkummer, galoissubcyclo
- faster nfgaloismatrix / nfgaloisapply(nf,s, ideal)
- change rnfpolredabs so that it outputs a canonical polynomial.
As a result, the function is no longer Obsolete.
- optional argument to idealfactor [limit factorization]
[Associative and central simple algebras]
- new functions alggroupcenter (Z(K[G])), algmakeintegral (integral
multiplication table), algsplit (isomorphism between A/F_p and a matrix
algebra M_d(F_p^n), where dim A = n*d^2)
- new functions to handle full lattices: alglatadd, alglatcontains,
alglatelement, alglathnf, alglatindex, alglatinter,
alglatlefttransporter, alglatmul, alglatrighttransporter, alglatsubset
[Graphics]
- new functions plotexport / plothexport (support PostScript and SVG formats)
The functions psdraw, psploth and psplothraw and the default 'psfile'
are obsolete: use one of plotexport, plothexport or plothrawexport
with format "ps" and write the result to file.
- graph/plotport.c is now part of libpari
- plotcolor(w, col) now allows color names (t_STR), [R,G,B] values
or "#RRGGBB" hex triplet; returns the [R,G,B] value attached to c
- allow plotdraw(w) for plotdraw([w,0,0])
COMPATIBILITY ISSUES BETWEEN 2.9.* and 2.10.*
============================================
0) Defaults:
- change 'debugmem' default value to 1; no memory-related message at value 0
(not recommended under gp).
1) Output changes:
- the bid structure from idealstar has been changed, the new format is
not compatible with pari-2.9
- changed the definitions in polred / polredbest / polredabs / rnfpolredabs
to decide what is the "best" polynomial to return
- bnrdisclist output is now an ordinary vector (not a vector of vectors)
- idealstar(,N) : always include generators, for all values of flag.
The operation is cheap: allowing not to compute it does not make much
sense; and G.gen is now always defined.
- component(t_POL T, n) used to return polcoeff(T, n-1) for all n >= 1
[ undocumented compatibility behaviour ]. Now returns a true GEN component
whenever it exists and raises an exception when it does not
[ n <= 0 or n > polcoeff(T)+1 ]. Use polcoeff !
- nf structure: nf[7] now stores nf.zk / content(nf.zk). Old format is
still supported (to read in data involving old-style nf generated by
gp version < 2.10) but incurs a small speed penalty.
- K.tu[2] was always a t_POLMOD; make it a t_INT if -1
- numtoperm now returns a t_VECSMALL (so that results can be
multiplied as permutations, etc.), no longer a t_VEC with t_INT entries
- Ser(s, 'x, d) now always returns a series with d significant terms.
It used to return a t_SER s in 'x verbatim and to use all given
coefficients for a t_VEC/t_COL. The behaviour changes only if d is
explicitly given: no change for Ser(s,'x)
- algleftmultable now always returns the multiplication table on the
integral basis
- ellmoddegree no longer outputs [D, err] but only the degree D
2) Input / interface changes:
- lfuncreate() change of format for (p,d)->Lp closure:
* Lp here and in bad primes [p,Lp] must now use the actual local
factor and not its inverse
* d is now the exact number of terms needed (was 1 less), i.e.
one need only return Lp + O(x^d)
* bad primes are given as a separate 2nd component:
[Lp, [[p1,L1],...[pk,Lk]]], not as [Lp, [p1,L1],...[pk,Lk]]
- now that we have primecert, isprime(n,1) no longer outputs a certificate
and no longer uses APRCL for large prime divisors of n-1; it now implements
pure Pocklington-Lehmer-Selfridge and is very slow; use primecert(n) !
- ellisomat(E,{fl}) is now ellisomat(E,{p},{fl}) (p degree of isogenies)
- ellpadicmatrix now returns a pair of matrices (instead of a matrix
whose entries are pairs of values); ellpadicheight and ellpadicmatrix no
longer accept [p,[a,b]] arguments; use * [a,b]~
- E/Qp converts coefficient to exact form using centered residues
- factorff and polrootsff are now obsolete. Use factormod/polrootsmod
- merged algdecomposition + algsimpledec -> algsimpledec
- renamed algsplittingmatrix -> algtomatrix
-------------------------------------------------------------------------------
P.S. The Changelog
Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/
Done for version 2.10.0 (released 15/05/2018):
Fixed
1- subst(1+x^3+O(x^6),x,x+O(x^4)) -> SEGV [#1865]
BA 2- lfunartin was using too much stack
BA 3- fflog in char 3 or 5 was slower than intended
4- RgX_blocks only worked for t_INT or t_POL coeffs
5- spurious bnrdlisclist entries (with negative number of real
places...) when modulus not a conductor
BA 6- modular algorithms could fail for very large input
BA 7- [mingw] writebin did not work
BA 8- forprime(N=2^100,oo,...) did not work
9- mseval(W,s,p) did not check 'p' in weight 2
10- matrixqz(m, -1 or -2) was very slow
11- ZG_normalize destroyed its input
12- [install] prototype code D0,U, did not work
BA 13- use of complex default function argument could lead to stack error.
14- factorpadic(2*x^4+x^2,2,2) -> division by 0 [#1876]
15- incgam(110, I) very inaccurate
BA 16- ellinit over number field was not compatible with generic operations.
BA 17- [breakloop] dbg_up could confuse the breakloop.
HC 18- sumnummonieninit(,,a) + sumnummonien(n = a, ...) with a > 1 gave wrong
result
19- sumnummonieninit([a,b], t_CLOSURE) => incorrect initialization
20- lngamma(1+epsilon) much slower than in pari-2.7; eg. 10^-4 at \p200
BA 21- lfun(...,t_SER,n>=1) returned a wrong result
22- lfun(,, negative derivation order) => internal bug
23- SEGV in sumnummonieninit when accuracy too low
BA 24- ellidentify: check curve is over Q
25- gdivgs(t_RFRAC,s) could create invalid objects
26- chareval(G,chi,x,[[...], o]) didn't work (off-by-1)
27- polsturm(x^2-1,[-1,1]) -> SEGV [#1884]
28- typo in description of "call" symbolic operator [ _(_) ]
PB 29- matinverseimage could find spurious solutions [#1888]
30- ellsea could leak variables (=> "no more variables" error)
31- ellsea leaked clones
32- 1/x - 1/x returned gen_0 (instead of Pol(0))
33- printf("%d",factor(2*3*5*7)) => SEGV
34- lfuninit: incorrect guess for root number depending on init domain
E = ellinit([0,-a,1,157*a-27,-90*a-543], nfinit(a^2-a+1));
lfuninit(E,[0,20,10])[2][6] -> 1 (whereas rootno is -1)
35- bnrinit(bnf,idealfactor(bnf,1)) -> SEGV [#1890]
BA 36- lfuncreate([1,0,[0],1,1,1,1]) -> SEGV (invalid input)
37- thue(imaginary quadratic of disc -3f^2, n) could return half-integers
BA 38- [libpari] Z_ZV_mod caused gerepile error
39- bestappr(1+0.*I) -> 1 + 0*I instead of 1
40- memory corruption in qfminim [#1894]
41- polylog(x) used realprecision accuracy instead of precision(x) [#1895]
42- exp or log(I*1.0) used realprecision accuracy instead of precision(x)
[#1896]
PB 43- M = ffgen(2017^3)*[0, 1; 0, 0]; M^-1 -> SEGV [#1887]
BA 44- lfun(lfungenus2(...),...) was much slower than intended
BA 45- nfsubfields(polcyclo(88), 20) -> wrong result [#1892]
BA 46- [mpi] dynamically linking with libpari did not work
47- sin(1 + 1.0*I) used realprecision accuracy instead of precision(x);
same for cos, tan, arg, expm1, sinc.
48- make idealstar(,N) an actual shortcut for ideal(nfinit(x), N) [#1900];
it is recommended to use znstar instead.
HIL 49- polclass could access invalid memory
50- K=bnfinit(x^2+2323);
P=idealprimedec(K,23)[1];
bnfisprincipal(K,P); \\ oo loop
51- nfvalrem() overflowed in case of negative valuation
52- ellminimalmodel over number field fails with impossible inverse [#1899]
53- incorrect GC in nfgcd [#1903]
54- missing GC in rnfisabelian
55- derivnum(x = a, ...) allowed t_POL a but not t_RFRAC
56- missing GC in vectorsmall
BA 57- missing GC in idealramgroups
BA 58- ellweilpairing failed for supersingular curves in char. 2 [#1910]
BA 59- Mat()[1..0,1..0] -> SEGV
PB 60- galoissubcyclo(1,1,fl) ignored fl [#1914]
61- PostScript plot: fix font scaling
EB 62- GP was incorrectly issuing fflush(NULL) [#1913]
63- issquare(Mod(1,67)*x^4+Mod(14,67)*x^2+Mod(49,67)) -> SEGV [#1915]
64- polroots(t_POL whose coeffs vary by a factor > 2^100000) -> SEGV
(or stack overflow)
65- nfisincl(nf1, nf2) didn't work [#1921]
66- setting sopath in gprc then calling install() -> SEGV [#1922]
67- nfislocalpower did not accept a bnf in place of a nf
68- subst(t_SER, x, 0 t_POL) [#1925], e.g
subst(x+O(x^2),x,0*x) -> 1 + O(x) [ instead of 0 ]
subst(x+O(x^2),x,Mod(0,3)*x) -> O(x^0) [ instead of Mod(0,3) ]
69- valuation(Mod(0,3)*x,x) -> 0 [ instead of oo ]
70- factor(x^2 * (1+O(5^2))) -> domain error
71- for T in Q_p[X], factor (round then compute multiplicity)
and issquarefree (assume input is separable) did not agree. Now,
factor() repeats irreducible factors according to apparent
multiplicity (note that the multiplicity is not well defined for
inexact inputs, which are close to being inseparable, i.e.
v_p( disc(T) ) is large compared to the input accuracy). On the
other hand, factorpadic with exact input is able to compute
multiplicities reliably.
72- Vecsmall(t_STR with extended (8-bit) ASCII) -> platform dependent +
can't be converted back with Strchr
73- x^y: loss of accuracy when y >> 1 and x exact
BA 74- [pthread] do not use pthread when nbthreads=1
75- sumdiv(arg. in factored form, k < 0) => error or wrong result
76- Mod(0,1)^0 -> invalid t_INTMOD
77- gamma and lngamma inaccurate near negative integers, e.g.
gamma(-1+10^-16)
BA 78- nfisisom, nfisincl and factor were still using factornf
PB 79- nfinit(t_POL of deg 1, 3) => incorrect change of variable
80- subst(t_SER, x, x+O(x^N)) was slow [ e.g. ellj(x+O(x^10000)) ]
BA 81- setrand(2);polclass(-5032,27) -> wrong result
82- polredabs(non-monic t_POL, 1) => potentially wrong transformation map
83- if 'a < 'b < 'c, charpoly(Mod(a, a^2 + Mod(b,b^2+1)), c) => 1
[ now error: the result can't be repreѕented as a t_POL in 'c, only
as a t_POLMOD modulo b^2 whose coefficients are t_POL in 'c ]
84- mathouseholder: missing sanity checks (SEGV, didn't accept t_COL)
85- bestapprPade did not handle positive valuation correctly [#1945]
PB 86- subst(Mod(1/z, y), z, x) -> wrong answer [#1949]
87- subst(1+x^2+O(x^3),x,y) -> 1 + y^2 + O(y^4) [#1950]
BA 88- [pthread] thread stacks could silently overflow
XR 89- padicfields(3,6) -> FPE [#1947]
90- nfislocalpower could compute ZV_pval(0 vector,) -> oo loop [#1955]
BA 91- iferr(1/0,E,1,break()) -> SEGV
92- missing roots in nfroots (when r2>0) [#1956,#1957]
BA 93- factormod(...,p,1) was incorrect for large p
BA 94- foo = vectorsmall(1);for(i=1,1, foo[1]); -> error [#1958]
BA 95- v=Vecsmall([2]); Fl_neg(v[1],3) when Fl_neg is installed [#1958]
96- fincke_pohst with stockmax = -1 and non-zero CHECK (infinite
capacity + selection criterion) could lose some vectors
Affected polredabs [#1963]
97- ellwp(,,1) returned \wp'/2 instead of \wp'
98- inaccuracy in ellL1 / ellanalyticrank (usually last digit)
99- nffactor factors could be non-monic [#1967]
100- bestapprPade(,explicit B): wrong result [#1946]
101- bestappr(Mod(10,307), 40) -> 10 (instead of 3/31)
102- mathnf([x;1]) -> SEGV [#1971]
BA 103- ispower((x^3+ffgen([2^127-1,3])*x+1)^2,2,&r);r was wrong [#1976]
104- factorpadic(3*x+O(2^5),2,5) -> division by 0 [#1982]
105- vecmax(Vecsmall()) -> some random value [#1983]
106- SEGV in install() when bad prototype supplied [#1977]
107- ellzeta(., real number) possibly wrong result [#1981]
BA 108- sqrtn(Mod(9, 101), -2) -> wrong result
109- multiplying t_SER with t_INTMOD entries (mod a composite) whose
leading term cancels -> SEGV [#1986]
110- lambertw(t_SER) could create invalid t_FRACs
111- matintersect did not always return a basis
112- nfinit([T, listP]) could error out when a small prime
outside listP divided the index [#1993]
113- lfuntheta(1,1e50) -> overflow
114- nfrootsof1 could return a t_POL (always return \pm 1 or a t_COL)
115- oo-loop in msfromell [#1906]
116- memory leak due to cgetg_block / gunclone_deep usage
117- memory leak in ellminimalmodel when e memoized periods/roots components
BA 118- [win32] plot colors were shifted by 1
119- RgX_translate(P,c) with c equal to \pm 1 (e.g. as t_REAL or t_PADIC)
incorrectly replaced c by its t_INT approximation [#1995]
BA 120- matsupplement(Mod(matrix(5,1),2)) --> SEGV [#1996]
121- PostScript engine: missing 'stroke' in plotbox method => some
commands (e.g. colors) could be ignored
122- sqrtnint(a,k) very inefficient for huge k [and huge a]
123- powuu(0,1) -> SEGV
124- mathnfmodid([;], t_VEC) did not correspond to specifications
(always returned [;])
125- matsolvemod([;],2,[]~) -> no solution [ instead of []~ ]
126- a[1]=vector(10):a[1][1]=b;a[1]=vector(10); could leak memory [#1999]
127- lcm(Pol(0),0) -> division by 0
128- QX_complex_roots(a*x^n,) => SEGV
BA 129- default(strictargs,1); my(a=2);(f(b,c)=123);f(1) => SEGV [#2004]
130- factor(0.*x + 1) -> SEGV [#2005]
131- sinh(x close to 0) -> loss of accuracy
132- sinc(0.*I) -> division by 0
133- wrong result in bnfinit due to loss of accuracy and unsufficient
heuristics to detect it [#2007].
{setrand(2);p=x^8-1661000*x^6+967427199776*x^4-230628391373468096*x^2
+19278898978723566612544;bnfinit(p).cyc}
=> [60,2,2,2,2,2,2,2,2,2] instead of [6,2]
134- nffactor(y^8-y^6+y^4-y^2+1,x^4-1) -> concatenation error [#2009]
135- vecsort / vecsearch: comparison function was required to assume
integral values; allow t_INT, t_FRAC or t_REAL
136- mathess was very unstable, and so was charpoly(,,2) [#2010]
137- memory corruption in nffactor [#2013]
BA 138- partitions(1,[0,5],[3,4]) -> incorrect result
139- quadclassunit(-699,,[6,6]) -> SEGV [#2015]
140- intnum would lose accuracy when using more control points, e.g.
intnum(x=0,1,x*cos(Pi*x), 2) at \p100 [#2014]
141- polcoeff(t_SER) -> incorrect types and values
polcoeff(1/(1+x+y+O(y^2)+O(x^2)), 1,y) -> 2*x-1 [now -1+2*x+O(x^2)]
polcoeff(y+O(y^2), 0, x) -> 0 [now y+O(y^2)]
142- ellperiods([1,0.1 + I/10^50]) -> division by 0
143- nfmodpr(nfinit(x),[],[]~) -> SEGV [#2020]
144- nfisisom(nfinit(x^2+4),x^2+1) -> reverse isomorphism [#2022]
145- forbid ellinit(E/Qp, prime != p or 1.0)
146- elllocalred(non integral E/nf,p) -> wrong result
147- ellorder(E/Q, P with t_FFELT entries) not accepted [ t_INTMOD was ]
148- missing GC in lfuntheta
149- implementation of newblock was incompatible with getheap(). Now we
always include the 'block' size in the header.
150- gamma(0.0+1/2*x+O(x^2)) -> domain error in factorial
151- affrr(0.0, x) did not reset the exponent correctly: use
min(expo(0.0), bit_accuracy(lg(x)))
152- matkerint could be exponentially slow; guarantee polynomial time
(drawback: slows down some classes of matrices) [#2034]
153- ellminimaltwist did not check that E is defined over Q
154- padicappr('x,Mod(0,'t^2+1)+O(7^10)) -> SEGV [#2036]
155- allow \r "foo bar" (quotes around file names are optional for
\l,\r, \w; they allow filenames with spaces) [#2035]
156- memory leak in polclass()
AP 157- fix integrality condition in algsubalg/algquotient/algcentralproj
158- factorpadic gave wrong results at low accuracy
Added
1- [libari] ZM_isidentity
2- [libpari] rename buchnarrow -> bnfnarrow
3- [libpari] ZX_radical
BA 4- [gmp] support for mpn_divexact_1
BA 5- parallel fflog in characteristic at most 5
BA 6- parallel znlog for large characteristic
7- [libpari] u_chinese_coprime
BA 8- new GP function elltamagawa
9- [libpari] RgX_rescale_to_int, RgM_rescale_to_int
BA 10- [libpari] Flx_digits/FlxV_Flx_fromdigits
11- new argument (multiple derivation) in GP function derivnum
12- allow matrix(n) for n x n matrices
13- new GP functions nfeltsign, nfeltembed, nfpolsturm
HC 14- new GP functions sumnumap, sumnumapinit (Abel-Plana summation)
HC 15- new GP functions zetamultall, zetamultconvert
16- allow t_VECSMALL for vecsort [already there but undocumented] and
vecsearch [already there but prevented by a typo]
CG 17- new GP function matpermanent [#1860]
18- [libpari] hammingl, RgM_is_QM, vecsmall_prod, zm_permanent,
ZM_permanent
19- lfuncreate: no longer assume Ramanujan-Petersson, allow specifying
an arbitrary growth rate a_n = O(n^(k_1 + eps))
BA 20- new GP function vecprod
21- new GP function znchar
VD 22- new GP functions forperm, forsubset
PB 23- [libpari] F2xqM_F2xqC_gauss F2xqM_F2xqC_invimage F2xqM_gauss F2xqM_invimage
FlxqM_FlxqC_invimage FlxqM_invimage
FqM_FqC_invimage FqM_invimage
gen_matcolinvimage gen_matinvimage
FFM_FFC_invimage FFM_FFC_gauss FFM_gauss FFM_invimage
24- new GP function polrootsbound
HC 25- new GP functions prodeulerrat, sumeulerrat, sumnumrat, prodnumrat
HC 26- new GP function zetahurwitz
27- [libpari] sqrtnr_abs
28- binomial(x,k): allow omitting k [ => vecbinomial ]
VD 29- [libpari] forperm_init, forperm_next, forperm, forallsubset_init,
forallsubset_next, forksubset_init, forksubset_next, forsubset
30- [libpari] lindep_bit
BA 31- new GP function ellbsd
32- new GP function poldiscfactors
33- [libpari] FpX_gcd_check
34- [libpari] str_init, str_printf, str_putc, str_puts
35- new GP function printp [ used to exist with a slightly different
meaning: pretty format vs prettymatrix ]
36- new GP function sumnumlagrange, sumnulagrangeinit
37- [libpari] int2um1 (for 2^n - 1)
38- Fl_powu: special purpose code when base is 2
39- [libpari] vecpowuu, vecpowug
40- [libpari] zerovec_block
41- [libpari] Z_ZV_mod_tree
42- [libpari] vecvecsmall_max, vecsmall_to_vec_inplace
43- new GP function zetamultinit
BA 44- new GP functions permorder, permsign
BA 45- new GP function galoisconjclasses
AP 46- new GP functions galoischartable, alggroupcenter, algmakeintegral
47- [libpari] Flxn_inv
48- new GP function chargalois
49- [libpari] expose znstar internal interface: znstar_get_N,
znstar_get_conreycyc, znstar_get_conreygen, znstar_get_faN, znstar_get_no,
znstar_get_pe, znstar_get_Ui, checkznstar_i
50- [libpari] coreu_fact, moebiusu_fact
51- [libpari] ZabM_ker, ZabM_indexrank, ZabM_inv, ZabM_pseudoinv,
BA 52- [libpari] stack_malloc_align
PB 53- [libpari] FFM_deplin, FFM_indexrank, FFM_suppl F2xqM_deplin,
F2xqM_indexrank, F2xqM_suppl FlxqM_deplin, FlxqM_indexrank, FlxqM_suppl
FqM_indexrank
JD 54- [plot] SVG support
55- [libpari] upper_to_cx, cxredsl2, cxredsl2_i
56- new GP function charpow
57- [libpari] ZM_pseudoinv
58- [libpari] ulogintall, ulogint, umuluu_or_0, QXQV_to_FpM, ZM_ZX_mul,
RgM_RgX_mul
59- new GP function ellminimaldisc
60- [libpari] rfracrecip_to_ser_absolute, RgV_to_ser
61- new GP function znchardecompose, zncharconductor, znchartoprimitive
PB 62- [libpari] perm_sign
PB 63- [libpari] FlxC_neg FlxC_sub FlxM_neg FlxM_sub FlxqC_Flxq_mul
FlxqM_Flxq_mul zero_FlxC zero_FlxM
PB 64- asymptotically fast linear algebra using CUP decomposition
65- [libpari] nf_get_zkden, nf_get_zkprimpart
66- [libpari] idealprimedec_galois, idealprimedec_degrees
67- [libpari] idealaddtoone_raw, ZM_hnfmodprime, pr_hnf
BA 68- new GP functions hyperellratpoints and ellratpoints based on
Michael Stoll ratpoints code.
69- [libpari] Z_pollardbrent, Z_ECM
70- [libpari] RgX_mulhigh_i
71- GP function znchargauss
72- Configure --graphic=svg
73- GP function divisorslenstra (divisors in residue classes)
74- [libpari] lg_increase, vecfactoru, vecfactoru_i, vecfactoroddu,
vecfactoroddu_i, vecfactorsquarefreeu
BA 75- ellheight for curves over number fields
76- new GP function forfactored
77- [libpari] ZV_sort_inplace
BA 78- ellrootno for curves over number fields
79- optional flag to 'divisors' (add factorization)
80- GP functions fordivfactored
BA 81- [libpari] ZXQM_mul, ZXQM_sqr, QXQM_mul, QXQM_sqr
82- [libpari] ZX_z_unscale
83- [libpari] Flxn_mul
BA 84- [libpari] FlxqX_is_squarefree, FlxqX_nbfact, RgX_to_FlxqX
85- [libpari] RgX_addmulXn, RgX_addmulXn_shallow, RgX_addspec,
RgX_addspec_shallow
BA 86- GP functions galoischardet, galoischarpoly
87- [libpari] mulcxpowIs
BA 88- [libpari] function RgXn_sqrt
KB+HC89- new package 'mf' for modular forms; new GP functions
getcache lfunmf mfDelta mfEH
mfEk mfTheta mfatkin mfatkineigenvalues
mfatkininit mfbasis mfbd mfbracket
mfcoef mfcoefs mfconductor mfcosets
mfcuspisregular mfcusps mfcuspval mfcuspwidth
mfderiv mfderivE2 mfdescribe mfdim
mfdiv mfeigenbasis mfeigensearch mfeisenstein
mfembed mfeval mffields mffromell
mffrometaquo mffromlfun mffromqf mfgaloistype
mfhecke mfheckemat mfinit mfisCM
mfisequal mfkohnenbasis mfkohnenbijection mfkohneneigenbasis
mflinear mfmanin mfmul mfnumcusps
mfparams mfperiodpol mfperiodpolbasis mfpetersson
mfpow mfsearch mfshift mfshimura
mfslashexpansion mfspace mfsplit mfsturm
mfsymbol mfsymboleval mftaylor mftobasis
mftocoset mftonew mftraceform mftwist
90- [libpari] ZV_cba, Z_cba_extend
91- [libpari] RgV_is_ZVpos, RgV_is_ZVnon0
JA 92- GP functions primecert, primecertexport, primecertisvalid (ECPP).
93- [libpari] ncharvecexpo
94- [libpari] rootsof1q_cx, rootsof1powinit, rootsof1pow
BA 95- [libpari] RgX_digits
96- [libpari] Q_content_safe
BA 97- ellisomat: support for curve over finite field without CM
98- GP function: bestapprnf
99- [libpari] vec_prepend, lindepfull_bit
BA 100- [libpari] QX_mul/QX_sqr/QX_ZX_rem, FFX_mul/FFX_sqr/FFX_rem,
RgX_mul_i/RgX_sqr_i, ZXQX_mul/ZXQX_sqr
BA 101- [libpari] Rg_type, RgX_type2, RgX_type3,
RgM_type, RgM_type2, RgM_RgC_type
BA 102- RgX_mul/RgX_sqr: support for coefficient ring detection
BA 103- [libpari] FlxqXQ_auttrace
BA 104- [libpari] F2xX_F2x_add, FlxX_Flx_sub, FqX_Fq_sub
BA 105- [libpari] F2x_get_red, get_F2x_mod, get_F2x_var, get_F2x_degree,
F2xqX_get_red, get_F2xqX_mod, get_F2xqX_var, get_F2xqX_degree
106- [libpari] vecmoduu, quadclassno, mkfracss, sstoQ, Qtoss
107- [libpari] znchar_quad
VD 108- [libpari] closure_func_err
BA 109- [libpari] F2xqX_extgcd, F2xqXQ_inv, F2xqXQ_invsafe, FFXQ_inv
BA 110- [libpari] ZV_nv_mod_tree, ZM_nv_mod_tree, ZXC_nv_mod_tree,
ZXM_nv_mod_tree
BA 111- [libpari] FF_gen, FF_map, FFX_preimage, FF_Frobenius
BA 112- New GP functions ffembed, ffmap, ffinvmap, ffcompomap, ffextend,
fffrobenius
113- [libpari] cx_approx_equal
BA 114- [libpari] F2xqX_ispower, FlxqX_ispower, FpXQX_ispower, FFX_ispower,
FpX_ispower, FqX_to_mod, FqM_to_mod, RgC_to_FqC, RgM_to_FqM,
QXQC_to_mod_shallow, QXQM_to_mod_shallow
BA 115- [libpari] ZC_Q_mul, ZM_Q_mul, ZX_Q_mul, QM_mul, QM_det, QM_ker
BA 116- [libpari] Fl_log, Fl_log_pre, Fl_sqrtn, Fl_sqrtn_pre
BA 117- [libpari] Flc_Flv_mul, Flm_adjoint, Flm_powers
118- New GP function exponent()
BA 119- [libpari] ZXM_init_CRT, ZXM_incremental_CRT
120- [libpari] numdivu, numdivu_fact, gexpo_safe
BA 121- [libpari] FpXC_center, FpXM_center
BA 122- [libpari] nxV_chinese_center, nxCV_chinese_center, nxMV_chinese_center
AP 123- New GP functions matdetmod, matimagemod, matinvmod, matkermod
BA 124- [libpari] Z_content
125- [libpari] checkMF, checkMF_i, checkmf_i, inv_content
BA 126- [libpari] F2xqXQ_inv, F2xqXQ_invsafe, F2xqX_invBarrett, Flc_Flv_mul
coprimes_zv
127- New GP functions msdim, mslattice, mspetersson, mspolygon,
ellweilcurve, ellpadicbsd, ellpadicregulator
BA 128- New GP function lfuntwist
129- [libpari] mkmat22, mkmat22s, Qp_agm2_sequence, Qp_ascending_Landen,
Qp_descending_Landen
BA 130- [libpari] famat_pows_shallow, famat_mulpows_shallow
131- [libpari] QXQ_div_ratlift, ZM_equal0, QM_ImZ_hnfall, QM_ImQ_hnfall
BA 132- [libpari] ZXn_mul, ZXn_sqr, FpXn_mul, FpXn_sqr, RgXn_recip_shallow,
FpXn_exp, FpX_Newton, FpX_fromNewton, FpX_Laplace, FpX_invLaplace
BA 133- [libpari] FpX_integ, FpX_convol
134- allow zeta(power series)
135- New GP function laurentseries
LGr 136- default(echo): new value echo = 2 [ print as is, incl. whitespace ]
LGr 137- allow power series as limits for intnum()
138- [libpari] uordinal
BA 139- [libpari] QM_gauss, QM_rank, QM_indexrank, QM_QC_mul
LGr 140- make TESTS="a b c" test-all to test only 'a' 'b' and 'c', e.g.
'lfun', 'gamma' and 'lfuntype' (same for statest-all and dyntest-all)
141- allow quaddisc(integer factorization matrix)
142- New GP function forsquarefree
143- allow matsolve(m,b) when m is only left-invertible
BA 144- [libpari] QXQ_mul, QXQ_sqr, FFXQ_mul, FFXQ_sqr
145- New GP function idealispower
BA 146- New GP function idealredmodpower
147- 'ms' modular symbol package: support N = 1 as well
148- allow mssplit(M), splits msnew(M) by default
BA 149- [libpari] FpXQXn_mul, FpXQXn_sqr, FqXn_mul, FqXn_sqr
150- New GP functions plothexport, plothrawexport, plotexport
151- plotcolor(w, col) now allows color names (t_STR) or [R,G,B] values
152- allow a t_STR composed of # + 6 hex digits for colour names
153- isprime(,3): use ECPP
154- new GP function log1p [#1829]
BA 155- qfisom: allow to give the automorphism group of the second lattice
156- optional argument to idealfactor [limit factorization]
157- [libpari] idealHNF_Z_factor_i, idealfactor_limit, famat_div_shallow,
Q_factor, Q_factor_limit, vecsquarefreeu, gprec_wensure
158- vecsort / vecsearch: allow sort/search wrt to a "key" (closure with
arity 1)
159- [libpari] forprimestep_init
160- allow forstep(a,b, Mod(c,q), ...)
161- new GP function forprimestep
162- [libpari] RgX_sylvestermatrix
163- [libpari] Rg_to_Fq, Fp_invgen
BA 164- [libpari] F2xqX_factor_squarefree, FlxqX_factor_squarefree,
FpXQX_factor_squarefree, FqX_factor_squarefree, FFX_factor_squarefree
BA 165- [libpari] FpXX_integ, FpXX_halve, FqX_halve, FpXQXn_exp, FqXn_exp,
FqX_integ
166- new file Ser.c
BA 167- [libpari] FpXn_inv, FpXQXn_inv, FqXn_inv
BA 168- New file GP interface: fileclose fileextern fileflush fileopen
fileread filereadstr filewrite filewrite1
BA 169- [libpari] Flx_ddf, F2x_ddf, FpX_ddf, F2xqX_ddf, FlxqX_ddf, FpXQX_ddf,
FqX_ddf, FFX_ddf
F2xqX_degfact, FlxqX_degfact, FpXQX_degfact, FqX_degfact, FFX_degfact
170- new GP functions factormodSQF, factormodDDF
171- [libpari] umuluu_le, ugcdiu, ugcdui, ulcm
172- [libpari] Fp_center_i, FpX_center_i
173- [libpari] hclassno6, hclassno6u
BA 174- New GP function lfunsympow
BA 175- nfsplitting: support for reducible polynomials
AP 176- new GP functions alglatadd, alglatcontains, alglatelement, alglathnf,
alglatindex, alglatinter, alglatlefttransporter, alglatmul,
alglatrighttransporter, alglatsubset
AP 177- new GP function algsplit
Changed
1- rewrite bnfnarrow
2- the bid struct from idealstar has been changed, the new format is
not compatible with pari-2.9
3- bnrdisclist output is now an ordinary vector (not a vector of vectors)
4- made nfsign() / nfsign_arch() reliable [ use algebraic method
besides floating point approximation to real embeddings ]
5- support ??refcard-ell (or mf/nf/lfun)
6- [libpari internals] bnrinit(,,1) [with generators] is no longer
necessary for bnrsurjection()
7- bnrinit(,,1) is no longer necessary for bnrL1, bnrconductor,
bnrrootnumber, bnrstark, rnfkummer, galoissubcyclo
8- msfromell: use a (much faster) modular algorithm, allow a vector
of isogenous curves
9- mseval(W,s,p): allow 2x2 matrix for the path 'p' argument
10- allow mseval(W, t_MAT, p) to evaluate many symbols simultaneously
11- allow polrootsreal() and polsturm() with non-rational real polynomials
(input is rounded first)
BA 12- FlxX_shift did not support negative (left) shift.
BA 13- [libpari] rename FpX_fromdigits -> FpXV_FpX_fromdigits,
FpXQX_fromdigits -> FpXQXV_FpXQX_fromdigits
14- made lngamma(t_COMPLEX) faster
15- made sumnummonieninit(,1) faster
HC 16- sumnummonieninit(a) for [a,a] did not conform to documentation.
Change to sumnummonieninit(b) for [1,b]
17- improve prime() and primepi() by adding more checkpoints [#1878]
18- lfun(Dirichlet character): switch automatically to lfunchiquad
(Kronecker) if char has order <= 2
19- nfchecksigns: replace by rigorous algorithm
20- asympnum: better tunings => usually finds more terms
21- extended help: make ?? op work for ALL operators (=> GP operators@2)
22- idealstar(,N) : always include generators, for all values of flag
[ this is cheap, allowing not to compute it doesn't make much sense;
and G.gen is now always defined. ]
23- let ellsea call the generic algorithm when q <= 523 to avoid an oo-loop
24- sqrtnr algorithm (Newton iteration instead of exp(log(x)/n)
BA 25- quadgen/quadunit: allow to specify the variable name instead of w.
26- [libpari] rename vecbinome -> vecbinomial
27- [libpari] rename padic_lindep -> lindep_padic, Xadic_lindep ->
lindep_Xadic
28- x^(t_FRAC) use sqrtnr if possible
BA 29- keri replaced by ZM_ker (use modular algorithm)
30- lfuncreate() change of format for (p,d)->Lp closure:
- Lp here and in bad primes [p,Lp] must now use the actual local
factor and not its inverse
- d is now the exact number of terms needed (was 1 less), i.e.
one need only return Lp + O(x^d)
- bad primes are given as a separate 2nd component:
[Lp, [[p1,L1],...[pk,Lk]]], not as [Lp, [p1,L1],...[pk,Lk]]
31- faster nfgaloismatrix / nfgaloisapply(nf,s, ideal)
32- nf struct: nf[7] now stores nf.zk / content(nf.zk). Old format is
still supported (to read in data involving old-style nf generated by
gp version < 2.10) but incurs a small speed penalty.
JD 33- move plotport.c to libpari
34- default window size for hi-res plots using --graphic=X
35- component(t_POL T, n) used to return polcoeff(T, n-1) for all n >= 1
[ undocumented compatibility behaviour, deprecated since the
introduction of polcoeff ], and raised an exception for n <= 0.
Now returns a true GEN component whenever it exists and raises an
exception when it does not [ n <= 0 or n > polcoeff(T)+1 ].
BA 36- Fl_addmul_pre: change arguments order to follow Fp_addmul convention
37- issquarefree / isfundamental with integer argument: allow factored form
38- change polred-type algorithm to return 'x' (no longer 'x-1') for
the field of rational numbers (make it consistent with polredabs)
BA 39- ellisomat(E,{fl}) is now ellisomat(E,{p},{fl}) (p degree of isogenies)
40- the definition used in polred / polredbest / polredabs to decide
what is the "best" polynomial to return
41- removed resultant_all, use RgX_resultant_all
42- polresultant: no longer compute the content of arguments
(potentially very expensive for a generically small gain)
43- support Q(i) in Q_denom / Q_remove_denom
BA 44-[libpari] rename {FpXQXQ,FlxqXQ,F2xqXQ}V_aut{sum,trace,pow} to
{FpXQXQ,FlxqXQ,F2xqXQ}_aut{sum,trace,pow}
BA 45-[libpari] FpXQXQ_auttrace now identical to FpXQ_auttrace
BA 46-[libpari] RgX_type now only handles polynomials.
47-log: change threshold between Taylor / AGM when x close to a power
of 2 [#1934]
48-[libpari] ZM_inv and QM_inv interface
49- K.tu[2]: make it a t_INT if possible, else a t_POLMOD
50- removed warning "Mod(a,b)^n with n >> b : wasteful"
51- ellpadicmatrix now returns a pair of matrices (instead of a matrix
whose entries are pairs of values)
52- ellpadicheight and ellpadicmatrix no longer accept [p,[a,b]]
arguments; use * [a,b]~
53- ellpadics2: allow curves with multiplicative reduction
54- E/Qp now allowed in ellcard, ellap, ellgroup, ellissupersingular,
ellpadicfrobenius, ellpadics2, ellintegralmodel, elllocalred
55- E/Qp convert coefficient to exact form using centered residues
56- msissymbol now returns a GEN (gen_0/gen_1) instead of a long, allow
t_MAT arguments and return a vector of 0/1 in this case.
57- allow mseval(M, t_MAT)
58- change 'debugmem' default value to 1;
no memory-related message at value 0 (not recommended under gp).
BA 59- V=galoisfixedfield(,,2): return V[1] in the same variable as the
coeffs of V[3] instead of P.
60- numtoperm now returns a t_VECSMALL (so that results can be
multiplied as permutations, etc.), no longer a ZV
61- improve Fp_sqrt for p = 5 (mod 8) [Atkin's formula]
62- improved matrixqz(,‐1 or -2) by using matkermod
63- The functions psdraw, psploth and psplothraw and the default psfile
are obsolete. Use one of plotexport, plothexport or plothrawexport
with format "ps" and write the result to file.
AP 64- new implementation of matsolvemod; old matsolvemod0 is deprecated
65- plotcolor(w,c) now returns the [R,G,B] value attached to c
66- allow plotdraw(w) for plotdraw([w,0,0])
67- allow isprime(n) to use ECPP
68- isprime(n,1) no longer outputs a certificate, use primecert(n)
69- isprime(n,1) no longer uses APRCL for large prime divisors of n-1
(pure Pocklington-Lehmer-Selfridge); use primecert(n).
70- getrand() encoded results in a way that depended on 32bit/64bit arch
71- thue(p, rhs) is much easier when p has no real roots; don't insist
on computing bnfinit(p) in this case [#2003]
72- use Newton in expm1
73- change rnfpolredabs so that it outputs a canonical polynomial. As a
result, the function is no longer Obsolete.
74- allow polrecip(scalar x) -> x
75- extend factormod(f, D) for general finite fields: D = p prime
[over Fp], D = [T,p] (over Fp[x]/(T)), or omited [over field of
definition of f]. Same for polrootsmod.
76- factorff and polrootsff are now obsolete. Use factormod/polrootsmod
77- Ser(s, 'x, d) now always return a series with d significant terms.
It used to return a t_SER s in 'x verbatim and to use all given
coefficients for a t_VEC/t_COL. Only if d is explicitly given,
no change for Ser(s,'x)
78- elllocalred, ellap, ellcard, ellissupersingular, ellgroup(,0):
allow models which are not p-integral
79- ellgroup: allow E over number field
80- factorback([;]) is now invalid [ [;] is not the empty factorization,
factor(1) = matrix(0,2) is ]
81- cmpiu / cmpiu, equaliu / equalui : no longer assume that t_INT argument
is non-negative
82- rename diviu_rem -> absdiviu_rem, udiviu_rem -> uabsdiviu_rem,
udivui_rem -> uabsdivui_rem
83- allow E.omega, E.eta, E.area for E over number field
84- ellpointtoz for E over number field
AP 85- algnorm, algtrace and algcharpoly now have an optional flag to get the
absolute version over an alginit algebra
AP 86- renamed algsplittingmatrix -> algtomatrix
AP 87- algleftmultable now always returns the multiplication table on the
integral basis
AP 88- merged algdecomposition + algsimpledec -> algsimpledec
AP 89- algpoleval: new syntax for matrix argument algpoleval(al,pol,[x,mx])
BA 90- ellmoddegree: return only the modular degree, do not depend on current
precision.
91- polsturm: allow non-squarefree polynomials (count distinct roots)
Removed
1- file 'MACHINES' (no longer maintained)
2- useless argument nf in ZC_nfval, ZC_nfvalrem, pr_equal, ZC_prdvd
3- useless flag argument in polrootsmod
4- [libpari] useless function Flx_roots_naive; rootmod and rootmod2
are now an alias for polrootsmod (both have been deprecated for years)
rootmod0 is just as obsolete.
--
Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17
Universite de Bordeaux Fax: (+33) (0)5 40 00 21 23
351, cours de la Liberation http://www.math.u-bordeaux.fr/~kbelabas/
F-33405 Talence (France) http://pari.math.u-bordeaux.fr/ [PARI/GP]
`