| Karim Belabas on Thu, 21 Apr 2005 19:20:09 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| pari-2.2.10 released |
Dear PARI enthusiast,
I would like to announce the release of pari-2.2.10.ALPHA. The sources and a
pre-compiled binary for Windows can be obtained through the address
http://pari.math.u-bordeaux.fr/download.html
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
This is mostly a bug-fix release. The main user-visible changes are
faster basic routines, propagating to high-level ones.
- factoring : trial division, MPQS, factorization of polynomials over
non-prime finite fields, polroots()
- exponential function
- quadclassunit().
Have fun,
Karim.
P.S: The Changelog
Done for version 2.2.10 (released 17/04/2005):
Fixed
BA 1- gp2c description of == operator was broken.
2- asin(I) --> SEGV, acos(1 + 0. * I) --> SEGV, atan(I/2) --> SEGV
sqrt(0*I),acosh(1+0*I) --> oo loop
3- make test-kernel didn't work [missing gen_m1 & int2n]
4- thetanullk(1/2,1) --> SEGV [from 2.2.9]
5- unit component in factor(t_INT + 0*I) was wrong
6- no typecheck for qfbhclassno input
7- diviuexact destroyed input and made further assumptions [=> wrong results
in ellglobalred]. Replaced it by a clean wrapper.
GH 8- thue(thueinit(x^3 - 2), 2) --> SEGV
9- reorder([1]) --> SEGV (bad input, but sanity check was wrong)
10- rnfconductor(,1) [ = rnf_is_abelian() ] didn't accept polynomials with
POLMOD coeffs + used a wrong algorithm [ not modular + wrong result ]
11- broken code in hnfmodid() wrt GC (would add one 0 column, Bug #129)
12- sqrti(gen_0) --> SEGV [native kernel]
BA 13- polrootsmod(,,1) could return a line vector instead of a column.
14- issquare(Pol(1)) --> SEGV
BA 15- polsubcyclo() used too much memory for large conductors.
16- typo in quadtoc() --> quadgen(odd t_INT)*1. was wrong
17- subgrouplist([], [2]) --> [[;]] (instead of [])
18- typo in FqX_split [ (!degpol(x)) --> degpol(x) <= 0 ] -> very rare SEGV
19- after alias(a, b); kill(b), invoking 'a' would access corrupted data
20- round(-0.5) --> -1 [ should be 0, as was output by round(-0.5, &e) ]
RS 21- gcc-3.4 breaks on compatibility code to support old readline versions
[ pre-4.2 ]. Typecast parameters, not functions and dump
(approximate) support for g++ + old readlines in gp_rl.c
22- \p 8000
E=ellinit([0,0,0,0,1296]); P=[-8,28]; ellpointtoz(E,P) --> oo loop
23- idealaddtoone(nfinit(y),[0]) --> SEGV [ BIB ]
24- aprcl would wrongly report composites [ introduced aprcl.c:1.48,
before release-2-2-8 ]
25- ellchangecurve(e over Qp) --> e.w not updated
26- ellheight(e over Fp, pt) --> SEGV
27- issquare(Mat(2), &z); z --> SEGV [ don't allow matrices as input ]
issquare(1/x^2) --> SEGV [ typo in polcarrecomplet ]
28- rnfkummer(over Q) --> type error.
29- allow qfbprimeform(d > 0, p < 0)
30- Since exp(-1e100) --> 0. [ tolerable: alternative being underflow
error ], we shouldn't have exp(-1e100) --> truncation error. Fixed.
31- rnfkummer(bnrinit(bnfinit(y),nextprime(10^20),1),Mat(3)) --> module
too large in Fp_shanks [ conductor() was computing unnecessarily
tough discrete logs ]
32- [Configure:] add /lib64 and /usr/lib64 to library search path
33- SEGV in nfeltpowmodpr() for primes of degree 1 [see 2.2.7-F21]
+ inputs containing t_INTMODs yield unpredictable [wrong] results
34- znlog(x,g): first check whether x == g [ quite frequent ]
35- rnfisnorminit(nfinit(y^2+y+1), x^3-y,2) --> "incompatible variables"
36- nffactormod() returned a factorization which was not a proper t_MAT
37- rnfequation(y^2+1, x + Mod(z*y - 1, y^2+1)) --> SEGV [ BIB ]
38- many problems in matfrobenius for _inexact_ matrices
LGr39- very rare SEGV in idealprimedec() [ typo in init_norm(), using FpX_red
on a t_INT, which is no longer valid ]
40- [library:] precision() output "wrong" value for small non-zero t_REAL
(depended on exponent, not the bit accuracy of the input). Change so
that true bit accuracy is used unless input is 0 (then use exponent).
41- rare memory corruption in thue() [ SmallSols ]
42- gamma(z) for tiny z suffered from catastrophic cancellation
43- ??? sometimes output extra entries [ e.g. ???eigen output matfrobenius ]
44- bezout(0., 0.) --> division by 0
45- issquare(5, &n) --> SEGV
46- factor(x in Q[i] \ Z[i]) --> rubbish [ typo in factor_gauss() ]
47- ellrootno & elllseries didn't check their arguments
48- rnfisnorminit(non-monic polynomial) --> SEGV
49- prevent Ser & Pol from creating invalid objects (e.g Pol(x+y, y) -> y+y)
50- TODO item: polrootspadic(x^2+8*x+4, 2, 2) --> 2 + O(2^2), whereas
there's no padic root. The documentation is not clear enough: should
polrootspadic(x,p,r) find roots in Z/p^r [current behaviour], or use the
precision of the supplied polynomial to compute roots in Qp, then return
them at precision p^r [ better, polroots() and factorpadic() behave this
way ] ?
51- padicappr(f, t_POLMOD) didn't work
52- rnfidealnormabs(rnfinit(nfinit(y),x^2+1),1) --> SEGV
53- no argument check in primepi()
54- ellminimalmodel(ellinit([1,2,3,4,5])) --> gerepile error
55- gcd([]) was 1 [ should be 0 ] + gcd([...]) used an inefficient algorithm
56- [readline] completion in extended help context ?? didn't include GP
defaults
57- [from 2.2.9] nfsubfields(x) had become unable to exploit
the trivial case when x is irreducible modulo some prime
58- [from 2.2.9] typo in krosi -> wrong result [ affected aprcl only ]
59- dirdiv([],[]) -> SEGV
60- using allocatemem() in files input with read() could corrupt stack
allocatemem() does not end by a longjmp anymore; it is still impossible
to use it in loops
61- typo in matrixqz: matrixqz(Mat([1,1]~)/2,0) --> "not a rational matrix"
62- [cf 2.2.7-F23-] use safer parameters in bernfrac(): bernfrac(166)
was wrong.
63- [Bug #201] gp --test: line split mode initialized too late
print(vector(1000)) would bypass it.
64- [Bug #200] gmul2n(t_POL, n) would not normalize the resulting polynomial
[ needed in characteristic 2 for instance ].
65- FpX_center and centermod didn't use the same normalizations. Fix
FpX_center
66- factormod(T,p,1): output was not sorted
BA 67- [from 2.2.9] -fPIC missing for gp2c-run on platforms that require it.
68- if(1,print,print(no)) --> no was printed [a function expecting any
number of string objects, called without parentheses (no args), would
read the following arguments as its own ]
69- more stringent tests in ideal* functions: don't accept t_COL with
incorrect length as ideals ([]~ produced SEGV in many cases)
70- factorback([1,1; 0,1],nfinit(x^3+2)) --> SEGV
71- [Bug #156] kbessel was unstably evaluated
? besselk(1,120)
%1 = 448600744132608.0000000000000
72- hyperu and kbessel(,1) inaccurate. E.g: hyperu(1,1,1) at \p28 -> last
3 digits wrong
Added
1- routines equalsi/equalis, equaliu/equalui, cmpui/cmpiu
2- exported FFTinit() / FFT() wrappers to rootpol.c:fft() [not under GP yet]
3- routines Rg_to_Fl, Rg_to_Fp, RgX_to_FpX, RgX_to_FpXQX, RgX_to_FqX,
RgV_to_FpV, RgXQ_mul, RgXQ_sqr, RgX_div_by_X_x, FpX_div_by_X_x,
RgXV_unscale
4- file Qfb.c [ stuff related to binary quad. forms moved out of arith1.c ]
5- routines truedivii, truedvmdis, truedivis
BA 6- [GMP] faster divri routine.
BA 7- support for real forms for qfbsolve.
8- routines RgX_gcd_simple, RgX_extgcd_simple [ when no coeff explosion
in base field ]
BA 9- new algorithm for exp(t_REAL) [ Newton ]
10- new macro ndec2prec()
11- use Trager's trick in factorff()
12- member function .bid (from a bnr). Extend mod, clgp, no, cyc, gen to
bid and bnr structure.
13- new keywords for ?? : bid, CFT, ideal, idele, modulus, rnf.
14- new construction %#: number of history entries so far
PC 15- an optional 2nd argument to znorder() to limit the search space
Changed
1- renamed gegal --> gequal, gegalgs --> gequalgs, gegalsg --> gequalsg,
egalii --> equalii
2- improve trial division in all basic arithmetic functions [ e.g try
for(i=1,10^5, factor(1009)), or moebius, or ... ]. Old logic was
broken for small inputs (tried far too many primes)
3- improve quadclassunit(D >> 1), about 10 times faster in the 40
digits range [forbid long reduction cycles (too costly to update arch.
info when a relation is found + streamline factorquad() ]. See
Z_lvalrem_stop() + remove extra_relations() and use large prime
variation all the way [almost all relations are found this way]
4- streamline/clean-up polroots [ complete rewrite, much faster for
small degrees ].
5- improved zetakinit() [save some multiplications, about half of them
for quadratic fields. Less so as the degree increases. ]
6- renamed RgX_RgX_compo -> RgX_RgXQ_compo
7- renamed binome -> binomial, chinois -> chinese [ added chinese1(x)
for chinese(x, NULL) ]
8- add GC in integer valuation functions + use recursive algorithm when
valuation looks large
9- no longer raise an exception when online help used on unknown id or
obsolete function [report 'unknown identifier' or 'obsolete function']
10- removed buggy support for narrow class group in quadclassunit
+ rewrite binary quadratic forms [ qfr3 / qfr5 ]. TODO: move from
arith1.c to qfb.c
11- reinstate cornacchia + cornacchia2 with a different interface [ use
cornacchia in qfbsolve ]
12- allow non-real arguments in incgamc, incgam
MW 13- ellap: if E has CM by a principal order, use Cornacchia instead
of Shanks/Mestre
14- more efficient algorithm for issquare(t_FRAC | t_RFRAC)
15- don't return t_INTMODs component in *modpr routines, but lifted
representatives.
16- FpX_roots, FpX_factor: normalize input first + direct support for
quadratic and linear polynomials [ no need to compute X^p !]
17- FpXQ_powers and similar routines: use multiplications when input has
small degree, squarings otherwise.
18- matsnf over polynomial rings: make sure elementary divisors are monic
19- ellpointtoz() now returns z such that 0 <= Im(z) < Im(w2),
0 <= Re(z) < Re(w1).
20- bnfinit(non-monic t_POL) --> now discard variable change
21- rename apprgen9 -> padicappr, factmod9 -> factorff
22- rewrite padicappr()
23- [COMPAT] bnrdisclist has lost its 4th argument 'flag', and omitting the
archimedean component now means that all 2^r1 possible values are
substituted (formerly: indicate no ramification at infinity).
The prototype of bnrdisclist0 has likewise changed.
24- renamed isprincipalrayall -> bnrisprincipal, rayclassno -> bnrclassno
rayclassnolist -> bnrclassnolist
25- Change the output of ideallist with technical (flag 2,3) [ with units ]:
instead of two vectors, output a vector of 2-component vectors.
Change the input of all list routines (bnrclassnolist, bnrdisclist)
accordingly.
26- %0 (undocumented) is no longer accepted as an alias for %
27- renamed realzero -> real_0, realun -> real_1, realmun -> real_m1.
GN 28- MPQS rewrite [cleaner, faster]
Removed
1- obsolete implementation incgam1 [ use incgam. As far as private
functions go, incgam2 is better ]
2- removed ideallistarch0, ideallistarchgen, ideallistunitarch,
ideallistunitarchgen. Just use ideallistarch.
3- obsolete default 'buffersize'. Flag -b is a no-op.
--
Karim Belabas Tel: (+33) (0)1 69 15 57 48
Dep. de Mathematiques, Bat. 425 Fax: (+33) (0)1 69 15 60 19
Universite Paris-Sud http://www.math.u-psud.fr/~belabas/
F-91405 Orsay (France) http://pari.math.u-bordeaux.fr/ [PARI/GP]