This file lists the incompatible changes between Version 2.x and older versions %%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION 2.14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - qfbredsl2(q, S): change format of S: was [D,isD], is now isD - elltwist now returns an ellinit, and accepts the same input formats as ellinit ([a1,a2,a3,a4,a6], [a4,a6], Cremona label) - default(debugfiles,) is now obsolete, use setdebug("io",) - system() now return the shell return value - genus2red 3rd component is now a pair [P,Q] such that y^2+Q*y=P is minimal everywhere. * Specific to the PARI library: =============================== - dirpowerssum0 now requires an extra argument f to allow a completely multiplicative function (can be set to NULL, i.e. constant function = 1) - FqV_to_FlxV, FqC_to_FlxC, FqM_to_FlxM: replaced by ZXC_to_FlxC, ZXM_to_FlxM - ZXX_to_Kronecker -> RgXX_to_Kronecker, ZXX_to_Kronecker_spec -> RgXX_to_Kronecker_spec - nbessel -> ybessel (according to the new GP name bessely) - ZC_u_divexact -> ZC_divexactu - removed obsolete functions qfi, qfr, qfi_1, qfr_1, redreal, redrealnod, rhoreal, rhorealnod, qfrsqr, qfrsqrraw, qfrcomp, qfrcompraw, qfisqrraw, qficompraw, qfipowraw, qfipow, redimag - unify real and imaginary binary quadratic forms, include discriminant types t_QFI and t_QFR are replaced by t_QFB - gp_read_stream now returns NULL when EOF is reached (used to be gnil). - gen_search / vecvecsmall_search: remove flag; the result is now positive if the element is found else -i if element should be inserted at position i. - Z_smoothen now uses (and returns) t_VEC arguments. Use Z_lsmoothen to input small primes as a t_VECSMALL. - QXX_QXQ_eval: renamed to QXY_QXQ_evalx - ZX_Zp_root(f,a,p,): assume 0 <= a < p - gen_factorback: require extra parameter 'one'. Use NULL for old behavior. - absZ_factor_limit_strict no longer guarantees that q is composite: this is useless for applications and possibly expensive - the global variable DEBUGFILES is no longer available - nfinitall is now obsolete; use nfinit with the same arguments - renamed normalize -> normalizeser - order is gone: use znorder %%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION 2.12 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - the member function bnf.futu and .tufu (deprecated since 2.2) have been removed. If needed, write your own helper function using bnf.fu and bnf.tu. - lfunconductor(L, [a,b]) no longer supported to look for conductor in interval [a,b]; implement lfunconductor(L, list of potential N) instead - renamed GP functions Strchr -> strchr (pari_strchr in libpari), Strexpand -> strexpand, Strprintf -> strprintf, Strtex -> strtex - limitnum / asympnum: remove useless optional parameter 'muli/k' [now implicitly set to 1, not to 20]: just extrapolate u(muli*n). - besseln is now obsolete, use bessely - 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). - suminf is now sensitive to bit precision. In library mode, use suminf_bitprec (precision in bits) rather than the historical suminf (precision in words) - rename libpari function rootsof1 -> nfrootsof1 - rename libpari function isirreducible -> polisirreducible - rename libpari function perf -> qfperfection - remove libpari function rootsof1_kannan: use nfrootsof1 - use the documented semantic for Euclidean division involving real t_QUAD e.g. x % y is x - floor(x/y)*y; for a t_QUAD x and t_INT y, we used to mod out y in "real" and "imaginary" part independently. - rename libpari function rootpadic -> polrootspadic - change definition of lfunhardy for non-self-dual functions: remove rootnumber, which is not well defined since it depends on the choice of dual sequence a^*(n). And the function is not real-valued in any case. - parsum: removed optional argument [allows grouping of subsums => faster] - the function 'bnfcompress' has been removed. That compressed format complicated the code base, prevented planned extensions of the 'bnf' format and was not very useful: the best compression of a number field is the defining polynomial, from which everything can be recomputed. Additionally, compared to a 'writebin' of the 'bnf' structure compressed by gzip, the old 'bnfcompress' typically achieved ~ 75% compression, with compression running times often comparable to the computation of a new bnfinit from scratch, and expensive decompression as well. It was not a useful format for storage. - the 'bnf' structure has changed to allow compact units and principal ideal generators: a new bnf can be read and used in an older pari version, but a bnf from an old version can no longer be used in this version: recompute it ! - matrixqz(,-1 or -2) no longer return result in HNF [often dominant!]. If needed, call explicitly mathnf or mathnfmod with the algorithm adapted to your situation. - bnfisunit and bnfissunit: torsion unit exponent is now a t_INT (used to be a t_INTMOD) - nfgaloisconj(deg 2 pol) now return the identity as the second automorphism to follow nfroots and nfgaloisconj for higher degree. - rnfkummer: removed "all" flag, use bnrclassfield ! - remove zetamultinit and corresponding optional argument in zetamult * Specific to the PARI library: =============================== - remove inferior hash function hash_str2: use hash_str - 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. - gen_factorback: change argument order to match other functions. - pari_add_hist now take 3 arguments (data, cpu time, real time) - gp_format_time: remove trailing ".\n" from formatted string - 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 - old gen_ZpM_Dixon renamed to gen_ZpM_Dixon_Wiedemann, new gen_ZpM_Dixon with simpler interface - QXQ_div_ratlift was renamed to QXQ_div - Z_to_F2x(x,v): v is now a shifted variable number - bnrconductor_i is now obsolete, use bnrconductor_raw or bnrconductormod - bnrsurjection now returns [Matrix, cyc(F), cyc(f)] inste of Matrix - zetamultall prototype change: added flag - remove obsolete function checkbnrgen: use bnr_get_gen(bnr) - ZM_lll / ZM_lll_norms: flags LLL_INPLACE and LLL_GRAM are now incompatible (reducing a Gram matrix in place without returning the base change matrix is not useful; supporting it would complicate the code) - the global C variable logstyle was renamed to pari_logstyle - perm_pow prototype was changed to take a GEN exponent. - perm_order and permorder prototypes were changed to return a GEN. * Specific to the pthread interface =================================== - pari_thread_sync is not needed anymore and has been removed. %%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION 2.10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - the bid struct from idealstar has changed, the new format is not compatible with pari-2.9 - the rnf struct from rnfinit has changed, the new format is not compatible with pari-2.9 - the bnrdisclist output is now and ordinary vector (not a vector of vectors) - sumnummonieninit(a) for [a,a] did not conform to documentation. Change to sumnummonieninit(b) for [1,b] - lfuncreate() change of format for (p,d)->Lp closure: - Lp here and in bad primes [p,Lp] must now use the actual local factor and not its inverse - d is now the exact number of terms needed (was 1 less), i.e. one need only return Lp + O(x^d) - bad primes are given as a separate 2nd component: [Lp, [[p1,L1],...[pk,Lk]]], not as [Lp, [p1,L1],...[pk,Lk]] - nf struct: nf[7] now stores nf.zk / content(nf.zk). Old format is still supported (to read in data involving old-style nf generated by gp version < 2.10) but incurs a speed penalty. - component(t_POL T, n) used to return polcoeff(T, n-1) for all n >= 1 [ undocumented compatibility behaviour, deprecated since the introduction of polcoeff ], and raised an exception for n <= 0. Now returns a true GEN component whenever it exists and raises an exception when it does not [ n <= 0 or n > polcoeff(T)+1 ]. - For T in Q_p[X], factor (round then compute multiplicity) and issquarefree (assume input is separable) did not agree. Now, factor() repeats irreducible factors according to apparent multiplicity (note that the multiplicity is not well defined for inexact inputs, which are close to being inseparable, i.e. v_p( disc(T) ) is large compared to the input accuracy). OTOH, factorpadic with exact input is able to compute multiplicities reliably. - change polred-type algorithm to return 'x' (no longer 'x-1') for the field of rational numbers (make it consistent with polredabs). The documentation now only guarantees a 'polynomial of degree 1' - ellisomat: ellisomat(E,flag) is now ellisomat(E,,flag) - changed the definition used in polred / polredbest / polredabs to decide what is the "best" polynomial to return. This had never been specified in the documentation; while making explicit the de facto choices made in the code, it was decided to make it mathematically more appealing. There is no efficiency tradeoff involved: we are just replacing an arbitrary definition by another less arbitrary one, with the same implied costs. - ellpadicmatrix now returns a pair of matrices (instead of a matrix whose entries are pairs of values) - ellpadicheight and ellpadicmatrix no longer accept [p,[a,b]] arguments; use * [a,b]~ - msissymbol now returns a GEN (gen_0/gen_1) instead of a long - V=galoisfixedfield(P,,2): return V[1] in the same variable as the coeffs of V[3] instead of P. - numtoperm now returns a t_VECSMALL (so that results can be multiplied as permutations, etc.), no longer a ZV - The functions psdraw, psploth and psplothraw and the default psfile are obsolete. Use one of plotexport, plothexport or plothrawexport with format "ps" and write the result to file. - isprime(n,1) no longer outputs a certificate, use primecert(n) - isprime(n,1) no longer uses APRCL for large prime divisors of n-1 (pure Pocklington-Lehmer-Selfridge); use primecert(n). - removed useless (optional) flag argument in polrootsmod - factorff and polrootsff are now obsolete. Use factormod/polrootsmod - Ser(s, 'x, d) now always return a series with d significant terms. It used to return a t_SER s in 'x verbatim and to use all given coefficients for a t_VEC/t_COL. Only if d is explicitly given, no change for Ser(s,'x) - renamed algsplittingmatrix -> algtomatrix - algleftmultable now always returns the multiplication table on the integral basis - merged algdecomposition + algsimpledec -> algsimpledec - merged algabsdim + algdim -> algdim - merged algleftmultable + algtomatrix -> algtomatrix - ellmoddegree now only returns the modular degree D (divided by c^2), not [D, err] - polcoeff is deprecated and renamed polcoef: it now only applies to scalars, polynomials, series and rational functions; no longer to vector/matrices or quadratic forms (use [] or "component"). - in prettymatrix format, no longer print all 0 x n matrices as [;]: use [;] iff n = 0 and matrix(0,n) otherwise * Specific to the PARI library: =============================== - renamed buchnarrow -> bnfnarrow - removed useless argument nf in ZC_nfval, ZC_nfvalrem, pr_equal, ZC_prdvd - prototype of FlxX_shift has changed - renamed FpX_fromdigits -> FpXV_FpX_fromdigits - renamed FpXQX_fromdigits -> FpXQXV_FpXQX_fromdigits - rename vecbinome -> vecbinomial - rename padic_lindep -> lindep_padic, Xadic_lindep -> lindep_Xadic - keri and ZM_ker_ratlift replaced by ZM_ker - Fl_addmul_pre: change arguments order to follow Fp_addmul convention - removed resultant_all, use RgX_resultant_all - rename {FpXQXQ,FlxqXQ,F2xqXQ}V_aut{sum,trace,pow} -> {FpXQXQ,FlxqXQ,F2xqXQ}_aut{sum,trace,pow} - RgX_type now only handles t_POL. Use RgX_type for other objects. - changed ZM_inv: remove denominator bound and replace by pointer to denominator - changed QM_inv interface: removed second argument (useless) - useless function Flx_roots_naive; rootmod and rootmod2 are now an alias for polrootsmod (both have been deprecated for years). rootmod0 is just as obsolete. - matsolvemod0 is deprecated, use matsolvemod - cmpiu / cmpiu, equaliu / equalui : no longer assume that t_INT argument is non-negative - rename diviu_rem -> absdiviu_rem, udiviu_rem -> uabsdiviu_rem, udivui_rem -> uabsdivui_rem - rename polcoeff0 -> polcoef, truecoeff -> truecoef, polcoeff_i -> polcoef_i - rename constant LOG2 -> M_LN2 (from math.h if available) - rnf_get_nfzk / nf_nfzk / nfeltup interface (czknf was useless, return and use nfzk) %%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION 2.8 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - removed useless function sumnumalt: use sumalt - replace algorithm behind sumnum / sumnuminit : replace Abel-Plana (slow, imprecise, forced to assume holomorphy and evaluate at complex values, yielding determination problems) by Euler MacLaurin (none of these disadvantages). The interface had to change : the (mandatory) abscissa of integration becomes meaningless, and the initialization possibilities are different. Please read the documentation ??sumnum and ??sumnuminit - t_STR used to compare as larger than any real number via < or > operators. Such a comparison now raises an exception. - valuation(0,p), nfeltval(nf,0,pr), idealval(nf,0) now all return +oo under GP [ used to return LONG_MAX ] - precision(0), bitprecision(0), padicprec(0,p) now all return +oo under GP [ used to return LONG_MAX ] - infinite slopes of newtonpoly replaced by +oo (instead of LONG_MAX) - poldegree(0) now returns -oo [ used to return -LONG_MAX ] - polsturm interface change * polsturm(T, a, b) is still supported but deprecated, use polsturm(T, [a,b]) * polsturm(T, a, b) used to return the number of roots in ]a,b], we now use the closed interval [a,b]: more intuitive given the new syntax, and compatible with polrootsreal() - nfdisc, nfbasis: no longer support the old (T,flag,fa) arguments. Use the generic [T,listP] syntax (see 2.6.0-C105) - factorpadic: no longer support the deprecated (no-op) 'flag' argument - optional flag to ellheight is gone (useless) - ellbil(E,P,Q) is now deprecated, use ellheight(E,P,Q) - default 'strictmatch' has been obsoleted. It is now a no-op. - default 'compatible' has been obsoleted. It is now a no-op. - GP and libpari polynomial variables of arbitrary priority can now be created: 'x' is no longer guaranteed to have maximal priority, nor MAXVARN to have minimal priority. - GP: polynomial variables no longer spring into existence unless a true t_POL/t_SER in the variable is needed. E.g. y = 0 does not create the "variable" y, thereby messing up variable ordering. - genus2red: change syntax. Allow either genus2red(P) or genus2red([P,Q]) instead of mandatory Q (was: genus2red(Q,P) with Q almost always 0). Allow uniformization with hyperellcharpoly - remove useless function intnuminitgen (not very useful and impossible to use reliably together with intnum with boundary conditions) - remove useless function intnumstep: instead of intnum(a,b, intnumstep()+m), use intnum(a,b,m) - remove partially implemented functions intfouriercos / intfouriersin / intfourierexp / intlaplaceinv / intmellininv / intmellinvshort: use intnum (possibly intfuncinit). Make sure to indicate oscillating behaviour when function decrease slowly at oo - remove optional flag to intfuncinit: misleading and only affords a 2 x speedup in an 'init' function (maybe reimplement later in a more general form...) - remove badly implemented functions zetakinit / zetak: the interface did not make sense (it is impossible to initialize for Dedekind zeta without specifying a domain where the function is to be evaluated). Closest equivalent to zetakinit: L = lfuninit(x^2+1, [c, w, h]); to compute zeta_Q(i)(s) for |Re(s - c)| < w, |Im(s)| < h. Then lfun(L, s) as an analog to zetak(). Or directly lfun(x^2+1, s) if a single value is needed. [closes #368, #1647] - rnfconductor now returns [cond, bnr, H] instead of [cond, bnr.clgp, H] - polredabs([T,listP]) no longer returns 0 if the attached order cannot be proven to be maximal: it computes the expected canonical polynomial in all cases, which can be very slow. Always use polredbest() if you don't require a canonical output. - meaning of precision(x, n) no longer depends on the type of x: it now always refers to floating point precision. Before the change: precision([O(2),O(3),O(x)], 10) -> [O(2^10),O(3^10),O(x^10)]. Now in order to truncate a p-adic or series, you have to multiply by 1 + O(t^n); in order to extend it, use truncate. - remove useless flag in idealappr: directly allow factorization - replace qfbil(x,y,{q}) by qfeval({q},x,y) and qfnorm(x,{q}) by qfeval({q},x): it makes more sense to have q first, and a single function for qf+polar form (as in all other qf-like routines: ellheight, etc.) - functions nfeltdivmodpr, nfeltmulmodpr, nfeltpowmodpr, nfeltreducemodpr, nfkermodpr, nfsolvemodpr are obsolete. Use nfmodpr, work in the finite field, then lift back using nfmodprlift. - changed bnf format (allow dynamically adding units): old bnfs will be detected as invalid. Dirty trick to force conversion: bnf[10]=vector(3); - changed idealstar format, to access data more conveniently (and avoid recomputations): old bid and bnr structures from versions up to 2.8.0 are now invalid - gcd(t_VEC/t_COL/t_MAT, ...) is now forbidden, same for lcm * Specific to the PARI library: =============================== - renamed RgX_mullow -> RgXn_mul, RgX_sqrlow -> RgXn_sqr, RgX_modXn_eval -> RgXn_eval, RgX_modXn_shallow -> RgXn_shallow - top and bot are replaced by pari_mainstack->top and pari_mainstack->bot. - allocatemem() is replaced by paristack_resize. - rootpadicfast was renamed to ZpX_roots - mkintn() now handles arguments as 32bit unsigned int on both 64/32 bits. - sturmpart(x, a, b) is deprecated, use RgX_sturmpart(x, ab) or (better) ZX_sturmpart(x, ab) - removed deprecated functions nfbasis0, nfdisc0, factorpadic0 - Flx_pow renamed to Flx_powu - [libpari] rename ghell->ellheight, mathell->ellheightmatrix - Rg_to_RgV renamed to Rg_to_RgC, RgX_to_RgV renamed to RgX_to_RgC - powruvec was replaced by powersr - renamed ZV_gcdext -> ZV_extgcd for consistency with other 'gcdext' methods - comment out libpari function names obsoleted during the 2.3.* cycle See PARI_OLD_NAMES. - ellsea is replaced by Fp_ellcard_SEA - rename PI -> M_PI - renamed row_zm -> zm_row, row_Flm -> Flm_row - nucomp now takes L = floor(|D|^(1/4)) as a 3rd argument. Former nucomp(x,n) is nucomp(x,n,NULL). - divide_conquer_assoc renamed to gen_product, divide_conquer_prod removed - rename concat to gconcat, concat1 to gconcat1 - rename Flc_Fl_mul -> Flv_Fl_mul, Flc_Fl_div -> Flv_Fl_div, RgC_to_Flc to RgV_to_Flv, F2c_to_Flc to F2v_to_Flv - rename leading_term -> leading_coeff, constant_term -> constant_coeff - Z_to_Flx now takes a shifted variable number, as Fl_to_Flx. - rename FlxqX_pow to FlxqX_powu - rename anell -> ellan, anellsmall -> ellanQ_zv - ellsea: the argument p was removed and the interface modified - renamed absi_cmp -> abscmpii, absr_cmp -> abscmprr, absi_equal -> absequalii, absi_factor -> absZ_factor, absi_factor_limit -> absZ_factor_limit, equaliu -> absequaliu, equalui -> absequalui, cmpiu -> abscmpiu, cmpui -> abscmpui - idealappr0 is obsolete: use idealappr - qfbil, qfnorm are obsolete: use qfeval0, qfeval or qfevalb - changed set_sign_mod_divisor prototype: module is now useless (implicitly contained in sarch argument), hence removed. - removed discrayabs, discrayabscond, discrayrel, discrayrelcond, discrayabslistlong: obsoleted since 2.0 - ZpX_liftfact no more handles extensions of Qp, use ZqX_liftfact for that - rename listcreate to mklist %%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION 2.6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - eval() no longer evaluates its arguments in "permissive" mode: eval("1a") now produces a syntax error. - '|' is no longer a synonym for '||' (boolean 'or'); '&' for '&&' is still supported but deprecated. - 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. - 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?]. Use bestapprPade() to obtain rational functions, and bestappr() to obtain rational numbers. - [non-Unix systems] the name of the preferences file is now "gprc.txt" (it remains ".gprc" on Unix systems) - removed rootsold() code : polroots(x, 1) is no longer accepted. - 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. - 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 []. - rename ellpow -> ellmul - polrootsmod(, 4) is no longer accepted. The second argument must be prime. - binary(0) now return [] - arithmetic functions no longer accept vector / matrix arguments [ to later allow passing factorization matrices ]: use apply() - permtonum/numtoperm now use the standadr lexicographic numbering. - ellsigma: removed flags 3 and 4 [ inefficient algorithm using the product formula ] - removed member function 'w' (this is technical, and no longer needed:-) - 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 ] - 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) - 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. - 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. - 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. This is cleaner and more flexible than optionnal flags relying on the value primelimit (e.g. nfinit([T, nfbasis(T, 1)]), now deprecated). Also, the nfinit function now sees the local specifications directly and can take steps to fix problems. The result can also be certified (nfcertify) - renamed bezout() -> gcdext(), polresultant() -> polresultantext() - 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 - removed optional flag to factorpadic() / factorpadic0() [ enabling Buchman-Lenstra + round2 ] Use the default factorpadic(T, p, r), both under GP and in library mode. - default help text for a user function is now as in \u: ?fun produces fun = (args)->body - after addhelp(f,...), ?f no longer include default help text for a user function (function code). Type 'f' to see the function code. - rnf structure: added new components - 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 - 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. - the prid structure returned by idealprimedec: the anti-uniformizer tau (pr_get_tau / pr[5]) is now stored via its multiplication table * Specific to the PARI library: =============================== - renamed all libpari error codes [ pari_err() arguments ] - ellwp0(): remove precdl argument - rename stackmalloc -> stack_malloc - rename ggval -> gvaluation - 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. - powell, addell, subell renamed to ellpow, elladd, ellsub. - last tow arguments of FpX_factorff and FpX_rootsff have been swapped. - rnf_fix_pol() takes an extra argument, the calling function's name - rename leftright_pow_fold -> gen_pow_fold, leftright_pow_fold_i -> gen_pow_fold_i - upowuu(x,n) now returns 0 on overflow. Used to return x^n mod 2^BITS_IN_LONG - rename RgX_check_ZXY -> RgX_check_ZXX, ZXY_max_lg -> to ZXX_max_lg - removed gisfundamental, gkronecker, gbigomega, geulerphi, gissquarefree, gmoebius, gnextprime, gnumbdiv, gomega, gprecprime, gsumdiv, gdumdivk, znprimroot0 - rename zv_cmp0 -> to zv_equal0 - removed obsolete function weipell(). Use ellwpseries() - the prototype of nfbasis() changed [ remove 'flag'; if you needed it, use nfmaxord() ]. The old nfbasis0 / nfdisc0 are deprecated: don't use them. - removed obsolete Polred(): use polred() or polredbest() - rename exp_Ir -> expIr - 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) - the forvec_start() function has been replaced by a standard iterator: forvec_init() / forvec_next() - renamed rnfelementxxx -> rnfeltxxx, rnfidealhermite -> rnfidealhnf - removed useless wrappers map_proto_GG, map_proto_GL, map_proto_lGG - renamed ZM_hnfremdiv -> ZM_hnfdivrem - removed useless functions gand, gor - removed useless function ratlift [ use Fp_ratlift ] - renamed gcmpX -> gequalX - renamed ordred -> polredord: useless function, use polredbest! - renamed recip -> serreverse - renamed FlxYqQ_pow -> FlxYqq_pow - FpXYQQ_pow/FlxYqq_pow: the order of the moduli S,T have been swapped to match FpXQXQ_pow - renamed gsh -> gsinh, gch -> gcosh, gth -> gtanh, gash -> gasinh, gach -> gacosh, gath -> gatanh, ggamd -> ggammah (follow GP names) %%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION 2.4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - The "break loop" is now *on* by default, and no longer controlled by trap(), but by the default 'breakloop'. To get out of a break loop, hit <C-D> or type 'next', 'return', or 'break' - trap() no longer allows installing default error handlers. - GP's break loop is now *enabled* by default [ set breakloop = 0 in your gprc to disable it ] - random() now uses Brent's XORGEN (replaces congruential linear generator) As a consequence, getrand() returns the FSR internal state array, used by setrand() and the prototypes of both functions changed. To adapt simple library code, replace long seed = getrand(); ...; (void)setrand(seed); by GEN seed = getrand(); ...; setrand(seed); The sequence of generated pseudo-random numbers are completely different. - install(): parser code 'E' and 'I' now refer to closure, not strings: 'I': closure whose value is ignored, like in for() loop 'E': closure whose value is used, like in sum() loop - changevar() [ use substvec ] and reorder() [ use variable() for the list of user variables ] have been removed - The quasi-periods e.eta (and elleta(e)) are now twice the old value, so that e.eta = 2 ellzeta(e,e.omega/2) - Change e.omega so that e.omega[1] / e.omega[2] belongs to the Poincare half plane [ used to be the inverse ]. - indexrank, indexsort and indexlexsort now return t_VECSMALLs - besselk no longer admits a flag, the default implementation caters for all cases - removed (obsolete) optional flag in ellap(), Mod() and gcd() - the weird extra argument to listcreate() [ maximal length ] has disappeared. In fact, listcreate() is now obsolete: juste use List() to create an empty list. It will grow as needed. - listkill() is also obsolete: no need for a specific function to kill old lists floating around. L = List() reclaims memory just as efficiently as listkill(L) would. In most cases, you won't even need that, e.g. local variables are automatically cleared when a user function returns; no need to kill the ones which are lists specifically. - local variables declared implicitly (user function parameters, loop indices) are now lexically-scoped. The keyword 'my' allows to declare lexically-scoped variables explicitly. - global(), being awkward to implement in the new parser model and essentially useless is now a no-op, scheduled for removal. - PariEmacs is now distributed as a separate package, and is no longer included in the PARI distribution - distinction between user functions and user variables has been removed. As a consequence, calling a user function without parentheses no more evaluate it. - syntax errors are no longer trap-ped, only runtime errors are. First, error trapping and compile-time errors are best left unrelated. Second, since the code is first byte-compiled, then evaluated, it made no sense trapping a syntax error that would necessarily occur in the first milliseconds after inputing the command to the interpreter. (Not so in the old evaluator which could notice syntax errors very late, and one was happy to be able to still salvage something when it bombed.) - quadray no longer allows an (optional) 3rd argument: was not properly documented, broke the symmetry between real / imaginary case (was ignored if D > 0), complicated the code, and was rather useless in any case. - 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 ! - removed the fieldw "minimum field width" field from the undocumented pariout_t struct - remove obsolete "prettyprint" support: printp / printp1 now act as print/print1 - 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. - all LLL variants now use an implementation of NGuyen & Stehle's algorithm The LLL-reduced bases will be different from previous versions. - plotinit: change the way default arguments are evaluated (omit dimension, instead of interpreting 0 in a special way) - nfbasistoalg / nfalgtobasis no longer accept t_VEC/t_COL/t_MAT (not being able to apply nfbasistoalg to nfalgtobasis(nf,x) was awkward and inconsistent; the doc stated that those were inverse functions, but they were not). Use matbasistoalg / matalgtobasis, which now also accept t_VEC/t_COL. - removed obsolete optional argument to quadhilbert(D < 0) - removed obsolete GP functions printp, printp1. Use print. - bittest(x, n) no longer accepts t_VEC arguments n - remove obsolete GP functions bnfclassunit, bnfreg, bnfclgp, bnfunit. Use bnfinit. - remove obsolete GP functions bnrclass. Use bnrinit or bnrclassno. - remove awkward flag '3' for bnfinit. Use bnfcompress(). - remove badly named bnfmake. Use bnfinit(sbnf). - idealmin now returns a number field element, instead of the associated "principal idele" - removed obsolete GP functions idealprincipal. Use number field elements "as is". - Functions quadunit(), quadregulator(), and factor() no longer apply componentwise to vector / matrix arguments. Use apply() - factorback() no longer accepts an optional 3rd argument (nf). Use idealfactorback(). See also nffactorback(). - no longer export private library function incgam2. Remove it also under GP when compatible = 3. Situation is the same as incgam1 (removed long ago), 1.39.15 doc stated both were provided "for debugging only". - Change of behaviour for Set(t_STR): Set("1") used to return ["1"], now it returns ["\"1\""], i.e returns the set whose element evaluates to the character string "1". - Flags 4, 5, 6 (useless) have disappeared in nfinit() - norml2(t_POL) now returns the expected (square of) the polynomial 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) - kill(z) has essentially the same effect as z = 'z [ it also kills addhelp messages attached to z, and works for aliases and installed functions too ] - removed optional flag to rnfconductor, use rnfisabelian. - changed the "zetakinit" format: bnf no longer included - 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. ] - 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") - 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.) - ellwp now outputs a number of terms equal to the default seriesprecision, instead of *twice* that number. - inverse trigonometric functions (acos,asin,atan,acosh,asinh,atanh): values on the branch cuts changed to conform to standards, e.g. "implementations shall map a cut so the function is continuous as the cut is approached coming around the finite endpoint of the cut in a counter clockwise direction." (ISO C99) - bnfinit no longer outputs a warning when fundamental units couldn't be computed (annoying and rather useless) [#1166] -[Configure] no longer support a link to an uninstalled readline library in PARI toplevel - thue() no longer outputs a Warning when the result is conditional on the GRH. - addprimes() now includes its argument as-is (used to take gcds, making an insertion linear in the table size instead of O(1); filling an inially empty table was quadratic in the final table size). They must be true primes, otherwise number theoretic routines may return wrong values. [#322] * Specific to the PARI library: =============================== - allocatemoremem() is gone. Use allocatemem(). - rename fprintferr() -> err_printf(). - rename TIMER -> timer_delay, TIMERread -> timer_get, TIMERstart -> timer_start, msgTIMER -> timer_printf - rename gener_Fp -> pgener_Fp, gener_Fl -> pgener_Fp [ contrary to 'gener', these assume that their argument is prime ] - rename Flx_rand -> random_Flx, FpX_rand -> random_FpX - rename cyclo -> polcyclo (GP name), subcyclo -> polsubcyclo (GP name), tchebi -> polchebyshev (GP name), legendre -> pollegendre (GP name) - only scalar types (and vectors/matrices of such) are allowed in gaffect and gaffsg. - pol_x and pol_1 are now functions, not global arrays. Use pol_x(v) instead of pol_x[v]. polvar[] and ordvar[] have disappeared - rename ZY_ZXY_resultant -> ZX_ZXY_resultant, ZY_ZXY_rnfequation -> ZX_ZXY_rnfequation and FpY_FpXY_resultant -> FpX_FpXY_resultant - FpX_ functions no longer accept p==NULL. - Fl_pow renamed to Fl_powu [ exponent may not be negative ] - rename pointch -> ellchangepoint, coordch -> ellchangecurve, ordell -> ellordinate - remove obsolete undocumented functions outerr, outbeauterr, outsor, outtex. Rename voir -> dbgGEN. Functions brute, outbrute, matbrute, outmat, sor, outbeaut are obsoleted and no longer documented. - rename errfile -> pari_errfile, infile -> pari_infile, logfile -> pari_logfile - manage_var obsoleted (kept for backward compatibility, to be removed), use pari_var_init, pari_var_next, pari_var_max_avil, pari_var_create instead. - rename sqred -> qfgaussred, signat -> qfsign - rename gscalmat -> scalarmat, gscalsmat -> scalarmat_s, gscalcol -> scalarcol, gscalcol_i -> scalarcol_shallow - removed obsolete apell2, ellap0. Rename apell -> ellap. - typedef for type col_counter [last argument of unused, undocumented plot_count()] changed (must be malloced since MAX_COLORS is no longer a constant) - rename gissquarerem -> gissquareall, uissquarerem -> uissquareall, Z_issquarerem -> Z_issquareall (analogy with sqrtrem was faulty: we do not store a remainder but the square root) - rename assmat -> matcompanion, polymodrecip -> modreverse - removed obsolete undocumented bruteall() - %Z is no longer a valid conversion specification for PARI formats, since this is now handled as a length modifier. Use %Ps instead. - rename pariprintf -> pari_printf (%Z conversion disappeared, use %Ps) - rename pariputc -> pari_putc, pariputs -> pari_puts, pariflush -> pari_flush - rename gpmalloc -> pari_malloc, gprealloc -> pari_realloc, gpfree -> pari_free - rename derivpol -> RgX_deriv - obsolete library functions roots2 and rootsold are no longer public - rename factorpadic4 -> factorpadic, factorpadic2 now static - the "prec" parameter has disappeared in all floating point LLL various - remove obsolete function factpol() - rename library functions nfhermite -> nfhnf, nfhermitemod -> nfhnfmod, nfsmith -> nfsnf - rename subres -> resultant, subresall -> resultant_all. - remove obsolete discsr. Use RgX_disc (or quad_disc, qfb_disc...) - remove obsolete allbase, base, base2, factoredbase, smallbase, discf2, factoreddiscf, smalldiscf. Use nfbasis0 / nfdisc0 / nfmaxord - rename library functions matrixqz2 -> QM_ImZ_hnf, matrixqz3 -> QM_ImQ_hnf, matrixqz -> QM_minors_coprime - rename library functions hil0->hilbert, hilii->hilbertii - rename library functions srgcd -> RgX_gcd - rename library functions ismonome -> RgX_is_monomial - remove obsolete buchray, buchrayinit, buchrayinitgen: use Buchray. - rename library functions minideal -> idealmin and change prototype - rename library functions element_mulmodpr -> nfmulmodpr, element_powmodpr -> nfpowmodpr, element_val -> nfval, element_add -> nfadd, element_divmodpr -> nfdivmodpr, element_mul -> nfmul, element_pow -> nfpow, element_div -> nfdiv. - remove obsolete library function smallfact; use boundfact or Z_factor_limit - rename mu -> moebius, gmu -> gmoebius, phi -> eulerphi, gphi -> geulerphi, phiu -> eulerphiu, gener -> znprimroot, ggener -> znprimroot0, racine -> sqrtint [ NO COMPATIBILITY #define PROVIDED: too dangerous ] - rename regula -> quadregulator, fundunit -> quadunit - remove obsolete library function gracine - remove obsolete library function ispsp, gispsp. Use ispseudoprime or BPSW_psp. - remove obsolete library function gregula, gfundunit. Use quadregulator and quadunit - removed obsolete 'prec' argument from prototypes of idealmul0, idealmulred, idealpow0, idealpowred, ideallllred, algdep, algdep0, lindep, lindep0 - removed obsolete library functions ideallistunit, ideallistunitgen, ideallistzstar, ideallistzstargen. Use ideallist0. - removed obsolete library function algdep2. Use algdep0 (same arguments). - removed obsolete library function Mod0. Use gmodulo. - factorback() now accepts a single argument. - rename library functions factorback0 -> factorback2, subfields0 -> nfsubfields, ideallllred -> idealred0, zideallog -> ideallog, isunit -> bnfisunit, ideal_two_elt* -> idealtwoelt* - changed prototypes of bnrdisc, bnrconductor, bnrisconductor [ actually renamed bnrdisc0, bnrconductor0, bnrisconductor0 ]. Just use the new prototype, it's more convenient. - removed obsolete library function kerin1. Use kerint or [simpler if LLL reduction of the returned basis is not deisred] ZM_lll(,0.99,LLL_KER) - rename library functions initell -> ellinit, smallinitell -> smallellinit initalg -> nfinit, initalgred -> nfinitred -> initalgred2 -> nfinitred2 primedec -> idealprimedec, powraw -> qfbpowraw, compraw -> qfbcompraw - rename library function u2toi -> uu32toi. - remove obsolete library functions sor, outbrute, outbeaut - basic 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 - deprecated global constants gi; use mulcxI, gen_I() or mkcomplex(). - deprecated global constants geuler & gpi; use mpeuler() & mppi(). - changed prototype of galoisconj: galoisconj(x) -> galoisconj(x,NULL) - commented out a large section of pariold.h. Define PARI_OLD_NAMES to recover compatibility macros for old friends like 'un' and 'lstoi' - rename greffe -> RgX_to_ser and remove the "use_pari_stack" flag - rename Buchall -> Buchall_param and export a new Buchall with a simplified interface. - rename certifybuchall -> bnfcertify - the bitvec family function was replaced by the new F2v family functions. - prototype change: added a flag to the (mostly useless) function rnfdedekind(), the version with the flag set is more useful. - rename gcmp0 -> gequal0, gcmp1 -> gequal1, gcmp_1 -> gequalm1 - rename ZX_caract -> ZXQ_charpoly and swap arguments. - rename RgXQ_u_pow -> RgXQ_powu - remove function delete_named_var (using kill0 instead). - remove RgM_ishnf (use ZM_ishnf instead). - rename leftright_pow to gen_pow, leftright_pow_u to gen_powu. - remove unused 'prec' argument in rnfinitalg(). Rename rnfinitalg -> rnfinit - remove unused 'prec' argument in bnfisnorm() - add a third precdl argument to gtoser() - the last 2 arguments of ellwp0 (prec and precdl) have been swapped - prototype of "summation" functions (suminf,intnum,prodinf,etc.) now is fun(void *E, GEN call(void*, GEN),...) %%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION 2.2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% * General: [ use GP function names in description ] ========== - Default args for user defined functions now evaluated when function is called (used to be: at definition time) E.g f(x) = local(z = x); z. Before: f(2) -> x Now: f(2) -> 2 - rnfisnorm() input format has changed. Older version was complicated and only worked if rnfequation(bnf, p, 1)[3] == 0 [otherwise, crash]. Use rnfisnorminit() now. - rnfidealreltoabs, rnfidealup: now return a Z-basis as a vector of elements in the relative extension, instead of a meaningless HNF matrix wrt an unknown basis. Was especially dangerous if the extension also existed in nfinit form, since the HNF matrices were _not_ ideals wrt this nf structure. [ also consistent with rnfeltreltoabs ]. Use the following construction instead, referring to an explicit NF structure: \\ return y = rnfidealup(rnf,...) as an ideal in HNF form associated to \\ nf = nfinit(rnf.pol); idealgentoHNF(nf, y) = mathnf( Mat( nfalgtobasis(nf, y) ) ); - the "bit accuracy component" for computations of principal ideal generators (bnfisprincipal), units (bnfunit), and some of the bnf structures has been removed. - the "technical parameter" to bnfinit() has been shortened to 3 components (the others were deprecated / useless): [c, c2, nrpid]. The output format has changed (technical components). - poldegree(0) now returns -VERYBIGINT, not -1. Before using d = poldegree(x), always check for 0 first: either (x == 0) or (d >= 0) as you prefer. Never check for d == -1 or -2^31-1 which is not portable. - ellheight now uses the standard normalization: twice the value it used to return. The values returned by ellbil() and ellheightmatrix are unaffected. In particular, ellheightmatrix() is the polar form of elleight(), and ellbil now satisfies the proper identity B(P, Q) = (h(P+Q)-h(P)-h(Q)) / 2 - ':' no longer allowed as a substitute for ';' if compatible = 0. Use GP2C semantics [ x:int, v:vec ]. For the time being the type information is discarded. - log(x, {flag}): optional flag removed. Decide alone whether to use AGM. - valuation(x, 1) used to return 1, valuation(x, -1) returned 0 if (x >= 0) and 1 otherwise. Not anymore: error message. - bnrdisclist has lost its 4th argument 'flag', and omitting the archimedean component now means that all 2^r1 possible values are substituted (formerly: indicate no ramification at infinity). - 'buffersize' default has disappeared: it is adjusted internally whenever needed. The -b xxx flag to gp is a no-op. - the member function bnr.zkst is deprecated, use bnr.bid.clgp - the member function bnr.futu is deprecated. Please don't use bnr.tufu either. - use \frac instead of \over in TeX output. Define \def\frac#1#2{{#1\over#2}} if you insist on using plain TeX and run into problems. - automatic concatenation for strings: use longest match for expression. print("a"[1]) is not valid since "a" is not a vector print("a", [1]) prints 'a[1]'. - isprime() now guarantees primality, use ispseudoprime() for fast pseudo-primality tests. - default() now always returns the value of the (possibly changed) default. No need for a flag anymore. - semantic of t_SER with inexact coefficients is now the same as for t_POL: the sign is 0 iff all coefficients are zero. Either there are no coefficients, or the leading coefficient is an inexact zero. - No longer assume that part of an object is "permanent" when it is out of the stack (was used by INTMOD/POLMOD/PADIC). Always copy it. As a result, 'gmodulo' and 'forcecopy' become obsolete. Rename gmodulcp -> gmodulo. * Specific to the PARI library: =============================== Incompatible changes: --------------------- - gsize() -> gsizeword() [conflict with gtk] taille2 -> gsizebyte() - hnfhavas removed (didn't work properly, hnflll provides an alternative) - real zeroes are now coded on 2 words. Beware of constructs like t = cgetg(lg(x), t_REAL); gaffect(y, t). If x = 0, so will be t. - polgalois(): old format deprecated. New preferred format for result has 3rd component giving numbering among all transitive subgroups of S_n [ was ad hoc up to 7, as described above for n >= 8 ]. Old format is still the default, but will eventually change. Use default(new_galois_format, 1) or, in library mode, set global variable new_galois_format to 1 to enable the new format. - The nf structure output by nfinit has changed: *) nf.zk is now T2-LLL-reduced, not in HNF wrt the power basis *) the internal components of nf[5] have changed (MC and T2 not needed anymore) - polred & polredabs do not take a 'prec' argument anymore [was unused] - gentimer / genmsgtimer / get_timer have been removed. They are superseded by TIMER and msgTIMER which are fully reentrant and easier to use. - (undocumented) macros buch[gen | genfu | init | iniftu] - rnfisnorm() prototype has changed [ + need to call rnfisnorminit first ] - incgam4 renamed to incgam0, incgam3 renamed to incgamc - prototypes of buchall and smallbuchinit have changed (much simpler) - co8() renamed to quadtoc() - ker_mod_p() renamed to FpM_ker [ and supplemented with many analogous modular routines ] - nfreducemodpr2() removed, use an nfmodpr structure from nfmodprinit() or zkmodprinit() instead - smodsi() removed [ not well defined ]. Use either modsi() or umodui() - Many error codes were removed. It is usually better to use only talker outside libpari. - Macro BITS_IN_RANDOM has been removed. Used to be 32. - mymyrand() has been removed, use pari_rand31() or pari_rand() instead - diviiz(x,y,z), divisz, divsiz and divssz always assign the euclidean quotient [ used to depend on the type of z: if t_REAL computed exact quotient ]. Use rdivii, rdivis, rdivsi, rdivss for analogous functionality (no "z" variant); - mpdivz(x,y,z) assigns the euclidean quotient when x,y are t_INT (used to depend on the type of z) - removed inconsistently named macros mpinv[sir]r [ were "z" functions ] - removed useless routine shifts [ use shifti( stoi() ) ] - library interface of functions intnum, prodeuler, suminf, sumalt, sumalt2, sumpos, sumpos2, prodinf, prodinf1 [ use GEN (*eval)(GEN,void*) everywhere instead of entree * ] - changed the prototype of bnrdisclist0 - removed ideallistarch0, ideallistarchgen, ideallistunitarch, ideallistunitarchgen. Just use ideallistarch. - change the output of ideallist with technical (flag 2,3) [ with units ]: instead of two vectors, output a vector of 2-component vectors. change the input of all list routines (bnrclassnolist, bnrdisclist) accordingly. - rename gtrans_i -> shallowtrans, concatsp -> shallowconcat. - pari_err(warner | warnmem | warnfile | warnprec,) no longer accepted. Use pari_warn. Partially compatible changes: ----------------------------- [ not mandatory for your program to work with 2.3, since compatibility macros support the old names but are likely to become mandatory in 2.4, so we advise you to update soon ] - typecasting macros (e.g. ladd(), lmul() ...) are obsolete and shouldn't be used in new programs. Use accessors gel() and friends. - stack locations used to be of type long or ulong, now they have a dedicated type pari_sp [ pari stack pointer ] - in order to compare variable numbers, use the macro varncmp() instead of < or > operators. - access to the prime numbers table is done via the macros NEXT_PRIME_VIADIFF or NEXT_PRIME_VIADIFF_CHECK. - direct access to the mantissa of t_INT is deprecated. Instead you should use the t_INT API (macros int_MSW, int_LSW, int_precW, int_nextW, int_W). This will ensure your code is compatible with both native and GMP kernels. - the macros lgef / setlgef / evallgef have been removed. t_POLs no longer include an "effective length". One should use lg() for t_POLs as for most other types. Don't use lgef() in new code. lgef() and setlgef() are aliased to lg() and setlg(). They will break on hackish code accessing directly the first component of t_POL objets, e.g x = cgetg(20, t_POL); x[1] = evalsigne(1) | evalvarn(0) | evallgef( 10 ) /* 10, not 20 */ ... setlgef(x, 20); /* now create/use further coefficients */ - types t_FRACN, t_RFRACN and gred() have been removed (complicated, unused, and very inefficient). There are now aliases to t_FRAC, t_RFRAC and gcopy respectively for backward compatibility. - renamed nfdivres -> nfdivrem, poldivres -> poldivrem - renamed permute -> numtoperm, permuteInv -> permtonum - renamed gzero -> gen_0, gun -> gen_1, gdeux -> gen_2, polx -> pol_x, polun -> pol_1 - renamed gegal -> gequal, gegalgs -> gequalgs, gegalsg -> gequalsg, egalii -> equalii - renamed binome -> binomial, chinois -> chinese - renamed apprgen9, apprgen -> padicappr, factmod9 -> factorff - rename resss -> remss, ressi -> remsi, resis -> remis, resii -> remii, gres -> grem - rename divise -> dvdii, gdivise -> gdvd, mpdivis -> dvdiiz, mpdivisis -> dvdisz - rename mpent -> mpfloor - rename isprincipalrayall -> bnrisprincipal, rayclassno -> bnrclassno rayclassnolist -> bnrclassnolist - rename globalreduction -> ellglobalred, localreduction -> elllocalred - taniyama(e) is deprecated. Use elltaniyama(e, prec) instead of old = precdl; precdl = prec; x = taniyama(e); precdl = old; - rename lisexpr -> readexp, lisseq -> readseq - rename flisexpr, flisseq -> gp_read_str - rename lisGEN -> gp_read_stream - rename idmat -> matid - rename coefs_to_col -> mkcoln, coefs_to_int -> mkintn coefs_to_pol -> mkpoln, coefs_to_vec -> mkvecn - rename wf -> weberf, wf1 -> weberf1, wf2 -> weberf2 - rename err -> pari_err, pariputsf -> pariprintf - rename rnfhermitebasis -> rnfhnfbasis - rename gcarreparfait -> gissquare, gcarrecomplet -> gissquarerem - rename lseriesell -> elllseries - gmodulo and forcecopy are obsolete. Use gmodulcp and gcopy. %%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION 2.1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% * The calculator GP: ==================== - most function names have changed (see misc/new.dic or use whatnow under GP) - lowercase / uppercase letters distinguished. - the syntax \var = value is not recognized anymore. Use standard metacommands instead. (setting the compatibility level "compatible" to 3, with "default" will give you those three back). - strict parenthesis matching before executing the command (set strictmatch to 0 to get old behaviour) - functions label / goto have been removed (use break/next/return instead). - conjugation x_ has been removed. '_' can be freely used in identifiers. - \k metacommand removed - result history is now cyclic (older results are erased when the maximal size "histsize" is reached). - the Set() function turns objects into strings (so that set functions are able to treat arbitrary objects). Use eval to turn them back to GENs. - the type() function returns a string and not a number. - sum(X=a,b,...,x) yields x if b<a. Analogous statement for prod. * The library PARI: =================== - use symbolic type names (t_INT, etc.). Don't use any explicit type number in your programs since these are liable to change (they have not, but will). - the codewords of GEN objects have a different internal structure. The components should only be accessed through the documented macros. When creating codeword x[1] for the GEN x, use the eval* macros (the set* ones don't fill the codeword completely). - the following constant names have changed ("pari" prepended): C1, C2, C3, K, K1, K2, K4. The constant C31 has disappeared. - prec and defaultpadicprecision are no longer global. The latter has disapeared. - char *pariversion not set anymore (use the macros PARIVERSION/PARIINFO) - LONG_IS_32BIT is never defined (test whether LONG_IS_64BIT is defined or not). - gen2str() renamed to GENtostr(). - gitoascii() suppressed, use GENtostr(). - init() renamed to pari_init(). - the macro mant() has been suppressed. - imprimer() suppressed. output() is now a function and can be used under all debuggers. - the prototypes and behaviour of gredsp() and normalize() have changed. They are not documented anymore. - the install() function has been modified (use codes instead of valence). - gpuigs only has two arguments. - integ now takes two arguments, like deriv. - setrand, getrand, getstack, gettime, glength return a C long, and not a GEN. - pari_randseed no longer global, use setrand/getrand - gerepile(ltop,lbot,0) no longer returns ltop - lbot - nf[5][7] stored in two element form (was Z-basis) for faster inversion - t_POL and t_POLMOD can be freely mixed as long as main variables are the same (result is the expected POLMOD)
Generated by dwww version 1.15 on Thu Jun 20 13:31:28 CEST 2024.