| Karim Belabas on Mon, 03 Jun 2019 23:21:53 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| pari-2.12.0 released ! [ALPHA] |
Dear PARI lovers,
I would like to announce the release of pari-2.12.0-ALPHA !
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.0-ALPHA: see below for COMPATIBILITY ISSUES.
=================================
[The GP language]
- support call by reference in GP functions: f(~L,x) = L[1] = x;
This allows to modify the contents of a vector / list argument and avoids
unnecessary copies of arguments
For clarity, built-in functions handling lists/maps should now use the ~
prefix to indicate mutable containers, e.g. listput(~L,x), mapput(~M,x)
- new GP functions export, unexport, exportall, unexportall simplify
writing code for parallel execution (allowing simple access to "global"
variable in parallel threads)
- new GP functions getlocalprec, getlocalbitprec: to replace obscure
idiomatic constructs such as bitprecision(1.)
- new GP functions to simplify string handling: strsplit (split into a
vector of strings with respect to a given separator), strjoin (join a
vector of strings using a given separator), strtime (format a 'time')
- new GP function arity, returns the number of arguments of a function
- improve extended help: ??? output now include double quotes when needed
(e.g. ???conductor); support all symbolic operators using the _
placeholder syntax: ?? _+_, ?? !_, ?? _+=_, ?? _++, etc.
- natural extensions to the syntax of t_LISTS: allow L[a..b] and L[^i];
allow listinsert(L, x, n) for n > #L, as in listput
- allow forsquarefree(n = a, b) with a*b < 0
- allow subst(e, x, vector v) for vector(subst(e, x, v[i]))
[Transcendental functions]
- new GP function hypergeom() for general hypergeometric functions;
airy() for Airy Ai and Bi functions. As a consequence, hyperu(), the
U-confluent hypergeometric function is now implemented for arbitrary
complex parameters.
- new GP functions ellK and ellE (complete elliptic integrals of the first
and second kind)
- new GP function dirpowers(n,x) = [1^x, ..., n^x]
- improve gamma-related functions:
. n!, factorial(n), lngamma(n), psi(n) for integral n
. gamma and lngamma(t_FRAC) use direct formula when denom | 24
. lngamma and psi near 1 [ cache values of zeta(odd integers) ]
- fast algorithm for zeta([a + b*n | n<-[0..N]]). Compare:
? \p2000
? zeta(vector(1000,i,i+1));
time = 787 ms.
? vector(1000,i,zeta(1+i));
time = 3,334 ms.
Also fix tuning problems for zeta(small even integer), slow at huge
accuracy.
- besseli, besselj, besselk, besseln(nu, z), eint1(z): now use asymptotic
expansion for large z
- fix cancellation in acosh / asinh for huge t_COMPLEX and in cos(z) and
sin(z) when Im(z) is nonzero but tiny
- fix bugs in zetahurwitz (imprecise n-th derivative for large n)
[Numerical summation and integration]
- limitnum/asympnum: allow closures of the form N->[u(1),...,u(N)],
which allows to handle efficiently sums, recursions, continued
fractions, etc.
- new GP function derivn for (formal or numerical) n-th derivative
- faster derivnum; f'...' (n quotes) now always uses derivnum which is
about 2^n/n faster, and more accurate.
- fix numerical derivative of functions with optional argument: e.g.,
f(x, y = 1) = x*y;
f'(1) used to return 0 [ instead of 1 ].
- improve intnumgaussinit (use direct Newton instead of calling polrootsreal)
[Elementary Number Theory]
- rewrite the Bernoulli number cache using zeta(2n) = (*) B_{2n}
and power recycling for zeta(2n) + additive Clausen-von Staudt:
simpler and orders of magnitude faster than the old iteration. We now
always store Bernoulli numbers in rational form. The GP function
bernvec() is no longer obsolete (now faster than computing Bernoulli
numbers individually).
- qfbsolve(Q,n) now supports arbitrary integer n (was limited to primes)
and return all solutions modulo units.
- improve the poldiscfactors() and prime() functions
[Polynomials]
- new GP function pollaguerre for Laguerre polynomials. Add an
optional flag to pollegendre and polhermite to return P_{n-1}(a) and P_n(a)
- polinterpolate over Z/pZ is now asymptotically fast
[Linear Algebra]
- generic fast linear algebra using CUP decomposition
- improve linear systems over Q [treat contents sensibly]
- fix inefficiency in LLL (not present in original fplll code)
[Elliptic curves]
- make ellheight(E) return the Faltings height of E (over Q or a number field)
make ellheight(E, torsion point) return an exact 0
- support for non-integral models in ellratpoints and hyperellratpoints
[L-functions and Modular Forms]
- lfun now allows non-integral weights; in particular, lfunqf is no longer
restricted to even dimensions.
- mffromlfun now supports forms of half-integral weight, e.g. from lfunqf.
- lfunmfspec is now implmented in all integral weights
- new GP function mfgaloisprojrep (projective Artin representation attached
to a modular form of weight 1 by Deligne-Serre)
[Number Fields, Local Fields, Finite Fields]
- new GP function bnrclassfield, generalizing rnfkummer (which only
supported relative extensions of prime degree)
- new GP function idealdown(nf,A) to return A \cap Q
- new GP function idealismaximal
- allow polynomials with non-integral coefficients in rnfdisc and
rnfconductor
- nfbasis now accepts an optional argument &dK to recover the field
discriminant
- rnfinit(nf, [T,B]) for orders that are maximal at a certain set of primes
only; allow B a list of primes and maximal ideals (same for rnfbasis,
rnfdisc, rnfconductor, rnfpseudobasis)
- new GP function nfdiscfactors to return the field discriminant in
factored form
- new GP function polteichmuller to define nice models of p-adic extensions
(see ??polteichmuller)
- new GP function ffmaprel(m, t) to express the finite field element t as
an algebraic element over the codomain of the map m; this allows for
instance to compute the relative minimal polynomial, trace and norm of t
[Windows-specific]
- no longer crash on deep recursion [ (dive(n) = dive(n+1)); dive(0) ]
- support for install() [ was only working in the dynamic binary ]
COMPATIBILITY ISSUES BETWEEN 2.11.* and 2.12.*
============================================
0) Obsoleted functions and interfaces:
- removed member functions .futu and .tufu [deprecated since 2.2]
- matsnf: remove obsolete binary flag '2' [make it a no no-op as in mathnf]
- inline / uninline are now obsolete, use export/unexport
- renamed GP functions Strchr -> strchr, Strexpand -> strexpand,
Strprintf -> strprintf, Strtex -> strtex
- renamed GP function besseln -> bessely
- poldisc(t_COMPLEX) now raises an exception (used to return -4)
1) Output changes:
- bnf.fu now returns 0 when bnf does not contain fundamental units [used to
raise an exception]
- qfbsolve now returns a vector of all solutions modulo units [was a single
solution]
- mfparams now returns [N,k,CHI,space or P, Phi] where Phi is the
cyclotomic polynomials defining the field of values of CHI
- fix compatibility issue between coefficients of a modular form f and
values of corresponding Dirichlet character via znchar and chareval
[used different cyclotomic polynomial to define the same cyclotomic field
when order(chi) = 2 mod 4].
- 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).
- x ^ t_FRAC: return an exact result if possible; e.g. 4^(1/2) is now 2
- GP timer and ## now also display the realtime when nbthreads is not 1
2) Input changes:
- the argument of a GP user member function is now a reference and can be
modified.
- lfunconductor(L, [a,b]) is no longer supported to look for conductor in
interval [a,b]; implement lfunconductor(L, list of potential N) instead
- limitnum / asympnum: removed the useless optional parameter 'muli/k'
[now implicitly set to 1, not to 20]; to replicate the old behavior
extrapolate u(muli*n) .
- CAVEAT: nfbasis 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
-------------------------------------------------------------------------------
P.S. The Changelog
Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/
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]
`