-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES-2.12
670 lines (659 loc) · 35.2 KB
/
CHANGES-2.12
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
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/
Done for version 2.13.0 (released 19/10/2020):
Fixed
1- sizebyte(objects containing t_LIST): would assign size 3 to all lists
2- [Map(Mat([0, 0])), [0, 0, 1]] -> SEGV
3- zeta(I+2^(-64)) -> SEGV
BA 4- permorder returned incorrect results for large orders
5- p=[4,54]; lfunmf(mfinit(p,0), mftraceform(p,0)) -> oo loop
BA 6- printf("%5.2f",M) transposed M [#2252]
7- bnfinit instability at low accuracy. E.g., at \p38
P=x^7+22*x^6+184*x^5+764*x^4+2020*x^3+3792*x^2+5712*x+4;
bnfinit(P,1).no -> 4 times too large
8- accuracy problems in bnfisunit after bnfinit(P,1). E.g.,
P=x^7-22*x^6+169*x^5-568*x^4+1263*x^3-1506*x^2+2295*x+2;
setrand(1); K=bnfinit(P,1); U=bnfunits(K,idealprimedec(K,2));
bnfisunit(K,4*(x^2-18*x+85)/x^2*Mod(1,K.pol),U) -> error
Added
1- examples/pari.f90: example FORTRAN binding
2- [libpari] quodif
BA 3- [libpari] perm_sqr, perm_powu, perm_orderu
BA 4- asymptotically fast quadunit
Changed
1- faster intnumgaussinit + change default number of points to B/4,
suitable when b - a ~ distance to the nearest pole
BA 2- [libpari] perm_pow now take a t_INT exponent
BA 3- [libpari] permorder and perm_order now return a t_INT.
Done for version 2.12.1 (released 16/09/2020):
Fixed
BA 1- plotlines flag was ignored
2- fileopen(,"w" or "a") was bypassing the check for 'secure' default
3- bug in idealismaximal: K=nfinit(y^2+7); idealismaximal(K,[11,7;0,1])->0
4- bnfcertify did not certify correctly its argument when DEBUGLEVEL > 1
(\g 2 and above) and the computed class group was trivial (introduced
in 2002, commit d3d44841). The code was correct at \g1 or \g0, and in
all cases if the computed class group was non-trivial.
5- nfdiscfactors(nfinit([x^2+1, [1,x]])) -> wrong result (didn't support
inputs from nfinit([T, integer basis]))
6- nfinit(rnf) would produce a broken nf (not supporting
nf_get_ramified_primes)
7- [mf,F] = mffromqf([2,0;0,2]); L=lfunmf(mf,F) => wrong values
8- t=mfTheta();mfslashexpansion(mfinit(t),t,[0,1;-1,0],1,1) -> error
9- poldisc(x^4 + 8/y*x) -> type error in Q_divi_to_int [#2157]
10- T=mfTheta(); mfeval(mfinit(T),T,I/10) -> wrong sign
11- mfslashexpansion(mf,F,huge matrix,...) -> overflow
12- mf=mfinit([470,2],0);F=mfeigenbasis(mf)[7]; mfcuspval(mf,F,1/5)
-> division by 0
13- quadtofp(quadgen(-3)) -> t_FRAC component [#2158]
14- [from 2.12.0] nfgcd wouldn't terminate [#2159]
15- conjvec(t_FFELT of characteristic 2) was missing a conjugate
16- nf2 = nfnewprec(nf) could return incompatible nf2 [#2154]
17- [from 2.12.0] u_forprime_next around 2^63 could return primes larger
than upper bound
18- [from 2.12.0] gcd(2*x, 2*x+1) -> 2 [instead of 1]
19- [from 2.12.0] deriv(2/(4*x^2+1),x)->inconsistent exact division [#2162]
20- issquare(non square t_FFELT, &x) -> SEGV [#2163]
21- rdivii / rdiviiz imprecise, e.g.
a=28088408347805994933529600180306266460976;
b=10333147966386144929666651337523200000000; rdivii(a, b)
22- typo in QM_inv (wrong result)
23- modular symbols package: better type checks
24- division by 0 in Flx_extresultant when one input is 0
25- [from 2.12.0] lfunconductor(1,[]) -> SEGV
26- internal error in isprime(,1) after addprime() [#2166]
27- ZM_gauss returned incorrect result for t_MAT RHS and 0 input
BA 28- lfunhardy(..., t) with t<0 -> error
BA 29- ellweilpairing(E,P,P, odd m) -> wrong result [#2172]
PB 30- FlxqM_mul could return wrong result [#2174]
31- p = 4*vecprod(primes([3,373]))*587-1; quadclassunit(-p) -> SEGV [#2175]
BA 32- Using local in export()ed functions could crash GP
33- Flx_div_by_X_x(A, x) didn't handle deg(A) <= 0
34- M=mfinit([11,2,Mod(3,11)]); f=mfbasis(M)[1]; lfuncheckfeq(lfunmf(M,f))
-> type error
35- rare random SEGV in nfbasis [#2178]
36- missing type checks in lfunthetacheckinit [#2179]
37- idealispower(x,n,&y): y could be incorrect [#2181]
38- SEGV in idealispower [#2183]
39- inconsistencies in subst for constant polynomials: e.g.,
type(subst('u^0,u,x)) -> t_POL (was t_INT)
subst('u^0,u,Mat(Mod(1,2))) -> [Mod(1,2)] (was [1])
XR 40- factorpadic: incorrect factors (might not lift to Qp)
E.g. T=polsubcyclo(271,9); factorpadic(T,3,7)[4,1]
BA 41- polcompositum(x^2+x/3+1,x^2+x/3+1) -> SEGV
42- p=nextprime(2^20);q=nextprime(2*p);n=q*p;v=n+1;P=x^2-1;
zncoppersmith(v*P,v*n,p,p*v) --> oo loop
43- missing reduction of pr.gen in idealprimedec [ slowdown ]
+ nfmodprinit [ division by 0 ]
JR 44- polylog(-m, tiny z): catastrophic cancellation, e.g. polylog(-100,.5)
45- prodeulerrat((p-2)/(p-1)+(p-1)^(m-1)/p^m,1,3) slow and imprecise [#2192]
46- Mod(1,5) * O(x) -> O(x) [instead of Mod(0,5) + O(x)]
47- lfuninit: lfunrootres calls too expensive if rootno and polar part known
48- incorrect rounding in divrr(realprec = 3)
49- polrootsreal(x+0.) -> SEGV
DB 50- mspolygon(1,2): incorrect drawing
51- qflllgram([2,2,3;4,5,6]) -> SEGV
52- printf("%10.6f\n",2^-100) -> SEGV [#2198]
53- mfsturm: off-by-1 error
BA 54- ((x^7+x^3+x+1)*Mod(1,Mod(1,2)*d))%(x^4+x^3+x^2+1)->x^3+x
instead of Mod(1,2)*x^3+Mod(1,2)*x [#2199]
55- tan(-127336279536511925./2^49) -> completely wrong at \pb64
56- ellocalred / K != Q: wrong encoding for I0 (kod = 1 instead of 0)
57- atanh near -1: large relative error
58- acosh near 1 or -1: large relative error
59- type(subst('x^0,'y,0)) -> t_INT (instead of t_POL)
60- bnfisprincipal: overflow when h >> 1
61- lfun: Pi^s or (2Pi)^s imprecise when Im(s) >> 1
BA 62- factor((x-1)*(x-y)^2) --> oo-loop
BA 63- ellap could fail with division by 0
64- wrong results in bnfsunit [#2207]
65- problems with gequal(t_SER or t_POL with inexact coefs or constant
wrt. some variables). E.g. S=x+O(x^2);T=S+O(y); S == T -> 0 [#2188]
66- mfkohnenbijection failure [#2211]
MW 67- mateigen would sometime return eigenvalues instead of eigenvectors
AE 68- [libpari] FpX_oneroot_split could fail for deg 2 and 3.
BA 69- [pthread] Fix potential crashes when cancelling threads.
70- derivnum: add sanity checks for 'ind' [#2216]
NM 71- nfisincl(x^2-2^5,nfinit(x^4-2)) -> wrong result [#2213, #2214]
72- nfeltsign: wrong results for non-primitive elements in presence of
ramification at infinity [#2217]
HC 73- F=mfbracket(mfbd(mfEk(4),4),mfTheta(),1); mfcoefs(F,0) -> SEGV
74- gammamellininv([0, 10^-38], 3/10) -> junk
75- mfshimura, mfkohnenbijection: could create mf spaces with
inconsistent character.
BA 76- [mpi] sending t_LIST to remote nodes did not work.
BA 77- my(a,b); parvector(1,i,self()) --> SEGV
AP 78- bnrclassfield(,,2) --> sometimes relative polynomial
AP 79- nfgrunwaldwang could modify its arguments
80- ldata_vecan(an, N, prec): make sure the function returns N coefficients
81- T=Pol([1,0,6748,-750056,45535504,-2530688944,140646000784]);
bnfinit(T,1).cyc -> [240, 12, 4, 2, 2, 2] (instead of [120, 4, 4, 2])
BA 82- [mt] variable priorities in threads could be incorrect.
83- galoissubcyclo: wrong result with bnr input [#2232]
84- subgrouplist(bnr) != [] when modulus is not the conductor
85- incorrect type checks in ideallist
BA 86- polmodular(p,,q) incorrect for large q
BA 87- [pthread] polgalois(deg>7) could crash
88- forqfvec or qfminim with negative bound => crash [#2237]
89- Z_issmooth_fact: incorrectly include 1 among prime factors
90- Rg[MX]_rescale_to_int: result had a large power-of-2 content
DJ 91- sqrtn(Mod(13,112),6) -> o loop [instead of 'bad input' error]
92- addprimes() creates issues with nfdisc [wrong results], because it
breaks the assumption that a potential composite in a "bounded
factorization" has to come last.
93- addprimes() creates issues with thue [wrong results].
addprimes(360000000029);
#thue(x^2+1,500009*500029* 360000000029* 2^100) -> 0 [instead of 32]
94- factor(257377849,100) -> [61,2; 69169,1] instead of [61,2; 263,2]
95- addprimes() creates issues with nffactor [wrong results].
96- gmulsg(0, t_REAL) followed mulsr semantic (t_REAL) instead of gmul's
(t_INT). Analogous problem for gmulsg(0, t_COMPLEX)
BA 97- MPQS choice of multiplier and tuning were not optimal
Changed
1- [libpari] rename rootsof1 -> nfrootsof1
2- [libpari] rename isirreducible -> polisirreducible
3- hyperellpadicfrobenius: allow X defined over a number field and
compute Frobenius over unramified extension of Q_p
4- matsnf(integral matrix): use modular algorithm
5- rnf structure now contains the list of relative ramified primes
6- use the documented semantic for Euclidean division involving real t_QUAD
e.g. x % y is x - floor(x/y)*y; for a t_QUAD x and t_INT y, we used
to mod out y in "real" and "imaginary" part independently.
7- [libpari] rename rootpadic -> polrootspadic
8- polrootspadic: allow computing roots in unramified extension of Q_p
9- definition of lfunhardy for non-self-dual functions: remove
rootnumber, which is not well defined since it depends on the choice
of dual sequence a^*(n)
10- improved RgXn_powu / RgXn_powu_i for large valuations
11- improved ZM_ker for wide rectangular matrices
12- lfun(t_INT D): allow arbitrary non-0 D encoding the attached
primitive character coredisc(D) (as for other character formats)
13- exp(small rational number): use binary splitting
14- parsum: removed optional argument [allows grouping of subsums => faster]
BA 15- old gen_ZpM_Dixon renamed to gen_ZpM_Dixon_Wiedemann,
new gen_ZpM_Dixon with simpler interface
16- better formula for Catalan
BA 17- QXQ_div_ratlift renamed to QXQ_div
18- disallow mfeisenstein(k,chi1,chi2) when Q(chi1 chi2) is not its field
of definition
19- improved ZM_rank for rectangular matrices
20- asymptotically fast variant for RgX_translate algorithms
21- ZX_Uspensky(flag = 0) is now guaranteed to find all rational roots
22- lfunzeros: allow intervals not contained in R^+
23- removed obsolete function 'bnfcompress'
24- [libpari] rename perf -> qfperfection
25- format of bnf structure, to allow compact representations
BA 26- [libpari] Z_to_F2x(s,v): v is now a shifted variable number
AP 27- matrixqz(,-1 or -2): faster code + no longer return result in HNF
AP 28- allow nfsubfields([nf,fa],): van Hoeij-Klueners-Novocin algorithm
29- nfsubfields: retune to avoid huge inertia degrees
BA 30- qfbsolve new flag: bit 1: 1 solution, bit 2: add imprimitive solutions
BA 31- revert 2-12-0 C18: qfbsolve with default flag = previous behaviour
32- division/inversion power series: use Newton
33- deprecate LLL_COMPATIBLE (now implicitly always set)
34- bnfissunit is obsolete, use bnfisunit
35- bnfsunit is mostly obsolete, use bnfunits
36- bnfisunit and bnfissunit: torsion unit exponent is now a t_INT (used
to be a t_INTMOD)
37- support compact representation in nfeltmul, nfeltpow, nfeltdiv,
nfmodpr, nfeltsign
38- elldivpol for negative n: define f_{-n} = -f_n [ was f_n ]
39- support plotinit/plotexport even when the graphic engine is disabled
(Configure --graphic=none)
40- gpow(x,n): faster and more precise when n is a t_COMPLEX
41- faster formula for log(2)
BA 42- nfgaloisconj(deg 2 pol): swap result to follow nfroots.
BA 43- lexical variables names can now reuse builtin functions names as in
fun(theta)=my(gamma=1/3);sum(omega=1,10,exp(2*I*Pi*gamma*theta*omega)
44- mfshimura: disallow the discriminant D argument, only allow
squarefree positive t
BA 45- closures: do not copy the full context, only the accessible part
46- add optional argument to randomprime [select congruence class]
47- add optional argument to sqrtint [set remainder] [#2229]
48- gammamellininv*(A,...): allow A to be an L-function
49- bnrinit: optional argument to compute Cl_f/n, avoid tough discrete logs
50- rnfkummer: removed "all" flag, function now obsolete. Use bnrclassfield!
51- rnfconductor: flag to compute Cl_f/[K:Q] instead of Cl_f
52- bnrconductor_i is now obsolete, use bnrconductor_raw or bnrconductormod
53- dvdxxx(x,y) allow y = 0 [and return 0 unless x = 0]
54- [libpari] bnrsurjection now returns [matrix, cyc(F), cyc(f)]
55- idealstar: optional argument to compute G/G^n, avoid tough discrete logs
HC 56- zetamultall: add flag
57- subgrouplist: allow any object affording a .cyc method
58- remove zetamultinit and corresponding optional argument in zetamult
59- [libpari] ZM_lll: flags LLL_INPLACE and LLL_GRAM are now incompatible
(reducing a Gram matrix in place without returning the base change
matrix is not useful; supporting it would complicate the code)
AP 60- improve bnfisprincipal in fields of large degree (test more small
elements)
61- bnrgaloismatrix(bnr) no longer needs a bnr with generators
(from bnrinit(,1))
62- bnrisprincipal(bnr,1) no longer needs a bnr with generators
(from bnrinit(,1)). Added flag 4 analogous to bnfisprincipal (compact
representation of principal part)
63- added sanity checks when parsing default args in 'install' prototypes
64- improved zetahurwitz: faster & use less memory
BA 65- MPQS does not use temporary files anymore
Added
1- new GP function rootsof1
BA 2- [libpari] F2xqX_halfgcd, FFX_halfgcd
3- [libpari] uis2psp, uispsp
4- [libpari] ZV_lcm
5- [libpari] nfhyperellpadicfrobenius
6- [libpari] rnf_get_ramified_primes
7- allow nfinit([T, basis, ramified primes])
8- allow nf.p, rnf.p [rational ramified primes]
9- [libpari] idealfactor_partial
10- add flag bit to ZM_snfall_i
11- allow real t_QUAD in floor, ceil, divrem, %, \, \/
12- [libpari] ff_parse_Tp
13- new GP function mfisetaquo
14- [libpari] Qab_tracerel, QabV_tracerel, QabM_tracerel
BA 15- [libpari] RgXV_to_FlxV, FlxV_Flv_multieval,
F2v_and_inplace, F2v_negimply_inplace, F2v_or_inplace,
F2v_hamming
16- [libpari] ZpX_primedec
BA 17- [libpari] QM_sqr, FqC_to_mod, ZXQX_gcd, QXQX_gcd
18- [libpari] radicalu
19- parallel support for lfuninit
20- new GP function parplothexport
BA 21- [libpari] gen_ZpM_Newton, ZpM_invlift
BA 22- [libpari] F2xn_red, F2xn_inv, F2xX_to_F2xC, F2xXV_to_F2xM
HC 23- direct formulas for quadratic Dirichlet L-functions at integers
24- new GP functions: eulerfrac, eulerpol, eulervec
25- [libpari] lfunquadneg
BA 26- [libpari] vecvecsmall_sort_inplace, vecsmall_isconst, vecsmall_is1to1
BA 27- [libpari] groupelts_quotient, quotient_groupelts, groupelts_to_group
28- new GP functions mscosets, msfarey
29- new GP function ellpadiclambdamu
BA 30- [libpari] Flx_Fl_sub, Flx_is_totally_split, Flxq_autpowers
31- [libpari] Flx_translate1_basecase
32- [libpari] Vgaeasytheta
BA 33- [libpari] RgV_type, RgV_type2, closure_callgen0prec
BA 34- lfuncreate: support for closures of arity 0
35- [libpari] ZX_sturm_irred, ZX_realroots_irred
36- [libpari] QM_image, QM_image_shallow
37- new GP function asympnumraw
38- [libpari] QM_gauss_i, SL2_inv_shallow
39- [libpari] checkfarey_i
40- [libpari] mspadic_parse_chi, mspadic_unit_eigenvalue
41- [libpari] ellQtwist_bsdperiod
42- [libpari] mseval2_ooQ
43- [libpari] etaquotype
44- new GP functions fft, fftinv
BA 45- [libpari] init_Flxq
46- compact representation of units in bnf (bnfinit(pol,1)) and of
principal ideal generators (bnfisprincipal(bnf,id,4))
47- [libpari] Flv_factorback, FlxqV_factorback, famatV_zv_factorback,
famatV_factorback, FqV_factorback
48- [libpari] nflogembed, nf_cxlog, nfV_cxlog, ZMrow_equal0, ZC_u_divexact
BA 49- [libpari] FpXn_expint, Flxn_expint, Flx_blocks, FlxX_blocks
50- [libpari] bnf_get_sunits, nfsign_tu, nfsign_fu, ideallog_units,
sunits_makecoprime, famat_remove_trivial, bnf_build_cheapfu,
bnf_compactfu, bnf_compactfu_mat, bnf_has_fu, famat_idealfactor,
famat_div, famat_nfvalrem
BA 51- [libpari] factorial_Fl, factorial_Fp, FpV_prod
BA 52- [libpari] ZX_compositum
BA 53- [libpari] FlxXn_red, FlxqXn_mul, FlxqXn_sqr, FlxqXn_inv, FlxqXn_expint
BA 54- [libpari] FlxX_Laplace, FlxX_invLaplace, FlxqX_Newton, FlxqX_fromNewton
55- [libpari] vec_reduce, vec_equiv
56- lfuncreate(znstar or bnr,): allow a vector of characters =>
vector-valued L-function
57- [libpari] gc_const
AP 58- [libpari] QM_ImZ, QM_ImZ_all, QM_ImQ, QM_ImQ_all
BA 59- [libpari] RgXn_expint, FpXQXn_expint, FqX_expint
AP 60- new GP functions nfsubfieldscm, nfsubfieldsmax
BA 61- new GP function lfunshift
62- [libpari] Q_lval, Q_lvalrem
BA 63- [libpari] ZXX_evalx0, zx_z_divexact, zx_lval, upowers
64- [libpari] is_qfb_t
65- new GP function eulerianpol
BA 66- [libpari] FlxX_translate1, zlx_translate1, zlxX_translate1
67- [libpari] rfracrecip
68- [libpari] ZXQ_minpoly
69- [libpari] bnrchar_primitive_raw
70- new GP functions matreduce, bnfunits
BA 71- [libpari] QXQ_to_mod_shallow
72- [libpari] nf_cxlog_normalize
BA 73- [libpari] cmpss, cmpuu
BA 74- [libpari] FpX_Fp_div, FpX_divu
BA 75- holes in multi-assignement: [a,,c]=[1,2,3]
76- [libpari] expIPiR, expIPiC
BA 77- [libpari] forqfvec1, pariplot, sumdivmultexpr
78- [libpari] powPis, pow2Pis
BA 79- nfisincl: new flag: return a single embedding
BA 80- [libpari] FpXC_to_mod, FpXM_to_mod, FqXC_to_mod, FqXM_to_mod
BA 81- [libpari] FFX_add, FpXY_FpXQ_evaly
BA 82- [libpari] halfgcdii, RgX_halfgcd
BA 83- new GP function halfgcd
BA 84- [libpari] pari_realloc_ip
BA 85- [libpari] random_zv, F2m_transpose, F2m_row
BA 86- [libpari] F2Ms_ker, F2Ms_colelim, F2Ms_to_F2m, F2m_to_F2Ms
87- [libpari] Qdivis, Qdiviu
88- [libpari] bnr_subgroup_check
89- [libpari] pow2Pis, powPis
AP 90- [libpari] bnrisprincipalmod, ideallogmod
91- [libpari] bnrconductor_raw, bnrconductor_factored
92- [libpari] cyc_get_expo
93- new GP function bnrmap
HC 94- new GP function polylogmult
95- new GP function zetamultdual
96- [libpari] checkbnr_i
97- [libpari] absZ_factor_limit_strict
98- [libpari] Idealstarmod, ZV_snf_gcd, ideallog_units0
BA 99- [libpari] FqC_FqV_mul
100- [libpari] gen_sort_shallow, vecvecsmall_sort_shallow
BA 101- new GP functions foreach, parforprimestep, parforeach
BA 102- [libpari] ZXQ_powers, ZXX_Q_mul, QXQX_mul, QXQX_sqr, QXQX_powers
BA 103- [libpari] Kronecker_to_ZXQX, QXQX_QXQ_mul, ZXQX_ZXQ_mul
104- [libpari] zv_sumpart, div_content, hash_zv
BA 105- [libpari] groupelts_conj_set, group_subgroup_is_faithful
106- qflll(x,3) in place reduction: return x * qflll(x) [faster]
107- [libpari] idealpseudominvec
108- [libpari] galoismatrixapply
BA 109- new GP function permcycles
BA 110- [libpari] FpX_FpXV_multirem, FpXV_chinese
BA 111- galoisinit: support for group (3x3):4 (GAP4(36,9))
BA 112- [libpari] minim_zm
113- new GP function dirpowerssum
114- [libpari] vecfactorsquarefreeu_coprime
BA 115- [libpari] nfX_disc, nfX_resultant
BA 116- new GP function lfundual
117- [libpari] RgM_ZM_mul
Removed
1- obsolete function rootsof1_kannan: use nfrootsof1
2- obsolete function checkbnrgen: use bnr_get_gen
Done for version 2.12.0 (released 01/06/2019):
Fixed
1- memory leaks due to the use of varhigher/varlower
2- memory leak on error in plots
3- memory leak on error in newtoncharpoly
4- heap-buffer-overflow in init_prefix [readline]
5- mfsplit(mf,,flag) could return uninitialized objects => SEGV
6- mfeisenstein(k,,chi) was treated as E(k,chi) instead of E(k,1,chi)
7- poldegree(y/x) -> 0 [ instead of -1 ]
8- sumeulerrat(y/x^2,1) -> junk
HC 9- incgam(-1000.4,2) -> SEGV
10- mfatkininit(mfinit([366,2]),2) -> precision error
11- forprimestep: wrong when wrapping word boundary (2^32 or 64) [#2071]
12- mfbracket: [f,g]_m was multiplied by (-1)^m
13- wrong results in mfatkininit / mfatkineigenvalues due to insufficient
precision [#2073/#2074]
14- issquare(Mod(x,ffinit(3,2))) -> wrong result [broken Fq_ispower]
15- possible SEGV in rnfpseudobasis(, [pol,lim])
16- wrong result in elllog over F_p, p in [2^63,2^64[
p=13824553909862352061; A=8953655473130154624; B=9775907253961339458;
P=[6444058885176327583,7963649599850249187];
E=ellinit([A,B],p); Q=ellmul(E,P,2);
elllog(E,Q,P) -> 0 [ Flj_mulu_pre would not accept n >= 2^63 ]
17- wrong result in mfsymboleval when path extremities are close to real
axis (cusps were OK) [#2075]
18- mfcoefs(mfDelta(),0) -> SEGV [#2078]
19- GC error in lfuncreate(elliptic curve over number field) [#2080]
20- X11 and Qt graphic engine: pari_close called too soon => crash
21- pariold.h: mix up with obsoleted taille / taille2
BA 22- foo(n)=vector(n)[1..n];123; would corrupt the GP interpreter [#2081]
23- Pol(0)/'x -> t_INT 0 (instead of 0*x^0)
Pol(0)/(Mod(1,2)*'x) -> t_INT 0 (instead of Mod(0,2)*x^0)
24- missing typecheck in nfalgtobasis [#2084]
25- dbllog2(t_COMPLEX of t_FRAC) => junk
26- nffactor(t_POL, t_POL) => bug in LLL_cmbf [#2083]
27- ideallog(pure archimedean conductor, t_FRAC) -> log(0) error
28- lfunrootres: avoid oo-loop
29- mfgaloistype: dihedral forms possibly incorrect for N > 3000
30- mfgaloistype: error on mf=mfinit([1159,1,Mod(930,1159)],0);
31- incorrect accuracy in limitnum / asympnum for alpha != 1
32- missing GC in polint_i
33- hash_GEN(x) returned different values depending on whether x was a clone
BA 34- [mpi] setting nbthreads in .gprc could lead to crashes.
35- accuracy too large in derivnum => slowdown
36- nfisincl(x^5-x^4+x^3-2*x^2+3*x-1,x^20+x^15+x^10+x^5+1) -> SEGV
37- stack corruption in addsub_frac
AP 38- segfault in rnfidealup [#2093]
39- Ser(x,x,0) -> error instead of O(x) [#2092]
40- fix mspolygon(,2) [add 1/3rd hyperbolic triangles + fix labels]
41- factor(3/(x^5+3*y*x^4+3*y^2*x^3+y^3*x^2)) -> SEGV
42- output from bnfcompress() mistaken for rnf and vice-versa
43- catastrophic cancellation in acosh / asinh for large t_COMPLEX
44- zeta(1/2 + I*t) => internal error
45- cos(z) and sin(z) imprecise when Im(z) is nonzero but tiny
BA 46- hyperellcharpoly: wrong results over Z/3Z
47- gmp kernel: off-by-1 error in red_mongomery [read uninitialized
memory, then ignores result]
48- intnuminit([-1,-1/2],[1,-1/2]) twice slower than it should
49- forcomposite(n=2,4,print(n)) -> empty [#2096]
50- relative extension of degree 1 was not properly supported in
rnfidealprimedec and rnfidealup
51- mfmul(f,g) created invalid forms when f (resp. g) had Nebentypus chi
(resp. chi') and Q(chi * chi') != Q(chi) or != Q(chi')
[analogously for mfpow, mfdiv, mfbracket]
52- let [N,k,chi] = mfparams(f); f had coefficients in Q(chi)
[or an extension thereof for eigenforms] but the values obtained
from znchar(chi) and chareval were incompatible with mfcoefs when
order(chi) = 2 (mod 4) [same cyclotomic field but different
cyclotomic polynomial]
FB 53- [Configure] library not found despite --with-readline-lib [#2097]
54- besseli, besselj, besselk, besseln(nu, z): use asymptotic expansion
for large z [#2006]
55- minpoly(Mod(1,t^2)) -> SEGV [#2102]
56- a=ffgen(3^2,'a);poldisc(x^6+a*x+y) -> division by 0 [ positive
characteristic with a few t_INT coefficients ]
57- intnumgaussinit(n) actually used 2*ceil(max(4,n/2)) quadrature points
BA 58- [pthread] parapply could crash
BA 59- ffinvmap(m) could SEGV on bad input
60- ellisdivisible(E/K number field in 'x) -> incorrect priority[#2106]
61- idealispower(nf, t_INT n) possibly wrong if (n, nf.disc) > 1
62- zeta''(0): all precision lost [more generally f'...'(n quotes)
imprecise in the neighbourhood of 0, while derivnum(,n) was OK]
63- sumdigits(negative number, B) sometimes negative
64- poldiscfactors(x^0) -> division by 0
65- factormod(x^3+1,[y^2+1,2]) -> SEGV
66- factormod(x^3+1,[y^2+1,5]) -> weird error message
67- besseljh(huge n, z) -> junk
BA 68- [pthread] localbitprec was not exported to threads
BA 69- fix inefficiency in fplll not present in original code
70- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/2000,[1/100,oo]): no root [#2112]
71- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/1000,[1/10,oo]): extra root [#2112]
72- lfun may crash on lfuncreate input with too short an vector [#2118]
BA 73- incorrect use of graphcolors -> SEGV
74- forcomposite(..., oo, ) was not supported
BA 75- lfunartin with poles: incorrect result
JD 76- factor: significant pointers lost [#2125]
BA 77- matdet/matrank over large fields was inefficient
78- poldisc(y^2/x + 1, y) -> error [also affects polresultant]
79- poldisc(x^2/y + 1, y) -> 0 [also affects polresultant]
80- ispower(2, 2^64) -> error
81- (f(x) = x*'y); f'(1) -> error
BA 82- sqrtn(Mod(3,19),4) -> no error [#2127]
83- nfhnfmod: wrong result
84- matdet(mat with t_RFRAC entries): wrong result [#2128]
85- n-th derivative of zetahurwitz used 'seriesprecision' instead of n
+ imprecise value when n large [#2130]
86- lfunzeros(f, [0, b]) wasn't allowed
87- mateigen(): typo causing wrong results when correct results were
achievable [#2131]
88- intnum(x=-oo,[0,-1/2],1/sqrt(-x*(x^4+1))) -> division by 0
89- eint1(large x > 0) didn't use asymptotic expansion [#2129]
90- printtex(quadgen(-3,'z)) ==> w
BA 91- [a,b]=a could lead to memory corruption
92- memory leak in cgetalloc when lg overflows
93- possible SEGV in padicappr [#2133]
94- zeta(small even integer) was very slow at large accuracy
95- core() could destroy its input, if stored in a GP variable
BA 96- (f(x, y = 1) = x*y); f'(1) returned 0
97- quadgen(2^64+1) * 1. => junk (stack corruption in quad_disc).
98- ellmoddegree: infinite loop and stack corruption (e.g on 52a2)
99- ellmoddegree(ellinit("10890ba6")) -> wrong result
100- nfgcd called ZX_resultant(a,T) with typ(a) == t_INT
101- random SEGVs in bnfinit with large fundamental units [#2139]
(due to fundamental units computed via floating point approximations
rounding to 1 or -1)
102- qfisom([16,6;6,10],[4,3;3,10]) was not 0. [#2140]
103- mfeval: wrong result when level of form and space didn't match [#2134]
BA 104- nfisincl(x^3+9,x^6+2187): wrong result [#2144]
105- ispower(27,2^60) -> SEGV [#2145]
BA 106- matsolve(M,vector(n)) could return result of wrong dimension
107- [Windows] no longer crash on deep recursion [#2105]
108- factor(Mod(x^3 + x + y^2,2)) -> oo loop [#2148]
Changed
1- [libpari] gp_filter return value is now allocated on the stack
[was undocumented, malloc'ed and resulted in memory leaks]
2- improved n!, factorial(n), lngamma(n) and psi(n) for integral n
3- improved bernvec: no longer Obsolete
4- [libpari] mpbern is now obsolete: use constbern
5- rewrote the Bernoulli number cache (using zeta(2n) = * B_{2n})
and power recycling for zeta(2n) + additive Clausen von Staudt):
orders of magnitude faster and always store Bernoulli in rational form
BA 6- [libpari] ZpX_ZpXQ_liftroot_ea: change interface for 'early'
7- bnf.fu: return '0' if bnf does not contain the fundamental units (was an
error)
8- support ?? _+_ and friends [extended help for specific operators
instead of redirecting to "GP operators"]
9- support ?? _op=_ and ?? op=; support ?? _++ and friends
10- x ^ t_FRAC: return an exact result if possible; e.g. 4^(1/2) is now 2
HC 11- gamma(t_FRAC) and lngamma: use direct formula when denom | 24
12- serlaplace(scalar) -> return the scalar (understood as a constant
polynomial) instead of raising an exception [#2082]
13- implement hyperu for arbitrary complex parameters
14- extend lex() to allow complex numbers
15- lfunconductor(L, [a,b]) no longer supported to look for conductor in
interval [a,b]; implement lfunconductor(L, list of potential N) instead
16- renamed GP functions Strchr -> strchr (pari_strchr in libpari),
Strexpand -> strexpand, Strprintf -> strprintf, Strtex -> strtex
17- [help] move str* functions from "conversions" to "programming" section
BA 18- qfbsolve now returns a vector of solutions.
19- limitnum / asympnum: remove useless optional parameter 'muli/k'
[now implicitly set to 1, not to 20]: just extrapolate u(muli*n).
20- improve rdivii / rdiviiz [ use divri which may use divri_with_gmp ]
21- mfparams now returns [N,k,CHI,space or P, Phi] where Phi is the
cyclotomic polynomials defining the field of values of CHI
22- inline / uninline are now obsolete, use export/unexport
23- let localprec(p) accept non integral real p [replace by ceil(p)];
same for localbitprec.
24- let precision(x,p) accept non integral real p [replace by ceil(p)];
same for bitprecision.
25- besseln is now obsolete, use bessely
26- [libpari] precision0 / bitprecision0 (meant to implement GP-specific
commands, not for library use) are now obsolete. The new equivalent
commands (still not meant for library use) are precision00 and
bitprecision00.
27- improve intnumgaussinit (use direct Newton instead of polrootsreal)
28- improve sumeulerrat / prodeulerrat
29- factor(x, D), D now encodes the domain over which to factor
30- allow listinsert(L, x, n) for n > #L, like listput
31- allow forsquarefree(n = a, b) with a*b < 0
32- allow L[a..b] and L[^i] for t_LISTs
BA 33- gen_factorback: change argument order to match other functions
34- polinterpolate(X,Y,t,&e): e is now more precisely defined and the
error estimate is given as a binary exponent; compared to the value
dy returned up to this change, we have e = exponent(dy).
35- suminf is now sensitive to bit precision. In library mode, use
suminf_bitprec (precision in bits) rather than the historical suminf
(precision in words)
36- RgV_polint: use (asymptotically fast) FpV_polint over Fp
BA 37- [libpari] pari_add_hist now take 3 arguments (data, cputime, realtime)
BA 38- # and ## now also display the realtime when nbthreads is not 1
39- gp_format_time: remove trailing ".\n" from formatted string
BA 40- GP: arguments of the parser code W can start with ~ for clarity, e.g.
listput(~L,x), mapput(~M,x)
BA 41- GP: the argument of a user member function is now a reference
42- make ellheight(E, torsion point) return an exact 0 [#2109]
43- allow rnfdisc(k, polynomial with non-integral coeffs)
44- allow rnfconductor(k, non-monic polynomial)
45- poldisc(t_COMPLEX) now raises an exception (used to return -4)
46- rnfdisc(nf, [T,B]) allow B a list of primes and maximal ideals
(same for rnfbasis, rnfinit, rnfconductor, rnfpseudobasis)
47- ??? include double quotes when needed (e.g. ???conductor) [#2122]
48- improved the prime() function
49- mpeint1: support all t_REAL x != 0 (was x > 0)
LGr 50- nffactor now supports rational functions
51- improve QM_gauss [treat contents sensibly]
52- lngamma and psi near 1: cache values of zeta(odd integers)
53- [libpari] nfbasis prototype changed: 3rd argument listP is gone, use
nfbasis(mkvec2(T,listP), &disc). Note that the documentation was
incorrect: it is not guaranteed that nfbasis([T, listP]) returns the
maximal order even if listP contains all prime divisors of the field
discriminant. See ??nfbasis
54- nfbasis now accepts an optional argument &dK [order discriminant]
55- mffromlfun: support forms of half-integral weight (e.g. from lfunqf)
BA 56- [libpari] FF_Frobenius: return the image of the standard generator
57- faster poldiscfactors()
58- when 'log' is turned on, explicitly output the logfile name
Added
1- [libpari] nonsquare_Fl
2- [libpari] set_avma
BA 3- [libpari] FpXC_FpXQ_eval
4- [libpari] mulu_interval_step
5- new file src/basemath/bern.c
6- [libpari] divisorsu_moebius
7- [libpari] ZXQ_powu
8- new GP functions hypergeom, airy
9- [libpari] gc_bool, gc_double, gc_int, gc_long, gc_ulong, gc_NULL
10- new GP functions strsplit, strjoin
11- new file src/basemath/str.c
12- [libpari] has_str_len
BA 13- qfbsolve(Q,n) now support arbitrary integer n.
14- [libpari] divisorsu_fact_factored
15- [libpari] qfiseven
16- [libpari] zv_cyc_minimize, zv_cyc_minimal
17- limitnum/asympnum: allow closures of the form N->[u(1),...,u(N)],
which allows to handle efficiently sums, recursions, continued
fractions, etc.
BA 18- new GP function polteichmuller
BA 19- [libpari] Flx_Teichmuller, F2x_Teichmuller
20- [libpari] mpsinhcosh
21- new GP function dirpowers
BA 22- [libpari] F2xqX_resultant, F2xqX_disc, FlxqX_resultant, FlxqX_disc,
FpXQX_resultant, FpXQX_disc, FFX_resultant, FFX_disc
BA 23- FFX_gcd, FFX_extgcd
24- optional flag to pollegendre and polhermite
25- new GP function pollaguerre
BA 26- [libpari] Flxn_red, Flxn_sqr, Flx_integ
BA 27- new GP functions export, unexport, exportall, unexportall
28- [libpari] Fp_divu
BA 29- [libpari] ZpXQX_liftroots
30- new GP functions getlocalprec, getlocalbitprec
31- [libpari] guncloneNULL, gluncloneNULL_deep
32- allow subst(e, x, vector v) for vector(subst(e, x, v[i]))
33- [libpari] pollegendre_reduced
AP 34- new GP function mfgaloisprojrep
35- optional v argument to nfmodprinit
36- [libpari] rfrac_deflate, rfrac_deflate_order, rfrac_deflate_max
37- [libpari] identity_zv, identity_ZV
38- [libpari] polintspec, polint_i
BA 39- [libpari] FF_var, FF_preimagerel
BA 40- new GP function ffmaprel
BA 41- [libpari] closure_derivn
BA 42- [libpari] walltimer_start, walltimer_delay, pari_get_histrtime
BA 43- new GP function strtime
BA 44- [libpari] Flxn_exp, Flx_Newton, Flx_fromNewton, Flx_Laplace,
Flx_invLaplace
BA 45- Support call by reference in GP function: f(~L,x)=listput(~L,x+1)
BA 46- Generic fast linear algebra using CUP decomposition
47- [libpari] nfX_to_monic
BA 48- new GP function derivn
BA 49- new GP function arity
50- new GP functions idealdown, idealismaximal
51- [libpari] bid_get_fact2
AP 52- new GP function bnrclassfield
HC 53- implement lfunmfspec in odd weight
HC 54- new GP functions ellE and ellK
55- [libpari] maxprimeN
BA 56- support for rational model in ellratpoints and hyperellratpoints
57- [libpari] psi1series
58- [libpari] constzeta
59- new GP function nfdiscfactors
60- [libpari] RgV_is_arithprog
61- fast algorithm for zeta([a + b*n | n<-[0..N]])
BA 62- ellheight(E) now returns the Faltings height of E
BA 63- lfun now allows non-integral weights
OB 64- example/parigp.sty to re-enable PARI's \pmatrix with amsmath [#2110]
IZ 65- [win32+gp-sta] support for install()
66- [libpari] setunion_i
BA 67- [libpari] hash_init, hash_init_ulong
BA 68- [libpari] FFXQ_minpoly
BA 69- [libpari] F2x_recip
70- [libpari] RgV_isin_i
Removed
1- member functions .futu and .tufu [deprecated since 2.2]
2- inferior hash function hash_str2: use hash_str
3- matsnf: remove obsolete binary flag '2' [make it a no no-op] (cf mathnf)