File: NEW

package info (click to toggle)
pari 2.17.3-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 24,508 kB
  • sloc: ansic: 281,184; sh: 861; perl: 420; yacc: 214; makefile: 162; f90: 88
file content (215 lines) | stat: -rw-r--r-- 9,020 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
This file highlights some of the novelties in PARI/GP 2.17 compared to
latest stable branch 2.15.*. The detailed Changelog is in CHANGES.
Incompatible changes are described in COMPAT.

%%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION 2.17 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[The GP language]
  - A few default values have been changed to take into account modern hardware
    (compared to the 1990s) and unified over 32bit and 64bit architectures:
      default 'parisize' is now 8M on all architectures
      default 'realprecision' is now 38 on all architectures
      default 'realbitprecision' is now 128 on all architectures
      default 'primelimit' is now 2^20 [instead of 500000]
    Now support kB or KB, MB, GB and TB as units for memory sizes (2^10, 2^20,
    2^30 and 2^40 bytes); in addition to the existing k or K, M, G and T (10^3,
    10^6, 10^9, 10^12 bytes).

  - New GP default 'factorlimit' (default value is 2^20, which is the default
    primelimit), allowing fast trial division by all primes up to that bound.
    See ??factorlimit for details and examples. Be careful with this one: it
    involves a precomputation on startup, which is not noticeable for the
    default value of 2^20, but requires 5 minutes when the value is increased
    to 2^32.

  - forvec: a new syntax is availabe to loop over representatives of
    Z^n / v Z^n, where v is a vector of non-negative integers. This allows to
    iterate over elements of an abelian group using its .cyc vector.

  - New GP function mapapply, see ??mapapply for usecases

  - New GP function parforstep

[Lattices and Quadratic Forms]
  - New GP function qfcvp for Closest Vector Problems (related to the existing
    qfminim which handles Smallest Vector Problems)

  - New GP function qfcholesky

  - New recursive implementation of the qflll and qflllgram functions
    using the FLATTER reduction algorithm of N. Heninger and K. Ryan.

  - Allow qfsolve([Q, F]) where F is the factorization of disc(Q).

  - Allow Qfb(a*x^2 + b*x + c) and Qfb([a,b0; b1,c]) to input t_QFB a binary
    quadratic form.

[Elementary Number Theory]
  - forprimestep: allow arbitrary modulus (was limited to 2^64)

  - Dirichlet characters: allow t_INTMOD Mod(m,N) as a Conrey label for the
    character m mod N in all functions (expecting Dirichlet characters).

[Elliptic Curves and Curves of Higher Genus]
  - New GP function ellisisom: test whether two curves defined over the same
    base field are isomorphic and if so return the change of coordinates. The
    current implementation only supports number fields.

  - New GP function elliscm: test whether an elliptic curve defined over
    a number field has CM; if so, return the discriminant of its endomorphism
    ring.

  - New GP function ellsupersingularj(p): p being a prime number return a
    random supersingular j-invariant defined over F_{p^2}; also allow p to
    be a t_FFELT in which case the j-invariant is defined over the field of
    definition of p. The random distribution is close to uniform except when
    0 or 1728 are supersingular j-invariants (those are less likely).

  - New GP function polisclass(P): P being a monic irreducible polynomial in
    Z[X], return the discriminant D < 0 such that P = polclass(D) when P is
    a class polynomial for the j-invariant. Otherwise return 0.

  - New GP function ellmaninconstant, returns the Manin constant of a
    rational elliptic curve or isogeny class (from ellisomat). The algorithm
    is slow but unconditional.

  - New GP function hyperellordinate(H, x) return the y-coordinates of all
    affine points on the hyperelliptic curve H with x as x-coordinate.

  - New GP function genus2igusa(H): return the Igusa invariants
    [J2,J4,J6,J8,J10] of the hyperelliptic curve H of genus 2 (defined over a
    field of characteristic different from 2). An optional flag
    allows to compute a single invariant.

  - ellisomat: when E/nf has CM by a quadratic order included in nf,
    return the discriminant of the order instead of an error.

