pari-2.6.0 released !
Karim Belabas <[email protected]> Wed, 15 May 2013 23:00:26 +0200
| Newsgroups | gmane.comp.mathematics.pari.announce |
|---|---|
| Message-ID | <[email protected]> |
Dear PARI lovers,
I would like to announce the release of pari-2.6.0-ALPHA, which starts a =
new
development cycle. The sources and a Windows binary can be obtained throu=
gh
the address
http://pari.math.u-bordeaux.fr/download.html
A number of long-awaited, but stability threatening, improvements have
been committed to this new branch.
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.6.0-ALPHA:
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D
[The GP language]
- Ranges and slices: [a..b], x[a..b], x[^a]
? v =3D [2..8]
%1 =3D [2, 3, 4, 5, 6, 7, 8]
? v[2..4]
%2 =3D [3, 4, 5]
? v[^2] \\ remove 2nd element
%3 =3D [2, 4, 5, 6, 7, 8]
? M =3D matid(3); M[1..2, ^2] \\ first two rows, remove 2nd col
%4 =3D=20
[1 0]
[0 0]
- Set notations:
? [ p | p <- primes(10), isprime(p+2) ]
%1 =3D [3, 5, 11, 17, 29]
- Multiple assignments: [a,b,c] =3D V, for a =3D V[1], b =3D V[2], c =3D=
V[3]
? [D,U,V] =3D matsnf(A, 1) \\ returns SNF and transformation matri=
ces
- Error trapping: iferr() + a new data type 't_ERROR' to represent erro=
r
contexts. See ??iferr
\\ Compute [B]P on a "curve over Z/NZ". If an exception occurs,
\\ we found a zero divisor in Z/NZ, thereby factoring N.
? ECM(N, B =3D 1000!, nb =3D 100)=3D
{
for(a =3D 1, nb,
iferr(ellmul(ellinit([a,1], N), [0,1], B),
E, return(gcd(lift(component(E,2)),N)),
errname(E) =3D=3D "e_INV"))
}
? ECM(2^101-1)
%2 =3D 7432339208719
- Timeouts: alarm(delay, expr) spends 'delay' seconds trying to evaluat=
e
'expr', then aborts returning a t_ERROR object.
- Multi-if: to simplify successive 'else' clauses
? if (a =3D=3D 1, print("1"), \
a < 0 , print("negative"), \
isprime(a), print("prime"), \
print("generic"))=20
- new function cmp() to "compare" arbitrary objects (transitive order
relation, returns 0 iff x =3D=3D=3D y). Useful for sets.
- new function getenv()
[The GP calculator]
- forprime(p =3D a, b, ...) now iterates over arbitrary ranges of prime=
s,
independently of 'primelimit'. Parameter 'b' can be omitted (no upper
limit). More generally, primelimit is now deprecated: libpari functio=
ns
can quickly produce their own primes without relying on (enough)
precomputed primes.
- new iterators: forcomposite() / forqfvec()
- GP debugger, new functions expanding the 'break loop' mechanism: dbg_=
up(),
dbg_down(), dbg_x(), breakpoint()
- new default 'linewrap'
[Multiprecision Kernel]
- binary splitting: Catalan's constant, Pi, log(2) (to be expanded)
[Elementary Number Theory]
- arithmetic functions no longer accept vector / matrix arguments
[ to allow passing factorization matrices ]: use apply()
- new convenience functions: hamming(), ispowerful(), digits() /
sumdigits(), ispolygonal(), istotient(), isprimepower()
- sqrtnint(a,n) for floor(a^(1/n))
- randomprime(), random([a,b])
- Bernoulli polynomials: bernpol() and sumformal()
? sumformal(n^2) \\ F such that F(b) =3D \sum_{n <=3D b} n^2=20
%1 =3D 1/3*n^3 + 1/2*n^2 + 1/6*n
- renamed bezout() -> gcdext()
- sumdivmult: to =D1=95um multiplicative expressions
- seralgdep: to find linear relations with polynomial coefficients
? s =3D 1+1/2*y+3/8*y^2-3/16*y^3+3/128*y^4+15/256*y^5-57/1024*y^6 + O=
(y^7);
? seralgdep(s,2,2) \\ relation of degree <=3D 2, degree(coeffs) <=3D =
2
%2 =3D -x^2 + (y^2 + y + 1)
- sieve algorithms for znlog() and fflog()
[Polynomial Arithmetic]
=20
- polgraeffe(f): returns g such that g(x^2) =3D f(x)f(-x)
- poliscyclo(), poliscycloprod(), polcyclofactors(): cyclotomic factors
of rational polynomials
[Linear Algebra]
- mathnf for matrices over K[X]
- matqr() to compute the QR-decomposition of a real square matrix;
mathouseholder() to apply a sequence of Householder transforms
- internal support for sparse matrices and Wiedemann algorithm; current=
ly
only used by the discrete log algorithms.
[Elliptic curves]
- extend ellinit inputs: ellinit([a4, a6]). On singular curve, return [=
]
instead of raising an error. New function ellfromj().
- new dynamic implementation of the 'ell' data structure: ellinit is no=
w
used to record the coefficients of the curve and the domain over whic=
h it
is defined. Further data is added to the structure on demand, if and =
when
it is needed, e.g. cardinality and group structure. See ??ellinit.
- elliptic curves functions no longer assume that a curve over Q is giv=
en by
a minimal model. A non-miminal model used to silently produce wrong
answers; no longer!
- allow ellinit(E / Qp) for arbitrary p (also p =3D 2) and reduction ty=
pe
(no longer restricted to Tate curves)
- allow ellinit(E / Fq) for non-prime finite fields, incl. point counti=
ng
(SEA, Harley)
- allow ellinit(E / C)
- new function ellheegner() to find a non-torsion rational point on
E / Q of rank 1.
- new implementation of ellweilpairing / elltatepairing
- renamed ellpow() -> ellmul()
[Number Fields]
- maximal orders (when the discriminant is hard to factor): allow to sp=
ecify
a list of primes at which the order nf.zk must be maximal. This [T, l=
istP]
format supersedes the old addprimes() hack as well as rigid optional
flags for nfbasis, nfdisc, polredabs. (And no longer depends on the
global 'primelimit'...) See ??nfinit
? T =3D polcompositum(x^5 - 101, polcyclo(7))[1];
? nf =3D nfinit( [T, 10^3] );
? nfcertify(nf)
%3 =3D []
A priori, nf.zk defines an order which is known to be maximal at all
primes <=3D 10^3. The certification step proves it is actually globa=
lly
maximal.
- new function polredbest(): "best-effort" variant of polredabs(). Not
canonical but finishes in polynomial time.
P.S. The Changelog=20
Done for version 2.6.0 (released 15/05/2013):
Fixed
1- Euclidean chains were confused by t_POLs with t_INTMOD/t_POLMOD co=
effs
[ because a 0 polynomial could have lg() =3D=3D 3 ]
2- numerical instability in ellheightoo [#1204]
3- Flm_gauss(m, smallish p): fix and enable the OK_ulong switch [ fas=
ter ]
4- remi2n didn't allow negative arguments [native kernel] [#1215] 5- =
ellrootno(e, p) started by computing a global minimal model for e
instead of a local one at p.
6- qfbred(t_QFR) wrong when frac( sqrt(D) ) > 0.5
7- add GC in sumalt()
8- problems with diagnostic messages when changing a 'default', e.g. =
\o3
9- divru() could call bfffo(0) =3D> overflow in expo()
AMe10- (t_FRAC<0) * t_INTMOD =3D> wrong result
11- trace(t_POL or t_SER) could yield an unormalized object [0 leading=
term]
LGr12- off-by-1 error in primepi() when argument is =3D primelimit
13- bestappr(0.*x+1) -> incorrect object
14- znlog(3, Mod(3,8), 2) -> error
15- crash when default(prettyprinter,...) points to a non-existent com=
mand
16- qfperfection(): wrong result in unlucky cases [#1223]
17- allocatemem() did not reset parse error [#1226]
BA 18- (x->vector(1,j,x))(1) --> significant pointers lost [#1211]
VL 19- [makefile] Incorrect -I and -L flags order [#1212]
20- nfbasis / nfdisc(f,, partial factorization) would sometimes spend =
a
lot of time trying to factorize a discriminant [#1227]
21- numerical instability in qfgaussred / qfsign [#1232]
22- missing consistency checks in conjvec [#1231]
23- numerical instability in polredabs [#1228, #1229]
24- wrong result in bezoutres [#1233]
25- wrong sign in polresultant() [#1234]
26- change default(realprecision) so that it returns the internal prec=
ision
[ as precision(1.) ], not the number of printed digits. [#1235]
27- subst(Y/X,X,x) -> 0
PB 28- polrootsff(x^2-x-ffgen((v^2+1) * Mod(1,3))) -> SEGV [#1241]
29- intnum(t=3D[0,0],[1],(sin(t)/t)^2) -> "precision too low in mpsc1"
BA 30- functions ending by the x[y]=3Dz construct could corrupt the stack=
.
31- nfbasis(pol, 0, factorization containing (-1)^1) -> wrong [#1244]
32- qfminim(): better type checks for matrix entries
33- qfminim(): incorrect GC in smallvectors()
34- padicappr(x^2+1+O(3), -1+O(5^10)) --> no error
35- tests test-kernel and test-ploth were broken
36- lots of missing sanity checks in hilbert(x,y,p)
[ e.g. hilbert(O(3), Pi, 5) -> 0 ]
BA 37- for(i=3D1,10^7,) + SIGINT -> SEGV [#1249]
38- ellwp: take flag into account also for t_SER output [ was: numeric=
al
case only ]
39- factor(p) was much slower than isprime(p) for p a "small" prime
BA 40- mateigen precision error was not trappable.
41- accuracy problems in bnfisunit [#1253]
42- broken rnfeltup [#1255]
43- x=3D=3D=3Dy was always wrong for x,y t_SER
BA 44- gamma(t_SER) with positive valuation did not work.
45- ispower(x < 0) could return an even value ! [#1259]
46- ispower(1 / n) return a wrong result [#1259]
BA 47- [breakloop] initial context could be lost.
BA 48- Ser([1+O(x)],x) returned an invalid object.
BA 49- ispseudoprime used too much stack for huge operands.
50- [rnfidealup doc] idealgentoHNF() was incorrect.
DS 51- elldivpol returned wrong result for degree n >=3D8.
52- overflow in mpbern(n) for huge n [#1256]
53- idealfactor(nf, non integral ideal) would remove a rational conten=
t
instead of factoring A/B with A,B coprime integer ideal. Which led
to costly factorizations [#1158]
LGr54- the global variables associated to the primetable _maxprime / diff=
ptr
could become inconsistent
55- psdraw() ignored plot colors
BA 56- stack_base() was not C89 standard compliant.
BA 57- my(f(x)=3Dx+1);f --> SEGV [#=
1273]
58- ellheight([0, 0, 1, -1, 0], [0., 0.]) -> BUG
59- allow bnrL1 over Q [#1279]
60- factorpadic(,,,1) =3D> SEGV when linear factors/Q [#1278]
61- mathnf(..., 4) didn't remove 0 columns from HNF [#1271]
JD 62- possible SEGV in pari_init_opts [#1264]
BA 63- ellorder(E,P*Mod(1,p)) did not work if E was defined over Z
64- allow writebin to save user functions (t_CLOSURE) [#1171]
65- sqrtn(1+O(5),5) -> error, ispower(1+O(5),5) -> error [#1261]
66- parimacro.tex: pdftex --output-format dvi would produce a PDF
BA 67- pari_close failed to free all allocated memory [#1297]
BA 68- pari_close did not restore GMP memory functions
69- avoid outputing ANSI escape sequences to reset terminal state when
unnecessary [#1289]
BA 70- ellpointtoz was numerically unstable
71- issquarefree(0) =3D> error [#1304]
72- sizebyte(t_LIST) returned the size of the wrapper type, not the li=
st
itself [#1307]
73- ellgroup(E over Q, p) now returns the structure of the group of
non-singular points, when the curve has bad reduction at p.
74- factor_proven not taken into account in factor(n), where n is a
BPSW-pseudoprime
75- core(5*(huge composite)^2) was very slow [#1305]
76- sqrt(0.E-97-1.12-97*I) -> div by 0 [#1309]
BA 77- FpX_gcd(0,x) -> div by 0
78- x; y; p; q; subst(Mod(q,p), q, x + y) --> Mod(1, p)*x [#1321]
79- off-by-1 error when placing prime table sentinel after e.g.
default(primelimit, 2);
80- t_REAL with huge exponents print incorrectly [#1322]
81- a1;a2;a3;a4;a6;ellinit([a1,a2,a3,a4,a6],1) was very slow
BA 82- FpX_factorff and FpX_rootsff were not using standard argument orde=
r
PB 83- printf("%.6f", 5E-5) -> SEGV [#1328]
BA 84- diffop(Mod(y,x^2-y),[y],[1]) -> wrong result
BA 85- calling a GP function with a lot of omitted arguments could cause =
a crash
GH 86- missing solutions in thue(), e.g. thue(thueinit(x^3+92*x+1),3^3)
87- t_RFRAC =3D=3D t_RFRAC could return a wrong result [#1339]
88- obscure bug in polroots() (sage #13314)
89- polinterpolate([1,2] * Mod(1,7), [2,3], 0) -> incorrect type in ga=
bs
BA 90- printf() did not flush output
91- logint() used too much memory and could return a wrong result:
logint(3^64, 3) --> 33
92- eint1(x < 0) normalization. Now eint1(x) =3D incgam(0, x) [#418]
93- polrootsff(2*x+1,2,y) -> SEGV [#1350]
94- resultant(x,x,y) -> 0 and related problems
95- thue((x^4+1)^2, 4) -> no solution
BA 96- idealramgroups() and idealfrobenius() did not accept a bnf
97- using new operators with default(compatible,3) caused a crash
98- rare corruption in ECM [#1240] factorint(,1) =3D> SEGV
99- add missing call to normalize() in lift(t_POL/t_SER) [#1359]
BA 100- listput was not SIGINT safe
BA 101- znorder(Mod(5,16),200) -> 5 instead of 4
102- e.tate lost accuracy
103- 2-adic ellinit
104- allow ellinit over C
105- ellpointtoz(E / Qp, ...) [ wrong result / error messages ]
JD 106- galoisinit(x^3+x^2-2*x-1) -> uninitialized read [#1389]
BA 107- polhermite(66) -> corrupted result [#1393]
108- nfhnf() would only accept matrices of maximal rank
BA 109- galoisfixedfield() could return a wrong result for polynomials wi=
th
large roots [#1406]
110- bnrdisc could return a wrong result if the modulus had more than
2 prime divisors [#1399]
111- a =3D Mod(1,2)*x; gcd(a,a) return x instead of Mod(1,2)*x
112- changing primelimit from within forprime loop yielded unpredictab=
le
results (potential SEGV)
113- y;z;(x^2+y)*w/z/x -> significant pointers lost [#1248]
114- log(t_FRAC close to 1) =3D> junk (idem lngamma) [#1238]
115- thue(thueinit(x^3-1493,1),3) -> error
LGr116- typo in modr_safe -> precision error [#1413]
117- nfhnfmod(non-integral module) =3D> wrong result
nf=3Dnfinit(y); A =3D [[1,1/2;0,1],[1,1]];
nfhnfmod(nf, A, nfdetint(nf,A))
Changed
1- mathnf: swapped flag 3 and 5.
2- allow ellinit([a4,a6]) [#1213]
3- ellinit(... singular curve ...]): return [] instead of raising an =
error
4- GP set elements are no longer converted to t_STR (requiring "eval"=
to
recover the underlying object). Arbitrary GENs can be stored in a =
set.
5- moved Odos/* to relevant src/systems subdirectory
6- removed Odos directory
7- no longer allow Vec()/Vecrev(), Col(), Vecsmall(), without argume=
nt.
Use [], []~, Vecsmall([]), respectively.
8- allow specifying an optional dimension in Vec/Vecrev, Col, Vecsmal=
l.
9- allow Vecsmall(t_POL or t_SER)
LGr10- nicer printout of small matrices: justify columns
11- improve gmul(t_REAL, t_FRAC) when numerator of t_FRAC is 1
BA 12- [darwin] do not use dylib_ prefix to ld options [#1210]
13- allow idealhnf(nf, t_QFI / t_QFR) for quadratic fields
14- no longer allow 3 arguments in bestappr() [useless], no longer
mix Pade approximants and continued fractions [too confusing: must=
a
t_SER be converted to a t_RFRAC or be treated coefficientwise?]
15- if znlog() has no solution, return [] instead of error
16- znlog(x, g): no longer assume that g is a primitive root, nor that=
the
underlying (Z/N)^* is cyclic
17- renamed gen_eltorder -> gen_order
18- logfile: strip properly color escape sequences [#1225]
19- change nfbasis(T, flag, fa) to nfbasis(T, listP). flag was used to=
invoke
round2 instead of round4 (inefficient=3D> useless) OR to only
partially factor poldisc(T), up to primelimit (very dangerous sinc=
e
primelimit is a global variable). Now listP describes a list of pr=
imes,
and we return a basis of an order which is p-maximal at all those =
primes:
either a vector of primes, a factorisation (as fa before) or an in=
teger
B to indicated {p <=3D B} (a safe and flexible version of nfbasis(=
T, 1)).
nfdisc() was changed similarly.
20- first call isanypower() in BPSP_psp_nosmalldiv() when input is > 2=
^512
[ < 1% of required time, 1 order of magnitude faster when it succe=
eds ]
[ #1074 ]
21- sort polroots() output so that it no longer depends on current pre=
cision
22- delete README-subversion, replace with README-git
23- move README.os2 to src/system/os2/README
24- change compiler version printout in gp header
25- much faster final divisibility test in nfgcd() [#1214]
26- error type sqrter5 "not a quadratic residue in sqrt" now generaliz=
ed
to denote "not an n-th power residue in sqrtn"
BA 27- global_err_data is now a GEN.
BA 28- more usable form of alarm(s, code): evaluate code, aborting after =
s
seconds. Return the result or a t_ERROR object.
29- [non-Unix systems] the name of the preferences file is now "gprc.t=
xt"
(it remains ".gprc" on Unix systems)
30- also look for the preferences file in PARI's "datadir"
31- removed rootsold() code : polroots(x, 1) is no longer accepted
32- rewrite ellan using C-longs + new function anellsmall()
33- renamed all libpari error codes [ pari_err() arguments ]
34- allow t_VECSMALL in vecextract
35- look for a few more short vectors in polred(), only return subfiel=
ds
and the best primitive polynomial [wrt discriminant]
36- [library] remove precdl argument in ellwp0: use a t_SER argument l=
ike
in all other transcendental functions.
37- ellsigma / ellzeta: allow t_SER arguments, like ellwp.
38- polcoeff(x+2*y,1,y) -> 2 [ was 2*x^0 ]
39- quadhilbert / quadray: replace final polredabs call by polredbest =
[#1025]
40- listsort() now uses the cmp() comparison function, and becomes ful=
ly
compatible with setsearch() [#1167]
41- vecsort(,,2) [lexicographic order] is now always on. The flag is
now deprecated and ignored.
42- allow t_SER with integral coefficients to use asymptotically fast
(ZX_mul / ZX_sqr) polynomial multiplication
LGr43- let initprimes0 use an existing prime table
44- rename stackmalloc -> stack_malloc. Add stack_calloc
45- matimagecompl() now returns a permutation (t_VECMALL) no longer a =
t_VEC
46- remove config/gitversion from 'make snapshot' tarball
JM 47- Better implementation of ellweilpairing/elltatepairing
BA 48- agm now returns the optimal AGM
49- unify make_emacs_tags / make_vi_tags =3D> make_tags + fix problems=
for
(exuberant-ctags)-based etags. Both tag files (emacs / vi) contain
the same tags now.
50- ellglobalred(E) now also returns the conductor factorization [4th =
compo]
51- library functions *_incremental_CRT no longer need the product of =
the
moduli, instead they compute it and update the running modulus.
52- factor_proven now affects all the factoring machinery, as document=
ed, i.e
also multiplicative function (moebius, sumdiv,...)
53- allow t_VECSMALL in lex()
54- nfrootsof1(K) check whether K.pol is a translate of a cyclotomic p=
ol.
[initial patch LGr, #1175]
55- format of cached Bernoulli table: now a t_VEC of t_FRAC / t_REALs.
Removed bern() macro. The new data must be accessed using bernfrac=
/
bernreal.
56- [libpari] simplify init_primepointer(n, p, &pd) interface
=3D> init_primepointer(n, &pd). Remove argument 'p', ignore the pr=
evious
value of pd [ remove assumption that it pointed into a prime table=
]
and always set pd to a pointer into the private prime table.
57- forprime loop: no longer allow to modify the loop index
? forprime(p =3D 2, 10, p =3D [])
*** at top-level: forprime(p=3D2,10,p=3D[])
*** ^---
*** prime index read-only: was changed to [].
58- faster forparii() [ for() with t_INT lower bound ]
59- forprime(p =3D a, b, ...) now iterates over arbitrary ranges of pr=
imes,
independently of 'primelimit'. Parameter 'b' can be omitted (no up=
per
limit). More generally primelimit is no longer a true limit to ite=
rate
over primes: all libpari functions use the forprime_t interface
60- rename ggval -> gvaluation
BA 70- GP function ellpow is renamed to ellmul
BA 71- rename powell->ellmul, addell->elladd, subell->ellsub
72- is_pth_power interface [ pass a forprime_t iterator ]
73- polrootsmod(, 4) is no longer accepted
74- revert to Ramanujan's formula to compute Pi [ + binary splitting ]
75- polinterpolate(,, 'x) use divide & conquer algorithm
BA 76- binary(0) now return []
77- polisirreducible() now avoids factoring in most cases
HC 78- reimplement incgam()
79- allow eint1(t_COMPLEX)
80- when 'echo =3D 1', no longer echo commands if they were entered
interactively [commands ended up printed twice]
81- unless 'echo =3D 1', no longer log commands entered non-interactiv=
ely
when 'log =3D 1'. '\r file' used to log the entire content of 'fil=
e'.
82- allow thue(t_POL, rhs) for thue(thueinit(t_POL, rhs))
83- elltors now uses division polynomials by default
84- modified "Hit Return to Continue" message so that it becomes a com=
ment
when copy-pasted
85- rnf_fix_pol() takes an extra argument, the calling function's name
86- fast gerepilecopy() for leaves
87- rename leftright_pow_fold -> gen_pow_fold, leftright_pow_fold_i
-> gen_pow_fold_i
88- upowuu now returns 0 on overflow
89- primes(n) no longer needs precomputed primes
90- prime(n) no longer needs precomputed primes
91- primepi(n) no longer needs precomputed primes
92- removed 3s delay when recompiling PARI after modifying a header
[ Was there to avoid problems on slightly out-of-synch NFS fileser=
ver
host. Had become an annoyance on fast multicore servers, esp. when
bisecting to find a broken commit. ]
93- improve Configure --tune + let tune -t/-tt/-ttt print more and mor=
e
verbose messages [ old 'tune -t' corresponds to current 'tune -tt'=
]
94- arithmetic functions no longer accept vector / matrix arguments [ =
to
later allow passing factorization matrices ]: use apply()
BA 95- rename RgX_check_ZXY -> RgX_check_ZXX, ZXY_max_lg -> to ZXX_max_lg
96- elleta() and elleisnum(e, 2) to use a theta series formula in
O~(prec^(3/2)) instead of O~(prec^2).
BA 97- zv_cmp0 renamed to zv_equal0
98- allow ellinit / Qp for arbitrary reduction type
99- ellpointtoz(E / Qp, ...), now return phi(P) [ used to return the s=
ame
result for phi(P) and phi(-P) [ split multiplicative reduction ],
resp. phi(P) + 1/phi(P) [ non-split reduction ]
100- ellinit(E / Qp).tate : the u component is now always a square root
of u2, also in the non-split case (in which case it lives in a
quadratic extension of Qp)
101- renamed library function divsum() =3D> sumdivexpr()
102- listpop(empty list) =3D> no-op [ was "domain error" ]
103- ellap, ellak, ellan: allow non-minimal model
104- when timer =3D 1, no longer print timing if the time is negligible=
;
in particular, no timing should be printed when defining a user fu=
nction
or and alias.
105- The proper way to initialize an nf structure when the polynomial
discriminant is hard to factor is nfinit([T, listP]), where listP
specifies a list of primes (see ??nfinit). nfdisc, nfbasis, all th=
e
polred functions allow analogous arguments (see Changed-19). This =
is
cleaner and more flexible than old flags relying on the value
primelimit (e.g. nfinit([T, nfbasis(T, 1)]), now deprecated). Also=
,
the nfinit function now sees the local specifications and can
take steps to avoid problems (instead of taking for granted a basi=
s,
without knowing whether it is correct or not). The result can
also be certified (nfcertify)
106- polredabs() with (deprecated) nf_PARTIALFACT flag (or new [T,listP=
]
argument) now returns 0 if the resulting order cannot be proven to=
be
maximal.
107- rename bezout() -> gcdext(), polresultant() -> polresultantext()
108- the prime table is now computed once and for all on startup and ca=
n
no longer be increased by modifying primelimit: the dynamic forpri=
me
machinery allows fast primes up to primelimit^2 which is more than
enough even with a small table. The default value of 500.000 is al=
ready
larger than necessary
109- removed the mechanism allowing prime gaps larger than 255 in the
prime table: as a result it now limited to 436273290, allowing fas=
t
primes up to 1.9 10^17
BA110- permtonum/numtoperm now use the standard lexicographic numbering
111- issquare(t_INTMOD), ispower(t_INTMOD): factor modulus incrementall=
y,
in case we hit a local non-residue -> early abort [#1376]
112- gphelp + OS/X : make "open" the default PDF viewer (was "acroread"=
)
113- renamed exp_Ir -> expIr
Added
1- mathnf for matrices over K[X] [#41]
BA 2- GP function ellheegner
BA 3- asm inline macro addllx8 for faster addition
BA 4- Library function FpXQ_autpowers
5- GP default 'linewrap'
6- functions Fp_issquare, Fq_issquare.
7- GP function cmp [ universal comparison ]
8- library functions Fp_addmul, addmulii, addmulii_inplace, addmuliu,
addmuliu_inplace, lincombii, mulsubii, submulii, submuliu,
submuliu_inplace
LGr 9- Catalan's constant [ Catalan() ]
BA 10- library functions F2x_issquare/F2x_sqrt
BA 11- [INSTALL] Documentation of RUNTEST
12- library function bestapprPade
13- library function gen_factored_order, Fp_factored_order
14- macros retmkvec, retmkvec2, retmkvec3, retmkvec4, retmkcol, retmkc=
ol2,
retmkmat, retmkmat2, retmkintmod, retmkpolmod
retmkintmod, retmkpolmod, retconst_col, retconst_vec
15- allow Ser(t_VECSMALL)
BA 16- library function gsprintf/gvsprintf
BA 17- new PARI type t_ERROR (error messages)
BA 18- new error trapping system and GP functions iferr,iferrname
BA 19- implement lngamma(t_PADIC)
LGr20- new PARI functions F2m_gauss, F2m_inv, F2m_rank, F2m_image, matid_=
F2m,
F2m_mul, F2m_F2c_mul
BA 21- GP function getenv
22- new error class e_PRIME [ pari_err() ]
BA 23- low-level function int_bit
24- library function stack_strcat
25- function polredbest [ adapting a preliminary patch by BA ]
BA 26- library functions Fl_invsafe, F2x_halfgcd, Flx_Flxq_eval and Flx_F=
lxqV_eval.
BA 27- support for sparse matrix and Wiedemann algorithm
28- GP function vecsearch() [ use with vecsort() ]
BA 29- library function Z_issmooth
BA 30- linear sieve algorithm for Fp_log/znlog
BA 31- library functions Flx_to_FlxX, F2m_to_Flm, F2c_to_Flc, and Flxq_po=
wu
32- GP function idealnumden()
LGr33- library function uprecprime()
34- library function ZM_pivots()
35- library functions nm_Z_mul, ZM_togglesign, ZM_nm_mul [ to improve =
Zlm_gauss ]
BA 36- [breakloop] GP functions dbg_up/dbg_down (like gdb up/down)
37- library functions rootsof1_Fp, rootsof1u_Fp, rootsof1_Fl
BA 38- GP functions dbg_x (like \x) and dbg_err (current error data)
39- matconcat()
BA 40- library functions Flm_Fl_add, Flm_invimage, FlxY_evalx
BA 41- library functions Flx_ffisom, Flx_ffintersect, Flxq_ffisom_inv
BA 42- library functions Flx_is_irred, Flx_is_smooth, F2x_is_irred
BA 43- accessors functions for t_CLOSURE: closure_arity,closure_codestr,c=
losure_get_*
44- library functions ZMs_ZC_mul, ZpMs_ZpCs_solve, gen_ZpM_Dixon
BA 45- [breakloop] GP function breakpoint
BA 46- GP function ffnbirred
BA 47- cubic sieve algorithm for Flxq_log
BA 48- library functions F2x_F2xqV_eval, F2x_F2xq_eval
BA 49- forqfvec()
BA 50- library functions FqM_image, FqM_rank, FpXQXQ_powers, FpXQXQ_matri=
x_pow
BA 51- ellgroup(,,1): also return the generators
BA 52- library functions FpVV_to_mod, FpE_changepoint, FpE_changepointinv
BA 53- GP syntax [a..b] : [a,a+1,...,b]
BA 54- GP syntax [a(x)|x<-b,c(x)] : apply(a,select(c,b))
BA 55- GP syntax M[a..b,^c] : vecextract(M,"a..b","^c")
BA 56- library function FpE_log
57- select(f, v, 1) for indirect selection
58- hamming() function [initial implementation CG]
59- ispowerful() function
60- polgraeffe() function
61- functions poliscyclo(), poliscycloprod(), polcyclofactors()
62- function setbinop(f,X,Y) =3D { f(x,y), x in X, y in Y }
63- libpari function moebiusu()
64- sumdigits() function
65- libpari functions addiu, addui, subiu, subui, uissquare
66- randomprime() function. Allow random([a,b]) (return n, a <=3D n <=
=3D b)
67- ispolygonal() function
68- libpari functions uissquarefree, uposisfundamental, unegisfundamen=
tal
69- istotient() function
70- implement Haible/Papanikolaou binary splitting
BA 71- PARI functions FlxqX_nbroots, FpXQX_nbroots, FpXQX_nbfact.
BA 72- PARI function zv_search
BA 73- GP syntax: multiif if(a=3D=3D1,b,a=3D=3D2,c,default).
BA 74- GP syntax: multi assignement: [a,b,c]=3DV -> a=3DV[1];b=3DV[2];c=3D=
V[3]
BA 75- PARI functions gen_gener, gen_ellgroup, gen_ellgens, gen_powers
BA 76- FlxqE functions family (for elliptic curves over field of small ch=
aracteristic>3)
BA 77- PARI functions Flxq_sqrt, FpXQ_sqrt
78- bernpol() function
79- sumformal() function
BA 80- PARI functions ZX_equal1, zvV_equal, ZXV_equal, FpXX_neg, FqX_neg
BA 81- FpXQE functions family (for elliptic curves over field of large ch=
aracteristic)
BA 82- added GP function ellcard
BA 83- PARI functions FpXQ_powu, Fq_powu, FpXX_mulu, Fq_mulu, Fq_div
BA 84- PARI functions FqXQ_powers, FqXQ_matrix_pow, FqX_mulu, FqX_Fq_add
BA 85- PARI functions FqXY_eval, FqXY_evalx, FpXY_Fq_evaly
BA 86- SEA over non-prime finite field (for char p > 1000)
LGr87- Add clock_gettime timer option
88- add new error type e_DOMAIN
BA 89- Add black box finite fields for generic linear algebra
BA 90- PARI functions FlxqM_image, FlxqM_ker, FqM_deplin
BA 91- GP function ellneg
BA 92- PARI functions Fp_ellcard, FpXQ_ellcard, Flxq_ellcard
LGr93- vecmax / vecmin: add optional pointer argument (to hold index of a
largest/smallest entry)
94- printsep() function
CG 95- isprimepower() function
96- PARI functions F2v_to_F2x, F2x_valrem, F2x_deflate, F2x_shift
97- PARI function RgV_polint
BA 98- GP function digits
99- GP default 'sopath' [ rewritten from initial patch by GTo ]
LGr100- allow polylog(n, t_SER) around a !=3D 0
BA 101- PARI functions ZX_shifti, ZX_remi2n, ZXV_remi2n
102- PARI functions cxexp1, mpsincos1
BA 103- GP function ellfromj
103- GP function forcomposite
104- new error class e_PRIORITY [ pari_err() ]
BA 105- Add black box algebra for Brent and Kung algorithm
106- PARI function RgM_dimensions()
BA 107- PARI functions RgX_splitting(), Flx_splitting()
108- made public the CATCH / TRY interface, renamed pari_CATCH / pari_=
TRY
PARI functions err_get_num(), err_get_compo(), pari_err_last()
109- PARI function stack_sprintf()
110- PARI function RgX_is_QX()
BA 111- PARI functions retmkmat2,retmkcol2,mkmat2,mkcol2,mkcols,mkcol2s e=
t al.
BA 112- PARI functions ZXV_dotproduct(), ZXX_Z_divexact()
BA 113- PARI function gen_ZpX_Newton()
114- optional argument to contfracpnqn: return all convergents up to
p_n/q_n, not only the last 2
BA 115- PARI functions Flxq_autpow, F2xq_autpow
BA 116- PARI functions FpX_divrem_Barrett and unconditional FpX_rem_Barre=
tt
BA 117- PARI functions F2xq_sqrt_fast, Flxq_lroot, Flxq_lroot_fast
BA 118- PARI functions FlxqV_dotproduct, FlxV_red
BA 119- PARI functions ZpXQ_inv, ZpXQ_invlift, ZpXQ_log
120- PARI functions absi_shallow, mpabs_shallow, absfrac_shallow,
Q_abs_shallow
BA 121- PARI functions FlxX_Flx_add, FlxX_Fl_mul, FlxX_Flx_mul, FlxX_neg
BA 122- PARI functions Fp_ellj, FpXQ_ellj, Flxq_ellj
BA 123- PARI functions FpX_mulu, Flx_mulu, ZX_mulu
BA 124- PARI functions FlxqXQV_autpow, FlxqXQV_autsum
BA 125- PARI functions FpXQXQV_autpow, FpXQXQV_autsum
BA 126- PARI functions FpXT_red, FlxT_red, ZXT_to_FlxT, ZXT_remi2n
BA 127- Support for preconditionned reduction in FpXQ/Flxq
128- PARI functions padic_to_Q, padic_to_Q_shallow, QpV_to_QV, Q_pvalr=
em,
ZX_Zp_root, Zp_appr, Fp_muls, retmkfrac
BA 129- Add safegel et al. for GP2C -C option
HC 130- Function sqrtnint
131- sumdivmult() to sum multiplicative functions
132- ?? online help: allow searching labels, e.g. ??"se:priority"@
133- PARI function ZpM_echelon, zlm_echelon
134- GP functions matqr and mathouseholder, PARI functions QR_init,
QgM_QR_init, gaussred_from_QR, R_from_QR, gtomp, RgC_gtomp, RgM_g=
tomp
135- PARI functions trivial_fact, prime_fact
136- PARI function rfrac_to_ser
137- PARI functions padic_lindep, Xadic_lindep
138- GP function seralgdep
BA 139- arm, mips and mips64 level0 inline assembly kernel
140- new error class e_COMPONENT
141- PARI functions init_primepointer_geq, init_primepointer_gt,
init_primepointer_leq, init_primepointer_lt
BA 142- new default strictargs for mandatory arguments
143- GP function nfcertify
144- GP function ellchangepointinv
145- optional 'variable' argument to polresultantext()
146- export part of the ifac_* interface (ifact_start, ifact_next,
ifac_read, ifac_skip, ifac_isprime)
147- PARI function expIxy
148- poor man's graphic engine 'plotps' (Configure --graphic=3Dps) whe=
n
no graphic library is available; dumps the hi-res plot to a tempo=
rary
PostScript file, then opens a PostScript viewer ('open -W' by def=
ault,
$GP_POSTSCRIPT_VIEWER otherwise). Works around #1354 on OS/X.
Removed
1- dropped DOS support
2- qfrep(): bit 2 of flag is now meaningless, we now always return a
t_VECSMALL
3- file language/errmsg.c and global errmessage[] array: all error
messages are now part of pari_err_display())
4- error types arither1,mattype1,notpoler (merged with typeer), matin=
v1
(merged with gdiver)
5- legacy lindep and PSLQ implementations [algdep/lindep with
negative flags]: now use LLL in all cases.
BA 6- [libpari] removed unusable functions dbg_close/dbg_release.
7- [libpari] gisfundamental, gkronecker, gbigomega, geulerphi,
gissquarefree, gmoebius, gnextprime, gnumbdiv, gomega, gprecprime,
gsumdiv, gdumdivk, znprimroot0
8- ellsigma: flags 3 and 4 [ inefficient algorithm using the product
formula ]
9- Member function 'w' (this is technical, and no longer needed:-)
10- obsolete function weipell(). Use ellwpseries()
11- [libpari] obsolete function Polred. Use polredbest
--
Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1 Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation http://www.math.u-bordeaux1.fr/~kbelabas/
F-33405 Talence (France) http://pari.math.u-bordeaux1.fr/ [PARI/GP=
]
`