-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCHANGES
More file actions
288 lines (284 loc) · 15.4 KB
/
CHANGES
File metadata and controls
288 lines (284 loc) · 15.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/
Done for version 2.12.0 (released ??/??/20??):
Fixed
1- memory leaks due to the use of varhigher/varlower
2- memory leak on error in plots
3- memory leak on error in newtoncharpoly
4- heap-buffer-overflow in init_prefix [readline]
5- mfsplit(mf,,flag) could return uninitialized objects => SEGV
6- mfeisenstein(k,,chi) was treated as E(k,chi) instead of E(k,1,chi)
7- poldegree(y/x) -> 0 [ instead of -1 ]
8- sumeulerrat(y/x^2,1) -> junk
HC 9- incgam(-1000.4,2) -> SEGV
10- mfatkininit(mfinit([366,2]),2) -> precision error
11- forprimestep: wrong when wrapping word boundary (2^32 or 64) [#2071]
12- mfbracket: [f,g]_m was multiplied by (-1)^m
13- wrong results in mfatkininit / mfatkineigenvalues due to insufficient
precision [#2073/#2074]
14- issquare(Mod(x,ffinit(3,2))) -> wrong result [broken Fq_ispower]
15- possible SEGV in rnfpseudobasis(, [pol,lim])
16- wrong result in elllog over F_p, p in [2^63,2^64[
p=13824553909862352061; A=8953655473130154624; B=9775907253961339458;
P=[6444058885176327583,7963649599850249187];
E=ellinit([A,B],p); Q=ellmul(E,P,2);
elllog(E,Q,P) -> 0 [ Flj_mulu_pre would not accept n >= 2^63 ]
17- wrong result in mfsymboleval when path extremities are close to real
axis (cusps were OK) [#2075]
18- mfcoefs(mfDelta(),0) -> SEGV [#2078]
19- GC error in lfuncreate(elliptic curve over number field) [#2080]
20- X11 and Qt graphic engine: pari_close called too soon => crash
21- pariold.h: mix up with obsoleted taille / taille2
BA 22- foo(n)=vector(n)[1..n];123; would corrupt the GP interpreter [#2081]
23- Pol(0)/'x -> t_INT 0 (instead of 0*x^0)
Pol(0)/(Mod(1,2)*'x) -> t_INT 0 (instead of Mod(0,2)*x^0)
24- missing typecheck in nfalgtobasis [#2084]
25- dbllog2(t_COMPLEX of t_FRAC) => junk
26- nffactor(t_POL, t_POL) => bug in LLL_cmbf [#2083]
27- ideallog(pure archimedean conductor, t_FRAC) -> log(0) error
28- lfunrootres: avoid oo-loop
29- mfgaloistype: dihedral forms possibly incorrect for N > 3000
30- mfgaloistype: error on mf=mfinit([1159,1,Mod(930,1159)],0);
31- incorrect accuracy in limitnum / asympnum for alpha != 1
32- missing GC in polint_i
33- hash_GEN(x) returned different values depending on whether x was a clone
BA 34- [mpi] setting nbthreads in .gprc could lead to crashes.
35- accuracy too large in derivnum => slowdown
36- nfisincl(x^5-x^4+x^3-2*x^2+3*x-1,x^20+x^15+x^10+x^5+1) -> SEGV
37- stack corruption in addsub_frac
AP 38- segfault in rnfidealup [#2093]
39- Ser(x,x,0) -> error instead of O(x) [#2092]
40- fix mspolygon(,2) [add 1/3rd hyperbolic triangles + fix labels]
41- factor(3/(x^5+3*y*x^4+3*y^2*x^3+y^3*x^2)) -> SEGV
42- output from bnfcompress() mistaken for rnf and vice-versa
43- catastrophic cancellation in acosh / asinh for large t_COMPLEX
44- zeta(1/2 + I*t) => internal error
45- cos(z) and sin(z) imprecise when Im(z) is nonzero but tiny
BA 46- hyperellcharpoly: wrong results over Z/3Z
47- gmp kernel: off-by-1 error in red_mongomery [read uninitialized
memory, then ignores result]
48- intnuminit([-1,-1/2],[1,-1/2]) twice slower than it should
49- forcomposite(n=2,4,print(n)) -> empty [#2096]
50- relative extension of degree 1 was not properly supported in
rnfidealprimedec and rnfidealup
51- mfmul(f,g) created invalid forms when f (resp. g) had Nebentypus chi
(resp. chi') and Q(chi * chi') != Q(chi) or != Q(chi')
[analogously for mfpow, mfdiv, mfbracket]
52- let [N,k,chi] = mfparams(f); f had coefficients in Q(chi)
[or an extension thereof for eigenforms] but the values obtained
from znchar(chi) and chareval were incompatible with mfcoefs when
order(chi) = 2 (mod 4) [same cyclotomic field but different
cyclotomic polynomial]
FB 53- [Configure] library not found despite --with-readline-lib [#2097]
54- besseli, besselj, besselk, besseln(nu, z): use asymptotic expansion
for large z [#2006]
55- minpoly(Mod(1,t^2)) -> SEGV [#2102]
56- a=ffgen(3^2,'a);poldisc(x^6+a*x+y) -> division by 0 [ positive
characteristic with a few t_INT coefficients ]
57- intnumgaussinit(n) actually used 2*ceil(max(4,n/2)) quadrature points
BA 58- [pthread] parapply could crash
BA 59- ffinvmap(m) could SEGV on bad input
60- ellisdivisible(E/K number field in 'x) -> incorrect priority[#2106]
61- idealispower(nf, t_INT n) possibly wrong if (n, nf.disc) > 1
62- zeta''(0): all precision lost [more generally f'...'(n quotes)
imprecise in the neighbourhood of 0, while derivnum(,n) was OK]
63- sumdigits(negative number, B) sometimes negative
64- poldiscfactors(x^0) -> division by 0
65- factormod(x^3+1,[y^2+1,2]) -> SEGV
66- factormod(x^3+1,[y^2+1,5]) -> weird error message
67- besseljh(huge n, z) -> junk
BA 68- [pthread] localbitprec was not exported to threads
BA 69- fix inefficiency in fplll not present in original code
70- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/2000,[1/100,oo]): no root [#2112]
71- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/1000,[1/10,oo]): extra root [#2112]
72- lfun may crash on lfuncreate input with too short an vector [#2118]
BA 73- incorrect use of graphcolors -> SEGV
74- forcomposite(..., oo, ) was not supported
BA 75- lfunartin with poles: incorrect result
JD 76- factor: significant pointers lost [#2125]
BA 77- matdet/matrank over large fields was inefficient
78- poldisc(y^2/x + 1, y) -> error [also affects polresultant]
79- poldisc(x^2/y + 1, y) -> 0 [also affects polresultant]
80- ispower(2, 2^64) -> error
81- (f(x) = x*'y); f'(1) -> error
BA 82- sqrtn(Mod(3,19),4) -> no error [#2127]
83- nfhnfmod: wrong result
84- matdet(mat with t_RFRAC entries): wrong result [#2128]
85- n-th derivative of zetahurwitz used 'seriesprecision' instead of n
+ imprecise value when n large [#2130]
86- lfunzeros(f, [0, b]) wasn't allowed
87- mateigen(): typo causing wrong results when correct results were
achievable [#2131]
88- intnum(x=-oo,[0,-1/2],1/sqrt(-x*(x^4+1))) -> division by 0
89- eint1(large x > 0) didn't use asymptotic expansion [#2129]
90- printtex(quadgen(-3,'z)) ==> w
BA 91- [a,b]=a could lead to memory corruption
92- memory leak in cgetalloc when lg overflows
93- possible SEGV in padicappr [#2133]
94- zeta(small even integer) was very slow at large accuracy
95- core() could destroy its input, if stored in a GP variable
BA 96- (f(x, y = 1) = x*y); f'(1) returned 0
97- quadgen(2^64+1) * 1. => junk (stack corruption in quad_disc).
98- ellmoddegree: infinite loop and stack corruption (e.g on 52a2)
99- ellmoddegree(ellinit("10890ba6")) -> wrong result
100- nfgcd called ZX_resultant(a,T) with typ(a) == t_INT
101- random SEGVs in bnfinit with large fundamental units [#2139]
(due to fundamental units computed via floating point approximations
rounding to 1 or -1)
102- qfisom([16,6;6,10],[4,3;3,10]) was not 0. [#2140]
103- mfeval: wrong result when level of form and space didn't match [#2134]
Changed
1- [libpari] gp_filter return value is now allocated on the stack
[was undocumented, malloc'ed and resulted in memory leaks]
2- improved n!, factorial(n) and lngamma(n) for integral n
3- improved bernvec: no longer Obsolete
4- [libpari] mpbern is now obsolete: use constbern
5- rewrote the Bernoulli number cache (using zeta(2n) = * B_{2n})
and power recycling for zeta(2n) + additive Clausen von Staudt):
orders of magnitude faster and always store Bernoulli in rational form
BA 6- [libpari] ZpX_ZpXQ_liftroot_ea: change interface for 'early'
7- bnf.fu: return '0' if bnf does not contain the fundamental units (was an
error)
8- support ?? _+_ and friends [extended help for specific operators
instead of redirecting to "GP operators"]
9- support ?? _op=_ and ?? op=; support ?? _++ and friends
10- x ^ t_FRAC: return an exact result if possible; e.g. 4^(1/2) is now 2
HC 11- gamma(t_FRAC) use direct formula when denom | 24
12- serlaplace(scalar) -> return the scalar (understood as a constant
polynomial) instead of raising an exception [#2082]
13- implement hyperu for arbitrary complex parameters
14- extend lex() to allow complex numbers
15- lfunconductor(L, [a,b]) no longer supported to look for conductor in
interval [a,b]; implement lfunconductor(L, list of potential N) instead
16- renamed GP functions Strchr -> strchr (pari_strchr in libpari),
Strexpand -> strexpand, Strprintf -> strprintf, Strtex -> strtex
17- [help] move str* functions from "conversions" to "programming" section
BA 18- qfbsolve now returns a vector of solutions.
19- limitnum / asympnum: remove useless optional parameter 'muli/k'
[now implicitly set to 1, not to 20]: just extrapolate u(muli*n).
20- improve rdivii / rdiviiz [ use divri which may use divri_with_gmp ]
21- mfparams now returns [N,k,CHI,space or P, Phi] where Phi is the
cyclotomic polynomials defining the field of values of CHI
22- inline / unline are now obsolete, use export/unexport
23- let localprec(p) accept non integral real p [replace by ceil(p)];
same for localbitprec.
24- let precision(x,p) accept non integral real p [replace by ceil(p)];
same for bitprecision.
25- besseln is now obsolete, use bessely
26- [libpari] precision0 / bitprecision0 (meant to implement GP-specific
commands, not for library use) are now obsolete. The new equivalent
commands (still not meant for library use) are precision00 and
bitprecision00.
27- improve intnumgaussinit (use direct Newton instead of polrootsreal)
28- improve sumeulerrat / prodeulerrat
29- factor(x, D), D now encodes the domain over which to factor
30- allow listinsert(L, x, n) for n > #L, like listput
31- allow forsquarefree(n = a, b) with a*b < 0
32- allow L[a..b] and L[^i] for t_LISTs
BA 33- gen_factorback: change argument order to match other functions
34- polinterpolate(X,Y,t,&e): e is now more precisely defined and the
error estimate is given as a binary exponent; compared to the value
dy returned up to this change, we have e = exponent(dy).
35- suminf is now sensitive to bit precision. In library mode, use
suminf_bitprec (precision in bits) rather than the historical suminf
(precision in words)
36- RgV_polint: use (asymptotically fast) FpV_polint over Fp
BA 37- [libpari] pari_add_hist now take 3 arguments (data, cputime, realtime)
BA 38- # and ## now also display the realtime when nbthreads is not 1
39- gp_format_time: remove trailing ".\n" from formatted string
BA 40- GP: arguments of the parser code W can start with ~ for clarity, e.g.
listput(~L,x), mapput(~M,x)
BA 41- GP: the argument of a user member function is now a reference
42- make ellheight(E, torsion point) return an exact 0 [#2109]
43- allow rnfdisc(k, polynomial with non-integral coeffs)
44- allow rnfconductor(k, non-monic polynomial)
45- poldisc(t_COMPLEX) now raises an exception (used to return -4)
46- rnfdisc(nf, [T,B]) allow B a list of primes and maximal ideals
(same for rnfbasis, rnfinit, rnfconductor, rnfpseudobasis)
47- ??? include double quotes when needed (e.g. ???conductor) [#2122]
48- improved the prime() function
49- mpeint1: support all t_REAL x != 0 (was x > 0)
LGr 50- nffactor now supports rational functions
51- improve QM_gauss [treat contents sensibly]
52- lngamma and psi near 1: cache values of zeta(odd integers)
53- [libpari] nfbasis prototype changed: 3rd argument listP is gone, use
nfbasis(mkvec2(T,listP), &disc). Note that the documentation was
incorrect: it is not guaranteed that nfbasis([T, listP]) returns the
maximal order even if listP contains all prime divisors of the field
discriminant. See ??nfbasis
54- nfbasis now accepts an optional argument &dK [order discriminant]
55- mffromlfun: support forms of half-integral weight (e.g. from lfunqf)
BA 56- [libpari] FF_Frobenius: return the image of the standard generator
Added
1- [libpari] nonsquare_Fl
2- [libpari] set_avma
BA 3- [libpari] FpXC_FpXQ_eval
4- [libpari] mulu_interval_step
5- new file src/basemath/bern.c
6- [libpari] divisorsu_moebius
7- [libpari] ZXQ_powu
8- new GP functions hypergeom, airy
9- [libpari] gc_bool, gc_double, gc_int, gc_long, gc_ulong, gc_NULL
10- new GP functions strsplit, strjoin
11- new file src/basemath/str.c
12- [libpari] has_str_len
BA 13- qfbsolve(Q,n) now support arbitrary integer n.
14- [libpari] divisorsu_fact_factored
15- [libpari] qfiseven
16- [libpari] zv_cyc_minimize, zv_cyc_minimal
17- limitnum/asympnum: allow closures of the form N->[u(1),...,u(N)],
which allows to handle efficiently sums, recursions, continued
fractions, etc.
BA 18- new GP function polteichmuller
BA 19- [libpari] Flx_Teichmuller, F2x_Teichmuller
20- [libpari] mpsinhcosh
21- new GP function dirpowers
BA 22- [libpari] F2xqX_resultant, F2xqX_disc, FlxqX_resultant, FlxqX_disc,
FpXQX_resultant, FpXQX_disc, FFX_resultant, FFX_disc
BA 23- FFX_gcd, FFX_extgcd
24- optional flag to pollegendre and polhermite
25- new GP function pollaguerre
BA 26- [libpari] Flxn_red, Flxn_sqr, Flx_integ
BA 27- new GP functions export, unexport, exportall, unexportall
28- [libpari] Fp_divu
BA 29- [libpari] ZpXQX_liftroots
30- new GP functions getlocalprec, getlocalbitprec
31- [libpari] guncloneNULL, gluncloneNULL_deep
32- allow subst(e, x, vector v) for vector(subst(e, x, v[i]))
33- [libpari] pollegendre_reduced
AP 34- new GP function mfgaloisprojrep
35- optional v argument to nfmodprinit
36- [libpari] rfrac_deflate, rfrac_deflate_order, rfrac_deflate_max
37- [libpari] identity_zv, identity_ZV
38- [libpari] polintspec, polint_i
BA 39- [libpari] FF_var, FF_preimagerel
BA 40- new GP function ffmaprel
BA 41- [libpari] closure_derivn
BA 42- [libpari] walltimer_start, walltimer_delay, pari_get_histrtime
BA 43- new GP function strtime
BA 44- [libpari] Flxn_exp, Flx_Newton, Flx_fromNewton, Flx_Laplace,
Flx_invLaplace
BA 45- Support call by reference in GP function: f(~L,x)=listput(~L,x+1)
BA 46- Generic fast linear algebra using CUP decomposition
47- [libpari] nfX_to_monic
BA 48- new GP function derivn
BA 49- new GP function arity
50- new GP functions idealdown, idealismaximal
51- [libpari] bid_get_fact2
AP 52- new GP function bnrclassfield
HC 53- implement lfunmfspec in odd weight
HC 54- new GP functions ellE and ellK
55- [libpari] maxprimeN
BA 56- support for rational model in ellratpoints and hyperellratpoints
57- [libpari] psi1series
58- [libpari] constzeta
59- new GP function nfdiscfactors
60- [libpari] RgV_is_arithprog
61- fast algorithm for zeta([a + b*n | n<-[0..N]])
BA 62- ellheight(E) now returns the Faltings height of E
BA 63- lfun now allows non-integral weights
OB 64- example/parigp.sty to re-enable PARI's \pmatrix with amsmath [#2110]
IZ 65- [win32+gp-sta] support for install()
Removed
1- member functions .futu and .tufu [deprecated since 2.2]
2- inferior hash function hash_str2: use hash_str
3- matsnf: remove obsolete binary flag '2' [make it a no no-op] (cf mathnf)