Charles Greathouse on Wed, 03 Aug 2016 15:39:25 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Please test pari-2.8.0 prerelease 1 |
Dear PARI developers,
We have made available a prerelease of PARI 2.8.0 (alpha).
Please test the prerelease tarball:
<http://pari.math.u-bordeaux.fr/pub/pari/snapshots/pari-2.8.0-pre1.alpha.tar.gz>
The expected release date is set to the 12/08/2016.
Please also test the standalone 64bit Mac OS X binary:
<http://pari.math.u-bordeaux.fr/pub/pari/mac/snapshots/gp-2.8.0-pre1-osx>
ane the the 64bit windows installer:
<http://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/Pari64-2-8-0-pre1.exe>
I have also built the 32bit Windows installer:
<http://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/Pari32-2-8-0-pre1.exe>
and the following standalone Windows binaries:
32bit
<http://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gp32-2-8-0-pre1.exe>
<http://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gp32-readline-2-8-0-pre1.exe>
64bit
<http://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gp64-2-8-0-pre1.exe>
<http://pari.math.u-bordeaux.fr/pub/pari/windows/snapshots/gp64-readline-2-8-0-pre1.exe>
Below is the announcement that will be sent to pari-announce for the
final release.
Please report any error in the announcement
On behalf of the PARI group,
Bill and Karim
- - - - - - - - - - - - - - - - - - - -
Dear PARI lovers,
I would like to announce the release of long-awaited pari-2.8.0-ALPHA,
incorporating two years worth of development into an official release!
The sources and a Windows binary can be obtained through the address
http://pari.math.u-bordeaux.fr/download.html
This new branch contains three brand new packages (L-functions, Modular
Symbols and Central Simple Algebras) as well as a wealth of new functions for
elliptic curves, and many improvements throughout the system.
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.8.0-ALPHA: see below for COMPATIBILITY ISSUES.
================================
[Systems]
- Mingw64 support (Windows 64 bit)
- Unify 32/64 bit random generators. Probabilistic algorithms should now
behave identically on all architecture, provided they do not involve
the floating point kernel
[The GP language]
- Support for variadic GP functions (having any number of arguments), e.g.
? f(v[..]) = sum(i = 1, #v, v[i])
? f(1, 2, 3, 4, 5)
%2 = 15
- New constant "oo" (for +/- infinity)
- Simpler handling of polynomial variables: polynomial variables no longer
spring into existence whenever a new identifier occurs in the parser,
only if a polynomial is explicitly created; e.g. t = 0 no longer creates
the "polynomial variable" t thereby messing up variable ordering.
Functions varhigher() and varlower() allow to define
variables of arbitrary priority independently of the session history;
variables() returns the list of variables occuring in an object:
? variable(x + y*z / t)
%1 = x
? variables(x + y*z / t)
%2 = [x, y, z, t]
- Hashtables/dictionnaries in GP via functions Map, mapget, mapput,
mapisdefined, mapdelete
? M = Mat(); \\ empty
? mapput(M, "a", 23); \\ insert key/value: "a" maps to 23
? mapput(M, "b", 43); \\ "b" maps to 43
? mapget(M, "a") \\ retrieve value attached to key "a"
%3 = 23
? M = Map(["a", 23; "b", 43]); \\ fast initialization
- New functions allow setting precision at the bit-level (instead of the
word-level = 64 bits); new default 'realbitprecision' and \pb shortcut,
and a function bitprecision()
- Warn when coercing quotient rings when 'debug' non-zero
? \g1
? Mod(1,2)+Mod(1,3)
*** _+_: Warning: coercing quotient rings; moduli 2 and 3 -> 1.
- More versatile closures: function self() for recursive anonymous
functions, call() to apply a function of unspecified arity to arbitrary
arguments), fold() such that fold(f,v) = f(...(f(v[1], v[2]), ...,) v[#v])
- Miscellaneous new GP functions: serprec, powers, parforvec
[Multiprecision Kernel]
- incgam, incgamc, eint1 more reliable
- new functions sinc(x) = sin(x) / x and cotanh = 1/tanh
- improved p-adic log at high accuracy
- improved gamma, lngamma and psi at power series arguments
[Numerical sumation and integration]
- rewrote numerical integration routines, which can of course
directly use the new oo symbol:
? intnum(t = -oo, oo, 1/(1+t^2)) - Pi
%1 = 0.E-37
- Gauss-Legendre quadrature: intnumgauss()
- Rewrote numerical sumation (replace Abel-Plana by Euler-Mac Laurin).
This changed the sumnum() interface !
- Monien summation: sumnummonien()
- Numerical extrapolation: limitnum(), asympnum()
? limitnum(n -> (1+1/n)^n) - exp(1)
%1 = 0.E-37
? asympnum(n -> n! / (sqrt(2*Pi) * n^(n+1/2) * exp(-n)))
%2 = [1, 1/12, 1/288, -139/51840, -571/2488320, 163879/209018880,
5246819/75246796800, -534703531/902961561600]
- Continued fractions for numerical approximation via Pade approximants:
contfracinit() and contfraceval()
- Inverse Mellin transforms of Gamma products: gammamellininv()
- Multiple Zeta Values: zetamult()
? zetamult([2,1]) - zeta(3) \\ Euler's identity
%1 = 0.E-38
- zeta(odd integer): use Borwein's "sumalt" algorithm (10 times faster
than previous at \p1000)
[Elementary Number Theory]
- Bounded factorization factor(n,lim) now always respects the 'lim'
argument (was ignored when n fit into a long integer)
- sumdigits() now allows to specify the base; new function fromdigits()
- Allow ffgen([p,f]) in addition to ffgen(p^f) and ffgen(T*Mod(1,p))
- New functions for generic characters: charker, charorder, charconj,
charmul, chardiv, chareval
- New functions for Dirichlet characters: znconreychar, znconreyexp,
znconreylog, znconreyconductor, zncharinduce, zncharisodd. See ??Dirichlet
The functions idealstar / ideallog now allow omitting 'nf' argument for
nf = Q allowing to handle efficiently Dirichlet characters as Hecke
characters.
- Miscellaneous new functions: qfbredsl2(), ispseudoprimepower(),
ramanujantau()
[Polynomials]
- Real root finder: new function polrootsreal(T, [a,b])
- factorcantor now uses Shoup-Kaltofen algorithm (much faster)
- padicfields(p, d) much faster for huge prime p
[Linear Algebra]
- faster matrix multiplication over Z (Strassen) and finite fields (better
handling of modular kernel)
- matsolve(a,b) and a^(-1) could give wrong results [or SEGV] when t_MAT
'a' was non-square
- faster implementation of matfrobenius/minpoly
- matkerint: replace underlying LLL algorithm by mathnf
Simple bench: M=matrix(50,55,i,j,random(10^5)); \\ 200 times faster
[Elliptic curves]
- Twists and Isogenies: elltwist, ellisogeny, ellisogenyapply, ellxn.
- Modular polynomial: polmodular(); attached minimal polynomials defining
Hilbert class fields: polclass().
- Formal groups: ellformalw, ellformalpoint, ellformaldifferential,
ellformallog, ellformalexp
- Elliptic curves over finite fields: ellissupersingular(), fast ellcard()
over fields of small, medium or large characteristic (SEA, Kedlaya, Satoh),
ellsea() for ellcard with early abort (almost prime cardinality)
elltatepairing() now reliable for self-pairings
- Elliptic curves over Q: ellrootno(e, 2 or 3) for non-minimal e is now
properly supported, more robust and much faster ellL1() and
ellanalyticrank() (The condition ord(L_E,s=1) <= r in ellL1(E,r) is no
longer necessary; r is now optional, 0 by default); p-adic heights:
ellpadics2, ellpadicheight, ellpadicheightmatrix; p-adic L function:
ellpadicL (see also mspadicL);
Q-isogenous curves and matrix of isogeny degrees: ellisomat; minimal
quadratic twist: ellminimaltwist; smallest multiple having good reduction
everywhere: ellnonsingularmultiple; new optional flag to forell to loop
over isogeny classes.
- Elliptic curves over number fields: ellinit([a1,...,a5], nf);
support elltors, ellorder, elisdivisible, elllocalred, ellminimalmodel,
ellan, ellap(E,P), ellcard(E,P) for P a maximal ideal
- Elliptic curves over p-adic fields: Q_2 is now properly supported,
ellpointtoz(E / Qp) has been fixed, added Mazur-Tate-Teitelbaum's L
invariant to E.tate; new function ellpadiclog.
[Other Curves of small genus]
- Rational points on conics/Q : qfsolve, qfparam [ adapted from Denis Simon's
qfsolve.gp ]
- General cubic to Weierstrass model: ellfromeqn()
- genus2red: allow rational non integral models + change input so that either
genus2red(P) y^2 = P and genus2red([P,Q]) for y^2 + x*Q = P are
recognized; the output is now normalized + many bug fixes.
- new functions ellpadicfrobenius, hyperellpadicfrobenius, hyperellcharpoly
[Modular symbols & p-adic L functions] New package; see ??8
- Modular symbols for Gamma_0(N):
msatkinlehner msfromell mshecke mspathlog
mscuspidal msfromhecke msinit msqexpansion
mseisenstein msgetlevel msissymbol mssplit
mseval msgetsign msnew msstar
msfromcusp msgetweight mspathgens
- Attached overconvergent symbols, p-adic distributions and L-functions:
mstooms, msomseval, mspadicL, mspadicinit, mspadicmoments, mspadicseries
[Complex L-functions] New package; see ??6 and ??Ldata
lfun lfundiv lfunmfspec
lfunabelianrelinit lfunetaquo lfunmul lfuntheta
lfunan lfunhardy lfunorderzero lfunthetainit
lfuncheckfeq lfuninit lfunqf lfunzeros
lfunconductor lfunlambda lfunrootres lfunartin
lfuncreate
[Associative and central simple algebra] New package, see the tutorial !
algabsdim algdisc algisramified algrandom
algadd algdivl algissemisimple algrelmultable
algalgtobasis algdivr algissimple algsimpledec
algaut alghasse algissplit algsplittingdata
algb alghassef algleftmultable algsplittingfield
algbasis alghassei algmul algsplittingmatrix
algbasistoalg algindex algmultable algsqr
algcenter alginit algneg algsub
algcentralproj alginv algnorm algsubalg
algchar alginvbasis algpoleval algtableinit
algcharpoly algisassociative algpow algtensor
algdecomposition algiscommutative algprimesubalg algtrace
algdegree algisdivision algquotient algtype
algdim algisdivl algradical
algisinv algramifiedplaces
[Number Fields]
- New "compositum" functions. nfcompositum(): over number fields;
new binary flag to polcompositum() to assume fields are linearly disjoint;
nfsplitting: equation for splitting field / Q
- Class groups and units: use GRH-guaranteed bounds in bnfinit for residue
estimate; made qfbclassno more reliable: correct for |D| < 2.10^10 and no
known counter example; of course you can double check with quadclassunit()
(rigorous under GRH but much slower up to |D| ~ 10^18 or so)
- Class field theory: bnrisgalois, bnrgaloismatrix, bnrgaloisapply;
faster and more reliable rnfkummer; bnrconductor(bnr, chi) as a shortcut
for bnrconductor(bnr, Ker chi), same for bnrisconductor, bnrdisc and
bnrclassno; bnrchar to define classes of Hecke characters, e.g. trivial on
some congruence subgroup.
- Relative number fields: rnf structures may now contain a full absolute nf
struct, attached to rnf.polabs; nfinit(rnf) returns it. This allows rnf
functions to return objects in standard notation (e.g. ideals in HNF
instead of as a vector of t_POLMOD generators); add optional flag to
that effect in rnfeltabstorel, rnfeltdown, rnfeltup, rnfidealreltoabs,
rnfinit. New functions rnfidealprimedec, rnfidealfactor. Add optional
flag to nfhnf and nfsnf to return transformation matrices.
- idealprimedec now allows an optional 3rd argument, to limit f(P/p)
- Extend idealchinese() to impose sign conditions at specified real places
- Improvements in thue(), whose solutions are now canonically ordered
(lexsort); support (powers of) imaginary quadratic equations.
COMPATIBILITY ISSUES BETWEEN 2.7.* and 2.8.*
============================================
- [libpari] comment out function names obsoleted during the 2.3.* cycle
(deprecated before 2007). See PARI_OLD_NAMES.
- t_STR used to compare as larger than any real number via < or >
operators. Such a comparison now raises an exception.
- valuation(0,p), nfeltval(nf,0,pr), idealval(nf,0) precision(0),
padicprec(0,p) now all return +oo
infinite slopes of newtonpoly replaced by +oo (instead of 2^63-1)
poldegree(0) now returns -oo
- default 'compatible' and 'strictmatch' have been obsoleted. They are now
no-ops.
- GP: polynomial variable 'y' is now always defined on startup,
with priority lower than 'x'; variables of arbitrary priority can now be
created: 'x' is no longer guaranteed to have maximal priority,
nor MAXVARN to have minimal priority.
- the meaning of precision(x, n) no longer depends on the type of x: it now
always refers to floating point precision. Before the change:
precision([O(2),O(3),O(x)], 10) -> [O(2^10),O(3^10),O(x^10)]
- no longer print 0 t_POLMOD as "0", e.g. output explicitly Mod(0,x) not '0'.
- content([]) -> 0 [ was 1 ]
- polsturm(T, a, b) is still supported but deprecated, use
polsturm(T, [a,b])
- nfdisc, nfbasis: no longer support the old (T,flag,fact) arguments.
Use the generic [T,listP] syntax
- ellbil(E,P,Q) is now deprecated, use ellheight(E,P,Q)
- rnfconductor now returns [cond, bnr, H] instead of [cond, bnr.clgp, H]
- The sumnum interface has changed, see ??sumnum
- The broken implementation of Dedekind zeta function zetakinit / zetak
has been removed, use the new Lfun package ! E.g.
\\ ~ zetakinit(x^3-2) on the critical line up to height 100
? L = lfuninit(x^3 - 2, [100]);
\\ ~ zetak
? lfun(L, 1/2 + 10*I) \\ value at this point
- polredabs(T) now internally uses the polredabs([T,listP]) strategy,
making it much faster in favourable cases, while still always returning
a canonical defining polynomial; polredabs([T,listP]) no longer returns 0
if the attached order cannot be proven to be maximal: it computes the
expected canonical polynomial in all cases, which can be slow. Always use
polredbest() if you do not require a canonical output.
-------------------------------------------------------------------------------
P.S. The Changelog
Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/
Done for version 2.8.0 (released 01/08/2016):
Fixed
1- make install fails on OS/X: ln -s libpari.dylib libpari.dylib fails
2- Q_pvalrem(t_FRAC) => wrong result
3- [] == 0 but []~ != 0 (now []~ == 0 as well) [#1560]
BA 4- test-kernel did not work when using --mt=pthread
BA 5- ellheegner was using too much memory in some case
6- ellap can overflow on 32-bit machine [#1558]
ellap(ellinit([582304190,64196421]),2147438927) -> overflow
ellap(ellinit([-1137195,489565862]),2038074751) -> wrong result
7- nfhilbert(K,x,y, P above 2) could give wrong results [#1561]
8- rnfkummer sometimes failed to return an answer: error or oo loop.
Relied on exhaustive enumeration of an Fp-vector space, some of
whose elements would trigger an error. Replace by Fp-linear algebra
that directly picks the correct line (O(d^3) algo instead of O(p^d),
and no failures). Only compute the defining poly for the right element.
XR 9- padicfields(huge p, d) was very slow [even though ramification is tame]
10- gcd(1/2, 1+I*1.) -> SEGV [#1563], 2.5.5 returned the wrong answer 1/2
11- mathnf(t_VEC) could corrupt input (change sign)
12- [libpari] RgM_transmul did not work
13- [libpari] Fq_issquare didn't support T=NULL
14- [libpari] nfpow_u didn't handle non-integral rational numbers
15- eint1(0) -> stack overflow [#1568]
16- liftint(List([0])) -> gerepile bug
17- factorint(n,flag): flag was ignored when n fit into a long
18- factor(n,lim): lim was ignored when n fit into a long
19- nfrootsQ(t_POL with leading coeff -1) could miss some solutions, e.g.
nfroots(,-y^2-24476*y+119814917) -> [] instead of [-28657,4181]
20- precprime(1) -> invalid t_INT [#1576]
21- gaffsg(0, t_PADIC): wrong valuation
22- thue(f^e*g, ...), e even, (f,g)=1 missed solutions such that f<0
23- faster znlog when p-1 has only smallish prime factors.
24- (t_INTMOD with word-sized modulus)^(huge negative power) wrong [#1584]
25- (gp -p N) or (primelimit=N in gprc_ for N >= 436273290 resulted in an
incorrect primetable. N.B. Such commands are now useless: needed primes
are produced dynamically anyway.
26- monomial(exact zero, d, v) returned an invalid t_POL / t_RFRAC
27- contfracpnqn(v, n) returned partial quotients p[-1]/q[-1] ...
p[n-1]/q[n-1], instead of the documented p[0]/q[0] ... p[n]/q[n] [#1580]
28- isprime(N, 0) was often slower than either of isprime(N, 1 or 2)
29- factor((3+4*I)/25) -> factor 2+I had 0 exponent [#1586]
30- made qfbclassno more reliable (fixes all counter examples in [#1411])
BA 31- iferr() could crash if some component of the t_ERROR were clones.
32- nffactor() could overflow the stack when default accuracy too low: e.g.
nffactor(y^2-22, x^2+926246528884912528275985458927067632*y-4344481316563541186659879867597013188)
33- some elliptic curve functions accepted (elladd, ellmul) a Weierstrass
5-uple [a1,a2,a3,a4,a6] instead of an ell structure. No longer.
Now only ellinit and ellchangecurve allow this syntax.
34- incorrect rounding in mulrr/divrr for one-word precision reals.
BA 35- multiif did not handle correctly return() in conditions [#1590]
36- [0..5] -> [0,0,0,0,0] on some architectures
37- is_gener_Fp could return wrong results
38- Fq_sqrtn(t_INT,..,&zeta) could return a wrong root of 1
39- bnfinit: SEGV due to precision issues [#1592]
40- zm_zc_mul only worked for square zm matrices
41- genus2red(0,27*x^5+97*x^4+118*x^3+60*x^2+13*x+1,3) -> bug msg [#1596]
42- [gphelp] oo loop when $COLUMNS too small [#1594]
43- genus2red(x,-x^6-3*x^4-10*x^2-1,3) -> impossible inverse [#1597]
44- factoru(1) returned a t_MAT instead of the expected "matsmall" [#1598]
45- FpM_charpoly wrong in small characteristic [#1602]
46- Ser(Mod(0,2)) => incorrect object [#1587]
47- Ser(Mod(1,2)*x^2,,4) => incorrect precision [#1587]
48- Ser(x,v,prec < 0) => crash [#1587]
49- The t_SER Mod(0,2) + O(x^n) was not handled properly [precision and
valuation would change unexpectedly] [#1587]
50- when compatible = 3; series() used a random precision
51- genus2red(0,6*x^6+5*x^4+x^2+1,7) -> impossible inverse [#1597]
52- isprime(2030967737887612953751815611955778057721609672149695775998900201419048774375002716065557720510887824952942799737911826638068045234238082640629966597954851668852106621828704531597859470496362810381251800973022824003330423370127762722630493369197869948901862977534730314352222720177713223750671181797)
-> SEGV [#1604]
53- genus2red(x^3+1,1) -> type error [#1597]
54- gphelp did not handle === correctly [#1603]
XR 55- bnrL1(bnrinit(bnfinit(x^2-168),[6,[1,1]],1)) -> bug in ArtinNumber[#1601]
56- FpXY_evaly() wrong when evaluating at 0
BA 57- [win32] gp could crash at start up [#1607]
58- nfisincl(t_POL, t_POL) could lead to wrong negative results
59- polresultant(1+x*z^2,1+y*z^4,z) -> GC error [#1614]
BA 60- ellcard over non-prime fields of large char could return wrong results
61- [libpari] FpX_roots could produce GC errors [#1618]
62- weber(1+I) was missing its imaginary part
63- (1+I)*(1+1/2*I) => wrong result (type errors) [#1619]
64- contfracpnqn([a]) => [1,a;0,1] instead of [a,1;1,0]
65- primes([2^50, 2^50+200000]) => stack overflow
66- issquare((x+1/2)^2,&z); z => 1.0*x+0.5 instead of x+1/2
67- possibly wrong result in nfsnf
68- possibly missing roots in nfroots (when using Trager)
69- quadray(bnf, ideal) did not work
70- thue(-14*x^3 + 10*x^2 + 63*x - 5,1) -> "short continued fraction" [#1629]
71- thue(29*x^3+130*x^2-35*x-48,1) -> "round error" bug
72- T=thueinit(10*x^3+6*x^2-41*x+8,1); thue(T,8) => SEGV [#1630]
73- ellrootno(e,p = 2 or 3) when e not minimal at p => random result
74- catastrophic cancellation in ellheight (at oo) [#1637]
75- bnfnewprec could return a corrupt bnf structure:
K=bnfinit(x^3-15667*x^2-88630960*x-1836105977032,1);
bnfisprincipal(K,[29,14,15;0,1,0;0,0,1],3) -> oo loop
76- agm(1,2+O(5)) -> SEGV [#1645]
BA 77- [cygwin64] ellap(ellinit([0,0,1,-1,0]),10007) broken
78- primes([-5,5]) -> [5] (spurious absolute values)
79- matqr([;]) -> crash
80- Fp_rem_mBarrett could return a non-normalized result
p=436^56-35;Mod(271,p)^((p-1)/2) -> p+1
81- plotcopy would corrupt "string" objects (ROt_ST)
BA 82- [GP] default arguments to GP functions could cause corruption [#1658]
VBr83- [darwin] remove obsolete linker options that cause crashes [#1623]
84- divisors([2,1]) -> SEGV [#1664]
85- acos([Pol(1)]) -> GC bug [#1663]
86- matsolve(a,b) and a^(-1) gave wrong results [or SEGV] when t_MAT a
was not square and a,b "modular" (F2m,Flm,FpM,FqM,F2xqM,FlxqM) [#1666]
87- primes([1,Pol(2)]) -> SEGV [#1668]
88- znlog(0,Mod(1,4),1) -> 0 (instead of [])
89- polzagier / sumalt(,1) / sumpos(,1) were slow and used too much memory
90- sumpos was wasting time when pre-computing \sum 2^e a(k*2^e) [ only
needed for k odd, but was also done for k = 0 mod 4 ] + improve accuracy
91- intnum(x=[0,-1/2],[oo,-3/2],1/(sqrt(x)+x^(3/2))) -> junk t_COMPLEX
(more generally: one endpoint has an algebraic singularity and the
other is +-oo, non-oscillatory
92- intnum(x = [-oo,-3/2], [oo,-5/2], f(x)) --> loss of accuracy due to
confusion between endpoint behaviours a/b in intnuminit data
E.g. f(x)=(x<0,1/(1+(-x)^(3/2)), 1/(1+x^(5/2)));
93- intnum(x = [-oo,-3/2], [oo,-5/2], f(x)) --> loss of accuracy due to
confusion between endpoint behaviours a/b in intnuminit data
E.g. f(x)=(x<0,1/(1+(-x)^(3/2)), 1/(1+x^(5/2)));
94- intnum(x=[0,-1/2],[1,-1/3], x^(-1/2) + (1-x)^(-1/3)) -> error [didn't
suport singularities at both endpoints]
95- buffer overflow after default(format,"f.precision") (whenever many
initial zeroes)
96- qfminim(A, 0, ...) -> stack overflow [#1682]
97- e=ellinit("11a1"); ellztopoint(e,3*e.omega[1]/5) -> [5, junk]
(instead of expected [5,5]) [#1683]
98- bnfinit(quadhilbert(-2180)) -> precision error [#1688]
99- div_scal_rfrac could create an invalid t_POL [#1651]
100- polroots(t_POL with leading coeff = 0) -> fp exception or error [#1690]
101- \r cannot deal with very long filenames [#1616]
102- rnfisabelian(nf, non monic t_POL) -> SEGV [#1693]
103- Vecrev(x,n) / Colrev(x,n) when 'n' is not omitted: it wasn't true
that Colrev/Polrev were inverse functions [#1698]
104- possibly incorrect result in nfdisc(T,listP) even though listP included
all prime divisors of the field discriminant. Example:
p=10^100+267; q=10^120+79;
T=polcompositum(x^2-p,x^2-q,2);
nfdisc([T,[2,p,q]])
105- wrong dim(Ker) returned by ZM_pivot => SEGV in Z-linear algebra routines.
E.g. setrand(1);quadclassunit(-612556842419) [#1700]
106- moebius(factor(18)) -> 1 instead of 0 [#1702]
107- ispower(-167^10) => domain error [#1703]
108- ispowerful(factor(0)) != ispowerful(0)
109- expm1(2*I) => wrong result
110- gamma(1+a*x+O(x^2)) => error [#1707]
111- printsep() printed its argument in random format, instead of f_RAW as
print() [#1708]
112- nfdisc(x^10 - 29080*x^5 - 25772600) -> oo loop [#1710]
113- forprime engine could skip (fast) sieve in favour of (slow)
nextprime [#1711]
114- 0^[1] -> domain error [#1713]
115- memory leaks (clones) in ellchangecurve [#1716]
116- zeta inaccurate around 0 [ from 2.7 ], [#1714]
117- ellj(simple t_SER in 'x) much slower than in other variable [#1720]
118- bnrrootnumber did not support the trivial character in the form [0,..,0]
119- default(log,1) when logfile is write-protected later lead to SEGV [#1730]
BA120- 2-adic gamma function: fix accuracy loss
121- A==A -> 0 for A a t_SER of huge accuracy (so that A-A overflows
valuation) [#1734]
XR122- P=[1,-2,12,-12,-181,-4,-6899,9780,6360,702,-45]; setrand(3); nfdisc(P)
-> wrong answer [ crash if setrand(138) ] [#1735]
123- select(x->x,Vecsmall([1,2,3]),1) -> crash [#1737]
124- (1./x+O(1))-(1./x+O(1)) -> 0.E-38*x^-2+O(x^-1) [#1741]
BA125- [libpari] RgV_to_RgX_reverse did not work if v[1] or v[2] was 0
126- bnfinit(x^3-87156*x^2-6728799*x-456533) [#1736]
127- Rg_to_ff: incorrect type in zk_to_ff [#1755]
BA128- nfsubfields could fail [#1758]
129- rare SEGV in ArtinNumber [#1759]
130- K.codiff incorrect if [K:Q] > 2
131- chinese([]) -> '1' instead of Mod(0,1)
132- m1=Mod(0,1);m2=Mod(1,x^2+1); chinese(m1,m2) -> m1; chinese(m2,m1) -> m2
[instead of error]
133- nfrootsof1(polcyclo(85)) -> 85 instead of 170 [#1766]
134- at \p19, polroots((x+1)^2 * (x-1)^7 * (x^2-x+1)^5 * 1.0) -> SEGV [#1767]
BA135- ellsea returned the trace instead of the cardinal as documented.
BA136- ellsea(,,1) could return a wrong result [#1768]
137- rnfconductor: sanity checks were not taken into account
MC138- memory leak in pari_close: sopath not freed
HC139- incgam(30,60) < 0. More generally, wrong results for s >> 1 [#1689]
HC140- excessive loss of accuracy in incgam, incgamc, eint1
141- isprimepower(30011^(3*17)) returned 0
142- a = Mod(1,x); z = Mod(0,Pol(1)); chinese(a, z) works
but chinese(a, simplify(z)) failed
BA143- [mpi] interrupt/alarm could caused a crash
BA144- [mpi] relinking empty t_LIST caused a crash
145- ispower(t_POL) didn't work in small characteristic [#1779]; make it work
over finite fields
BA146- my(s=1,a=0);forstep(i=1,20,s,s++;a+=i);a -> wrong result
KR147- gphelp -detex: accented letters counted as 1 char for line splitting
but rendered as 2
148- sqrt(0) -> loss of accuracy (sqrtn was correct)
149- nfgaloisconj(t_POL T) was unnecessary slow when large divisors
of disc(T) were internally detected (and subsequently ignored)
BA150- elltatepairing could return wrong results [#1784]
151- padicappr(x^3+1,-2+O(2^5)) -> SEGV [mod a root mod p] [#1793]
152- K = bnrinit(bnfinit(y^2-5),[1,[1,1]]); bnrdisc(K) -> wrong [#1804]
153- ellztopoint(ellinit([-1,0]), I) -> wrong result [#1800]
Potentially affected all elliptic functions (ellwp,ellzeta,ellsigma)
at real or pure imaginary arguments.
154- gamma(2+x) did not start with an exact 1, unlike gamma(1+x).
lngamma(2+x) didn't have valuation 1
155- gamma(t_INT+x) at large accuracy and seriesprecision was very slow,
even for small t_INTs (same for lngamma and psi). E.g. at \p1000
gamma(1000+x+O(x^100))
156- a=Mod(y,y^2+1); Mod(a, x^2-2) == a returned 0 [#1806]
157- x \/ y did not conform to documentation when either x or y was a
t_REAL. E.g. 28/10 \/ 1 == 3 but 2.8 \/ 1 == 2. Now both return 3 [#1811]
BA158- digits(N,B) with 31/63 bit B could return wrong result
BA159- [pthread] parallel GP could leak memory
160- ellinit(E, O(p^n)) was slightly incorrect for E / Q [ started by
approximating exact equation mod p^something instead of keeping
everything exact ]
161- ellinit(E, O(2^n)) was hardly supported, e.g.
ellinit("14a1",O(2^5)).tate => precision too low in p-adic AGM.
BA162- polrootsmod(x^3-1, not a prime) -> SEGV (BIB)
BA163- [windows] MPQS could fail due to temporary files
164- matsnf([27, 0; 0, 3; 1, 1; 0, 0],1+4) -> SEGV
165- gcd(Mod(1,2)*x+Mod(1,2), Mod(0,2)) -> Mod(1,2)
166- qfperfection() only allowed matrices of small norm [#1719]
167- wrong formula for poldisc when characteristic divides degree [#1831]
168- wrong result for poldisc(ZX) in huge degree [#1830]
169- missing typechecks in ellheight() [SEGV on BIB]
170- ellminimalmodel() didn't use a coprime bases so that it
was very slow for [c4,c6] = [p^5*q, p^6*q] for huge p and q
BP171- ellpointtoz(E / Qp) was totally wrong [#1833]
172- genus2red(177*x^6+126*x^5-63*x^4+72*x+84) -> bug in labelm3 [#1826]
173- normalize genus2red stable reduction output: a type K1-K2-r now
guarantees K1 <= K2 (before both K1-K2-r and K2-K1-r could occur)
174- gmulsg(0, 1+O(x)) -> O(x^0) instead of t_INT 0 as in gmul(gen_0, ...)
Added
1- add optional argument to sumdigits to specify the base
2- [libpari] bits_to_int,bits_to_u,binary_zv,binary_2k,binary_2k_nv
BA 3- [GP] support for variadic GP functions (f(v[..])=expr)
4- nfeltval(K, x, pr, &y) now takes an optional 4th argument, containing
the part of x coprime to pr.
BA 5- [libpari] New functions family RgXn: new functions RgXnV_red_shallow,
RgXn_powers, RgX_RgXnV_eval, RgX_RgXn_eval, RgXn_reverse, RgXn_inv,
RgXn_exp
BA 6- [libpari] New functions Flv_inv
BA 7- [libpari] New functions Flx_Flv_eval, Flv_Flm_polint,
FpX_FpV_eval, FpV_FpM_polint
WH 8- [libpari] New low-level functions get_Fl_inv, remll_pre
BA 9- [libpari] New low-level functions Fl_sqr_pre, Fl_mul_pre, remlll_pre,
Fl_powu_pre, Fl_sqrt_pre, divll_pre, random_Fle_pre
10- [TeX documentation] new primitive \url (verbatim arg)
11- [libpari] New functions Fq_log, gener_Fq_local
BA 12- GP functions bnrisgalois, bnrgaloismatrix, bnrgaloisapply
LGr13- GP function polrootsreal
14- GP constant "oo" (for +/- infinity)
15- [libpari] New functions mkoo, mkmoo, inf_get_sign
16- [libpari] New functions ellbasechar, ec_f_evalx, ec_dfdx_evalQ,
ec_dfdy_evalQ, ec_2divpol_evalx, ec_half_deriv_2divpol_evalx, ec_h_evalx,
ec_dmFdy_evalQ, ec_bmodel
HIL17- GP functions ellisogeny, ellisogenyapply
18- [libpari] New function RgX_coeff
BA 19- [libpari] New functions Fl_halve, Fp_halve, Flx_halve, Fq_halve
BA 20- [libpari] New functions vecsmallpermute, vec_append
21- GP functions qfsolve, qfparam [ adapted from Denis Simon's qfsolve.gp ]
22- [libpari] New function ZM_transmul
23- allow elliptic curves over number fields: ellinit([a1,...,a5], nf)
24- [libpari] ZX_sturm, ZX_sturmpart, RgX_sturmpart
25- [libpari] RgXQV_RgXQ_mul
26- thue / thueinit now also support (powers of) imaginary quadratic equations
BA 27- [libpari] ZpX_ZpXQ_liftroot, ZpX_ZpXQ_liftroot_ea
28- [libpari] fuse_Z_factor
29- ellformalw, ellformalpoint, ellformaldifferential,
ellformallog, ellformalexp, ellnonsingularmultiple, ellpadicheight,
ellpadicheightmatrix, ellpadics2, ellpadiclog
BA 30- [libpari] functions FpX_powu, FpX_digits, FpX_fromdigits,
FpXQX_powu, FpXQX_digits, FpXQX_fromdigits, FqX_powu
BA 31- GP functions ellpadicfrobenius, hyperellpadicfrobenius, hyperellcharpoly
32- [libpari] function RgX_normalize
BA 33- much faster matfrobenius/minpoly(t_MAT)
BA 34- prototype codes U and u for ulong
35- allow testing for BITS_IN_LONG in gprc
36- GP functions msinit, ellpadicL
BA 37- [mingw] support for the alarm GP function
BA 38- [libpari] functions Fl_sqrtl, Fl_sqrtl_pre
39- [libpari] function ZV_allpnqn
40- [libpari] function Qevproj_init, Qevproj_apply, Qevproj_apply_vecei
41- [libpari] functions G_ZGC_mul, G_ZG_mul, ZGC_G_mul, ZGC_Z_mul, ZG_G_mul,
ZG_Z_mul, ZG_add, ZG_mul, ZG_neg, ZG_normalize, ZG_sub,
ZGC_G_mul_inplace, ZGCs_add
42- [libpari] function kroui
BA 43- GP function powers and libpari function gpowers
44- flag LLL_COMPATIBLE for LLL routines [ use 64-bit compatible accuracies
only ]
BA 45- [libpari] functions FpX_Frobenius, FpX_matFrobenius, Flx_Frobenius,
Flx_matFrobenius, ZpX_Frobenius, F2x_Frobenius, F2x_matFrobenius
46- [libpari] function ser_isexactzero
BA 47- [libpari] functions ZV_chinese, Z_ZV_mod, Z_nv_mod, nmV_chinese_center
BA 48- GP function fromdigits
BA 49- [libpari] functions Zp_sqrt, ZpXQ_sqrt
50- GP functions mscuspidal, mseisenstein, msnew, mssplit, msqexpansion,
mshecke, ellmsinit, msatkinlehner, msstar, mseval, mspathgens, mspathlog,
msissymbol, msfromcusp, msfromell
BA 51- GP declaration localprec(), localbitprec()
HIL52- [libpari] functions Fl_powers_pre, Fl_ellj_pre, Fl_elldisc_pre,
Fl_elltwist_disc
BA 53- [libpari] functions Fl_powers, Fp_powers, Fl_ellj, Fl_elldisc,
Fl_ellj_to_a4a6, Flxq_ellj_to_a4a6
BA 54- [libpari] functions FpXQX_div_by_X_x, FqX_div_by_X_x
HIL55- [libpari] function Flx_oneroot_split, zxX_to_FlxX, RgXY_degreex
BA 56- [libpari] functions Flv_inv_pre, Flv_inv_inplace, Flv_inv_pre_inplace
HIL57- GP function ellissupersingular
HIL58- [libpari] functions Fp_elljissupersingular, FpXQ_elljissupersingular
BA 59- [libpari] functions umodsu, zx_to_Flx, corediscs
60- GP function qfbredsl2
61- [libpari] functions ell_is_integral, ellintegralmodel, ellQ_get_CM,
ellorder_Q, ellap_CM_fast, point_to_a4a6, point_to_a4a6, Fl_elltrace_CM,
Fle_changepoint, Fle_changepointinv, Fle_log
62- allow elltors and ellorder for E/K number field
63- GP function ellxn, ellisdivisible
HIL64- [libpari] function family Flj_*
65- [libpari] idealprimedec_limit_f, idealprimedec_limit_norm
66- [libpari] modpr_get_p, modpr_get_T, modpr_get_pr
67- GP function nfsplitting
HIL68- [libpari] functions Flv_dotproduct_pre, Flx_eval_pre,
Flx_eval_powers_pre, FlxY_eval_powers_pre, FlxY_evalx_powers_pre
HIL69- GP functions polclass, polmodular
BA 70- ellcard over fields of medium characteristic (SEA, Kedlaya, Satoh)
71- GP functions varhigher() / varlower() / variables()
BA 72- GP function self() (for defining recursive anonymous functions)
BA 73- GP function fold()
74- [libpari] hash_create_ulong, hash_create_str, hash_select,
hash_remove_select, hash_keys, hash_values
75- allow serlaplace(t_POL)
76- GP function ispseudoprimepower
77- [libpari] functions FpM_add, Flm_add, FpM_Fp_mul, RgMrow_zc_mul
78- [libpari] function nfembed, nfissquarefree
79- new binary flag to polcompositum: assume fields are linearly disjoint
80- GP function nfcompositum
AP 81- [GP] associative and central simple algebra package, functions
algabsdim algdisc algisramified algrandom
algadd algdivl algissemisimple algrelmultable
algalgtobasis algdivr algissimple algsimpledec
algaut alghasse algissplit algsplittingdata
algb alghassef algleftmultable algsplittingfield
algbasis alghassei algmul algsplittingmatrix
algbasistoalg algindex algmultable algsqr
algcenter alginit algneg algsub
algcentralproj alginv algnorm algsubalg
algchar alginvbasis algpoleval algtableinit
algcharpoly algisassociative algpow algtensor
algdecomposition algiscommutative algprimesubalg algtrace
algdegree algisdivision algquotient algtype
algdim algisdivl algradical
algisinv algramifiedplaces
82- [libpari] functions rnf_get_alpha, rnf_get_idealdisc, rnf_get_k
83- [libpari] functions ZC_is_ei, RgC_is_ei, ZM_Z_div, ZMV_to_FlmV, checkal
84- [libpari] functions cbrtr, cbrtr_abs
85- nfinit(rnf) now returns an nf structure associated to rnf.polabs
86- idealprimedec now allows an optional 3rd argument, to limit f(P/p)
87- [libpari] cb_pari_err_handle callback
88- [libpari] function nf_get_ramified_primes
89- Configure --with-runtime-perl option
PB 90- Faster matrix multiplication over finite fields
91- allow content(t_VECSMALL)
92- [libpari] ZX_div_by_X_1
HC 93- intnumgauss / intnumgaussinit: Gauss-Legendre quadrature
LGr94- GP function sinc
HC 95- contfracinit / contfraceval functions
HC 96- limitnum / asympnum
BA 97- [libpari] functions FlxV_prod, RgV_prod
BA 98- GP function ellfromeqn
HC 99- gammamellininv, gammamellininvasymp, gammamellininvinit
BA 100- [libpari] RgX_Rg_eval_bk, RgX_RgV_eval, RgXV_RgV_eval
101- [libpari] RgX_cxeval
HC 102- GP function zetamult
PB 103- ZM_mul: Add Strassen-Winograd algorithm
104- GP functions sumnummonien/sumnummonieninit
105- [libpari] RgM_gram_schmidt, RgM_Babai
BA 106- GP function cotanh
107- support sign(t_QUAD with positive discriminant)
108- comparison operators (<,>,<=,>=): support t_QUAD with *same* positive
discriminant
BA 109- [libpari] Flv_prod, Flv_prod_pre
BA 110- [libpari] Flv_neg, Flv_neg_inplace
ED 111- mingw64 support
BA 112- [parallel] new GP function parforvec
BA 113- [libpari] Fl_addmul_pre, Fl_addmulmul_pre
BA 114- [libpari] Fl_eltwist, Fp_elltwist, FpXQ_elltwist, Flxq_elltwist,
F2xq_elltwist
BA 115- GP functions elltwist, ellminimaltwist
116- [libpari] omegau, bigomegau
VB 117- GP support for 0xffff and 0b1111 (input t_INT in binary or hex notation)
BA 118- GP functions ellisomat
HC 119- GP function ramanujantau
PB 120- Speed up {Flx,FpX,FpXQX}_divrem_basecase for modulus of the form
x^n+O(x^m) with m small
HC 121- GP function solvestep
122- [GP] New lfun family of functions
lfun lfundiv lfunmfspec
lfunabelianrelinit lfunetaquo lfunmul lfuntheta
lfunan lfunhardy lfunorderzero lfunthetainit
lfuncheckfeq lfuninit lfunqf lfunzeros
lfunconductor lfunlambda lfunrootres lfunartin
lfuncreate
123- [libpari] nfchecksigns, idealchineseinit
JD 124- [libpari] gp_read_str_multiline
BA 125- [libpari] Flx_nbfact_Frobenius, FpX_nbfact_Frobenius
126- extend idealchinese() to impose sign conditions at specified real
places [#1501]
127- [libpari] qfb_equal1, qfi_order, qfi_log, qfi_Shanks
128- [libpari] RgV_kill0
BA 129- factorcantor: use Shoup-Kaltofen algorithm (much faster)
BA 130- [libpari] FpX_dotproduct, Flx_dotproduct
JK 131- FpXQ_minpoly/Flxq_minpoly: use Shoup algorithm (much faster), and do
not assume modulus is irreducible
BA 132- [libpari] idealramfrobenius, idealfrobenius_aut, nfgaloispermtobasis
133- Allow ??lfun, ??Lmath, etc. [#1753]
134- [libpari] cyc_normalize, char_normalize, char_check, char_rootof1,
char_rootof1_u, bnrchar_primitive, bnrconductor_i
135- GP functions charker, bnrchar
136- bnrconductor(bnr, chi) as a shortcut for bnrconductor(bnr, Ker chi);
same for bnrisconductor, bnrdisc and bnrclassno
137- [libpari] real_1_bit(), grootsof1()
PB 138- [libpari] Flm_sub, FpM_sub
BA 138- [libpari] get_FpXQX_mod, get_FpXQX_degree, get_FpXQX_var,
FpXQX_get_red, FqX_get_red, random_FpXQX
BA 139- [libpari] get_FlxqX_mod, get_FlxqX_degree, get_FlxqX_var,
FlxqX_get_red, random_FlxqX
BA 140- Prototype code 'b' and default 'realbitprecision'
141- \pb shortcut [ manipulate realbitprecision ]
BA 142- [GP] Map, mapget, mapput, mapisdefined, mapdelete
BA 143- [GP] bitprecision
BA 143- [arm64] add aarch64 assembly kernel
144- [libpari] ZV_snf_group, ZV_snfall
145- [libpari] znstar0 with Idealstar semantic; could be made available under
GP as default znstar, but current znstar/idealstar have incompatible
defaults. Called by idealstar(,N).
146- [GP] znconreychar, znconreyexp, znconreylog, znconreyconductor,
charorder, charconj
BA 147- [GP] call (for calling closures).
148- [GP] optional flag to forell [ loop over isogeny classes ]
149- lfunthetacost, lfuncost
SCh150- [mingw] timer: support for user time
JD 151- [libpari] pari_completion interface for readline
SCh152- [mingw+pthread]: default nbthreads support
153- teichmuller([p,n]) to cache all value at i + O(p^n), 1 <= i < p
154- optional argument 'tab' to teichmuller(x)
155- [GP] function chareval, charmul, chardiv, zncharinduce, zncharisodd
156- [libpari] Flm_intersect
157- [libpari] ggamma1m1
158- allow ispower(t_POLMOD representing a finite field element)
159- [libpari] Fq_ispower, FqX_ispower, RgX_deflate_order, Fq_to_FF,
FqX_to_FFX
160- [libpari] Z2_sqrt, divisorsu_fact, usumdiv_fact, usumdivk_fact
161- gphelp -detex: new flag -utf8 to allow utf-8 encoding in output, e.g.
render \'{e} as é (the actual eight-bit char) instead of 'e
162- GP function msfromhecke, msgetlevel, msgetweight, msgetsign
BA 163- qfisominit: allow to pass the matrix of minimal vectors [#1656]
164- [libpari] GENtostr_raw
BA 165- [libpari] FlxqX_halfgcd, FpXQX_halfgcd
166- issquare(t_POLMOD of t_INTMOD) assuming a finite field
167- RgXn_powu, RgXn_powu_i
168- [libpari] is_real_t, R_abs, R_abs_shallow
BA 169- [libpari] F2xX, F2xqX, F2xqXQ family functions
170- GP functions rnfidealprimedec, rnfidealfactor
BA 171- [libpari] get_FpX_algebra, get_FpXQ_algebra, get_FpXQX_algebra,
get_FlxqXQ_algebra, get_FpXQXQ_algebra, get_Rg_algebra
172- E/Qp: Added Mazur-Tate-Teitelbaum's L invariant to E.tate
BA 173- [libpari] ZpXQ_div, ZpXQX_divrem, ZpXQX_digits
174- [libpari] ZX_deflate_max, ZX_deflate_order
175- [libpari] idealinv_HNF, idealinv_HNF_Z
176- [libpari] QM_charpoly_ZX_bound
BA 177- libpari support for low-res plot()
178- GP function serprec
179- ellap(E,p), ellcard(E,p) for E/K number field, and p maximal ideal
180- [libpari] function sertoser
181- ellan(E, n) for E/K number field
182- [libpari] function gisexactzero
BA 183- GP function ellsea
183- [libpari] nfsub, Rg_RgC_sub, Rg_RgC_sub, Z_ZC_sub
184- [libpari] zkchinese, zkchinese1, zkchineseinit
185- [libpari] vecsmall_reverse
186- [libpari] Z_ppio, Z_ppgle, Z_cba
187- ellminimalmodel over number fields
188- [libpari] FpX_factor_squarefree, Flx_factor_squarefree
189- [libpari] checknf_i, checkbnf_i, checkbid_i, checkrnf_i
Changed
1- make log(+/-I) return (+/-)Pi/2*I with gen_0 real part [#1556]
BA 2- [libpari] rename RgX_mullow -> RgXn_mul, RgX_sqrlow -> RgXn_sqr,
RgX_modXn_eval -> RgXn_eval, RgX_modXn_shallow-> RgXn_red_shallow
3- change rnfnormgroup to return [;] instead of raising an error whenever
it detects a problem (modulus not a multiple of the conductor, non-abelian
extension...): this is a BIB with undefined result, but returning a
sentinel is more useful *if* we notice it.
4- [gp] uniformize errors from the % history operator (SYNTAX->MISC) [#1553]
5- t_STR used to compare as larger than any real number via < or >
operators. Such a comparison now raises an exception.
6- valuation(0,p), nfeltval(nf,0,pr), idealval(nf,0) now all return +oo
poldegree(0) now returns -oo
BA 7- rootpadicfast renamed ZpX_roots
8- nfinit: switch from sturm() to ZX_sturm() [Uspensky], and from polroots
to polrootsreal (totally real fields). polsturm() now uses Uspensky in
most cases.
9- polsturm interface change
- polsturm(T, a, b) is still supported but deprecated, use
polsturm(T, [a,b])
- polsturm(T, a, b) used to return the number of roots in ]a,b],
we now use the closed interval [a,b]: more intuitive given the new
syntax, and compatible with polrootsreal()
BA 10- [libpari] mkintn: handles arguments as 32bit unsigned int
11- nfdisc, nfbasis: no longer support the old (T,flag,fa) arguments.
Use the generic [T,listP] syntax (see 2.6.0-C105)
12- factorpadic: no longer support the deprecated (no-op) 'flag' argument
13- thue() sort solutions lexicographically
14- thueinit tnf format: always include a bnf (also when r1=0), to allow
checking for norm equation solutions first: e.g. thue(x^4+1,7*10^80)
becomes instantaneous instead of overflowing
BA 15- Flx_pow renamed to Flx_powu
16- optional flag to ellheight is gone (useless)
17- ellbil(E,P,Q) is now deprecated, use ellheight(E,P,Q)
18- [libpari] rename ghell->ellheight, mathell->ellheightmatrix
BA 19- Rg_to_RgV renamed to Rg_to_RgC, RgX_to_RgV renamed to RgX_to_RgC
20- ellL1(e, r): make r optional (default value = 0)
BA 21- powruvec is replaced by powersr
22- [libpari] merge_factor no longer keeps entries with exponent 0
Pmo23- More robust and much faster ellL1 and ellanalyticrank. The condition
ord(L_E,s=1) <= r in ellL1(E,r) is no longer necessary.
24- renamed ZV_gcdext -> ZV_extgcd for consistency with other gcdext methods
BA 25- setrand now return a (huge) integer instead of a vecsmall
26- unify 32/64 bit random generators. Probabilistic algorithm should now
behave identically on all architecture, provided they do not involve
the floating point kernel
28- unify 32/64 bit tests
29- move extern(), externstr(), readstr() and system() to the generic
part of GP language (was gp-specific). This allows to use them
in parallel mode and under gp2c [#1593]
30- made cmprr, cmpri, equalrr consistent with == semantic. We now have,
e.g., 0e1==1.0 and (0e1 < 1) = 0 (since 1-0e1 evaluates to 0e1)
31- [libpari] comment out function names obsoleted during the 2.3.* cycle
(2007). See PARI_OLD_NAMES.
32- default 'strictmatch' has been obsoleted. It is now a no-op.
33- default 'compatible' has been obsoleted. It is now a no-op.
34- zeta(odd integer): use Borwein's "sumalt" algorithm (10 times faster
than previous at \p1000)
35- elltors flags are now deprecated (and ignored, removed corresponding
code)
36- add optional flag to nfhnf / nfsnf: return transformation matrices
37- nfroots/nffactor: factor polynomials in Q[X] over Q first
BA 38- much faster polresultant over Z
39- GP and libpari polynomial variables of arbitrary priority can now be
created: 'x' is no longer guaranteed to have maximal priority,
nor MAXVARN to have minimal priority.
40- GP: polynomial variable 'y' is now always defined on startup,
with priority lower than 'x'
41- Allow ffgen([p,f]) in addition to ffgen(p^f) and ffgen(T*Mod(1,p))
42- thue() needed to compute to huge accuracies when regulator was large
E.g. t=thueinit(15*x^3+8*x^2-95*x+24,1); thue(t,8)
43- rnf structures may now contain a full absolute nf struct ('nfabs')
44- matkerint: replace underlying LLL algorithm by mathnf
Simple bench: M=matrix(50,55,i,j,random(10^5)); \\ 200 times faster
45- allow t_VECSMALL vector exponents in gen_factorback
47- [libpari] rename 'define' PI -> M_PI and use proper constant
48- no longer print 0 t_POLMOD as "0", bug e.g. Mod(0,x). Uniformize code
and behaviour with t_INTMOD.
49- warn when coercing quotient rings when 'debug' non-zero
? \g1
? Mod(1,2)+Mod(1,3)
*** _+_: Warning: coercing quotient rings; moduli 2 and 3 -> 1.
50- content([]) -> 0 [ was 1 ]
51- [] / 0 => div. by 0. Now returns [] (as [] \ 0 already did)
LGr52- use GRH-guaranteed bounds in bnfinit for residue estimate
53- Configure: avoid inserting unnecessary -L arguments in link line
54- genus2red: change syntax. Allow either genus2red(P) or genus2red([P,Q])
instead of mandatory Q (was: genus2red(Q,P) with Q almost always 0).
Allow uniformization with hyperellcharpoly
55- old functions from gp-1.39.15 no longer loaded into an "entree" table,
no longer complete specially "whatnow" arguments; remove compat.c and
most of gp_init.c
BA 56- Rename row_Flm -> Flm_row, row_zm -> zm_row
57- rewrote intnum / intnuminit routines
58- nucomp now takes L = floor(|D|^(1/4)) as a 3rd argument. Former
nucomp(x,n) is nucomp(x,n,NULL).
BA 59- divide_conquer_assoc renamed to gen_product
60- sumnum algorithm (replace Abel-Plana by Euler-Mac Laurin). Changed
the interface !
BA 61- [libpari] concat, concat1 renamed to gconcat, gconcat1
62- rnfconductor now returns [cond, bnr, H] instead of [cond, bnr.clgp, H]
63- nfrootsof1(), more stringent ramification tests: looking
for a subfield Q(zeta_p^k) is now faster.
64- intnumromb to use realbitprecision
65- idealstar / ideallog: allow omitting 'nf' argument (for nf = Q; use
znstar and znlog internally)
66- improved p-adic log at high accuracy (O(sqrt(padicprec)) algorithm
instead of O(padicprec))
67- allow genus2red to handle (rational) non integral models
KR 68- new version of misc/xgp
BA 69- rename Flc_Fl_mul -> Flv_Fl_mul, Flc_Fl_div -> Flv_Fl_div,
RgC_to_Flc to RgV_to_Flv, F2c_to_Flc to F2v_to_Flv
70- rename leading_term -> leading_coeff, constant_term -> constant_coeff
71- improve gamma(a+O(x))
BA 72- Z_to_Flx now takes a shifted variable number, as Fl_to_Flx.
BA 73- improve hash_GEN to reduce # of collisions (change glue)
74- added explicit ways to attach an absolute nf to a rnf structure,
allowing rnf functions to return objects in standard notation (e.g.
ideals in HNF instead of as a vector of t_POLMOD generators).
Add optional flag to rnfeltabstorel, rnfeltdown, rnfeltup,
rnfidealreltoabs, rnfinit
BA 75- rename FlxqX_pow to FlxqX_powu
76- polredabs([T,listP]) no longer returns 0 if the attached order cannot
be proven to be maximal: it computes the expected canonical polynomial
in all cases, which can be very slow. Always use polredbest() if you
don't require a canonical output.
77- polredabs(T) now internally uses the polredabs([T,listP]) strategy,
making it much faster in favourable cases, while still always returning
a canonical defining polynomial.
78- precision(0), bitprecision(0), padicprec(0,p) now all return +oo
under GP [ used to return LONG_MAX ]
79- meaning of precision(x, n) no longer depends on the type of x: it now
always refers to floating point precision. Before the change:
precision([O(2),O(3),O(x)], 10) -> [O(2^10),O(3^10),O(x^10)]
80- infinite slopes of newtonpoly replaced by "+oo" (instead of 2^63-1)
81- rename anell -> ellan, anellsmall -> ellanQ_zv
BA 82- Fp_ellcard_SEA/Fq_ellcard_SEA meaning of flag has changed.
83- renamed absi_cmp -> abscmpii, absr_cmp -> abscmprr,
absi_equal -> absequalii, absi_factor -> absZ_factor, absi_factor_limit
-> absZ_factor_limit, equaliu -> absequaliu, equalui -> absequalui,
cmpiu -> abscmpiu, cmpui -> abscmpui
Removed
1- deprecated functions nfbasis0, nfdisc0, factorpadic0
2- deprecated function manage_var
3- useless function intnuminitgen (not very useful and impossible to use
reliably together with intnum with boundary conditions)
4- useless function intnumstep: instead of intnum(a,b, intnumstep()+m),
use intnum(a,b,m).
5- partially implemented functions intfouriercos / intfouriersin /
intfourierexp / intlaplaceinv / intmellininv / intmellinvshort: use
intnum (possibly intfuncinit). Make sure to indicate oscillating behaviour
when function decrease slowly at oo
6- optional flag to intfuncinit
BA 7- divide_conquer_prod: use gen_product instead
8- useless function sumnumalt
9- badly implemented functions zetakinit / zetak: the interface did not
make sense (it is impossible to initialize for Dedekind zeta without
specifying a domain where the function is to be evaluated). Closest
equivalent to zetakinit:
L = lfuninit(x^2+1, [c, w, h]);
to compute zeta_Q(i)(s) for |Re(s - c)| < w, |Im(s)| < h. Then
lfun(L, s)
as an analog to zetak(). Or directly lfun(x^2+1, s) if a single value
is needed. [#368, #1647]
BA10- [libpari] FpXQX_rem_Barrett, FpXQX_divrem_Barrett: use FpXQX_get_red
BA11- [libpari] FlxqX_rem_Barrett: use FlxqX_get_red
BA12- [libpari] RgX_RgM_eval_col