[L-functions]
  - dirpowerssum: allow functions with t_VEC output; add optional flag 'both'
    to simultaneously compute sum f(n) n^s and sum \bar{f}(n) n^(-1-s).

  - lfun for degree 1 L-functions (zeta and Dirichlet L-functions) at complex
    s = c + I * t : use O(sqrt(|t|)) Riemann-Siegel formula instead
    of O(t) Euler-Maclaurin. Values of |t| up to 10^16 or so become feasible
    in about 1 minute, where Euler-Maclaurin ran out of stack after hours of
    computation.

    ? zeta(1/2 + 10^12*I) \\ a few hours before running out of stack in 2.15
    time = 311 ms.
    %1 = 2.87796... - 3.20677...*I

    ? zeta(1/2+10^14*I)
    time = 2,564 ms.
    %2 = 7.33484... + 3.24237...*I

    ? zeta(1/2+10^16*I)
    time = 22,097 ms.
    %3 = 0.404494... + 3.67403...*I

    ? lfun(-4, 1/2+10^10*I) \\ Dirichlet L-function for quadratic char (-4/n)
    time = 85 ms.
    %4 = 0.0012889... + 0.006625758...*I

    ? lfun(Mod(2,23), 1/2+10^10*I) \\ General character, Conrey notation
    time = 197 ms.
    %5 = 0.0327006... + 0.1640295...*I

  Same for zetahurwitz and lerchzeta: use Tyagi's method when |t| is large

  - allow lfuncreate([bnr, subg]) to (efficiently) describe Dedekind zeta for
    an Abelian number field

[Number Fields and Central Simple Algebras]
  - faster qfbsolve when RHS is prime and disc < 0 (use qfbcornacchia whenever
    possible).

  - bnfisintnorm: allow returning the results in factored form which helps
    a lot when fundamental units are huge, see example in ??bnfisintnorm

  - nfnewprec: also support 'rnf' structures from rnfinit

  - alginit: optional flag supports new values (was used to avoid computing
    a maximal order; now also allows to use lazy factorization of
    discriminants producing an order which is maximal at the known prime
    factors)

  - New GP function bnrstarkunit: returns the characteristic polynomial of
    the (conjectural) Stark unit used in the bnrstark() function to construct
    class fields of totally real bases.

  - New GP function nfweilheight to compute the absolute logarithmic Weil
    height of an element in P^n(K), where K is a number field.

[Transcendental functions]
  - allow erfc(t_SER).

  - add an optional argument to psi() to compute derivatives and
    allow psi(t_PADIC).

  - allow hypergeom(N,D,t_PADIC).

[Miscellaneous]
  - allow n# for the primorial of n (product of primes <= n)

  - allow vecmin and vecmax to handle t_LIST inputs

  - allow abs(+oo), abs(-oo)  (= +oo)

  - allow fromdigits(t_COL or t_VECSMALL, B)

  - digits: also support negative bases (but stick with non-negative digits).

  - New GP function polfromroots

  - New GP function plotarc(w, x2, y2): draw an ellipse (possibly filled)
    that fits in a box defined by current cursor position and point (x2,y2)

[Kernel]
  - new riscv64 assembly kernel.

COMPATIBILITY ISSUES BETWEEN 2.15.* and 2.17.*
============================================

0) Obsoleted functions and interfaces:
  - Qt4 graphing engine is no longer supported

  - removed lfunabelianrelinit. Use lfunfinit([bnr, subgroup]) instead.

  - [libpari] t_SER type: valser, evalvalser, setvalser need to be used instead
    of valp, evalvalp, setvalp (which become specific to p-adic numbers)

  - [libpari] the diffptr low level interface is gone (table of difference
    of primes), replaced by a table of 32bit primes (pari_PRIMES).
    The byteptr type and following functions / macros are gone: initprimes,
    init_primepointer_geq, init_primepointer_gt, init_primepointer_leq,
    init_primepointer_lt NEXT_PRIME_VIADIFF, PREC_PRIME_VIADIFF,
    NEXT_PRIME_VIADIFF_CHECK.

1) Output changes:
  - specify how Vec(v, n) truncates v when #v > |n|. Changes previous
    behaviour when n < 0: Vec([1,2,3], -2) -> [2,3]  (was [1,2])
    Same for Vecrev, Vecsmall, Col, and Colrev.

  - changed qfbred to use the same (standard) normalization as qfbredsl2 in
    all cases (was different for real forms)

  - binomial(negative t_INT, t_INT): use D. Loeb's definition which ensures
    (a + b)^n = sum_{k >= 0} binomial(n, k) a^(n-k) b^k for all complex
    numbers a, b, n with |b| < |a|. Beware that this extension is
    incompatible with the other traditional extension binomial(n, k) := 0
    if k < 0.

  - printf: numerical conversions now also apply (recursively) to complex
    numbers

2) Input changes:
  - [libpari] major change in libpari's handling of "transcendental"
    functions: 'prec' arguments now represent a number of significant 'bits'
    (instead of an 'lg' counting words). Programs written using the proper
    interface (prec2nbits/nbits2prec macros and constants such as DEFAULTPREC)
    should not need an update.

    On the other hand, low-level code comparing directly 'lg' and 'prec'
    operands or using hardcoded precision (such as '3' as in a [deprecated
    for 20 years] cgetr(3) initialization) must be updated (a priori using new
    macros prec2lg / lg2prec and proper symbolic constants).