| Karim Belabas on Fri, 08 Oct 2010 18:59:22 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| pari-2.4.3 (testing, ALPHA) released |
Dear PARI lovers,
I would like to announce the release of pari-2.4.3-ALPHA. The sources
can be obtained through the address
http://pari.math.u-bordeaux.fr/download.html
It is also partly a bugfix release for the TESTING development branch
(181 bugs fixed). Please help us test this ALPHA release!
See http://pari.math.u-bordeaux.fr/Bugs/ for how to report problems or
submit wishlist items.
Some highlights :
[Kernel]
- The GMP library is now used by default if Configure can find it.
- Schoenhage-Strassen big integers multiplication to native kernel
(very useful if GMP not available)
- faster multiplication of integer polynomials (Kronecker's trick)
[Linear Algebra]
- all LLL variants use an implementation of NGuyen & Stehle's L^2
algorithm : stabler, much faster
- better resultant
[Elliptic curves]
- ellap() now uses the SEA algorithm (port of GP's ellsea package).
- discrete logarithm [ elllog() ], group structure of E(Fp) [ ellgroup() ],
- division polynomials [ elldivpol() ]
- Tate and Weil pairings [ elltatepairing() / ellweilpairing() ]
[Number Fields]
- many bnfinit() improvements [ class group and units ]
- faster quadhilbert(D < 0) [ Hilbert class field via CM ]
- Frobenius elements [ idealfrobenius() ]
- ramification groups [ idealramgroups() ]
[GP]
- formatted printing : printf, Strprintf
- alarm(n) to abort a lengthy computation after n seconds.
- === "isidentical" operator (much stricter than ==)
- the debugger ("break loop") is now *enabled* by default
[ set breakloop = 0 in your gprc to disable it ], and no longer
controlled by trap(). The debugger is a little more verbose
concerning where the error occured :
(18:39) gp > f()
*** at top-level: f()
*** ^---
*** in function f: g()
*** ^---
*** in function g: h()
*** ^---
*** in function h: 1/x
*** ^--
*** _/_: division by zero
*** Break loop: type 'break' to go back to GP
break> x
0
[Libpari]
- *Many* library functions exported and documented.
Have fun,
Karim.
P.S: The Changelog.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Done for version 2.4.3 (released 08/10/2010):
Fixed
1- \h m-n no longer worked
BA 2- some error messages displayed internal token names (e.g for '1)
3- named colors in 'graphcolormap' were not portable across graphic drivers
4- setunion(Set(),Set()) -> SEGV [#714]
DE 5- [Solaris] pari.desc won't compile [#715]
6- 822.pm broke the formatting of inline program examples
7- memory leaks in pari_close_opts [ freeep(), parser stacks, some
defaults... ]. FIXME: calls to getpwuid introduce (small) leaks
8- ZV_Z_mul might not reset clonebit.
9- nfeltreducemodpr --> gerepile errors [#716]. Also SEGV for residue
degre > 1 (when p does not divide the index)
JD 10- write1("/dev/null", foo);1 --> extra newline
JD 11- is_dir_stat() gave incorrect results on special files (pipes,...)
JD 12- read() would block on pipes
13- nfeltreducemodpr used different canonical representatives than all other
modpr routines [#719]
14- rnfconductor(,,1) did not recognize some abelian extensions [#718]
(when the discriminant of a defining polynomial for the absolute number
field could not be factored). Related to Changed-4.
15- polgalois could confuse S_11 and F_110(11) if a certain polynomial
discriminant could not be fully factored. Related to Changed-4.
16- a = 0./x; a+a --> 0.
BA 17- [from 2.4.2] use of pointers in recursive expressions [#717]
BA 18- [from 2.4.2] trap() did not restore evaluator states [#722]
19- simplifications missed when adding t_RFRAC [#721]
20- gtofp(1 + 0*I, prec) should not return 1. + 0.*I but 1.
gtofp(0 + (tiny real) * I, prec) should make sure the real part is
converted to a zero of sufficiently small exponent (otherwise the
modulus of the result is zero, because 1E-100 + 0E-28 = 0E-28)
21- factor(500501^36): impossible assignment I-->S
22- quadray(-7,6) [or other "impossible conductors"] --> oo loop [#725]
23- acosh([Pol(1)]) -> gerepile error [#728] (same asin, asinh)
24- rnf functions sometimes do not reduce their output when relative
extension has degree 1 [#727]
25- zetakinit(bnfinit(...)) -> gerepile error
26- zeta(1-2^31 or 1-2^63) -> SEGV [#730]
BA 27- priority of << had become lower than priority of * (should be =)
28- last digit of polylogs was wrong
BA 29- missing GC in the leftrightpow functions
30- bnr=bnrinit(bnfinit(y^2-229,1),5,1); rnfkummer(bnr,,3) --> oo loop
31- mathnf(a,1) could have negative entries if non-trivial kernel [#741]
32- [Configure -pg] some variables not written to pari.cfg
33- missing subfields in nfsubfields [#744]
34- [readline] <F1> or <M-h> would fail on 'fun()'. Delete trailing
garbage in help routine.
35- modular matrix inversion routines used O(n^2) inversions instead of O(n)
36- print1() + read() or extern() + error/warning ==> missing \n
37- infinite loop in nffactor [#751]
38- ellordinate couldn't handle t_FFELTs
39- eint1(10,10) completely wrong
40- ispower broken due to 1) uninitialized variable, 2) insufficient
precision [#916]
41- compilation fails with yacc unable to handle parse.y [ add explicit
rule in Makefile to prevent from generating a wrong one ]
42- duplicate factors in nffactor (easy cases) [#761]
43- ellisoncurve(e, P) didn't check that "point" P had the correct format
44- znlog(...,znprimroot(p)) --> SEGV [#765]
45- wrong signs in bnfisintnorm e.g. [bnfinit(x^3+5), 5] -> x [#767]
46- x/(x+2) * Mod(1,2) -> Mod(1, 2)*x/(x + 2) [ should be Mod(1,2) ]
47- substpol(x/(y^3*x+1),y^2,1) -> x/(y^3*x + 1) [ should be x/(y*x+1) ]
48- missing sanity checks in rnfbasistoalg()
49- setrand(1); E=ellinit([0,0,0,1,T^4]*Mod(1,ffinit(2,7,T))) --> "weird
base ring; can't divide"
50- nffactor(nfinit(y),x*y)
nffactor(nfinit(y),x^2*y+1)
nffactor(nfinit(y),x^2*y) --> errors or SEGV. [#769]
51- hilbert(1,1,1) --> oo loop [#770]
52- nffactor(y^2+1, x+1/2) --> x+1/2 [ not integral ]
53- nffactor(y^2+1,x*y+1) --> x*y + 1 [ not normalized, missing POLMOD ]
54- nffactor(y^2+1,x^2+2*y+1) --> x^2+2*y+1 [ missing POLMOD ]
55- ellpow() with CM raised a "division by 0" instead of returning [0] [#777]
56- ellpow(e,z,2^20*I) --> norm too large in CM.
57- p=x^4-x^3+x^2-x+1; tnf = thueinit(p); thue(tnf,1) -> missing solutions
(could occur whenever p has no real root) [#764]
58- missing GC in numtoperm()
59- harmless uninitialized memory read in mulrrz_i()
60- sigma(..., 2) --> SEGV [ introduced in 2.4.1 ] [#783]
61- tuning problems in bnfinit
bnfinit(polredabs(quadhilbert(-2939))) --> oo loop
62- minor inaccuracy in GMP kernel (affir)
63- missing GC in gamma / lngamma
64- obscure SEGV when setting 'log' in a file read from command-line
as gp foo.gp [#789]
65- check that moduli are compatible in Rg_to_Fp(t_INTMOD, t_INT)
66- matsolve([1;2;3],[1,2,4]~) --> [1]~ (should raise an error)
67- allow polredabs(x in Q[X])
BA 68- [galoisinit] Documentation of "weakly" supersolvable was incorrect.
69- binomial(t_REAL or t_COMPLEX, k) was very slow for large k
70- quadclassunit(-3 or -4) --> one extra (obsolete) component.
BA 71- the evaluator did not garbage collect huge expressions [#713]
BA 72- changing a function in use caused a crash [#784]
73- vecsort() would not check the type of element in 1-dimensional vector
[ e.g. vecsort([I] now raises an error ]
74- RgX_val would raise a SEGV on t_POLs with exact *non-rational* 0
leading coeff, e.g. Mod(0,2)*x
75- SEGV (stack corruption) in idealval(K, rational number, pr) [#808]
76- All the charpoly(x,v) variants failed when v > variable(x)
BA 77- conjvec did not support FFELTs.
78- memory leak in t_LIST handling
79- polrootsmod(,1) could return an incomplete result [when 0 was a root
or there was a double root], e.g. polrootsmod(x^3 + x^2 + 21*x,23,1)
IM 80- lngamma(x) gave incorrect results (off by 2*Pi*I) when real(x) was a
negative half-integer.
81- trying to write to a binary file and failing leaked a file descriptor
82- long-standing stack corruption when <C-C> pressed during gclone [#458]
83- idealaddtoone had problems with 0 ideals [#829]
84- wrong results in qfgaussred() [only totally real case was correct]
85- uninitialized memory read in divrr (both kernels), would only affect
the last bit of the result, but could cause SEGV on empty stack.
86- After A=1/(y + 0.); B=1. + O(y); all of A*B, A/B, B/A caused an error
87- wrong result in ellap(E, 2) if bad reduction
88- 0.*x+1 == 1 --> 1 but 0.*x^2+x == x --> 0 [ latter is now 1 ]
89- ffinit(2,30) --> division by 0 [typo in FlxY_Flx_div], [#859]
90- when unexpected exception/signal raised (^C, stack overflow, out of
memory), == would cancel it and silently return wrong value [#329]
91- reading recently freed memory in popinfile()
92- contfrac(1,[],-1) ==> SEGV [#865]
93- missing type checks in bnrconductorofchar [#867], nfhilbert [#868]
94- unstable evaluation of tan(t_COMPLEX); at \p9, try
ploth(t=-0.1,0.1,abs(tan(10*I+t)))
BA 95- Vecsmall([1,1])^-1 returned garbage
96- was not handling nffactor(*huge degree* nf, *non-monic* t_POL) properly
--> wrong result and possible memory corruption [#870]
97- polredabs: excessive stack usage [#872]
98- besselj(0., 0) --> error [#880]
99- polred didn't accept non-monic inputs
100- factor(..., 10^100) ==> "overflow in t_INT-->long conversion" [#855]
IZ101- missing `const's in groupid.c cause massive copying to stack.
102- [native kernel only] int_normalize() didn't treat properly inputs
of lgefint 2
103- gerepile errors in quadclassunit(13).gen or .cyc
104- from_Kronecker & FpXQX_from_Kronecker returned polynomials with invalid
first codeword [ unused bits not reset to 0 ]
105- gred_rfrac_simple(n,d) [ basic constructor for t_RFRAC n/d ] did not
cater for d = constant polynomial
106- RgX_extgcd created invalid objects in trivial cases [ gen_0 used by
RgX-only routines ]
BA107- Fix detection for ppc64 running in 32bit mode.
108- Fp_div used remii instead of modii: Mod(3,5)-1/3 -> Mod(0, 5) [#893]
109- trying to prevent accuracy problems in thue() caused oo loop
110- wrong results in matsnf with t_POL entries [#901]
minpoly(matrix(4,4,i,j,i/j)) -> x^3 - 4*x^2 + x
111- thue(thueinit(x^3-100,1), 25) -> "Short continued fraction"
112- thue(thueinit(x^3-48, 320) -> missing solutions (similar problem
when LHS is a polynomial of degree d and RHS includes a d-th power).
113- completely wrong results in nfsnf
114- intformal(A,Y) -> 1/2*A^2
115- uninitialized memory read in sin / cos / exp (possibly fed random
final digits to the algorithm, normally truncated away before returning)
116- nffactor(): SEGV if "relifting" was necessary (very rare)
117- nffactor(): obscure "no factor" bug [when trial division found and
extracted *non monic* factors], #930
118- incorrect output type in FpX_factor [#933]
119- possible stack corruption in polylog() + missing imaginary part.
120- incorrect final simplification in idealtwoelt(nf, x, y).
Eg: idealtwoelt(nfinit(x^2+23), 3, 6) -> [0, 0]~
BA121- listsort() could return a pointer referencing freed memory: make it
return void
BA122- src/kernel/ix86/asm0.h had an incorrect #line entry.
123- rnfkummer could miss some fields ( bug in rnfnormgroup() ), e.g.
bnrM = bnrinit(bnfinit(X^4 - 34*X^2 + 1189,1), 5, 1);
rnfkummer(bnrM, matdiagonal([3,1,1]))
124- nfgaloisconj(y,1) -> invalid object
125- weird error message in ellpointtoz on loss of accuracy [#962]
126- ^C before inital prompt appears ==> SEGV [#965]
BA127- ellsea(,,1) did not work
BA128- COMPAT file was missing some functions renamed in 2.3:
flisexpr, flisseq -> gp_read_str; lisGEN -> gp_read_stream
AF129- fix for documentation of polcoeff, extern and readvec
BA130- 1/matrix(2,2,i,j,Mod(0, 2)) -> SEGV
131- wrong results for qfminim(A,,,2) if minimal norm < 1. E.g. A = matid(2)/2
BA132- besselk(0.001,1) -> SEGV
BA133- galoisinit(x).gen was not a t_VEC
134- lngamma(10^1000) -> precision too low in truncr. Same for psi()
135- nffactor could segfault. [#979]
136- Mod(10,37)^10000000000 -> SEGV
137- missing Flx_renormalize at the end of Flx_mulspec_basecase() &
Flx_sqrspec_basecase() [#984]
138- after \y0, [1,x]*[0,0]~ returned 0 t_INT, which should be a t_POL [#983]
139- isprime(x) possibly incorrect on 64 bit machines when 10^15 < x < 2^64
LM140- fix for the documentation of deriv, intformal, poldisc and taylor.
JD141- fix for the documentation of install, matsnf and polsturm.
LM142- general documentation spelling fixes.
BA143- detection of exp2 and log2 was broken with C++
BA144- support for shared library on netbsd.
IZ145- [readline] 'foo)' + M-C-b -> infinite loop
146- factorff / polrootsff : wrong result if t_FFELT coefficients
in variable 'x
BA147- nfisideal did not reject invalid hnf ideal matrices [#999]
148- v=vectorv(1);concat([matrix(0,0),v,v,v,v,v,v,v,v,v,v,v,v,v,v,v,v])
-> SEGV [#1002]
BA149- minpoly([-5,0,-1,1;0,-5,-1,-1;1,1,-5,0;-1,1,0,-5]/3)
-> wrong result[#994]
BA150- 2/O(5) -> O(5^-1) (should raise an error) [#1009]
151- factor(13533236897) -> I/O Warning [#1012]
BA152- usqrtsafe result could be off by one.
BA153- faster algorithm for nfgaloisapply.
154- bnfisnorm: output could have constant t_POL(MAXVARN) components
instead of t_INT. E.g. bnfisnorm( bnfinit(x^2+10), 1690 ) [#1026]
IZ155- [OS/2] Fix warning about string signedness.
IZ156- [OS/2] Fix symbol checking in Configure.
BA157- upowuu(2,31) returned a wrong result [#1031]
BA158- [from 2.4.2] issquare(x^2+y^2) -> SEGV [#1027]
BA159- [from 2.4.2] pointers to Vecsmall components were broken.
BA160- [from 2.4.2] ellap could return a wrong result. [#1030]
161- thue() could return wrong results (ZX_Z_normalize() didn't follow its
documentation) [#1032]
162- qfminim([1,2;2,1]*1.,,,2) -> SEGV [#1033]
163- [doc] const_col, const_vec: typo in prototype [#1040]
BA164- precision(0.E100) returned an invalid object.
165- nbits2nlong, nbits2prec, nbits2nchar : avoid overflow [#1037]
166- normalization problems in RgX_Rg_add & friends, leading to t_POL
with sign incorrectly set to 0, e.g. O(2)*x + 1 [#1042]
167- t_FFELT + t_FRAC -> SEGV (missing case in gadd)
168- polred(x) -> stack overflow [#1044]
169- sign of t_POL whose coefficients were all equal to 0 was not always
set to 0 (RgX_add / RgX_sub) [#1053]
170- problems with p-adic gamma function :
- remove extra digit in Morita's algorithm [ e.g. gamma(1/2+O(3^10)) ]
- better threshold between Morita and Dwork's algorithm
BA171- qfbhclassno(x) was wrong for x<0
172- subst(t_LIST,x,y) returned a copy without substituting [#969]
substvec & substpol didn't work on t_LISTs
BA173- RETRY macro was incorrect and could cause crash [#1064]
BA174- factorpadic(,,,1) was actually using ROUND4 [#1064 again]
175- nfbasis(x^2+1,,factor(-4)) --> oo loop [#1072]
176- factorpadic: incorrect conversion from ZX to ZpX [#1073]
177- bnfinit() : possible overflow in double -> long conversion [#1099]
178- various inconsistencies in polinterpolate() [#1096]
179- rnfequation() broken when called over the prime field Q [#1079]
BA180- F2x_divrem could call bfffo(0) which is not defined.
181- remove restriction on forsubgroup / subgrouplist that cyclic factors
of all p-Sylows should have less than 2^32 / 2^64 elements
Changed
1- [libpari] prototype of gpmalloc, gprealloc [ return void * ]
2- contfrac(x, b): no longer allow (undocumented) type t_MAT for b
BA 3- builtin-in GP functions can now be used as closures.
4- allow nffactor(t_POL, t_POL), nfroots(t_POL, t_POL) [ necessary when
nf.disc could not be factored and addprimes() would have to be used ]
5- removed undocumented interface FpM_mul(x,y,NULL), and analogously for
FpV_dotproduct, FpV_dotsquare, FpM_FpC_mul
6- [library] major names cleanup; rename *lots* of functions:
BSW_* -> BPSW_*
Z_factor_limit -> Z_factor_until, auxdecomp -> Z_factor_limit
assmat -> matcompanion
certifybuchall -> bnfcertify
derivpol -> RgX_deriv
discf -> nfdisc, nfdiscf0 -> nfdisc0
element_div -> nfdiv, element_divmodpr -> nfdivmodpr,
element_mul -> nfmul, element_mulmodpr -> nfmulmodpr,
element_pow -> nfpow, element_powmodpr -> nfpowmodpr,
element_reduce -> nfreduce, element_val -> nfval
factorback0 -> factorback2
factorpadic4 -> factorpadic, factorpadic2 now static
fundunit -> quadunit
gcmp0 -> gequal0, gcmp1 -> gequal1, gcmp_1 -> gequalm1
Flx_cmp1->Flx_equal1, F2x_cmp1->F2x_equal1, FF_cmp1->FF_equal1
FF_cmp0->FF_equal0, FF_cmp_1->FF_equalm1
ZX_cmp0 -> ZX_equal0
gener -> znprimroot, ggener -> znprimroot0
greffe -> RgX_to_ser (+ change prototype)
hil0 -> hilbert, hilii -> hilbertii [ delete useless hil() ]
ideal_two_elt* -> idealtwoelt*,
idealhermite -> idealhnf
initalg -> nfinit, initalgred -> nfinitred, initalgred2 -> nfinitred2
initell -> ellinit, smallinitell -> smallellinit
isfundamental -> Z_isfundamental
ismonome -> RgX_is_monomial
isunit -> bnfisunit
matrixqz -> QM_minors_coprime
matrixqz2 -> QM_ImZ_hnf
matrixqz3 -> QM_ImQ_hnf
minideal -> idealmin and change prototype
mu -> moebius, gmu -> gmoebius,
nfhermite -> nfhnf, nfhermitemod -> nfhnfmod, nfsmith -> nfsnf
phi -> eulerphi, gphi -> geulerphi, phiu -> eulerphiu,
poldeflate -> RgX_deflate_max
polymodrecip -> modreverse
powraw -> qfbpowraw, compraw -> qfbcompraw
primedec -> idealprimedec
racine -> sqrtint,
regula -> quadregulator
rename cmp_ZV -> ZV_cmp
smith2 -> smithall, gsmith2 -> gsmithall
srgcd -> RgX_gcd
subfields0 -> nfsubfields,
subres -> resultant, subresall -> resultant_all.
torsell -> elltors and document it
zideallog -> ideallog
RgXQ_caract -> RgXQ_charpoly
ZX_caract -> ZXQ_charpoly
ZX_isirreducible -> ZX_is_irred
pariputc -> pari_putc, pariputs -> pari_puts, pariflush -> pari_flush,
gpmalloc -> pari_malloc, gprealloc -> pari_realloc, gpfree -> pari_free
ordell -> ellordinate
7- polvaluation -> RgX_valrem(x, pz) and no longer accept pz = NULL
(use RgX_val). Same for ZX_valuation -> ZX_valrem [ & ZX_val ]
8- rename u2toi -> uu32toi [ paste two 32-bit unsigned into a t_INT ]
Write uutoi for the more natural operation of pasting two ulongs into
a t_INT.
9- prototype of FpX_center [ add one argument ]
BA 10- [svn/CVS] number development snapshots according to repository version
11- delete CVS.txt and replace it with README-subversion
12- syntax errors, SIGINT and "PARI bugs" are no longer trapped
13- quadray no longer allows an (optional) 3rd argument
14- 'format' was updated after each 'realprecision' change. Don't update
if 'format' is Xm.-1 (show all significant digits).
15- the algorithm used to round t_REAL for output
16- the "minimum field width" component of the 'format' default is now
ignored (was used only for integers in 'prettyprint' output mode and
defaulted to 0 [no effect]). Use printf !
17- %Z is no longer a valid conversion specification for PARI formats,
since this is now handled as a length modifier. Use %Ps instead
(P stands for PARI).
18- remove the (ugly) prettyprint engine ('output' = 2), render as matbrute.
printp / printp1 now act as print/print1
19- pariprintf renamed to pari_printf, %Z conversion disappeared (use %Ps)
20- check for small prime divisors in ispower [ large speedup ]
21- the conversion style 'g' of the 'format' default now printfs in style
'f' if the decimal exponent is < -4 ( was: if the binary exponent
is < -32 ), in order to conform to standard printf specifications.
22- [GMP kernel] enable GMP exact division
23- matdetint: use less memory + faster finish
24- change the default algorithm for mathnf(a) [ much faster ], flag 0 is
no longer deprecated
25- library/GP function galoisinit() now returns NULL/0 on failure
(used to raise an exception)
26- allow nfgaloisconj(t_POL, 1) [ cf C-4 ], never resort to nfgaloisconj(,2)
[ slow, unreliable ] with default flag = 0
27- [library]: gsub now implemented directly when typ(x) = typ(y)
BA 28- all LLL variants now use an implementation of NGuyen & Stehle's algorithm
29- [library]: the "prec" parameter of floating point LLLs has disappeared
30- Vecrev(x) now equivalent to extract(Vec(x), "-1..1") [was only for t_POL]
31- allow t_COMPLEX as well as t_QUAD in ellpow
32- we used to have Set(1) == Set("1") ( = ["1"] ). Now the latter returns
["\"1\""] (the Set whose element evaluate to the character string "1")
33- plotinit: change the way default arguments are evaluated (omit, instead
of interpreting 0 in a special way)
34- nfbasistoalg / nfalgtobasis no longer accept t_VEC/t_COL/t_MAT,
use matbasistoalg / matalgtobasis, which now also accept t_VEC/t_COL
35- uniformize factornf and nffactor outputs (+ speed them up for
non-squarefree inputs: compute valuations mod a suitable prime)
36- treat Mat(t_LIST) as Mat(t_VEC)
37- t_POL^0 always returned t_INT 1 [ try to return 1 in coefficient ring ]
38- polresultant(x,y,,0) now chooses the best algorithm by itself
[Ducos, modular, Sylvester], polresultant(x,y,,2) is now a synonym
for the default. The change also improves poldisc().
39- regression tests in src/test/in/ no longer need to end with
'print("Total time spent: ",gettime)'
40- arguments of stirling1 / stirling2 are now ulongs [ were longs ]
BA 41- user variables can now be aliased [#790]
42- conjvec(POLMOD of INTMODs) was slow
43- bnfcertify can now handle Zimmert/Minkowski bounds > 2^31
44- moved misc/dico.new to src/whatnow + integrate it in the
description system [ new script desc/whatnow ]
45- bittest(x, n) no longer accepts t_VEC arguments n
46- split library function disable_dbg() -> dbg_block() / dbg_release()
47- make the semantics of substpol more precise and less surprising:
substpol((x^2+x+1)/(x^2+x-1),x^2,x^3) -> (x^3 + x + 1)/(x^3 + x - 1)
[ was: (x^6 - x^3 - 2*x - 1)/(x^6 - 3*x^3 + 1) ]
48- deprecated flag '2' for bnfinit [ don't compute units ] is now ignored
==> bnfunit becomes totally useless.
49- the last component in prime ideals "primedec" format is a number field
element, but no longer necessarily in t_COL form
50- no longer allow ideals in *non-square* t_MAT form
51- idealmin now returns a number field element, instead of the associated
"principal idele"
52- cleared up the confusion caused by PARI "ideles", which were remotely
related to the mathematical notion, and covered two distinct uses. The
first one (ideal + list of real places) is now called "divisor"; the
second one (ideal + factorization matrix, which used to be a vector
of logarithms of complex embeddings) is now called "extended ideal".
53- Allow Scalar + t_COL: x + y returns [ y[1]+x, y[2],... ]. Consistent
with RgC_Rg_add and RgV_isscalar, and allows linear algebra over number
fields with less rigid data types (can mix freely t_COL, t_INT
and t_FRAC, instead of converting everything to t_COL).
54- Functions quadunit(), quadregulator(), and factor() no longer apply
componentwise to vector / matrix arguments. Use apply()
55- [libpari] removed obsolete 'prec' argument from prototypes of idealmul0,
idealmulred, idealpow0, idealpowred, ideallllred, algdep, algdep0,
lindep, lindep0
56- factorback() no longer accepts an optional 3rd argument (nf). Use
idealfactorback(). See also nffactorback().
57- Extend polhensellift to work over unramified extensions of Q_p
[ was Q_p only ]
58- [libpari] changed prototypes of bnrdisc, bnrconductor, bnrisconductor
59- slightly change the matrices used in idealmin (round them): the elements
returned are a little different.
60- no longer export private library function incgam2. Remove it also
under GP when compatible = 3. Like incgam1 (suppressed), 1.39.15 doc
stated it was provided "for debugging only".
61- addhelp: TABs are now treated properly (would overflow line without
wrapping) and \n are no longer ignored. No longer add a trailing '.'
when missing.
62- Useless nfinit flags 4, 5 (partial polred) removed.
63- Split off inline functions unrelated to the kernel from
src/kernel/level1.h
64- Swap the order of the 2 arguments to select(): selection function
now comes first [ as in apply() ]
65- error() messages now prefixed with the customary *** [ used to be ### ]
66- dvmdiiz(x, y, z) now expects z to be a t_INT [ to be consistent with
all other xxxz functions where xxx includes only i,s,u arguments ]
67- improved charpoly(,,2) [ Hessenberg form ]
68- allow Flxq_mul and Flxq_sqr to call Flx_rem_montgomery
69- t_POLMOD * t_POLMOD with same modulus: if all coefficients are in Z/NZ,
call specialized functions FpXQ_mul / Flxq_mul [ analog with gsqr, gdiv,
ginv, powgi ]
70- bezout(): make sure the leading term of the gcd of 2 polynomials is positive
(when it makes sense), as was already the case for gcd()
71- mpcopy, Flv_copy, Flx_copy, vecsmall_copy have all become
aliases for leafcopy.
72- trap(,,foo) was actually equivalent to trap(,foo) changing the global
exception handler, which was awkward an unintended
73- norml2(t_POL) now returns the expected (square of) the standard L^2 norm.
Use x * conj(x) to get back the old behaviour. norml2 now raises an error
on t_POLMOD and t_FFELT components; used to add relative norms as in
? norml2([Mod(Mod(1,3)*x,x^2-2), 2])
%1 = Mod(2, 3)
74- [library] kernel functions involving a t_INT and a t_REAL now return a
t_REAL, e.g. divsr(0, x) or mulir(gen_0,x) return real_0(...) [ used
to return gen_0 ] ==> much better control of object types when writing
kernel code. Generic functions (gmul, gdiv), as called from gp still
return a result as precise as possible given the input: 0 * 1. --> gen_0
75- [library] cleanup t_COMPLEX arithmetic to take advantage of real parts
equal to a t_INT 0. Imaginary parts equal to 0 should never be created by
our generic functions (so no need to cater for them specially: they
will be very rare, produced by ad hoc routines).
Special case trigonometric functions on pure imaginary arguments.
76- kill(z) no longer destroys user variable, only resets them to their
"undefined" value (as z = 'z would).
77- [library] prototype of galoisconj [ add one argument ], and made it
correspond to the default nfgaloisconj flag
78- allow ordinary sorted vectors in set* functions [ sets are still t_VECs
of t_STR, but if components can be directly compared, ordinary vectors
are simpler and faster ]
79- allow arbitrary nf entries in relative matrices; nfhnf and nfhnfmod
return matrices whose entries may be t_INT or t_FRAC besides the
traditionnal nfalgtobasis form. Allow ideals in arbitrary form [was:
necessarily HNF]
80- linear algebra routines: determines first whether we are over Z/NZ
then call specialized FpM_* routines if possible [fixes #376]
81- [library] commented out a large section of pariold.h. Define
PARI_OLD_NAMES to recover compatibility macros for old friends like
'un' and 'lstoi'
82- Mat(t_QFI or t_QFR) now returns the associated 2x2 symmetric matrix
83- [library] rename Buchall -> Buchall_param and export a new Buchall
with a simplified interface.
84- trap() no longer allows installing default error handlers.
85- GP's break loop is now *enabled* by default [ set breakloop = 0 in your
gprc to disable it ], and no longer controlled by trap(). To get out
of a break loop, hit Return three times (next, return, break are no
longer accepted)
BA 86- factormod and matker: faster linear algebra over F2.
87- remove duplicate polynomials in polred output [#874]
88- let forvec(X = v,...) respect the type of v (t_VEC or t_COL)
89- polred: compute characteristic polynomials as in polredabs [ using
complex embeddings, not ZX_charpoly ]
PMo90- algorithm for nfrootsof1 now defaults to nffactor: generically a little
slower than qfminim, but safer and sometimes much faster (e.g. 1mn
against a few hours)
91- added a new component nf_get_roundG to the nf structure [ to speed up
ideal reductions ]
BA 92- make test-xxx: trap SIGINT in benching script to exit on <C-C>
93- removed optional flag to rnfconductor, use rnfisabelian.
94- improved dirzetak() by an order of magnitude: e.g. K=nfinit(x^3-10*x+8),
dirzetak(K, 10^6) from 4min (2.4.2) to 2.5s
95- renormalize rnfkummer output so that it cannot be written as
P(C * x)*C^(-deg P) for any integer C > 1 [ saves large powers of C
in disc P ]
96- added a flag to the (mostly useless) function rnfdedekind(), the
version with the flag set is a little more useful. Allow list of prime
ideals instead of single prime ideal, and make this list optional
(omitted = test for maximality at ALL primes)
97- the "zetakinit" format: bnf no longer included
98- thueinit / thue: allow reducible and non-monic polynomials
99- rnfdedekind: allow non-monic polynomials
100- bnrclassno(bnr,id) : allow bid as well as modules for the 'id' argument.
101- GP 'path' now also applies for file paths containing a '/' provided
they do not *start* with a '/' (i.e. not an absolute path)
102- [library mode] the function znlog now takes an extra "order" argument
103- added an optional "order" argument to znlog, fflog, elllog, znorder,
fforder, ellorder, whose preferred format is [ord, factor(ord)] and
ord is the order of the group
104- factor(t_INT/t_FRAC, lim) used to trial divide by primes up to
min(lim, primelimit). Now we trial divide up to lim and raise an error
if lim > primelimit. [ Having the routine return an obviously "wrong"
result depending on an invisible parameter was not a good idea. ]
105- factor(t_INT/t_FRAC, 1) was the same as factor(t_INT/t_FRAC, 0). Now
abide by the input value and leave (..., 0) as the single special case
(shortcut for "the largest precomputed prime")
BA106- [native kernel] Schoenhage-Strassen multiplication/squaring
107- factorff(A, p, T): make p & T optional if A has t_FFELT coefficients
BA108- [TLS] Change pari_thread calling convention
109- allow x.a1, ..., x.a6 for an "ell5" x (5-component vector)
110- removed 'primelimit' grom gp_data struct: we now print the actual limit
of the primetable, not the value input by the user (which may be a
little less)
BA111- listsort(L) no longer returns the list L: it now returns nothing.
(No point in sorting in place if we must immediately copy the result.)
112- allow component(t_VECSMALL,...) [#957]
113- allow bestappr(x) [2nd argument made optional]
BA114- GMP kernel chosen by default when GMP is available
BA115- Rename RgXQ_u_pow to RgXQ_powu
116- Darwin: add -search_paths_first to LDFLAGS (try to solve the Editline
/ Readline conflict in a user-friendly way)
BA117- [enable-tls] Library soname changed to libpari[-gmp]-tls[-2.4].so.N.
118- integrate a final polredabs in quadhilbertreal()
BA119- Rename leftright_pow to gen_pow, leftright_pow_u to gen_pow_u and
implement sliding window powering.
BA120- galoisapply now accept automorphisms in t_COL format.
121- allow moduli equal to 0 in matsolvemod (was SEGV) [#947] + rigorously
size-reduce the output in all cases.
122- the bnr structure in a minor way (bnr[6] has 3 components now)
123- cleaned up the code used by the GP evaluator to call PARI (and
installed) functions. Functions can now have 20 arguments [#795]
BA124- galoisfixedfield now accept subgroups.
125- ellap(E, p) second argument now optional if E has t_INTMOD or t_PADIC
coefficients.
126- generalize the "generic pivot" strategy to all linear algebra (support
RgM_solve and det() in addition to existing functions); implement
maximal pivot strategy for p-adics [#1054]
BA127- padic_sqrt -> Qp_sqrt, padic_sqrtn -> Qp_sqrtn, gammap -> Qp_gamma
128- rename rnfinitalg -> rnfinit
129- [readline + vi-mode] h/H no longer clobbered by online help. 'h' will
now act as expected (= 'move left one character')
130- any of break / next / return now get out of the break loop debugger
(as they used to in 2.3)
131- typing <Return> thrice no longer gets out of the break loop : use break
132- faster eta(,1), weber() and quadhilbert() [ rewrite using eta's
functional equation explicitely ]
133- checked that no 2-strong pseudoprime passes BSPW primality test up to
2^64 (use Feitsma's list, extending Galway's)
Added
1- many new benches (make test-all)
2- split up some large monolithic files: new files
src/basemath/ RgV.c, FpV.c, ZX.c, ZV.c, concat.c, lll.c, hnf_snf.c
prime.c, bit.c
src/modules/ QX_factor.c, Hensel.c, DedekZeta.c
3- split off module of general inline functions: src/headers/pariinl.h.
4- Write or rename / document many convenience library functions:
pari_calloc, cgetalloc
mkfraccopy, mkquad, mkvecsmall4, absfrac, sqrfrac, mul_content, mul_denom
roundr_safe, trunc_safe
shallowextract, shallowconcat1, concat1,
BPSW_psp & BPSW_isprime
Z_smoothen, Z_ispower, Z_ispowerall
Z_isanypower, chinese_coprime_Z, Z_chinese, Z_chinese_all,
Z_chinese_coprime, Z_chinese_post, Z_chinese_pre, Z_incremental_CRT,
Z_init_CRT, ZM_incremental_CRT, ZM_init_CRT, ZX_incremental_CRT,
ZX_init_CRT,
ZX_to_monic, ZX_primitive_to_monic, ZX_squff,
ZX_gcd_all, nfgcd, nfgcd_all,
RgX_disc, quad_disc, qfb_disc,
ZpX_liftfact, ZpX_gcd, ZpX_reduced_resultant, ZpX_reduced_resultant_fast
Fp_center, FpM_center, FpV_center
Fp_ratlift, FpM_ratlift, FpX_ratlift
FpM_FpC_mul_FpX
Fp_red, FpXQ_red
Flxq_add, Flxq_sub, FpXQ_add, FpXQ_sub, FqXQ_add, FqXQ_sub
FqX_add, FqX_sub
FqX_roots, FpX_factorff, FpX_rootsff
FpXQX_div, FpXQX_rem, FpXQXQ_mul, FpXQXQ_sqr, FpXQXQ_pow
FpXQXQ_inv, FpXQXQ_invsafe, FpXQXQ_div
FqXQ_mul, FqXQ_sqr, FqXQ_pow, FqXQ_inv, FqXQ_invsafe, FqXQ_div
FqX_extgcd
ZC_ZV_mul, ZM_is_identity, ZM_copy, ZM_neg, ZM_add, ZM_mul, ZM_pow
ZM_max_lg, ZM_sub, ZM_ZC_mul, ZXV_Z_mul, ZM_Z_mul, ZV_Z_mul, ZV_isscalar,
ZV_copy, ZV_neg, ZV_neg_inplace ZV_togglesign, ZV_indexsort
ZMrow_ZC_mul, ZV_ZM_mul, ZV_cmp0, ZV_content, ZV_equal,
ZC_lincomb, ZC_lincomb1_inplace, ZC_z_mul,
ZV_prod, ZV_pval, ZV_pvalrem zv_prod
ZM_Z_divexact, ZC_Z_divexact, ZX_Z_divexact,
ZM_charpoly, Flm_charpoly, Flm_hess
Z_ZX_sub, ZX_Z_sub, Fp_FpX_sub,
Flc_Fl_div, Flc_Fl_div_inplace, Flc_Fl_mul, Flc_Fl_mul_inplace,
Flm_Fl_mul, Flm_Fl_mul_inplace, Flm_copy, Flm_mul, Flm_inage,
Flv_Fl_mul_inplace, Flv_add, Flv_add_inplace, Flv_copy, Flv_dotproduct,
Flv_sub, Flv_sub_inplace,
Fl_order, Flx_nbfact_by_degree, Flx_roots_naive,
FF_sub,
Fp_mulu,
FpV_inv, FpXQ_inv, FqV_inv,
FpXY_eval, FpXY_evalx, FpXY_evaly,
Flx_Fl_mul_to_monic, FlxqX_Flxq_mul_to_monic, FlxqX_rem,
FlxqX_gcd, FlxqX_extgcd,
FlxqXQ_mul, FlxqXQ_sqr, FlxqXQ_inv, FlxqXQ_invsafe,
pol1_FlxX,
FpX_Fp_sub, FpX_Fp_sub_shallow,
FpX_Fp_mul_to_monic, FqX_Fq_mul_to_monic,
FpXX_Fp_mul,
RgM_check_ZM, RgM_det_trianguar, RgM_isdiagonal,
RgV_check_ZV, RgV_neg, RgV_add, RgV_sub, RgV_Rg_mul,
RgC_neg, RgC_add, RgC_sub, RgC_Rg_div, RgC_Rg_mul,
RgM_neg, RgM_add, RgM_sub, RgM_Rg_div, RgM_Rg_mul,
RgC_RgM_mul, RgC_RgV_mul, RgM_RgC_mul, RgM_RgV_mul, RgM_mul, RgM_sqr,
RgV_RgM_mul, RgV_RgC_mul, RgV_add, RgV_neg, RgV_sub, RgC_Rg_add
RgM_diagonal, RgM_diagonal_shallow, RgM_inv, RgM_solve,
RgM_mulreal, mulreal, RgX_RgM_eval
RgV_sum, RgV_sumpart, RgV_sumpart2
RgX_neg, RgX_add, RgX_add_shallow, RgX_sub, RgX_Rg_add, RgX_Rg_sub,
Rg_RgX_sub, RgX_equal, RgX_equal_var, RgX_translate,
RgX_to_nfX, RgM_to_nfM, RgC_to_nfC,
RgX_type, RgX_type_decode, RgX_type_is_composite, RgX_Rg_divexact,
RgXQ_norm, RgXQ_pow, RgXQ_caract, RgXQ_reverse
RgXQX_translate, RgXQV_to_mod, RgXQXV_to_mod
RgXQX_pseudorem, RgXQX_pseudodivrem,
RgX_check_ZX, RgX_check_ZXY, RgX_pseudodivrem, RgX_pseudorem,
RgX_recip, RgX_recip_shallow,
ZC_hnfrem, ZC_hnfremdiv, ZM_det_triangular, ZM_detmult, ZM_equal, ZM_hnf,
ZM_hnfall, ZM_hnfcenter, ZM_hnflll, ZM_hnfmod, ZM_hnfmodid,
ZM_hnfmodall, ZM_hnfrem, ZM_hnfremdiv, ZM_hnfperm, ZM_snf, ZM_snfall,
ZM_snfall_i, ZM_snf_group, ZM_snfclean
ZM_lll, ZM_lll_norms, hnfmerge_get_1,
ZXY_max_lg, ZX_copy, ZX_equal, ZX_max_lg, row_Flm, row_zm,
scalar_ZX, scalar_ZX_shallow, deg1pol, deg1pol_shallow
togglesign_safe, setabssign,
zero_Flm, zero_Flv, zero_zm, zero_zv, zm_copy, zv_cmp0, zv_copy,
zv_equal, zv_content, zx_renormalize,
identity_perm, cyclic_perm, perm_mul, perm_commute, perm_inv, perm_pow,
cyc_pow_perm, cyc_pow, perm_cycles, perm_order, vecperm_orbits
bitvec_test_set,
RgX_get_0, RgX_get_1,
resultant, resultant_all, QX_disc, QX_resultant,
lllfp, lllintpartial, lllintpartial_inplace, reducemodlll,
reducemodinvertible, closemodinvertible,
init_primepointer,
galoisinit0, get_nfpol, get_bnfpol, get_prid,
bnf_get_nf, bnr_get_bnf, bnr_get_bid, bnr_get_mod, bnr_get_nf
nf_get_r1, nf_get_r2, nf_get_roots, nf_get_sign, nf_get_roots,
nf_get_M, nf_get_G, nf_get_roundG,
nf_get_Tr, nf_get_TrInv, nf_get_disc, nf_get_index, nf_get_pol, nf_get_zk
nf_get_prec (was nfgetprec), nf_to_scalar_or_basis, nf_to_scalar_or_alg
nf_to_Fq_init, nf_to_Fq, Fq_to_nf, zkmodprinit, zk_to_Fq_init, zk_to_Fq,
nfM_to_FqM, FqM_to_nfM, nfX_to_FqX, FqX_to_nfX
zk_multable, zk_scalar_or_multable, multable, tablemul, tablemul_ei,
tablemul_ei_ej, tablemulvec, tablesqr, ei_multable.
nfordmax, nfarchstar (was zarchstar), nfadd, nfsign, nfnorm, nftrace
nfsign_arch, nfsign_units, nfsign_from_logarch, Buchquad, Buchall,
Idealstar, idealaddtoone_i, idealcoprimefact,
nfinvmodideal, nfpowmodideal, idealsqr, nfpow_u
numberofconjugates,
bnrisconductor0, bnrdisc0, bnrconductor0,
bnrsurjection, ABC_to_bnr, idealred, idealred0 (was ideallllred),
idealred_elt, idealred_elt0
ellinit_padic, ellinit_real, ellinf, ell_is_inf, ell_is_padic,
ell_is_real, checkerr_real, checkell_padic, checksmallell, checkell5,
checkellpt
trueeta, exp_Ir, roots_from_deg1, deg1_from_roots
5- [libpari] public generic hashtables
6- library functions sqrr and invr [ Newton inversion, called by ginv() ]
BA 7- library functions checkgroup, galois_group, cyclicgroup, dicyclicgroup,
abelian_group, group_domain, group_elts, group_order, group_isabelian,
group_abelianHNF, group_abelianSNF, group_isA4S4, group_leftcoset,
group_rightcoset, group_perm_normalize, group_quotient, quotient_perm,
quotient_group, quotient_subgroup_lift, group_subgroups,
groupelts_abelian_group, groupelts_center, group_export, group_ident
8- library functions pr_get_p, pr_get_gen, pr_get_e, pr_get_f, pr_get_tau
to access components of prime ideals
BA 9- handle numerical derivation as an operation on closure.
RB 10- GP functions printf, Strprintf
11- pari_printf, pari_fprintf, pari_sprintf, pari_vfprintf, pari_vprintf,
pari_vsprintf
BA 12- docpdf and install-docpdf targets (toplevel Makefile)
JD 13- add an optional argument to quit()
14- universal constant gen_m2, for symmetry
15- GP function version() [ current version number ]
BA 16- [ellap] Port of SEA algorithm from the ellsea GP package
BA 17- new alarm GP function and alarmer error code
RM 18- partitions()
19- New chapters in Libpari Guide: usersch6.tex, usersch7.tex
20- library function dbg_pari_heap
21- function bnfcompress() [ to create a "small bnf" from a true
bnf, to be recoved using bnfinit ]. More consistent than old
bnfnit(,3) / bnfmake.
22- a concept of "extended ideal" [I, t], where t is an algebraic number
(possibly in factored form). The pair represents the ideal I x (t)
In applications the norm of I stays bounded for a given base field,
and t keeps track of the "principal part" of the ideal (usually in
factored form to avoid coefficient explosion).
23- public interface to forsubgroup: traversesubgroups()
24- library function bnfisprincipal0 (with new public flags, see nf_GENMAT)
25- GP functions nffactorback / idealfactorback
JD 26- GP function warning()
27- new flag to charpoly [ integral matrix, modular algorithm ]
BA 28- GP function galoisisnormal()
BA 29- F2x functions family for polynomials over GF(2) and
BA 30- t_FFELT subtype_FF_F2xq for GF(2^n)
BA 31- F2v/F2m functions family and F2m_ker for linear algebra over GF(2)
BA 32- extra debugging data in t_CLOSURE and debugging facility.
BA 33- compile-time copy optimizer
BA 34- elliptic discrete logarithm function elllog()
BA 35- direct implementation of ZX_mul, ZX_sqr using Kronecker's trick + mulii
36- rnfisabelian GP function
37- default 'recover'
38- more possibilities to draw "random" elements in natural sets using
random(), e.g. finite fields, elliptic curve over finite field.
39- GP routines nfeltadd, nfelttrace, nfeltnorm
BA 40- Pollard rho discrete logarithm algorithm (function gen_Pollard_log)
41- GP routine polrootsff
42- matadjoint: implement division-free algorithm (flag = 1) [#937]
BA 43- GP routines and PARI functions ellweilpairing, elltatepairing and
ellgroup
BA 44- FpE functions family for points on E(F_p)
BA 45- GP routine galoisgetpol and PARI function galoisgetpol, galoisnbpol
BA 46- GP routine and PARI function elldivpol
BA 47- GP routine and PARI function ellmodulareqn
BA 48- function RgXQ_ratlift for reconstruction of rational functions.
49- optional flag to bnfcertify : only check that the correct class group
is a quotient of the computed one.
VB 50- mingw support
VB 51- plotwin32 graphic engine
52- plotQt4 graphic engine
BA 53- low-level accessors functions gal_get_* for galoisinit objects
54- libpari functions cvstop2, z_lval, z_lvalrem, z_pvalrem
55- GP function externstr()
56- library function ZC_reducemodmatrix, ZM_reducemodmatrix,
ZC_reducemodlll, ZM_reducemodlll
BA 57- libpari functions vecsmall_max and vecsmall_min
BA 58- GP functions idealfrobenius and idealramgroups
BA 59- library functions Zn_sqrt, Zn_issquare
60- library function gidentical
BA 61- GP operator === that use gidentical
62- GP function sumdedekind()
JD 63- [gphelp] support for bzip2 compressed documentation.
Removed
1- obsolete GP functions printp, printp1. Either replace them by
print / print1 [ or the new printf ], or define aliases
alias(printp, print); alias(printp1, print1)
2- obsolete GP functions bnfclassunit, bnfreg, bnfclgp, bnfunit.
Use bnfinit.
3- obsolete GP functions bnrclass. Use bnrinit or bnrclassno.
4- obsolete GP function idealprincipal. Use number field elements "as is"
5- obsolete GP function ideleprincipal. No routine remains that would
use the auxiliary "archimedean information"
6- obsolete library functions extract and matextract
7- obsolete optional argument to quadhilbert(D < 0)
8- unused undocumented library functions os_open/os_read/os_close
9- obsolete README.DOS and README.WIN
10- cant_deflate, elliper1, lllger3, varer1, obsoler, infprecer, errlg,
errexpo, errvalp, rtodber, affer2, primer2, siginter error codes
11- obsolete library function bruteall
12- useless undocumented library function gkrogs (use krois)
13- obsolete library functions roots2 and rootsold are no longer public
14- useless library function isnfscalar
15- obsolete undocumented library function factpol(), lift_to_pol()
16- library function combine_factors() is no longer public
17- obsolete undocumented library function rnfdet0, rnfdet2
18- obsolete library function discsr(). Use RgX_disc (or quad_disc, qfb_disc)
19- obsolete library function element_powmodidele() [use element_powmodideal
+ set_sign_mod_idele], ideleaddone, reducemodmatrix, nfreducemodidele,
nfreducemodideal, nfreducemodideal_i, elementinv_modpr
20- useless macros gaddgsz, gaddsgz, gdiventgsz, gdiventsgz, gdivgsz,
gdivsgz, gmaxgsz, gmaxsgz, gmingsz, gminsgz, gmodgsz, gmodsgz, gmulgsz,
gmulsgz, gsubgsz, gsubsgz, gachz, gacosz, gashz, gasinz, gatanz, gathz,
gchz, gcosz, gcotanz, gexpz, ggamdz, ggammaz, glngammaz, glogz, gpsiz,
gshz, gsinz, gsqrtz, gtanz, gthz, gzetaz, gmaxz, gminz, TRgopgz,
mpfloorz, mptruncz, mpdvmdz
21- obsolete library function gmillerrabin, gpolcomp, caradj0
22- obsolete library functions allbase, base, base2, factoredbase, smallbase,
discf2, factoreddiscf, smalldiscf. Use nfbasis0 / nfdisc0 / nfmaxord
23- obsolete library function pari_rand31 [ use pari_rand ]
24- obsolete undocumented library function bruterr
25- obsolete library function smallbuchinit
26- awkward flag '3' for bnfinit. Use bnfcompress().
27- badly named bnfmake. Use bnfinit(sbnf).
28- useless component v[6] in "small bnfs" (was 'different', is 0)
29- obsolete library functions buchray, buchrayinit, buchrayinitgen:
use Buchray.
30- obsolete library function smallfact [ use boundfact or Z_factor_limit ]
31- obsolete library function gracine [ use sqrtint ]
32- obsolete library function ispsp, gispsp. Use ispseudoprime or BPSW_psp.
33- obsolete library function gregula, gfundunit, gboundfact.
Use quadregulator, quadunit, boundfact
34- obsolete library functions ideallistunit, ideallistunitgen,
ideallistzstar, ideallistzstargen. Use ideallist0.
35- obsolete library function algdep2. Use algdep0 (same arguments).
36- obsolete library function Mod0. Use gmodulo.
37- obsolete undocumented library function poldvd. Use
RgX_divrem(x,y, ONLY_DIVIDES)
38- obsolete library function kerint1. Use kerint or ZM_lll(,0.99,LLL_KER)
39- header file paritype.h [ split between parigen.h and pariinl.h ]
40- obsolete library functions sor, outbrute, outbeaut
41- dangerous macros max & min [ use maxss/minss, maxuu/minuu, maxdd/mindd ]
42- deprecated global constants gi, geuler, gpi. Use
mulcxI/mkcomplex/gen_I(), mpeuler() and mppi().
BA 43- bitvec family function. Use F2v instead.
BA 44- useless prototype code 'S'. Use 'r' instead.
BA 45- useless function delete_named_var.
46- obsolete and dangerous switch_stack() [#1013]
--
Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1 Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation http://www.math.u-bordeaux1.fr/~belabas/
F-33405 Talence (France) http://pari.math.u-bordeaux1.fr/ [PARI/GP]
`