| Karim Belabas on Wed, 16 Sep 2020 16:11:35 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| pari-2.12.1 released [BETA] |
Dear PARI lovers,
I would like to announce the release of pari-2.12.1-BETA !
It contains major improvements to the Number Fields module and lots of cool
new functions and features. And bug fixes.
Sources and binaries for Windows or MacOS can be obtained through the address
http://pari.math.u-bordeaux.fr/download.html
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.12.1-BETA: see below for COMPATIBILITY ISSUES.
================================
[Number Fields]
- Number fields functions now allow compact representations of algebraic
numbers, as factorization matrices: products of "small" elements possibly
raised to huge powers. This is very useful for units and S-units or
principal ideals generators, which may be huge in expanded form. Functions
transparently process such objects but, for compatibility reasons, they are
not created by default, this must be specified as follows:
* bnf = bnfinit(pol, 1) now constructs an algebraic bnf structure
containing all data (including units) in exact compact form.
This is the critical step. Class field theoretic functions involving bnf
will process units in compact form, allowing them to succeed
independently of their size or the working precision.
* new GP function bnfunits(bnf, optional S) returns the fundamental
S-units in compact form [ bnf.fu returns the units in expanded form
which can be expensive ].
* bnfisprincipal(bnf,id,4) or bnrisprincipal(bnr,id,4) return
the principal part of the discrete logarithm in compact form.
Without optional flags, nothing changes: old programs should run
without modification and fail when units are large. New programs should
use the new flags.
- The old bnrinit(, 1) flag [ include explicit bnr generators in the output ]
was mandatory in many class field theoretic functions. Not anymore: their
internal compact representation is always sufficient. You can still use
them for debugging but they are expensive and no longer needed elsewhere.
- The bnrinit function computes general ray class groups G = Cl_f(K) but we
are often interested in simpler quotients G/H, e.g., G/G^N for abelian
extensions of exponent N. The function bnrinit now accepts an optional
argument to specify N; later calls to bnrisprincipal solve the discrete
logarithm in this quotient group and are now only correct modulo N, which
is adequate if we actually want to work in G/H for any congruence subgroup
of index dividing N. This trick avoids expensive discrete logarithms if the
modulus f is large. This is used intensively in PARI internals, speeding
up all class field theoretic functions.
The rnfconductor function, which computes a pair (f,H) attached to an
abelian extension K[X]/(T) of the base field K together with a bnr
structure for G = Cl_f(K), now accepts a new flag to return G / G^deg(T),
which is less expensive and usually sufficient.
The same trick is available in idealstar for the group G = (Z_K/f)^*,
allowing to compute in G/G^N; ideallog then returns results which are
correct modulo N.
- new GP function bnrmap to map ray class groups Cl_A -> Cl_B when B | A.
This also works with ray class groups modulo N provided the exponent of
Cl_A divides N
- nfsubfields: add van Hoeij-Klueners-Novocin algorithm to the existing
algorithms of Klueners (doesn't run in polynomial time) and Allombert
(not always applicable). The running time is polynomial in the output size.
New GP functions nfsubfieldsmax (maximal subfields) and nfsubfieldscm
(maximal CM subfield), both of which always run in polynomial time
because their output is provably small.
- new GP member function nf.p returning rational ramified primes;
rnf.p returns rational primes dividing the norm of the relative
discriminant ideal.
- allow nfinit([T, Z_K basis, ramified primes]) when all arithmetic
invariants are known.
- galoisinit: the definition of "weakly super-solvable" groups, supported
by the function, is less restrictive. For instance, there are no
exceptions in order < 48 and 23 exceptions in order < 144, 40% of them in
order 96. There were 29 such exceptions in 2.12.0.
[Transcendental functions]
- faster exp(small rational number) using binary splitting. E.g, at 10^6
decimal digits of accuracy, exp(1/3) is now computed in 0.2s, about 50
times faster than in pari-2.11.
- faster formulas for Catalan() and log(2)
- x^s: faster and more precise when s is a t_COMPLEX
- add optional argument to sqrtint to obtain the remainder as well
- gammamellininvinit(A): allow A to be an L-function; this also allowed
in gammamellininv and gammamellininvasymp.
[Multiple Zeta Values]
- new GP function polylogmult for multiple polylogarithm values and their
Yamamoto interpolation.
- new GP function zetamultdual: zetamultdual([4]) -> [2,1,1]
(the corresponding Muliple Zeta Value is the same).
- zetamult now accepts an optional parameter t for Yamamoto's
interpolation; in particular for t = 1, we obtain star MZVs and for
t = 'x, Yamamoto's polynomial.
- zetamultall: add optional flag to compute only values of given weight,
and/or up to duality, and/or star values.
[Elementary Number Theory]
- new GP function eulerianpol (eulerian polynomials), eulerpol (Euler
polynomials), eulerfrac (Euler numbers), eulervec (vector [E_0, ..., E_2n]).
- new GP function halfgcd: given polynomials or integers [x,y], compute an
invertible matrix M such that M * [x,y]~ = [a,b]~ with b small (half the
"size" of [x,y]).
- qfbsolve: new optional flag to ask for all solutions modulo units (vs. a
single solution) or to allow non-primitive solutions.
- randomprime: new optional argument to specify a congruence class.
E.g. randomprime([2^31, 2^32-1], 7) -> a 32-bit prime congruent to 1 mod 7.
randomprime([a, b], Mod(2,3)) -> a prime = 2 mod 3 in [a,b]
[Polynomials and Power series]
- polrootsreal: faster due to asymptotically fast P(X) -> P(X+a) algorithm
- power series and truncated polynomials: systematic use of Newton division
- polrootspadic: allow computing roots in unramified extensions of Q_p
E.g. T = y^2+y+1; p = 2;
polrootspadic(x^3-x^2+64*y, [T,p], 5);
- new GP function rootsof1(N): complex roots of unity of order N.
- new GP functions fft, fftinv: Fast Fourier Transform of order 2^n and its
inverse, given roots of unity. Supports general base rings,
e.g., finite rings.
[Linear Algebra]
- matsnf(integral matrix): now uses a modular algorithm.
- matrixqz(,-1 or -2): faster implementation.
- matrank, matker over the integers: faster implementation for large
rectangular matrices.
- qflll(x, 3) in place reduction: return x * qflll(x) [faster].
[Curves]
- new GP function ellpadiclambdamu: Iwasawa invariants lambda and mu for
the p-adic L function L_p(E), where p is a prime of good or bad
multiplicative reduction for the elliptic curve E/Q.
- hyperellpadicfrobenius: allow X defined over a number field and
compute Frobenius over unramified extension of Q_p. E.g.,
M = hyperellpadicfrobenius(x^5 + 'a * x + 1, ['a^2+1,3], 10);
(over Q_9, to 10 3-adic digits of accuracy)
[L-functions and Modular Forms]
- new GP function lfundual (to manipulate the dual L-function) and
lfunshift (to manipulate L(s + a))
- new GP function mfisetaquo(f): can f be represented as a meromorphic eta
quotient ?
- new GP function dirpowerssum for fast computation of 1^s + 2^s + ... + N^s
- exact (fast!) rational formulas for quadratic Dirichlet L-functions at
non-positive integers. E.g.
lfun(1, -7) -> 1/240 [ = zeta(-7) ]
lfun(-691, -2) -> -175118 [ = L(chi_{-691}, -2) ]
- lfuncreate(v) can now correctly handle non-rational data: instead of
v = [a, asta, Vga, k, N, eps, poles], v can now be a closure (without
arguments) evaluating to such a vector at current working precision.
- lfuncreate([G,v]): where G is (Z/NZ)^* or a ray class group and v a
vector of characters with the same conductor. This vector-valued L-function
allows fast simultaneous evaluation for multiple characters. E.g.,
F = [Mat(160), [1]];
G = bnrinit(bnfinit(x), F); \\ ray class group
\\ vector of all primitive characters
v = [ c | c <- bnrchar(G, [1]), bnrconductor(G, c) == F ];
L = lfuncreate([G, v]);
lfun(L,1); \\ evaluate all L(chi, 1) simultaneously
- improved zetahurwitz: faster & use less memory.
- parallel support for lfuninit.
[Miscellaneous]
- new GP function asympnumraw: extrapolate the first terms of the asymptotic
expansion of some expression; more robust and versatile than asympnum
(which only supports rational expansions). E.g.,
f(n) = n! / (sqrt(n) * (n/exp(1))^n);
\p100
v = asympnumraw(f, 10);
bestappr(v/v[1])
returns 10 terms of Stirling's expansion without needing to identify
v[1] = sqrt(2*Pi); asympnum would fail because of the v[1] 'period'.
- new GP function permcycles to return the decomposition of a permutation
as a product of disjoint cycles.
- new GP function mscosets to construct H\G given generators for
a group G and a description of a subgroup H
? PSL2 = [[0,1;-1,0], [1,1;0,1]]; \\ S and T
\\ G = PSL2, H = Gamma0(2)
? [C] = mscosets(PSL2, g -> g[2,1] % 2 == 0);
? C \\ three cosets
%3 = [[1, 0; 0, 1], [0, 1; -1, 0], [0, 1; -1, -1]]
The function also returns the right action of G on H\G.
- new GP function msfarey to build subgroups H of G = PSL_2(Z) (as Farey
symbols) given an oracle deciding whether an element of G belongs to H.
\\ Gamma_0(N) is built-in
G0(N) = mspolygon(N);
\\ Gamma_1(N) via Gamma_0(N)
G1(N) = msfarey(G0(N), g -> my(a = g[1,1] % N); a == 1 || a == N-1);
\\ Gamma(N)
G(N) = msfarey(G1(N), g -> g[1,2] % N == 0);
[The GP language]
- new GP function matreduce, to convert a multiset to a vector of distinct
elements together with their multiplicities:
? matreduce([x,y,z,x,x,y])
%2 =
[x 3]
[y 2]
[z 1]
Can also be used to merge factorizations:
F1 = factor(12);
F2 = factor(20);
matreduce(matconcat([F1,F2]~)) -> factor(12 * 20)
- lexical variables names can now reuse builtin functions names as in
f(theta) = my(gamma=1/3); sum(omega=1,10, exp(2*I*Pi*gamma*theta*omega);
- GP closures improvement: no longer copy the full context, only the
variables actually accessed by the function.
- allow holes in multi-assignements: [a,,c]=[1,2,3].
- support plotinit/plotexport even when no graphic engine is available
(Configure --graphic=none).
- new parallel GP function parplothexport, parforprimestep, parforeach.
COMPATIBILITY ISSUES BETWEEN 2.12.0 and 2.12.1
============================================
0) Obsoleted functions and interfaces:
- removed obsolete functions 'bnfcompress' and 'zetamultinit'
- 'bnfissunit' is obsolete, use bnfisunit
- 'rnfkummer' is obsolete, use bnrclassfield!
- bnf.fu returns fundamental units in expanded form and can be very
expensive. Use bnfunits !
- bnfsunit()[1] returns fundamental S-units (without units) in expanded
form and can be very expensive. More generally, bnfsunit contains mostly
useless information in an expensive form and is now mostly obsolete.
Use bnfunits !
1) Output changes:
- qfbsolve (revert 2-12-0 C18); we had changed the interface to
return all solutions modulo units instead of a single solution in 2.11.
For compatibility reasons, we restored the old behaviour by default, an
optional flag allows to get more diverse data (all solutions, all primitive
solutions, a single solution).
- matrixqz(,-1 or -2): no longer return result in HNF (very expensive now
that the functions have been sped up and often not needed).
- bnfisunit and bnfissunit: the torsion unit exponent is now a t_INT
(used to be a t_INTMOD, requiring awkward conversions).
2) Input changes:
- zetamult: the optional 'zetamultinit' argument is gone (the implemented
algorithm is uniformly faster than the old one which made use of this
precomputation)
- parsum: removed optional argument initializing the sum to the given value
[this wasn't very useful and removing it allows grouping subsums => faster]
- mfshimura: disallow the discriminant D argument (not well defined);
only allow squarefree positive t
- disallow mfeisenstein(k,chi1,chi2) when Q(chi1 chi2) is not its field
of definition: the resulting modular form would violate asumptions made
in almost all mf routines, preventing those routines from accepting the
form.
-------------------------------------------------------------------------------
P.S. The Changelog
Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/
Done for version 2.12.1 (released 14/09/2020):
Fixed
BA 1- plotlines flag was ignored
2- fileopen(,"w" or "a") was bypassing the check for 'secure' default
3- bug in idealismaximal: K=nfinit(y^2+7); idealismaximal(K,[11,7;0,1])->0
4- bnfcertify did not certify correctly its argument when DEBUGLEVEL > 1
(\g 2 and above) and the computed class group was trivial (introduced
in 2002, commit d3d44841). The code was correct at \g1 or \g0, and in
all cases if the computed class group was non-trivial.
5- nfdiscfactors(nfinit([x^2+1, [1,x]])) -> wrong result (didn't support
inputs from nfinit([T, integer basis]))
6- nfinit(rnf) would produce a broken nf (not supporting
nf_get_ramified_primes)
7- [mf,F] = mffromqf([2,0;0,2]); L=lfunmf(mf,F) => wrong values
8- t=mfTheta();mfslashexpansion(mfinit(t),t,[0,1;-1,0],1,1) -> error
9- poldisc(x^4 + 8/y*x) -> type error in Q_divi_to_int [#2157]
10- T=mfTheta(); mfeval(mfinit(T),T,I/10) -> wrong sign
11- mfslashexpansion(mf,F,huge matrix,...) -> overflow
12- mf=mfinit([470,2],0);F=mfeigenbasis(mf)[7]; mfcuspval(mf,F,1/5)
-> division by 0
13- quadtofp(quadgen(-3)) -> t_FRAC component [#2158]
14- [from 2.12.0] nfgcd wouldn't terminate [#2159]
15- conjvec(t_FFELT of characteristic 2) was missing a conjugate
16- nf2 = nfnewprec(nf) could return incompatible nf2 [#2154]
17- [from 2.12.0] u_forprime_next around 2^63 could return primes larger
than upper bound
18- [from 2.12.0] gcd(2*x, 2*x+1) -> 2 [instead of 1]
19- [from 2.12.0] deriv(2/(4*x^2+1),x)->inconsistent exact division [#2162]
20- issquare(non square t_FFELT, &x) -> SEGV [#2163]
21- rdivii / rdiviiz imprecise, e.g.
a=28088408347805994933529600180306266460976;
b=10333147966386144929666651337523200000000; rdivii(a, b)
22- typo in QM_inv (wrong result)
23- modular symbols package: better type checks
24- division by 0 in Flx_extresultant when one input is 0
25- [from 2.12.0] lfunconductor(1,[]) -> SEGV
26- internal error in isprime(,1) after addprime() [#2166]
27- ZM_gauss returned incorrect result for t_MAT RHS and 0 input
BA 28- lfunhardy(..., t) with t<0 -> error
BA 29- ellweilpairing(E,P,P, odd m) -> wrong result [#2172]
PB 30- FlxqM_mul could return wrong result [#2174]
31- p = 4*vecprod(primes([3,373]))*587-1; quadclassunit(-p) -> SEGV [#2175]
BA 32- Using local in export()ed functions could crash GP
33- Flx_div_by_X_x(A, x) didn't handle deg(A) <= 0
34- M=mfinit([11,2,Mod(3,11)]); f=mfbasis(M)[1]; lfuncheckfeq(lfunmf(M,f))
-> type error
35- rare random SEGV in nfbasis [#2178]
36- missing type checks in lfunthetacheckinit [#2179]
37- idealispower(x,n,&y): y could be incorrect [#2181]
38- SEGV in idealispower [#2183]
39- inconsistencies in subst for constant polynomials: e.g.,
type(subst('u^0,u,x)) -> t_POL (was t_INT)
subst('u^0,u,Mat(Mod(1,2))) -> [Mod(1,2)] (was [1])
XR 40- factorpadic: incorrect factors (might not lift to Qp)
E.g. T=polsubcyclo(271,9); factorpadic(T,3,7)[4,1]
BA 41- polcompositum(x^2+x/3+1,x^2+x/3+1) -> SEGV
42- p=nextprime(2^20);q=nextprime(2*p);n=q*p;v=n+1;P=x^2-1;
zncoppersmith(v*P,v*n,p,p*v) --> oo loop
43- missing reduction of pr.gen in idealprimedec [ slowdown ]
+ nfmodprinit [ division by 0 ]
JR 44- polylog(-m, tiny z): catastrophic cancellation, e.g. polylog(-100,.5)
45- prodeulerrat((p-2)/(p-1)+(p-1)^(m-1)/p^m,1,3) slow and imprecise [#2192]
46- Mod(1,5) * O(x) -> O(x) [instead of Mod(0,5) + O(x)]
47- lfuninit: lfunrootres calls too expensive if rootno and polar part known
48- incorrect rounding in divrr(realprec = 3)
49- polrootsreal(x+0.) -> SEGV
DB 50- mspolygon(1,2): incorrect drawing
51- qflllgram([2,2,3;4,5,6]) -> SEGV
52- printf("%10.6f\n",2^-100) -> SEGV [#2198]
53- mfsturm: off-by-1 error
BA 54- ((x^7+x^3+x+1)*Mod(1,Mod(1,2)*d))%(x^4+x^3+x^2+1)->x^3+x
instead of Mod(1,2)*x^3+Mod(1,2)*x [#2199]
55- tan(-127336279536511925./2^49) -> completely wrong at \pb64
56- ellocalred / K != Q: wrong encoding for I0 (kod = 1 instead of 0)
57- atanh near -1: large relative error
58- acosh near 1 or -1: large relative error
59- type(subst('x^0,'y,0)) -> t_INT (instead of t_POL)
60- bnfisprincipal: overflow when h >> 1
61- lfun: Pi^s or (2Pi)^s imprecise when Im(s) >> 1
BA 62- factor((x-1)*(x-y)^2) --> oo-loop
BA 63- ellap could fail with division by 0
64- wrong results in bnfsunit [#2207]
65- problems with gequal(t_SER or t_POL with inexact coefs or constant
wrt. some variables). E.g. S=x+O(x^2);T=S+O(y); S == T -> 0 [#2188]
66- mfkohnenbijection failure [#2211]
MW 67- mateigen would sometime return eigenvalues instead of eigenvectors
AE 68- [libpari] FpX_oneroot_split could fail for deg 2 and 3.
BA 69- [pthread] Fix potential crashes when cancelling threads.
70- derivnum: add sanity checks for 'ind' [#2216]
NM 71- nfisincl(x^2-2^5,nfinit(x^4-2)) -> wrong result [#2213, #2214]
72- nfeltsign: wrong results for non-primitive elements in presence of
ramification at infinity [#2217]
HC 73- F=mfbracket(mfbd(mfEk(4),4),mfTheta(),1); mfcoefs(F,0) -> SEGV
74- gammamellininv([0, 10^-38], 3/10) -> junk
75- mfshimura, mfkohnenbijection: could create mf spaces with
inconsistent character.
BA 76- [mpi] sending t_LIST to remote nodes did not work.
BA 77- my(a,b); parvector(1,i,self()) --> SEGV
AP 78- bnrclassfield(,,2) --> sometimes relative polynomial
AP 79- nfgrunwaldwang could modify its arguments
80- ldata_vecan(an, N, prec): make sure the function returns N coefficients
81- T=Pol([1,0,6748,-750056,45535504,-2530688944,140646000784]);
bnfinit(T,1).cyc -> [240, 12, 4, 2, 2, 2] (instead of [120, 4, 4, 2])
BA 82- [mt] variable priorities in threads could be incorrect.
83- galoissubcyclo: wrong result with bnr input [#2232]
84- subgrouplist(bnr) != [] when modulus is not the conductor
85- incorrect type checks in ideallist
BA 86- polmodular(p,,q) incorrect for large q
BA 87- [pthread] polgalois(deg>7) could crash
88- forqfvec or qfminim with negative bound => crash [#2237]
89- Z_issmooth_fact: incorrectly include 1 among prime factors
90- Rg[MX]_rescale_to_int: result had a large power-of-2 content
DJ 91- sqrtn(Mod(13,112),6) -> o loop [instead of 'bad input' error]
92- addprimes() creates issues with nfdisc [wrong results], because it
breaks the assumption that a potential composite in a "bounded
factorization" has to come last.
93- addprimes() creates issues with thue [wrong results].
addprimes(360000000029);
#thue(x^2+1,500009*500029* 360000000029* 2^100) -> 0 [instead of 32]
94- factor(257377849,100) -> [61,2; 69169,1] instead of [61,2; 263,2]
95- addprimes() creates issues with nffactor [wrong results].
96- gmulsg(0, t_REAL) followed mulsr semantic (t_REAL) instead of gmul's
(t_INT). Analogous problem for gmulsg(0, t_COMPLEX)
Changed
1- [libpari] rename rootsof1 -> nfrootsof1
2- [libpari] rename isirreducible -> polisirreducible
3- hyperellpadicfrobenius: allow X defined over a number field and
compute Frobenius over unramified extension of Q_p
4- matsnf(integral matrix): use modular algorithm
5- rnf structure now contains the list of relative ramified primes
6- use the documented semantic for Euclidean division involving real t_QUAD
e.g. x % y is x - floor(x/y)*y; for a t_QUAD x and t_INT y, we used
to mod out y in "real" and "imaginary" part independently.
7- [libpari] rename rootpadic -> polrootspadic
8- polrootspadic: allow computing roots in unramified extension of Q_p
9- definition of lfunhardy for non-self-dual functions: remove
rootnumber, which is not well defined since it depends on the choice
of dual sequence a^*(n)
10- improved RgXn_powu / RgXn_powu_i for large valuations
11- improved ZM_ker for wide rectangular matrices
12- lfun(t_INT D): allow arbitrary non-0 D encoding the attached
primitive character coredisc(D) (as for other character formats)
13- exp(small rational number): use binary splitting
14- parsum: removed optional argument [allows grouping of subsums => faster]
BA 15- old gen_ZpM_Dixon renamed to gen_ZpM_Dixon_Wiedemann,
new gen_ZpM_Dixon with simpler interface
16- better formula for Catalan
BA 17- QXQ_div_ratlift renamed to QXQ_div
18- disallow mfeisenstein(k,chi1,chi2) when Q(chi1 chi2) is not its field
of definition
19- improved ZM_rank for rectangular matrices
20- asymptotically fast variant for RgX_translate algorithms
21- ZX_Uspensky(flag = 0) is now guaranteed to find all rational roots
22- lfunzeros: allow intervals not contained in R^+
23- removed obsolete function 'bnfcompress'
24- [libpari] rename perf -> qfperfection
25- format of bnf structure, to allow compact representations
BA 26- [libpari] Z_to_F2x(s,v): v is now a shifted variable number
AP 27- matrixqz(,-1 or -2): faster code + no longer return result in HNF
AP 28- allow nfsubfields([nf,fa],): van Hoeij-Klueners-Novocin algorithm
29- nfsubfields: retune to avoid huge inertia degrees
BA 30- qfbsolve new flag: bit 1: 1 solution, bit 2: add imprimitive solutions
BA 31- revert 2-12-0 C18: qfbsolve with default flag = previous behaviour
32- division/inversion power series: use Newton
33- deprecate LLL_COMPATIBLE (now implicitly always set)
34- bnfissunit is obsolete, use bnfisunit
35- bnfsunit is mostly obsolete, use bnfunits
36- bnfisunit and bnfissunit: torsion unit exponent is now a t_INT (used
to be a t_INTMOD)
37- support compact representation in nfeltmul, nfeltpow, nfeltdiv,
nfmodpr, nfeltsign
38- elldivpol for negative n: define f_{-n} = -f_n [ was f_n ]
39- support plotinit/plotexport even when the graphic engine is disabled
(Configure --graphic=none)
40- gpow(x,n): faster and more precise when n is a t_COMPLEX
41- faster formula for log(2)
BA 42- nfgaloisconj(deg 2 pol): swap result to follow nfroots.
BA 43- lexical variables names can now reuse builtin functions names as in
fun(theta)=my(gamma=1/3);sum(omega=1,10,exp(2*I*Pi*gamma*theta*omega)
44- mfshimura: disallow the discriminant D argument, only allow
squarefree positive t
BA 45- closures: do not copy the full context, only the accessible part
46- add optional argument to randomprime [select congruence class]
47- add optional argument to sqrtint [set remainder] [#2229]
48- gammamellininv*(A,...): allow A to be an L-function
49- bnrinit: optional argument to compute Cl_f/n, avoid tough discrete logs
50- rnfkummer: removed "all" flag, function now obsolete. Use bnrclassfield!
51- rnfconductor: flag to compute Cl_f/[K:Q] instead of Cl_f
52- bnrconductor_i is now obsolete, use bnrconductor_raw or bnrconductormod
53- dvdxxx(x,y) allow y = 0 [and return 0 unless x = 0]
54- [libpari] bnrsurjection now returns [matrix, cyc(F), cyc(f)]
55- idealstar: optional argument to compute G/G^n, avoid tough discrete logs
HC 56- zetamultall: add flag
57- subgrouplist: allow any object affording a .cyc method
58- remove zetamultinit and corresponding optional argument in zetamult
59- [libpari] ZM_lll: flags LLL_INPLACE and LLL_GRAM are now incompatible
(reducing a Gram matrix in place without returning the base change
matrix is not useful; supporting it would complicate the code)
AP 60- improve bnfisprincipal in fields of large degree (test more small
elements)
61- bnrgaloismatrix(bnr) no longer needs a bnr with generators
(from bnrinit(,1))
62- bnrisprincipal(bnr,1) no longer needs a bnr with generators
(from bnrinit(,1)). Added flag 4 analogous to bnfisprincipal (compact
representation of principal part)
63- added sanity checks when parsing default args in 'install' prototypes
64- improved zetahurwitz: faster & use less memory
Added
1- new GP function rootsof1
BA 2- [libpari] F2xqX_halfgcd, FFX_halfgcd
3- [libpari] uis2psp, uispsp
4- [libpari] ZV_lcm
5- [libpari] nfhyperellpadicfrobenius
6- [libpari] rnf_get_ramified_primes
7- allow nfinit([T, basis, ramified primes])
8- allow nf.p, rnf.p [rational ramified primes]
9- [libpari] idealfactor_partial
10- add flag bit to ZM_snfall_i
11- allow real t_QUAD in floor, ceil, divrem, %, \, \/
12- [libpari] ff_parse_Tp
13- new GP function mfisetaquo
14- [libpari] Qab_tracerel, QabV_tracerel, QabM_tracerel
BA 15- [libpari] RgXV_to_FlxV, FlxV_Flv_multieval,
F2v_and_inplace, F2v_negimply_inplace, F2v_or_inplace,
F2v_hamming
16- [libpari] ZpX_primedec
BA 17- [libpari] QM_sqr, FqC_to_mod, ZXQX_gcd, QXQX_gcd
18- [libpari] radicalu
19- parallel support for lfuninit
20- new GP function parplothexport
BA 21- [libpari] gen_ZpM_Newton, ZpM_invlift
BA 22- [libpari] F2xn_red, F2xn_inv, F2xX_to_F2xC, F2xXV_to_F2xM
HC 23- direct formulas for quadratic Dirichlet L-functions at integers
24- new GP functions: eulerfrac, eulerpol, eulervec
25- [libpari] lfunquadneg
BA 26- [libpari] vecvecsmall_sort_inplace, vecsmall_isconst, vecsmall_is1to1
BA 27- [libpari] groupelts_quotient, quotient_groupelts, groupelts_to_group
28- new GP functions mscosets, msfarey
29- new GP function ellpadiclambdamu
BA 30- [libpari] Flx_Fl_sub, Flx_is_totally_split, Flxq_autpowers
31- [libpari] Flx_translate1_basecase
32- [libpari] Vgaeasytheta
BA 33- [libpari] RgV_type, RgV_type2, closure_callgen0prec
BA 34- lfuncreate: support for closures of arity 0
35- [libpari] ZX_sturm_irred, ZX_realroots_irred
36- [libpari] QM_image, QM_image_shallow
37- new GP function asympnumraw
38- [libpari] QM_gauss_i, SL2_inv_shallow
39- [libpari] checkfarey_i
40- [libpari] mspadic_parse_chi, mspadic_unit_eigenvalue
41- [libpari] ellQtwist_bsdperiod
42- [libpari] mseval2_ooQ
43- [libpari] etaquotype
44- new GP functions fft, fftinv
BA 45- [libpari] init_Flxq
46- compact representation of units in bnf (bnfinit(pol,1)) and of
principal ideal generators (bnfisprincipal(bnf,id,4))
47- [libpari] Flv_factorback, FlxqV_factorback, famatV_zv_factorback,
famatV_factorback, FqV_factorback
48- [libpari] nflogembed, nf_cxlog, nfV_cxlog, ZMrow_equal0, ZC_u_divexact
BA 49- [libpari] FpXn_expint, Flxn_expint, Flx_blocks, FlxX_blocks
50- [libpari] bnf_get_sunits, nfsign_tu, nfsign_fu, ideallog_units,
sunits_makecoprime, famat_remove_trivial, bnf_build_cheapfu,
bnf_compactfu, bnf_compactfu_mat, bnf_has_fu, famat_idealfactor,
famat_div, famat_nfvalrem
BA 51- [libpari] factorial_Fl, factorial_Fp, FpV_prod
BA 52- [libpari] ZX_compositum
BA 53- [libpari] FlxXn_red, FlxqXn_mul, FlxqXn_sqr, FlxqXn_inv, FlxqXn_expint
BA 54- [libpari] FlxX_Laplace, FlxX_invLaplace, FlxqX_Newton, FlxqX_fromNewton
55- [libpari] RgV_count, RgV_equiv
56- lfuncreate(znstar or bnr,): allow a vector of characters =>
vector-valued L-function
57- [libpari] gc_const
AP 58- [libpari] QM_ImZ, QM_ImZ_all, QM_ImQ, QM_ImQ_all
BA 59- [libpari] RgXn_expint, FpXQXn_expint, FqX_expint
AP 60- new GP functions nfsubfieldscm, nfsubfieldsmax
BA 61- new GP function lfunshift
62- [libpari] Q_lval, Q_lvalrem
BA 63- [libpari] ZXX_evalx0, zx_z_divexact, zx_lval, upowers
64- [libpari] is_qfb_t
65- new GP function eulerianpol
BA 66- [libpari] FlxX_translate1, zlx_translate1, zlxX_translate1
67- [libpari] rfracrecip
68- [libpari] ZXQ_minpoly
69- [libpari] bnrchar_primitive_raw
70- new GP functions matreduce, bnfunits
BA 71- [libpari] QXQ_to_mod_shallow
72- [libpari] nf_cxlog_normalize
BA 73- [libpari] cmpss, cmpuu
BA 74- [libpari] FpX_Fp_div, FpX_divu
BA 75- holes in multi-assignement: [a,,c]=[1,2,3]
76- [libpari] expIPiR, expIPiC
BA 77- [libpari] forqfvec1, pariplot, sumdivmultexpr
78- [libpari] powPis, pow2Pis
BA 79- nfisincl: new flag: return a single embedding
BA 80- [libpari] FpXC_to_mod, FpXM_to_mod, FqXC_to_mod, FqXM_to_mod
BA 81- [libpari] FFX_add, FpXY_FpXQ_evaly
BA 82- [libpari] halfgcdii, RgX_halfgcd
BA 83- new GP function halfgcd
BA 84- [libpari] pari_realloc_ip
BA 85- [libpari] random_zv, F2m_transpose, F2m_row
BA 86- [libpari] F2Ms_ker, F2Ms_colelim, F2Ms_to_F2m, F2m_to_F2Ms
87- [libpari] Qdivis, Qdiviu
88- [libpari] bnr_subgroup_check
89- [libpari] pow2Pis, powPis
AP 90- [libpari] bnrisprincipalmod, ideallogmod
91- [libpari] bnrconductor_raw, bnrconductor_factored
92- [libpari] cyc_get_expo
93- new GP function bnrmap
HC 94- new GP function polylogmult
95- new GP function zetamultdual
96- [libpari] checkbnr_i
97- [libpari] absZ_factor_limit_strict
98- [libpari] Idealstarmod, ZV_snf_gcd, ideallog_units0
BA 99- [libpari] FqC_FqV_mul
100- [libpari] gen_sort_shallow, vecvecsmall_sort_shallow
BA 101- new GP functions parforprimestep, parforeach
BA 102- [libpari] ZXQ_powers, ZXX_Q_mul, QXQX_mul, QXQX_sqr, QXQX_powers
BA 103- [libpari] Kronecker_to_ZXQX, QXQX_QXQ_mul, ZXQX_ZXQ_mul
104- [libpari] zv_sumpart, div_content, hash_zv
BA 105- [libpari] groupelts_conj_set, group_subgroup_is_faithful
106- qflll(x,3) in place reduction: return x * qflll(x) [faster]
107- [libpari] idealpseudominvec
108- [libpari] galoismatrixapply
BA 109- new GP function permcycles
BA 110- [libpari] FpX_FpXV_multirem, FpXV_chinese
BA 111- galoisinit: support for group (3x3):4 (GAP4(36,9))
BA 112- [libpari] minim_zm
113- new GP function dirpowerssum
114- [libpari] vecfactorsquarefreeu_coprime
BA 115- [libpari] nfX_disc, nfX_resultant
BA 116- new GP function lfundual
Removed
1- obsolete function rootsof1_kannan: use nfrootsof1
2- obsolete function checkbnrgen: use bnr_get_gen
Done for version 2.12.0 (released 01/06/2019):
Fixed
1- memory leaks due to the use of varhigher/varlower
2- memory leak on error in plots
3- memory leak on error in newtoncharpoly
4- heap-buffer-overflow in init_prefix [readline]
5- mfsplit(mf,,flag) could return uninitialized objects => SEGV
6- mfeisenstein(k,,chi) was treated as E(k,chi) instead of E(k,1,chi)
7- poldegree(y/x) -> 0 [ instead of -1 ]
8- sumeulerrat(y/x^2,1) -> junk
HC 9- incgam(-1000.4,2) -> SEGV
10- mfatkininit(mfinit([366,2]),2) -> precision error
11- forprimestep: wrong when wrapping word boundary (2^32 or 64) [#2071]
12- mfbracket: [f,g]_m was multiplied by (-1)^m
13- wrong results in mfatkininit / mfatkineigenvalues due to insufficient
precision [#2073/#2074]
14- issquare(Mod(x,ffinit(3,2))) -> wrong result [broken Fq_ispower]
15- possible SEGV in rnfpseudobasis(, [pol,lim])
16- wrong result in elllog over F_p, p in [2^63,2^64[
p=13824553909862352061; A=8953655473130154624; B=9775907253961339458;
P=[6444058885176327583,7963649599850249187];
E=ellinit([A,B],p); Q=ellmul(E,P,2);
elllog(E,Q,P) -> 0 [ Flj_mulu_pre would not accept n >= 2^63 ]
17- wrong result in mfsymboleval when path extremities are close to real
axis (cusps were OK) [#2075]
18- mfcoefs(mfDelta(),0) -> SEGV [#2078]
19- GC error in lfuncreate(elliptic curve over number field) [#2080]
20- X11 and Qt graphic engine: pari_close called too soon => crash
21- pariold.h: mix up with obsoleted taille / taille2
BA 22- foo(n)=vector(n)[1..n];123; would corrupt the GP interpreter [#2081]
23- Pol(0)/'x -> t_INT 0 (instead of 0*x^0)
Pol(0)/(Mod(1,2)*'x) -> t_INT 0 (instead of Mod(0,2)*x^0)
24- missing typecheck in nfalgtobasis [#2084]
25- dbllog2(t_COMPLEX of t_FRAC) => junk
26- nffactor(t_POL, t_POL) => bug in LLL_cmbf [#2083]
27- ideallog(pure archimedean conductor, t_FRAC) -> log(0) error
28- lfunrootres: avoid oo-loop
29- mfgaloistype: dihedral forms possibly incorrect for N > 3000
30- mfgaloistype: error on mf=mfinit([1159,1,Mod(930,1159)],0);
31- incorrect accuracy in limitnum / asympnum for alpha != 1
32- missing GC in polint_i
33- hash_GEN(x) returned different values depending on whether x was a clone
BA 34- [mpi] setting nbthreads in .gprc could lead to crashes.
35- accuracy too large in derivnum => slowdown
36- nfisincl(x^5-x^4+x^3-2*x^2+3*x-1,x^20+x^15+x^10+x^5+1) -> SEGV
37- stack corruption in addsub_frac
AP 38- segfault in rnfidealup [#2093]
39- Ser(x,x,0) -> error instead of O(x) [#2092]
40- fix mspolygon(,2) [add 1/3rd hyperbolic triangles + fix labels]
41- factor(3/(x^5+3*y*x^4+3*y^2*x^3+y^3*x^2)) -> SEGV
42- output from bnfcompress() mistaken for rnf and vice-versa
43- catastrophic cancellation in acosh / asinh for large t_COMPLEX
44- zeta(1/2 + I*t) => internal error
45- cos(z) and sin(z) imprecise when Im(z) is nonzero but tiny
BA 46- hyperellcharpoly: wrong results over Z/3Z
47- gmp kernel: off-by-1 error in red_mongomery [read uninitialized
memory, then ignores result]
48- intnuminit([-1,-1/2],[1,-1/2]) twice slower than it should
49- forcomposite(n=2,4,print(n)) -> empty [#2096]
50- relative extension of degree 1 was not properly supported in
rnfidealprimedec and rnfidealup
51- mfmul(f,g) created invalid forms when f (resp. g) had Nebentypus chi
(resp. chi') and Q(chi * chi') != Q(chi) or != Q(chi')
[analogously for mfpow, mfdiv, mfbracket]
52- let [N,k,chi] = mfparams(f); f had coefficients in Q(chi)
[or an extension thereof for eigenforms] but the values obtained
from znchar(chi) and chareval were incompatible with mfcoefs when
order(chi) = 2 (mod 4) [same cyclotomic field but different
cyclotomic polynomial]
FB 53- [Configure] library not found despite --with-readline-lib [#2097]
54- besseli, besselj, besselk, besseln(nu, z): use asymptotic expansion
for large z [#2006]
55- minpoly(Mod(1,t^2)) -> SEGV [#2102]
56- a=ffgen(3^2,'a);poldisc(x^6+a*x+y) -> division by 0 [ positive
characteristic with a few t_INT coefficients ]
57- intnumgaussinit(n) actually used 2*ceil(max(4,n/2)) quadrature points
BA 58- [pthread] parapply could crash
BA 59- ffinvmap(m) could SEGV on bad input
60- ellisdivisible(E/K number field in 'x) -> incorrect priority[#2106]
61- idealispower(nf, t_INT n) possibly wrong if (n, nf.disc) > 1
62- zeta''(0): all precision lost [more generally f'...'(n quotes)
imprecise in the neighbourhood of 0, while derivnum(,n) was OK]
63- sumdigits(negative number, B) sometimes negative
64- poldiscfactors(x^0) -> division by 0
65- factormod(x^3+1,[y^2+1,2]) -> SEGV
66- factormod(x^3+1,[y^2+1,5]) -> weird error message
67- besseljh(huge n, z) -> junk
BA 68- [pthread] localbitprec was not exported to threads
BA 69- fix inefficiency in fplll not present in original code
70- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/2000,[1/100,oo]): no root [#2112]
71- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/1000,[1/10,oo]): extra root [#2112]
72- lfun may crash on lfuncreate input with too short an vector [#2118]
BA 73- incorrect use of graphcolors -> SEGV
74- forcomposite(..., oo, ) was not supported
BA 75- lfunartin with poles: incorrect result
JD 76- factor: significant pointers lost [#2125]
BA 77- matdet/matrank over large fields was inefficient
78- poldisc(y^2/x + 1, y) -> error [also affects polresultant]
79- poldisc(x^2/y + 1, y) -> 0 [also affects polresultant]
80- ispower(2, 2^64) -> error
81- (f(x) = x*'y); f'(1) -> error
BA 82- sqrtn(Mod(3,19),4) -> no error [#2127]
83- nfhnfmod: wrong result
84- matdet(mat with t_RFRAC entries): wrong result [#2128]
85- n-th derivative of zetahurwitz used 'seriesprecision' instead of n
+ imprecise value when n large [#2130]
86- lfunzeros(f, [0, b]) wasn't allowed
87- mateigen(): typo causing wrong results when correct results were
achievable [#2131]
88- intnum(x=-oo,[0,-1/2],1/sqrt(-x*(x^4+1))) -> division by 0
89- eint1(large x > 0) didn't use asymptotic expansion [#2129]
90- printtex(quadgen(-3,'z)) ==> w
BA 91- [a,b]=a could lead to memory corruption
92- memory leak in cgetalloc when lg overflows
93- possible SEGV in padicappr [#2133]
94- zeta(small even integer) was very slow at large accuracy
95- core() could destroy its input, if stored in a GP variable
BA 96- (f(x, y = 1) = x*y); f'(1) returned 0
97- quadgen(2^64+1) * 1. => junk (stack corruption in quad_disc).
98- ellmoddegree: infinite loop and stack corruption (e.g on 52a2)
99- ellmoddegree(ellinit("10890ba6")) -> wrong result
100- nfgcd called ZX_resultant(a,T) with typ(a) == t_INT
101- random SEGVs in bnfinit with large fundamental units [#2139]
(due to fundamental units computed via floating point approximations
rounding to 1 or -1)
102- qfisom([16,6;6,10],[4,3;3,10]) was not 0. [#2140]
103- mfeval: wrong result when level of form and space didn't match [#2134]
BA 104- nfisincl(x^3+9,x^6+2187): wrong result [#2144]
105- ispower(27,2^60) -> SEGV [#2145]
BA 106- matsolve(M,vector(n)) could return result of wrong dimension
107- [Windows] no longer crash on deep recursion [#2105]
108- factor(Mod(x^3 + x + y^2,2)) -> oo loop [#2148]
Changed
1- [libpari] gp_filter return value is now allocated on the stack
[was undocumented, malloc'ed and resulted in memory leaks]
2- improved n!, factorial(n), lngamma(n) and psi(n) for integral n
3- improved bernvec: no longer Obsolete
4- [libpari] mpbern is now obsolete: use constbern
5- rewrote the Bernoulli number cache (using zeta(2n) = * B_{2n})
and power recycling for zeta(2n) + additive Clausen von Staudt):
orders of magnitude faster and always store Bernoulli in rational form
BA 6- [libpari] ZpX_ZpXQ_liftroot_ea: change interface for 'early'
7- bnf.fu: return '0' if bnf does not contain the fundamental units (was an
error)
8- support ?? _+_ and friends [extended help for specific operators
instead of redirecting to "GP operators"]
9- support ?? _op=_ and ?? op=; support ?? _++ and friends
10- x ^ t_FRAC: return an exact result if possible; e.g. 4^(1/2) is now 2
HC 11- gamma(t_FRAC) and lngamma: use direct formula when denom | 24
12- serlaplace(scalar) -> return the scalar (understood as a constant
polynomial) instead of raising an exception [#2082]
13- implement hyperu for arbitrary complex parameters
14- extend lex() to allow complex numbers
15- lfunconductor(L, [a,b]) no longer supported to look for conductor in
interval [a,b]; implement lfunconductor(L, list of potential N) instead
16- renamed GP functions Strchr -> strchr (pari_strchr in libpari),
Strexpand -> strexpand, Strprintf -> strprintf, Strtex -> strtex
17- [help] move str* functions from "conversions" to "programming" section
BA 18- qfbsolve now returns a vector of solutions.
19- limitnum / asympnum: remove useless optional parameter 'muli/k'
[now implicitly set to 1, not to 20]: just extrapolate u(muli*n).
20- improve rdivii / rdiviiz [ use divri which may use divri_with_gmp ]
21- mfparams now returns [N,k,CHI,space or P, Phi] where Phi is the
cyclotomic polynomials defining the field of values of CHI
22- inline / uninline are now obsolete, use export/unexport
23- let localprec(p) accept non integral real p [replace by ceil(p)];
same for localbitprec.
24- let precision(x,p) accept non integral real p [replace by ceil(p)];
same for bitprecision.
25- besseln is now obsolete, use bessely
26- [libpari] precision0 / bitprecision0 (meant to implement GP-specific
commands, not for library use) are now obsolete. The new equivalent
commands (still not meant for library use) are precision00 and
bitprecision00.
27- improve intnumgaussinit (use direct Newton instead of polrootsreal)
28- improve sumeulerrat / prodeulerrat
29- factor(x, D), D now encodes the domain over which to factor
30- allow listinsert(L, x, n) for n > #L, like listput
31- allow forsquarefree(n = a, b) with a*b < 0
32- allow L[a..b] and L[^i] for t_LISTs
BA 33- gen_factorback: change argument order to match other functions
34- polinterpolate(X,Y,t,&e): e is now more precisely defined and the
error estimate is given as a binary exponent; compared to the value
dy returned up to this change, we have e = exponent(dy).
35- suminf is now sensitive to bit precision. In library mode, use
suminf_bitprec (precision in bits) rather than the historical suminf
(precision in words)
36- RgV_polint: use (asymptotically fast) FpV_polint over Fp
BA 37- [libpari] pari_add_hist now take 3 arguments (data, cputime, realtime)
BA 38- # and ## now also display the realtime when nbthreads is not 1
39- gp_format_time: remove trailing ".\n" from formatted string
BA 40- GP: arguments of the parser code W can start with ~ for clarity, e.g.
listput(~L,x), mapput(~M,x)
BA 41- GP: the argument of a user member function is now a reference
42- make ellheight(E, torsion point) return an exact 0 [#2109]
43- allow rnfdisc(k, polynomial with non-integral coeffs)
44- allow rnfconductor(k, non-monic polynomial)
45- poldisc(t_COMPLEX) now raises an exception (used to return -4)
46- rnfdisc(nf, [T,B]) allow B a list of primes and maximal ideals
(same for rnfbasis, rnfinit, rnfconductor, rnfpseudobasis)
47- ??? include double quotes when needed (e.g. ???conductor) [#2122]
48- improved the prime() function
49- mpeint1: support all t_REAL x != 0 (was x > 0)
LGr 50- nffactor now supports rational functions
51- improve QM_gauss [treat contents sensibly]
52- lngamma and psi near 1: cache values of zeta(odd integers)
53- [libpari] nfbasis prototype changed: 3rd argument listP is gone, use
nfbasis(mkvec2(T,listP), &disc). Note that the documentation was
incorrect: it is not guaranteed that nfbasis([T, listP]) returns the
maximal order even if listP contains all prime divisors of the field
discriminant. See ??nfbasis
54- nfbasis now accepts an optional argument &dK [order discriminant]
55- mffromlfun: support forms of half-integral weight (e.g. from lfunqf)
BA 56- [libpari] FF_Frobenius: return the image of the standard generator
57- faster poldiscfactors()
58- when 'log' is turned on, explicitly output the logfile name
Added
1- [libpari] nonsquare_Fl
2- [libpari] set_avma
BA 3- [libpari] FpXC_FpXQ_eval
4- [libpari] mulu_interval_step
5- new file src/basemath/bern.c
6- [libpari] divisorsu_moebius
7- [libpari] ZXQ_powu
8- new GP functions hypergeom, airy
9- [libpari] gc_bool, gc_double, gc_int, gc_long, gc_ulong, gc_NULL
10- new GP functions strsplit, strjoin
11- new file src/basemath/str.c
12- [libpari] has_str_len
BA 13- qfbsolve(Q,n) now support arbitrary integer n.
14- [libpari] divisorsu_fact_factored
15- [libpari] qfiseven
16- [libpari] zv_cyc_minimize, zv_cyc_minimal
17- limitnum/asympnum: allow closures of the form N->[u(1),...,u(N)],
which allows to handle efficiently sums, recursions, continued
fractions, etc.
BA 18- new GP function polteichmuller
BA 19- [libpari] Flx_Teichmuller, F2x_Teichmuller
20- [libpari] mpsinhcosh
21- new GP function dirpowers
BA 22- [libpari] F2xqX_resultant, F2xqX_disc, FlxqX_resultant, FlxqX_disc,
FpXQX_resultant, FpXQX_disc, FFX_resultant, FFX_disc
BA 23- FFX_gcd, FFX_extgcd
24- optional flag to pollegendre and polhermite
25- new GP function pollaguerre
BA 26- [libpari] Flxn_red, Flxn_sqr, Flx_integ
BA 27- new GP functions export, unexport, exportall, unexportall
28- [libpari] Fp_divu
BA 29- [libpari] ZpXQX_liftroots
30- new GP functions getlocalprec, getlocalbitprec
31- [libpari] guncloneNULL, gluncloneNULL_deep
32- allow subst(e, x, vector v) for vector(subst(e, x, v[i]))
33- [libpari] pollegendre_reduced
AP 34- new GP function mfgaloisprojrep
35- optional v argument to nfmodprinit
36- [libpari] rfrac_deflate, rfrac_deflate_order, rfrac_deflate_max
37- [libpari] identity_zv, identity_ZV
38- [libpari] polintspec, polint_i
BA 39- [libpari] FF_var, FF_preimagerel
BA 40- new GP function ffmaprel
BA 41- [libpari] closure_derivn
BA 42- [libpari] walltimer_start, walltimer_delay, pari_get_histrtime
BA 43- new GP function strtime
BA 44- [libpari] Flxn_exp, Flx_Newton, Flx_fromNewton, Flx_Laplace,
Flx_invLaplace
BA 45- Support call by reference in GP function: f(~L,x)=listput(~L,x+1)
BA 46- Generic fast linear algebra using CUP decomposition
47- [libpari] nfX_to_monic
BA 48- new GP function derivn
BA 49- new GP function arity
50- new GP functions idealdown, idealismaximal
51- [libpari] bid_get_fact2
AP 52- new GP function bnrclassfield
HC 53- implement lfunmfspec in odd weight
HC 54- new GP functions ellE and ellK
55- [libpari] maxprimeN
BA 56- support for rational model in ellratpoints and hyperellratpoints
57- [libpari] psi1series
58- [libpari] constzeta
59- new GP function nfdiscfactors
60- [libpari] RgV_is_arithprog
61- fast algorithm for zeta([a + b*n | n<-[0..N]])
BA 62- ellheight(E) now returns the Faltings height of E
BA 63- lfun now allows non-integral weights
OB 64- example/parigp.sty to re-enable PARI's \pmatrix with amsmath [#2110]
IZ 65- [win32+gp-sta] support for install()
66- [libpari] setunion_i
BA 67- [libpari] hash_init, hash_init_ulong
BA 68- [libpari] FFXQ_minpoly
BA 69- [libpari] F2x_recip
70- [libpari] RgV_isin_i
Removed
1- member functions .futu and .tufu [deprecated since 2.2]
2- inferior hash function hash_str2: use hash_str
3- matsnf: remove obsolete binary flag '2' [make it a no no-op] (cf mathnf)
K.B.
--
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]
`