pari/pari-2.11.0.changelog

687 lines
37 KiB
Plaintext
Raw Normal View History

Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/
Done for version 2.11.0 (released 18/07/2018):
Fixed
1- uninitialized memory reads in lgcdii and red_montgomery
BA 2- memory leaks on pari_close [s_dbginfo, s_frame, colormap/graphcolor]
BA 3- disallow generic operations that end up producing t_POLMOD modulo 0
e.g. matker( [Mod(1,2); Mod(1,2*x)] )
4- Fp_powu(a,n,N) incorrect when a not reduced mod N
BA 5- Flm_adjoint: treat rectangular matrices correctly
Done for version 2.10.1 (released 04/07/2018):
Fixed
1- t_LIST corrupted on writebin / read [#2040]
BA 2- nfisincl() result uses wrong variable [#2041]
3- polcompositum(,1) when one polynomial has degree 1 [#2045]
4- Mod(0,3)*x + O(x^2) -> O(x^2) [instead of same]
AP 5- alginit(nf, hasse inv.) sometimes wrong degree or stack overflow
6- factor(x/y) -> error
7- factor(y/x) -> x^-1 [ instead of y^1 * x^-1 ]
8- factor(x^2 + O(2^2)) -> x^2 [ instead of (x+O(2^2))^1 * (x+O(2^2))^1 ]
9- mfeigenbasis(mfinit(71,1,71)) -> error [ full space in wt 1 ]
10- make galoissubcyclo compatible with znstar(,1)
11- idealfactor(nfinit(polcyclo(5)),2^4*[0,1,0,0]~,100) => SEGV
12- idealredmodpower(nf,x,...) incorrect when x a t_INT or t_FRAC
13- znchargauss(,,a != 1): wrong value (missing \bar{chi}(a))
14- factorpadic(): wrong results when p-adic accuracy too low
15- elleisnum([1,I/2^100],4) -> exponent overflow
16- galoischartable: wrong results
17- factor(N, lim) was using primes <= lim instead of < lim as documented
18- bnrinit(,m,1) could return generators not coprime to m (when 2 || Nm)
19- genus2red(3*(4*x^6+6*x^5+3*x^4+8*x^3+9*x^2-3),3) -> bug in
litredp [#2053]
20- missing type check in mfsymbol [ mfsymbol(mf,'f) -> SEGV ]
21- incorrect values in ellzeta() [#2060]
22- ((y^-3+O(y))*x+1)/x -> oo loop [#2063]
23- mfslashexpansion: use Neururer-Brunault's theorem
24- iferr(sqrt(x+1/y),E,E) -> SEGV [ typo in err_DOMAIN exception ]
25- t_LIST corrupted on writebin / read [#2040]
26- prevent diviiexact from creating invalid t_INT on bad input [#2064]
27- Mod(*, constant polynomial) created invalid t_POLMODs
28- rnfalgtobasis could create invalid t_POLMODs
29- mftobasis(mf,f) could raise an exception when f was defined at a
larger level than its conductor
30- incorrect values in ellsigma() [#2061]
31- incorrect values for bnrL1 at large accuracy [#1877]
Changed
1- polcoeff is deprecated and renamed polcoef: it now only applies
to scalars, polynomials, series and rational functions; no longer to
vector/matrices or quadratic forms (use [] or "component").
2- [libpari] rename polcoeff0 -> polcoef, polcoeff_i -> polcoef_i,
truecoeff -> truecoef
3- add optional argument to denominator/content/numerator to allow
better control over semantic. E.g.
No arg: denominator([1/2, 1/x, 1/y]) -> 2*y*x
denominator([1/2, 1/x, x/y]) -> 2*x
denominator([x/2, 1/x, 1/y]) -> y*x
With arg: denominator(,1) is 2 in all 3 cases
denominator(,x) is x in all 3 cases
denominator(,y) is y in all 3 cases
4- factor(t_RFRAC): sort factors by increasing degree
5- [libpari] rename constant LOG2 -> M_LN2 (from math.h if available)
6- ellweilcurve: allow input in ellisomat form
7- [libpari] rnf_get_nfzk / nf_nfzk / nfeltup interface (czknf was
useless, return and use nfzk)
8- the rnf struct from rnfinit has changed, the new format is not
compatible with pari-2.9
9- improved eta(x^k)
10- sinc(t_SER) more accurate
11- in prettymatrix format, no longer print all 0 x n matrices as [;]:
use [;] iff n = 0 and matrix(0,n) otherwise
12- bnrdisclist returned t_MATs whose columns were t_VECSMALL
13- mateigen(m): fall back to qfjacobi when m close to symmetric [#2059]
Added
1- [libpari] denom_i, numer_i, conj_i
BA 2- [libpari] Fp_pow_init, Flxq_pow_init, F2xq_pow_init
Fp_pow_table, Flxq_pow_table, F2xq_pow_table
gen_pow_init, gen_pow_table
3- new GP function serchop
4- [libpari] serchop_i
BA 5- [libpari] hash_init_GEN, hash_haskey_long, hash_insert_long
BA 6- [libpari] FpX_ddf_degree, FpXQX_ddf_degree, FlxqX_ddf_degree
7- [libpari] checkell_i
8- new GP function ellisotree
9- mspolygon: add graphical representations (LaTeX form)
10- [libpari] idealprodval, rnfdisc_factored
11- [libpari] eta_ZXn, eta_product_ZXn
BA 12- New GP functions galoisgetgroup, galoisgetname
13- [libpari] cxtoreal, cxEk
14- [libpari] gmin_shallow, gmax_shallow
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- merge 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)
AP 92- merge algdim + algdim -> algdim(,{abs=0})
AP 93- merge algleftmultable + algtomatrix -> algtomatrix(,{abs=0})
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.