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 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929
|
# $Id$
Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/
Done for version 2.7.0 (released 21/03/2014):
Fixed
1- e = ellinit(E over Qp); ellztopoint(e, 3) --> SEGV
2- thue((x^2+1)^2*(x^2-2),-4) --> missing solutions [+-1, +-1]
BA 3- spaces in directory names were not supported
4- silent overflow when inputing t_REAL of huge exponent [#1526]
5- zeta(2+10^-101*I) -> overflow
6- RgX_mullow(f,g,n) could return a result of degree n (instead of < n)
Same with RgX_sqrlow
7- ellrootno(E) could lead to a SEGV [#1527]
8- issquare(Mod(3,22)) -> 0 [#1528]
JD 9- polcyclo(5, Mod(-1,3)) was the negative of correct value
JD 10- elltors(ellinit("90c3")) returned Z/12 but a generator of order 6
11- thue(thueinit(x^3-x-1),1578191) => oo loop [#1532]
12- catastrophic cancellation in eint1 (x moderately large)
13- SEGV in ellweilpairing [#1535]
14- factor(Mod(1,2)*Pol(1)) -> [Mod(0, 2) 1]
15- Mod(Pol(0), 2) -> 0, instead of Mod(0,2)
16- QXQ_to_mod was called with t_POLMOD arguments
17- ellwp(E, 'z) had stopped working for E not defined over C
18- nfdisc(T, t_MAT=partial discriminant factorization) => corruption [#1542]
19- norm(Mod(z,T)) where z is not a t_POL or in a different variable than T
=> wrong result [#1539]
20- polresultant(Pol(Mod(0,2)), x) -> 0 instead of Mod(0,2)
21- nffactor(T, pol) possibly wrong results when nfinit(T) is not rigorously
computed [#1545]
22- gmodgs(t_POLMOD,): incorrect implementation
BA 23- library functions Fp_pow/Fp_pow mishandled negative basis
24- gcd(1/(2^64*y),Mod(x^2,2^64*x^3)) --> inconsistent gcd [#1541]
25- matadjoint([x,0,0;0,0,0;0,0,0]) => wrong variables [#1547]
26- ellordinate(e, exact t_COMPLEX) => either a wrong result (no solution)
or a solution computed at an incorrect accuracy (DEFAULTPREC) [#1548]
27- weber(1.0*I,1) => SEGV [#1549]
28- primepi(2^32) => oo loop [on 32-bit machine]
29- primepi(N >= 2^32 or 2^64) off by 1
JD 30- [libpari] initprimetable(2^20): infinite recursion
31- very inefficient div_rfrac_pol() [#1537]
32- polresultantext(x+1,x^2) -> [-# + 1, 1, 1]
33- for(i=a, b, ) where a < 0, b < 0 : go through wrong indices if #a != #b
34- printf("%1.2f",Mat([1.,2.])) -> SEGV [#1550]
Added
BA 1- library functions FlxX_to_FlxC, FlxXV_to_FlxM, polx_FlxX
BA 2- library function Flx_lead
3- library function RgV_to_RgM
Done for version 2.6.2 (released 30/01/2014):
Fixed
1- eulerphi(t_INT factorization) corrupted the input
BA 2- 8bit chars were interpreted as end of input
3- Bernoulli numbers were no longer cached [2.6.0]
4- typo in Brillhart, Lehmer, Selfridge primality test [#1467]
5- [Configure] confusing error messages when C compiler doesn't work
6- scalar + t_SER = 0 => wrong valuation (1+O(x)-1 => O(x^2))
BA 7- squaring of t_REAL was not faster than multiply
8- 1+O(2^(2^18)) => O(2^0) (silent overflow)
PB 9- Mod(1, 2) - Mod(2, 4) => Mod(-1,2) [#1469]
10- memory corruption in subgrouplist: e.g. subgrouplist([53835600, 29], 5)
11- SEGV in zncoppersmith (when auxilliary polynomial was non-monic)
12- division by 0 in Fl_ellcard_Shanks [2.6.1, #1474]
13- ellwp([1,I]) -> stack overflow [2.6.0]
14- sumdedekind(h < 0, k < 0) wrong result; if gcd(h,k) > 0 as well
15- galoisexport(G, 1) -> SEGV
16- ??default(log) no longer worked
17- rnfalgtobasis, rnfbasistoalg, rnfeltup, rnfeltdown, rnfeltabstorel,
rnfeltreltoabs were not treating their inputs consistently, and
accepted (or crashed on) too many incorrect inputs.
18- rnfideal* did not handle correctly the 0 ideal
19- rnfidealtwoelt(non integral ideal) => crash
20- nfeltreducemodpr(K, non invertible elt mod pr,...) => wrong result
(now an e_INV error)
21- rnfbasis: wrong result due to a mistake in gen_if_principal
[2.6.0, revert d62f0de01]
22- nfsolvemodpr(nf,a,b,P): a must be invertible, as in matsolve
(was not documented, used to SEGV). Raise an error if not.
23- various bnrdisclist crashes
24- bnrclassno(bnf, prime ideal) -> SEGV
25- forpart(x=k,) raised an exception if k < 0 [ now empty loop ]
26- deriv(constant) now returns 0 in the base ring (not gen_0).
27- inconsistencies and mistakes in deriv / intformal of t_POLMOD: forbid
integration wrt the main variable of x.mod, deriv(Mod(x, x^2),x) was
Mod(1,x^2) and deriv(Mod(y,x^2),y) was 0 instead of respectively 0 and
Mod(1,x^2)
28- idealchinese with t_POLMOD inputs -> input error
29- idealchinese with denominators -> SEGV
30- qflll(Mat(0)) returned Mat(1)
31- infinite loop in sumpos: sumpos(n=1,-log(cos(1/n))) [#1481]
BA 32- doing allocatemem in the break loop would corrupt the new break loop
33- relative error in eint1 was larger than expected
34- select(t_LIST,,1) [ indirect select ] didn't work
35- vecsort(List(),,4) -> SEGV
36- factorpadic / polrootspadic lost accuracy when converting output from
integers to t_PADICs (factorpadic(t^2 + 3^5, 3, 5) -> irreducible factor
(1 + O(3^5))*t^2 + O(3^5)*t + O(3^0)
37- Mod(0,0) is no longer valid => division by 0 (as Mod(x,0) for x != 0)
38- RgX_to_RgV no longer accepts other types than t_POL. Use Rg_to_RgV for
a more permissive function
39- broken Fq_sqrt when T != NULL and t_INT input
40- ispower(1009^11) -> 0 [2.6.0]
41- ellinit([0,1,1,0,1],2).group -> SEGV
42- nfroots(nf, deg 1 polynomial) -> wrong result
43- Configure --time=ftime: wrong reported timings
44- mateigen(rational matrix): inconsistent concatenation [#1489,2.6.0]
45- polroots(): wrong accuracy of (real) 0 components
46- randomprime(2) -> SEGV [#1493, 2.6.0]
47- forqfvec(v,[;],0,) -> SEGV [#1495]
48- poliscyclo(x^0) -> 2
49- truncation (precision) errors in bnfnarrow [#1491]
50- matadjoint assumed that n! is invertible. If this is not the case, now
use a safe algorithm
51- leading coefficient of elldivpol ignored the characteristic,e.g.
E=ellinit([a1,a2,a3,a4,a6*Mod(1,2)]); elldivpol(E,2)
52- gcd involving a t_FFELT -> SEGV
53- oo loop in ispower for huge arguments / oo loop in prime iterator
in congruence classes [#1498, 2.6.0]
54- L=[1,2,3]; apply(x->L=x,L) -> SEGV ( idem select and [|x<-] operators )
55- (k+1.)/k - (2*k+1.)/k -> incorrect object
56- gcd(x,0.) -> 1 but gcd(x,Pol(0.)) -> x [ the former is correct, since 0.
is inexact and may represent an arbitrary small non-zero real number ]
57- eint1 misbehaved at large precision [#1499]
58- polredbest(T,1) incorrect if T non-monic or degree 1
59- nfcertify might miss a factor to be certified, e.g.
P=polcompositum(x^4+437*x+19,x^5-571*x+27)[1];
nfcertify(nfinit(P, [2,3,5])) was empty
60- polresultantext(t_POL in y, t_POL in y,y) -> U/V as t_POL in x [#1509]
61- inconsistent handling of t_POL "divided by" scalar among the variants
of Euclidean division (%, divrem, \, ...). E.g. x % 2 is OK, but
x % Mod(2,3) was not. We now follow the semantic of
grem/gdeuc/poldivrem: a scalar is understood as a t_POL of degree 0
in the proper variable [#1510]
62- incorrect rounding in mulur
BA 63- Configure: --includedir was ignored
64- add GC in RgV_dotproduct / RgV_dotsquare
65- ZX equal was checking variables, contrary to the spirit of the
specification (and contrary to RgX_equal). Specify behaviour properly:
none of the internal .*[xX]_equal function check variable numbers.
66- arithmetic functions did not accept factorizations of negative integers
(whereas most of them are defined for negetive integers)
BA 67- Configure --time=ftime actually tested times, not ftime. Remove ftime
from the default list of timer functions (reports wallclock time, not
CPU time) [#1523]
68- polredabs() could (find then) forget some polynomials [#1511]
69- poldisc(x^3 + Mod(2,3)*x^2) --> e_INV
70- (Mod(4.,y^2+1)*(1 + O(x)))^(1/2) -> junk (= [2.0+O(x)),2.0+O(x)]~).
Worse if other t_POLMOD coefficients. Now exception.
71- sin(O(p)) returned 1+O(p) instead of O(p)
Changed
1- default help text for a user function is now as in \u:
fun =
(args)->body
2- after addhelp(f,...), ?f no longer include default help text for a
user function (function code). Type 'f' to see the function code.
3- primes([a,b]) now returns the primes in the interval [a,b]
4- install: add symbol name in library and GP prototype to default help
5- the rnf structure format
6- library functions: rename rnfelementxxx -> rnfeltxxx,
rnfidealhermite -> rnfidealhnf
7- allow mathnf(t_VEC) [ apply Mat() automatically ], gives acces to the
ZV_gcdext() routine.
8- mathnf(,2) (generic vs integral t_MAT) is deprecated: we always test
the matrix entries and choose the appropriate routine
9- bnrclassno: allow all standard ways to define class fiels (A,B,C),
not only bnf + module
10- bnrinit(bnf,f): allow using idealstar(bnf,f) in place of f
11- Let Set(t_VECSMALL v) behave as Set(Vec(v))
12- ffgen(T) now checks whether T is squarefree (testing for
irreducibility is too expensive)
13- variable() no longer raises exceptions: if no variable can be
associated to the object, return 0. Thus "if (!variable(x), )" may be
used to test whether x has a "variable".
JD 14- polcyclo(n, x) now works for all roots of 1
15- quadpoly no longer accepts vector/matrix arguments, see 2.6.0,C94
16- [libpari] renamed ZM_hnfremdiv -> ZM_hnfdivrem
17- x t_REAL * y t_INT: either convert y to t_REAL (as before) or use
integer multiplication (if lg(x) >> lg(y))
18- GP: all results are now stored in GP history, together with the time
to obtain them [ we used to only store non-gnil results, and no timings ]
19- chinese(t_POL,t_POL): allow polynomials of different degrees
20- deplin(): use FpM/Flm/F2m routines if possible (like all other generic
linear algebra routines)
21- FpM_gauss(a,b,) from modular kernel no longer allow all types of input:
split into FpM_FpC_gauss (b t_COL) and FpM_gauss (b t_MAT). Same for
all modular xxx_gauss functions
22- O(1/x^2) --> error [ now equivalent to O(x^-2) ]
23- faster evaluated polhermite/pollegendre
24- polhensellift / ZpX_liftfact: use quasi-linear ZXX_mul_Kronecker instead
of RgX_mul (~ Karatsuba)
25- [libpari] renamed gcmpX -> gequalX
26- [libpari] renamed ordred -> polredord
27- the prid structure returned by idealprimedec: the anti-uniformizer
tau (pr_get_tau) is now stored via its multiplication table
28- rnfpolredabs(x,3) did not conform to the documentation (which did not
make sense). Fix documentation and function, for rnfpolredbest as well.
29- [libpari] renamed recip -> serreverse
30- lift(x,'v) / centerlift(x,'v) now only lift t_POLMODs in variable v,
no longer (most) t_INTMOD / t_PADICs met along the way
31- lift / centerlift no longer raise an exception when they encounter
a non-arithmetic type (e.g. a t_REAL or even a t_STR) in a structure.
They just copy the offending sub-object as-is.
32- generic polynomial Euclidean division (grem, gmod, poldivrem): when
result is the zero polynomial, use RgX_get_0, not gen_0 / pol_0
33- rnf.pol (absolute defining polynomial / Q) is now called rnf.polabs,
rnf.pol is now the relative polynomial, defining the relative extension
over the base.
BA 34- FpXYQQ_pow: change order of moduli to be consistent with FpXQXQ_pow.
BA 35- FlxYqQ_pow: renamed to FlxYqq_pow, and moduli order changed.
36- idealstar(K,id), allow to input 'id' as a factorization into prime
ideals, as produced by idealfactor
37- define eulerphi(0) = 2 [ now eulerphi(n) = znstar(n).no for all n ]
38- allow subst(t_SER,x,exact 0): subst(2+O(x),x,Mod(0,3))->Mod(2,3) [#1513]
39- [libpari] rename gsh -> gsinh, gch -> gcosh, gth -> gtanh,
gash -> gasinh, gach -> gacosh, gath -> gatanh, ggamd -> ggammah
(follow GP names)
40- no longer naively use the Karatsuba/3M formula to multiply t_COMPLEX
of t_REALs: loss of accuracy is too important and unpredictable from the
user's point of view [ e.g. (1+ 1e-90*I)*(1e90+I) -> 1. E90 + 0.E52*I,
when the definition directly yields 1. E90 + 2*I ]. Could use it when
the exponents of real/imaginary parts are close, increasing the
precision by the exponent difference (increasing overhead...): not done
yet.
41- renamed mpexp1 -> mpexpm1, cxexp1 -> cxexpm1
42- change prototye of mpsincos1 and rename -> mpsincosm1
Added
EP 1- Configure option for gcov/lcov support
2- libpari function FF_f, member function g.f for t_FFELT
(definition field has p^f elements)
3- libpari functions gprimepi_upper_bound, gprimepi_lower_bound,
primepi_lower_bound, primes_interval, primes_interval_zv,
primes_upto_zv, primes0
4- libpari functions rnf_get_absdegree, rnf_get_invzk, rnf_get_map,
rnf_get_nf, rnf_get_nfdegree, rnf_get_nfpol, rnf_get_nfvarn, rnf_get_pol,
rnf_get_polabs, rnf_get_zk, rnf_get_nfzk, rnf_get_varn, rnf_get_disc,
rnf_get_index, RgV_is_QV, RgX_equal_var
5- allow rnf.disc, rnf.index
6- functions rnfelttrace, rnfeltnorm
7- function ZV_gcdext, based on ZM_hnflll (simplified)
8- allow ffgen(p^f) instead of ffgen(ffinit(p,f))
9- [libpari] Fq_sqrtn
10- mathnfmodid(m, d): allow d an arbitrary vector of positive integers.
The old syntax (d an integer, representing a vector of equal integers)
is still allowed
LGr11- GP function Colrev
12- GP operator %#n to recover time used to compute history result %n
13- GP function getabstime()
14- [libpari] Rg_to_F2, RgV_to_F2v, RgM_to_F2m, F2c_to_mod, F2m_to_mod,
Flc_to_mod, Flm_to_mod, F2m_F2c_invimage, F2m_invimage, F2m_suppl,
Flm_suppl, F2m_rank, Flm_rank, F2m_rowslice, F2v_slice, F2v_ei
BA 15- Parallel GP support (parapply, pareval, parfor, parforprime, parselect,
parsum, parvector)
16- [libpari] residual_characteristic
17- GP function characteristic()
18- [libpari] muluui, diviuuexact
19- [libpari] Kronecker_to_ZXX, ZXX_mul_Kronecker
BA 20- conversion from matrices of FFELTs to low level (Fq/Flxq/F2xq) kernels
for faster treatment.
21- FqM_det, FlxqM_det, FlxqM_inv, F2xqM_det, F2xqM_inv, F2xqM_image,
F2xqM_image, F2xqM_rank, FFM_det, FFM_image, FFM_ker, FFM_rank, FFM_inv
22- ZM_rank, ZM_indexrank, ZM_indeximage
23- GP function normlp
BA 24- GP function vecsum
25- [libpari] pr_equal, ZC_nfval, ZC_nfvalrem, ZC_prdvd, ZV_Z_dvd
26- allow .p / .e / .f / .gen for modpr structures
27- function rnfpolredbest
28- functions qfnorm, qfbil
29- [libpari] ZM_multosym, RgM_multosym, RgMrow_RgC_mul, RgM_transmul,
RgM_transmultosym, ZM_transmultosym
30- [libpari] nf_rnfeq, nf_rnfeqsimple, eltreltoabs, eltabstorel,
eltabstorel_lift, nf_nfzk, nfeltup, QXV_QXQ_eval, QXX_QXQ_eval
31- [libpari] factor_pn_1_limit
32- [libpari] get_FpXQ_star, gener_FpXQ_local
BA 33- move gpinstall to libpari
34- liftall() lifts recursively all t_INTMOD/t_PADIC/t_POLMOD components
35- liftint() lifts recursively all t_INTMOD/t_PADIC components
36- liftpol() lifts recursively all t_POLMOD components
BA 37- GP function logint
PB 38- [libpari] gen_matmul, gen_matcolmul, FFM_mul, FqM_FqC_mul, FqM_mul,
F2xqM_mul, F2xqM_F2xqC_mul, FlxqM_FlxqC_mul, FlxqM_mul.
39- [libpari] Flx_equal, F2x_equal
BA 40- [libpari] FpM_powu/Flm_powu/F2m_powu
41- new GP function idealprincipalunits
42- [libpari] checkabgrp, abgrp_get_no, abgrp_get_cyc, abgrp_get_gen,
bid_get_grp, bid_get_no
43- [libpari] FpX_disc
44- [libpari] retmkcomplex
45- GP function expm1 (= exp - 1, avoiding cancellation)
Removed
1- optional flag to factorpadic() [ enabling Buchman-Lenstra + round2 ]
Use the default = round4
2- useless wrappers map_proto_GG, map_proto_GL, map_proto_lGG
3- [libpari] useless functions gand, gor
4- [libpari] useless function ratlift [ use Fp_ratlift ]
Done for version 2.6.1 (released 20/09/2013):
Fixed
1- Allow compounding 1-letter flags to gp, e.g. qp -qf [ used to silently
ignore the 'f' ]
2- ellminimalmodel, followed by ellchangecurve ==> structure incorrectly
updated [wrong Q_MINIMALMODEL component] [2.6.0, #1416]
3- lift(1/2+O(2))=2/1 --> incorrect result + corrupt object [2.6.0, #1424]
4- local() could corrupt polynomial variable of the same name
5- write did not fclose() the output file handle [2.6.0, #1425]
PB 6- issquare(Mod(1,2)) -> domain error [2.6.0, #1429]
PB 7- issquare(Mod(0,2),&s); s -> Mod(2,0) error [2.6.0, #1430]
8- ellheight(E not given by minimal model,P) -> domain error [2.6.0, #1432]
9- ellchangecurve(E, [1,0,0,0]) lost Q_MINIMALMODEL ->SEGV later [2.6.0]
10- warning() would print "warning: user warning:"-> "user warning:" [2.6.0]
11- matinverseimage(A, t_MAT B) would treat individual columns B[,i]
independently and successively. Now use a single Gauss reduction.
12- Flm_Fl_mul returned a wrong result
13- ellinit(ellfromj(Mod(0,17))) -> curve defined over Z [2.6.0, #1436]
14- allocatemem: make sure fix_size() is called to avoid alignment
problems [#1437]
15- ellmodulareqn(2) did not clean the stack properly [2.6.0, #1442]
16- issquare(Mod(13,121)) --> not an n-th power residue in Qp_sqrt [2.6.0]
17- stack corruption in carberkowitz / charpoly(,,3) [ session crash ]
18- ellinit(E over Fp, t_FFELT) => error [2.6.0]
19- mateigen([5/3,7/45;0,21/10]) => precision error (missing eigenspace)
20- subst(O(x^2),x,0*x) => SEGV [#1447]
21- memory corruption in aprcl [2.6.0]
22- factormod(,2) => wrong result [2.6.0, #1451]
23- dirmul/dirdiv: incorrect result length when valuation > 1
24- x,y a t_PADIC, x === y always returned 0 [2.6.0]
25- bernpol(0) => memory corruption [2.6.0, #1458]
26- round((1e-40+x) / (1e-39+x)) would create the invalid object x/x
27- polgalois(x^11 + 627*x^4 - 584) -> F_110 instead of S_11 [#1460]
28- input lines with more than 2^31 characters (without \n) resulted in a
truncated read [#1461]
29- znlog(1,Mod(8,9)) -> division by 0 [#1463]
30- plot(x=1,2,x) gave a graph with 0<=y<=2, instead of ymin<=y<=ymax
31- ?= or even = would apparently hang GP (waiting for further input)
Added
1- genus2red: an implementation of Liu's algorithm to determine the
reduction of a genus 2 curve (at p > 2). Based on genus2reduction-0.3,
http://www.math.u-bordeaux1.fr/~liu/G2R/ (Cohen & Liu, 1994)
mostly rewritten from scratch:
- adapted to pari-2.*
- somewhat modularized
- fixes all known instances of 'bug27' and 'bug28' (at p = 3, reported
through Sage users).
- bench 'genus2red' contains a check of at least one instance of each
of Namikawa-Ueno's types + all cases on which the original
genus2reduction was known to fail. [CAVEAT: the interface will change]
2- allow to startup gp with flags --default key=val (or -D key=val):
execute default(key,val) on startup
BA 3- functions Flm_center, Flv_center, zv_to_Flv, zm_to_Flm, zm_mul,
zm_zc_mul, scalar_Flm
BA 4- function minim_raw
5- function QX_complex_roots
PMo 6- function forpart for looping over partitions
7- [libpari] forcomposite_init / forcomposite_next, reimplement
forcomposite() using this iterator
8- Configure now generates a file 'config.log' to help debugging when it
makes a mistake (contains all messages from compilers)
9- [libpari] RgM_invimage, RgM_RgC_invimage, FpM_invimage,
FpM_FpC_invimage, Flm_invimage, Flm_Flc_invimage, Flm_neg
10- [libpari] serchop0, integser functions
11- psi(t_SER) using Luke's recursion, then lngamma, gamma, gammah
for t_SER arguments around an arbitrary complex z0 (was implemented
for z0 = 0,1 only)
PB 12- PARI functions FlxqM_gauss, FlxqM_inv and FqM_gauss
13- PARI functions FpM_hess, FpM_charpoly, charpoly, RgM_Rg_sub,
RgM_Rg_sub_shallow
14- generic driver for GP's charpoly(): select appropriate algorith (flag)
depending on input type.
BA 15- allow ellsearch(t_VEC) : search for curve with given name, in given
isogeny class or with given conductor; alias for the existing
ellsearch(t_STR) as per the ellconvertname correspondance
16- option flag to mateigen: also return the eigenvalues
17- [libpari] Z_lvalrem_stop, u_lvalrem_stop
18- [libpari] ZX_rescale_lt
BA 19- Port of the program ISOM by Bernt Souvignier for computation of
automorphisms and isomorphisms of lattices.
New GP functions qfauto, qfisom, qfisominit, qfautoexport
20- [libpari] RgX_mullow, RgX_sqrlow
21- [libpari] embed_T2, embednorm_T2, embed_roots, embed_disc, embed_norm
22- arithmetic functions now accept factorization matrices, you can use any
of f(N), f(factor(N)) or f([N, factor(N)])
23- GP function readstr
24- allow lists of elements in chinese()
Changed
1- gp --primelimit lim (gp -p lim) is deprecated. Use the generic form
'gp -D primelimit=lim' (setting primelimit is now mostly useless, anyway)
2- gp --stacksize lim is deprecated. Use gp -s lim or the generic form
'gp -D parisize=lim'
3- partitions() interface to match forpart()
4- improve qfbred(t_QFI) for "small" inputs
5- bnfnewprec: ensure we recompute bnf from scratch at most once (could
happen many times in makematal())
6- [make bench] properly align results if 'printf' is available
7- [libpari] the *_invimage function no longer accept a t_COL second
argument: use the RgM_RgC_invimage variant. They now return NULL when
no solution exist (used to return a t_COL / t_MAT of length 1)
8- [libpari] replace the forvec_start() function by a standard
iterator: forvec_init() / forvec_next()
9- [libpari] Z_lvalrem would destroy its argument. No longer.
10- znprimroot(p^k) now always returns the smallest primitive root (was
only true for k = 1)
11- gmul / gsqr for t_SER with t_INTMOD coefficients: reduce to Z[X] +
Kronecker substititution (quasi-linear vs. Karatsuba)
12- Mulders/Hanrot-Zimmerman short products for power series
HC 13- new mpveceint1 implementation: faster and more precise
14- version string for development versions: added number of reachable
commits (as per git rev-list). Affects version() [#1346]
Removed
1- drop support for "gp -b buffersize" (obsolete since 2.2.10, 04/2005)
2- drop backward compatibility 'gp -emacs', 'gp -test'. Use the '--emacs'
and '--test' forms.
Done for version 2.6.0 (released 15/05/2013):
Fixed
1- Euclidean chains were confused by t_POLs with t_INTMOD/t_POLMOD coeffs
[ because a 0 polynomial could have lg() == 3 ]
2- numerical instability in ellheightoo [#1204]
3- Flm_gauss(m, smallish p): fix and enable the OK_ulong switch [ faster ]
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) => overflow in expo()
AMe10- (t_FRAC<0) * t_INTMOD => 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 = 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 command
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 precision
[ 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=[0,0],[1],(sin(t)/t)^2) -> "precision too low in mpsc1"
BA 30- functions ending by the x[y]=z 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=1,10^7,) + SIGINT -> SEGV [#1249]
38- ellwp: take flag into account also for t_SER output [ was: numerical
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===y 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 >=8.
52- overflow in mpbern(n) for huge n [#1256]
53- idealfactor(nf, non integral ideal) would remove a rational content
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 / diffptr
could become inconsistent
55- psdraw() ignored plot colors
BA 56- stack_base() was not C89 standard compliant.
BA 57- my(f(x)=x+1);f --> SEGV [#1273]
58- ellheight([0, 0, 1, -1, 0], [0., 0.]) -> BUG
59- allow bnrL1 over Q [#1279]
60- factorpadic(,,,1) => 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) => error [#1304]
72- sizebyte(t_LIST) returned the size of the wrapper type, not the list
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 order
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 == 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 gabs
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) = 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) => 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 with
large roots [#1406]
110- bnrdisc could return a wrong result if the modulus had more than
2 prime divisors [#1399]
111- a = Mod(1,2)*x; gcd(a,a) return x instead of Mod(1,2)*x
112- changing primelimit from within forprime loop yielded unpredictable
results (potential SEGV)
113- y;z;(x^2+y)*w/z/x -> significant pointers lost [#1248]
114- log(t_FRAC close to 1) => 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) => wrong result
nf=nfinit(y); A = [[1,1/2;0,1],[1,1]];
nfhnfmod(nf, A, nfdetint(nf,A))
BA 118- [native kernel] FFT mulii relied on unspecified order of evaluation
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 argument.
Use [], []~, Vecsmall([]), respectively.
8- allow specifying an optional dimension in Vec/Vecrev, Col, Vecsmall.
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=> useless) OR to only
partially factor poldisc(T), up to primelimit (very dangerous since
primelimit is a global variable). Now listP describes a list of primes,
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 integer
B to indicated {p <= 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 succeeds ]
[ #1074 ]
21- sort polroots() output so that it no longer depends on current precision
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 generalized
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.txt"
(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 subfields
and the best primitive polynomial [wrt discriminant]
36- [library] remove precdl argument in ellwp0: use a t_SER argument like
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 fully
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 => 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 documented, 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 pol.
[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
=> init_primepointer(n, &pd). Remove argument 'p', ignore the previous
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 = 2, 10, p = [])
*** at top-level: forprime(p=2,10,p=[])
*** ^---
*** prime index read-only: was changed to [].
58- faster forparii() [ for() with t_INT lower bound ]
59- forprime(p = a, b, ...) now iterates over arbitrary ranges of primes,
independently of 'primelimit'. Parameter 'b' can be omitted (no upper
limit). More generally primelimit is no longer a true limit to iterate
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 = 1', no longer echo commands if they were entered
interactively [commands ended up printed twice]
81- unless 'echo = 1', no longer log commands entered non-interactively
when 'log = 1'. '\r file' used to log the entire content of 'file'.
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 comment
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 fileserver
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 more
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 same
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() => sumdivexpr()
102- listpop(empty list) => no-op [ was "domain error" ]
103- ellap, ellak, ellan: allow non-minimal model
104- when timer = 1, no longer print timing if the time is negligible;
in particular, no timing should be printed when defining a user function
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 the
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 basis,
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 can
no longer be increased by modifying primelimit: the dynamic forprime
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 already
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 fast
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 incrementally,
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, retmkcol2,
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_FlxqV_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_powu
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,closure_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_matrix_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) = { 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 <= n <= b)
67- ispolygonal() function
68- libpari functions uissquarefree, uposisfundamental, unegisfundamental
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==1,b,a==2,c,default).
BA 74- GP syntax: multi assignement: [a,b,c]=V -> a=V[1];b=V[2];c=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 characteristic>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 characteristic)
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 != 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 et 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_Barrett
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_pvalrem,
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_gtomp
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=ps) when
no graphic library is available; dumps the hi-res plot to a temporary
PostScript file, then opens a PostScript viewer ('open -W' by default,
$GP_POSTSCRIPT_VIEWER otherwise). Works around #1354 on OS/X.
PMo149- GP function lambertw / library functions mplambertW, glambertW
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), matinv1
(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
12- old logo misc/pari.xpm, see http://pari.math.u-bordeaux1.fr/logo.html
|