Karim Belabas on Mon, 03 Jun 2019 23:21:53 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
pari-2.12.0 released ! [ALPHA] |
Dear PARI lovers, I would like to announce the release of pari-2.12.0-ALPHA ! Sources and binaries for Windows or MacOS can be obtained through the address http://pari.math.u-bordeaux.fr/download.html See http://pari.math.u-bordeaux.fr/Bugs/ for how to report problems or submit wishlist items. Have fun ! K.B. HIGHLIGHTS FOR PARI-2.12.0-ALPHA: see below for COMPATIBILITY ISSUES. ================================= [The GP language] - support call by reference in GP functions: f(~L,x) = L[1] = x; This allows to modify the contents of a vector / list argument and avoids unnecessary copies of arguments For clarity, built-in functions handling lists/maps should now use the ~ prefix to indicate mutable containers, e.g. listput(~L,x), mapput(~M,x) - new GP functions export, unexport, exportall, unexportall simplify writing code for parallel execution (allowing simple access to "global" variable in parallel threads) - new GP functions getlocalprec, getlocalbitprec: to replace obscure idiomatic constructs such as bitprecision(1.) - new GP functions to simplify string handling: strsplit (split into a vector of strings with respect to a given separator), strjoin (join a vector of strings using a given separator), strtime (format a 'time') - new GP function arity, returns the number of arguments of a function - improve extended help: ??? output now include double quotes when needed (e.g. ???conductor); support all symbolic operators using the _ placeholder syntax: ?? _+_, ?? !_, ?? _+=_, ?? _++, etc. - natural extensions to the syntax of t_LISTS: allow L[a..b] and L[^i]; allow listinsert(L, x, n) for n > #L, as in listput - allow forsquarefree(n = a, b) with a*b < 0 - allow subst(e, x, vector v) for vector(subst(e, x, v[i])) [Transcendental functions] - new GP function hypergeom() for general hypergeometric functions; airy() for Airy Ai and Bi functions. As a consequence, hyperu(), the U-confluent hypergeometric function is now implemented for arbitrary complex parameters. - new GP functions ellK and ellE (complete elliptic integrals of the first and second kind) - new GP function dirpowers(n,x) = [1^x, ..., n^x] - improve gamma-related functions: . n!, factorial(n), lngamma(n), psi(n) for integral n . gamma and lngamma(t_FRAC) use direct formula when denom | 24 . lngamma and psi near 1 [ cache values of zeta(odd integers) ] - fast algorithm for zeta([a + b*n | n<-[0..N]]). Compare: ? \p2000 ? zeta(vector(1000,i,i+1)); time = 787 ms. ? vector(1000,i,zeta(1+i)); time = 3,334 ms. Also fix tuning problems for zeta(small even integer), slow at huge accuracy. - besseli, besselj, besselk, besseln(nu, z), eint1(z): now use asymptotic expansion for large z - fix cancellation in acosh / asinh for huge t_COMPLEX and in cos(z) and sin(z) when Im(z) is nonzero but tiny - fix bugs in zetahurwitz (imprecise n-th derivative for large n) [Numerical summation and integration] - limitnum/asympnum: allow closures of the form N->[u(1),...,u(N)], which allows to handle efficiently sums, recursions, continued fractions, etc. - new GP function derivn for (formal or numerical) n-th derivative - faster derivnum; f'...' (n quotes) now always uses derivnum which is about 2^n/n faster, and more accurate. - fix numerical derivative of functions with optional argument: e.g., f(x, y = 1) = x*y; f'(1) used to return 0 [ instead of 1 ]. - improve intnumgaussinit (use direct Newton instead of calling polrootsreal) [Elementary Number Theory] - rewrite the Bernoulli number cache using zeta(2n) = (*) B_{2n} and power recycling for zeta(2n) + additive Clausen-von Staudt: simpler and orders of magnitude faster than the old iteration. We now always store Bernoulli numbers in rational form. The GP function bernvec() is no longer obsolete (now faster than computing Bernoulli numbers individually). - qfbsolve(Q,n) now supports arbitrary integer n (was limited to primes) and return all solutions modulo units. - improve the poldiscfactors() and prime() functions [Polynomials] - new GP function pollaguerre for Laguerre polynomials. Add an optional flag to pollegendre and polhermite to return P_{n-1}(a) and P_n(a) - polinterpolate over Z/pZ is now asymptotically fast [Linear Algebra] - generic fast linear algebra using CUP decomposition - improve linear systems over Q [treat contents sensibly] - fix inefficiency in LLL (not present in original fplll code) [Elliptic curves] - make ellheight(E) return the Faltings height of E (over Q or a number field) make ellheight(E, torsion point) return an exact 0 - support for non-integral models in ellratpoints and hyperellratpoints [L-functions and Modular Forms] - lfun now allows non-integral weights; in particular, lfunqf is no longer restricted to even dimensions. - mffromlfun now supports forms of half-integral weight, e.g. from lfunqf. - lfunmfspec is now implmented in all integral weights - new GP function mfgaloisprojrep (projective Artin representation attached to a modular form of weight 1 by Deligne-Serre) [Number Fields, Local Fields, Finite Fields] - new GP function bnrclassfield, generalizing rnfkummer (which only supported relative extensions of prime degree) - new GP function idealdown(nf,A) to return A \cap Q - new GP function idealismaximal - allow polynomials with non-integral coefficients in rnfdisc and rnfconductor - nfbasis now accepts an optional argument &dK to recover the field discriminant - rnfinit(nf, [T,B]) for orders that are maximal at a certain set of primes only; allow B a list of primes and maximal ideals (same for rnfbasis, rnfdisc, rnfconductor, rnfpseudobasis) - new GP function nfdiscfactors to return the field discriminant in factored form - new GP function polteichmuller to define nice models of p-adic extensions (see ??polteichmuller) - new GP function ffmaprel(m, t) to express the finite field element t as an algebraic element over the codomain of the map m; this allows for instance to compute the relative minimal polynomial, trace and norm of t [Windows-specific] - no longer crash on deep recursion [ (dive(n) = dive(n+1)); dive(0) ] - support for install() [ was only working in the dynamic binary ] COMPATIBILITY ISSUES BETWEEN 2.11.* and 2.12.* ============================================ 0) Obsoleted functions and interfaces: - removed member functions .futu and .tufu [deprecated since 2.2] - matsnf: remove obsolete binary flag '2' [make it a no no-op as in mathnf] - inline / uninline are now obsolete, use export/unexport - renamed GP functions Strchr -> strchr, Strexpand -> strexpand, Strprintf -> strprintf, Strtex -> strtex - renamed GP function besseln -> bessely - poldisc(t_COMPLEX) now raises an exception (used to return -4) 1) Output changes: - bnf.fu now returns 0 when bnf does not contain fundamental units [used to raise an exception] - qfbsolve now returns a vector of all solutions modulo units [was a single solution] - mfparams now returns [N,k,CHI,space or P, Phi] where Phi is the cyclotomic polynomials defining the field of values of CHI - fix compatibility issue between coefficients of a modular form f and values of corresponding Dirichlet character via znchar and chareval [used different cyclotomic polynomial to define the same cyclotomic field when order(chi) = 2 mod 4]. - polinterpolate(X,Y,t,&e): e is now more precisely defined and the error estimate is given as a binary exponent; compared to the value dy returned up to this change, we have e = exponent(dy). - x ^ t_FRAC: return an exact result if possible; e.g. 4^(1/2) is now 2 - GP timer and ## now also display the realtime when nbthreads is not 1 2) Input changes: - the argument of a GP user member function is now a reference and can be modified. - lfunconductor(L, [a,b]) is no longer supported to look for conductor in interval [a,b]; implement lfunconductor(L, list of potential N) instead - limitnum / asympnum: removed the useless optional parameter 'muli/k' [now implicitly set to 1, not to 20]; to replicate the old behavior extrapolate u(muli*n) . - CAVEAT: nfbasis documentation was incorrect: it is not guaranteed that nfbasis([T, listP]) returns the maximal order even if listP contains all prime divisors of the field discriminant. See ??nfbasis ------------------------------------------------------------------------------- P.S. The Changelog Bug numbers refer to the BTS at http://pari.math.u-bordeaux.fr/Bugs/ Done for version 2.12.0 (released 01/06/2019): Fixed 1- memory leaks due to the use of varhigher/varlower 2- memory leak on error in plots 3- memory leak on error in newtoncharpoly 4- heap-buffer-overflow in init_prefix [readline] 5- mfsplit(mf,,flag) could return uninitialized objects => SEGV 6- mfeisenstein(k,,chi) was treated as E(k,chi) instead of E(k,1,chi) 7- poldegree(y/x) -> 0 [ instead of -1 ] 8- sumeulerrat(y/x^2,1) -> junk HC 9- incgam(-1000.4,2) -> SEGV 10- mfatkininit(mfinit([366,2]),2) -> precision error 11- forprimestep: wrong when wrapping word boundary (2^32 or 64) [#2071] 12- mfbracket: [f,g]_m was multiplied by (-1)^m 13- wrong results in mfatkininit / mfatkineigenvalues due to insufficient precision [#2073/#2074] 14- issquare(Mod(x,ffinit(3,2))) -> wrong result [broken Fq_ispower] 15- possible SEGV in rnfpseudobasis(, [pol,lim]) 16- wrong result in elllog over F_p, p in [2^63,2^64[ p=13824553909862352061; A=8953655473130154624; B=9775907253961339458; P=[6444058885176327583,7963649599850249187]; E=ellinit([A,B],p); Q=ellmul(E,P,2); elllog(E,Q,P) -> 0 [ Flj_mulu_pre would not accept n >= 2^63 ] 17- wrong result in mfsymboleval when path extremities are close to real axis (cusps were OK) [#2075] 18- mfcoefs(mfDelta(),0) -> SEGV [#2078] 19- GC error in lfuncreate(elliptic curve over number field) [#2080] 20- X11 and Qt graphic engine: pari_close called too soon => crash 21- pariold.h: mix up with obsoleted taille / taille2 BA 22- foo(n)=vector(n)[1..n];123; would corrupt the GP interpreter [#2081] 23- Pol(0)/'x -> t_INT 0 (instead of 0*x^0) Pol(0)/(Mod(1,2)*'x) -> t_INT 0 (instead of Mod(0,2)*x^0) 24- missing typecheck in nfalgtobasis [#2084] 25- dbllog2(t_COMPLEX of t_FRAC) => junk 26- nffactor(t_POL, t_POL) => bug in LLL_cmbf [#2083] 27- ideallog(pure archimedean conductor, t_FRAC) -> log(0) error 28- lfunrootres: avoid oo-loop 29- mfgaloistype: dihedral forms possibly incorrect for N > 3000 30- mfgaloistype: error on mf=mfinit([1159,1,Mod(930,1159)],0); 31- incorrect accuracy in limitnum / asympnum for alpha != 1 32- missing GC in polint_i 33- hash_GEN(x) returned different values depending on whether x was a clone BA 34- [mpi] setting nbthreads in .gprc could lead to crashes. 35- accuracy too large in derivnum => slowdown 36- nfisincl(x^5-x^4+x^3-2*x^2+3*x-1,x^20+x^15+x^10+x^5+1) -> SEGV 37- stack corruption in addsub_frac AP 38- segfault in rnfidealup [#2093] 39- Ser(x,x,0) -> error instead of O(x) [#2092] 40- fix mspolygon(,2) [add 1/3rd hyperbolic triangles + fix labels] 41- factor(3/(x^5+3*y*x^4+3*y^2*x^3+y^3*x^2)) -> SEGV 42- output from bnfcompress() mistaken for rnf and vice-versa 43- catastrophic cancellation in acosh / asinh for large t_COMPLEX 44- zeta(1/2 + I*t) => internal error 45- cos(z) and sin(z) imprecise when Im(z) is nonzero but tiny BA 46- hyperellcharpoly: wrong results over Z/3Z 47- gmp kernel: off-by-1 error in red_mongomery [read uninitialized memory, then ignores result] 48- intnuminit([-1,-1/2],[1,-1/2]) twice slower than it should 49- forcomposite(n=2,4,print(n)) -> empty [#2096] 50- relative extension of degree 1 was not properly supported in rnfidealprimedec and rnfidealup 51- mfmul(f,g) created invalid forms when f (resp. g) had Nebentypus chi (resp. chi') and Q(chi * chi') != Q(chi) or != Q(chi') [analogously for mfpow, mfdiv, mfbracket] 52- let [N,k,chi] = mfparams(f); f had coefficients in Q(chi) [or an extension thereof for eigenforms] but the values obtained from znchar(chi) and chareval were incompatible with mfcoefs when order(chi) = 2 (mod 4) [same cyclotomic field but different cyclotomic polynomial] FB 53- [Configure] library not found despite --with-readline-lib [#2097] 54- besseli, besselj, besselk, besseln(nu, z): use asymptotic expansion for large z [#2006] 55- minpoly(Mod(1,t^2)) -> SEGV [#2102] 56- a=ffgen(3^2,'a);poldisc(x^6+a*x+y) -> division by 0 [ positive characteristic with a few t_INT coefficients ] 57- intnumgaussinit(n) actually used 2*ceil(max(4,n/2)) quadrature points BA 58- [pthread] parapply could crash BA 59- ffinvmap(m) could SEGV on bad input 60- ellisdivisible(E/K number field in 'x) -> incorrect priority[#2106] 61- idealispower(nf, t_INT n) possibly wrong if (n, nf.disc) > 1 62- zeta''(0): all precision lost [more generally f'...'(n quotes) imprecise in the neighbourhood of 0, while derivnum(,n) was OK] 63- sumdigits(negative number, B) sometimes negative 64- poldiscfactors(x^0) -> division by 0 65- factormod(x^3+1,[y^2+1,2]) -> SEGV 66- factormod(x^3+1,[y^2+1,5]) -> weird error message 67- besseljh(huge n, z) -> junk BA 68- [pthread] localbitprec was not exported to threads BA 69- fix inefficiency in fplll not present in original code 70- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/2000,[1/100,oo]): no root [#2112] 71- polrootsreal(x^4+2*x^3+x^2/3+x/100-1/1000,[1/10,oo]): extra root [#2112] 72- lfun may crash on lfuncreate input with too short an vector [#2118] BA 73- incorrect use of graphcolors -> SEGV 74- forcomposite(..., oo, ) was not supported BA 75- lfunartin with poles: incorrect result JD 76- factor: significant pointers lost [#2125] BA 77- matdet/matrank over large fields was inefficient 78- poldisc(y^2/x + 1, y) -> error [also affects polresultant] 79- poldisc(x^2/y + 1, y) -> 0 [also affects polresultant] 80- ispower(2, 2^64) -> error 81- (f(x) = x*'y); f'(1) -> error BA 82- sqrtn(Mod(3,19),4) -> no error [#2127] 83- nfhnfmod: wrong result 84- matdet(mat with t_RFRAC entries): wrong result [#2128] 85- n-th derivative of zetahurwitz used 'seriesprecision' instead of n + imprecise value when n large [#2130] 86- lfunzeros(f, [0, b]) wasn't allowed 87- mateigen(): typo causing wrong results when correct results were achievable [#2131] 88- intnum(x=-oo,[0,-1/2],1/sqrt(-x*(x^4+1))) -> division by 0 89- eint1(large x > 0) didn't use asymptotic expansion [#2129] 90- printtex(quadgen(-3,'z)) ==> w BA 91- [a,b]=a could lead to memory corruption 92- memory leak in cgetalloc when lg overflows 93- possible SEGV in padicappr [#2133] 94- zeta(small even integer) was very slow at large accuracy 95- core() could destroy its input, if stored in a GP variable BA 96- (f(x, y = 1) = x*y); f'(1) returned 0 97- quadgen(2^64+1) * 1. => junk (stack corruption in quad_disc). 98- ellmoddegree: infinite loop and stack corruption (e.g on 52a2) 99- ellmoddegree(ellinit("10890ba6")) -> wrong result 100- nfgcd called ZX_resultant(a,T) with typ(a) == t_INT 101- random SEGVs in bnfinit with large fundamental units [#2139] (due to fundamental units computed via floating point approximations rounding to 1 or -1) 102- qfisom([16,6;6,10],[4,3;3,10]) was not 0. [#2140] 103- mfeval: wrong result when level of form and space didn't match [#2134] BA 104- nfisincl(x^3+9,x^6+2187): wrong result [#2144] 105- ispower(27,2^60) -> SEGV [#2145] BA 106- matsolve(M,vector(n)) could return result of wrong dimension 107- [Windows] no longer crash on deep recursion [#2105] 108- factor(Mod(x^3 + x + y^2,2)) -> oo loop [#2148] Changed 1- [libpari] gp_filter return value is now allocated on the stack [was undocumented, malloc'ed and resulted in memory leaks] 2- improved n!, factorial(n), lngamma(n) and psi(n) for integral n 3- improved bernvec: no longer Obsolete 4- [libpari] mpbern is now obsolete: use constbern 5- rewrote the Bernoulli number cache (using zeta(2n) = * B_{2n}) and power recycling for zeta(2n) + additive Clausen von Staudt): orders of magnitude faster and always store Bernoulli in rational form BA 6- [libpari] ZpX_ZpXQ_liftroot_ea: change interface for 'early' 7- bnf.fu: return '0' if bnf does not contain the fundamental units (was an error) 8- support ?? _+_ and friends [extended help for specific operators instead of redirecting to "GP operators"] 9- support ?? _op=_ and ?? op=; support ?? _++ and friends 10- x ^ t_FRAC: return an exact result if possible; e.g. 4^(1/2) is now 2 HC 11- gamma(t_FRAC) and lngamma: use direct formula when denom | 24 12- serlaplace(scalar) -> return the scalar (understood as a constant polynomial) instead of raising an exception [#2082] 13- implement hyperu for arbitrary complex parameters 14- extend lex() to allow complex numbers 15- lfunconductor(L, [a,b]) no longer supported to look for conductor in interval [a,b]; implement lfunconductor(L, list of potential N) instead 16- renamed GP functions Strchr -> strchr (pari_strchr in libpari), Strexpand -> strexpand, Strprintf -> strprintf, Strtex -> strtex 17- [help] move str* functions from "conversions" to "programming" section BA 18- qfbsolve now returns a vector of solutions. 19- limitnum / asympnum: remove useless optional parameter 'muli/k' [now implicitly set to 1, not to 20]: just extrapolate u(muli*n). 20- improve rdivii / rdiviiz [ use divri which may use divri_with_gmp ] 21- mfparams now returns [N,k,CHI,space or P, Phi] where Phi is the cyclotomic polynomials defining the field of values of CHI 22- inline / uninline are now obsolete, use export/unexport 23- let localprec(p) accept non integral real p [replace by ceil(p)]; same for localbitprec. 24- let precision(x,p) accept non integral real p [replace by ceil(p)]; same for bitprecision. 25- besseln is now obsolete, use bessely 26- [libpari] precision0 / bitprecision0 (meant to implement GP-specific commands, not for library use) are now obsolete. The new equivalent commands (still not meant for library use) are precision00 and bitprecision00. 27- improve intnumgaussinit (use direct Newton instead of polrootsreal) 28- improve sumeulerrat / prodeulerrat 29- factor(x, D), D now encodes the domain over which to factor 30- allow listinsert(L, x, n) for n > #L, like listput 31- allow forsquarefree(n = a, b) with a*b < 0 32- allow L[a..b] and L[^i] for t_LISTs BA 33- gen_factorback: change argument order to match other functions 34- polinterpolate(X,Y,t,&e): e is now more precisely defined and the error estimate is given as a binary exponent; compared to the value dy returned up to this change, we have e = exponent(dy). 35- suminf is now sensitive to bit precision. In library mode, use suminf_bitprec (precision in bits) rather than the historical suminf (precision in words) 36- RgV_polint: use (asymptotically fast) FpV_polint over Fp BA 37- [libpari] pari_add_hist now take 3 arguments (data, cputime, realtime) BA 38- # and ## now also display the realtime when nbthreads is not 1 39- gp_format_time: remove trailing ".\n" from formatted string BA 40- GP: arguments of the parser code W can start with ~ for clarity, e.g. listput(~L,x), mapput(~M,x) BA 41- GP: the argument of a user member function is now a reference 42- make ellheight(E, torsion point) return an exact 0 [#2109] 43- allow rnfdisc(k, polynomial with non-integral coeffs) 44- allow rnfconductor(k, non-monic polynomial) 45- poldisc(t_COMPLEX) now raises an exception (used to return -4) 46- rnfdisc(nf, [T,B]) allow B a list of primes and maximal ideals (same for rnfbasis, rnfinit, rnfconductor, rnfpseudobasis) 47- ??? include double quotes when needed (e.g. ???conductor) [#2122] 48- improved the prime() function 49- mpeint1: support all t_REAL x != 0 (was x > 0) LGr 50- nffactor now supports rational functions 51- improve QM_gauss [treat contents sensibly] 52- lngamma and psi near 1: cache values of zeta(odd integers) 53- [libpari] nfbasis prototype changed: 3rd argument listP is gone, use nfbasis(mkvec2(T,listP), &disc). Note that the documentation was incorrect: it is not guaranteed that nfbasis([T, listP]) returns the maximal order even if listP contains all prime divisors of the field discriminant. See ??nfbasis 54- nfbasis now accepts an optional argument &dK [order discriminant] 55- mffromlfun: support forms of half-integral weight (e.g. from lfunqf) BA 56- [libpari] FF_Frobenius: return the image of the standard generator 57- faster poldiscfactors() 58- when 'log' is turned on, explicitly output the logfile name Added 1- [libpari] nonsquare_Fl 2- [libpari] set_avma BA 3- [libpari] FpXC_FpXQ_eval 4- [libpari] mulu_interval_step 5- new file src/basemath/bern.c 6- [libpari] divisorsu_moebius 7- [libpari] ZXQ_powu 8- new GP functions hypergeom, airy 9- [libpari] gc_bool, gc_double, gc_int, gc_long, gc_ulong, gc_NULL 10- new GP functions strsplit, strjoin 11- new file src/basemath/str.c 12- [libpari] has_str_len BA 13- qfbsolve(Q,n) now support arbitrary integer n. 14- [libpari] divisorsu_fact_factored 15- [libpari] qfiseven 16- [libpari] zv_cyc_minimize, zv_cyc_minimal 17- limitnum/asympnum: allow closures of the form N->[u(1),...,u(N)], which allows to handle efficiently sums, recursions, continued fractions, etc. BA 18- new GP function polteichmuller BA 19- [libpari] Flx_Teichmuller, F2x_Teichmuller 20- [libpari] mpsinhcosh 21- new GP function dirpowers BA 22- [libpari] F2xqX_resultant, F2xqX_disc, FlxqX_resultant, FlxqX_disc, FpXQX_resultant, FpXQX_disc, FFX_resultant, FFX_disc BA 23- FFX_gcd, FFX_extgcd 24- optional flag to pollegendre and polhermite 25- new GP function pollaguerre BA 26- [libpari] Flxn_red, Flxn_sqr, Flx_integ BA 27- new GP functions export, unexport, exportall, unexportall 28- [libpari] Fp_divu BA 29- [libpari] ZpXQX_liftroots 30- new GP functions getlocalprec, getlocalbitprec 31- [libpari] guncloneNULL, gluncloneNULL_deep 32- allow subst(e, x, vector v) for vector(subst(e, x, v[i])) 33- [libpari] pollegendre_reduced AP 34- new GP function mfgaloisprojrep 35- optional v argument to nfmodprinit 36- [libpari] rfrac_deflate, rfrac_deflate_order, rfrac_deflate_max 37- [libpari] identity_zv, identity_ZV 38- [libpari] polintspec, polint_i BA 39- [libpari] FF_var, FF_preimagerel BA 40- new GP function ffmaprel BA 41- [libpari] closure_derivn BA 42- [libpari] walltimer_start, walltimer_delay, pari_get_histrtime BA 43- new GP function strtime BA 44- [libpari] Flxn_exp, Flx_Newton, Flx_fromNewton, Flx_Laplace, Flx_invLaplace BA 45- Support call by reference in GP function: f(~L,x)=listput(~L,x+1) BA 46- Generic fast linear algebra using CUP decomposition 47- [libpari] nfX_to_monic BA 48- new GP function derivn BA 49- new GP function arity 50- new GP functions idealdown, idealismaximal 51- [libpari] bid_get_fact2 AP 52- new GP function bnrclassfield HC 53- implement lfunmfspec in odd weight HC 54- new GP functions ellE and ellK 55- [libpari] maxprimeN BA 56- support for rational model in ellratpoints and hyperellratpoints 57- [libpari] psi1series 58- [libpari] constzeta 59- new GP function nfdiscfactors 60- [libpari] RgV_is_arithprog 61- fast algorithm for zeta([a + b*n | n<-[0..N]]) BA 62- ellheight(E) now returns the Faltings height of E BA 63- lfun now allows non-integral weights OB 64- example/parigp.sty to re-enable PARI's \pmatrix with amsmath [#2110] IZ 65- [win32+gp-sta] support for install() 66- [libpari] setunion_i BA 67- [libpari] hash_init, hash_init_ulong BA 68- [libpari] FFXQ_minpoly BA 69- [libpari] F2x_recip 70- [libpari] RgV_isin_i Removed 1- member functions .futu and .tufu [deprecated since 2.2] 2- inferior hash function hash_str2: use hash_str 3- matsnf: remove obsolete binary flag '2' [make it a no no-op] (cf mathnf) K.B. -- Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17 Universite de Bordeaux Fax: (+33) (0)5 40 00 21 23 351, cours de la Liberation http://www.math.u-bordeaux.fr/~kbelabas/ F-33405 Talence (France) http://pari.math.u-bordeaux.fr/ [PARI/GP] `