1 /* Copyright (C) 1999-2004  The PARI group.
2 
3 This file is part of the PARI/GP package.
4 
5 PARI/GP is free software; you can redistribute it and/or modify it under the
6 terms of the GNU General Public License as published by the Free Software
7 Foundation; either version 2 of the License, or (at your option) any later
8 version. It is distributed in the hope that it will be useful, but WITHOUT
9 ANY WARRANTY WHATSOEVER.
10 
11 Check the License for details. You should have received a copy of it, along
12 with the package; see the file 'COPYING'. If not, write to the Free Software
13 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
14 
15 /*******************************************************************/
16 /*                                                                 */
17 /*                DECLARATIONS of PUBLIC FUNCTIONS                 */
18 /*                                                                 */
19 /*******************************************************************/
20 #include "parinf.h"
21 
22 /* black box groups */
23 struct bb_group
24 {
25   GEN   (*mul)(void *E, GEN, GEN);
26   GEN   (*pow)(void *E, GEN, GEN);
27   GEN   (*rand)(void *E);
28   ulong (*hash)(GEN);
29   int   (*equal)(GEN,GEN);
30   int   (*equal1)(GEN);
31   GEN   (*easylog)(void *E, GEN, GEN, GEN);
32 };
33 
34 /* black box fields */
35 struct bb_field
36 {
37   GEN (*red)(void *E ,GEN);
38   GEN (*add)(void *E ,GEN, GEN);
39   GEN (*mul)(void *E ,GEN, GEN);
40   GEN (*neg)(void *E ,GEN);
41   GEN (*inv)(void *E ,GEN);
42   int (*equal0)(GEN);
43   GEN (*s)(void *E, long);
44 };
45 
46 /* black box algebra */
47 struct bb_algebra
48 {
49   GEN (*red)(void *E, GEN x);
50   GEN (*add)(void *E, GEN x, GEN y);
51   GEN (*sub)(void *E, GEN x, GEN y);
52   GEN (*mul)(void *E, GEN x, GEN y);
53   GEN (*sqr)(void *E, GEN x);
54   GEN (*one)(void *E);
55   GEN (*zero)(void *E);
56 };
57 
58 /* black box ring */
59 struct bb_ring
60 {
61   GEN (*add)(void *E, GEN x, GEN y);
62   GEN (*mul)(void *E, GEN x, GEN y);
63   GEN (*sqr)(void *E, GEN x);
64 };
65 
66 /* OBSOLETE */
67 GEN     buchimag(GEN D, GEN c1, GEN c2, GEN gCO);
68 GEN     buchreal(GEN D, GEN gsens, GEN c1, GEN c2, GEN gRELSUP, long prec);
69 GEN     zidealstar(GEN nf, GEN x);
70 GEN     zidealstarinit(GEN nf, GEN x);
71 GEN     zidealstarinitgen(GEN nf, GEN x);
72 GEN     factmod(GEN f, GEN p);
73 void    mpbern(long n, long prec);
74 GEN     simplefactmod(GEN f, GEN p);
75 void    listkill(GEN list);
76 GEN     isprincipalforce(GEN bnf,GEN x);
77 GEN     isprincipalgen(GEN bnf, GEN x);
78 GEN     isprincipalgenforce(GEN bnf,GEN x);
79 
80 /* F2v.c */
81 
82 GEN     F2Ms_ker(GEN M, long nrows);
83 GEN     F2Ms_to_F2m(GEN M, long nrows);
84 GEN     F2c_to_ZC(GEN x);
85 GEN     F2c_to_mod(GEN x);
86 GEN     F2m_F2c_gauss(GEN a, GEN b);
87 GEN     F2m_F2c_invimage(GEN A, GEN y);
88 GEN     F2m_F2c_mul(GEN x, GEN y);
89 GEN     F2m_deplin(GEN x);
90 ulong   F2m_det(GEN x);
91 ulong   F2m_det_sp(GEN x);
92 GEN     F2m_gauss(GEN a, GEN b);
93 GEN     F2m_inv(GEN x);
94 GEN     F2m_invimage(GEN A, GEN B);
95 GEN     F2m_ker(GEN x);
96 GEN     F2m_ker_sp(GEN x, long deplin);
97 GEN     F2m_mul(GEN x, GEN y);
98 GEN     F2m_powu(GEN x, ulong n);
99 long    F2m_rank(GEN x);
100 GEN     F2m_row(GEN x, long j);
101 GEN     F2m_rowslice(GEN x, long a, long b);
102 GEN     F2m_to_F2Ms(GEN M);
103 GEN     F2m_to_Flm(GEN z);
104 GEN     F2m_to_ZM(GEN z);
105 GEN     F2m_to_mod(GEN z);
106 GEN     F2m_transpose(GEN x);
107 void    F2v_add_inplace(GEN x, GEN y);
108 void    F2v_and_inplace(GEN x, GEN y);
109 ulong   F2v_dotproduct(GEN x, GEN y);
110 int     F2v_equal0(GEN a);
111 ulong   F2v_hamming(GEN H);
112 void    F2v_negimply_inplace(GEN x, GEN y);
113 void    F2v_or_inplace(GEN x, GEN y);
114 GEN     F2v_slice(GEN x, long a, long b);
115 GEN     F2v_to_Flv(GEN x);
116 GEN     matid_F2m(long n);
117 
118 /* F2x.c */
119 
120 GEN     F2x_F2xq_eval(GEN Q, GEN x, GEN T);
121 GEN     F2x_F2xqV_eval(GEN P, GEN V, GEN T);
122 GEN     F2x_Frobenius(GEN T);
123 GEN     F2x_1_add(GEN y);
124 GEN     F2x_add(GEN x, GEN y);
125 GEN     F2x_deflate(GEN x0, long d);
126 GEN     F2x_degfact(GEN f);
127 long    F2x_degree(GEN x);
128 GEN     F2x_deriv(GEN x);
129 GEN     F2x_divrem(GEN x, GEN y, GEN *pr);
130 ulong   F2x_eval(GEN P, ulong x);
131 void    F2x_even_odd(GEN p, GEN *pe, GEN *po);
132 GEN     F2x_extgcd(GEN a, GEN b, GEN *ptu, GEN *ptv);
133 GEN     F2x_gcd(GEN a, GEN b);
134 GEN     F2x_get_red(GEN T);
135 GEN     F2x_halfgcd(GEN a, GEN b);
136 int     F2x_issquare(GEN a);
137 GEN     F2x_matFrobenius(GEN T);
138 GEN     F2x_mul(GEN x, GEN y);
139 GEN     F2x_recip(GEN T);
140 GEN     F2x_rem(GEN x, GEN y);
141 GEN     F2x_shift(GEN y, long d);
142 GEN     F2x_sqr(GEN x);
143 GEN     F2x_sqrt(GEN x);
144 GEN     F2x_to_F2v(GEN x, long n);
145 GEN     F2x_to_F2xX(GEN z, long sv);
146 GEN     F2x_to_Flx(GEN x);
147 GEN     F2x_to_ZX(GEN x);
148 long    F2x_valrem(GEN x, GEN *Z);
149 GEN     F2xC_to_FlxC(GEN v);
150 GEN     F2xC_to_ZXC(GEN x);
151 GEN     F2xV_to_F2m(GEN v, long n);
152 void    F2xV_to_FlxV_inplace(GEN v);
153 void    F2xV_to_ZXV_inplace(GEN v);
154 GEN     F2xX_F2x_add(GEN x, GEN y);
155 GEN     F2xX_F2x_mul(GEN P, GEN U);
156 GEN     F2xX_add(GEN x, GEN y);
157 GEN     F2xX_deriv(GEN z);
158 GEN     F2xX_renormalize(GEN /*in place*/ x, long lx);
159 GEN     F2xX_to_Kronecker(GEN P, long d);
160 GEN     F2xX_to_FlxX(GEN B);
161 GEN     F2xX_to_ZXX(GEN B);
162 GEN     F2xX_to_F2xC(GEN x, long N, long sv);
163 GEN     F2xXV_to_F2xM(GEN v, long n, long sv);
164 GEN     F2xXC_to_ZXXC(GEN B);
165 GEN     F2xY_F2xq_evalx(GEN P, GEN x, GEN T);
166 GEN     F2xY_F2xqV_evalx(GEN P, GEN x, GEN T);
167 long    F2xY_degreex(GEN b);
168 GEN     F2xn_inv(GEN f, long e);
169 GEN     F2xn_red(GEN a, long n);
170 GEN     F2xq_Artin_Schreier(GEN a, GEN T);
171 GEN     F2xq_autpow(GEN x, long n, GEN T);
172 GEN     F2xq_conjvec(GEN x, GEN T);
173 GEN     F2xq_div(GEN x,GEN y,GEN T);
174 GEN     F2xq_inv(GEN x, GEN T);
175 GEN     F2xq_invsafe(GEN x, GEN T);
176 GEN     F2xq_log(GEN a, GEN g, GEN ord, GEN T);
177 GEN     F2xq_matrix_pow(GEN y, long n, long m, GEN P);
178 GEN     F2xq_mul(GEN x, GEN y, GEN pol);
179 GEN     F2xq_order(GEN a, GEN ord, GEN T);
180 GEN     F2xq_pow(GEN x, GEN n, GEN pol);
181 GEN     F2xq_pow_init(GEN x, GEN n, long k,  GEN T);
182 GEN     F2xq_pow_table(GEN R, GEN n, GEN T);
183 GEN     F2xq_powu(GEN x, ulong n, GEN pol);
184 GEN     F2xq_powers(GEN x, long l, GEN T);
185 GEN     F2xq_sqr(GEN x,GEN pol);
186 GEN     F2xq_sqrt(GEN a, GEN T);
187 GEN     F2xq_sqrt_fast(GEN c, GEN sqx, GEN T);
188 GEN     F2xq_sqrtn(GEN a, GEN n, GEN T, GEN *zeta);
189 ulong   F2xq_trace(GEN x, GEN T);
190 GEN     F2xqX_F2xq_mul(GEN P, GEN U, GEN T);
191 GEN     F2xqX_F2xq_mul_to_monic(GEN P, GEN U, GEN T);
192 GEN     F2xqX_F2xqXQ_eval(GEN Q, GEN x, GEN S, GEN T);
193 GEN     F2xqX_F2xqXQV_eval(GEN P, GEN V, GEN S, GEN T);
194 GEN     F2xqX_disc(GEN x, GEN T);
195 GEN     F2xqX_divrem(GEN x, GEN y, GEN T, GEN *pr);
196 GEN     F2xqX_extgcd(GEN x, GEN y, GEN T,  GEN *ptu, GEN *ptv);
197 GEN     F2xqX_gcd(GEN a, GEN b, GEN T);
198 GEN     F2xqX_get_red(GEN S, GEN T);
199 GEN     F2xqX_halfgcd(GEN x, GEN y, GEN T);
200 GEN     F2xqX_invBarrett(GEN T, GEN Q);
201 long    F2xqX_ispower(GEN f, long k, GEN T, GEN *pt_r);
202 GEN     F2xqX_mul(GEN x, GEN y, GEN T);
203 GEN     F2xqX_normalize(GEN z, GEN T);
204 GEN     F2xqX_powu(GEN x, ulong n, GEN T);
205 GEN     F2xqX_red(GEN z, GEN T);
206 GEN     F2xqX_rem(GEN x, GEN S, GEN T);
207 GEN     F2xqX_resultant(GEN x, GEN y, GEN T);
208 GEN     F2xqX_sqr(GEN x, GEN T);
209 GEN     F2xqXQ_inv(GEN x, GEN S, GEN T);
210 GEN     F2xqXQ_invsafe(GEN x, GEN S, GEN T);
211 GEN     F2xqXQ_mul(GEN x, GEN y, GEN S, GEN T);
212 GEN     F2xqXQ_sqr(GEN x, GEN S, GEN T);
213 GEN     F2xqXQ_pow(GEN x, GEN n, GEN S, GEN T);
214 GEN     F2xqXQ_powers(GEN x, long l, GEN S, GEN T);
215 GEN     F2xqXQ_autpow(GEN aut, long n, GEN S, GEN T);
216 GEN     F2xqXQ_auttrace(GEN aut, long n, GEN S, GEN T);
217 GEN     F2xqXQV_red(GEN z, GEN S, GEN T);
218 GEN     Flm_to_F2m(GEN x);
219 GEN     Flv_to_F2v(GEN x);
220 GEN     Flx_to_F2x(GEN x);
221 GEN     FlxC_to_F2xC(GEN x);
222 GEN     FlxX_to_F2xX(GEN B);
223 GEN     FlxXC_to_F2xXC(GEN B);
224 GEN     Kronecker_to_F2xqX(GEN z, GEN T);
225 GEN     Rg_to_F2xq(GEN x, GEN T);
226 GEN     RgM_to_F2m(GEN x);
227 GEN     RgV_to_F2v(GEN x);
228 GEN     RgX_to_F2x(GEN x);
229 GEN     Z_to_F2x(GEN x, long v);
230 GEN     ZM_to_F2m(GEN x);
231 GEN     ZV_to_F2v(GEN x);
232 GEN     ZX_to_F2x(GEN x);
233 GEN     ZXX_to_F2xX(GEN B, long v);
234 GEN     const_F2v(long m);
235 GEN     gener_F2xq(GEN T, GEN *po);
236 const struct bb_field *get_F2xq_field(void **E, GEN T);
237 GEN     monomial_F2x(long d, long vs);
238 GEN     pol1_F2xX(long v, long sv);
239 GEN     polx_F2xX(long v, long sv);
240 GEN     random_F2xqX(long d1, long v, GEN T);
241 
242 /* F2xqE.c */
243 
244 GEN     F2x_Teichmuller(GEN P, long n);
245 GEN     F2xq_ellcard(GEN a2, GEN a6, GEN T);
246 GEN     F2xq_ellgens(GEN a2, GEN a6, GEN ch, GEN D, GEN m, GEN T);
247 GEN     F2xq_ellgroup(GEN a2, GEN a6, GEN N, GEN T, GEN *pt_m);
248 void    F2xq_elltwist(GEN a, GEN a6, GEN T, GEN *pt_a, GEN *pt_a6);
249 GEN     F2xqE_add(GEN P, GEN Q, GEN a2, GEN T);
250 GEN     F2xqE_changepoint(GEN x, GEN ch, GEN T);
251 GEN     F2xqE_changepointinv(GEN x, GEN ch, GEN T);
252 GEN     F2xqE_dbl(GEN P, GEN a2, GEN T);
253 GEN     F2xqE_log(GEN a, GEN b, GEN o, GEN a2, GEN T);
254 GEN     F2xqE_mul(GEN P, GEN n, GEN a2, GEN T);
255 GEN     F2xqE_neg(GEN P, GEN a2, GEN T);
256 GEN     F2xqE_order(GEN z, GEN o, GEN a2, GEN T);
257 GEN     F2xqE_sub(GEN P, GEN Q, GEN a2, GEN T);
258 GEN     F2xqE_tatepairing(GEN t, GEN s, GEN m, GEN a2, GEN T);
259 GEN     F2xqE_weilpairing(GEN t, GEN s, GEN m, GEN a2, GEN T);
260 const struct bb_group * get_F2xqE_group(void **E, GEN a2, GEN a6, GEN T);
261 GEN     RgE_to_F2xqE(GEN x, GEN T);
262 GEN     random_F2xqE(GEN a2, GEN a6, GEN T);
263 
264 /* Fle.c */
265 
266 ulong   Fl_elldisc(ulong a4, ulong a6, ulong p);
267 ulong   Fl_elldisc_pre(ulong a4, ulong a6, ulong p, ulong pi);
268 ulong   Fl_ellj(ulong a4, ulong a6, ulong p);
269 void    Fl_ellj_to_a4a6(ulong j, ulong p, ulong *pt_a4, ulong *pt_a6);
270 void    Fl_elltwist(ulong a4, ulong a6, ulong p, ulong *pt_a4, ulong *pt_a6);
271 void    Fl_elltwist_disc(ulong a4, ulong a6, ulong D, ulong p, ulong *pt_a4, ulong *pt_a6);
272 GEN     Fle_add(GEN P, GEN Q, ulong a4, ulong p);
273 GEN     Fle_dbl(GEN P, ulong a4, ulong p);
274 GEN     Fle_changepoint(GEN x, GEN ch, ulong p);
275 GEN     Fle_changepointinv(GEN x, GEN ch, ulong p);
276 GEN     Fle_log(GEN a, GEN b, GEN o, ulong a4, ulong p);
277 GEN     Fle_mul(GEN P, GEN n, ulong a4, ulong p);
278 GEN     Fle_mulu(GEN P, ulong n, ulong a4, ulong p);
279 GEN     Fle_order(GEN z, GEN o, ulong a4, ulong p);
280 GEN     Fle_sub(GEN P, GEN Q, ulong a4, ulong p);
281 GEN     Fle_to_Flj(GEN P);
282 GEN     Flj_add_pre(GEN P, GEN Q, ulong a4, ulong p, ulong pi);
283 GEN     Flj_changepointinv_pre(GEN P, GEN ch, ulong p, ulong pi);
284 GEN     Flj_dbl_pre(GEN P, ulong a4, ulong p, ulong pi);
285 GEN     Flj_mulu_pre(GEN P, ulong n, ulong a4, ulong p, ulong pi);
286 GEN     Flj_neg(GEN Q, ulong p);
287 GEN     Flj_to_Fle_pre(GEN P, ulong p, ulong pi);
288 GEN     FljV_factorback_pre(GEN P, GEN L, ulong a4, ulong p, ulong pi);
289 GEN     random_Fle(ulong a4, ulong a6, ulong p);
290 GEN     random_Fle_pre(ulong a4, ulong a6, ulong p, ulong pi);
291 GEN     random_Flj_pre(ulong a4, ulong a6, ulong p, ulong pi);
292 
293 /* Flv.c */
294 
295 GEN     Flc_to_ZC(GEN z);
296 GEN     Flc_to_ZC_inplace(GEN z);
297 GEN     Flm_Flc_gauss(GEN a, GEN b, ulong p);
298 GEN     Flm_Flc_invimage(GEN mat, GEN y, ulong p);
299 GEN     Flm_adjoint(GEN A, ulong p);
300 GEN     Flm_deplin(GEN x, ulong p);
301 ulong   Flm_det(GEN x, ulong p);
302 ulong   Flm_det_sp(GEN x, ulong p);
303 GEN     Flm_gauss(GEN a, GEN b, ulong p);
304 GEN     Flm_intersect(GEN x, GEN y, ulong p);
305 GEN     Flm_inv(GEN x, ulong p);
306 GEN     Flm_invimage(GEN m, GEN v, ulong p);
307 GEN     Flm_ker(GEN x, ulong p);
308 GEN     Flm_ker_sp(GEN x, ulong p, long deplin);
309 long    Flm_rank(GEN x, ulong p);
310 GEN     Flm_to_ZM(GEN z);
311 GEN     Flm_to_ZM_inplace(GEN z);
312 GEN     Flv_to_ZV(GEN z);
313 
314 /* Flx.c */
315 
316 GEN     Fl_to_Flx(ulong x, long sv);
317 int     Fl2_equal1(GEN x);
318 GEN     Fl2_inv_pre(GEN x, ulong D, ulong p, ulong pi);
319 GEN     Fl2_mul_pre(GEN x, GEN y, ulong D, ulong p, ulong pi);
320 ulong   Fl2_norm_pre(GEN x, ulong D, ulong p, ulong pi);
321 GEN     Fl2_pow_pre(GEN x, GEN n, ulong D, ulong p, ulong pi);
322 GEN     Fl2_sqr_pre(GEN x, ulong D, ulong p, ulong pi);
323 GEN     Fl2_sqrtn_pre(GEN a, GEN n, ulong D, ulong p, ulong pi, GEN *zeta);
324 GEN     Flm_to_FlxV(GEN x, long sv);
325 GEN     Flm_to_FlxX(GEN x, long v,long w);
326 GEN     Flv_Flm_polint(GEN xa, GEN ya, ulong p, long vs);
327 GEN     Flv_inv(GEN x, ulong p);
328 void    Flv_inv_inplace(GEN x, ulong p);
329 void    Flv_inv_pre_inplace(GEN x, ulong p, ulong pi);
330 GEN     Flv_inv_pre(GEN x, ulong p, ulong pi);
331 GEN     Flv_invVandermonde(GEN L, ulong den, ulong p);
332 GEN     Flv_polint(GEN xa, GEN ya, ulong p, long vs);
333 ulong   Flv_prod(GEN v, ulong p);
334 ulong   Flv_prod_pre(GEN x, ulong p, ulong pi);
335 GEN     Flv_roots_to_pol(GEN a, ulong p, long vs);
336 GEN     Flv_to_Flx(GEN x, long vs);
337 GEN     Flx_Fl_add(GEN y, ulong x, ulong p);
338 GEN     Flx_Fl_mul(GEN y, ulong x, ulong p);
339 GEN     Flx_Fl_mul_to_monic(GEN y, ulong x, ulong p);
340 GEN     Flx_Fl_sub(GEN y, ulong x, ulong p);
341 GEN     Flx_Fl2_eval_pre(GEN x, GEN y, ulong D, ulong p, ulong pi);
342 GEN     Flx_Flv_multieval(GEN P, GEN v, ulong p);
343 GEN     Flx_Flxq_eval(GEN f,GEN x,GEN T,ulong p);
344 GEN     Flx_FlxqV_eval(GEN f,GEN x,GEN T,ulong p);
345 GEN     Flx_Frobenius(GEN T, ulong p);
346 GEN     Flx_Laplace(GEN x, ulong p);
347 GEN     Flx_Newton(GEN P, long n, ulong p);
348 GEN     Flx_add(GEN x, GEN y, ulong p);
349 GEN     Flx_blocks(GEN P, long n, long m);
350 GEN     Flx_deflate(GEN x0, long d);
351 GEN     Flx_deriv(GEN z, ulong p);
352 GEN     Flx_diff1(GEN P, ulong p);
353 GEN     Flx_digits(GEN x, GEN T, ulong p);
354 GEN     Flx_div_by_X_x(GEN a, ulong x, ulong p, ulong *rem);
355 GEN     Flx_divrem(GEN x, GEN y, ulong p, GEN *pr);
356 GEN     Flx_double(GEN y, ulong p);
357 int     Flx_equal(GEN V, GEN W);
358 ulong   Flx_eval(GEN x, ulong y, ulong p);
359 ulong   Flx_eval_powers_pre(GEN x, GEN y, ulong p, ulong pi);
360 ulong   Flx_eval_pre(GEN x, ulong y, ulong p, ulong pi);
361 GEN     Flx_extgcd(GEN a, GEN b, ulong p, GEN *ptu, GEN *ptv);
362 ulong   Flx_extresultant(GEN a, GEN b, ulong p, GEN *ptU, GEN *ptV);
363 GEN     Flx_fromNewton(GEN P, ulong p);
364 GEN     Flx_gcd(GEN a, GEN b, ulong p);
365 GEN     Flx_get_red(GEN T, ulong p);
366 GEN     Flx_halfgcd(GEN a, GEN b, ulong p);
367 GEN     Flx_halve(GEN y, ulong p);
368 GEN     Flx_inflate(GEN x0, long d);
369 GEN     Flx_integ(GEN z, ulong p);
370 GEN     Flx_invBarrett(GEN T, ulong p);
371 GEN     Flx_invLaplace(GEN x, ulong p);
372 int     Flx_is_squarefree(GEN z, ulong p);
373 int     Flx_is_smooth(GEN g, long r, ulong p);
374 GEN     Flx_matFrobenius(GEN T, ulong p);
375 GEN     Flx_mod_Xn1(GEN T, ulong n, ulong p);
376 GEN     Flx_mod_Xnm1(GEN T, ulong n, ulong p);
377 GEN     Flx_mul(GEN x, GEN y, ulong p);
378 GEN     Flx_neg(GEN x, ulong p);
379 GEN     Flx_neg_inplace(GEN x, ulong p);
380 GEN     Flx_normalize(GEN z, ulong p);
381 GEN     Flx_powu(GEN x, ulong n, ulong p);
382 GEN     Flx_recip(GEN x);
383 GEN     Flx_red(GEN z, ulong p);
384 GEN     Flx_rem(GEN x, GEN y, ulong p);
385 GEN     Flx_renormalize(GEN x, long l);
386 GEN     Flx_rescale(GEN P, ulong h, ulong p);
387 ulong   Flx_resultant(GEN a, GEN b, ulong p);
388 GEN     Flx_shift(GEN a, long n);
389 GEN     Flx_splitting(GEN p, long k);
390 GEN     Flx_sqr(GEN x, ulong p);
391 GEN     Flx_sub(GEN x, GEN y, ulong p);
392 GEN     Flx_translate1(GEN P, ulong p);
393 GEN     Flx_translate1_basecase(GEN P, ulong p);
394 GEN     Flx_to_Flv(GEN x, long N);
395 GEN     Flx_to_FlxX(GEN z, long v);
396 GEN     Flx_to_ZX(GEN z);
397 GEN     Flx_to_ZX_inplace(GEN z);
398 GEN     Flx_triple(GEN y, ulong p);
399 long    Flx_val(GEN x);
400 long    Flx_valrem(GEN x, GEN *Z);
401 GEN     FlxC_FlxqV_eval(GEN x, GEN v, GEN T, ulong p);
402 GEN     FlxC_Flxq_eval(GEN x, GEN F, GEN T, ulong p);
403 GEN     FlxC_eval_powers_pre(GEN z, GEN x, ulong p, ulong pi);
404 GEN     FlxC_neg(GEN x, ulong p);
405 GEN     FlxC_sub(GEN x, GEN y, ulong p);
406 GEN     FlxC_to_ZXC(GEN x);
407 GEN     FlxM_Flx_add_shallow(GEN x, GEN y, ulong p);
408 GEN     FlxM_eval_powers_pre(GEN z, GEN x, ulong p, ulong pi);
409 GEN     FlxM_neg(GEN x, ulong p);
410 GEN     FlxM_sub(GEN x, GEN y, ulong p);
411 GEN     FlxM_to_ZXM(GEN z);
412 GEN     FlxT_red(GEN z, ulong p);
413 GEN     FlxV_Flc_mul(GEN V, GEN W, ulong p);
414 GEN     FlxV_Flv_multieval(GEN P, GEN v, ulong p);
415 GEN     FlxV_Flx_fromdigits(GEN x, GEN T, ulong p);
416 GEN     FlxV_prod(GEN V, ulong p);
417 GEN     FlxV_red(GEN z, ulong p);
418 GEN     FlxV_to_Flm(GEN v, long n);
419 GEN     FlxV_to_FlxX(GEN x, long v);
420 GEN     FlxV_to_ZXV(GEN x);
421 void    FlxV_to_ZXV_inplace(GEN v);
422 GEN     Flxn_exp(GEN h, long e, ulong p);
423 GEN     Flxn_expint(GEN h, long e, ulong p);
424 GEN     Flxn_inv(GEN f, long e, ulong p);
425 GEN     Flxn_mul(GEN a, GEN b, long n, ulong p);
426 GEN     Flxn_sqr(GEN a, long n, ulong p);
427 GEN     Flxn_red(GEN a, long n);
428 GEN     Flxq_autpow(GEN x, ulong n, GEN T, ulong p);
429 GEN     Flxq_autpowers(GEN x, ulong n, GEN T, ulong p);
430 GEN     Flxq_autsum(GEN x, ulong n, GEN T, ulong p);
431 GEN     Flxq_auttrace(GEN x, ulong n, GEN T, ulong p);
432 GEN     Flxq_charpoly(GEN x, GEN T, ulong p);
433 GEN     Flxq_conjvec(GEN x, GEN T, ulong p);
434 GEN     Flxq_div(GEN x, GEN y, GEN T, ulong p);
435 GEN     Flxq_inv(GEN x,GEN T,ulong p);
436 GEN     Flxq_invsafe(GEN x, GEN T, ulong p);
437 int     Flxq_issquare(GEN x, GEN T, ulong p);
438 int     Flxq_is2npower(GEN x, long n, GEN T, ulong p);
439 GEN     Flxq_log(GEN a, GEN g, GEN ord, GEN T, ulong p);
440 GEN     Flxq_lroot(GEN a, GEN T, long p);
441 GEN     Flxq_lroot_fast(GEN a, GEN sqx, GEN T, long p);
442 GEN     Flxq_matrix_pow(GEN y, long n, long m, GEN P, ulong l);
443 GEN     Flxq_minpoly(GEN x, GEN T, ulong p);
444 GEN     Flxq_mul(GEN x, GEN y, GEN T, ulong p);
445 ulong   Flxq_norm(GEN x, GEN T, ulong p);
446 GEN     Flxq_order(GEN a, GEN ord, GEN T, ulong p);
447 GEN     Flxq_pow(GEN x, GEN n, GEN T, ulong p);
448 GEN     Flxq_pow_init(GEN x, GEN n, long k,  GEN T, ulong p);
449 GEN     Flxq_pow_table(GEN R, GEN n, GEN T, ulong p);
450 GEN     Flxq_powu(GEN x, ulong n, GEN T, ulong p);
451 GEN     Flxq_powers(GEN x, long l, GEN T, ulong p);
452 GEN     Flxq_sqr(GEN y,GEN T,ulong p);
453 GEN     Flxq_sqrt(GEN a, GEN T, ulong p);
454 GEN     Flxq_sqrtn(GEN a, GEN n, GEN T, ulong p, GEN *zetan);
455 ulong   Flxq_trace(GEN x, GEN T, ulong p);
456 GEN     FlxqC_Flxq_mul(GEN x, GEN y, GEN T, ulong p);
457 GEN     FlxqM_Flxq_mul(GEN x, GEN y, GEN T, ulong p);
458 GEN     FlxqV_dotproduct(GEN x, GEN y, GEN T, ulong p);
459 ulong   Rg_to_F2(GEN x);
460 ulong   Rg_to_Fl(GEN x, ulong p);
461 GEN     Rg_to_Flxq(GEN x, GEN T, ulong p);
462 GEN     RgX_to_Flx(GEN x, ulong p);
463 GEN     RgXV_to_FlxV(GEN x, ulong p);
464 GEN     Z_to_Flx(GEN x, ulong p, long sv);
465 GEN     ZX_to_Flx(GEN x, ulong p);
466 GEN     ZXV_to_FlxV(GEN v, ulong p);
467 GEN     ZXT_to_FlxT(GEN z, ulong p);
468 GEN     gener_Flxq(GEN T, ulong p, GEN *o);
469 const struct bb_field *get_Flxq_field(void **E, GEN T, ulong p);
470 const struct bb_group *get_Flxq_star(void **E, GEN T, ulong p);
471 GEN     monomial_Flx(ulong a, long d, long vs);
472 GEN     random_Flx(long d1, long v, ulong p);
473 GEN     zero_FlxC(long n, long sv);
474 GEN     zero_FlxM(long r, long c, long sv);
475 GEN     zlx_translate1(GEN P, ulong p, long e);
476 GEN     zx_to_Flx(GEN x, ulong p);
477 
478 /* FlxX.c */
479 
480 GEN     FlxX_Fl_mul(GEN x, ulong y, ulong p);
481 GEN     FlxX_Flx_add(GEN y, GEN x, ulong p);
482 GEN     FlxX_Flx_mul(GEN x, GEN y, ulong p);
483 GEN     FlxX_Flx_sub(GEN y, GEN x, ulong p);
484 GEN     FlxX_Laplace(GEN x, ulong p);
485 GEN     FlxX_add(GEN P, GEN Q, ulong p);
486 GEN     FlxX_blocks(GEN P, long n, long m, long vs);
487 GEN     FlxX_deriv(GEN z, ulong p);
488 GEN     FlxX_double(GEN x, ulong p);
489 GEN     FlxX_invLaplace(GEN x, ulong p);
490 GEN     FlxX_neg(GEN x, ulong p);
491 GEN     FlxX_renormalize(GEN x, long lx);
492 GEN     FlxX_shift(GEN a, long n, long vs);
493 GEN     FlxX_sub(GEN P, GEN Q, ulong p);
494 GEN     FlxX_swap(GEN x, long n, long ws);
495 GEN     FlxX_to_Flm(GEN v, long n);
496 GEN     FlxX_to_Flx(GEN f);
497 GEN     FlxX_to_FlxC(GEN x, long N, long sv);
498 GEN     FlxX_to_ZXX(GEN B);
499 GEN     FlxX_translate1(GEN P, long p, long n);
500 GEN     FlxX_triple(GEN x, ulong p);
501 GEN     FlxXC_to_ZXXC(GEN B);
502 GEN     FlxXM_to_ZXXM(GEN B);
503 GEN     FlxXV_to_FlxM(GEN v, long n, long sv);
504 GEN     FlxXn_red(GEN a, long n);
505 GEN     FlxY_Flx_div(GEN x, GEN y, ulong p);
506 GEN     FlxY_Flx_translate(GEN P, GEN c, ulong p);
507 GEN     FlxY_Flxq_evalx(GEN P, GEN x, GEN T, ulong p);
508 GEN     FlxY_FlxqV_evalx(GEN P, GEN x, GEN T, ulong p);
509 long    FlxY_degreex(GEN b);
510 ulong   FlxY_eval_powers_pre(GEN pol, GEN ypowers, GEN xpowers, ulong p, ulong pi);
511 GEN     FlxY_evalx(GEN Q, ulong x, ulong p);
512 GEN     FlxY_evalx_powers_pre(GEN pol, GEN ypowers, ulong p, ulong pi);
513 GEN     FlxYqq_pow(GEN x, GEN n, GEN S, GEN T, ulong p);
514 GEN     FlxqV_roots_to_pol(GEN V, GEN T, ulong p, long v);
515 GEN     FlxqX_FlxqXQ_eval(GEN Q, GEN x, GEN S, GEN T, ulong p);
516 GEN     FlxqX_FlxqXQV_eval(GEN P, GEN V, GEN S, GEN T, ulong p);
517 GEN     FlxqX_Flxq_mul(GEN P, GEN U, GEN T, ulong p);
518 GEN     FlxqX_Flxq_mul_to_monic(GEN P, GEN U, GEN T, ulong p);
519 GEN     FlxqX_Newton(GEN P, long n, GEN T, ulong p);
520 GEN     FlxqX_divrem(GEN x, GEN y, GEN T, ulong p, GEN *pr);
521 GEN     FlxqX_disc(GEN x, GEN T, ulong p);
522 GEN     FlxqX_dotproduct(GEN x, GEN y, GEN T, ulong p);
523 GEN     FlxqX_extgcd(GEN a, GEN b, GEN T, ulong p, GEN *ptu, GEN *ptv);
524 GEN     FlxqX_fromNewton(GEN P, GEN T, ulong p);
525 GEN     FlxqX_gcd(GEN P, GEN Q, GEN T, ulong p);
526 GEN     FlxqX_get_red(GEN S, GEN T, ulong p);
527 GEN     FlxqX_halfgcd(GEN x, GEN y, GEN T, ulong p);
528 GEN     FlxqX_invBarrett(GEN T, GEN Q, ulong p);
529 GEN     FlxqX_mul(GEN x, GEN y, GEN T, ulong p);
530 GEN     FlxqX_normalize(GEN z, GEN T, ulong p);
531 GEN     FlxqX_powu(GEN V, ulong n, GEN T, ulong p);
532 GEN     FlxqX_red(GEN z, GEN T, ulong p);
533 GEN     FlxqX_rem(GEN x, GEN y, GEN T, ulong p);
534 GEN     FlxqX_resultant(GEN x, GEN y, GEN T, ulong p);
535 GEN     FlxqX_safegcd(GEN P, GEN Q, GEN T, ulong p);
536 GEN     FlxqX_saferesultant(GEN a, GEN b, GEN T, ulong p);
537 GEN     FlxqX_sqr(GEN x, GEN T, ulong p);
538 GEN     FlxqXQ_div(GEN x, GEN y, GEN S, GEN T, ulong p);
539 GEN     FlxqXQ_inv(GEN x, GEN S, GEN T, ulong p);
540 GEN     FlxqXQ_invsafe(GEN x, GEN S, GEN T, ulong p);
541 GEN     FlxqXQ_matrix_pow(GEN x, long n, long m, GEN S, GEN T, ulong p);
542 GEN     FlxqXQ_minpoly(GEN x, GEN S, GEN T, ulong p);
543 GEN     FlxqXQ_mul(GEN x, GEN y, GEN S, GEN T, ulong p);
544 GEN     FlxqXQ_pow(GEN x, GEN n, GEN S, GEN T, ulong p);
545 GEN     FlxqXQ_powu(GEN x, ulong n, GEN S, GEN T, ulong p);
546 GEN     FlxqXQ_powers(GEN x, long n, GEN S, GEN T, ulong p);
547 GEN     FlxqXQ_sqr(GEN x, GEN S, GEN T, ulong p);
548 GEN     FlxqXQ_autpow(GEN x, long n, GEN S, GEN T, ulong p);
549 GEN     FlxqXQ_autsum(GEN aut, long n, GEN S, GEN T, ulong p);
550 GEN     FlxqXQ_auttrace(GEN x, ulong n, GEN S, GEN T, ulong p);
551 GEN     FlxqXV_prod(GEN V, GEN T, ulong p);
552 GEN     FlxqXn_expint(GEN h, long e, GEN T, ulong p);
553 GEN     FlxqXn_inv(GEN f, long e, GEN T, ulong p);
554 GEN     FlxqXn_mul(GEN a, GEN b, long n, GEN T, ulong p);
555 GEN     FlxqXn_sqr(GEN a, long n, GEN T, ulong p);
556 GEN     Fly_to_FlxY(GEN B, long v);
557 GEN     Kronecker_to_FlxqX(GEN z, GEN T, ulong p);
558 GEN     RgX_to_FlxqX(GEN x, GEN T, ulong p);
559 const struct bb_algebra *get_FlxqXQ_algebra(void **E, GEN S, GEN T, ulong p);
560 GEN     pol1_FlxX(long v, long sv);
561 GEN     polx_FlxX(long v, long sv);
562 GEN     random_FlxqX(long d1, long v, GEN T, ulong p);
563 GEN     zlxX_translate1(GEN P, long p, long e, long n);
564 GEN     zxX_to_FlxX(GEN B, ulong p);
565 GEN     zxX_to_Kronecker(GEN P, GEN Q);
566 
567 /* FlxqE.c */
568 
569 GEN     Flxq_ellcard(GEN a4, GEN a6, GEN T, ulong p);
570 GEN     Flxq_ellgens(GEN a4, GEN a6, GEN ch, GEN D, GEN m, GEN T, ulong p);
571 GEN     Flxq_ellgroup(GEN a4, GEN a6, GEN N, GEN T, ulong p, GEN *pt_m);
572 void    Flxq_elltwist(GEN a, GEN a6, GEN T, ulong p, GEN *pt_a, GEN *pt_a6);
573 GEN     Flxq_ellj(GEN a4, GEN a6, GEN T, ulong p);
574 void    Flxq_ellj_to_a4a6(GEN j, GEN T, ulong p, GEN *pt_a4, GEN *pt_a6);
575 GEN     FlxqE_add(GEN P, GEN Q, GEN a4, GEN T, ulong p);
576 GEN     FlxqE_changepoint(GEN x, GEN ch, GEN T, ulong p);
577 GEN     FlxqE_changepointinv(GEN x, GEN ch, GEN T, ulong p);
578 GEN     FlxqE_dbl(GEN P, GEN a4, GEN T, ulong p);
579 GEN     FlxqE_log(GEN a, GEN b, GEN o, GEN a4, GEN T, ulong p);
580 GEN     FlxqE_mul(GEN P, GEN n, GEN a4, GEN T, ulong p);
581 GEN     FlxqE_neg(GEN P, GEN T, ulong p);
582 GEN     FlxqE_order(GEN z, GEN o, GEN a4, GEN T, ulong p);
583 GEN     FlxqE_sub(GEN P, GEN Q, GEN a4, GEN T, ulong p);
584 GEN     FlxqE_tatepairing(GEN t, GEN s, GEN m, GEN a4, GEN T, ulong p);
585 GEN     FlxqE_weilpairing(GEN t, GEN s, GEN m, GEN a4, GEN T, ulong p);
586 GEN     ZXX_to_FlxX(GEN B, ulong p, long v);
587 GEN     ZXXT_to_FlxXT(GEN z, ulong p, long v);
588 GEN     ZXXV_to_FlxXV(GEN V, ulong p, long v);
589 const struct bb_group * get_FlxqE_group(void **E, GEN a4, GEN a6, GEN T, ulong p);
590 GEN     RgE_to_FlxqE(GEN x, GEN T, ulong p);
591 GEN     random_FlxqE(GEN a4, GEN a6, GEN T, ulong p);
592 
593 /* FpE.c */
594 
595 long    Fl_elltrace(ulong a4, ulong a6, ulong p);
596 long    Fl_elltrace_CM(long CM, ulong a4, ulong a6, ulong p);
597 GEN     Fp_ellcard(GEN a4, GEN a6, GEN p);
598 GEN     Fp_elldivpol(GEN a4, GEN a6, long n, GEN p);
599 GEN     Fp_ellgens(GEN a4, GEN a6, GEN ch, GEN D, GEN m, GEN p);
600 GEN     Fp_ellgroup(GEN a4, GEN a6, GEN N, GEN p, GEN *pt_m);
601 GEN     Fp_ellj(GEN a4, GEN a6, GEN p);
602 int     Fp_elljissupersingular(GEN j, GEN p);
603 void    Fp_elltwist(GEN a4, GEN a6, GEN p, GEN *pt_a4, GEN *pt_a6);
604 GEN     Fp_ffellcard(GEN a4, GEN a6, GEN q, long n, GEN p);
605 GEN     FpE_add(GEN P, GEN Q, GEN a4, GEN p);
606 GEN     FpE_changepoint(GEN x, GEN ch, GEN p);
607 GEN     FpE_changepointinv(GEN x, GEN ch, GEN p);
608 GEN     FpE_dbl(GEN P, GEN a4, GEN p);
609 GEN     FpE_log(GEN a, GEN b, GEN o, GEN a4, GEN p);
610 GEN     FpE_mul(GEN P, GEN n, GEN a4, GEN p);
611 GEN     FpE_neg(GEN P, GEN p);
612 GEN     FpE_order(GEN z, GEN o, GEN a4, GEN p);
613 GEN     FpE_sub(GEN P, GEN Q, GEN a4, GEN p);
614 GEN     FpE_to_FpJ(GEN P);
615 GEN     FpE_to_mod(GEN P, GEN p);
616 GEN     FpE_tatepairing(GEN t, GEN s, GEN m, GEN a4, GEN p);
617 GEN     FpE_weilpairing(GEN t, GEN s, GEN m, GEN a4, GEN p);
618 GEN     FpJ_add(GEN P, GEN Q, GEN a4, GEN p);
619 GEN     FpJ_dbl(GEN P, GEN a4, GEN p);
620 GEN     FpJ_mul(GEN P, GEN n, GEN a4, GEN p);
621 GEN     FpJ_neg(GEN Q, GEN p);
622 GEN     FpJ_to_FpE(GEN P, GEN p);
623 GEN     FpXQ_ellcard(GEN a4, GEN a6, GEN T, GEN p);
624 GEN     FpXQ_elldivpol(GEN a4, GEN a6, long n, GEN T, GEN p);
625 GEN     FpXQ_ellgens(GEN a4, GEN a6, GEN ch, GEN D, GEN m, GEN T, GEN p);
626 GEN     FpXQ_ellgroup(GEN a4, GEN a6, GEN N, GEN T, GEN p, GEN *pt_m);
627 GEN     FpXQ_ellj(GEN a4, GEN a6, GEN T, GEN p);
628 int     FpXQ_elljissupersingular(GEN j, GEN T, GEN p);
629 void    FpXQ_elltwist(GEN a4, GEN a6, GEN T, GEN p, GEN *pt_a4, GEN *pt_a6);
630 GEN     FpXQE_add(GEN P, GEN Q, GEN a4, GEN T, GEN p);
631 GEN     FpXQE_changepoint(GEN x, GEN ch, GEN T, GEN p);
632 GEN     FpXQE_changepointinv(GEN x, GEN ch, GEN T, GEN p);
633 GEN     FpXQE_dbl(GEN P, GEN a4, GEN T, GEN p);
634 GEN     FpXQE_log(GEN a, GEN b, GEN o, GEN a4, GEN T, GEN p);
635 GEN     FpXQE_mul(GEN P, GEN n, GEN a4, GEN T, GEN p);
636 GEN     FpXQE_neg(GEN P, GEN T, GEN p);
637 GEN     FpXQE_order(GEN z, GEN o, GEN a4, GEN T, GEN p);
638 GEN     FpXQE_sub(GEN P, GEN Q, GEN a4, GEN T, GEN p);
639 GEN     FpXQE_tatepairing(GEN t, GEN s, GEN m, GEN a4, GEN T, GEN p);
640 GEN     FpXQE_weilpairing(GEN t, GEN s, GEN m, GEN a4, GEN T, GEN p);
641 GEN     Fq_elldivpolmod(GEN a4, GEN a6, long n, GEN h, GEN T, GEN p);
642 GEN     RgE_to_FpE(GEN x, GEN p);
643 GEN     RgE_to_FpXQE(GEN x, GEN T, GEN p);
644 const struct bb_group * get_FpE_group(void **E, GEN a4, GEN a6, GEN p);
645 const struct bb_group * get_FpXQE_group(void **E, GEN a4, GEN a6, GEN T, GEN p);
646 GEN     elltrace_extension(GEN t, long n, GEN p);
647 GEN     random_FpE(GEN a4, GEN a6, GEN p);
648 GEN     random_FpXQE(GEN a4, GEN a6, GEN T, GEN p);
649 
650 /* FpX.c */
651 
652 int     Fp_issquare(GEN x, GEN p);
653 GEN     Fp_FpX_sub(GEN x, GEN y, GEN p);
654 GEN     Fp_FpXQ_log(GEN a, GEN g, GEN ord, GEN T, GEN p);
655 GEN     FpV_FpM_polint(GEN xa, GEN ya, GEN p, long vs);
656 GEN     FpV_inv(GEN x, GEN p);
657 GEN     FpV_invVandermonde(GEN L, GEN den, GEN p);
658 GEN     FpV_polint(GEN xa, GEN ya, GEN p, long v);
659 GEN     FpV_roots_to_pol(GEN V, GEN p, long v);
660 GEN     FpX_Fp_add(GEN x, GEN y, GEN p);
661 GEN     FpX_Fp_add_shallow(GEN y,GEN x,GEN p);
662 GEN     FpX_Fp_div(GEN x, GEN y, GEN p);
663 GEN     FpX_Fp_mul(GEN x, GEN y, GEN p);
664 GEN     FpX_Fp_mul_to_monic(GEN y,GEN x,GEN p);
665 GEN     FpX_Fp_mulspec(GEN y,GEN x,GEN p,long ly);
666 GEN     FpX_Fp_sub(GEN x, GEN y, GEN p);
667 GEN     FpX_Fp_sub_shallow(GEN y,GEN x,GEN p);
668 GEN     FpX_FpV_multieval(GEN P, GEN xa, GEN p);
669 GEN     FpX_FpXQ_eval(GEN f,GEN x,GEN T,GEN p);
670 GEN     FpX_FpXQV_eval(GEN f,GEN x,GEN T,GEN p);
671 GEN     FpX_FpXV_multirem(GEN P, GEN xa, GEN p);
672 GEN     FpX_Frobenius(GEN T, GEN p);
673 GEN     FpX_Laplace(GEN x, GEN p);
674 GEN     FpX_Newton(GEN P, long n, GEN p);
675 GEN     FpX_add(GEN x, GEN y, GEN p);
676 GEN     FpX_center(GEN x, GEN p, GEN pov2);
677 GEN     FpX_center_i(GEN T, GEN p, GEN pov2);
678 GEN     FpX_chinese_coprime(GEN x,GEN y,GEN Tx,GEN Ty,GEN Tz,GEN p);
679 GEN     FpX_convol(GEN x, GEN y, GEN p);
680 GEN     FpX_deriv(GEN x, GEN p);
681 GEN     FpX_digits(GEN x, GEN y, GEN p);
682 GEN     FpX_disc(GEN x, GEN p);
683 GEN     FpX_div_by_X_x(GEN a, GEN x, GEN p, GEN *r);
684 GEN     FpX_divrem(GEN x, GEN y, GEN p, GEN *pr);
685 GEN     FpX_divu(GEN x, ulong y, GEN p);
686 GEN     FpX_dotproduct(GEN x, GEN y, GEN p);
687 GEN     FpX_eval(GEN x,GEN y,GEN p);
688 GEN     FpX_extgcd(GEN x, GEN y, GEN p, GEN *ptu, GEN *ptv);
689 GEN     FpX_fromNewton(GEN P, GEN p);
690 GEN     FpX_gcd(GEN x, GEN y, GEN p);
691 GEN     FpX_gcd_check(GEN x, GEN y, GEN p);
692 GEN     FpX_get_red(GEN T, GEN p);
693 GEN     FpX_halve(GEN y, GEN p);
694 GEN     FpX_halfgcd(GEN x, GEN y, GEN p);
695 GEN     FpX_integ(GEN x, GEN p);
696 GEN     FpX_invBarrett(GEN T, GEN p);
697 GEN     FpX_invLaplace(GEN x, GEN p);
698 int     FpX_is_squarefree(GEN f, GEN p);
699 long    FpX_ispower(GEN f, ulong k, GEN p, GEN *pt_r);
700 GEN     FpX_matFrobenius(GEN T, GEN p);
701 GEN     FpX_mul(GEN x, GEN y, GEN p);
702 GEN     FpX_mulspec(GEN a, GEN b, GEN p, long na, long nb);
703 GEN     FpX_mulu(GEN x, ulong y, GEN p);
704 GEN     FpX_neg(GEN x, GEN p);
705 GEN     FpX_normalize(GEN z, GEN p);
706 GEN     FpX_powu(GEN x, ulong n, GEN p);
707 GEN     FpX_red(GEN z, GEN p);
708 GEN     FpX_rem(GEN x, GEN y, GEN p);
709 GEN     FpX_rescale(GEN P, GEN h, GEN p);
710 GEN     FpX_resultant(GEN a, GEN b, GEN p);
711 GEN     FpX_sqr(GEN x, GEN p);
712 GEN     FpX_sub(GEN x, GEN y, GEN p);
713 long    FpX_valrem(GEN x0, GEN t, GEN p, GEN *py);
714 GEN     FpXC_FpXQ_eval(GEN Q, GEN x, GEN T, GEN p);
715 GEN     FpXC_FpXQV_eval(GEN Q, GEN x, GEN T, GEN p);
716 GEN     FpXM_FpXQV_eval(GEN Q, GEN x, GEN T, GEN p);
717 GEN     FpXQ_autpow(GEN x, ulong n, GEN T, GEN p);
718 GEN     FpXQ_autpowers(GEN aut, long f, GEN T, GEN p);
719 GEN     FpXQ_autsum(GEN x, ulong n, GEN T, GEN p);
720 GEN     FpXQ_auttrace(GEN x, ulong n, GEN T, GEN p);
721 GEN     FpXQ_charpoly(GEN x, GEN T, GEN p);
722 GEN     FpXQ_conjvec(GEN x, GEN T, GEN p);
723 GEN     FpXQ_div(GEN x,GEN y,GEN T,GEN p);
724 GEN     FpXQ_inv(GEN x,GEN T,GEN p);
725 GEN     FpXQ_invsafe(GEN x, GEN T, GEN p);
726 int     FpXQ_issquare(GEN x, GEN T, GEN p);
727 GEN     FpXQ_log(GEN a, GEN g, GEN ord, GEN T, GEN p);
728 GEN     FpXQ_matrix_pow(GEN y, long n, long m, GEN P, GEN l);
729 GEN     FpXQ_minpoly(GEN x, GEN T, GEN p);
730 GEN     FpXQ_mul(GEN y,GEN x,GEN T,GEN p);
731 GEN     FpXQ_norm(GEN x, GEN T, GEN p);
732 GEN     FpXQ_order(GEN a, GEN ord, GEN T, GEN p);
733 GEN     FpXQ_pow(GEN x, GEN n, GEN T, GEN p);
734 GEN     FpXQ_powu(GEN x, ulong n, GEN T, GEN p);
735 GEN     FpXQ_powers(GEN x, long l, GEN T, GEN p);
736 GEN     FpXQ_red(GEN x, GEN T, GEN p);
737 GEN     FpXQ_sqr(GEN y, GEN T, GEN p);
738 GEN     FpXQ_sqrt(GEN a, GEN T, GEN p);
739 GEN     FpXQ_sqrtn(GEN a, GEN n, GEN T, GEN p, GEN *zetan);
740 GEN     FpXQ_trace(GEN x, GEN T, GEN p);
741 GEN     FpXQC_to_mod(GEN z, GEN T, GEN p);
742 GEN     FpXQM_autsum(GEN x, ulong n, GEN T, GEN p);
743 GEN     FpXT_red(GEN z, GEN p);
744 GEN     FpXV_FpX_fromdigits(GEN x, GEN T, GEN p);
745 GEN     FpXV_chinese(GEN A, GEN P, GEN p, GEN *pt_mod);
746 GEN     FpXV_prod(GEN V, GEN p);
747 GEN     FpXV_red(GEN z, GEN p);
748 GEN     FpXn_exp(GEN x, long n, GEN p);
749 GEN     FpXn_expint(GEN x, long n, GEN p);
750 GEN     FpXn_inv(GEN x, long n, GEN p);
751 GEN     FpXn_mul(GEN a, GEN b, long n, GEN p);
752 GEN     FpXn_sqr(GEN a, long n, GEN p);
753 int     Fq_issquare(GEN x, GEN T, GEN p);
754 long    Fq_ispower(GEN x, GEN K, GEN T, GEN p);
755 GEN     Fq_log(GEN a, GEN g, GEN ord, GEN T, GEN p);
756 GEN     FqC_to_mod(GEN z, GEN T, GEN p);
757 GEN     FqM_to_mod(GEN z, GEN T, GEN p);
758 GEN     FqV_inv(GEN x, GEN T, GEN p);
759 GEN     Z_to_FpX(GEN a, GEN p, long v);
760 GEN     gener_FpXQ(GEN T, GEN p, GEN *o);
761 GEN     gener_FpXQ_local(GEN T, GEN p, GEN L);
762 const struct bb_group * get_FpXQ_star(void **E, GEN T, GEN p);
763 const struct bb_algebra * get_FpX_algebra(void **E, GEN p, long v);
764 const struct bb_algebra * get_FpXQ_algebra(void **E, GEN T, GEN p);
765 GEN     random_FpX(long d, long v, GEN p);
766 
767 /* FpX_factor.c */
768 
769 GEN     F2x_ddf(GEN f);
770 GEN     F2x_factor(GEN f);
771 GEN     F2x_factor_squarefree(GEN f);
772 int     F2x_is_irred(GEN f);
773 GEN     Flx_ddf(GEN T, ulong p);
774 int     Flx_is_irred(GEN f, ulong p);
775 int     Flx_is_totally_split(GEN f, ulong p);
776 long    Flx_ispower(GEN f, ulong k, ulong p, GEN *pt_r);
777 GEN     Flx_degfact(GEN f, ulong p);
778 GEN     Flx_factor(GEN f, ulong p);
779 GEN     Flx_factor_squarefree(GEN f, ulong p);
780 long    Flx_nbfact(GEN z, ulong p);
781 long    Flx_nbfact_Frobenius(GEN T, GEN XP, ulong p);
782 GEN     Flx_nbfact_by_degree(GEN z, long *nb, ulong p);
783 long    Flx_nbroots(GEN f, ulong p);
784 ulong   Flx_oneroot(GEN f, ulong p);
785 ulong   Flx_oneroot_split(GEN f, ulong p);
786 GEN     Flx_roots(GEN f, ulong p);
787 GEN     Flx_rootsff(GEN P, GEN T, ulong p);
788 GEN     FpX_ddf(GEN f, GEN p);
789 long    FpX_ddf_degree(GEN T, GEN XP, GEN p);
790 GEN     FpX_degfact(GEN f, GEN p);
791 GEN     FpX_factor(GEN f, GEN p);
792 GEN     FpX_factor_squarefree(GEN T, GEN p);
793 int     FpX_is_irred(GEN f, GEN p);
794 int     FpX_is_totally_split(GEN f, GEN p);
795 long    FpX_nbfact(GEN f, GEN p);
796 long    FpX_nbfact_Frobenius(GEN T, GEN XP, GEN p);
797 long    FpX_nbroots(GEN f, GEN p);
798 GEN     FpX_oneroot(GEN f, GEN p);
799 GEN     FpX_oneroot_split(GEN fact, GEN p);
800 GEN     FpX_roots(GEN f, GEN p);
801 GEN     FpX_rootsff(GEN P, GEN T, GEN p);
802 GEN     FpX_split_part(GEN f, GEN p);
803 
804 /* FpXQX_factor.c */
805 
806 GEN     F2xqX_ddf(GEN S, GEN T);
807 GEN     F2xqX_degfact(GEN S, GEN T);
808 GEN     F2xqX_factor(GEN x, GEN T);
809 GEN     F2xqX_factor_squarefree(GEN x, GEN T);
810 GEN     F2xqX_roots(GEN x, GEN T);
811 GEN     Flx_factorff_irred(GEN P, GEN Q, ulong p);
812 void    Flx_ffintersect(GEN P,GEN Q,long n,ulong l,GEN *SP,GEN *SQ,GEN MA,GEN MB);
813 GEN     Flx_ffisom(GEN P,GEN Q,ulong l);
814 GEN     Flxq_ffisom_inv(GEN S,GEN Tp, ulong p);
815 GEN     FlxqX_Frobenius(GEN S, GEN T, ulong p);
816 GEN     FlxqX_ddf(GEN S, GEN T, ulong p);
817 long    FlxqX_ddf_degree(GEN S, GEN XP, GEN T, ulong p);
818 GEN     FlxqX_degfact(GEN S, GEN T, ulong p);
819 GEN     FlxqX_factor(GEN x, GEN T, ulong p);
820 GEN     FlxqX_factor_squarefree(GEN x, GEN T, ulong p);
821 long    FlxqX_ispower(GEN f, ulong k, GEN T, ulong p, GEN *pt_r);
822 long    FlxqX_is_squarefree(GEN P, GEN T, ulong p);
823 long    FlxqX_nbfact(GEN S, GEN T, ulong p);
824 long    FlxqX_nbfact_Frobenius(GEN S, GEN Xq, GEN T, ulong p);
825 long    FlxqX_nbroots(GEN f, GEN T, ulong p);
826 GEN     FlxqX_roots(GEN S, GEN T, ulong p);
827 GEN     FlxqXQ_halfFrobenius(GEN a, GEN S, GEN T, ulong p);
828 GEN     FpX_factorff(GEN P, GEN T, GEN p);
829 GEN     FpX_factorff_irred(GEN P, GEN Q, GEN p);
830 void    FpX_ffintersect(GEN P,GEN Q,long n,GEN l,GEN *SP,GEN *SQ,GEN MA,GEN MB);
831 GEN     FpX_ffisom(GEN P,GEN Q,GEN l);
832 GEN     FpXQ_ffisom_inv(GEN S,GEN Tp, GEN p);
833 GEN     FpXQX_Frobenius(GEN S, GEN T, GEN p);
834 GEN     FpXQX_ddf(GEN S, GEN T, GEN p);
835 long    FpXQX_ddf_degree(GEN S, GEN XP, GEN T, GEN p);
836 GEN     FpXQX_degfact(GEN S, GEN T, GEN p);
837 GEN     FpXQX_factor(GEN x, GEN T, GEN p);
838 GEN     FpXQX_factor_squarefree(GEN x, GEN T, GEN p);
839 long    FpXQX_ispower(GEN f, ulong k, GEN T, GEN p, GEN *pt);
840 long    FpXQX_nbfact(GEN u, GEN T, GEN p);
841 long    FpXQX_nbfact_Frobenius(GEN S, GEN Xq, GEN T, GEN p);
842 long    FpXQX_nbroots(GEN f, GEN T, GEN p);
843 GEN     FpXQX_roots(GEN f, GEN T, GEN p);
844 GEN     FpXQX_split_part(GEN f, GEN T, GEN p);
845 GEN     FpXQXQ_halfFrobenius(GEN a, GEN S, GEN T, GEN p);
846 long    FqX_is_squarefree(GEN P, GEN T, GEN p);
847 long    FqX_ispower(GEN f, ulong k, GEN T, GEN p, GEN *pt);
848 long    FqX_nbfact(GEN u, GEN T, GEN p);
849 long    FqX_nbroots(GEN f, GEN T, GEN p);
850 GEN     factorff(GEN f, GEN p, GEN a);
851 GEN     factormod0(GEN f, GEN p,long flag);
852 GEN     factormodDDF(GEN f, GEN D);
853 GEN     factormodSQF(GEN f, GEN D);
854 int     ff_parse_Tp(GEN Tp, GEN *T, GEN *p, long red);
855 GEN     polrootsff(GEN f, GEN p, GEN T);
856 GEN     polrootsmod(GEN f, GEN p);
857 GEN     rootmod0(GEN f, GEN p,long flag);
858 
859 /* FpXX.c */
860 
861 GEN     FpXQX_FpXQ_mul(GEN P, GEN U, GEN T, GEN p);
862 GEN     FpXQX_FpXQXQV_eval(GEN P, GEN V, GEN S, GEN T, GEN p);
863 GEN     FpXQX_FpXQXQ_eval(GEN P, GEN x, GEN S, GEN T, GEN p);
864 GEN     FpXQX_digits(GEN x, GEN B, GEN T, GEN p);
865 GEN     FpXQX_disc(GEN x, GEN T, GEN p);
866 GEN     FpXQX_div_by_X_x(GEN a, GEN x, GEN T, GEN p, GEN *pr);
867 GEN     FpXQX_divrem(GEN x, GEN y, GEN T, GEN p, GEN *pr);
868 GEN     FpXQX_dotproduct(GEN x, GEN y, GEN T, GEN p);
869 GEN     FpXQX_extgcd(GEN x, GEN y, GEN T, GEN p, GEN *ptu, GEN *ptv);
870 GEN     FpXQX_gcd(GEN P, GEN Q, GEN T, GEN p);
871 GEN     FpXQX_get_red(GEN S, GEN T, GEN p);
872 GEN     FpXQX_halfgcd(GEN x, GEN y, GEN T, GEN p);
873 GEN     FpXQX_invBarrett(GEN S, GEN T, GEN p);
874 GEN     FpXQX_mul(GEN x, GEN y, GEN T, GEN p);
875 GEN     FpXQX_powu(GEN x, ulong n, GEN T, GEN p);
876 GEN     FpXQX_red(GEN z, GEN T, GEN p);
877 GEN     FpXQX_rem(GEN x, GEN S, GEN T, GEN p);
878 GEN     FpXQX_resultant(GEN a, GEN b, GEN T, GEN p);
879 GEN     FpXQX_sqr(GEN x, GEN T, GEN p);
880 GEN     FpXQX_to_mod(GEN z, GEN T, GEN p);
881 GEN     FpXQXQ_div(GEN x,GEN y,GEN S, GEN T,GEN p);
882 GEN     FpXQXQ_inv(GEN x, GEN S, GEN T,GEN p);
883 GEN     FpXQXQ_invsafe(GEN x, GEN S, GEN T, GEN p);
884 GEN     FpXQXQ_matrix_pow(GEN y, long n, long m, GEN S, GEN T, GEN p);
885 GEN     FpXQXQ_minpoly(GEN x, GEN S, GEN T, GEN p);
886 GEN     FpXQXQ_mul(GEN x, GEN y, GEN S, GEN T, GEN p);
887 GEN     FpXQXQ_pow(GEN x, GEN n, GEN S, GEN T, GEN p);
888 GEN     FpXQXQ_powers(GEN x, long n, GEN S, GEN T, GEN p);
889 GEN     FpXQXQ_sqr(GEN x, GEN S, GEN T, GEN p);
890 GEN     FpXQXQ_autpow(GEN aut, long n, GEN S, GEN T, GEN p);
891 GEN     FpXQXQ_autsum(GEN aut, long n, GEN S, GEN T, GEN p);
892 GEN     FpXQXQ_auttrace(GEN aut, long n, GEN S, GEN T, GEN p);
893 GEN     FpXQXV_FpXQX_fromdigits(GEN x, GEN B, GEN T, GEN p);
894 GEN     FpXQXV_prod(GEN V, GEN Tp, GEN p);
895 GEN     FpXQXn_exp(GEN x, long n, GEN T, GEN p);
896 GEN     FpXQXn_expint(GEN x, long n, GEN T, GEN p);
897 GEN     FpXQXn_inv(GEN x, long n, GEN T, GEN p);
898 GEN     FpXQXn_mul(GEN x, GEN y, long n, GEN T, GEN p);
899 GEN     FpXQXn_sqr(GEN x, long n, GEN T, GEN p);
900 GEN     FpXX_Fp_mul(GEN x, GEN y, GEN p);
901 GEN     FpXX_FpX_mul(GEN x, GEN y, GEN p);
902 GEN     FpXX_add(GEN x, GEN y, GEN p);
903 GEN     FpXX_deriv(GEN P, GEN p);
904 GEN     FpXX_halve(GEN P, GEN p);
905 GEN     FpXX_integ(GEN P, GEN p);
906 GEN     FpXX_mulu(GEN P, ulong u, GEN p);
907 GEN     FpXX_neg(GEN x, GEN p);
908 GEN     FpXX_red(GEN z, GEN p);
909 GEN     FpXX_sub(GEN x, GEN y, GEN p);
910 GEN     FpXY_FpXQ_evalx(GEN P, GEN x, GEN T, GEN p);
911 GEN     FpXY_FpXQV_evalx(GEN P, GEN x, GEN T, GEN p);
912 GEN     FpXY_eval(GEN Q, GEN y, GEN x, GEN p);
913 GEN     FpXY_evalx(GEN Q, GEN x, GEN p);
914 GEN     FpXY_evaly(GEN Q, GEN y, GEN p, long vy);
915 GEN     FpXYQQ_pow(GEN x, GEN n, GEN S, GEN T, GEN p);
916 GEN     FqXC_to_mod(GEN z, GEN T, GEN p);
917 GEN     FqXM_to_mod(GEN z, GEN T, GEN p);
918 GEN     Kronecker_to_FpXQX(GEN z, GEN pol, GEN p);
919 const struct bb_algebra * get_FpXQX_algebra(void **E, GEN T, GEN p, long v);
920 const struct bb_algebra * get_FpXQXQ_algebra(void **E, GEN S, GEN T, GEN p);
921 GEN     random_FpXQX(long d1, long v, GEN T, GEN p);
922 
923 /* FpV.c */
924 
925 GEN     Flc_Flv_mul(GEN x, GEN y, ulong p);
926 GEN     Flc_to_mod(GEN z, ulong pp);
927 GEN     Flm_Fl_add(GEN x, ulong y, ulong p);
928 GEN     Flm_Fl_mul(GEN y, ulong x, ulong p);
929 void    Flm_Fl_mul_inplace(GEN y, ulong x, ulong p);
930 GEN     Flm_Fl_mul_pre(GEN y, ulong x, ulong p, ulong pi);
931 GEN     Flm_Fl_sub(GEN x, ulong y, ulong p);
932 GEN     Flm_Flc_mul(GEN x, GEN y, ulong p);
933 GEN     Flm_Flc_mul_pre(GEN x, GEN y, ulong p, ulong pi);
934 GEN     Flm_Flc_mul_pre_Flx(GEN x, GEN y, ulong p, ulong pi, long sv);
935 GEN     Flm_add(GEN x, GEN y, ulong p);
936 GEN     Flm_center(GEN z, ulong p, ulong ps2);
937 GEN     Flm_mul(GEN x, GEN y, ulong p);
938 GEN     Flm_mul_pre(GEN x, GEN y, ulong p, ulong pi);
939 GEN     Flm_neg(GEN y, ulong p);
940 GEN     Flm_powers(GEN x, ulong n, ulong p);
941 GEN     Flm_powu(GEN x, ulong n, ulong p);
942 GEN     Flm_sub(GEN x, GEN y, ulong p);
943 GEN     Flm_to_mod(GEN z, ulong pp);
944 GEN     Flm_transpose(GEN x);
945 GEN     Flv_Fl_div(GEN x, ulong y, ulong p);
946 void    Flv_Fl_div_inplace(GEN x, ulong y, ulong p);
947 GEN     Flv_Fl_mul(GEN x, ulong y, ulong p);
948 void    Flv_Fl_mul_inplace(GEN x, ulong y, ulong p);
949 void    Flv_Fl_mul_part_inplace(GEN x, ulong y, ulong p, long l);
950 GEN     Flv_add(GEN x, GEN y, ulong p);
951 void    Flv_add_inplace(GEN x, GEN y, ulong p);
952 GEN     Flv_center(GEN z, ulong p, ulong ps2);
953 ulong   Flv_dotproduct(GEN x, GEN y, ulong p);
954 ulong   Flv_dotproduct_pre(GEN x, GEN y, ulong p, ulong pi);
955 GEN     Flv_neg(GEN v, ulong p);
956 void    Flv_neg_inplace(GEN v, ulong p);
957 GEN     Flv_sub(GEN x, GEN y, ulong p);
958 void    Flv_sub_inplace(GEN x, GEN y, ulong p);
959 ulong   Flv_sum(GEN x, ulong p);
960 ulong   Flx_dotproduct(GEN x, GEN y, ulong p);
961 GEN     Fp_to_mod(GEN z, GEN p);
962 GEN     FpC_FpV_mul(GEN x, GEN y, GEN p);
963 GEN     FpC_Fp_mul(GEN x, GEN y, GEN p);
964 GEN     FpC_center(GEN z, GEN p, GEN pov2);
965 void    FpC_center_inplace(GEN z, GEN p, GEN pov2);
966 GEN     FpC_red(GEN z, GEN p);
967 GEN     FpC_to_mod(GEN z, GEN p);
968 GEN     FpM_add(GEN x, GEN y, GEN p);
969 GEN     FpM_Fp_mul(GEN X, GEN c, GEN p);
970 GEN     FpM_FpC_mul(GEN x, GEN y, GEN p);
971 GEN     FpM_FpC_mul_FpX(GEN x, GEN y, GEN p, long v);
972 GEN     FpM_center(GEN z, GEN p, GEN pov2);
973 void    FpM_center_inplace(GEN z, GEN p, GEN pov2);
974 GEN     FpM_mul(GEN x, GEN y, GEN p);
975 GEN     FpM_powu(GEN x, ulong n, GEN p);
976 GEN     FpM_red(GEN z, GEN p);
977 GEN     FpM_sub(GEN x, GEN y, GEN p);
978 GEN     FpM_to_mod(GEN z, GEN p);
979 GEN     FpMs_FpC_mul(GEN M, GEN B, GEN p);
980 GEN     FpMs_FpCs_solve(GEN M, GEN B, long nbrow, GEN p);
981 GEN     FpMs_FpCs_solve_safe(GEN M, GEN A, long nbrow, GEN p);
982 GEN     FpMs_leftkernel_elt(GEN M, long nbrow, GEN p);
983 GEN     FpC_add(GEN x, GEN y, GEN p);
984 GEN     FpC_sub(GEN x, GEN y, GEN p);
985 GEN     FpV_FpMs_mul(GEN B, GEN M, GEN p);
986 GEN     FpV_add(GEN x, GEN y, GEN p);
987 GEN     FpV_sub(GEN x, GEN y, GEN p);
988 GEN     FpV_dotproduct(GEN x, GEN y, GEN p);
989 GEN     FpV_dotsquare(GEN x, GEN p);
990 GEN     FpV_red(GEN z, GEN p);
991 GEN     FpV_to_mod(GEN z, GEN p);
992 GEN     FpVV_to_mod(GEN z, GEN p);
993 GEN     FpX_to_mod(GEN z, GEN p);
994 GEN     FpXC_to_mod(GEN x, GEN p);
995 GEN     FpXM_to_mod(GEN x, GEN p);
996 GEN     ZabM_ker(GEN M, GEN P, long n);
997 GEN     ZabM_indexrank(GEN M, GEN P, long n);
998 GEN     ZabM_inv(GEN M, GEN P, long n, GEN *pden);
999 GEN     ZabM_inv_ratlift(GEN M, GEN P, long n, GEN *pden);
1000 GEN     ZabM_pseudoinv(GEN M, GEN P, long n, GEN *pv, GEN *den);
1001 GEN     ZV_zMs_mul(GEN B, GEN M);
1002 GEN     ZpMs_ZpCs_solve(GEN M, GEN B, long nbrow, GEN p, long e);
1003 GEN     gen_FpM_Wiedemann(void *E, GEN (*f)(void*, GEN), GEN B, GEN p);
1004 GEN     gen_ZpM_Dixon_Wiedemann(void *E, GEN (*f)(void*, GEN), GEN B, GEN p, long e);
1005 GEN     gen_matid(long n, void *E, const struct bb_field *S);
1006 GEN     matid_Flm(long n);
1007 GEN     matid_F2xqM(long n, GEN T);
1008 GEN     matid_FlxqM(long n, GEN T, ulong p);
1009 GEN     random_Flv(long n, ulong p);
1010 GEN     random_FpC(long d, GEN p);
1011 GEN     random_FpV(long d, GEN p);
1012 GEN     scalar_Flm(long s, long n);
1013 GEN     zCs_to_ZC(GEN C, long nbrow);
1014 GEN     zMs_to_ZM(GEN M, long nbrow);
1015 GEN     zMs_ZC_mul(GEN M, GEN B);
1016 GEN     ZMV_to_FlmV(GEN z, ulong m);
1017 
1018 /* Hensel.c */
1019 
1020 GEN     Flx_Teichmuller(GEN P, ulong p, long n);
1021 GEN     Z2_sqrt(GEN x, long e);
1022 GEN     Zp_sqrt(GEN x, GEN p, long e);
1023 GEN     Zp_sqrtlift(GEN b, GEN a, GEN p, long e);
1024 GEN     Zp_sqrtnlift(GEN b, GEN n, GEN a, GEN p, long e);
1025 GEN     ZpM_invlift(GEN M, GEN C, GEN p, long n);
1026 GEN     ZpX_Frobenius(GEN T, GEN p, long e);
1027 GEN     ZpX_ZpXQ_liftroot(GEN P, GEN S, GEN T, GEN p, long e);
1028 GEN     ZpX_ZpXQ_liftroot_ea(GEN P, GEN S, GEN T, GEN p, long n, void *E,
1029                      GEN early(void *E, GEN x, GEN q));
1030 GEN     ZpX_liftfact(GEN pol, GEN Q, GEN pe, GEN p, long e);
1031 GEN     ZpX_liftroot(GEN f, GEN a, GEN p, long e);
1032 GEN     ZpX_liftroots(GEN f, GEN S, GEN p, long e);
1033 GEN     ZpX_roots(GEN f, GEN p, long e);
1034 GEN     ZpXQ_div(GEN a, GEN b, GEN T, GEN q, GEN p, long e);
1035 GEN     ZpXQ_inv(GEN a, GEN T, GEN p, long e);
1036 GEN     ZpXQ_invlift(GEN b, GEN a, GEN T, GEN p, long e);
1037 GEN     ZpXQ_log(GEN a, GEN T, GEN p, long N);
1038 GEN     ZpXQ_sqrt(GEN a, GEN T, GEN p, long e);
1039 GEN     ZpXQ_sqrtnlift(GEN b, GEN n, GEN a, GEN T, GEN p, long e);
1040 GEN     ZpXQM_prodFrobenius(GEN M, GEN T, GEN p, long e);
1041 GEN     ZpXQX_digits(GEN x, GEN B, GEN T, GEN q, GEN p, long e);
1042 GEN     ZpXQX_divrem(GEN x, GEN S, GEN T, GEN q, GEN p, long e, GEN *pr);
1043 GEN     ZpXQX_liftfact(GEN pol, GEN Q, GEN T, GEN pe, GEN p, long e);
1044 GEN     ZpXQX_liftroot(GEN f, GEN a, GEN T, GEN p, long e);
1045 GEN     ZpXQX_liftroot_vald(GEN f, GEN a, long v, GEN T, GEN p, long e);
1046 GEN     ZpXQX_liftroots(GEN f, GEN S, GEN T, GEN p, long e);
1047 GEN     ZpXQX_roots(GEN F, GEN T, GEN p, long e);
1048 GEN     Zq_sqrtnlift(GEN a, GEN n, GEN x, GEN T, GEN p, long e);
1049 GEN     ZqX_liftfact(GEN pol, GEN Q, GEN T, GEN pe, GEN p, long e);
1050 GEN     ZqX_liftroot(GEN f, GEN a, GEN T, GEN p, long e);
1051 GEN     ZqX_roots(GEN F, GEN T, GEN p, long e);
1052 GEN     gen_ZpM_Dixon(GEN F, GEN V, GEN q, GEN p, long N, void *E,
1053                              GEN lin(void *E, GEN F, GEN d, GEN q),
1054                              GEN invl(void *E, GEN d));
1055 GEN     gen_ZpM_Newton(GEN x, GEN p, long n, void *E,
1056                               GEN eval(void *E, GEN f, GEN q),
1057                               GEN invd(void *E, GEN V, GEN v, GEN q, long M));
1058 GEN     gen_ZpX_Dixon(GEN F, GEN V, GEN q, GEN p, long N, void *E,
1059                              GEN lin(void *E, GEN F, GEN d, GEN q),
1060                              GEN invl(void *E, GEN d));
1061 GEN     gen_ZpX_Newton(GEN x, GEN p, long n, void *E,
1062                               GEN eval(void *E, GEN f, GEN q),
1063                               GEN invd(void *E, GEN V, GEN v, GEN q, long M));
1064 GEN     polteichmuller(GEN P, ulong p, long n);
1065 GEN     polhensellift(GEN pol, GEN fct, GEN p, long exp);
1066 ulong   quadratic_prec_mask(long n);
1067 
1068 /* QX_factor.c */
1069 
1070 GEN     QX_factor(GEN x);
1071 GEN     ZX_factor(GEN x);
1072 long    ZX_is_irred(GEN x);
1073 GEN     ZX_squff(GEN f, GEN *ex);
1074 GEN     polcyclofactors(GEN f);
1075 long    poliscyclo(GEN f);
1076 long    poliscycloprod(GEN f);
1077 
1078 
1079 /* RgV.c */
1080 
1081 GEN     Rg_RgC_sub(GEN a, GEN x);
1082 GEN     RgC_Rg_add(GEN x, GEN y);
1083 GEN     RgC_Rg_div(GEN x, GEN y);
1084 GEN     RgC_Rg_mul(GEN x, GEN y);
1085 GEN     RgC_Rg_sub(GEN x, GEN y);
1086 GEN     RgC_RgM_mul(GEN x, GEN y);
1087 GEN     RgC_RgV_mul(GEN x, GEN y);
1088 GEN     RgC_add(GEN x, GEN y);
1089 long    RgC_is_ei(GEN x);
1090 GEN     RgC_neg(GEN x);
1091 GEN     RgC_sub(GEN x, GEN y);
1092 GEN     RgM_Rg_add(GEN x, GEN y);
1093 GEN     RgM_Rg_add_shallow(GEN x, GEN y);
1094 GEN     RgM_Rg_div(GEN x, GEN y);
1095 GEN     RgM_Rg_mul(GEN x, GEN y);
1096 GEN     RgM_Rg_sub(GEN x, GEN y);
1097 GEN     RgM_Rg_sub_shallow(GEN x, GEN y);
1098 GEN     RgM_RgC_mul(GEN x, GEN y);
1099 GEN     RgM_RgV_mul(GEN x, GEN y);
1100 GEN     RgM_ZM_mul(GEN x, GEN y);
1101 GEN     RgM_add(GEN x, GEN y);
1102 GEN     RgM_det_triangular(GEN x);
1103 int     RgM_is_QM(GEN x);
1104 int     RgM_is_ZM(GEN x);
1105 int     RgM_isdiagonal(GEN x);
1106 int     RgM_isidentity(GEN x);
1107 int     RgM_isscalar(GEN x, GEN s);
1108 GEN     RgM_mul(GEN x, GEN y);
1109 GEN     RgM_multosym(GEN x, GEN y);
1110 GEN     RgM_neg(GEN x);
1111 GEN     RgM_powers(GEN x, long l);
1112 GEN     RgM_sqr(GEN x);
1113 GEN     RgM_sub(GEN x, GEN y);
1114 GEN     RgM_sumcol(GEN A);
1115 GEN     RgM_transmul(GEN x, GEN y);
1116 GEN     RgM_transmultosym(GEN x, GEN y);
1117 GEN     RgMrow_zc_mul(GEN x, GEN y, long i);
1118 GEN     RgM_zc_mul(GEN x, GEN y);
1119 GEN     RgM_zm_mul(GEN x, GEN y);
1120 GEN     RgMrow_RgC_mul(GEN x, GEN y, long i);
1121 GEN     RgV_RgM_mul(GEN x, GEN y);
1122 GEN     RgV_RgC_mul(GEN x, GEN y);
1123 GEN     RgV_Rg_mul(GEN x, GEN y);
1124 GEN     RgV_add(GEN x, GEN y);
1125 GEN     RgV_dotproduct(GEN x, GEN y);
1126 GEN     RgV_dotsquare(GEN x);
1127 int     RgV_is_ZMV(GEN V);
1128 GEN     RgV_kill0(GEN v);
1129 GEN     RgV_neg(GEN x);
1130 GEN     RgV_prod(GEN v);
1131 GEN     RgV_sub(GEN x, GEN y);
1132 GEN     RgV_sum(GEN v);
1133 GEN     RgV_sumpart(GEN v, long n);
1134 GEN     RgV_sumpart2(GEN v, long m, long n);
1135 GEN     RgV_zc_mul(GEN x, GEN y);
1136 GEN     RgV_zm_mul(GEN x, GEN y);
1137 GEN     RgX_RgM_eval(GEN x, GEN y);
1138 GEN     RgX_RgMV_eval(GEN x, GEN y);
1139 int     isdiagonal(GEN x);
1140 GEN     matid(long n);
1141 GEN     scalarcol(GEN x, long n);
1142 GEN     scalarcol_shallow(GEN x, long n);
1143 GEN     scalarmat(GEN x, long n);
1144 GEN     scalarmat_shallow(GEN x, long n);
1145 GEN     scalarmat_s(long x, long n);
1146 
1147 /* RgX.c */
1148 
1149 GEN     Kronecker_to_mod(GEN z, GEN pol);
1150 GEN     QX_ZXQV_eval(GEN P, GEN V, GEN dV);
1151 GEN     QXQ_charpoly(GEN A, GEN T, long v);
1152 GEN     QXQ_powers(GEN a, long n, GEN T);
1153 GEN     QXQ_to_mod_shallow(GEN x, GEN T);
1154 GEN     QXQC_to_mod_shallow(GEN V, GEN T);
1155 GEN     QXQM_to_mod_shallow(GEN V, GEN T);
1156 GEN     QXQV_to_mod(GEN V, GEN T);
1157 GEN     QXQX_to_mod_shallow(GEN z, GEN T);
1158 GEN     QXQXV_to_mod(GEN V, GEN T);
1159 GEN     QXV_QXQ_eval(GEN v, GEN a, GEN T);
1160 GEN     QXX_QXQ_eval(GEN v, GEN a, GEN T);
1161 GEN     Rg_RgX_sub(GEN x, GEN y);
1162 GEN     Rg_get_0(GEN x);
1163 GEN     Rg_get_1(GEN x);
1164 GEN     Rg_to_RgC(GEN x, long N);
1165 GEN     RgM_to_RgXV(GEN x, long v);
1166 GEN     RgM_to_RgXX(GEN x, long v,long w);
1167 GEN     RgV_to_RgX(GEN x, long v);
1168 GEN     RgV_to_RgM(GEN v, long n);
1169 GEN     RgV_to_RgX_reverse(GEN x, long v);
1170 GEN     RgX_RgXQ_eval(GEN f, GEN x, GEN T);
1171 GEN     RgX_RgXQV_eval(GEN P, GEN V, GEN T);
1172 GEN     RgX_RgXn_eval(GEN Q, GEN x, long n);
1173 GEN     RgX_RgXnV_eval(GEN Q, GEN x, long n);
1174 GEN     RgX_Rg_add(GEN y, GEN x);
1175 GEN     RgX_Rg_add_shallow(GEN y, GEN x);
1176 GEN     RgX_Rg_div(GEN y, GEN x);
1177 GEN     RgX_Rg_divexact(GEN x, GEN y);
1178 GEN     RgX_Rg_eval_bk(GEN Q, GEN x);
1179 GEN     RgX_Rg_mul(GEN y, GEN x);
1180 GEN     RgX_Rg_sub(GEN y, GEN x);
1181 GEN     RgX_RgV_eval(GEN Q, GEN x);
1182 GEN     RgX_add(GEN x, GEN y);
1183 GEN     RgX_addmulXn_shallow(GEN x, GEN y, long d);
1184 GEN     RgX_addmulXn(GEN x, GEN y, long d);
1185 GEN     RgX_addspec(GEN x, GEN y, long nx, long ny);
1186 GEN     RgX_addspec_shallow(GEN x, GEN y, long nx, long ny);
1187 GEN     RgX_blocks(GEN P, long n, long m);
1188 GEN     RgX_deflate(GEN x0, long d);
1189 GEN     RgX_deriv(GEN x);
1190 GEN     RgX_digits(GEN A, GEN B);
1191 GEN     RgX_div_by_X_x(GEN a, GEN x, GEN *r);
1192 GEN     RgX_divrem(GEN x,GEN y,GEN *r);
1193 GEN     RgX_divs(GEN y, long x);
1194 long    RgX_equal(GEN x, GEN y);
1195 void    RgX_even_odd(GEN p, GEN *pe, GEN *po);
1196 GEN     RgX_inflate(GEN x0, long d);
1197 GEN     RgX_mul(GEN x,GEN y);
1198 GEN     RgX_mul_i(GEN x,GEN y);
1199 GEN     RgX_mul_normalized(GEN A, long a, GEN B, long b);
1200 GEN     RgX_mulXn(GEN x, long d);
1201 GEN     RgX_mulhigh_i(GEN f, GEN g, long n);
1202 GEN     RgX_muls(GEN y, long x);
1203 GEN     RgX_mulspec(GEN a, GEN b, long na, long nb);
1204 GEN     RgX_neg(GEN x);
1205 GEN     RgX_normalize(GEN x);
1206 GEN     RgX_pseudodivrem(GEN x, GEN y, GEN *ptr);
1207 GEN     RgX_pseudorem(GEN x, GEN y);
1208 GEN     RgX_recip(GEN x);
1209 GEN     RgX_recip_shallow(GEN x);
1210 GEN     RgX_rem(GEN x, GEN y);
1211 GEN     RgX_renormalize_lg(GEN x, long lx);
1212 GEN     RgX_rescale(GEN P, GEN h);
1213 GEN     RgX_rotate_shallow(GEN P, long k, long p);
1214 GEN     RgX_shift(GEN a, long n);
1215 GEN     RgX_shift_shallow(GEN x, long n);
1216 GEN     RgX_splitting(GEN p, long k);
1217 GEN     RgX_sqr(GEN x);
1218 GEN     RgX_sqr_i(GEN x);
1219 GEN     RgX_sqrhigh_i(GEN f, long n);
1220 GEN     RgX_sqrspec(GEN a, long na);
1221 GEN     RgX_sub(GEN x, GEN y);
1222 GEN     RgX_to_RgC(GEN x, long N);
1223 GEN     RgX_translate(GEN P, GEN c);
1224 GEN     RgX_unscale(GEN P, GEN h);
1225 GEN     RgXQ_matrix_pow(GEN y, long n, long m, GEN P);
1226 GEN     RgXQ_norm(GEN x, GEN T);
1227 GEN     RgXQ_pow(GEN x, GEN n, GEN T);
1228 GEN     RgXQ_powers(GEN x, long l, GEN T);
1229 GEN     RgXQ_powu(GEN x, ulong n, GEN T);
1230 GEN     RgXQC_red(GEN P, GEN T);
1231 GEN     RgXQM_mul(GEN P, GEN Q, GEN T);
1232 GEN     RgXQM_red(GEN P, GEN T);
1233 GEN     RgXQV_RgXQ_mul(GEN v, GEN x, GEN T);
1234 GEN     RgXQV_red(GEN P, GEN T);
1235 GEN     RgXQX_RgXQ_mul(GEN x, GEN y, GEN T);
1236 GEN     RgXQX_divrem(GEN x,GEN y,GEN T,GEN *r);
1237 GEN     RgXQX_mul(GEN x,GEN y,GEN T);
1238 GEN     RgXQX_powers(GEN P, long n, GEN T);
1239 GEN     RgXQX_pseudodivrem(GEN x, GEN y, GEN T, GEN *ptr);
1240 GEN     RgXQX_pseudorem(GEN x, GEN y, GEN T);
1241 GEN     RgXQX_red(GEN P, GEN T);
1242 GEN     RgXQX_sqr(GEN x, GEN T);
1243 GEN     RgXQX_translate(GEN P, GEN c, GEN T);
1244 GEN     RgXV_RgV_eval(GEN Q, GEN x);
1245 GEN     RgXV_to_RgM(GEN v, long n);
1246 GEN     RgXV_unscale(GEN v, GEN h);
1247 GEN     RgXX_to_RgM(GEN v, long n);
1248 long    RgXY_degreex(GEN bpol);
1249 GEN     RgXY_swap(GEN x, long n, long w);
1250 GEN     RgXY_swapspec(GEN x, long n, long w, long nx);
1251 GEN     RgXn_eval(GEN Q, GEN x, long n);
1252 GEN     RgXn_exp(GEN f, long e);
1253 GEN     RgXn_expint(GEN f, long e);
1254 GEN     RgXn_inv(GEN f, long e);
1255 GEN     RgXn_inv_i(GEN f, long e);
1256 GEN     RgXn_mul(GEN f, GEN g, long n);
1257 GEN     RgXn_powers(GEN f, long m, long n);
1258 GEN     RgXn_recip_shallow(GEN P, long n);
1259 GEN     RgXn_red_shallow(GEN a, long n);
1260 GEN     RgXn_reverse(GEN f, long e);
1261 GEN     RgXn_sqr(GEN f, long n);
1262 GEN     RgXn_sqrt(GEN f, long n);
1263 GEN     RgXnV_red_shallow(GEN P, long n);
1264 GEN     RgXn_powu(GEN x, ulong m, long n);
1265 GEN     RgXn_powu_i(GEN x, ulong m, long n);
1266 GEN     ZX_translate(GEN P, GEN c);
1267 GEN     ZX_unscale2n(GEN P, long n);
1268 GEN     ZX_unscale(GEN P, GEN h);
1269 GEN     ZX_unscale_div(GEN P, GEN h);
1270 GEN     ZX_z_unscale(GEN P, long h);
1271 GEN     ZXQ_powers(GEN x, long l, GEN T);
1272 GEN     ZXQ_powu(GEN x, ulong n, GEN T);
1273 int     ZXQX_dvd(GEN x, GEN y, GEN T);
1274 long    brent_kung_optpow(long d, long n, long m);
1275 GEN     gen_bkeval(GEN Q, long d, GEN x, int use_sqr, void *E,
1276           const struct bb_algebra *ff, GEN cmul(void *E, GEN P, long a, GEN x));
1277 GEN     gen_bkeval_powers(GEN P, long d, GEN V, void *E,
1278           const struct bb_algebra *ff, GEN cmul(void *E, GEN P, long a, GEN x));
1279 const struct bb_algebra * get_Rg_algebra(void);
1280 long    rfrac_deflate_order(GEN F);
1281 GEN     rfrac_deflate_max(GEN F, long *m);
1282 GEN     rfrac_deflate(GEN F, long m);
1283 
1284 /* ZG.c */
1285 void    ZGC_G_mul_inplace(GEN v, GEN x);
1286 GEN     ZGCs_add(GEN x, GEN y);
1287 GEN     G_ZGC_mul(GEN x, GEN v);
1288 GEN     G_ZG_mul(GEN x, GEN y);
1289 GEN     ZGC_G_mul(GEN v, GEN x);
1290 GEN     ZGC_Z_mul(GEN v, GEN x);
1291 GEN     ZG_G_mul(GEN x, GEN y);
1292 GEN     ZG_Z_mul(GEN x, GEN c);
1293 GEN     ZG_add(GEN x, GEN y);
1294 GEN     ZG_mul(GEN x, GEN y);
1295 GEN     ZG_neg(GEN x);
1296 GEN     ZG_normalize(GEN x);
1297 GEN     ZG_sub(GEN x, GEN y);
1298 
1299 /* ZV.c */
1300 
1301 void    Flc_lincomb1_inplace(GEN X, GEN Y, ulong v, ulong q);
1302 GEN     vecsmall_prod(GEN v);
1303 GEN     QM_QC_mul(GEN x, GEN y);
1304 GEN     QM_det(GEN x);
1305 GEN     QM_ker(GEN M);
1306 GEN     QM_mul(GEN x, GEN y);
1307 GEN     QM_sqr(GEN x);
1308 void    RgM_check_ZM(GEN A, const char *s);
1309 void    RgV_check_ZV(GEN A, const char *s);
1310 GEN     Z_ZC_sub(GEN a, GEN x);
1311 GEN     ZV_zc_mul(GEN x, GEN y);
1312 GEN     ZC_Q_mul(GEN A, GEN z);
1313 GEN     ZC_Z_add(GEN x, GEN y);
1314 GEN     ZC_Z_div(GEN x, GEN c);
1315 GEN     ZC_Z_divexact(GEN X, GEN c);
1316 GEN     ZC_Z_mul(GEN X, GEN c);
1317 GEN     ZC_Z_sub(GEN x, GEN y);
1318 GEN     ZC_ZV_mul(GEN x, GEN y);
1319 GEN     ZC_u_divexact(GEN x, ulong c);
1320 GEN     ZC_add(GEN x, GEN y);
1321 GEN     ZC_copy(GEN x);
1322 GEN     ZC_hnfremdiv(GEN x, GEN y, GEN *Q);
1323 long    ZC_is_ei(GEN x);
1324 GEN     ZC_lincomb(GEN u, GEN v, GEN X, GEN Y);
1325 void    ZC_lincomb1_inplace(GEN X, GEN Y, GEN v);
1326 void    ZC_lincomb1_inplace_i(GEN X, GEN Y, GEN v, long n);
1327 GEN     ZC_neg(GEN M);
1328 GEN     ZC_reducemodlll(GEN x,GEN y);
1329 GEN     ZC_reducemodmatrix(GEN v, GEN y);
1330 GEN     ZC_sub(GEN x, GEN y);
1331 GEN     ZC_z_mul(GEN X, long c);
1332 GEN     ZM_Q_mul(GEN A, GEN z);
1333 GEN     ZM_ZC_mul(GEN x, GEN y);
1334 GEN     ZM_Z_div(GEN X, GEN c);
1335 GEN     ZM_Z_divexact(GEN X, GEN c);
1336 GEN     ZM_Z_mul(GEN X, GEN c);
1337 GEN     ZM_add(GEN x, GEN y);
1338 GEN     ZM_copy(GEN x);
1339 GEN     ZM_det_triangular(GEN mat);
1340 GEN     ZM_diag_mul(GEN m, GEN d);
1341 int     ZM_equal(GEN A, GEN B);
1342 int     ZM_equal0(GEN A);
1343 GEN     ZM_hnfdivrem(GEN x, GEN y, GEN *Q);
1344 int     ZM_ishnf(GEN x);
1345 int     ZM_isdiagonal(GEN x);
1346 int     ZM_isidentity(GEN x);
1347 int     ZM_isscalar(GEN x, GEN s);
1348 long    ZM_max_lg(GEN x);
1349 GEN     ZM_mul(GEN x, GEN y);
1350 GEN     ZM_mul_diag(GEN m, GEN d);
1351 GEN     ZM_multosym(GEN x, GEN y);
1352 GEN     ZM_neg(GEN x);
1353 GEN     ZM_nm_mul(GEN x, GEN y);
1354 GEN     ZM_pow(GEN x, GEN n);
1355 GEN     ZM_powu(GEN x, ulong n);
1356 GEN     ZM_reducemodlll(GEN x,GEN y);
1357 GEN     ZM_reducemodmatrix(GEN v, GEN y);
1358 GEN     ZM_sqr(GEN x);
1359 GEN     ZM_sub(GEN x, GEN y);
1360 GEN     ZM_supnorm(GEN x);
1361 GEN     ZM_to_Flm(GEN x, ulong p);
1362 GEN     ZM_to_zm(GEN z);
1363 GEN     ZM_transmul(GEN x, GEN y);
1364 GEN     ZM_transmultosym(GEN x, GEN y);
1365 GEN     ZMV_to_zmV(GEN z);
1366 void    ZM_togglesign(GEN M);
1367 GEN     ZM_zc_mul(GEN x, GEN y);
1368 GEN     ZM_zm_mul(GEN x, GEN y);
1369 GEN     ZMrow_ZC_mul(GEN x, GEN y, long i);
1370 int     ZMrow_equal0(GEN V, long i);
1371 GEN     ZV_ZM_mul(GEN x, GEN y);
1372 int     ZV_abscmp(GEN x, GEN y);
1373 int     ZV_cmp(GEN x, GEN y);
1374 GEN     ZV_content(GEN x);
1375 GEN     ZV_dotproduct(GEN x,GEN y);
1376 GEN     ZV_dotsquare(GEN x);
1377 int     ZV_equal(GEN V, GEN W);
1378 int     ZV_equal0(GEN V);
1379 long    ZV_max_lg(GEN x);
1380 void    ZV_neg_inplace(GEN M);
1381 GEN     ZV_prod(GEN v);
1382 GEN     ZV_sum(GEN v);
1383 GEN     ZV_to_Flv(GEN x, ulong p);
1384 GEN     ZV_to_nv(GEN z);
1385 void    ZV_togglesign(GEN M);
1386 GEN     gram_matrix(GEN M);
1387 GEN     nm_Z_mul(GEN X, GEN c);
1388 GEN     zm_mul(GEN x, GEN y);
1389 GEN     zm_to_Flm(GEN z, ulong p);
1390 GEN     zm_to_ZM(GEN z);
1391 GEN     zm_zc_mul(GEN x, GEN y);
1392 GEN     zmV_to_ZMV(GEN z);
1393 long    zv_content(GEN x);
1394 long    zv_dotproduct(GEN x, GEN y);
1395 int     zv_equal(GEN V, GEN W);
1396 int     zv_equal0(GEN V);
1397 GEN     zv_neg(GEN x);
1398 GEN     zv_neg_inplace(GEN M);
1399 long    zv_prod(GEN v);
1400 GEN     zv_prod_Z(GEN v);
1401 long    zv_sum(GEN v);
1402 long    zv_sumpart(GEN v, long n);
1403 GEN     zv_to_Flv(GEN z, ulong p);
1404 GEN     zv_z_mul(GEN v, long n);
1405 GEN     zv_ZM_mul(GEN x, GEN y);
1406 int     zvV_equal(GEN V, GEN W);
1407 
1408 /* ZX.c */
1409 
1410 GEN     Kronecker_to_ZXQX(GEN z, GEN T);
1411 GEN     Kronecker_to_ZXX(GEN z, long N, long v);
1412 GEN     QX_ZX_rem(GEN x, GEN y);
1413 GEN     QX_mul(GEN x, GEN y);
1414 GEN     QX_sqr(GEN x);
1415 GEN     QXQM_mul(GEN x, GEN y, GEN T);
1416 GEN     QXQM_sqr(GEN x, GEN T);
1417 GEN     QXQX_QXQ_mul(GEN P, GEN U, GEN T);
1418 GEN     QXQX_mul(GEN x, GEN y, GEN T);
1419 GEN     QXQX_powers(GEN P, long n, GEN T);
1420 GEN     QXQX_sqr(GEN x, GEN T);
1421 void    RgX_check_QX(GEN x, const char *s);
1422 void    RgX_check_ZX(GEN x, const char *s);
1423 void    RgX_check_ZXX(GEN x, const char *s);
1424 GEN     Z_ZX_sub(GEN x, GEN y);
1425 GEN     ZX_Z_add(GEN y,GEN x);
1426 GEN     ZX_Z_add_shallow(GEN y, GEN x);
1427 GEN     ZX_Z_divexact(GEN y,GEN x);
1428 GEN     ZX_Z_mul(GEN y,GEN x);
1429 GEN     ZX_Z_sub(GEN y, GEN x);
1430 GEN     ZX_add(GEN x, GEN y);
1431 GEN     ZX_copy(GEN x);
1432 GEN     ZX_deriv(GEN x);
1433 GEN     ZX_div_by_X_1(GEN a, GEN *r);
1434 GEN     ZX_divuexact(GEN y, ulong x);
1435 int     ZX_equal(GEN V, GEN W);
1436 GEN     ZX_eval1(GEN x);
1437 long    ZX_max_lg(GEN x);
1438 GEN     ZX_mod_Xnm1(GEN T, ulong n);
1439 GEN     ZX_mul(GEN x, GEN y);
1440 GEN     ZX_mulspec(GEN a, GEN b, long na, long nb);
1441 GEN     ZX_mulu(GEN y, ulong x);
1442 GEN     ZX_neg(GEN x);
1443 GEN     ZX_rem(GEN x, GEN y);
1444 GEN     ZX_remi2n(GEN y, long n);
1445 GEN     ZX_rescale2n(GEN P, long n);
1446 GEN     ZX_rescale(GEN P, GEN h);
1447 GEN     ZX_rescale_lt(GEN P);
1448 GEN     ZX_shifti(GEN x, long n);
1449 GEN     ZX_sqr(GEN x);
1450 GEN     ZX_sqrspec(GEN a, long na);
1451 GEN     ZX_sub(GEN x, GEN y);
1452 long    ZX_val(GEN x);
1453 long    ZX_valrem(GEN x, GEN *Z);
1454 GEN     ZXQM_mul(GEN x, GEN y, GEN T);
1455 GEN     ZXQM_sqr(GEN x, GEN T);
1456 GEN     ZXQX_ZXQ_mul(GEN P, GEN U, GEN T);
1457 GEN     ZXQX_sqr(GEN x, GEN T);
1458 GEN     ZXQX_mul(GEN x, GEN y, GEN T);
1459 GEN     ZXT_remi2n(GEN z, long n);
1460 GEN     ZXV_Z_mul(GEN y, GEN x);
1461 GEN     ZXV_dotproduct(GEN V, GEN W);
1462 int     ZXV_equal(GEN V, GEN W);
1463 GEN     ZXV_remi2n(GEN x, long n);
1464 GEN     ZXX_Z_divexact(GEN y, GEN x);
1465 GEN     ZXX_Z_mul(GEN y, GEN x);
1466 GEN     ZXX_Z_add_shallow(GEN x, GEN y);
1467 GEN     ZXX_evalx0(GEN y);
1468 long    ZXX_max_lg(GEN x);
1469 GEN     ZXX_mul_Kronecker(GEN x, GEN y, long n);
1470 GEN     ZXX_renormalize(GEN x, long lx);
1471 GEN     ZXX_sqr_Kronecker(GEN x, long n);
1472 GEN     ZXX_to_Kronecker(GEN P, long n);
1473 GEN     ZXX_to_Kronecker_spec(GEN P, long lP, long n);
1474 GEN     ZXn_mul(GEN x, GEN y, long n);
1475 GEN     ZXn_sqr(GEN x, long n);
1476 GEN     scalar_ZX(GEN x, long v);
1477 GEN     scalar_ZX_shallow(GEN x, long v);
1478 GEN     zx_to_ZX(GEN z);
1479 GEN     zx_z_divexact(GEN y, long x);
1480 
1481 /* algebras.c */
1482 
1483 GEN     alg_centralproj(GEN al, GEN z, long maps);
1484 GEN     alg_changeorder(GEN al, GEN ord);
1485 GEN     alg_complete(GEN rnf, GEN aut, GEN hi, GEN hf, long maxord);
1486 GEN     alg_csa_table(GEN nf, GEN mt, long v, long maxord);
1487 GEN     alg_cyclic(GEN rnf, GEN aut, GEN b, long maxord);
1488 long    alg_get_absdim(GEN al);
1489 GEN     alg_get_abssplitting(GEN al);
1490 GEN     alg_get_aut(GEN al);
1491 GEN     algaut(GEN al);
1492 GEN     alg_get_auts(GEN al);
1493 GEN     alg_get_b(GEN al);
1494 GEN     algb(GEN al);
1495 GEN     algcenter(GEN al);
1496 GEN     alg_get_center(GEN al);
1497 GEN     alg_get_char(GEN al);
1498 GEN     algchar(GEN al);
1499 long    alg_get_degree(GEN al);
1500 long    algdegree(GEN al);
1501 long    alg_get_dim(GEN al);
1502 long    algdim(GEN al, long abs);
1503 GEN     alg_get_hasse_f(GEN al);
1504 GEN     alghassef(GEN al);
1505 GEN     alg_get_hasse_i(GEN al);
1506 GEN     alghassei(GEN al);
1507 GEN     alg_get_invbasis(GEN al);
1508 GEN     alginvbasis(GEN al);
1509 GEN     alg_get_multable(GEN al);
1510 GEN     alg_get_basis(GEN al);
1511 GEN     algbasis(GEN al);
1512 GEN     alg_get_relmultable(GEN al);
1513 GEN     algrelmultable(GEN al);
1514 GEN     alg_get_splitpol(GEN al);
1515 GEN     alg_get_splittingfield(GEN al);
1516 GEN     algsplittingfield(GEN al);
1517 GEN     alg_get_splittingbasis(GEN al);
1518 GEN     alg_get_splittingbasisinv(GEN al);
1519 GEN     alg_get_splittingdata(GEN al);
1520 GEN     algsplittingdata(GEN al);
1521 GEN     alg_get_tracebasis(GEN al);
1522 GEN     alg_hasse(GEN nf, long n, GEN hi, GEN hf, long var, long maxord);
1523 GEN     alg_hilbert(GEN nf, GEN a, GEN b, long v, long maxord);
1524 GEN     alg_matrix(GEN nf, long n, long v, GEN L, long maxord);
1525 long    alg_model(GEN al, GEN x);
1526 GEN     alg_quotient(GEN al, GEN I, long maps);
1527 GEN     algradical(GEN al);
1528 GEN     algsimpledec(GEN al, long maps);
1529 GEN     algsimpledec_ss(GEN al, long maps);
1530 GEN     algsubalg(GEN al, GEN basis);
1531 long    alg_type(GEN al);
1532 GEN     algadd(GEN al, GEN x, GEN y);
1533 GEN     algalgtobasis(GEN al, GEN x);
1534 GEN     algbasistoalg(GEN al, GEN x);
1535 GEN     algcharpoly(GEN al, GEN x, long v, long abs);
1536 GEN     algdisc(GEN al);
1537 GEN     algdivl(GEN al, GEN x, GEN y);
1538 GEN     algdivr(GEN al, GEN x, GEN y);
1539 GEN     alggroup(GEN gal, GEN p);
1540 GEN     alggroupcenter(GEN gal, GEN p, GEN* ptr_conjclasses);
1541 GEN     alghasse(GEN al, GEN pl);
1542 GEN     alginit(GEN A, GEN B, long v, long maxord);
1543 long    algindex(GEN al, GEN pl);
1544 GEN     alginv(GEN al, GEN x);
1545 int     algisassociative(GEN mt0, GEN p);
1546 int     algiscommutative(GEN al);
1547 int     algisdivision(GEN al, GEN pl);
1548 int     algisramified(GEN al, GEN pl);
1549 int     algissemisimple(GEN al);
1550 int     algissimple(GEN al, long ss);
1551 int     algissplit(GEN al, GEN pl);
1552 int     algisdivl(GEN al, GEN x, GEN y, GEN* ptz);
1553 int     algisinv(GEN al, GEN x, GEN* ptix);
1554 GEN     algmakeintegral(GEN mt0, long maps);
1555 GEN     algmul(GEN al, GEN x, GEN y);
1556 GEN     algmultable(GEN al);
1557 GEN     alglat_get_primbasis(GEN lat);
1558 GEN     alglat_get_scalar(GEN lat);
1559 GEN     alglatadd(GEN al, GEN lat1, GEN lat2, GEN* ptinter);
1560 int     alglatcontains(GEN al, GEN lat, GEN x, GEN* ptc);
1561 GEN     alglatelement(GEN al, GEN lat, GEN c);
1562 GEN     alglathnf(GEN al, GEN m, GEN d);
1563 GEN     alglatindex(GEN al, GEN lat1, GEN lat2);
1564 GEN     alglatinter(GEN al, GEN lat1, GEN lat2, GEN* ptsum);
1565 GEN     alglatmul(GEN al, GEN lat1, GEN lat2);
1566 GEN     alglatlefttransporter(GEN al, GEN lat1, GEN lat2);
1567 GEN     alglatrighttransporter(GEN al, GEN lat1, GEN lat2);
1568 int     alglatsubset(GEN al, GEN lat1, GEN lat2, GEN* ptindex);
1569 GEN     algneg(GEN al, GEN x);
1570 GEN     algnorm(GEN al, GEN x, long abs);
1571 GEN     algpoleval(GEN al, GEN pol, GEN x);
1572 GEN     algpow(GEN al, GEN x, GEN n);
1573 GEN     algprimesubalg(GEN al);
1574 GEN     algramifiedplaces(GEN al);
1575 GEN     algrandom(GEN al, GEN b);
1576 GEN     algsplit(GEN al, long v);
1577 GEN     algtomatrix(GEN al, GEN x, long abs);
1578 GEN     algsqr(GEN al, GEN x);
1579 GEN     algsub(GEN al, GEN x, GEN y);
1580 GEN     algtableinit(GEN mt, GEN p);
1581 GEN     algtensor(GEN al1, GEN al2, long maxord);
1582 GEN     algtrace(GEN al, GEN x, long abs);
1583 long    algtype(GEN al);
1584 GEN     bnfgwgeneric(GEN bnf, GEN Lpr, GEN Ld, GEN pl, long var);
1585 void    checkalg(GEN x);
1586 void    checkhasse(GEN nf, GEN hi, GEN hf, long n);
1587 void    checklat(GEN al, GEN lat);
1588 GEN     conjclasses_algcenter(GEN cc, GEN p);
1589 GEN     galoischardet(GEN gal, GEN ch, long o);
1590 GEN     galoischarpoly(GEN gal, GEN ch, long o);
1591 GEN     galoischartable(GEN gal);
1592 GEN     nfgrunwaldwang(GEN nf0, GEN Lpr, GEN Ld, GEN pl, long var);
1593 GEN     nfgwkummer(GEN nf, GEN Lpr, GEN Ld, GEN pl, long var);
1594 
1595 /* alglin1.c */
1596 
1597 GEN     F2Ms_colelim(GEN M, long nbrow);
1598 GEN     F2m_image(GEN x);
1599 GEN     F2m_indexrank(GEN x);
1600 GEN     F2m_suppl(GEN x);
1601 GEN     F2xqM_F2xqC_gauss(GEN a, GEN b, GEN T);
1602 GEN     F2xqM_F2xqC_invimage(GEN a, GEN b, GEN T);
1603 GEN     F2xqM_F2xqC_mul(GEN a, GEN b, GEN T);
1604 GEN     F2xqM_deplin(GEN x, GEN T);
1605 GEN     F2xqM_det(GEN a, GEN T);
1606 GEN     F2xqM_gauss(GEN a, GEN b, GEN T);
1607 GEN     F2xqM_ker(GEN x, GEN T);
1608 GEN     F2xqM_image(GEN x, GEN T);
1609 GEN     F2xqM_indexrank(GEN x, GEN T);
1610 GEN     F2xqM_inv(GEN a, GEN T);
1611 GEN     F2xqM_invimage(GEN a, GEN b, GEN T);
1612 GEN     F2xqM_mul(GEN a, GEN b, GEN T);
1613 long    F2xqM_rank(GEN x, GEN T);
1614 GEN     F2xqM_suppl(GEN x, GEN T);
1615 GEN     Flm_image(GEN x, ulong p);
1616 GEN     Flm_indexrank(GEN x, ulong p);
1617 GEN     Flm_suppl(GEN x, ulong p);
1618 GEN     FlxqM_FlxqC_gauss(GEN a, GEN b, GEN T, ulong p);
1619 GEN     FlxqM_FlxqC_invimage(GEN a, GEN b, GEN T, ulong p);
1620 GEN     FlxqM_FlxqC_mul(GEN a, GEN b, GEN T, ulong p);
1621 GEN     FlxqM_deplin(GEN x, GEN T, ulong p);
1622 GEN     FlxqM_det(GEN a, GEN T, ulong p);
1623 GEN     FlxqM_gauss(GEN a, GEN b, GEN T, ulong p);
1624 GEN     FlxqM_ker(GEN x, GEN T, ulong p);
1625 GEN     FlxqM_image(GEN x, GEN T, ulong p);
1626 GEN     FlxqM_indexrank(GEN x, GEN T, ulong p);
1627 GEN     FlxqM_inv(GEN x, GEN T, ulong p);
1628 GEN     FlxqM_invimage(GEN a, GEN b, GEN T, ulong p);
1629 GEN     FlxqM_mul(GEN a, GEN b, GEN T, ulong p);
1630 long    FlxqM_rank(GEN x, GEN T, ulong p);
1631 GEN     FlxqM_suppl(GEN x, GEN T, ulong p);
1632 GEN     FpM_FpC_gauss(GEN a, GEN b, GEN p);
1633 GEN     FpM_FpC_invimage(GEN m, GEN v, GEN p);
1634 GEN     FpM_deplin(GEN x, GEN p);
1635 GEN     FpM_det(GEN x, GEN p);
1636 GEN     FpM_gauss(GEN a, GEN b, GEN p);
1637 GEN     FpM_image(GEN x, GEN p);
1638 GEN     FpM_indexrank(GEN x, GEN p);
1639 GEN     FpM_intersect(GEN x, GEN y, GEN p);
1640 GEN     FpM_inv(GEN x, GEN p);
1641 GEN     FpM_invimage(GEN m, GEN v, GEN p);
1642 GEN     FpM_ker(GEN x, GEN p);
1643 long    FpM_rank(GEN x, GEN p);
1644 GEN     FpM_suppl(GEN x, GEN p);
1645 GEN     FqM_FqC_gauss(GEN a, GEN b, GEN T, GEN p);
1646 GEN     FqM_FqC_invimage(GEN a, GEN b, GEN T, GEN p);
1647 GEN     FqM_FqC_mul(GEN a, GEN b, GEN T, GEN p);
1648 GEN     FqM_deplin(GEN x, GEN T, GEN p);
1649 GEN     FqM_det(GEN x, GEN T, GEN p);
1650 GEN     FqM_gauss(GEN a, GEN b, GEN T, GEN p);
1651 GEN     FqM_ker(GEN x, GEN T, GEN p);
1652 GEN     FqM_image(GEN x, GEN T, GEN p);
1653 GEN     FqM_indexrank(GEN x, GEN T, GEN p);
1654 GEN     FqM_inv(GEN x, GEN T, GEN p);
1655 GEN     FqM_invimage(GEN a, GEN b, GEN T, GEN p);
1656 GEN     FqM_mul(GEN a, GEN b, GEN T, GEN p);
1657 long    FqM_rank(GEN a, GEN T, GEN p);
1658 GEN     FqM_suppl(GEN x, GEN T, GEN p);
1659 GEN     QM_image_shallow(GEN A);
1660 GEN     QM_image(GEN A);
1661 GEN     QM_gauss(GEN a, GEN b);
1662 GEN     QM_gauss_i(GEN M, GEN B, long flag);
1663 GEN     QM_indexrank(GEN x);
1664 GEN     QM_inv(GEN M);
1665 long    QM_rank(GEN x);
1666 GEN     RgM_Fp_init(GEN a, GEN p, ulong *pp);
1667 GEN     RgM_Hadamard(GEN a);
1668 GEN     RgM_RgC_invimage(GEN A, GEN B);
1669 GEN     RgM_diagonal(GEN m);
1670 GEN     RgM_diagonal_shallow(GEN m);
1671 GEN     RgM_inv(GEN a);
1672 GEN     RgM_inv_upper(GEN a);
1673 GEN     RgM_invimage(GEN A, GEN B);
1674 GEN     RgM_solve(GEN a, GEN b);
1675 GEN     RgM_solve_realimag(GEN x, GEN y);
1676 void    RgMs_structelim(GEN M, long nbrow, GEN A, GEN *p_col, GEN *p_lin);
1677 GEN     ZM_det(GEN a);
1678 GEN     ZM_detmult(GEN A);
1679 GEN     ZM_gauss(GEN a, GEN b);
1680 GEN     ZM_ker(GEN M);
1681 GEN     ZM_imagecompl(GEN x);
1682 GEN     ZM_indeximage(GEN x);
1683 GEN     ZM_indexrank(GEN x);
1684 GEN     ZM_inv(GEN M, GEN *den);
1685 GEN     ZM_inv_ratlift(GEN M, GEN *pden);
1686 GEN     ZM_pseudoinv(GEN M, GEN *pv, GEN *den);
1687 long    ZM_rank(GEN x);
1688 GEN     ZlM_gauss(GEN a, GEN b, ulong p, long e, GEN C);
1689 GEN     closemodinvertible(GEN x, GEN y);
1690 GEN     deplin(GEN x);
1691 GEN     det(GEN a);
1692 GEN     det0(GEN a,long flag);
1693 GEN     det2(GEN a);
1694 GEN     detint(GEN x);
1695 GEN     eigen(GEN x, long prec);
1696 GEN     gauss(GEN a, GEN b);
1697 GEN     gaussmodulo(GEN M, GEN D, GEN Y);
1698 GEN     gaussmodulo2(GEN M, GEN D, GEN Y);
1699 GEN     gen_Gauss(GEN a, GEN b, void *E, const struct bb_field *ff);
1700 GEN     gen_Gauss_pivot(GEN x, long *rr, void *E, const struct bb_field *ff);
1701 GEN     gen_det(GEN a, void *E, const struct bb_field *ff);
1702 GEN     gen_ker(GEN x, long deplin, void *E, const struct bb_field *ff);
1703 GEN     gen_matcolinvimage(GEN a, GEN b, void *E, const struct bb_field *ff);
1704 GEN     gen_matcolmul(GEN a, GEN b, void *E, const struct bb_field *ff);
1705 GEN     gen_matinvimage(GEN a, GEN b, void *E, const struct bb_field *ff);
1706 GEN     gen_matmul(GEN a, GEN b, void *E, const struct bb_field *ff);
1707 GEN     image(GEN x);
1708 GEN     image2(GEN x);
1709 GEN     imagecompl(GEN x);
1710 GEN     indexrank(GEN x);
1711 GEN     inverseimage(GEN mat, GEN y);
1712 GEN     ker(GEN x);
1713 GEN     mateigen(GEN x, long flag, long prec);
1714 GEN     matimage0(GEN x,long flag);
1715 GEN     matker0(GEN x, long flag);
1716 long    rank(GEN x);
1717 GEN     reducemodinvertible(GEN x, GEN y);
1718 GEN     reducemodlll(GEN x,GEN y);
1719 GEN     split_realimag(GEN x, long r1, long r2);
1720 GEN     suppl(GEN x);
1721 
1722 /* alglin2.c */
1723 
1724 GEN     Flm_charpoly(GEN x, ulong p);
1725 GEN     Flm_hess(GEN x, ulong p);
1726 GEN     FpM_charpoly(GEN x, GEN p);
1727 GEN     FpM_hess(GEN x, GEN p);
1728 GEN     Frobeniusform(GEN V, long n);
1729 GEN     QM_minors_coprime(GEN x, GEN pp);
1730 GEN     QM_ImZ(GEN x);
1731 GEN     QM_ImZ_all(GEN x, GEN *U, long remove, long hnf);
1732 GEN     QM_ImZ_hnf(GEN x);
1733 GEN     QM_ImZ_hnfall(GEN x, GEN *U, long remove);
1734 GEN     QM_ImQ(GEN x);
1735 GEN     QM_ImQ_all(GEN x, GEN *U, long remove, long hnf);
1736 GEN     QM_ImQ_hnf(GEN x);
1737 GEN     QM_ImQ_hnfall(GEN x, GEN *U, long remove);
1738 GEN     QM_charpoly_ZX(GEN M);
1739 GEN     QM_charpoly_ZX_bound(GEN M, long bit);
1740 GEN     ZM_charpoly(GEN x);
1741 GEN     adj(GEN x);
1742 GEN     adjsafe(GEN x);
1743 GEN     caract(GEN x, long v);
1744 GEN     caradj(GEN x, long v, GEN *py);
1745 GEN     carberkowitz(GEN x, long v);
1746 GEN     carhess(GEN x, long v);
1747 GEN     charpoly(GEN x, long v);
1748 GEN     charpoly0(GEN x, long v,long flag);
1749 GEN     gnorm(GEN x);
1750 GEN     gnorml1(GEN x,long prec);
1751 GEN     gnorml1_fake(GEN x);
1752 GEN     gnormlp(GEN x, GEN p, long prec);
1753 GEN     gnorml2(GEN x);
1754 GEN     gsupnorm(GEN x, long prec);
1755 void    gsupnorm_aux(GEN x, GEN *m, GEN *msq, long prec);
1756 GEN     gtrace(GEN x);
1757 GEN     hess(GEN x);
1758 GEN     intersect(GEN x, GEN y);
1759 GEN     jacobi(GEN a, long prec);
1760 GEN     matadjoint0(GEN x, long flag);
1761 GEN     matcompanion(GEN x);
1762 GEN     matrixqz0(GEN x, GEN pp);
1763 GEN     minpoly(GEN x, long v);
1764 GEN     qfgaussred(GEN a);
1765 GEN     qfgaussred_positive(GEN a);
1766 GEN     qfsign(GEN a);
1767 
1768 /* alglin3.c */
1769 
1770 GEN     apply0(GEN f, GEN A);
1771 GEN     diagonal(GEN x);
1772 GEN     diagonal_shallow(GEN x);
1773 GEN     extract0(GEN x, GEN l1, GEN l2);
1774 GEN     fold0(GEN f, GEN A);
1775 GEN     genapply(void *E, GEN (*f)(void *E, GEN x), GEN A);
1776 GEN     genfold(void *E, GEN (*f)(void *E, GEN x, GEN y), GEN A);
1777 GEN     genindexselect(void *E, long (*f)(void *E, GEN x), GEN A);
1778 GEN     genselect(void *E, long (*f)(void *E, GEN x), GEN A);
1779 GEN     gtomat(GEN x);
1780 GEN     gtrans(GEN x);
1781 GEN     matmuldiagonal(GEN x, GEN d);
1782 GEN     matmultodiagonal(GEN x, GEN y);
1783 GEN     matslice0(GEN A, long x1, long x2, long y1, long y2);
1784 GEN     parapply(GEN V, GEN C);
1785 void    parfor(GEN a, GEN b, GEN code, void *E, long call(void*, GEN, GEN));
1786 void    parfor_init(parfor_t *T, GEN a, GEN b, GEN code);
1787 GEN     parfor_next(parfor_t *T);
1788 void    parfor_stop(parfor_t *T);
1789 void    parforeach(GEN x, GEN code, void *E, long call(void*, GEN, GEN));
1790 void    parforeach_init(parforeach_t *T, GEN x, GEN code);
1791 GEN     parforeach_next(parforeach_t *T);
1792 void    parforeach_stop(parforeach_t *T);
1793 void    parforprime(GEN a, GEN b, GEN code, void *E, long call(void*, GEN, GEN));
1794 void    parforprime_init(parforprime_t *T, GEN a, GEN b, GEN code);
1795 GEN     parforprime_next(parforprime_t *T);
1796 void    parforprime_stop(parforprime_t *T);
1797 void    parforprimestep(GEN a, GEN b, GEN q, GEN code, void *E, long call(void*, GEN, GEN));
1798 void    parforprimestep_init(parforprime_t *T, GEN a, GEN b, GEN q, GEN code);
1799 void    parforvec(GEN x, GEN code, long flag, void *E, long call(void*, GEN, GEN));
1800 void    parforvec_init(parforvec_t *T, GEN x, GEN code, long flag);
1801 GEN     parforvec_next(parforvec_t *T);
1802 void    parforvec_stop(parforvec_t *T);
1803 GEN     parselect(GEN C, GEN D, long flag);
1804 GEN     select0(GEN A, GEN f, long flag);
1805 GEN     shallowextract(GEN x, GEN L);
1806 GEN     shallowmatextract(GEN x, GEN l1, GEN l2);
1807 GEN     shallowtrans(GEN x);
1808 GEN     vecapply(void *E, GEN (*f)(void* E, GEN x), GEN x);
1809 GEN     veccatapply(void *E, GEN (*f)(void* E, GEN x), GEN x);
1810 GEN     veccatselapply(void *Epred, long (*pred)(void* E, GEN x), void *Efun,
1811                             GEN (*fun)(void* E, GEN x), GEN A);
1812 GEN     vecrange(GEN a, GEN b);
1813 GEN     vecrangess(long a, long b);
1814 GEN     vecselapply(void *Epred, long (*pred)(void* E, GEN x), void *Efun,
1815                             GEN (*fun)(void* E, GEN x), GEN A);
1816 GEN     vecselect(void *E, long (*f)(void* E, GEN x), GEN A);
1817 GEN     vecslice0(GEN A, long y1, long y2);
1818 GEN     vecsum(GEN v);
1819 GEN     zv_diagonal(GEN x);
1820 
1821 /* anal.c */
1822 
1823 void    addhelp(const char *e, char *s);
1824 GEN     arity0(GEN C);
1825 void    alias0(const char *s, const char *old);
1826 GEN     compile_str(const char *s);
1827 long    delete_var(void);
1828 long    fetch_user_var(const char *s);
1829 long    fetch_var(void);
1830 long    fetch_var_higher(void);
1831 GEN     fetch_var_value(long vx, GEN t);
1832 char *  gp_embedded(const char *s);
1833 void    gp_embedded_init(long rsize, long vsize);
1834 GEN     gp_read_str(const char *t);
1835 GEN     gp_read_str_bitprec(const char *s, long bitprec);
1836 GEN     gp_read_str_prec(const char *s, long prec);
1837 entree* install(void *f, const char *name, const char *code);
1838 entree* is_entry(const char *s);
1839 void    kill0(const char *e);
1840 void    pari_var_close(void);
1841 void    pari_var_init(void);
1842 long    pari_var_next(void);
1843 long    pari_var_next_temp(void);
1844 long    pari_var_create(entree *ep);
1845 void    name_var(long n, const char *s);
1846 GEN     readseq(char *t);
1847 GEN*    safegel(GEN x, long l);
1848 long*   safeel(GEN x, long l);
1849 GEN*    safelistel(GEN x, long l);
1850 GEN*    safegcoeff(GEN x, long a, long b);
1851 GEN     strtoi(const char *s);
1852 GEN     strtor(const char *s, long prec);
1853 GEN     varhigher(const char *s, long v);
1854 GEN     varlower(const char *s, long v);
1855 
1856 /* aprcl.c */
1857 
1858 GEN     divisorslenstra(GEN N, GEN r, GEN s);
1859 long    isprimeAPRCL(GEN N);
1860 
1861 /* Qfb.c */
1862 
1863 GEN     Qfb0(GEN x, GEN y, GEN z, GEN d, long prec);
1864 void    check_quaddisc(GEN x, long *s, long *r, const char *f);
1865 void    check_quaddisc_imag(GEN x, long *r, const char *f);
1866 void    check_quaddisc_real(GEN x, long *r, const char *f);
1867 long    cornacchia(GEN d, GEN p, GEN *px, GEN *py);
1868 long    cornacchia2(GEN d, GEN p, GEN *px, GEN *py);
1869 long    cornacchia2_sqrt(GEN d, GEN p, GEN b, GEN *px, GEN *py);
1870 GEN     nucomp(GEN x, GEN y, GEN L);
1871 GEN     nudupl(GEN x, GEN L);
1872 GEN     nupow(GEN x, GEN n, GEN L);
1873 GEN     primeform(GEN x, GEN p, long prec);
1874 GEN     primeform_u(GEN x, ulong p);
1875 int     qfb_equal1(GEN f);
1876 GEN     qfbcompraw(GEN x, GEN y);
1877 GEN     qfbpowraw(GEN x, long n);
1878 GEN     qfbred0(GEN x, long flag, GEN D, GEN isqrtD, GEN sqrtD);
1879 GEN     qfbredsl2(GEN q, GEN S);
1880 GEN     qfbsolve(GEN Q, GEN n, long flag);
1881 GEN     qfi(GEN x, GEN y, GEN z);
1882 GEN     qfi_1(GEN x);
1883 GEN     qfi_Shanks(GEN a, GEN g, long n);
1884 GEN     qfi_log(GEN a, GEN g, GEN o);
1885 GEN     qfi_order(GEN q, GEN o);
1886 GEN     qficomp(GEN x, GEN y);
1887 GEN     qficompraw(GEN x, GEN y);
1888 GEN     qfipowraw(GEN x, long n);
1889 GEN     qfisolvep(GEN Q, GEN p);
1890 GEN     qfisqr(GEN x);
1891 GEN     qfisqrraw(GEN x);
1892 GEN     qfr(GEN x, GEN y, GEN z, GEN d);
1893 GEN     qfr3_comp(GEN x, GEN y, struct qfr_data *S);
1894 GEN     qfr3_pow(GEN x, GEN n, struct qfr_data *S);
1895 GEN     qfr3_red(GEN x, struct qfr_data *S);
1896 GEN     qfr3_rho(GEN x, struct qfr_data *S);
1897 GEN     qfr3_to_qfr(GEN x, GEN z);
1898 GEN     qfr5_comp(GEN x, GEN y, struct qfr_data *S);
1899 GEN     qfr5_dist(GEN e, GEN d, long prec);
1900 GEN     qfr5_pow(GEN x, GEN n, struct qfr_data *S);
1901 GEN     qfr5_red(GEN x, struct qfr_data *S);
1902 GEN     qfr5_rho(GEN x, struct qfr_data *S);
1903 GEN     qfr5_to_qfr(GEN x, GEN d0);
1904 GEN     qfr_1(GEN x);
1905 void    qfr_data_init(GEN D, long prec, struct qfr_data *S);
1906 GEN     qfr_to_qfr5(GEN x, long prec);
1907 GEN     qfrcomp(GEN x, GEN y);
1908 GEN     qfrcompraw(GEN x, GEN y);
1909 GEN     qfrpow(GEN x, GEN n);
1910 GEN     qfrpowraw(GEN x, long n);
1911 GEN     qfrsolvep(GEN Q, GEN p);
1912 GEN     qfrsqr(GEN x);
1913 GEN     qfrsqrraw(GEN x);
1914 GEN     quadgen(GEN x);
1915 GEN     quadgen0(GEN x, long v);
1916 GEN     quadpoly(GEN x);
1917 GEN     quadpoly0(GEN x, long v);
1918 GEN     redimag(GEN x);
1919 GEN     redreal(GEN x);
1920 GEN     redrealnod(GEN x, GEN isqrtD);
1921 GEN     rhoreal(GEN x);
1922 GEN     rhorealnod(GEN x, GEN isqrtD);
1923 
1924 /* arith1.c */
1925 
1926 ulong   Fl_2gener_pre(ulong p, ulong pi);
1927 ulong   Fl_log(ulong a, ulong g, ulong ord, ulong p);
1928 ulong   Fl_log_pre(ulong a, ulong g, ulong ord, ulong p, ulong pi);
1929 ulong   Fl_order(ulong a, ulong o, ulong p);
1930 GEN     Fl_powers(ulong x, long n, ulong p);
1931 GEN     Fl_powers_pre(ulong x, long n, ulong p, ulong pi);
1932 ulong   Fl_powu(ulong x, ulong n, ulong p);
1933 ulong   Fl_powu_pre(ulong x, ulong n, ulong p, ulong pi);
1934 ulong   Fl_sqrt(ulong a, ulong p);
1935 ulong   Fl_sqrt_pre(ulong a, ulong p, ulong pi);
1936 ulong   Fl_sqrt_pre_i(ulong a, ulong s2, ulong p, ulong pi);
1937 ulong   Fl_sqrtl(ulong a, ulong l, ulong p);
1938 ulong   Fl_sqrtl_pre(ulong a, ulong l, ulong p, ulong pi);
1939 ulong   Fl_sqrtn(ulong a, long n, ulong p, ulong *zetan);
1940 ulong   Fl_sqrtn_pre(ulong a, long n, ulong p, ulong pi, ulong *zetan);
1941 GEN     Fp_2gener(GEN p);
1942 GEN     Fp_factored_order(GEN a, GEN o, GEN p);
1943 int     Fp_ispower(GEN x, GEN K, GEN p);
1944 GEN     Fp_log(GEN a, GEN g, GEN ord, GEN p);
1945 GEN     Fp_order(GEN a, GEN o, GEN p);
1946 GEN     Fp_pow(GEN a, GEN n, GEN m);
1947 GEN     Fp_pow_init(GEN x, GEN n, long k, GEN p);
1948 GEN     Fp_pow_table(GEN R, GEN n, GEN p);
1949 GEN     Fp_powers(GEN x, long n, GEN p);
1950 GEN     Fp_pows(GEN A, long k, GEN N);
1951 GEN     Fp_powu(GEN x, ulong k, GEN p);
1952 GEN     Fp_sqrt(GEN a, GEN p);
1953 GEN     Fp_sqrt_i(GEN a, GEN y, GEN p);
1954 GEN     Fp_sqrtn(GEN a, GEN n, GEN p, GEN *zetan);
1955 GEN     FpV_prod(GEN V, GEN p);
1956 GEN     Z_ZV_mod(GEN P, GEN xa);
1957 GEN     Z_ZV_mod_tree(GEN P, GEN xa, GEN T);
1958 GEN     Z_chinese(GEN a, GEN b, GEN A, GEN B);
1959 GEN     Z_chinese_all(GEN a, GEN b, GEN A, GEN B, GEN *pC);
1960 GEN     Z_chinese_coprime(GEN a, GEN b, GEN A, GEN B, GEN C);
1961 GEN     Z_chinese_post(GEN a, GEN b, GEN C, GEN U, GEN d);
1962 void    Z_chinese_pre(GEN A, GEN B, GEN *pC, GEN *pU, GEN *pd);
1963 GEN     Z_factor_listP(GEN N, GEN L);
1964 long    Z_isanypower(GEN x, GEN *y);
1965 long    Z_isfundamental(GEN x);
1966 long    Z_ispow2(GEN x);
1967 long    Z_ispowerall(GEN x, ulong k, GEN *pt);
1968 long    Z_issquareall(GEN x, GEN *pt);
1969 GEN     Z_nv_mod(GEN P, GEN xa);
1970 GEN     ZM_nv_mod_tree(GEN M, GEN xa, GEN T);
1971 GEN     ZV_allpnqn(GEN x);
1972 GEN     ZV_chinese(GEN A, GEN P, GEN *pt_mod);
1973 GEN     ZV_chinese_tree(GEN A, GEN P, GEN T, GEN R);
1974 GEN     ZV_chinesetree(GEN P, GEN T);
1975 GEN     ZV_nv_mod_tree(GEN V, GEN xa, GEN T);
1976 GEN     ZV_producttree(GEN xa);
1977 GEN     ZX_nv_mod_tree(GEN P, GEN xa, GEN T);
1978 GEN     ZXC_nv_mod_tree(GEN P, GEN xa, GEN T, long w);
1979 GEN     ZXM_nv_mod_tree(GEN M, GEN xa, GEN T, long w);
1980 GEN     ZXX_nv_mod_tree(GEN P, GEN xa, GEN T, long w);
1981 GEN     Zideallog(GEN bid, GEN x);
1982 long    Zp_issquare(GEN a, GEN p);
1983 GEN     bestappr(GEN x, GEN k);
1984 GEN     bestapprPade(GEN x, long B);
1985 GEN     chinese(GEN x, GEN y);
1986 GEN     chinese1(GEN x);
1987 GEN     chinese1_coprime_Z(GEN x);
1988 GEN     classno(GEN x);
1989 GEN     classno2(GEN x);
1990 GEN     contfrac0(GEN x, GEN b, long flag);
1991 GEN     contfracpnqn(GEN x, long n);
1992 GEN     fibo(long n);
1993 GEN     gboundcf(GEN x, long k);
1994 GEN     gcf(GEN x);
1995 GEN     gcf2(GEN b, GEN x);
1996 const struct bb_field *get_Fp_field(void **E, GEN p);
1997 long    gisanypower(GEN x, GEN *pty);
1998 GEN     gissquare(GEN x);
1999 GEN     gissquareall(GEN x, GEN *pt);
2000 GEN     hclassno(GEN x);
2001 GEN     hclassno6(GEN x);
2002 long    hilbert(GEN x, GEN y, GEN p);
2003 long    hilbertii(GEN x, GEN y, GEN p);
2004 long    isfundamental(GEN x);
2005 long    ispolygonal(GEN x, GEN S, GEN *N);
2006 long    ispower(GEN x, GEN k, GEN *pty);
2007 long    isprimepower(GEN x, GEN *pty);
2008 long    ispseudoprimepower(GEN n, GEN *pt);
2009 long    issquare(GEN x);
2010 long    issquareall(GEN x, GEN *pt);
2011 long    krois(GEN x, long y);
2012 long    kroiu(GEN x, ulong y);
2013 long    kronecker(GEN x, GEN y);
2014 long    krosi(long s, GEN x);
2015 long    kross(long x, long y);
2016 long    kroui(ulong x, GEN y);
2017 long    krouu(ulong x, ulong y);
2018 GEN     lcmii(GEN a, GEN b);
2019 GEN     Fp_invgen(GEN x, GEN N, GEN *pd);
2020 long    logint0(GEN B, GEN y, GEN *ptq);
2021 long    logintall(GEN B, GEN y, GEN *ptq);
2022 GEN     mpfact(long n);
2023 ulong   factorial_Fl(long n, ulong p);
2024 GEN     factorial_Fp(long n, GEN p);
2025 GEN     muls_interval(long a, long b);
2026 GEN     mulu_interval(ulong a, ulong b);
2027 GEN     mulu_interval_step(ulong a, ulong b, ulong step);
2028 GEN     ncV_chinese_center(GEN A, GEN P, GEN *pt_mod);
2029 GEN     ncV_chinese_center_tree(GEN A, GEN P, GEN T, GEN R);
2030 GEN     nmV_chinese_center(GEN A, GEN P, GEN *pt_mod);
2031 GEN     nmV_chinese_center_tree(GEN A, GEN P, GEN T, GEN R);
2032 ulong   nonsquare_Fl(ulong p);
2033 GEN     nxCV_chinese_center(GEN A, GEN P, GEN *pt_mod);
2034 GEN     nxCV_chinese_center_tree(GEN A, GEN P, GEN T, GEN R);
2035 GEN     nxMV_chinese_center(GEN A, GEN P, GEN *pt_mod);
2036 GEN     nxV_chinese_center(GEN A, GEN P, GEN *pt_mod);
2037 GEN     nxV_chinese_center_tree(GEN A, GEN P, GEN T, GEN R);
2038 GEN     ZV_chinese_center(GEN A, GEN P, GEN *pt_mod);
2039 GEN     odd_prime_divisors(GEN q);
2040 GEN     order(GEN x);
2041 ulong   pgener_Fl(ulong p);
2042 ulong   pgener_Fl_local(ulong p, GEN L);
2043 GEN     pgener_Fp(GEN p);
2044 GEN     pgener_Fp_local(GEN p, GEN L);
2045 ulong   pgener_Zl(ulong p);
2046 GEN     pgener_Zp(GEN p);
2047 GEN     pnqn(GEN x);
2048 GEN     qfbclassno0(GEN x,long flag);
2049 GEN     quadclassno(GEN x);
2050 GEN     quaddisc(GEN x);
2051 GEN     quadregulator(GEN x, long prec);
2052 GEN     quadunit(GEN x);
2053 GEN     quadunit0(GEN x, long v);
2054 GEN     ramanujantau(GEN n);
2055 ulong   rootsof1_Fl(ulong n, ulong p);
2056 GEN     rootsof1_Fp(GEN n, GEN p);
2057 GEN     rootsof1u_Fp(ulong n, GEN p);
2058 long    sisfundamental(long x);
2059 GEN     sqrtint(GEN a);
2060 GEN     sqrtint0(GEN a, GEN *r);
2061 ulong   u_chinese_coprime(ulong a, ulong b, ulong A, ulong B, ulong C);
2062 long    uisprimepower(ulong n, ulong *p);
2063 long    uissquare(ulong A);
2064 long    uissquareall(ulong A, ulong *sqrtA);
2065 long    ulogintall(ulong B, ulong y, ulong *ptq);
2066 long    unegisfundamental(ulong x);
2067 long    uposisfundamental(ulong x);
2068 GEN     znlog(GEN x, GEN g, GEN o);
2069 GEN     znorder(GEN x, GEN o);
2070 GEN     znprimroot(GEN m);
2071 GEN     znstar(GEN x);
2072 GEN     znstar0(GEN N, long flag);
2073 GEN     Zn_quad_roots(GEN N, GEN B, GEN C);
2074 
2075 /* arith2.c */
2076 
2077 int     RgV_is_ZVpos(GEN v);
2078 int     RgV_is_ZVnon0(GEN v);
2079 GEN     Z_smoothen(GEN N, GEN L, GEN *pP, GEN *pe);
2080 GEN     boundfact(GEN n, ulong lim);
2081 GEN     check_arith_pos(GEN n, const char *f);
2082 GEN     check_arith_non0(GEN n, const char *f);
2083 GEN     check_arith_all(GEN n, const char *f);
2084 GEN     clean_Z_factor(GEN f);
2085 GEN     corepartial(GEN n, long l);
2086 GEN     core0(GEN n,long flag);
2087 GEN     core2(GEN n);
2088 GEN     core2partial(GEN n, long l);
2089 GEN     coredisc(GEN n);
2090 GEN     coredisc0(GEN n,long flag);
2091 GEN     coredisc2(GEN n);
2092 long    corediscs(long D, ulong *f);
2093 GEN     digits(GEN N, GEN B);
2094 GEN     divisors(GEN n);
2095 GEN     divisors_factored(GEN N);
2096 GEN     divisors0(GEN N, long flag);
2097 GEN     divisorsu(ulong n);
2098 GEN     divisorsu_moebius(GEN P);
2099 GEN     divisorsu_fact(GEN fa);
2100 GEN     divisorsu_fact_factored(GEN fa);
2101 GEN     factor_pn_1(GEN p, ulong n);
2102 GEN     factor_pn_1_limit(GEN p, long n, ulong lim);
2103 GEN     factoru_pow(ulong n);
2104 GEN     fromdigits(GEN x, GEN B);
2105 GEN     fromdigitsu(GEN x, GEN B);
2106 GEN     fuse_Z_factor(GEN f, GEN B);
2107 GEN     gen_digits(GEN x, GEN B, long n, void *E, struct bb_ring *r,
2108                           GEN (*div)(void *E, GEN x, GEN y, GEN *r));
2109 GEN     gen_fromdigits(GEN x, GEN B, void *E, struct bb_ring *r);
2110 int     is_Z_factor(GEN f);
2111 int     is_Z_factornon0(GEN f);
2112 int     is_Z_factorpos(GEN f);
2113 int     is_nf_factor(GEN F);
2114 int     is_nf_extfactor(GEN F);
2115 GEN     sumdigits(GEN n);
2116 GEN     sumdigits0(GEN n, GEN B);
2117 ulong   sumdigitsu(ulong n);
2118 GEN     usumdiv_fact(GEN f);
2119 GEN     usumdivk_fact(GEN f, ulong k);
2120 
2121 /* base1.c */
2122 
2123 GEN     FpX_FpC_nfpoleval(GEN nf, GEN pol, GEN a, GEN p);
2124 GEN     embed_T2(GEN x, long r1);
2125 GEN     embednorm_T2(GEN x, long r1);
2126 GEN     embed_norm(GEN x, long r1);
2127 void    check_ZKmodule(GEN x, const char *s);
2128 void    checkbid(GEN bid);
2129 GEN     checkbid_i(GEN bid);
2130 GEN     checkbnf(GEN bnf);
2131 GEN     checkbnf_i(GEN bnf);
2132 void    checkbnr(GEN bnr);
2133 GEN     checkbnr_i(GEN bnr);
2134 void    checkabgrp(GEN v);
2135 void    checksqmat(GEN x, long N);
2136 GEN     checknf(GEN nf);
2137 GEN     checknf_i(GEN nf);
2138 GEN     checknfelt_mod(GEN nf, GEN x, const char *s);
2139 void    checkprid(GEN bid);
2140 int     checkprid_i(GEN x);
2141 void    checkrnf(GEN rnf);
2142 int     checkrnf_i(GEN rnf);
2143 GEN     factoredpolred(GEN x, GEN fa);
2144 GEN     factoredpolred2(GEN x, GEN fa);
2145 GEN     galoisapply(GEN nf, GEN aut, GEN x);
2146 GEN     get_bnf(GEN x, long *t);
2147 GEN     get_bnfpol(GEN x, GEN *bnf, GEN *nf);
2148 GEN     get_nf(GEN x, long *t);
2149 GEN     get_nfpol(GEN x, GEN *nf);
2150 GEN     get_prid(GEN x);
2151 GEN     idealfrobenius(GEN nf, GEN gal, GEN pr);
2152 GEN     idealfrobenius_aut(GEN nf, GEN gal, GEN pr, GEN aut);
2153 GEN     idealramfrobenius(GEN nf, GEN gal, GEN pr, GEN ram);
2154 GEN     idealramfrobenius_aut(GEN nf, GEN gal, GEN pr, GEN ram, GEN aut);
2155 GEN     idealramgroups(GEN nf, GEN gal, GEN pr);
2156 GEN     idealramgroups_aut(GEN nf, GEN gal, GEN pr, GEN aut);
2157 GEN     nf_get_allroots(GEN nf);
2158 long    nf_get_prec(GEN x);
2159 GEN     nfmaxord_to_nf(nfmaxord_t *T, GEN ro, long prec);
2160 GEN     nfcertify(GEN x);
2161 GEN     nfgaloismatrix(GEN nf, GEN s);
2162 GEN     nfgaloismatrixapply(GEN nf, GEN M, GEN x);
2163 GEN     nfgaloispermtobasis(GEN nf, GEN gal);
2164 void    nfinit_basic(nfmaxord_t *T, GEN x);
2165 GEN     nfinit_complete(nfmaxord_t *T, long flag, long prec);
2166 GEN     nfinit(GEN x, long prec);
2167 GEN     nfinit0(GEN x, long flag, long prec);
2168 GEN     nfinitall(GEN x, long flag, long prec);
2169 GEN     nfinitred(GEN x, long prec);
2170 GEN     nfinitred2(GEN x, long prec);
2171 GEN     nfisincl(GEN a, GEN b);
2172 GEN     nfisincl0(GEN fa, GEN fb, long flag);
2173 GEN     nfisisom(GEN a, GEN b);
2174 GEN     nfnewprec(GEN nf, long prec);
2175 GEN     nfnewprec_shallow(GEN nf, long prec);
2176 GEN     nfpoleval(GEN nf, GEN pol, GEN a);
2177 GEN     nfsplitting(GEN T, GEN D);
2178 long    nftyp(GEN x);
2179 GEN     polredord(GEN x);
2180 GEN     polred(GEN x);
2181 GEN     polred0(GEN x, long flag, GEN fa);
2182 GEN     polred2(GEN x);
2183 GEN     polredabs(GEN x);
2184 GEN     polredabs0(GEN x, long flag);
2185 GEN     polredabs2(GEN x);
2186 GEN     polredabsall(GEN x, long flun);
2187 GEN     polredbest(GEN x, long flag);
2188 GEN     rnfpolredabs(GEN nf, GEN pol, long flag);
2189 GEN     rnfpolredbest(GEN nf, GEN R, long flag);
2190 GEN     smallpolred(GEN x);
2191 GEN     smallpolred2(GEN x);
2192 GEN     tschirnhaus(GEN x);
2193 GEN     ZX_Q_mul(GEN A, GEN z);
2194 GEN     ZX_Q_normalize(GEN pol, GEN *ptlc);
2195 GEN     ZX_Z_normalize(GEN pol, GEN *ptk);
2196 GEN     ZX_to_monic(GEN pol, GEN *lead);
2197 GEN     ZX_primitive_to_monic(GEN pol, GEN *lead);
2198 GEN     ZXX_Q_mul(GEN A, GEN z);
2199 
2200 /* base2.c */
2201 
2202 GEN     Fq_to_nf(GEN x, GEN modpr);
2203 GEN     FqM_to_nfM(GEN z, GEN modpr);
2204 GEN     FqV_to_nfV(GEN z, GEN modpr);
2205 GEN     FqX_to_nfX(GEN x, GEN modpr);
2206 GEN     Rg_nffix(const char *f, GEN T, GEN c, int lift);
2207 GEN     RgV_nffix(const char *f, GEN T, GEN P, int lift);
2208 GEN     RgX_nffix(const char *s, GEN nf, GEN x, int lift);
2209 GEN     ZX_compositum_disjoint(GEN A, GEN B);
2210 GEN     ZX_compositum(GEN A, GEN B, long *lambda);
2211 long    ZpX_disc_val(GEN f, GEN p);
2212 GEN     ZpX_gcd(GEN f1,GEN f2,GEN p, GEN pm);
2213 GEN     ZpX_monic_factor(GEN f, GEN p, long prec);
2214 GEN     ZpX_primedec(GEN T, GEN p);
2215 GEN     ZpX_reduced_resultant(GEN x, GEN y, GEN p, GEN pm);
2216 GEN     ZpX_reduced_resultant_fast(GEN f, GEN g, GEN p, long M);
2217 long    ZpX_resultant_val(GEN f, GEN g, GEN p, long M);
2218 void    checkmodpr(GEN modpr);
2219 GEN     compositum(GEN P, GEN Q);
2220 GEN     compositum2(GEN P, GEN Q);
2221 GEN     nfdisc(GEN x);
2222 GEN     get_modpr(GEN x);
2223 GEN     indexpartial(GEN P, GEN DP);
2224 GEN     modpr_genFq(GEN modpr);
2225 GEN     nf_to_Fq_init(GEN nf, GEN *pr, GEN *T, GEN *p);
2226 GEN     nf_to_Fq(GEN nf, GEN x, GEN modpr);
2227 GEN     nfM_to_FqM(GEN z, GEN nf,GEN modpr);
2228 GEN     nfV_to_FqV(GEN z, GEN nf,GEN modpr);
2229 GEN     nfX_to_FqX(GEN x, GEN nf,GEN modpr);
2230 GEN     nfX_to_monic(GEN nf, GEN T, GEN *pL);
2231 GEN     nfbasis(GEN x, GEN *y);
2232 GEN     nfcompositum(GEN nf, GEN A, GEN B, long flag);
2233 GEN     nfdiscfactors(GEN x);
2234 void    nfmaxord(nfmaxord_t *S, GEN T, long flag);
2235 GEN     nfmodpr(GEN nf, GEN x, GEN pr);
2236 GEN     nfmodprinit(GEN nf, GEN pr);
2237 GEN     nfmodprinit0(GEN nf, GEN pr, long v);
2238 GEN     nfmodprlift(GEN nf, GEN x, GEN pr);
2239 GEN     nfreducemodpr(GEN nf, GEN x, GEN modpr);
2240 GEN     polcompositum0(GEN P, GEN Q,long flag);
2241 GEN     idealprimedec(GEN nf,GEN p);
2242 GEN     idealprimedec_galois(GEN nf, GEN p);
2243 GEN     idealprimedec_degrees(GEN nf, GEN p);
2244 GEN     idealprimedec_kummer(GEN nf,GEN pol,long e,GEN p);
2245 GEN     idealprimedec_limit_f(GEN nf, GEN p, long f);
2246 GEN     idealprimedec_limit_norm(GEN nf, GEN p, GEN B);
2247 GEN     poldiscfactors(GEN T, long flag);
2248 GEN     rnfbasis(GEN bnf, GEN order);
2249 GEN     rnfdedekind(GEN nf, GEN T, GEN pr, long flag);
2250 GEN     rnfdet(GEN nf, GEN order);
2251 GEN     rnfdisc_factored(GEN nf, GEN pol, GEN *pd);
2252 GEN     rnfdiscf(GEN nf, GEN pol);
2253 GEN     rnfequation(GEN nf, GEN pol);
2254 GEN     rnfequation0(GEN nf, GEN pol, long flall);
2255 GEN     rnfequation2(GEN nf, GEN pol);
2256 GEN     nf_pV_to_prV(GEN nf, GEN P);
2257 GEN     nf_rnfeq(GEN nf, GEN R);
2258 GEN     nf_rnfeqsimple(GEN nf, GEN R);
2259 GEN     rnfequationall(GEN A, GEN B, long *pk, GEN *pLPRS);
2260 GEN     rnfhnfbasis(GEN bnf, GEN order);
2261 long    rnfisfree(GEN bnf, GEN order);
2262 GEN     rnflllgram(GEN nf, GEN pol, GEN order,long prec);
2263 GEN     rnfpolred(GEN nf, GEN pol, long prec);
2264 GEN     rnfpseudobasis(GEN nf, GEN pol);
2265 GEN     rnfsimplifybasis(GEN bnf, GEN order);
2266 GEN     rnfsteinitz(GEN nf, GEN order);
2267 long    factorial_lval(ulong n, ulong p);
2268 GEN     zk_to_Fq_init(GEN nf, GEN *pr, GEN *T, GEN *p);
2269 GEN     zk_to_Fq(GEN x, GEN modpr);
2270 GEN     QXQV_to_FpM(GEN basis, GEN T, GEN p);
2271 GEN     zkmodprinit(GEN nf, GEN pr);
2272 
2273 /* base3.c */
2274 
2275 GEN     Idealstar(GEN nf, GEN x,long flun);
2276 GEN     Idealstarmod(GEN nf, GEN ideal, long flag, GEN MOD);
2277 GEN     Idealstarprk(GEN nf, GEN pr, long k, long flag);
2278 GEN     RgC_to_nfC(GEN nf,GEN x);
2279 GEN     RgM_RgX_mul(GEN A, GEN x);
2280 GEN     RgM_to_nfM(GEN nf,GEN x);
2281 GEN     RgX_to_nfX(GEN nf,GEN pol);
2282 long    ZC_nfval(GEN x, GEN P);
2283 long    ZC_nfvalrem(GEN x, GEN P, GEN *t);
2284 int     ZC_prdvd(GEN x, GEN P);
2285 GEN     ZM_ZX_mul(GEN A, GEN x);
2286 GEN     ZV_snf_gcd(GEN x, GEN mod);
2287 GEN     algtobasis(GEN nf, GEN x);
2288 GEN     basistoalg(GEN nf, GEN x);
2289 GEN     ei_multable(GEN nf, long i);
2290 const struct bb_field *get_nf_field(void **E, GEN nf);
2291 GEN     famat_nfvalrem(GEN nf, GEN x, GEN pr, GEN *py);
2292 GEN     gpnfvalrem(GEN nf, GEN x, GEN pr, GEN *py);
2293 GEN     ideallist(GEN nf,long bound);
2294 GEN     ideallist0(GEN nf,long bound, long flag);
2295 GEN     ideallistarch(GEN nf, GEN list, GEN arch);
2296 GEN     ideallog(GEN nf,GEN x,GEN bid);
2297 GEN     ideallogmod(GEN nf,GEN x,GEN bid, GEN mod);
2298 GEN     ideallog_units(GEN bnf, GEN bid);
2299 GEN     ideallog_units0(GEN bnf, GEN bid, GEN MOD);
2300 GEN     idealprincipalunits(GEN nf, GEN pr, long e);
2301 GEN     idealstar0(GEN nf, GEN x,long flag);
2302 GEN     idealstarmod(GEN nf, GEN ideal, long flag, GEN MOD);
2303 GEN     indices_to_vec01(GEN archp, long r);
2304 GEN     matalgtobasis(GEN nf, GEN x);
2305 GEN     matbasistoalg(GEN nf, GEN x);
2306 GEN     multable(GEN nf, GEN x);
2307 GEN     nf_to_scalar_or_alg(GEN nf, GEN x);
2308 GEN     nf_to_scalar_or_basis(GEN nf, GEN x);
2309 GEN     nf_cxlog(GEN nf, GEN x, long prec);
2310 GEN     nfV_cxlog(GEN nf, GEN x, long prec);
2311 GEN     nfadd(GEN nf, GEN x, GEN y);
2312 int     nfchecksigns(GEN nf, GEN x, GEN pl);
2313 GEN     nfdiv(GEN nf, GEN x, GEN y);
2314 GEN     nfdiveuc(GEN nf, GEN a, GEN b);
2315 GEN     nfdivrem(GEN nf, GEN a, GEN b);
2316 GEN     nfembed(GEN nf, GEN x, long k);
2317 GEN     nfeltembed(GEN nf, GEN x, GEN ind0, long prec);
2318 GEN     nfeltsign(GEN nf, GEN x, GEN ind0);
2319 GEN     nfinv(GEN nf, GEN x);
2320 GEN     nfinvmodideal(GEN nf, GEN x, GEN ideal);
2321 GEN     nflogembed(GEN nf, GEN x, GEN *emb, long prec);
2322 GEN     nfM_det(GEN nf, GEN M);
2323 GEN     nfM_inv(GEN nf, GEN M);
2324 GEN     nfM_mul(GEN nf, GEN A, GEN B);
2325 GEN     nfM_nfC_mul(GEN nf, GEN A, GEN B);
2326 GEN     nfmod(GEN nf, GEN a, GEN b);
2327 GEN     nfmul(GEN nf,GEN x,GEN y);
2328 GEN     nfmuli(GEN nf,GEN x,GEN y);
2329 GEN     nfnorm(GEN nf, GEN x);
2330 GEN     nfpolsturm(GEN nf, GEN f, GEN ind0);
2331 GEN     nfpow(GEN nf,GEN x,GEN k);
2332 GEN     nfpow_u(GEN nf, GEN z, ulong n);
2333 GEN     nfpowmodideal(GEN nf,GEN x,GEN k,GEN ideal);
2334 GEN     nfsign(GEN nf,GEN alpha);
2335 GEN     nfsign_arch(GEN nf,GEN alpha,GEN arch);
2336 GEN     nfsign_from_logarch(GEN Larch, GEN invpi, GEN archp);
2337 GEN     nfsqr(GEN nf,GEN x);
2338 GEN     nfsqri(GEN nf, GEN x);
2339 GEN     nfsub(GEN nf, GEN x, GEN y);
2340 GEN     nftrace(GEN nf, GEN x);
2341 long    nfval(GEN nf, GEN x, GEN vp);
2342 long    nfvalrem(GEN nf, GEN x, GEN pr, GEN *py);
2343 GEN     polmod_nffix(const char *f, GEN rnf, GEN x,int lift);
2344 GEN     polmod_nffix2(const char *f, GEN T, GEN R, GEN x, int lift);
2345 GEN     pr_basis_perm(GEN nf, GEN pr);
2346 int     pr_equal(GEN P, GEN Q);
2347 GEN     rnfalgtobasis(GEN rnf, GEN x);
2348 GEN     rnfbasistoalg(GEN rnf, GEN x);
2349 GEN     rnfeltnorm(GEN rnf, GEN x);
2350 GEN     rnfelttrace(GEN rnf, GEN x);
2351 GEN     set_sign_mod_divisor(GEN nf, GEN x, GEN y, GEN sarch);
2352 GEN     tablemul(GEN TAB, GEN x, GEN y);
2353 GEN     tablemul_ei(GEN M, GEN x, long i);
2354 GEN     tablemul_ei_ej(GEN M, long i, long j);
2355 GEN     tablemulvec(GEN M, GEN x, GEN v);
2356 GEN     tablesqr(GEN tab, GEN x);
2357 GEN     vec01_to_indices(GEN arch);
2358 GEN     vecmodii(GEN a, GEN b);
2359 GEN     vecmoduu(GEN a, GEN b);
2360 GEN     vecsmall01_to_indices(GEN v);
2361 GEN     zk_inv(GEN nf, GEN x);
2362 GEN     zk_multable(GEN nf, GEN x);
2363 GEN     zk_scalar_or_multable(GEN, GEN x);
2364 GEN     zkchinese(GEN zkc, GEN x, GEN y);
2365 GEN     zkchinese1(GEN zkc, GEN x);
2366 GEN     zkchineseinit(GEN nf, GEN A, GEN B, GEN AB);
2367 GEN     zkmultable_capZ(GEN mx);
2368 GEN     zkmultable_inv(GEN mx);
2369 
2370 /* base4.c */
2371 
2372 ulong   Fl_invgen(ulong x, ulong p, ulong *pg);
2373 GEN     Z_cba(GEN a, GEN b);
2374 GEN     Z_ppgle(GEN a, GEN b);
2375 GEN     Z_ppio(GEN a, GEN b);
2376 GEN     Z_ppo(GEN x, GEN f);
2377 GEN     ZV_cba_extend(GEN P, GEN b);
2378 GEN     ZV_cba(GEN v);
2379 GEN     RM_round_maxrank(GEN G);
2380 GEN     ZM_famat_limit(GEN fa, GEN limit);
2381 GEN     famat_Z_gcd(GEN M, GEN n);
2382 GEN     famat_div_shallow(GEN f, GEN g);
2383 GEN     famat_div(GEN f, GEN g);
2384 GEN     famat_idealfactor(GEN nf, GEN x);
2385 GEN     famat_inv(GEN f);
2386 GEN     famat_inv_shallow(GEN f);
2387 GEN     famat_makecoprime(GEN nf, GEN g, GEN e, GEN pr, GEN prk, GEN EX);
2388 GEN     famat_mul(GEN f, GEN g);
2389 GEN     famat_mul_shallow(GEN f, GEN g);
2390 GEN     famat_mulpow_shallow(GEN f, GEN g, GEN e);
2391 GEN     famat_mulpows_shallow(GEN f, GEN g, long e);
2392 GEN     famat_pow(GEN f, GEN n);
2393 GEN     famat_pow_shallow(GEN f, GEN n);
2394 GEN     famat_pows_shallow(GEN f, long n);
2395 GEN     famat_sqr(GEN f);
2396 GEN     famat_reduce(GEN fa);
2397 GEN     famat_remove_trivial(GEN fa);
2398 GEN     famat_to_nf(GEN nf, GEN f);
2399 GEN     famat_to_nf_modideal_coprime(GEN nf, GEN g, GEN e, GEN id, GEN EX);
2400 GEN     famat_to_nf_moddivisor(GEN nf, GEN g, GEN e, GEN bid);
2401 GEN     famatV_factorback(GEN v, GEN e);
2402 GEN     famatV_zv_factorback(GEN v, GEN e);
2403 GEN     famatsmall_reduce(GEN fa);
2404 GEN     gpidealval(GEN nf, GEN ix, GEN P);
2405 GEN     gpidealfactor(GEN nf, GEN x, GEN lim);
2406 GEN     idealHNF_Z_factor(GEN x, GEN *pvN, GEN *pvZ);
2407 GEN     idealHNF_Z_factor_i(GEN x, GEN f, GEN *pvN, GEN *pvZ);
2408 GEN     idealtwoelt(GEN nf, GEN ix);
2409 GEN     idealtwoelt0(GEN nf, GEN ix, GEN a);
2410 GEN     idealtwoelt2(GEN nf, GEN x, GEN a);
2411 GEN     idealadd(GEN nf, GEN x, GEN y);
2412 GEN     idealaddmultoone(GEN nf, GEN list);
2413 GEN     idealaddtoone(GEN nf, GEN x, GEN y);
2414 GEN     idealaddtoone_i(GEN nf, GEN x, GEN y);
2415 GEN     idealaddtoone_raw(GEN nf, GEN x, GEN y);
2416 GEN     idealaddtoone0(GEN nf, GEN x, GEN y);
2417 GEN     idealappr(GEN nf, GEN x);
2418 GEN     idealappr0(GEN nf, GEN x, long fl);
2419 GEN     idealapprfact(GEN nf, GEN x);
2420 GEN     idealchinese(GEN nf, GEN x, GEN y);
2421 GEN     idealcoprime(GEN nf, GEN x, GEN y);
2422 GEN     idealcoprimefact(GEN nf, GEN x, GEN fy);
2423 GEN     idealdiv(GEN nf, GEN x, GEN y);
2424 GEN     idealdiv0(GEN nf, GEN x, GEN y,long flag);
2425 GEN     idealdivexact(GEN nf, GEN x, GEN y);
2426 GEN     idealdivpowprime(GEN nf, GEN x, GEN vp, GEN n);
2427 GEN     idealdown(GEN nf, GEN x);
2428 GEN     idealismaximal(GEN nf, GEN x);
2429 GEN     idealmulpowprime(GEN nf, GEN x, GEN vp, GEN n);
2430 GEN     idealfactor(GEN nf, GEN x);
2431 GEN     idealfactor_limit(GEN nf, GEN x, ulong lim);
2432 GEN     idealfactor_partial(GEN nf, GEN x, GEN L);
2433 GEN     idealhnf(GEN nf, GEN x);
2434 GEN     idealhnf_principal(GEN nf, GEN x);
2435 GEN     idealhnf_shallow(GEN nf, GEN x);
2436 GEN     idealhnf_two(GEN nf, GEN vp);
2437 GEN     idealhnf0(GEN nf, GEN a, GEN b);
2438 GEN     idealintersect(GEN nf, GEN x, GEN y);
2439 GEN     idealinv(GEN nf, GEN ix);
2440 GEN     idealHNF_inv(GEN nf, GEN I);
2441 GEN     idealHNF_inv_Z(GEN nf, GEN I);
2442 long    idealispower(GEN nf, GEN A, long n, GEN *pB);
2443 GEN     idealred0(GEN nf, GEN I,GEN vdir);
2444 GEN     idealmul(GEN nf, GEN ix, GEN iy);
2445 GEN     idealmul0(GEN nf, GEN ix, GEN iy, long flag);
2446 GEN     idealHNF_mul(GEN nf, GEN ix, GEN iy);
2447 GEN     idealmulred(GEN nf, GEN ix, GEN iy);
2448 GEN     idealnorm(GEN nf, GEN x);
2449 GEN     idealnumden(GEN nf, GEN x);
2450 GEN     idealpow(GEN nf, GEN ix, GEN n);
2451 GEN     idealpow0(GEN nf, GEN ix, GEN n, long flag);
2452 GEN     idealpowred(GEN nf, GEN ix, GEN n);
2453 GEN     idealpows(GEN nf, GEN ideal, long iexp);
2454 long    idealprodval(GEN nf, GEN I, GEN pr);
2455 GEN     idealprodprime(GEN nf, GEN L);
2456 GEN     idealsqr(GEN nf, GEN x);
2457 long    idealtyp(GEN *ideal, GEN *arch);
2458 long    idealval(GEN nf,GEN ix,GEN vp);
2459 GEN     idealprod(GEN nf, GEN I);
2460 long    isideal(GEN nf,GEN x);
2461 GEN     idealmin(GEN nf,GEN ix,GEN vdir);
2462 GEN     matreduce(GEN fa);
2463 GEN     nf_get_Gtwist(GEN nf, GEN vdir);
2464 GEN     nf_get_Gtwist1(GEN nf, long i);
2465 GEN     nf_to_Fp_coprime(GEN nf, GEN x, GEN modpr);
2466 GEN     nfC_multable_mul(GEN v, GEN x);
2467 GEN     nfC_nf_mul(GEN nf, GEN v, GEN x);
2468 GEN     nfdetint(GEN nf,GEN pseudo);
2469 GEN     nfdivmodpr(GEN nf, GEN x, GEN y, GEN modpr);
2470 GEN     idealredmodpower(GEN nf, GEN x, ulong k, ulong B);
2471 GEN     nfhnf(GEN nf, GEN x);
2472 GEN     nfhnf0(GEN nf, GEN x, long flag);
2473 GEN     nfhnfmod(GEN nf, GEN x, GEN d);
2474 GEN     nfkermodpr(GEN nf, GEN x, GEN modpr);
2475 GEN     nfmulmodpr(GEN nf, GEN x, GEN y, GEN modpr);
2476 GEN     nfpowmodpr(GEN nf, GEN x, GEN k, GEN modpr);
2477 GEN     nfreduce(GEN nf, GEN x, GEN ideal);
2478 GEN     nfsnf(GEN nf, GEN x);
2479 GEN     nfsnf0(GEN nf, GEN x, long flag);
2480 GEN     nfsolvemodpr(GEN nf, GEN a, GEN b, GEN modpr);
2481 GEN     pr_hnf(GEN nf, GEN pr);
2482 GEN     pr_inv(GEN pr);
2483 GEN     pr_inv_p(GEN pr);
2484 GEN     pr_uniformizer(GEN pr, GEN F);
2485 GEN     prV_lcm_capZ(GEN L);
2486 GEN     sunits_makecoprime(GEN X, GEN pr, GEN prk);
2487 GEN     to_famat(GEN x, GEN y);
2488 GEN     to_famat_shallow(GEN x, GEN y);
2489 ulong   u_ppo(ulong x, ulong f);
2490 GEN     vecdiv(GEN x, GEN y);
2491 GEN     vecinv(GEN x);
2492 GEN     vecmul(GEN x, GEN y);
2493 GEN     vecpow(GEN x, GEN n);
2494 GEN     zkC_multable_mul(GEN v, GEN x);
2495 
2496 /* base5.c */
2497 
2498 GEN     eltreltoabs(GEN rnfeq, GEN x);
2499 GEN     eltabstorel(GEN eq, GEN P);
2500 GEN     eltabstorel_lift(GEN rnfeq, GEN P);
2501 GEN     nf_nfzk(GEN nf, GEN rnfeq);
2502 GEN     rnf_build_nfabs(GEN rnf, long prec);
2503 GEN     rnf_zkabs(GEN rnf);
2504 GEN     nfeltup(GEN nf, GEN x, GEN zknf);
2505 void    rnfcomplete(GEN rnf);
2506 GEN     rnfeltabstorel(GEN rnf, GEN x);
2507 GEN     rnfeltdown(GEN rnf, GEN x);
2508 GEN     rnfeltdown0(GEN rnf, GEN x, long flag);
2509 GEN     rnfeltreltoabs(GEN rnf, GEN x);
2510 GEN     rnfeltup(GEN rnf, GEN x);
2511 GEN     rnfeltup0(GEN rnf, GEN x, long flag);
2512 GEN     rnfidealabstorel(GEN rnf, GEN x);
2513 GEN     rnfidealdown(GEN rnf, GEN x);
2514 GEN     rnfidealfactor(GEN rnf, GEN x);
2515 GEN     rnfidealhnf(GEN rnf, GEN x);
2516 GEN     rnfidealmul(GEN rnf,GEN x,GEN y);
2517 GEN     rnfidealnormabs(GEN rnf, GEN x);
2518 GEN     rnfidealnormrel(GEN rnf, GEN x);
2519 GEN     rnfidealprimedec(GEN rnf, GEN pr);
2520 GEN     rnfidealreltoabs(GEN rnf, GEN x);
2521 GEN     rnfidealreltoabs0(GEN rnf, GEN x, long flag);
2522 GEN     rnfidealtwoelement(GEN rnf,GEN x);
2523 GEN     rnfidealup(GEN rnf, GEN x);
2524 GEN     rnfidealup0(GEN rnf,GEN x, long flag);
2525 GEN     rnfinit(GEN nf,GEN pol);
2526 GEN     rnfinit0(GEN nf,GEN pol,long flag);
2527 
2528 /* bb_group.c */
2529 
2530 GEN get_arith_ZZM(GEN o);
2531 GEN get_arith_Z(GEN o);
2532 GEN gen_PH_log(GEN a, GEN g, GEN ord, void *E, const struct bb_group *grp);
2533 GEN gen_Shanks_init(GEN g, long n, void *E, const struct bb_group *grp);
2534 GEN gen_Shanks(GEN T, GEN x, ulong N, void *E, const struct bb_group *grp);
2535 GEN gen_Shanks_sqrtn(GEN a, GEN n, GEN q, GEN *zetan, void *E, const struct bb_group *grp);
2536 GEN gen_gener(GEN o, void *E, const struct bb_group *grp);
2537 GEN gen_ellgens(GEN d1, GEN d2, GEN m, void *E, const struct bb_group *grp,
2538                  GEN pairorder(void *E, GEN P, GEN Q, GEN m, GEN F));
2539 GEN gen_ellgroup(GEN N, GEN F, GEN *pt_m, void *E, const struct bb_group *grp,
2540                  GEN pairorder(void *E, GEN P, GEN Q, GEN m, GEN F));
2541 GEN gen_factored_order(GEN a, GEN o, void *E, const struct bb_group *grp);
2542 GEN gen_order(GEN x, GEN o, void *E, const struct bb_group *grp);
2543 GEN gen_select_order(GEN o, void *E, const struct bb_group *grp);
2544 
2545 GEN gen_plog(GEN x,GEN g0,GEN q, void *E, const struct bb_group *grp);
2546 GEN gen_pow(GEN x, GEN n, void *E, GEN (*sqr)(void*,GEN), GEN (*mul)(void*,GEN,GEN));
2547 GEN gen_pow_fold(GEN x, GEN n, void *E, GEN (*sqr)(void*,GEN), GEN (*msqr)(void*,GEN));
2548 GEN gen_pow_fold_i(GEN x, GEN n, void *E, GEN (*sqr)(void*,GEN), GEN (*msqr)(void*,GEN));
2549 GEN gen_pow_i(GEN x, GEN n, void *E, GEN (*sqr)(void*,GEN), GEN (*mul)(void*,GEN,GEN));
2550 GEN gen_pow_init(GEN x, GEN n, long k, void *E, GEN (*sqr)(void*,GEN), GEN (*mul)(void*,GEN,GEN));
2551 GEN gen_pow_table(GEN R, GEN n, void *E, GEN (*one)(void*), GEN (*mul)(void*,GEN,GEN));
2552 GEN gen_powers(GEN x, long l, int use_sqr, void *E, GEN (*sqr)(void*,GEN), GEN (*mul)(void*,GEN,GEN), GEN (*one)(void*));
2553 GEN gen_powu(GEN x, ulong n, void *E, GEN (*sqr)(void*,GEN), GEN (*mul)(void*,GEN,GEN));
2554 GEN gen_powu_fold(GEN x, ulong n, void *E, GEN (*sqr)(void*,GEN), GEN (*msqr)(void*,GEN));
2555 GEN gen_powu_fold_i(GEN x, ulong n, void *E, GEN  (*sqr)(void*,GEN), GEN (*msqr)(void*,GEN));
2556 GEN gen_powu_i(GEN x, ulong n, void *E, GEN (*sqr)(void*,GEN), GEN (*mul)(void*,GEN,GEN));
2557 GEN gen_product(GEN x, void *data, GEN (*mul)(void*,GEN,GEN));
2558 
2559 /* bb_hnf.c */
2560 
2561 GEN     matdetmod(GEN A, GEN d);
2562 GEN     matimagemod(GEN A, GEN d, GEN* U);
2563 GEN     matinvmod(GEN A, GEN d);
2564 GEN     matkermod(GEN A, GEN d, GEN* im);
2565 GEN     matsolvemod(GEN M, GEN D, GEN Y, long flag);
2566 
2567 /* bern.c */
2568 
2569 GEN     bernfrac(long n);
2570 GEN     bernpol(long k, long v);
2571 GEN     bernreal(long n, long prec);
2572 GEN     bernvec(long nomb);
2573 void    constbern(long n);
2574 GEN     eulerpol(long k, long v);
2575 GEN     eulervec(long n);
2576 
2577 /* bibli1.c */
2578 
2579 int     QR_init(GEN x, GEN *pB, GEN *pQ, GEN *pL, long prec);
2580 GEN     R_from_QR(GEN x, long prec);
2581 GEN     RgM_Babai(GEN B, GEN t);
2582 int     RgM_QR_init(GEN x, GEN *pB, GEN *pQ, GEN *pL, long prec);
2583 GEN     RgM_gram_schmidt(GEN e, GEN *ptB);
2584 GEN     lindep_Xadic(GEN x);
2585 GEN     algdep(GEN x, long n);
2586 GEN     algdep0(GEN x, long n, long bit);
2587 void    forqfvec(void *E, long (*fun)(void *, GEN, GEN, double), GEN a, GEN BORNE);
2588 void    forqfvec1(void *E, long (*fun)(void *, GEN), GEN a, GEN BORNE);
2589 void    forqfvec0(GEN a, GEN BORNE, GEN code);
2590 GEN     bestapprnf(GEN x, GEN T, GEN rootsT, long prec);
2591 GEN     gaussred_from_QR(GEN x, long prec);
2592 GEN     lindep0(GEN x, long flag);
2593 GEN     lindep(GEN x);
2594 GEN     lindep_bit(GEN x, long bit);
2595 GEN     lindepfull_bit(GEN x, long bit);
2596 GEN     lindep2(GEN x, long bit);
2597 GEN     mathouseholder(GEN Q, GEN v);
2598 GEN     matqr(GEN x, long flag, long prec);
2599 GEN     minim(GEN a, GEN borne, GEN stockmax);
2600 GEN     minim_raw(GEN a, GEN borne, GEN stockmax);
2601 GEN     minim_zm(GEN a, GEN borne, GEN stockmax);
2602 GEN     minim2(GEN a, GEN borne, GEN stockmax);
2603 GEN     lindep_padic(GEN x);
2604 GEN     qfperfection(GEN a);
2605 GEN     qfrep0(GEN a, GEN borne, long flag);
2606 GEN     qfminim0(GEN a, GEN borne, GEN stockmax,long flag, long prec);
2607 GEN     seralgdep(GEN s, long p, long r);
2608 GEN     zncoppersmith(GEN P0, GEN N, GEN X, GEN B) ;
2609 
2610 /* bibli2.c */
2611 
2612 GEN     QXQ_reverse(GEN a, GEN T);
2613 GEN     vec_equiv(GEN F);
2614 GEN     RgV_polint(GEN X, GEN Y, long v);
2615 GEN     vec_reduce(GEN v, GEN *pE);
2616 GEN     RgXQ_reverse(GEN a, GEN T);
2617 GEN     ZC_union_shallow(GEN x, GEN y);
2618 GEN     ZV_indexsort(GEN L);
2619 long    ZV_search(GEN x, GEN y);
2620 GEN     ZV_sort(GEN L);
2621 void    ZV_sort_inplace(GEN L);
2622 GEN     ZV_sort_uniq(GEN L);
2623 GEN     ZV_union_shallow(GEN x, GEN y);
2624 GEN     binomial(GEN x, long k);
2625 GEN     binomial0(GEN x, GEN k);
2626 GEN     binomialuu(ulong n, ulong k);
2627 int     cmp_Flx(GEN x, GEN y);
2628 int     cmp_RgX(GEN x, GEN y);
2629 int     cmp_nodata(void *data, GEN x, GEN y);
2630 int     cmp_prime_ideal(GEN x, GEN y);
2631 int     cmp_prime_over_p(GEN x, GEN y);
2632 int     cmp_universal(GEN x, GEN y);
2633 GEN     convol(GEN x, GEN y);
2634 int     gen_cmp_RgX(void *data, GEN x, GEN y);
2635 GEN     polcyclo(long n, long v);
2636 GEN     polcyclo_eval(long n, GEN x);
2637 GEN     dirdiv(GEN x, GEN y);
2638 GEN     dirmul(GEN x, GEN y);
2639 GEN     eulerianpol(long N, long v);
2640 GEN     gprec_wensure(GEN x, long pr);
2641 GEN     gen_indexsort(GEN x, void *E, int (*cmp)(void*,GEN,GEN));
2642 GEN     gen_indexsort_uniq(GEN x, void *E, int (*cmp)(void*,GEN,GEN));
2643 long    gen_search(GEN x, GEN y, long flag, void *data, int (*cmp)(void*,GEN,GEN));
2644 GEN     gen_setminus(GEN set1, GEN set2, int (*cmp)(GEN,GEN));
2645 GEN     gen_sort(GEN x, void *E, int (*cmp)(void*,GEN,GEN));
2646 void    gen_sort_inplace(GEN x, void *E, int (*cmp)(void*,GEN,GEN), GEN *perm);
2647 GEN     gen_sort_shallow(GEN x, void *E, int (*cmp)(void*,GEN,GEN));
2648 GEN     gen_sort_uniq(GEN x, void *E, int (*cmp)(void*,GEN,GEN));
2649 long    getstack(void);
2650 long    gettime(void);
2651 long    getabstime(void);
2652 GEN     getwalltime(void);
2653 GEN     gprec(GEN x, long l);
2654 GEN     gprec_wtrunc(GEN x, long pr);
2655 GEN     gprec_w(GEN x, long pr);
2656 GEN     gtoset(GEN x);
2657 GEN     indexlexsort(GEN x);
2658 GEN     indexsort(GEN x);
2659 GEN     indexvecsort(GEN x, GEN k);
2660 GEN     laplace(GEN x);
2661 GEN     lexsort(GEN x);
2662 GEN     mathilbert(long n);
2663 GEN     matqpascal(long n, GEN q);
2664 GEN     merge_factor(GEN fx, GEN fy, void *data, int (*cmp)(void *,GEN,GEN));
2665 GEN     merge_sort_uniq(GEN x, GEN y, void *data, int (*cmp)(void *,GEN,GEN));
2666 GEN     modreverse(GEN x);
2667 GEN     polhermite(long n, long v);
2668 GEN     polhermite_eval0(long n, GEN x, long flag);
2669 GEN     polhermite_eval(long n, GEN x);
2670 GEN     pollaguerre(long n, GEN a, long v);
2671 GEN     pollaguerre_eval(long n, GEN a, GEN x);
2672 GEN     pollaguerre_eval0(long n, GEN a, GEN x, long flag);
2673 GEN     pollegendre(long n, long v);
2674 GEN     pollegendre_reduced(long n, long v);
2675 GEN     pollegendre_eval(long n, GEN x);
2676 GEN     pollegendre_eval0(long n, GEN x, long flag);
2677 GEN     polint(GEN xa, GEN ya, GEN x, GEN *pe);
2678 GEN     polint_i(GEN X, GEN Y, GEN t, long *pe);
2679 GEN     polintspec(GEN xa, GEN ya, GEN x, long n, long *pe);
2680 GEN     polchebyshev(long n, long kind, long v);
2681 GEN     polchebyshev_eval(long n, long kind, GEN x);
2682 GEN     polchebyshev1(long n, long v);
2683 GEN     polchebyshev2(long n, long v);
2684 GEN     polrecip(GEN x);
2685 GEN     setbinop(GEN f, GEN x, GEN y);
2686 GEN     setintersect(GEN x, GEN y);
2687 long    setisset(GEN x);
2688 GEN     setminus(GEN x, GEN y);
2689 long    setsearch(GEN x, GEN y, long flag);
2690 GEN     setunion(GEN x, GEN y);
2691 GEN     setunion_i(GEN x, GEN y);
2692 GEN     sort(GEN x);
2693 GEN     sort_factor(GEN y, void *data, int (*cmp)(void*,GEN,GEN));
2694 GEN     stirling(long n, long m, long flag);
2695 GEN     stirling1(ulong n, ulong m);
2696 GEN     stirling2(ulong n, ulong m);
2697 long    tablesearch(GEN T, GEN x, int (*cmp)(GEN,GEN));
2698 GEN     vecbinomial(long n);
2699 long    vecsearch(GEN v, GEN x, GEN k);
2700 GEN     vecsort(GEN x, GEN k);
2701 GEN     vecsort0(GEN x, GEN k, long flag);
2702 long    zv_search(GEN x, long y);
2703 
2704 /* bit.c */
2705 
2706 GEN     bits_to_int(GEN x, long l);
2707 ulong   bits_to_u(GEN v, long l);
2708 GEN     binaire(GEN x);
2709 GEN     binary_2k(GEN x, long k);
2710 GEN     binary_2k_nv(GEN x, long k);
2711 GEN     binary_zv(GEN x);
2712 long    bittest(GEN x, long n);
2713 GEN     fromdigits_2k(GEN x, long k);
2714 GEN     gbitand(GEN x, GEN y);
2715 GEN     gbitneg(GEN x, long n);
2716 GEN     gbitnegimply(GEN x, GEN y);
2717 GEN     gbitor(GEN x, GEN y);
2718 GEN     gbittest(GEN x, long n);
2719 GEN     gbitxor(GEN x, GEN y);
2720 long    hammingl(ulong w);
2721 long    hammingweight(GEN n);
2722 GEN     ibitand(GEN x, GEN y);
2723 GEN     ibitnegimply(GEN x, GEN y);
2724 GEN     ibitor(GEN x, GEN y);
2725 GEN     ibitxor(GEN x, GEN y);
2726 GEN     nv_fromdigits_2k(GEN x, long k);
2727 
2728 /* bnflog.c */
2729 GEN bnflogef(GEN bnf, GEN pr);
2730 GEN bnflog(GEN bnf, GEN l);
2731 GEN bnflogdegree(GEN bnf, GEN A, GEN ell);
2732 long nfislocalpower(GEN nf, GEN pr, GEN a, GEN n);
2733 long rnfislocalcyclo(GEN rnf);
2734 
2735 /* bnfunits.c */
2736 GEN     bnfisunit(GEN bnf, GEN x);
2737 GEN     bnfissunit(GEN bnf,GEN suni,GEN x);
2738 GEN     bnfsunit(GEN bnf,GEN s,long PREC);
2739 GEN     bnfunits(GEN bnf, GEN S);
2740 GEN     bnfisunit0(GEN bnf, GEN x, GEN U);
2741 GEN     sunits_mod_units(GEN bnf, GEN S);
2742 
2743 /* buch1.c */
2744 
2745 GEN     Buchquad(GEN D, double c1, double c2, long prec);
2746 GEN     quadclassunit0(GEN x, long flag,GEN data, long prec);
2747 GEN     quadhilbert(GEN D, long prec);
2748 GEN     quadray(GEN bnf, GEN f, long prec);
2749 
2750 /* buch2.c */
2751 
2752 GEN     Buchall(GEN P, long flag, long prec);
2753 GEN     Buchall_param(GEN P, double bach, double bach2, long nbrelpid, long flun, long prec);
2754 GEN     bnf_build_cheapfu(GEN bnf);
2755 GEN     bnf_build_cycgen(GEN bnf);
2756 GEN     bnf_build_matalpha(GEN bnf);
2757 GEN     bnf_build_units(GEN bnf);
2758 GEN     bnf_compactfu(GEN bnf);
2759 GEN     bnf_compactfu_mat(GEN bnf);
2760 GEN     bnf_has_fu(GEN bnf);
2761 GEN     bnfinit0(GEN P,long flag,GEN data,long prec);
2762 GEN     bnfisprincipal0(GEN bnf, GEN x,long flall);
2763 GEN     bnfnewprec(GEN nf, long prec);
2764 GEN     bnfnewprec_shallow(GEN nf, long prec);
2765 void    bnftestprimes(GEN bnf, GEN bound);
2766 GEN     bnrnewprec(GEN bnr, long prec);
2767 GEN     bnrnewprec_shallow(GEN bnr, long prec);
2768 GEN     isprincipalfact(GEN bnf, GEN C, GEN L, GEN f, long flag);
2769 GEN     isprincipalfact_or_fail(GEN bnf, GEN C, GEN P, GEN e);
2770 GEN     isprincipal(GEN bnf, GEN x);
2771 GEN     nf_cxlog_normalize(GEN nf, GEN x, long prec);
2772 GEN     nfcyclotomicunits(GEN nf, GEN zu);
2773 GEN     nfsign_units(GEN bnf, GEN archp, int add_zu);
2774 GEN     nfsign_tu(GEN bnf, GEN archp);
2775 GEN     nfsign_fu(GEN bnf, GEN archp);
2776 GEN     signunits(GEN bnf);
2777 
2778 /* buch3.c */
2779 
2780 void    bnr_subgroup_sanitize(GEN *pbnr, GEN *pH);
2781 void    bnr_char_sanitize(GEN *pbnr, GEN *pchi);
2782 GEN     ABC_to_bnr(GEN A, GEN B, GEN C, GEN *H, int gen);
2783 GEN     Buchray(GEN bnf, GEN module, long flag);
2784 GEN     Buchraymod(GEN bnf, GEN f, long flag, GEN MOD);
2785 GEN     bnrautmatrix(GEN bnr, GEN aut);
2786 GEN     bnr_subgroup_check(GEN bnr, GEN H, GEN *pdeg);
2787 GEN     bnrchar(GEN bnr, GEN g, GEN v);
2788 GEN     bnrchar_primitive(GEN bnr, GEN chi, GEN bnrc);
2789 GEN     bnrclassno(GEN bnf,GEN ideal);
2790 GEN     bnrclassno0(GEN A,GEN B,GEN C);
2791 GEN     bnrclassnolist(GEN bnf,GEN listes);
2792 GEN     bnrchar_primitive_raw(GEN bnr, GEN bnrc, GEN chi);
2793 GEN     bnrconductor_factored(GEN bnr, GEN H);
2794 GEN     bnrconductor_raw(GEN bnr, GEN H);
2795 GEN     bnrconductormod(GEN bnr, GEN H0, GEN MOD);
2796 GEN     bnrconductor0(GEN A, GEN B, GEN C, long flag);
2797 GEN     bnrconductor(GEN bnr, GEN H0, long flag);
2798 GEN     bnrconductor_i(GEN bnr, GEN H0, long flag);
2799 GEN     bnrconductorofchar(GEN bnr,GEN chi);
2800 GEN     bnrdisc0(GEN A, GEN B, GEN C, long flag);
2801 GEN     bnrdisc(GEN bnr, GEN H, long flag);
2802 GEN     bnrdisclist0(GEN bnf,GEN borne, GEN arch);
2803 GEN     bnrgaloismatrix(GEN bnr, GEN aut);
2804 GEN     bnrgaloisapply(GEN bnr, GEN mat, GEN x);
2805 GEN     bnrinit0(GEN bnf,GEN ideal,long flag);
2806 GEN     bnrinitmod(GEN bnf, GEN ideal, long flag, GEN MOD);
2807 long    bnrisconductor0(GEN A, GEN B, GEN C);
2808 long    bnrisconductor(GEN bnr, GEN H);
2809 long    bnrisgalois(GEN bnr, GEN M, GEN H);
2810 GEN     bnrisprincipalmod(GEN bnf, GEN x, GEN mod, long flag);
2811 GEN     bnrisprincipal(GEN bnf, GEN x,long flag);
2812 GEN     bnrmap(GEN A, GEN B);
2813 GEN     bnrsurjection(GEN bnr1, GEN bnr2);
2814 GEN     bnfnarrow(GEN bnf);
2815 long    bnfcertify(GEN bnf);
2816 long    bnfcertify0(GEN bnf, long flag);
2817 GEN     decodemodule(GEN nf, GEN fa);
2818 GEN     discrayabslist(GEN bnf,GEN listes);
2819 GEN     discrayabslistarch(GEN bnf, GEN arch, ulong bound);
2820 GEN     idealmoddivisor(GEN bnr, GEN x);
2821 GEN     isprincipalray(GEN bnf, GEN x);
2822 GEN     isprincipalraygen(GEN bnf, GEN x);
2823 GEN     nf_deg1_prime(GEN nf);
2824 GEN     nfarchstar(GEN nf,GEN x,GEN arch);
2825 GEN     rnfconductor(GEN bnf, GEN polrel);
2826 GEN     rnfconductor0(GEN bnf, GEN T, long flag);
2827 long    rnfisabelian(GEN nf, GEN pol);
2828 GEN     rnfnormgroup(GEN bnr, GEN polrel);
2829 GEN     subgrouplist0(GEN bnr, GEN indexbound, long all);
2830 
2831 /* buch4.c */
2832 
2833 GEN     bnfisnorm(GEN bnf,GEN x,long flag);
2834 GEN     rnfisnorm(GEN S, GEN x, long flag);
2835 GEN     rnfisnorminit(GEN bnf, GEN R, int galois);
2836 long    nfhilbert(GEN bnf,GEN a,GEN b);
2837 long    nfhilbert0(GEN bnf,GEN a,GEN b,GEN p);
2838 long    hyperell_locally_soluble(GEN pol,GEN p);
2839 long    nf_hyperell_locally_soluble(GEN nf,GEN pol,GEN p);
2840 
2841 /* char.c */
2842 
2843 GEN     coprimes_zv(ulong N);
2844 int     char_check(GEN cyc, GEN chi);
2845 GEN     charconj(GEN cyc, GEN chi);
2846 GEN     charconj0(GEN cyc, GEN chi);
2847 GEN     chardiv(GEN x, GEN a, GEN b);
2848 GEN     chardiv0(GEN x, GEN a, GEN b);
2849 GEN     chareval(GEN G, GEN chi, GEN n, GEN z);
2850 GEN     chargalois(GEN G, GEN ORD);
2851 GEN     charker(GEN cyc, GEN chi);
2852 GEN     charker0(GEN cyc, GEN chi);
2853 GEN     charmul(GEN x, GEN a, GEN b);
2854 GEN     charmul0(GEN x, GEN a, GEN b);
2855 GEN     charorder(GEN cyc, GEN x);
2856 GEN     charorder0(GEN x, GEN chi);
2857 GEN     charpow(GEN cyc, GEN a, GEN N);
2858 GEN     charpow0(GEN x, GEN a, GEN N);
2859 GEN     char_denormalize(GEN cyc, GEN D, GEN chic);
2860 GEN     char_normalize(GEN chi, GEN ncyc);
2861 GEN     char_simplify(GEN D, GEN C);
2862 int     checkznstar_i(GEN G);
2863 GEN     cyc_normalize(GEN c);
2864 GEN     ncharvecexpo(GEN G, GEN nchi);
2865 GEN     znchar(GEN D);
2866 GEN     znchar_quad(GEN G, GEN D);
2867 int     zncharcheck(GEN G, GEN chi);
2868 GEN     zncharconductor(GEN G, GEN chi);
2869 GEN     zncharconj(GEN G, GEN chi);
2870 GEN     znchardecompose(GEN G, GEN chi, GEN Q);
2871 GEN     znchardiv(GEN G, GEN a, GEN b);
2872 GEN     znchareval(GEN G, GEN chi, GEN n, GEN z);
2873 GEN     zncharinduce(GEN G, GEN chi, GEN N);
2874 long    zncharisodd(GEN G, GEN chi);
2875 GEN     zncharker(GEN G, GEN chi);
2876 GEN     zncharmul(GEN G, GEN a, GEN b);
2877 GEN     zncharorder(GEN G,  GEN chi);
2878 GEN     zncharpow(GEN G, GEN a, GEN n);
2879 GEN     znchartokronecker(GEN G, GEN chi, long flag);
2880 GEN     znchartoprimitive(GEN G, GEN chi);
2881 int     znconrey_check(GEN cyc, GEN chi);
2882 GEN     znconrey_normalized(GEN G, GEN chi);
2883 GEN     znconreychar(GEN bid, GEN m);
2884 GEN     znconreyfromchar_normalized(GEN bid, GEN chi);
2885 GEN     znconreyconductor(GEN bid, GEN co, GEN *pm);
2886 GEN     znconreyexp(GEN bid, GEN x);
2887 GEN     znconreyfromchar(GEN bid, GEN chi);
2888 GEN     znconreylog(GEN bid, GEN x);
2889 GEN     znconreylog_normalize(GEN G, GEN m);
2890 GEN     znlog0(GEN h, GEN g, GEN o);
2891 long    zv_cyc_minimal(GEN cyc, GEN g, GEN coprime);
2892 long    zv_cyc_minimize(GEN cyc, GEN g, GEN coprime);
2893 
2894 /* compile.c */
2895 
2896 GEN     closure_deriv(GEN G);
2897 GEN     closure_derivn(GEN G, long k);
2898 long    localvars_find(GEN pack, entree *ep);
2899 GEN     localvars_read_str(const char *str, GEN pack);
2900 GEN     snm_closure(entree *ep, GEN data);
2901 GEN     strtoclosure(const char *s, long n, ...);
2902 GEN     strtofunction(const char *s);
2903 
2904 /* concat.c */
2905 
2906 GEN     gconcat(GEN x, GEN y);
2907 GEN     gconcat1(GEN x);
2908 GEN     matconcat(GEN v);
2909 GEN     shallowconcat(GEN x, GEN y);
2910 GEN     shallowconcat1(GEN x);
2911 GEN     shallowmatconcat(GEN v);
2912 GEN     vconcat(GEN A, GEN B);
2913 
2914 /* default.c */
2915 enum { d_SILENT = 0, d_ACKNOWLEDGE, d_INITRC, d_RETURN };
2916 
2917 GEN default0(const char *a, const char *b);
2918 long getrealprecision(void);
2919 entree *pari_is_default(const char *s);
2920 GEN sd_TeXstyle(const char *v, long flag);
2921 GEN sd_colors(const char *v, long flag);
2922 GEN sd_compatible(const char *v, long flag);
2923 GEN sd_datadir(const char *v, long flag);
2924 GEN sd_debug(const char *v, long flag);
2925 GEN sd_debugfiles(const char *v, long flag);
2926 GEN sd_debugmem(const char *v, long flag);
2927 GEN sd_factor_add_primes(const char *v, long flag);
2928 GEN sd_factor_proven(const char *v, long flag);
2929 GEN sd_format(const char *v, long flag);
2930 GEN sd_histsize(const char *v, long flag);
2931 GEN sd_log(const char *v, long flag);
2932 GEN sd_logfile(const char *v, long flag);
2933 GEN sd_nbthreads(const char *v, long flag);
2934 GEN sd_new_galois_format(const char *v, long flag);
2935 GEN sd_output(const char *v, long flag);
2936 GEN sd_parisize(const char *v, long flag);
2937 GEN sd_parisizemax(const char *v, long flag);
2938 GEN sd_path(const char *v, long flag);
2939 GEN sd_plothsizes(const char *v, long flag);
2940 GEN sd_prettyprinter(const char *v, long flag);
2941 GEN sd_primelimit(const char *v, long flag);
2942 GEN sd_realbitprecision(const char *v, long flag);
2943 GEN sd_realprecision(const char *v, long flag);
2944 GEN sd_secure(const char *v, long flag);
2945 GEN sd_seriesprecision(const char *v, long flag);
2946 GEN sd_simplify(const char *v, long flag);
2947 GEN sd_sopath(char *v, int flag);
2948 GEN sd_strictargs(const char *v, long flag);
2949 GEN sd_strictmatch(const char *v, long flag);
2950 GEN sd_string(const char *v, long flag, const char *s, char **f);
2951 GEN sd_threadsize(const char *v, long flag);
2952 GEN sd_threadsizemax(const char *v, long flag);
2953 GEN sd_intarray(const char *v, long flag, GEN *pz, const char *s);
2954 GEN sd_toggle(const char *v, long flag, const char *s, int *ptn);
2955 GEN sd_ulong(const char *v, long flag, const char *s, ulong *ptn, ulong Min, ulong Max, const char **msg);
2956 GEN setdefault(const char *s, const char *v, long flag);
2957 long setrealprecision(long n, long *prec);
2958 
2959 /* ecpp.c */
2960 GEN     ecpp(GEN N);
2961 GEN     ecppexport(GEN cert, long flag);
2962 long    ecppisvalid(GEN cert);
2963 long    isprimeECPP(GEN N);
2964 
2965 /* gplib.c */
2966 GEN sd_breakloop(const char *v, long flag);
2967 GEN sd_echo(const char *v, long flag);
2968 GEN sd_graphcolormap(const char *v, long flag);
2969 GEN sd_graphcolors(const char *v, long flag);
2970 GEN sd_help(const char *v, long flag);
2971 GEN sd_histfile(const char *v, long flag);
2972 GEN sd_lines(const char *v, long flag);
2973 GEN sd_linewrap(const char *v, long flag);
2974 GEN sd_prompt(const char *v, long flag);
2975 GEN sd_prompt_cont(const char *v, long flag);
2976 GEN sd_psfile(const char *v, long flag);
2977 GEN sd_readline(const char *v, long flag);
2978 GEN sd_recover(const char *v, long flag);
2979 GEN sd_timer(const char *v, long flag);
2980 void pari_hit_return(void);
2981 void gp_load_gprc(void);
2982 int  gp_meta(const char *buf, int ismain);
2983 const char **gphelp_keyword_list(void);
2984 void pari_center(const char *s);
2985 long pari_community(void);
2986 void pari_print_version(void);
2987 const char *gp_format_time(long delay);
2988 const char *gp_format_prompt(const char *p);
2989 void pari_alarm(long s);
2990 GEN  gp_alarm(long s, GEN code);
2991 GEN  gp_input(void);
2992 void gp_allocatemem(GEN z);
2993 int  gp_handle_exception(long numerr);
2994 void gp_alarm_handler(int sig);
2995 void gp_sigint_fun(void);
2996 enum { h_REGULAR=0, h_LONG=1, h_APROPOS=2, h_RL=4 };
2997 void gp_help(const char *s, long flag);
2998 void gp_echo_and_log(const char *prompt, const char *s);
2999 void print_fun_list(char **list, long nbli);
3000 GEN  strtime(long t);
3001 
3002 /* dirichlet.c */
3003 
3004 GEN     direuler(void *E, GEN (*eval)(void *, GEN), GEN a, GEN b, GEN c);
3005 GEN     dirpowers(long n, GEN x, long prec);
3006 GEN     dirpowerssum0(GEN N, GEN s, long prec);
3007 GEN     dirpowerssum(ulong N, GEN s, long prec);
3008 GEN     vecpowuu(long N, ulong B);
3009 GEN     vecpowug(long N, GEN B, long prec);
3010 
3011 /* ellanal.c */
3012 
3013 GEN     ellanalyticrank(GEN e, GEN eps, long prec);
3014 GEN     ellanalyticrank_bitprec(GEN e, GEN eps, long bitprec);
3015 GEN     ellanal_globalred_all(GEN e, GEN *N, GEN *cb, GEN *tam);
3016 GEN     ellheegner(GEN e);
3017 GEN     ellL1(GEN E, long r, long prec);
3018 GEN     ellL1_bitprec(GEN E, long r, long bitprec);
3019 
3020 /* elldata.c */
3021 
3022 GEN     ellconvertname(GEN s);
3023 GEN     elldatagenerators(GEN E);
3024 GEN     ellidentify(GEN E);
3025 GEN     ellsearch(GEN A);
3026 GEN     ellsearchcurve(GEN name);
3027 void    forell(void *E, long call(void*, GEN), long a, long b, long flag);
3028 
3029 /* ellfromeqn.c */
3030 
3031 GEN     ellfromeqn(GEN s);
3032 
3033 /* elliptic.c */
3034 enum { t_ELL_Rg = 0, t_ELL_Q, t_ELL_Qp, t_ELL_Fp, t_ELL_Fq, t_ELL_NF };
3035 long    ellQ_get_CM(GEN e);
3036 int     ell_is_integral(GEN E);
3037 GEN     ellbasechar(GEN E);
3038 GEN     akell(GEN e, GEN n);
3039 GEN     ellan(GEN e, long n);
3040 GEN     ellanQ_zv(GEN e, long n);
3041 GEN     bilhell(GEN e, GEN z1, GEN z2, long prec);
3042 void    checkell(GEN e);
3043 void    checkell_Fq(GEN e);
3044 void    checkell_Q(GEN e);
3045 void    checkell_Qp(GEN e);
3046 void    checkellisog(GEN v);
3047 void    checkellpt(GEN z);
3048 void    checkell5(GEN e);
3049 GEN     cxredsl2(GEN t, GEN *U);
3050 GEN     cxredsl2_i(GEN z, GEN *pU, GEN *czd);
3051 GEN     ec_bmodel(GEN e);
3052 GEN     ec_f_evalx(GEN E, GEN x);
3053 GEN     ec_h_evalx(GEN e, GEN x);
3054 GEN     ec_dFdx_evalQ(GEN E, GEN Q);
3055 GEN     ec_dFdy_evalQ(GEN E, GEN Q);
3056 GEN     ec_dmFdy_evalQ(GEN e, GEN Q);
3057 GEN     ec_2divpol_evalx(GEN E, GEN x);
3058 GEN     ec_3divpol_evalx(GEN E, GEN x);
3059 GEN     ec_half_deriv_2divpol_evalx(GEN E, GEN x);
3060 GEN     ellanal_globalred(GEN e, GEN *gr);
3061 GEN     ellQ_get_N(GEN e);
3062 void    ellQ_get_Nfa(GEN e, GEN *N, GEN *faN);
3063 GEN     ellQp_Tate_uniformization(GEN E, long prec);
3064 GEN     ellQp_AGM(GEN E, long prec);
3065 GEN     ellQp_u(GEN E, long prec);
3066 GEN     ellQp_u2(GEN E, long prec);
3067 GEN     ellQp_q(GEN E, long prec);
3068 GEN     ellQp_ab(GEN E, long prec);
3069 GEN     ellQp_L(GEN E, long prec);
3070 GEN     ellQp_root(GEN E, long prec);
3071 GEN     ellQtwist_bsdperiod(GEN E, long s);
3072 GEN     ellR_area(GEN E, long prec);
3073 GEN     ellR_ab(GEN E, long prec);
3074 GEN     ellR_eta(GEN E, long prec);
3075 GEN     ellR_omega(GEN x, long prec);
3076 GEN     ellR_roots(GEN E, long prec);
3077 GEN     elladd(GEN e, GEN z1, GEN z2);
3078 GEN     ellap(GEN e, GEN p);
3079 long    ellap_CM_fast(GEN E, ulong p, long CM);
3080 GEN     ellbsd(GEN e, long prec);
3081 GEN     ellcard(GEN E, GEN p);
3082 GEN     ellchangecurve(GEN e, GEN ch);
3083 GEN     ellchangeinvert(GEN w);
3084 GEN     ellchangepoint(GEN x, GEN ch);
3085 GEN     ellchangepointinv(GEN x, GEN ch);
3086 GEN     elldivpol(GEN e, long n, long v);
3087 GEN     elleisnum(GEN om, long k, long flag, long prec);
3088 GEN     elleta(GEN om, long prec);
3089 GEN     ellff_get_card(GEN E);
3090 GEN     ellff_get_gens(GEN E);
3091 GEN     ellff_get_group(GEN E);
3092 GEN     ellff_get_o(GEN x);
3093 GEN     ellff_get_p(GEN E);
3094 GEN     ellff_get_m(GEN E);
3095 GEN     ellff_get_D(GEN E);
3096 GEN     ellfromj(GEN j);
3097 GEN     ellgenerators(GEN E);
3098 GEN     ellglobalred(GEN e1);
3099 GEN     ellgroup(GEN E, GEN p);
3100 GEN     ellgroup0(GEN E, GEN p, long flag);
3101 GEN     ellheight0(GEN e, GEN a, GEN b, long prec);
3102 GEN     ellheight(GEN e, GEN a, long prec);
3103 GEN     ellheightmatrix(GEN E, GEN x, long n);
3104 GEN     ellheightoo(GEN e, GEN z, long prec);
3105 GEN     ellinit(GEN x, GEN p, long prec);
3106 GEN     ellintegralmodel(GEN e, GEN *pv);
3107 GEN     ellintegralmodel_i(GEN e, GEN *pv);
3108 GEN     ellisoncurve(GEN e, GEN z);
3109 GEN     ellisotree(GEN e);
3110 int     ellissupersingular(GEN x, GEN p);
3111 int     elljissupersingular(GEN x);
3112 GEN     elllseries(GEN e, GEN s, GEN A, long prec);
3113 GEN     elllocalred(GEN e, GEN p1);
3114 GEN     elllog(GEN e, GEN a, GEN g, GEN o);
3115 GEN     ellminimaldisc(GEN E);
3116 GEN     ellminimalmodel(GEN E, GEN *ptv);
3117 GEN     ellminimaltwist(GEN e);
3118 GEN     ellminimaltwist0(GEN e, long fl);
3119 GEN     ellminimaltwistcond(GEN e);
3120 GEN     ellmul(GEN e, GEN z, GEN n);
3121 GEN     ellnf_vecarea(GEN E, long prec);
3122 GEN     ellnf_veceta(GEN E, long prec);
3123 GEN     ellnf_vecomega(GEN E, long prec);
3124 GEN     ellneg(GEN e, GEN z);
3125 GEN     ellorder(GEN e, GEN p, GEN o);
3126 long    ellorder_Q(GEN E, GEN P);
3127 GEN     ellordinate(GEN e, GEN x, long prec);
3128 GEN     ellpadicheight0(GEN e, GEN p, long n, GEN P, GEN Q);
3129 GEN     ellpadicheightmatrix(GEN e, GEN p, long n, GEN P);
3130 GEN     ellperiods(GEN w, long flag, long prec);
3131 GEN     elltwist(GEN E, GEN D);
3132 GEN     ellrandom(GEN e);
3133 long    ellrootno(GEN e, GEN p);
3134 long    ellrootno_global(GEN e);
3135 GEN     ellsea(GEN E, long smallfact);
3136 GEN     ellsigma(GEN om, GEN z, long flag, long prec);
3137 GEN     ellsub(GEN e, GEN z1, GEN z2);
3138 GEN     elltamagawa(GEN e);
3139 GEN     elltaniyama(GEN e, long prec);
3140 GEN     elltatepairing(GEN E, GEN t, GEN s, GEN m);
3141 GEN     elltors(GEN e);
3142 GEN     elltors0(GEN e, long flag);
3143 GEN     ellweilpairing(GEN E, GEN t, GEN s, GEN m);
3144 GEN     ellwp(GEN w, GEN z, long prec);
3145 GEN     ellwp0(GEN w, GEN z, long flag, long prec);
3146 GEN     ellwpseries(GEN e, long v, long PRECDL);
3147 GEN     ellxn(GEN e, long n, long v);
3148 GEN     ellzeta(GEN om, GEN z, long prec);
3149 int     oncurve(GEN e, GEN z);
3150 GEN     orderell(GEN e, GEN p);
3151 GEN     pointell(GEN e, GEN z, long prec);
3152 GEN     point_to_a4a6(GEN E, GEN P, GEN p, GEN *pa4);
3153 GEN     point_to_a4a6_Fl(GEN E, GEN P, ulong p, ulong *pa4);
3154 GEN     zell(GEN e, GEN z, long prec);
3155 
3156 /* ellpadic.c */
3157 GEN     Qp_agm2_sequence(GEN a1, GEN b1);
3158 void    Qp_ascending_Landen(GEN AB, GEN *ptx, GEN *pty);
3159 void    Qp_descending_Landen(GEN AB, GEN *ptx, GEN *pty);
3160 GEN     ellformaldifferential(GEN e, long n, long v);
3161 GEN     ellformalexp(GEN e, long n, long v);
3162 GEN     ellformallog(GEN e, long n, long v);
3163 GEN     ellformalpoint(GEN e, long n, long v);
3164 GEN     ellformalw(GEN e, long n, long v);
3165 GEN     ellnonsingularmultiple(GEN e, GEN P);
3166 GEN     ellpadicL(GEN E, GEN p, long n, GEN s, long r, GEN D);
3167 GEN     ellpadicbsd(GEN E, GEN p, long n, GEN D);
3168 GEN     ellpadicfrobenius(GEN E, ulong p, long n);
3169 GEN     ellpadicheight(GEN e, GEN p, long n, GEN P);
3170 GEN     ellpadiclog(GEN E, GEN p, long n, GEN P);
3171 GEN     ellpadicregulator(GEN E, GEN p, long n, GEN S);
3172 GEN     ellpadics2(GEN E, GEN p, long n);
3173 
3174 /* elltors.c */
3175 long    ellisdivisible(GEN E, GEN P, GEN n, GEN *Q);
3176 
3177 /* ellisog.c */
3178 
3179 GEN     ellisogenyapply(GEN f, GEN P);
3180 GEN     ellisogeny(GEN e, GEN G, long only_image, long vx, long vy);
3181 GEN     ellisomat(GEN E, long p, long flag);
3182 GEN     ellweilcurve(GEN E, GEN *pm);
3183 
3184 /* ellsea.c */
3185 
3186 GEN     Fp_ellcard_SEA(GEN a4, GEN a6, GEN p, long smallfact);
3187 GEN     Fq_ellcard_SEA(GEN a4, GEN a6, GEN q, GEN T, GEN p, long smallfact);
3188 GEN     ellmodulareqn(long l, long vx, long vy);
3189 
3190 /* es.c */
3191 
3192 GEN     externstr(const char *cmd);
3193 char    *gp_filter(const char *s);
3194 GEN     gpextern(const char *cmd);
3195 void    gpsystem(const char *s);
3196 GEN     readstr(const char *s);
3197 GEN     GENtoGENstr_nospace(GEN x);
3198 GEN     GENtoGENstr(GEN x);
3199 char*   GENtoTeXstr(GEN x);
3200 char*   GENtostr(GEN x);
3201 char*   GENtostr_raw(GEN x);
3202 char*   GENtostr_unquoted(GEN x);
3203 GEN     Str(GEN g);
3204 GEN     strexpand(GEN g);
3205 GEN     strtex(GEN g);
3206 void    brute(GEN g, char format, long dec);
3207 void    dbgGEN(GEN x, long nb);
3208 void    error0(GEN g);
3209 void    dbg_pari_heap(void);
3210 int     file_is_binary(FILE *f);
3211 void    err_flush(void);
3212 void    err_printf(const char* pat, ...);
3213 GEN     gp_getenv(const char *s);
3214 void    gp_fileclose(long n);
3215 long    gp_fileextern(char *s);
3216 void    gp_fileflush(long n);
3217 void    gp_fileflush0(GEN n);
3218 long    gp_fileopen(char *s, char *mode);
3219 GEN     gp_fileread(long n);
3220 GEN     gp_filereadstr(long n);
3221 void    gp_filewrite(long n, const char *s);
3222 void    gp_filewrite1(long n, const char *s);
3223 GEN     gp_read_file(const char *s);
3224 GEN     gp_read_str_multiline(const char *s, char *last);
3225 GEN     gp_read_stream(FILE *f);
3226 GEN     gp_readvec_file(char *s);
3227 GEN     gp_readvec_stream(FILE *f);
3228 void    gpinstall(const char *s, const char *code,
3229                   const char *gpname, const char *lib);
3230 GEN     gsprintf(const char *fmt, ...);
3231 GEN     gvsprintf(const char *fmt, va_list ap);
3232 char*   itostr(GEN x);
3233 void    matbrute(GEN g, char format, long dec);
3234 char*   os_getenv(const char *s);
3235 char*   uordinal(ulong i);
3236 void    outmat(GEN x);
3237 void    output(GEN x);
3238 char*   RgV_to_str(GEN g, long flag);
3239 void    pari_add_hist(GEN z, long t, long r);
3240 void    pari_ask_confirm(const char *s);
3241 void    pari_fclose(pariFILE *f);
3242 void    pari_flush(void);
3243 pariFILE* pari_fopen(const char *s, const char *mode);
3244 pariFILE* pari_fopen_or_fail(const char *s, const char *mode);
3245 pariFILE* pari_fopengz(const char *s);
3246 void    pari_fprintf(FILE *file, const char *fmt, ...);
3247 void    pari_fread_chars(void *b, size_t n, FILE *f);
3248 GEN     pari_get_hist(long p);
3249 long    pari_get_histrtime(long p);
3250 long    pari_get_histtime(long p);
3251 char*   pari_get_homedir(const char *user);
3252 GEN     pari_histtime(long p);
3253 int     pari_is_dir(const char *name);
3254 int     pari_is_file(const char *name);
3255 int     pari_last_was_newline(void);
3256 void    pari_set_last_newline(int last);
3257 ulong   pari_nb_hist(void);
3258 void    pari_printf(const char *fmt, ...);
3259 void    pari_putc(char c);
3260 void    pari_puts(const char *s);
3261 pariFILE* pari_safefopen(const char *s, const char *mode);
3262 char*   pari_sprintf(const char *fmt, ...);
3263 int     pari_stdin_isatty(void);
3264 char*   pari_unique_dir(const char *s);
3265 char*   pari_unique_filename(const char *s);
3266 char*   pari_unique_filename_suffix(const char *s, const char *suf);
3267 void    pari_unlink(const char *s);
3268 void    pari_vfprintf(FILE *file, const char *fmt, va_list ap);
3269 void    pari_vprintf(const char *fmt, va_list ap);
3270 char*   pari_vsprintf(const char *fmt, va_list ap);
3271 char*   path_expand(const char *s);
3272 void    out_print0(PariOUT *out, const char *sep, GEN g, long flag);
3273 void    out_printf(PariOUT *out, const char *fmt, ...);
3274 void    out_putc(PariOUT *out, char c);
3275 void    out_puts(PariOUT *out, const char *s);
3276 void    out_term_color(PariOUT *out, long c);
3277 void    out_vprintf(PariOUT *out, const char *fmt, va_list ap);
3278 char*   pari_sprint0(const char *msg, GEN g, long flag);
3279 void    print(GEN g);
3280 void    printp(GEN g);
3281 enum { f_RAW = 0, f_PRETTYMAT = 1, f_PRETTY = 3, f_TEX = 4 };
3282 void    print0(GEN g, long flag);
3283 void    print1(GEN g);
3284 void    printf0(const char *fmt, GEN args);
3285 void    printsep(const char *s, GEN g);
3286 void    printsep1(const char *s, GEN g);
3287 void    printtex(GEN g);
3288 char*   stack_sprintf(const char *fmt, ...);
3289 void    str_init(pari_str *S, int use_stack);
3290 void    str_printf(pari_str *S, const char *fmt, ...);
3291 void    str_putc(pari_str *S, char c);
3292 void    str_puts(pari_str *S, const char *s);
3293 void    strftime_expand(const char *s, char *buf, long max);
3294 GEN     strprintf(const char *fmt, GEN args);
3295 FILE*   switchin(const char *name);
3296 void    switchout(const char *name);
3297 void    term_color(long c);
3298 char*   term_get_color(char *s, long c);
3299 void    texe(GEN g, char format, long dec);
3300 void    warning0(GEN g);
3301 void    write0(const char *s, GEN g);
3302 void    write1(const char *s, GEN g);
3303 void    writebin(const char *name, GEN x);
3304 void    writetex(const char *s, GEN g);
3305 
3306 /* eval.c */
3307 
3308 enum { br_NONE = 0, br_BREAK, br_NEXT, br_MULTINEXT, br_RETURN };
3309 void    bincopy_relink(GEN C, GEN vi);
3310 GEN     bitprecision0(GEN x,long n);
3311 GEN     bitprecision00(GEN x,GEN n);
3312 GEN     break0(long n);
3313 GEN     call0(GEN fun, GEN args);
3314 GEN     closure_callgen0prec(GEN C, long prec);
3315 GEN     closure_callgen1(GEN C, GEN x);
3316 GEN     closure_callgen1prec(GEN C, GEN x, long prec);
3317 GEN     closure_callgen2(GEN C, GEN x, GEN y);
3318 GEN     closure_callgenall(GEN C, long n, ...);
3319 GEN     closure_callgenvec(GEN C, GEN args);
3320 GEN     closure_callgenvecdef(GEN C, GEN args, GEN def);
3321 GEN     closure_callgenvecdefprec(GEN C, GEN args, GEN def, long prec);
3322 GEN     closure_callgenvecprec(GEN C, GEN args, long prec);
3323 void    closure_callvoid1(GEN C, GEN x);
3324 long    closure_context(long start, long level);
3325 void    closure_disassemble(GEN n);
3326 void    closure_err(long level);
3327 GEN     closure_evalbrk(GEN C, long *status);
3328 GEN     closure_evalgen(GEN C);
3329 GEN     closure_evalnobrk(GEN C);
3330 GEN     closure_evalres(GEN C);
3331 void    closure_evalvoid(GEN C);
3332 const char * closure_func_err(void);
3333 GEN     closure_trapgen(GEN C, long numerr);
3334 GEN     copybin_unlink(GEN C);
3335 long    getlocalprec(long prec);
3336 long    getlocalbitprec(long bit);
3337 GEN     get_lex(long vn);
3338 long    get_localprec(void);
3339 long    get_localbitprec(void);
3340 GEN     gp_call(void *E, GEN x);
3341 GEN     gp_callprec(void *E, GEN x, long prec);
3342 GEN     gp_call2(void *E, GEN x, GEN y);
3343 long    gp_callbool(void *E, GEN x);
3344 long    gp_callvoid(void *E, GEN x);
3345 GEN     gp_eval(void *E, GEN x);
3346 long    gp_evalbool(void *E, GEN x);
3347 GEN     gp_evalprec(void *E, GEN x, long prec);
3348 GEN     gp_evalupto(void *E, GEN x);
3349 long    gp_evalvoid(void *E, GEN x);
3350 void    localprec(GEN p);
3351 void    localbitprec(GEN p);
3352 long    loop_break(void);
3353 GEN     next0(long n);
3354 GEN     pareval(GEN C);
3355 GEN     pari_self(void);
3356 GEN     parsum(GEN a, GEN b, GEN code);
3357 GEN     parvector(long n, GEN code);
3358 void    pop_lex(long n);
3359 void    pop_localprec(void);
3360 GEN     precision0(GEN x,long n);
3361 GEN     precision00(GEN x, GEN n);
3362 void    push_lex(GEN a, GEN C);
3363 void    push_localbitprec(long p);
3364 void    push_localprec(long p);
3365 GEN     return0(GEN x);
3366 void    set_lex(long vn, GEN x);
3367 
3368 /* forprime.c */
3369 
3370 int     forcomposite_init(forcomposite_t *C, GEN a, GEN b);
3371 GEN     forcomposite_next(forcomposite_t *C);
3372 GEN     forprime_next(forprime_t *T);
3373 int     forprime_init(forprime_t *T, GEN a, GEN b);
3374 int     forprimestep_init(forprime_t *T, GEN a, GEN b, GEN q);
3375 byteptr initprimes(ulong maxnum, long *lenp, ulong *lastp);
3376 void    initprimetable(ulong maxnum);
3377 ulong   init_primepointer_geq(ulong a, byteptr *pd);
3378 ulong   init_primepointer_gt(ulong a, byteptr *pd);
3379 ulong   init_primepointer_leq(ulong a, byteptr *pd);
3380 ulong   init_primepointer_lt(ulong a, byteptr *pd);
3381 ulong   maxprime(void);
3382 ulong   maxprimeN(void);
3383 void    maxprime_check(ulong c);
3384 void    pari_init_primes(ulong maxprime);
3385 ulong   u_forprime_next(forprime_t *T);
3386 int     u_forprime_init(forprime_t *T, ulong a, ulong b);
3387 void    u_forprime_restrict(forprime_t *T, ulong c);
3388 int     u_forprime_arith_init(forprime_t *T, ulong a, ulong b, ulong c, ulong q);
3389 
3390 /* FF.c */
3391 
3392 GEN     FF_1(GEN a);
3393 GEN     FF_Frobenius(GEN x, long e);
3394 GEN     FF_Z_Z_muldiv(GEN x, GEN y, GEN z);
3395 GEN     FF_Q_add(GEN x, GEN y);
3396 GEN     FF_Z_add(GEN a, GEN b);
3397 GEN     FF_Z_mul(GEN a, GEN b);
3398 GEN     FF_add(GEN a, GEN b);
3399 GEN     FF_charpoly(GEN x);
3400 GEN     FF_conjvec(GEN x);
3401 GEN     FF_div(GEN a, GEN b);
3402 GEN     FF_ellcard(GEN E);
3403 GEN     FF_ellcard_SEA(GEN E, long smallfact);
3404 GEN     FF_ellgens(GEN E);
3405 GEN     FF_ellgroup(GEN E, GEN *m);
3406 GEN     FF_elllog(GEN E, GEN P, GEN Q, GEN o);
3407 GEN     FF_ellmul(GEN E, GEN P, GEN n);
3408 GEN     FF_ellorder(GEN E, GEN P, GEN o);
3409 GEN     FF_elltwist(GEN E);
3410 GEN     FF_ellrandom(GEN E);
3411 GEN     FF_elltatepairing(GEN E, GEN P, GEN Q, GEN m);
3412 GEN     FF_ellweilpairing(GEN E, GEN P, GEN Q, GEN m);
3413 int     FF_equal(GEN a, GEN b);
3414 int     FF_equal0(GEN x);
3415 int     FF_equal1(GEN x);
3416 int     FF_equalm1(GEN x);
3417 long    FF_f(GEN x);
3418 GEN     FF_gen(GEN x);
3419 GEN     FF_inv(GEN a);
3420 long    FF_issquare(GEN x);
3421 long    FF_issquareall(GEN x, GEN *pt);
3422 long    FF_ispower(GEN x, GEN K, GEN *pt);
3423 GEN     FF_log(GEN a, GEN b, GEN o);
3424 GEN     FF_map(GEN m, GEN x);
3425 GEN     FF_minpoly(GEN x);
3426 GEN     FF_mod(GEN x);
3427 GEN     FF_mul(GEN a, GEN b);
3428 GEN     FF_mul2n(GEN a, long n);
3429 GEN     FF_neg(GEN a);
3430 GEN     FF_neg_i(GEN a);
3431 GEN     FF_norm(GEN x);
3432 GEN     FF_order(GEN x, GEN o);
3433 GEN     FF_p(GEN x);
3434 GEN     FF_p_i(GEN x);
3435 GEN     FF_pow(GEN x, GEN n);
3436 GEN     FF_primroot(GEN x, GEN *o);
3437 GEN     FF_q(GEN x);
3438 int     FF_samefield(GEN x, GEN y);
3439 GEN     FF_sqr(GEN a);
3440 GEN     FF_sqrt(GEN a);
3441 GEN     FF_sqrtn(GEN x, GEN n, GEN *zetan);
3442 GEN     FF_sub(GEN x, GEN y);
3443 GEN     FF_to_F2xq(GEN x);
3444 GEN     FF_to_F2xq_i(GEN x);
3445 GEN     FF_to_Flxq(GEN x);
3446 GEN     FF_to_Flxq_i(GEN x);
3447 GEN     FF_to_FpXQ(GEN x);
3448 GEN     FF_to_FpXQ_i(GEN x);
3449 GEN     FF_trace(GEN x);
3450 long    FF_var(GEN x);
3451 GEN     FF_zero(GEN a);
3452 GEN     FFM_FFC_invimage(GEN M, GEN C, GEN ff);
3453 GEN     FFM_FFC_gauss(GEN M, GEN C, GEN ff);
3454 GEN     FFM_FFC_mul(GEN M, GEN C, GEN ff);
3455 GEN     FFM_deplin(GEN M, GEN ff);
3456 GEN     FFM_det(GEN M, GEN ff);
3457 GEN     FFM_gauss(GEN M, GEN N, GEN ff);
3458 GEN     FFM_image(GEN M, GEN ff);
3459 GEN     FFM_indexrank(GEN M, GEN ff);
3460 GEN     FFM_inv(GEN M, GEN ff);
3461 GEN     FFM_invimage(GEN M, GEN N, GEN ff);
3462 GEN     FFM_ker(GEN M, GEN ff);
3463 GEN     FFM_mul(GEN M, GEN N, GEN ff);
3464 long    FFM_rank(GEN M, GEN ff);
3465 GEN     FFM_suppl(GEN M, GEN ff);
3466 GEN     FFX_add(GEN Pf, GEN Qf, GEN ff);
3467 GEN     FFX_ddf(GEN f, GEN x);
3468 GEN     FFX_degfact(GEN Pf, GEN ff);
3469 GEN     FFX_disc(GEN Pf, GEN ff);
3470 GEN     FFX_extgcd(GEN Pf, GEN Qf, GEN ff, GEN *pt_Uf, GEN *pt_Vf);
3471 GEN     FFX_factor(GEN f, GEN x);
3472 GEN     FFX_factor_squarefree(GEN f, GEN x);
3473 GEN     FFX_gcd(GEN Pf, GEN Qf, GEN ff);
3474 GEN     FFX_halfgcd(GEN Pf, GEN Qf, GEN ff);
3475 long    FFX_ispower(GEN Pf, long k, GEN ff, GEN *pt_r);
3476 GEN     FFX_mul(GEN Pf, GEN Qf, GEN ff);
3477 GEN     FFX_preimage(GEN x, GEN F, GEN y);
3478 GEN     FFX_preimagerel(GEN x, GEN F, GEN y);
3479 GEN     FFX_rem(GEN Pf, GEN Qf, GEN ff);
3480 GEN     FFX_resultant(GEN Pf, GEN Qf, GEN ff);
3481 GEN     FFX_roots(GEN f, GEN x);
3482 GEN     FFX_sqr(GEN Pf, GEN ff);
3483 GEN     FFXQ_inv(GEN Pf, GEN Qf, GEN ff);
3484 GEN     FFXQ_minpoly(GEN Pf, GEN Qf, GEN ff);
3485 GEN     FFXQ_mul(GEN Pf, GEN Qf, GEN Sf, GEN ff);
3486 GEN     FFXQ_sqr(GEN Pf, GEN Qf, GEN ff);
3487 GEN     FqX_to_FFX(GEN x, GEN ff);
3488 GEN     Fq_to_FF(GEN x, GEN ff);
3489 GEN     Z_FF_div(GEN a, GEN b);
3490 GEN     ffembed(GEN a, GEN b);
3491 GEN     ffextend(GEN a, GEN P, long v);
3492 GEN     fffrobenius(GEN m, long n);
3493 GEN     ffgen(GEN T, long v);
3494 GEN     ffinvmap(GEN m);
3495 GEN     fflog(GEN x, GEN g, GEN o);
3496 GEN     ffmap(GEN m, GEN x);
3497 GEN     ffmaprel(GEN m, GEN x);
3498 GEN     ffcompomap(GEN m, GEN n);
3499 GEN     fforder(GEN x, GEN o);
3500 GEN     ffprimroot(GEN x, GEN *o);
3501 GEN     ffrandom(GEN ff);
3502 int     Rg_is_FF(GEN c, GEN *ff);
3503 int     RgC_is_FFC(GEN x, GEN *ff);
3504 int     RgM_is_FFM(GEN x, GEN *ff);
3505 GEN     p_to_FF(GEN p, long v);
3506 GEN     Tp_to_FF(GEN T, GEN p);
3507 
3508 /* galconj.c */
3509 
3510 GEN     checkgal(GEN gal);
3511 GEN     checkgroup(GEN g, GEN *S);
3512 GEN     checkgroupelts(GEN gal);
3513 GEN     embed_disc(GEN r, long r1, long prec);
3514 GEN     embed_roots(GEN r, long r1);
3515 GEN     galois_group(GEN gal);
3516 GEN     galoisconj(GEN nf, GEN d);
3517 GEN     galoisconj0(GEN nf, long flag, GEN d, long prec);
3518 GEN     galoisconjclasses(GEN gal);
3519 GEN     galoisexport(GEN gal, long format);
3520 GEN     galoisfixedfield(GEN gal, GEN v, long flag, long y);
3521 GEN     galoisidentify(GEN gal);
3522 GEN     galoisinit(GEN nf, GEN den);
3523 GEN     galoisisabelian(GEN gal, long flag);
3524 long    galoisisnormal(GEN gal, GEN sub);
3525 GEN     galoispermtopol(GEN gal, GEN perm);
3526 GEN     galoissubgroups(GEN G);
3527 GEN     galoissubfields(GEN G, long flag, long v);
3528 long    numberofconjugates(GEN T, long pdepart);
3529 GEN     vandermondeinverse(GEN L, GEN T, GEN den, GEN prep);
3530 
3531 /* galois.c */
3532 
3533 GEN     polgalois(GEN x, long prec);
3534 
3535 /* galpol.c */
3536 
3537 GEN     galoisnbpol(long a);
3538 GEN     galoisgetgroup(long a, long b);
3539 GEN     galoisgetname(long a, long b);
3540 GEN     galoisgetpol(long a, long b, long s);
3541 
3542 /* gen1.c */
3543 GEN     conj_i(GEN x);
3544 GEN     conjvec(GEN x,long prec);
3545 GEN     gadd(GEN x, GEN y);
3546 GEN     gaddsg(long x, GEN y);
3547 GEN     gconj(GEN x);
3548 GEN     gdiv(GEN x, GEN y);
3549 GEN     gdivgs(GEN x, long s);
3550 GEN     ginv(GEN x);
3551 GEN     gmul(GEN x, GEN y);
3552 GEN     gmul2n(GEN x, long n);
3553 GEN     gmulsg(long s, GEN y);
3554 GEN     gsqr(GEN x);
3555 GEN     gsub(GEN x, GEN y);
3556 GEN     gsubsg(long x, GEN y);
3557 GEN     mulcxI(GEN x);
3558 GEN     mulcxmI(GEN x);
3559 GEN     mulcxpowIs(GEN x, long k);
3560 GEN     Qdivii(GEN x1, GEN x2);
3561 GEN     Qdiviu(GEN x, ulong y);
3562 GEN     Qdivis(GEN x, long y);
3563 GEN     ser_normalize(GEN x);
3564 
3565 /* gen2.c */
3566 
3567 GEN     gassoc_proto(GEN f(GEN,GEN),GEN,GEN);
3568 GEN     map_proto_G(GEN f(GEN), GEN x);
3569 GEN     map_proto_lG(long f(GEN), GEN x);
3570 GEN     map_proto_lGL(long f(GEN,long), GEN x, long y);
3571 
3572 long    Q_lval(GEN x, ulong p);
3573 long    Q_lvalrem(GEN x, ulong p, GEN *y);
3574 long    Q_pval(GEN x, GEN p);
3575 long    Q_pvalrem(GEN x, GEN p, GEN *y);
3576 long    RgX_val(GEN x);
3577 long    RgX_valrem(GEN x, GEN *z);
3578 long    RgX_valrem_inexact(GEN x, GEN *Z);
3579 long    RgXV_maxdegree(GEN x);
3580 int     ZV_Z_dvd(GEN v, GEN p);
3581 long    ZV_pval(GEN x, GEN p);
3582 long    ZV_pvalrem(GEN x, GEN p, GEN *px);
3583 long    ZV_lval(GEN x, ulong p);
3584 long    ZV_lvalrem(GEN x, ulong p, GEN *px);
3585 long    ZX_lvalrem(GEN x, ulong p, GEN *px);
3586 long    ZX_lval(GEN x, ulong p);
3587 long    ZX_pval(GEN x, GEN p);
3588 long    ZX_pvalrem(GEN x, GEN p, GEN *px);
3589 long    Z_lval(GEN n, ulong p);
3590 long    Z_lvalrem(GEN n, ulong p, GEN *py);
3591 long    Z_lvalrem_stop(GEN *n, ulong p, int *stop);
3592 long    Z_pval(GEN n, GEN p);
3593 long    Z_pvalrem(GEN x, GEN p, GEN *py);
3594 GEN     cgetp(GEN x);
3595 GEN     cvstop2(long s, GEN y);
3596 GEN     cvtop(GEN x, GEN p, long l);
3597 GEN     cvtop2(GEN x, GEN y);
3598 int     cx_approx_equal(GEN a, GEN b);
3599 GEN     gabs(GEN x, long prec);
3600 void    gaffect(GEN x, GEN y);
3601 void    gaffsg(long s, GEN x);
3602 int     gcmp(GEN x, GEN y);
3603 int     gequal0(GEN x);
3604 int     gequal1(GEN x);
3605 int     gequalX(GEN x);
3606 int     gequalm1(GEN x);
3607 int     gcmpsg(long x, GEN y);
3608 GEN     gcvtop(GEN x, GEN p, long r);
3609 int     gequal(GEN x, GEN y);
3610 int     gequalsg(long s, GEN x);
3611 long    gexpo(GEN x);
3612 long    gexpo_safe(GEN x);
3613 GEN     gpexponent(GEN x);
3614 GEN     gpvaluation(GEN x, GEN p);
3615 long    gvaluation(GEN x, GEN p);
3616 int     gidentical(GEN x, GEN y);
3617 long    glength(GEN x);
3618 GEN     gmax(GEN x, GEN y);
3619 GEN     gmaxgs(GEN x, long y);
3620 GEN     gmin(GEN x, GEN y);
3621 GEN     gmings(GEN x, long y);
3622 GEN     gneg(GEN x);
3623 GEN     gneg_i(GEN x);
3624 int     gsigne(GEN x);
3625 GEN     gtolist(GEN x);
3626 long    gtolong(GEN x);
3627 int     lexcmp(GEN x, GEN y);
3628 GEN     listinsert(GEN list, GEN object, long index);
3629 void    listpop(GEN L, long index);
3630 void    listpop0(GEN L, long index);
3631 GEN     listput(GEN list, GEN object, long index);
3632 GEN     listput0(GEN list, GEN object, long index);
3633 void    listsort(GEN list, long flag);
3634 GEN     matsize(GEN x);
3635 GEN     mklist(void);
3636 GEN     mklist_typ(long t);
3637 GEN     mklistcopy(GEN x);
3638 GEN     mkmap(void);
3639 GEN     normalize(GEN x);
3640 GEN     normalizepol(GEN x);
3641 GEN     normalizepol_approx(GEN x, long lx);
3642 GEN     normalizepol_lg(GEN x, long lx);
3643 ulong   padic_to_Fl(GEN x, ulong p);
3644 GEN     padic_to_Fp(GEN x, GEN Y);
3645 GEN     quadtofp(GEN x, long l);
3646 long    sizedigit(GEN x);
3647 long    u_lval(ulong x, ulong p);
3648 long    u_lvalrem(ulong x, ulong p, ulong *py);
3649 long    u_lvalrem_stop(ulong *n, ulong p, int *stop);
3650 long    u_pval(ulong x, GEN p);
3651 long    u_pvalrem(ulong x, GEN p, ulong *py);
3652 long    vecindexmax(GEN x);
3653 long    vecindexmin(GEN x);
3654 GEN     vecmax0(GEN x, GEN *pv);
3655 GEN     vecmax(GEN x);
3656 GEN     vecmin0(GEN x, GEN *pv);
3657 GEN     vecmin(GEN x);
3658 long    z_lval(long s, ulong p);
3659 long    z_lvalrem(long s, ulong p, long *py);
3660 long    z_pval(long n, GEN p);
3661 long    z_pvalrem(long n, GEN p, long *py);
3662 long    zx_lval(GEN f, long p);
3663 
3664 /* Ser.c */
3665 
3666 GEN     RgX_to_ser(GEN x, long l);
3667 GEN     RgX_to_ser_inexact(GEN x, long l);
3668 GEN     gtoser(GEN x, long v, long d);
3669 GEN     gtoser_prec(GEN x, long v, long d);
3670 GEN     rfrac_to_ser(GEN x, long l);
3671 GEN     rfracrecip_to_ser_absolute(GEN R, long l);
3672 long    rfracrecip(GEN *pn, GEN *pd);
3673 GEN     scalarser(GEN x, long v, long prec);
3674 GEN     sertoser(GEN x, long prec);
3675 GEN     toser_i(GEN x);
3676 GEN     RgV_to_ser(GEN x, long v, long l);
3677 GEN     Ser0(GEN x, long v, GEN d, long prec);
3678 
3679 /* gen3.c */
3680 
3681 GEN     padic_to_Q(GEN x);
3682 GEN     padic_to_Q_shallow(GEN x);
3683 GEN     QpV_to_QV(GEN v);
3684 GEN     RgM_mulreal(GEN x, GEN y);
3685 GEN     RgX_cxeval(GEN T, GEN u, GEN ui);
3686 GEN     RgX_deflate_max(GEN x0, long *m);
3687 long    RgX_deflate_order(GEN x);
3688 long    ZX_deflate_order(GEN x);
3689 GEN     ZX_deflate_max(GEN x, long *m);
3690 long    RgX_degree(GEN x,long v);
3691 GEN     RgX_integ(GEN x);
3692 GEN     ceil_safe(GEN x);
3693 GEN     ceilr(GEN x);
3694 GEN     centerlift(GEN x);
3695 GEN     centerlift0(GEN x,long v);
3696 GEN     compo(GEN x, long n);
3697 GEN     deg1pol(GEN x1, GEN x0,long v);
3698 GEN     deg1pol_shallow(GEN x1, GEN x0,long v);
3699 GEN     deg2pol_shallow(GEN x2, GEN x1, GEN x0,long v);
3700 long    degree(GEN x);
3701 GEN     denom(GEN x);
3702 GEN     denom_i(GEN x);
3703 GEN     denominator(GEN x, GEN D);
3704 GEN     deriv(GEN x, long v);
3705 GEN     derivn(GEN x, long n, long v);
3706 GEN     derivser(GEN x);
3707 GEN     diffop(GEN x, GEN v, GEN dv);
3708 GEN     diffop0(GEN x, GEN v, GEN dv, long n);
3709 GEN     diviiround(GEN x, GEN y);
3710 GEN     divrem(GEN x, GEN y, long v);
3711 GEN     floor_safe(GEN x);
3712 GEN     gceil(GEN x);
3713 GEN     gcvtoi(GEN x, long *e);
3714 GEN     gdeflate(GEN x, long v, long d);
3715 GEN     gdivent(GEN x, GEN y);
3716 GEN     gdiventgs(GEN x, long y);
3717 GEN     gdiventsg(long x, GEN y);
3718 GEN     gdiventres(GEN x, GEN y);
3719 GEN     gdivmod(GEN x, GEN y, GEN *pr);
3720 GEN     gdivround(GEN x, GEN y);
3721 int     gdvd(GEN x, GEN y);
3722 GEN     geq(GEN x, GEN y);
3723 GEN     geval(GEN x);
3724 GEN     gfloor(GEN x);
3725 GEN     gtrunc2n(GEN x, long s);
3726 GEN     gfrac(GEN x);
3727 GEN     gge(GEN x, GEN y);
3728 GEN     ggrando(GEN x, long n);
3729 GEN     ggt(GEN x, GEN y);
3730 GEN     gimag(GEN x);
3731 GEN     gisexactzero(GEN g);
3732 GEN     gle(GEN x, GEN y);
3733 GEN     glt(GEN x, GEN y);
3734 GEN     gmod(GEN x, GEN y);
3735 GEN     gmodgs(GEN x, long y);
3736 GEN     gmodsg(long x, GEN y);
3737 GEN     gmodulo(GEN x,GEN y);
3738 GEN     gmodulsg(long x, GEN y);
3739 GEN     gmodulss(long x, long y);
3740 GEN     gne(GEN x, GEN y);
3741 GEN     gnot(GEN x);
3742 GEN     gpolvar(GEN y);
3743 GEN     gppadicprec(GEN x, GEN p);
3744 GEN     gppoldegree(GEN x, long v);
3745 long    gprecision(GEN x);
3746 GEN     gpserprec(GEN x, long v);
3747 GEN     greal(GEN x);
3748 GEN     grndtoi(GEN x, long *e);
3749 GEN     ground(GEN x);
3750 GEN     gshift(GEN x, long n);
3751 GEN     gsubst(GEN x, long v, GEN y);
3752 GEN     gsubstpol(GEN x, GEN v, GEN y);
3753 GEN     gsubstvec(GEN x, GEN v, GEN y);
3754 GEN     gtocol(GEN x);
3755 GEN     gtocol0(GEN x, long n);
3756 GEN     gtocolrev(GEN x);
3757 GEN     gtocolrev0(GEN x, long n);
3758 GEN     gtopoly(GEN x, long v);
3759 GEN     gtopolyrev(GEN x, long v);
3760 GEN     gtovec(GEN x);
3761 GEN     gtovec0(GEN x, long n);
3762 GEN     gtovecrev(GEN x);
3763 GEN     gtovecrev0(GEN x, long n);
3764 GEN     gtovecsmall(GEN x);
3765 GEN     gtovecsmall0(GEN x, long n);
3766 GEN     gtrunc(GEN x);
3767 long    gvar(GEN x);
3768 long    gvar2(GEN x);
3769 GEN     hqfeval(GEN q, GEN x);
3770 GEN     imag_i(GEN x);
3771 GEN     integ(GEN x, long v);
3772 GEN     integser(GEN x);
3773 GEN     ser_inv(GEN b);
3774 int     iscomplex(GEN x);
3775 int     isexactzero(GEN g);
3776 int     isrationalzeroscalar(GEN g);
3777 int     isinexact(GEN x);
3778 int     isinexactreal(GEN x);
3779 int     isint(GEN n, GEN *ptk);
3780 int     isrationalzero(GEN g);
3781 int     issmall(GEN n, long *ptk);
3782 GEN     lift(GEN x);
3783 GEN     lift_shallow(GEN x);
3784 GEN     lift0(GEN x,long v);
3785 GEN     liftall(GEN x);
3786 GEN     liftall_shallow(GEN x);
3787 GEN     liftint(GEN x);
3788 GEN     liftint_shallow(GEN x);
3789 GEN     liftpol(GEN x);
3790 GEN     liftpol_shallow(GEN x);
3791 GEN     mkcoln(long n, ...);
3792 GEN     mkintn(long n, ...);
3793 GEN     mkpoln(long n, ...);
3794 GEN     mkvecn(long n, ...);
3795 GEN     mkvecsmalln(long n, ...);
3796 GEN     modRr_safe(GEN x, GEN y);
3797 GEN     mulreal(GEN x, GEN y);
3798 GEN     numer(GEN x);
3799 GEN     numer_i(GEN x);
3800 GEN     numerator(GEN x, GEN D);
3801 long    padicprec(GEN x, GEN p);
3802 long    padicprec_relative(GEN x);
3803 GEN     polcoef(GEN x, long n, long v);
3804 GEN     polcoef_i(GEN x, long n, long v);
3805 long    poldegree(GEN x,long v);
3806 GEN     poleval(GEN x, GEN y);
3807 GEN     pollead(GEN x,long v);
3808 long    precision(GEN x);
3809 GEN     qf_apply_RgM(GEN q, GEN M);
3810 GEN     qf_apply_ZM(GEN q, GEN M);
3811 GEN     qfb_apply_ZM(GEN q, GEN M);
3812 GEN     qfbil(GEN x, GEN y, GEN q);
3813 GEN     qfeval(GEN q, GEN x);
3814 GEN     qfeval0(GEN q, GEN x, GEN y);
3815 GEN     qfevalb(GEN q, GEN x, GEN y);
3816 GEN     qfnorm(GEN x, GEN q);
3817 GEN     real_i(GEN x);
3818 GEN     round0(GEN x, GEN *pte);
3819 GEN     roundr(GEN x);
3820 GEN     roundr_safe(GEN x);
3821 GEN     scalarpol(GEN x, long v);
3822 GEN     scalarpol_shallow(GEN x, long v);
3823 GEN     ser_unscale(GEN P, GEN h);
3824 long    serprec(GEN x, long v);
3825 GEN     serreverse(GEN x);
3826 GEN     simplify(GEN x);
3827 GEN     simplify_shallow(GEN x);
3828 GEN     tayl(GEN x, long v, long precdl);
3829 GEN     trunc0(GEN x, GEN *pte);
3830 GEN     uu32toi(ulong a, ulong b);
3831 GEN     uu32toineg(ulong a, ulong b);
3832 GEN     vars_sort_inplace(GEN z);
3833 GEN     vars_to_RgXV(GEN h);
3834 GEN     variables_vecsmall(GEN x);
3835 GEN     variables_vec(GEN x);
3836 
3837 /* genus2red.c */
3838 
3839 GEN     genus2red(GEN PQ, GEN p);
3840 
3841 /* groupid.c */
3842 
3843 long    group_ident(GEN G, GEN S);
3844 long    group_ident_trans(GEN G, GEN S);
3845 
3846 /* hash.c */
3847 
3848 hashtable *hash_create_ulong(ulong s, long stack);
3849 hashtable *hash_create_str(ulong s, long stack);
3850 hashtable *hash_create(ulong minsize, ulong (*hash)(void*), int (*eq)(void*,void*), int use_stack);
3851 void    hash_dbg(hashtable *h);
3852 GEN     hash_haskey_GEN(hashtable *h, void *k);
3853 int     hash_haskey_long(hashtable *h, void *k, long *v);
3854 void    hash_init(hashtable *h, ulong minsize, ulong (*hash)(void*),
3855                                 int (*eq)(void*,void*), int use_stack);
3856 void    hash_init_GEN(hashtable *h, ulong minsize, int (*eq)(GEN,GEN), int use_stack);
3857 void    hash_init_ulong(hashtable *h, ulong minsize, int use_stack);
3858 void    hash_insert(hashtable *h, void *k, void *v);
3859 void    hash_insert_long(hashtable *h, void *k, long v);
3860 void    hash_insert2(hashtable *h, void *k, void *v, ulong hash);
3861 GEN     hash_keys(hashtable *h);
3862 GEN     hash_values(hashtable *h);
3863 hashentry *hash_search(hashtable *h, void *k);
3864 hashentry *hash_search2(hashtable *h, void *k, ulong hash);
3865 hashentry *hash_select(hashtable *h, void *k, void *E,int(*select)(void *,hashentry *));
3866 hashentry *hash_remove(hashtable *h, void *k);
3867 hashentry *hash_remove_select(hashtable *h, void *k, void *E, int (*select)(void*,hashentry*));
3868 void    hash_destroy(hashtable *h);
3869 ulong   hash_GEN(GEN x);
3870 ulong   hash_zv(GEN x);
3871 
3872 /* hyperell.c */
3873 
3874 GEN     hyperellpadicfrobenius0(GEN x, GEN p, long e);
3875 GEN     hyperellpadicfrobenius(GEN x, ulong p, long e);
3876 GEN     hyperellcharpoly(GEN x);
3877 GEN     nfhyperellpadicfrobenius(GEN H, GEN T, ulong p, long n);
3878 
3879 /* hypergeom.c */
3880 GEN     hypergeom(GEN vnum, GEN vden, GEN z, long prec);
3881 GEN     airy(GEN z, long prec);
3882 
3883 /* hnf_snf.c */
3884 
3885 GEN     RgM_hnfall(GEN A, GEN *pB, long remove);
3886 GEN     ZM_hnf(GEN x);
3887 GEN     ZM_hnf_knapsack(GEN x);
3888 GEN     ZM_hnfall(GEN A, GEN *ptB, long remove);
3889 GEN     ZM_hnfall_i(GEN A, GEN *ptB, long remove);
3890 GEN     ZM_hnfcenter(GEN M);
3891 GEN     ZM_hnflll(GEN A, GEN *ptB, int remove);
3892 GEN     ZV_extgcd(GEN A);
3893 GEN     ZV_snfall(GEN D, GEN *pU, GEN *pV);
3894 GEN     ZV_snf_group(GEN d, GEN *newU, GEN *newUi);
3895 void    ZV_snf_trunc(GEN D);
3896 GEN     ZM_hnfmod(GEN x, GEN d);
3897 GEN     ZM_hnfmodall(GEN x, GEN dm, long flag);
3898 GEN     ZM_hnfmodall_i(GEN x, GEN dm, long flag);
3899 GEN     ZM_hnfmodid(GEN x, GEN d);
3900 GEN     ZM_hnfmodprime(GEN x, GEN p);
3901 GEN     ZM_hnfperm(GEN A, GEN *ptU, GEN *ptperm);
3902 void    ZM_snfclean(GEN d, GEN u, GEN v);
3903 GEN     ZM_snf(GEN x);
3904 GEN     ZM_snf_group(GEN H, GEN *newU, GEN *newUi);
3905 GEN     ZM_snfall(GEN x, GEN *ptU, GEN *ptV);
3906 GEN     ZM_snfall_i(GEN x, GEN *ptU, GEN *ptV, long flag);
3907 GEN     zlm_echelon(GEN x, long early_abort, ulong p, ulong pm);
3908 GEN     ZpM_echelon(GEN x, long early_abort, GEN p, GEN pm);
3909 GEN     gsmith(GEN x);
3910 GEN     gsmithall(GEN x);
3911 GEN     hnf(GEN x);
3912 GEN     hnf_divscale(GEN A, GEN B,GEN t);
3913 GEN     hnf_invscale(GEN A, GEN t);
3914 GEN     hnf_solve(GEN A, GEN B);
3915 GEN     hnf_invimage(GEN A, GEN b);
3916 GEN     hnfall(GEN x);
3917 int     hnfdivide(GEN A, GEN B);
3918 GEN     hnflll(GEN x);
3919 GEN     hnfmerge_get_1(GEN A, GEN B);
3920 GEN     hnfmod(GEN x, GEN d);
3921 GEN     hnfmodid(GEN x,GEN p);
3922 GEN     hnfperm(GEN x);
3923 GEN     matfrobenius(GEN M, long flag, long v);
3924 GEN     mathnf0(GEN x, long flag);
3925 GEN     matsnf0(GEN x, long flag);
3926 GEN     smith(GEN x);
3927 GEN     smithall(GEN x);
3928 GEN     smithclean(GEN z);
3929 
3930 /* ifactor1.c */
3931 
3932 GEN     Z_ECM(GEN N, long rounds, long seed, ulong B1);
3933 GEN     Z_factor(GEN n);
3934 GEN     Z_factor_limit(GEN n, ulong all);
3935 GEN     Z_factor_until(GEN n, GEN limit);
3936 long    Z_issmooth(GEN m, ulong lim);
3937 GEN     Z_issmooth_fact(GEN m, ulong lim);
3938 long    Z_issquarefree(GEN x);
3939 GEN     Z_pollardbrent(GEN n, long rounds, long seed);
3940 GEN     absZ_factor(GEN n);
3941 GEN     absZ_factor_limit(GEN n, ulong all);
3942 GEN     absZ_factor_limit_strict(GEN n, ulong all, GEN *pU);
3943 long    bigomega(GEN n);
3944 long    bigomegau(ulong n);
3945 GEN     core(GEN n);
3946 ulong   coreu(ulong n);
3947 ulong   coreu_fact(GEN f);
3948 GEN     eulerphi(GEN n);
3949 ulong   eulerphiu(ulong n);
3950 ulong   eulerphiu_fact(GEN f);
3951 GEN     factorint(GEN n, long flag);
3952 GEN     factoru(ulong n);
3953 int     ifac_isprime(GEN x);
3954 int     ifac_next(GEN *part, GEN *p, long *e);
3955 int     ifac_read(GEN part, GEN *p, long *e);
3956 void    ifac_skip(GEN part);
3957 GEN     ifac_start(GEN n, int moebius);
3958 int     is_357_power(GEN x, GEN *pt, ulong *mask);
3959 int     is_pth_power(GEN x, GEN *pt, forprime_t *T, ulong cutoffbits);
3960 long    ispowerful(GEN n);
3961 long    issquarefree(GEN x);
3962 long    istotient(GEN n, GEN *px);
3963 long    moebius(GEN n);
3964 long    moebiusu(ulong n);
3965 long    moebiusu_fact(GEN f);
3966 GEN     nextprime(GEN n);
3967 GEN     numdiv(GEN n);
3968 long    numdivu(long N);
3969 long    numdivu_fact(GEN fa);
3970 long    omega(GEN n);
3971 long    omegau(ulong n);
3972 GEN     precprime(GEN n);
3973 ulong   radicalu(ulong n);
3974 GEN     sumdiv(GEN n);
3975 GEN     sumdivk(GEN n,long k);
3976 ulong   tridiv_bound(GEN n);
3977 int     uis_357_power(ulong x, ulong *pt, ulong *mask);
3978 int     uis_357_powermod(ulong x, ulong *mask);
3979 long    uissquarefree(ulong n);
3980 long    uissquarefree_fact(GEN f);
3981 ulong   unextprime(ulong n);
3982 ulong   uprecprime(ulong n);
3983 GEN     vecfactorsquarefreeu(ulong a, ulong b);
3984 GEN     vecfactorsquarefreeu_coprime(ulong a, ulong b, GEN P);
3985 GEN     vecfactoru_i(ulong a, ulong b);
3986 GEN     vecfactoru(ulong a, ulong b);
3987 GEN     vecfactoroddu_i(ulong a, ulong b);
3988 GEN     vecfactoroddu(ulong a, ulong b);
3989 GEN     vecsquarefreeu(ulong a, ulong b);
3990 
3991 /* init.c */
3992 
3993 int     chk_gerepileupto(GEN x);
3994 GENbin* copy_bin(GEN x);
3995 GENbin* copy_bin_canon(GEN x);
3996 void    dbg_gerepile(pari_sp av);
3997 void    dbg_gerepileupto(GEN q);
3998 GEN     errname(GEN err);
3999 GEN     gclone(GEN x);
4000 GEN     gcloneref(GEN x);
4001 void    gclone_refc(GEN x);
4002 GEN     gcopy(GEN x);
4003 GEN     gcopy_avma(GEN x, pari_sp *AVMA);
4004 GEN     gcopy_lg(GEN x, long lx);
4005 GEN     gerepile(pari_sp ltop, pari_sp lbot, GEN q);
4006 void    gerepileallsp(pari_sp av, pari_sp tetpil, int n, ...);
4007 void    gerepilecoeffssp(pari_sp av, pari_sp tetpil, long *g, int n);
4008 void    gerepilemanysp(pari_sp av, pari_sp tetpil, GEN* g[], int n);
4009 GEN     getheap(void);
4010 void    gp_context_save(struct gp_context* rec);
4011 void    gp_context_restore(struct gp_context* rec);
4012 long    gsizeword(GEN x);
4013 long    gsizebyte(GEN x);
4014 void    gunclone(GEN x);
4015 void    gunclone_deep(GEN x);
4016 GEN     listcopy(GEN x);
4017 GEN     listinit(GEN x);
4018 void    msgtimer(const char *format, ...);
4019 long    name_numerr(const char *s);
4020 void    new_chunk_resize(size_t x);
4021 GEN     newblock(size_t n);
4022 const char * numerr_name(long errnum);
4023 GEN     obj_check(GEN S, long K);
4024 GEN     obj_checkbuild(GEN S, long tag, GEN (*build)(GEN));
4025 GEN     obj_checkbuild_padicprec(GEN S, long tag, GEN (*build)(GEN,long), long prec);
4026 GEN     obj_checkbuild_realprec(GEN S, long tag, GEN (*build)(GEN,long), long prec);
4027 GEN     obj_checkbuild_prec(GEN S, long tag, GEN (*build)(GEN,long), long (*pr)(GEN), long prec);
4028 void    obj_free(GEN S);
4029 GEN     obj_init(long d, long n);
4030 GEN     obj_insert(GEN S, long K, GEN O);
4031 GEN     obj_insert_shallow(GEN S, long K, GEN O);
4032 GEN     obj_reinit(GEN S);
4033 void    (*os_signal(int sig, void (*f)(int)))(int);
4034 void    pari_add_function(entree *ep);
4035 void    pari_add_module(entree *ep);
4036 void    pari_add_defaults_module(entree *ep);
4037 void    pari_close(void);
4038 void    pari_close_opts(ulong init_opts);
4039 GEN     pari_compile_str(const char *lex);
4040 int     pari_daemon(void);
4041 void    pari_err(int numerr, ...);
4042 GEN     pari_err_last(void);
4043 char *  pari_err2str(GEN err);
4044 void    pari_init_opts(size_t parisize, ulong maxprime, ulong init_opts);
4045 void    pari_init(size_t parisize, ulong maxprime);
4046 void    pari_stackcheck_init(void *pari_stack_base);
4047 void    pari_sighandler(int sig);
4048 void    pari_sig_init(void (*f)(int));
4049 void    pari_thread_alloc(struct pari_thread *t, size_t s, GEN arg);
4050 void    pari_thread_close(void);
4051 void    pari_thread_free(struct pari_thread *t);
4052 void    pari_thread_init(void);
4053 GEN     pari_thread_start(struct pari_thread *t);
4054 void    pari_thread_valloc(struct pari_thread *t, size_t s, size_t v, GEN arg);
4055 GEN     pari_version(void);
4056 void    pari_warn(int numerr, ...);
4057 void    paristack_newrsize(ulong newsize);
4058 void    paristack_resize(ulong newsize);
4059 void    paristack_setsize(size_t rsize, size_t vsize);
4060 void    parivstack_resize(ulong newsize);
4061 void    parivstack_reset(void);
4062 void    shiftaddress(GEN x, long dec);
4063 void    shiftaddress_canon(GEN x, long dec);
4064 long    timer(void);
4065 long    timer_delay(pari_timer *T);
4066 long    timer_get(pari_timer *T);
4067 void    timer_printf(pari_timer *T, const char *format, ...);
4068 void    timer_start(pari_timer *T);
4069 long    timer2(void);
4070 GEN     trap0(const char *e, GEN f, GEN r);
4071 void    traverseheap( void(*f)(GEN, void *), void *data );
4072 void    walltimer_start(pari_timer *ti);
4073 long    walltimer_delay(pari_timer *ti);
4074 long    walltimer_get(pari_timer *ti);
4075 
4076 /* intnum.c */
4077 
4078 GEN     contfraceval(GEN CF, GEN t, long nlim);
4079 GEN     contfracinit(GEN M, long lim);
4080 GEN     intcirc(void *E, GEN (*eval) (void *, GEN), GEN a, GEN R, GEN tab, long prec);
4081 GEN     intfuncinit(void *E, GEN (*eval) (void *, GEN), GEN a, GEN b, long m, long prec);
4082 GEN     intnum(void *E, GEN (*eval) (void *, GEN), GEN a, GEN b, GEN tab, long prec);
4083 GEN     intnumgauss(void *E, GEN (*eval)(void*, GEN), GEN a, GEN b, GEN tab, long prec);
4084 GEN     intnumgaussinit(long n, long prec);
4085 GEN     intnuminit(GEN a, GEN b, long m, long prec);
4086 GEN     intnumromb(void *E, GEN (*eval)(void *, GEN), GEN a, GEN b, long flag, long prec);
4087 GEN     intnumromb_bitprec(void *E, GEN (*eval)(void *, GEN), GEN a, GEN b, long flag, long bit);
4088 GEN     prodeulerrat(GEN F, GEN s, long a, long prec);
4089 GEN     prodnumrat(GEN F, long a, long prec);
4090 GEN     quodif(GEN M, long n);
4091 GEN     sumeulerrat(GEN F, GEN s, long a, long prec);
4092 GEN     sumnum(void *E, GEN (*eval)(void*, GEN), GEN a, GEN tab, long prec);
4093 GEN     sumnumap(void *E, GEN (*eval)(void*,GEN), GEN a, GEN tab, long prec);
4094 GEN     sumnumapinit(GEN fast, long prec);
4095 GEN     sumnuminit(GEN fast, long prec);
4096 GEN     sumnumlagrangeinit(GEN al, GEN c1, long prec);
4097 GEN     sumnumlagrange(void *E, GEN (*eval)(void*,GEN,long), GEN a, GEN tab, long prec);
4098 GEN     sumnummonien(void *E, GEN (*eval)(void*, GEN), GEN a, GEN tab, long prec);
4099 GEN     sumnummonieninit(GEN asymp, GEN w, GEN n0, long prec);
4100 GEN     sumnumrat(GEN F, GEN a, long prec);
4101 
4102 /* krasner.c */
4103 
4104 GEN     padicfields0(GEN p, GEN n, long flag);
4105 GEN     padicfields(GEN p, long m, long d, long flag);
4106 
4107 /* kummer.c */
4108 
4109 GEN     bnrclassfield(GEN bnr, GEN subgroup, long flag, long prec);
4110 GEN     rnfkummer(GEN bnr, GEN subgroup, long prec);
4111 
4112 /* lfun.c */
4113 
4114 long    is_linit(GEN data);
4115 GEN     ldata_get_an(GEN ldata);
4116 GEN     ldata_get_dual(GEN ldata);
4117 GEN     ldata_get_gammavec(GEN ldata);
4118 long    ldata_get_degree(GEN ldata);
4119 GEN     ldata_get_k(GEN ldata);
4120 GEN     ldata_get_k1(GEN ldata);
4121 GEN     ldata_get_conductor(GEN ldata);
4122 GEN     ldata_get_rootno(GEN ldata);
4123 GEN     ldata_get_residue(GEN ldata);
4124 long    ldata_get_type(GEN ldata);
4125 long    ldata_isreal(GEN ldata);
4126 long    linit_get_type(GEN linit);
4127 GEN     linit_get_ldata(GEN linit);
4128 GEN     linit_get_tech(GEN linit);
4129 GEN     lfun_get_domain(GEN tech);
4130 GEN     lfun_get_dom(GEN tech);
4131 long    lfun_get_bitprec(GEN tech);
4132 GEN     lfun_get_factgammavec(GEN tech);
4133 GEN     lfun_get_step(GEN tech);
4134 GEN     lfun_get_pol(GEN tech);
4135 GEN     lfun_get_Residue(GEN tech);
4136 GEN     lfun_get_k2(GEN tech);
4137 GEN     lfun_get_w2(GEN tech);
4138 GEN     lfun_get_expot(GEN tech);
4139 long    lfun_get_bitprec(GEN tech);
4140 GEN     lfun(GEN ldata, GEN s, long bitprec);
4141 GEN     lfun0(GEN ldata, GEN s, long der, long bitprec);
4142 GEN     lfunan(GEN ldata, long L, long prec);
4143 long    lfuncheckfeq(GEN data, GEN t0, long bitprec);
4144 GEN     lfunconductor(GEN data, GEN maxcond, long flag, long bitprec);
4145 GEN     lfuncost(GEN lmisc, GEN dom, long der, long bitprec);
4146 GEN     lfuncost0(GEN L, GEN dom, long der, long bitprec);
4147 GEN     lfuncreate(GEN obj);
4148 GEN     lfundual(GEN L, long bitprec);
4149 GEN     lfunhardy(GEN ldata, GEN t, long bitprec);
4150 GEN     lfuninit(GEN ldata, GEN dom, long der, long bitprec);
4151 GEN     lfuninit0(GEN ldata, GEN dom, long der, long bitprec);
4152 GEN     lfuninit_make(long t, GEN ldata, GEN tech, GEN domain);
4153 GEN     lfunlambda(GEN ldata, GEN s, long bitprec);
4154 GEN     lfunlambda0(GEN ldata, GEN s, long der, long bitprec);
4155 GEN     lfunmisc_to_ldata(GEN ldata);
4156 GEN     lfunmisc_to_ldata_shallow(GEN ldata);
4157 GEN     lfunmisc_to_ldata_shallow_i(GEN ldata);
4158 long    lfunorderzero(GEN ldata, long m, long bitprec);
4159 GEN     lfunprod_get_fact(GEN tech);
4160 GEN     lfunrootno(GEN data, long bitprec);
4161 GEN     lfunrootres(GEN data, long bitprec);
4162 GEN     lfunrtopoles(GEN r);
4163 GEN     lfunshift(GEN ldata, GEN s, long flag, long bitprec);
4164 GEN     lfuntwist(GEN ldata1, GEN ldata2, long bitprec);
4165 GEN     lfuntheta(GEN data, GEN t, long m, long bitprec);
4166 long    lfunthetacost0(GEN L, GEN tdom, long m, long bitprec);
4167 long    lfunthetacost(GEN ldata, GEN tdom, long m, long bitprec);
4168 GEN     lfunthetainit(GEN ldata, GEN tdom, long m, long bitprec);
4169 GEN     lfunthetacheckinit(GEN data, GEN tinf, long m, long bitprec);
4170 GEN     lfunzeros(GEN ldata, GEN lim, long divz, long bitprec);
4171 int     sdomain_isincl(double k, GEN dom, GEN dom0);
4172 GEN     theta_get_an(GEN tdata);
4173 GEN     theta_get_K(GEN tdata);
4174 GEN     theta_get_R(GEN tdata);
4175 long    theta_get_bitprec(GEN tdata);
4176 long    theta_get_m(GEN tdata);
4177 GEN     theta_get_tdom(GEN tdata);
4178 GEN     theta_get_isqrtN(GEN tdata);
4179 int     Vgaeasytheta(GEN Vga);
4180 GEN     znchargauss(GEN G, GEN chi, GEN a, long bitprec);
4181 
4182 /* lfunutils.c */
4183 
4184 GEN     dirzetak(GEN nf, GEN b);
4185 GEN     ellmoddegree(GEN e);
4186 GEN     eta_ZXn(long v, long L);
4187 GEN     eta_product_ZXn(GEN eta, long L);
4188 long    etaquotype(GEN *eta, GEN *pN, GEN *pk, GEN *CHI, long *pv, long *sd, long *cusp);
4189 GEN     galois_get_conj(GEN G); /* TODO move somewhere else? */
4190 GEN     ldata_vecan(GEN ldata, long L, long prec);
4191 GEN     ldata_newprec(GEN ldata, long prec);
4192 GEN     lfunabelianrelinit(GEN bnfabs, GEN bnf, GEN polrel, GEN dom, long der, long bitprec);
4193 GEN     lfunartin(GEN N, GEN G, GEN M, long o, long bitprec);
4194 GEN     lfundiv(GEN ldata1, GEN ldata2, long bitprec);
4195 GEN     lfunellmfpeters(GEN E, long bitprec);
4196 GEN     lfunetaquo(GEN eta);
4197 GEN     lfungenus2(GEN PS);
4198 GEN     lfunmfspec(GEN lmisc, long bitprec);
4199 GEN     lfunmul(GEN ldata1, GEN ldata2, long bitprec);
4200 GEN     lfunqf(GEN ldata, long prec);
4201 GEN     lfunsympow(GEN E, ulong m);
4202 GEN     lfunzetakinit(GEN pol, GEN dom, long der, long flag, long bitprec);
4203 long    qfiseven(GEN M);
4204 
4205 /* lfunquad */
4206 
4207 GEN lfunquadneg(long D, long k);
4208 GEN eulerfrac(long k);
4209 
4210 /* lll.c */
4211 
4212 GEN     ZM_lll_norms(GEN x, double D, long flag, GEN *B);
4213 GEN     kerint(GEN x);
4214 GEN     lll(GEN x);
4215 GEN     lllfp(GEN x, double D, long flag);
4216 GEN     lllgen(GEN x);
4217 GEN     lllgram(GEN x);
4218 GEN     lllgramgen(GEN x);
4219 GEN     lllgramint(GEN x);
4220 GEN     lllgramkerim(GEN x);
4221 GEN     lllgramkerimgen(GEN x);
4222 GEN     lllint(GEN x);
4223 GEN     lllintpartial(GEN mat);
4224 GEN     lllintpartial_inplace(GEN mat);
4225 GEN     lllkerim(GEN x);
4226 GEN     lllkerimgen(GEN x);
4227 GEN     matkerint0(GEN x,long flag);
4228 GEN     qflll0(GEN x, long flag);
4229 GEN     qflllgram0(GEN x, long flag);
4230 
4231 /* map.c */
4232 
4233 GEN     gtomap(GEN M);
4234 void    mapdelete(GEN T, GEN a);
4235 GEN     mapdomain(GEN T);
4236 GEN     mapdomain_shallow(GEN T);
4237 GEN     mapget(GEN T, GEN a);
4238 int     mapisdefined(GEN T, GEN a, GEN *pt_z);
4239 void    mapput(GEN T, GEN a, GEN b);
4240 GEN     maptomat(GEN T);
4241 GEN     maptomat_shallow(GEN T);
4242 
4243 /* matperm.c */
4244 GEN     matpermanent(GEN M);
4245 GEN     zm_permanent(GEN M);
4246 GEN     ZM_permanent(GEN M);
4247 
4248 /* mellininv.c */
4249 
4250 double  dbllambertW0(double a);
4251 double  dbllambertW_1(double a);
4252 double  dbllemma526(double a, double b, double c, double B);
4253 double  dblcoro526(double a, double c, double B);
4254 GEN     gammamellininv(GEN Vga, GEN s, long m, long bitprec);
4255 GEN     gammamellininvasymp(GEN Vga, long nlimmax, long m);
4256 GEN     gammamellininvinit(GEN Vga, long m, long bitprec);
4257 GEN     gammamellininvrt(GEN K, GEN s, long bitprec);
4258 
4259 /* members.c */
4260 
4261 GEN     member_a1(GEN x);
4262 GEN     member_a2(GEN x);
4263 GEN     member_a3(GEN x);
4264 GEN     member_a4(GEN x);
4265 GEN     member_a6(GEN x);
4266 GEN     member_area(GEN x);
4267 GEN     member_b2(GEN x);
4268 GEN     member_b4(GEN x);
4269 GEN     member_b6(GEN x);
4270 GEN     member_b8(GEN x);
4271 GEN     member_bid(GEN x);
4272 GEN     member_bnf(GEN x);
4273 GEN     member_c4(GEN x);
4274 GEN     member_c6(GEN x);
4275 GEN     member_clgp(GEN x);
4276 GEN     member_codiff(GEN x);
4277 GEN     member_cyc(GEN clg);
4278 GEN     member_diff(GEN x);
4279 GEN     member_disc(GEN x);
4280 GEN     member_e(GEN x);
4281 GEN     member_eta(GEN x);
4282 GEN     member_f(GEN x);
4283 GEN     member_fu(GEN x);
4284 GEN     member_gen(GEN x);
4285 GEN     member_group(GEN x);
4286 GEN     member_index(GEN x);
4287 GEN     member_j(GEN x);
4288 GEN     member_mod(GEN x);
4289 GEN     member_nf(GEN x);
4290 GEN     member_no(GEN clg);
4291 GEN     member_omega(GEN x);
4292 GEN     member_orders(GEN x);
4293 GEN     member_p(GEN x);
4294 GEN     member_pol(GEN x);
4295 GEN     member_polabs(GEN x);
4296 GEN     member_reg(GEN x);
4297 GEN     member_r1(GEN x);
4298 GEN     member_r2(GEN x);
4299 GEN     member_roots(GEN x);
4300 GEN     member_sign(GEN x);
4301 GEN     member_t2(GEN x);
4302 GEN     member_tate(GEN x);
4303 GEN     member_tu(GEN x);
4304 GEN     member_zk(GEN x);
4305 GEN     member_zkst(GEN bid);
4306 
4307 /* mftrace.c */
4308 enum { mf_NEW = 0, mf_CUSP, mf_OLD, mf_EISEN, mf_FULL };
4309 enum {
4310 /*leaves*/
4311   t_MF_CONST, t_MF_EISEN, t_MF_Ek, t_MF_DELTA, t_MF_ETAQUO, t_MF_ELL,
4312   t_MF_DIHEDRAL, t_MF_THETA, t_MF_TRACE, t_MF_NEWTRACE,
4313 /**/
4314   t_MF_MUL, t_MF_POW, t_MF_DIV, t_MF_BRACKET, t_MF_LINEAR, t_MF_LINEAR_BHN,
4315   t_MF_SHIFT, t_MF_DERIV, t_MF_DERIVE2, t_MF_TWIST, t_MF_HECKE,
4316   t_MF_BD,
4317 };
4318 
4319 GEN   MF_get_CHI(GEN mf);
4320 GEN   MF_get_M(GEN mf);
4321 GEN   MF_get_Mindex(GEN mf);
4322 GEN   MF_get_Minv(GEN mf);
4323 long  MF_get_N(GEN mf);
4324 GEN   MF_get_basis(GEN mf);
4325 long  MF_get_dim(GEN mf);
4326 GEN   MF_get_E(GEN mf);
4327 GEN   MF_get_fields(GEN mf);
4328 GEN   MF_get_gN(GEN mf);
4329 GEN   MF_get_gk(GEN mf);
4330 long  MF_get_k(GEN mf);
4331 GEN   MF_get_newforms(GEN mf);
4332 long  MF_get_r(GEN mf);
4333 long  MF_get_space(GEN mf);
4334 GEN   MF_get_S(GEN mf);
4335 GEN   MFcusp_get_vMjd(GEN mf);
4336 GEN   MFnew_get_vj(GEN mf);
4337 GEN   Qab_tracerel(GEN v, long t, GEN a);
4338 GEN   QabM_tracerel(GEN v, long t, GEN x);
4339 GEN   QabV_tracerel(GEN v, long t, GEN x);
4340 GEN   Qab_trace_init(long n, long m, GEN Pn, GEN Pm);
4341 GEN   checkMF(GEN mf);
4342 GEN   checkMF_i(GEN mf);
4343 int   checkmf_i(GEN mf);
4344 GEN   getcache(void);
4345 ulong hclassno6u(ulong d);
4346 GEN   lfunmf(GEN mf, GEN F, long bitprec);
4347 GEN   mfDelta(void);
4348 GEN   mfEH(GEN gk);
4349 GEN   mfEk(long k);
4350 GEN   mfTheta(GEN psi);
4351 GEN   mf_get_CHI(GEN F);
4352 long  mf_get_N(GEN F);
4353 GEN   mf_get_NK(GEN F);
4354 GEN   mf_get_field(GEN F);
4355 GEN   mf_get_gN(GEN F);
4356 GEN   mf_get_gk(GEN F);
4357 long  mf_get_k(GEN F);
4358 long  mf_get_r(GEN F);
4359 long  mf_get_type(GEN F);
4360 GEN   mfatkin(GEN mfa, GEN F);
4361 GEN   mfatkineigenvalues(GEN mf, long Q, long prec);
4362 GEN   mfatkininit(GEN mf, long Q, long prec);
4363 GEN   mfbasis(GEN mf, long space);
4364 GEN   mfbd(GEN F, long d);
4365 GEN   mfbracket(GEN F, GEN G, long m);
4366 long  mfcharorder(GEN CHI);
4367 long  mfcharmodulus(GEN CHI);
4368 GEN   mfcharpol(GEN CHI);
4369 GEN   mfcoef(GEN F, long n);
4370 GEN   mfcoefs(GEN F, long n, long d);
4371 long  mfconductor(GEN mf, GEN F);
4372 GEN   mfcosets(GEN N);
4373 long  mfcuspdim(long N, long k, GEN CHI);
4374 long  mfcuspisregular(GEN NK, GEN cusp);
4375 GEN   mfcusps(GEN gN);
4376 GEN   mfcuspval(GEN mf, GEN F, GEN cusp, long bitprec);
4377 long  mfcuspwidth(GEN gN, GEN cusp);
4378 GEN   mfderiv(GEN F, long m);
4379 GEN   mfderivE2(GEN F, long k);
4380 GEN   mfdescribe(GEN F, GEN *PTU);
4381 GEN   mfdim(GEN NK, long codespace);
4382 GEN   mfdiv(GEN F, GEN G);
4383 GEN   mfdiv_val(GEN F, GEN G, long vG);
4384 GEN   mfeigenbasis(GEN mf);
4385 GEN   mfeigensearch(GEN nklim, GEN vmod);
4386 GEN   mfeisenstein(long k, GEN CHI1, GEN CHI2);
4387 long  mfeisensteindim(long N, long k, GEN CHI);
4388 GEN   mfembed(GEN E, GEN f);
4389 GEN   mfembed0(GEN E, GEN v, long prec);
4390 GEN   mfeval(GEN mf, GEN F, GEN vtau, long bitprec);
4391 GEN   mffields(GEN mf);
4392 GEN   mffromell(GEN E);
4393 GEN   mffrometaquo(GEN eta, long flag);
4394 GEN   mffromlfun(GEN L, long prec);
4395 GEN   mffromqf(GEN Q, GEN P);
4396 long  mffulldim(long N, long k, GEN CHI);
4397 GEN   mfgaloisprojrep(GEN mf, GEN F, long prec);
4398 GEN   mfgaloistype(GEN NK, GEN F);
4399 GEN   mfhecke(GEN mf, GEN F, long n);
4400 GEN   mfheckemat(GEN mf, GEN vecn);
4401 GEN   mfinit(GEN NK, long space);
4402 GEN   mfisCM(GEN F);
4403 long  mfiscuspidal(GEN mf, GEN F);
4404 long  mfisequal(GEN F, GEN G, long lim);
4405 GEN   mfisetaquo(GEN F, long flag);
4406 GEN   mfkohnenbasis(GEN mf);
4407 GEN   mfkohnenbijection(GEN mf);
4408 GEN   mfkohneneigenbasis(GEN mf, GEN bij);
4409 GEN   mflinear(GEN vF, GEN vla);
4410 GEN   mfmanin(GEN F, long bitprec);
4411 GEN   mfmatembed(GEN E, GEN f);
4412 GEN   mfmul(GEN F, GEN G);
4413 long  mfnewdim(long N, long k, GEN CHI);
4414 long  mfolddim(long N, long k, GEN CHI);
4415 GEN   mfparams(GEN F);
4416 GEN   mfperiodpol(GEN mf, GEN F, long flag, long prec);
4417 GEN   mfperiodpolbasis(long k, long flag);
4418 GEN   mfpetersson(GEN FS, GEN GS);
4419 GEN   mfpow(GEN F, long n);
4420 GEN   mfsearch(GEN nklim, GEN V, long space);
4421 GEN   mfshift(GEN F, long sh);
4422 GEN   mfshimura(GEN mf, GEN F, long t);
4423 GEN   mfslashexpansion(GEN mf, GEN F, GEN gamma, long n, long flrat, GEN *param, long prec);
4424 long  mfspace(GEN mf, GEN f);
4425 GEN   mfsplit(GEN mf, long dimlim, long flag);
4426 long  mfsturm(GEN A);
4427 long  mfsturmNgk(long N, GEN k);
4428 long  mfsturmNk(long N, long k);
4429 long  mfsturm_mf(GEN mf);
4430 GEN   mfsymboleval(GEN F, GEN path, GEN ga, long bitprec);
4431 GEN   mfsymbol(GEN mf, GEN F, long bitprec);
4432 GEN   mftaylor(GEN F, long n, long flreal, long prec);
4433 GEN   mftobasis(GEN mf, GEN F, long flag);
4434 GEN   mftobasisES(GEN mf, GEN F);
4435 GEN   mftocol(GEN F, long lim, long d);
4436 GEN   mftocoset(ulong N, GEN M, GEN listcosets);
4437 GEN   mftonew(GEN mf, GEN F);
4438 GEN   mftraceform(GEN NK, long coderat);
4439 GEN   mftwist(GEN F, GEN D);
4440 GEN   mfvecembed(GEN E, GEN v);
4441 GEN   mfvectomat(GEN vF, long lim, long d);
4442 
4443 /* mp.c */
4444 
4445 ulong   Fl_inv(ulong x, ulong p);
4446 ulong   Fl_invsafe(ulong x, ulong p);
4447 int     Fp_ratlift(GEN x, GEN m, GEN amax, GEN bmax, GEN *a, GEN *b);
4448 int     abscmpii(GEN x, GEN y);
4449 int     abscmprr(GEN x, GEN y);
4450 int     absequalii(GEN x, GEN y);
4451 GEN     addii_sign(GEN x, long sx, GEN y, long sy);
4452 GEN     addir_sign(GEN x, long sx, GEN y, long sy);
4453 GEN     addmulii(GEN x, GEN y, GEN z);
4454 GEN     addmulii_inplace(GEN x, GEN y, GEN z);
4455 GEN     addrr_sign(GEN x, long sx, GEN y, long sy);
4456 GEN     addsi_sign(long x, GEN y, long sy);
4457 GEN     addsr(long x, GEN y);
4458 GEN     addui_sign(ulong x, GEN y, long sy);
4459 GEN     addumului(ulong a, ulong b, GEN Y);
4460 void    affir(GEN x, GEN y);
4461 void    affrr(GEN x, GEN y);
4462 GEN     bezout(GEN a, GEN b, GEN *u, GEN *v);
4463 long    cbezout(long a,long b,long *uu,long *vv);
4464 long    cgcd(long a,long b);
4465 long    clcm(long a,long b);
4466 int     cmpii(GEN x, GEN y);
4467 int     cmprr(GEN x, GEN y);
4468 long    dblexpo(double x);
4469 ulong   dblmantissa(double x);
4470 GEN     dbltor(double x);
4471 GEN     diviiexact(GEN x, GEN y);
4472 GEN     divir(GEN x, GEN y);
4473 GEN     divis(GEN y, long x);
4474 GEN     divis_rem(GEN x, long y, long *rem);
4475 GEN     absdiviu_rem(GEN y, ulong x, ulong *rem);
4476 GEN     diviuuexact(GEN x, ulong y, ulong z);
4477 GEN     diviuexact(GEN x, ulong y);
4478 GEN     divri(GEN x, GEN y);
4479 GEN     divrr(GEN x, GEN y);
4480 GEN     divrs(GEN x, long y);
4481 GEN     divru(GEN x, ulong y);
4482 GEN     divsi(long x, GEN y);
4483 GEN     divsr(long x, GEN y);
4484 GEN     divur(ulong x, GEN y);
4485 GEN     dvmdii(GEN x, GEN y, GEN *z);
4486 int     equalii(GEN x, GEN y);
4487 int     equalrr(GEN x, GEN y);
4488 GEN     floorr(GEN x);
4489 GEN     gcdii(GEN x, GEN y);
4490 GEN     halfgcdii(GEN x, GEN y);
4491 GEN     int2n(long n);
4492 GEN     int2u(ulong n);
4493 GEN     int2um1(ulong n);
4494 GEN     int_normalize(GEN x, long known_zero_words);
4495 int     invmod(GEN a, GEN b, GEN *res);
4496 ulong   invmod2BIL(ulong b);
4497 GEN     invr(GEN b);
4498 GEN     mantissa_real(GEN x, long *e);
4499 GEN     modii(GEN x, GEN y);
4500 void    modiiz(GEN x, GEN y, GEN z);
4501 GEN     mulii(GEN x, GEN y);
4502 GEN     mulir(GEN x, GEN y);
4503 GEN     mulrr(GEN x, GEN y);
4504 GEN     mulsi(long x, GEN y);
4505 GEN     mulsr(long x, GEN y);
4506 GEN     mulss(long x, long y);
4507 GEN     mului(ulong x, GEN y);
4508 GEN     mulur(ulong x, GEN y);
4509 GEN     muluu(ulong x, ulong y);
4510 GEN     muluui(ulong x, ulong y, GEN z);
4511 void    pari_kernel_close(void);
4512 void    pari_kernel_init(void);
4513 const char * pari_kernel_version(void);
4514 GEN     remi2n(GEN x, long n);
4515 double  rtodbl(GEN x);
4516 GEN     shifti(GEN x, long n);
4517 GEN     sqri(GEN x);
4518 GEN     sqrr(GEN x);
4519 GEN     sqrs(long x);
4520 GEN     sqrtr_abs(GEN x);
4521 GEN     sqrtremi(GEN S, GEN *R);
4522 GEN     sqru(ulong x);
4523 GEN     subsr(long x, GEN y);
4524 GEN     truedvmdii(GEN x, GEN y, GEN *z);
4525 GEN     truedvmdis(GEN x, long y, GEN *z);
4526 GEN     truedvmdsi(long x, GEN y, GEN *z);
4527 GEN     trunc2nr(GEN x, long n);
4528 GEN     mantissa2nr(GEN x, long n);
4529 GEN     truncr(GEN x);
4530 ulong   ugcd(ulong a,ulong b);
4531 ulong   ulcm(ulong a, ulong b);
4532 ulong   umodiu(GEN y, ulong x);
4533 long    vals(ulong x);
4534 
4535 /* nffactor.c */
4536 
4537 GEN     FpC_ratlift(GEN P, GEN mod, GEN amax, GEN bmax, GEN denom);
4538 GEN     FpM_ratlift(GEN M, GEN mod, GEN amax, GEN bmax, GEN denom);
4539 GEN     FpX_ratlift(GEN P, GEN mod, GEN amax, GEN bmax, GEN denom);
4540 GEN     QXQX_gcd(GEN P, GEN Q, GEN T);
4541 GEN     ZXQX_gcd(GEN P, GEN Q, GEN T);
4542 GEN     nffactor(GEN nf,GEN x);
4543 GEN     nffactormod(GEN nf,GEN pol,GEN pr);
4544 GEN     nfgcd(GEN P, GEN Q, GEN nf, GEN den);
4545 GEN     nfgcd_all(GEN P, GEN Q, GEN T, GEN den, GEN *Pnew);
4546 int     nfissquarefree(GEN nf, GEN x);
4547 GEN     nfroots(GEN nf,GEN pol);
4548 GEN     nfroots_if_split(GEN *pnf, GEN pol);
4549 GEN     polfnf(GEN a, GEN t);
4550 GEN     nfrootsof1(GEN x);
4551 
4552 /* paricfg.c */
4553 
4554 extern const char *paricfg_datadir;
4555 extern const char *paricfg_version;
4556 extern const char *paricfg_buildinfo;
4557 extern const long  paricfg_version_code;
4558 extern const char *paricfg_vcsversion;
4559 extern const char *paricfg_compiledate;
4560 extern const char *paricfg_mt_engine;
4561 extern const char *paricfg_gphelp;
4562 
4563 /* part.c */
4564 
4565 void    forpart(void *E, long call(void*,GEN), long k, GEN nbound, GEN abound);
4566 void    forpart_init(forpart_t *T, long k, GEN abound, GEN nbound);
4567 GEN     forpart_next(forpart_t *T);
4568 GEN     forpart_prev(forpart_t *T);
4569 GEN     numbpart(GEN x);
4570 GEN     partitions(long k, GEN nbound, GEN abound);
4571 
4572 /* forperm.c */
4573 
4574 void    forperm(void *E, long call(void *, GEN), GEN k);
4575 void    forperm_init(forperm_t *T, GEN k);
4576 GEN     forperm_next(forperm_t *T);
4577 
4578 /* forsubset.c */
4579 
4580 void forallsubset_init(forsubset_t *T, long n);
4581 void forksubset_init(forsubset_t *T, long n, long k);
4582 GEN forsubset_next(forsubset_t *T);
4583 void forsubset_init(forsubset_t *T, GEN nk);
4584 
4585 /* perm.c */
4586 
4587 GEN     Z_to_perm(long n, GEN x);
4588 GEN     abelian_group(GEN G);
4589 GEN     conjclasses_repr(GEN conj, long nb);
4590 GEN     cyc_pow(GEN cyc, long exp);
4591 GEN     cyc_pow_perm(GEN cyc, long exp);
4592 GEN     cyclicgroup(GEN g, long s);
4593 GEN     dicyclicgroup(GEN g1, GEN g2, long s1, long s2);
4594 GEN     group_abelianHNF(GEN G, GEN L);
4595 GEN     group_abelianSNF(GEN G, GEN L);
4596 long    group_domain(GEN G);
4597 GEN     group_elts(GEN G, long n);
4598 GEN     group_export(GEN G, long format);
4599 GEN     group_export_GAP(GEN G);
4600 GEN     group_export_MAGMA(GEN G);
4601 long    group_isA4S4(GEN G);
4602 long    group_isabelian(GEN G);
4603 GEN     group_leftcoset(GEN G, GEN g);
4604 long    group_order(GEN G);
4605 long    group_perm_normalize(GEN N, GEN g);
4606 GEN     group_quotient(GEN G, GEN H);
4607 GEN     group_rightcoset(GEN G, GEN g);
4608 GEN     group_set(GEN G, long n);
4609 int     group_subgroup_is_faithful(GEN G, GEN H);
4610 long    group_subgroup_isnormal(GEN G, GEN H);
4611 GEN     group_subgroups(GEN G);
4612 GEN     group_to_cc(GEN G);
4613 GEN     groupelts_abelian_group(GEN S);
4614 GEN     groupelts_center(GEN S);
4615 GEN     groupelts_conj_set(GEN elts, GEN p);
4616 GEN     groupelts_conjclasses(GEN elts, long *nbcl);
4617 long    groupelts_exponent(GEN G);
4618 GEN     groupelts_quotient(GEN G, GEN H);
4619 GEN     groupelts_set(GEN G, long n);
4620 GEN     groupelts_to_group(GEN G);
4621 GEN     numtoperm(long n, GEN x);
4622 int     perm_commute(GEN p, GEN q);
4623 GEN     perm_cycles(GEN v);
4624 GEN     perm_order(GEN perm);
4625 ulong   perm_orderu(GEN perm);
4626 GEN     perm_pow(GEN perm, GEN exp);
4627 GEN     perm_powu(GEN perm, ulong exp);
4628 long    perm_sign(GEN perm);
4629 GEN     perm_to_GAP(GEN v);
4630 GEN     perm_to_Z(GEN v);
4631 GEN     permcycles(GEN perm);
4632 GEN     permorder(GEN perm);
4633 long    permsign(GEN perm);
4634 GEN     permtonum(GEN x);
4635 GEN     quotient_group(GEN C, GEN G);
4636 GEN     quotient_groupelts(GEN C);
4637 GEN     quotient_perm(GEN C, GEN p);
4638 GEN     quotient_subgroup_lift(GEN C, GEN H, GEN S);
4639 GEN     subgroups_tableset(GEN S, long n);
4640 long    tableset_find_index(GEN tbl, GEN set);
4641 GEN     trivialgroup(void);
4642 GEN     vec_insert(GEN v, long n, GEN x);
4643 int     vec_is1to1(GEN v);
4644 int     vec_isconst(GEN v);
4645 GEN     vecperm_orbits(GEN v, long n);
4646 long    vecsmall_duplicate(GEN x);
4647 long    vecsmall_duplicate_sorted(GEN x);
4648 GEN     vecsmall_indexsort(GEN V);
4649 int     vecsmall_is1to1(GEN v);
4650 int     vecsmall_isconst(GEN v);
4651 void    vecsmall_sort(GEN V);
4652 GEN     vecsmall_uniq(GEN V);
4653 GEN     vecsmall_uniq_sorted(GEN V);
4654 GEN     vecvecsmall_indexsort(GEN x);
4655 long    vecvecsmall_max(GEN x);
4656 long    vecvecsmall_search(GEN x, GEN y, long flag);
4657 GEN     vecvecsmall_sort(GEN x);
4658 void    vecvecsmall_sort_inplace(GEN x, GEN *perm);
4659 GEN     vecvecsmall_sort_shallow(GEN x);
4660 GEN     vecvecsmall_sort_uniq(GEN x);
4661 
4662 /* mt.c */
4663 
4664 void    mt_broadcast(GEN code);
4665 long    mt_nbthreads(void);
4666 void    mt_queue_end(struct pari_mt *pt);
4667 GEN     mt_queue_get(struct pari_mt *pt, long *jobid, long *pending);
4668 void    mt_queue_start(struct pari_mt *pt, GEN worker);
4669 void    mt_queue_start_lim(struct pari_mt *pt, GEN worker, long lim);
4670 void    mt_queue_submit(struct pari_mt *pt, long jobid, GEN work);
4671 void    mt_sigint_block(void);
4672 void    mt_sigint_unblock(void);
4673 void    pari_mt_init(void);
4674 void    pari_mt_close(void);
4675 
4676 /* plotport.c */
4677 
4678 void    color_to_rgb(GEN c, int *r, int *g, int *b);
4679 void    colorname_to_rgb(const char *s, int *r, int *g, int *b);
4680 void    long_to_rgb(long c, int *r, int *g, int *b);
4681 void    pari_plot_by_file(const char *env, const char *suf, const char *img);
4682 void    pari_set_plot_engine(void (*plot)(PARI_plot *));
4683 void    pari_kill_plot_engine(void);
4684 GEN     parploth(GEN a, GEN b, GEN code, long flags,long n, long prec);
4685 GEN     parplothexport(GEN fmt, GEN a, GEN b, GEN code, long flags, long n, long prec);
4686 void    plotbox(long ne, GEN gx2, GEN gy2, long fl);
4687 void    plotclip(long rect);
4688 GEN     plotcolor(long ne, GEN c);
4689 void    plotcopy(long source, long dest, GEN xoff, GEN yoff, long flag);
4690 GEN     plotcursor(long ne);
4691 void    plotdraw(GEN list, long flag);
4692 GEN     plotexport(GEN fmt, GEN wxy, long flag);
4693 GEN     ploth(void *E, GEN(*f)(void*,GEN), GEN a, GEN b, long flags,long n, long prec);
4694 GEN     plothexport(GEN fmt, void *E, GEN(*f)(void*,GEN), GEN a,GEN b, long flags, long n, long prec);
4695 GEN     plothraw(GEN listx, GEN listy, long flag);
4696 GEN     plothrawexport(GEN fmt, GEN X, GEN Y, long flags);
4697 GEN     plothsizes(long flag);
4698 void    plotinit(long ne, GEN x, GEN y, long flag);
4699 void    plotkill(long ne);
4700 void    plotline(long ne, GEN gx2, GEN gy2);
4701 void    plotlines(long ne, GEN listx, GEN listy, long flag);
4702 void    plotlinetype(long ne, long t);
4703 void    plotmove(long ne, GEN x, GEN y);
4704 void    plotpoints(long ne, GEN listx, GEN listy);
4705 void    plotpointsize(long ne, GEN size);
4706 void    plotpointtype(long ne, long t);
4707 void    plotrbox(long ne, GEN x2, GEN y2, long fl);
4708 GEN     plotrecth(void *E, GEN(*f)(void*,GEN), long ne, GEN a,GEN b, ulong flags,long n, long prec);
4709 GEN     plotrecthraw(long ne, GEN data, long flags);
4710 void    plotrline(long ne, GEN x2, GEN y2);
4711 void    plotrmove(long ne, GEN x, GEN y);
4712 void    plotrpoint(long ne, GEN x, GEN y);
4713 void    plotscale(long ne, GEN x1, GEN x2, GEN y1, GEN y2);
4714 void    plotstring(long ne, char *x, long dir);
4715 void    psdraw(GEN list, long flag);
4716 GEN     psploth(void *E, GEN(*f)(void*,GEN), GEN a, GEN b, long flags, long n, long prec);
4717 GEN     psplothraw(GEN listx, GEN listy, long flag);
4718 char*   rect2ps(GEN w, GEN x, GEN y, PARI_plot *T);
4719 char*   rect2ps_i(GEN w, GEN x, GEN y, PARI_plot *T, int plotps);
4720 char*   rect2svg(GEN w, GEN x, GEN y, PARI_plot *T);
4721 
4722 /* plottty.c */
4723 
4724 void    pariplot(void* E, GEN (*fun)(void *E, GEN x), GEN a, GEN b, GEN ysmlu,GEN ybigu, long prec);
4725 
4726 /* polarit1.c */
4727 
4728 GEN     ZX_Zp_root(GEN f, GEN a, GEN p, long prec);
4729 GEN     Zp_appr(GEN f, GEN a);
4730 int     cmp_padic(GEN x, GEN y);
4731 GEN     factorpadic(GEN x, GEN p, long r);
4732 GEN     gdeuc(GEN x, GEN y);
4733 GEN     grem(GEN x, GEN y);
4734 GEN     padicappr(GEN f, GEN a);
4735 GEN     poldivrem(GEN x, GEN y, GEN *pr);
4736 GEN     polrootspadic(GEN f, GEN p, long r);
4737 
4738 /* polarit2.c */
4739 
4740 ulong   Flv_factorback(GEN L, GEN e, ulong p);
4741 GEN     FlxqV_factorback(GEN L, GEN e, GEN Tp, ulong p);
4742 GEN     FpV_factorback(GEN L, GEN e, GEN p);
4743 GEN     FqV_factorback(GEN L, GEN e, GEN Tp, GEN p);
4744 GEN     Q_content(GEN x);
4745 GEN     Q_content_safe(GEN x);
4746 GEN     Q_denom(GEN x);
4747 GEN     Q_denom_safe(GEN x);
4748 GEN     Q_div_to_int(GEN x, GEN c);
4749 GEN     Q_gcd(GEN x, GEN y);
4750 GEN     Q_mul_to_int(GEN x, GEN c);
4751 GEN     Q_muli_to_int(GEN x, GEN d);
4752 GEN     Q_primitive_part(GEN x, GEN *ptc);
4753 GEN     Q_primpart(GEN x);
4754 GEN     Q_remove_denom(GEN x, GEN *ptd);
4755 GEN     Q_factor(GEN x);
4756 GEN     Q_factor_limit(GEN x, ulong lim);
4757 long    Rg_type(GEN x, GEN *ptp, GEN *ptpol, long *ptpa);
4758 long    RgM_RgC_type(GEN x, GEN y, GEN *p, GEN *pol, long *pa);
4759 GEN     RgM_rescale_to_int(GEN x);
4760 long    RgM_type(GEN x, GEN *p, GEN *pol, long *pa);
4761 long    RgM_type2(GEN x, GEN y, GEN *p, GEN *pol, long *pa);
4762 long    RgV_type(GEN x, GEN *p, GEN *pol, long *pa);
4763 long    RgV_type2(GEN x, GEN y, GEN *p, GEN *pol, long *pa);
4764 long    RgX_Rg_type(GEN x, GEN y, GEN *p, GEN *pol, long *pa);
4765 GEN     RgX_rescale_to_int(GEN x);
4766 GEN     RgX_disc(GEN x);
4767 GEN     RgX_extgcd(GEN x, GEN y, GEN *U, GEN *V);
4768 GEN     RgX_extgcd_simple(GEN a, GEN b, GEN *pu, GEN *pv);
4769 GEN     RgX_gcd(GEN x, GEN y);
4770 GEN     RgX_gcd_simple(GEN x, GEN y);
4771 GEN     RgX_halfgcd(GEN x, GEN y);
4772 GEN     RgX_resultant_all(GEN P, GEN Q, GEN *sol);
4773 long    RgX_sturmpart(GEN x, GEN ab);
4774 GEN     RgX_sylvestermatrix(GEN x, GEN y);
4775 long    RgX_type(GEN x, GEN *ptp, GEN *ptpol, long *ptpa);
4776 long    RgX_type2(GEN x, GEN y, GEN *ptp, GEN *ptpol, long *ptpa);
4777 long    RgX_type3(GEN x, GEN y, GEN z, GEN *ptp, GEN *ptpol, long *ptpa);
4778 void    RgX_type_decode(long x, long *t1, long *t2);
4779 int     RgX_type_is_composite(long t);
4780 GEN     RgXQ_charpoly(GEN x, GEN T, long v);
4781 GEN     RgXQ_inv(GEN x, GEN y);
4782 GEN     RgXQ_mul(GEN x, GEN y, GEN T);
4783 int     RgXQ_ratlift(GEN y, GEN x, long amax, long bmax, GEN *P, GEN *Q);
4784 GEN     RgXQ_sqr(GEN x, GEN y);
4785 GEN     Z_content(GEN x);
4786 GEN     ZX_content(GEN x);
4787 GEN     centermod(GEN x, GEN p);
4788 GEN     centermod_i(GEN x, GEN p, GEN ps2);
4789 GEN     centermodii(GEN x, GEN p, GEN po2);
4790 GEN     content(GEN x);
4791 GEN     content0(GEN x, GEN D);
4792 GEN     deg1_from_roots(GEN L, long v);
4793 GEN     factor(GEN x);
4794 GEN     factor0(GEN x, GEN flag);
4795 GEN     factorback(GEN fa);
4796 GEN     factorback2(GEN fa,GEN e);
4797 GEN     gbezout(GEN x, GEN y, GEN *u, GEN *v);
4798 GEN     gdivexact(GEN x, GEN y);
4799 GEN     gen_factorback(GEN L, GEN e, void *E, GEN (*_mul)(void*,GEN,GEN),
4800                                               GEN (*_pow)(void*,GEN,GEN));
4801 GEN     ggcd(GEN x, GEN y);
4802 GEN     ggcd0(GEN x, GEN y);
4803 GEN     ghalfgcd(GEN x, GEN y);
4804 GEN     ginvmod(GEN x, GEN y);
4805 GEN     glcm(GEN x, GEN y);
4806 GEN     glcm0(GEN x, GEN y);
4807 GEN     idealfactorback(GEN nf, GEN L, GEN e, int red);
4808 GEN     newtonpoly(GEN x, GEN p);
4809 GEN     nffactorback(GEN nf, GEN L, GEN e);
4810 GEN     nfrootsQ(GEN x);
4811 GEN     poldisc0(GEN x, long v);
4812 long    polisirreducible(GEN x);
4813 GEN     polresultant0(GEN x, GEN y,long v,long flag);
4814 GEN     polsym(GEN x, long n);
4815 GEN     primitive_part(GEN x, GEN *c);
4816 GEN     primpart(GEN x);
4817 GEN     reduceddiscsmith(GEN pol);
4818 GEN     resultant2(GEN x, GEN y);
4819 GEN     resultant(GEN u, GEN v);
4820 GEN     rnfcharpoly(GEN nf, GEN T, GEN alpha, long v);
4821 GEN     roots_from_deg1(GEN x);
4822 GEN     roots_to_pol(GEN a, long v);
4823 GEN     roots_to_pol_r1(GEN a, long v, long r1);
4824 long    sturmpart(GEN x, GEN a, GEN b);
4825 GEN     subresext(GEN x, GEN y, GEN *U, GEN *V);
4826 GEN     sylvestermatrix(GEN x,GEN y);
4827 GEN     trivial_fact(void);
4828 GEN     gcdext0(GEN x, GEN y);
4829 GEN     polresultantext0(GEN x, GEN y, long v);
4830 GEN     polresultantext(GEN x, GEN y);
4831 GEN     prime_fact(GEN x);
4832 GEN     vec_Q_primpart(GEN M);
4833 GEN     vecprod(GEN v);
4834 GEN     ZV_lcm(GEN x);
4835 
4836 /* polarit3.c */
4837 
4838 GEN     Flx_FlxY_resultant(GEN a, GEN b, ulong pp);
4839 GEN     FlxX_resultant(GEN u, GEN v, ulong p, long sx);
4840 GEN     FpX_FpXY_resultant(GEN a, GEN b0, GEN p);
4841 GEN     FpX_translate(GEN P, GEN c, GEN p);
4842 GEN     FpXQX_normalize(GEN z, GEN T, GEN p);
4843 GEN     FpXV_FpC_mul(GEN V, GEN W, GEN p);
4844 GEN     FpXY_FpXQ_evaly(GEN Q, GEN y, GEN T, GEN p, long vx);
4845 GEN     FpXC_center(GEN C, GEN p, GEN pov2);
4846 GEN     FpXM_center(GEN M, GEN p, GEN pov2);
4847 GEN     Fq_Fp_mul(GEN x, GEN y, GEN T, GEN p);
4848 GEN     Fq_add(GEN x, GEN y, GEN T/*unused*/, GEN p);
4849 GEN     Fq_div(GEN x, GEN y, GEN T, GEN p);
4850 GEN     Fq_halve(GEN x, GEN T/*unused*/, GEN p);
4851 GEN     Fq_inv(GEN x, GEN T, GEN p);
4852 GEN     Fq_invsafe(GEN x, GEN T, GEN p);
4853 GEN     Fq_mul(GEN x, GEN y, GEN T, GEN p);
4854 GEN     Fq_mulu(GEN x, ulong y, /*unused*/GEN T, GEN p);
4855 GEN     Fq_neg(GEN x, GEN T, GEN p);
4856 GEN     Fq_neg_inv(GEN x, GEN T, GEN p);
4857 GEN     Fq_pow(GEN x, GEN n, GEN T, GEN p);
4858 GEN     Fq_powu(GEN x, ulong n, GEN pol, GEN p);
4859 GEN     Fq_sqr(GEN x, GEN T, GEN p);
4860 GEN     Fq_sqrt(GEN x, GEN T, GEN p);
4861 GEN     Fq_sqrtn(GEN x, GEN n, GEN T, GEN p, GEN *zeta);
4862 GEN     Fq_sub(GEN x, GEN y, GEN T/*unused*/, GEN p);
4863 GEN     FqC_Fq_mul(GEN x, GEN y, GEN T, GEN p);
4864 GEN     FqC_FqV_mul(GEN x, GEN y, GEN T, GEN p);
4865 GEN     FqC_add(GEN x, GEN y, GEN T, GEN p);
4866 GEN     FqC_sub(GEN x, GEN y, GEN T, GEN p);
4867 GEN     FqC_to_FlxC(GEN v, GEN T, GEN pp);
4868 GEN     FqM_to_FlxM(GEN x, GEN T, GEN pp);
4869 GEN     FqV_red(GEN z, GEN T, GEN p);
4870 GEN     FqV_roots_to_pol(GEN V, GEN T, GEN p, long v);
4871 GEN     FqV_to_FlxV(GEN v, GEN T, GEN pp);
4872 GEN     FqX_Fq_add(GEN y, GEN x, GEN T, GEN p);
4873 GEN     FqX_Fq_mul_to_monic(GEN P, GEN U, GEN T, GEN p);
4874 GEN     FqX_Fq_sub(GEN y, GEN x, GEN T, GEN p);
4875 GEN     FqX_eval(GEN x, GEN y, GEN T, GEN p);
4876 GEN     FqX_translate(GEN P, GEN c, GEN T, GEN p);
4877 GEN     FqXQ_matrix_pow(GEN y, long n, long m, GEN S, GEN T, GEN p);
4878 GEN     FqXQ_powers(GEN x, long l, GEN S, GEN T, GEN p);
4879 GEN     FqXY_eval(GEN Q, GEN y, GEN x, GEN T, GEN p);
4880 GEN     FqXY_evalx(GEN Q, GEN x, GEN T, GEN p);
4881 GEN     QX_disc(GEN x);
4882 GEN     QX_gcd(GEN a,GEN b);
4883 GEN     QX_resultant(GEN A, GEN B);
4884 GEN     QXQ_div(GEN A, GEN B, GEN C);
4885 GEN     QXQ_intnorm(GEN A, GEN B);
4886 GEN     QXQ_inv(GEN A, GEN B);
4887 GEN     QXQ_mul(GEN A, GEN B, GEN T);
4888 GEN     QXQ_norm(GEN A, GEN B);
4889 GEN     QXQ_sqr(GEN A, GEN B);
4890 int     Rg_is_Fp(GEN x, GEN *p);
4891 int     Rg_is_FpXQ(GEN x, GEN *pT, GEN *pp);
4892 GEN     Rg_to_Fp(GEN x, GEN p);
4893 GEN     Rg_to_FpXQ(GEN x, GEN T, GEN p);
4894 GEN     RgC_to_FpC(GEN x, GEN p);
4895 GEN     RgC_to_FqC(GEN x, GEN T, GEN p);
4896 int     RgM_is_FpM(GEN x, GEN *p);
4897 GEN     RgM_to_Flm(GEN x, ulong p);
4898 GEN     RgM_to_FpM(GEN x, GEN p);
4899 GEN     RgM_to_FqM(GEN x, GEN T, GEN p);
4900 int     RgV_is_FpV(GEN x, GEN *p);
4901 GEN     RgV_to_Flv(GEN x, ulong p);
4902 GEN     RgV_to_FpV(GEN x, GEN p);
4903 int     RgX_is_FpX(GEN x, GEN *p);
4904 GEN     RgX_to_FpX(GEN x, GEN p);
4905 int     RgX_is_FpXQX(GEN x, GEN *pT, GEN *pp);
4906 GEN     RgX_to_FpXQX(GEN x, GEN T, GEN p);
4907 GEN     RgX_to_FqX(GEN x, GEN T, GEN p);
4908 int     Z_incremental_CRT(GEN *H, ulong Hp, GEN *q, ulong p);
4909 GEN     Z_init_CRT(ulong Hp, ulong p);
4910 int     ZM_incremental_CRT(GEN *H, GEN Hp, GEN *q, ulong p);
4911 GEN     ZM_init_CRT(GEN Hp, ulong p);
4912 GEN     ZX_ZXY_resultant(GEN a, GEN b);
4913 GEN     ZX_ZXY_rnfequation(GEN A, GEN B, long *lambda);
4914 GEN     ZX_disc(GEN x);
4915 GEN     ZX_gcd(GEN A, GEN B);
4916 GEN     ZX_gcd_all(GEN A, GEN B, GEN *Anew);
4917 int     ZX_incremental_CRT(GEN *ptH, GEN Hp, GEN *q, ulong p);
4918 GEN     ZX_init_CRT(GEN Hp, ulong p, long v);
4919 int     ZX_is_squarefree(GEN x);
4920 GEN     ZX_radical(GEN A);
4921 GEN     ZX_resultant(GEN A, GEN B);
4922 int     ZXM_incremental_CRT(GEN *pH, GEN Hp, GEN *ptq, ulong p);
4923 GEN     ZXM_init_CRT(GEN Hp, long deg, ulong p);
4924 GEN     ZXQ_minpoly(GEN A, GEN T, long d, ulong b);
4925 GEN     ZXQ_charpoly(GEN A, GEN T, long v);
4926 GEN     characteristic(GEN x);
4927 GEN     ffinit(GEN p, long n, long v);
4928 GEN     ffnbirred(GEN p, long n);
4929 GEN     ffnbirred0(GEN p, long n, long flag);
4930 GEN     ffsumnbirred(GEN p, long n);
4931 const struct bb_field *get_Fq_field(void **E, GEN T, GEN p);
4932 GEN     init_Flxq(ulong p, long n, long v);
4933 GEN     init_Fq(GEN p, long n, long v);
4934 GEN     nfX_disc(GEN nf, GEN x);
4935 GEN     nfX_resultant(GEN nf, GEN x, GEN y);
4936 GEN     pol_x_powers(long N, long v);
4937 GEN     residual_characteristic(GEN x);
4938 
4939 /* polclass.c */
4940 
4941 GEN     polclass(GEN D, long inv, long xvar);
4942 
4943 /* polmodular.c */
4944 
4945 GEN     Fp_modinv_to_j(GEN x, long inv, GEN p);
4946 GEN     Fp_polmodular_evalx(long L, long inv, GEN J, GEN P, long v, int compute_derivs);
4947 void    check_modinv(long inv);
4948 long    disc_best_modinv(long D);
4949 long    modinv_height_factor(long inv);
4950 int     modinv_good_disc(long inv, long D);
4951 int     modinv_good_prime(long inv, long p);
4952 int     modinv_is_Weber(long inv);
4953 int     modinv_is_double_eta(long inv);
4954 GEN     polmodular(long L, long inv, GEN x, long yvar, long compute_derivs);
4955 GEN     polmodular_ZM(long L, long inv);
4956 GEN     polmodular_ZXX(long L, long inv, long xvar, long yvar);
4957 
4958 /* prime.c */
4959 
4960 long    BPSW_isprime(GEN x);
4961 long    BPSW_psp(GEN N);
4962 GEN     addprimes(GEN primes);
4963 GEN     gisprime(GEN x, long flag);
4964 GEN     gispseudoprime(GEN x, long flag);
4965 GEN     gprimepi_upper_bound(GEN x);
4966 GEN     gprimepi_lower_bound(GEN x);
4967 long    isprime(GEN x);
4968 long    ispseudoprime(GEN x, long flag);
4969 long    millerrabin(GEN n, long k);
4970 GEN     prime(long n);
4971 GEN     primecert(GEN x, long flag);
4972 GEN     primecertexport(GEN cert, long flag);
4973 long    primecertisvalid(GEN x);
4974 GEN     primepi(GEN x);
4975 double  primepi_upper_bound(double x);
4976 double  primepi_lower_bound(double x);
4977 GEN     primes(long n);
4978 GEN     primes_interval(GEN a, GEN b);
4979 GEN     primes_interval_zv(ulong a, ulong b);
4980 GEN     primes_upto_zv(ulong b);
4981 GEN     primes0(GEN n);
4982 GEN     primes_zv(long m);
4983 GEN     randomprime(GEN N);
4984 GEN     randomprime0(GEN N, GEN q);
4985 GEN     removeprimes(GEN primes);
4986 int     uis2psp(ulong n);
4987 int     uispsp(ulong a, ulong n);
4988 int     uislucaspsp(ulong n);
4989 int     uisprime(ulong n);
4990 int     uisprime_101(ulong n);
4991 int     uisprime_661(ulong n);
4992 ulong   uprime(long n);
4993 ulong   uprimepi(ulong n);
4994 
4995 /* qfisom.c */
4996 
4997 GEN     qfauto(GEN g, GEN flags);
4998 GEN     qfauto0(GEN g, GEN flags);
4999 GEN     qfautoexport(GEN g, long flag);
5000 GEN     qfisom(GEN g, GEN h, GEN flags, GEN G);
5001 GEN     qfisom0(GEN g, GEN h, GEN flags, GEN G);
5002 GEN     qfisominit(GEN g, GEN flags, GEN minvec);
5003 GEN     qfisominit0(GEN g, GEN flags, GEN minvec);
5004 GEN     qforbits(GEN G, GEN V);
5005 
5006 /* qfparam.c */
5007 
5008 GEN     qfsolve(GEN G);
5009 GEN     qfparam(GEN G, GEN sol, long fl);
5010 
5011 /* random.c */
5012 
5013 GEN     genrand(GEN N);
5014 GEN     getrand(void);
5015 ulong   pari_rand(void);
5016 GEN     randomi(GEN x);
5017 GEN     randomr(long prec);
5018 GEN     random_F2x(long d, long vs);
5019 ulong   random_Fl(ulong n);
5020 long    random_bits(long k);
5021 GEN     random_zv(long n);
5022 void    setrand(GEN seed);
5023 
5024 /* ratpoints.c */
5025 
5026 GEN     ellratpoints(GEN E, GEN h, long flag);
5027 GEN     hyperellratpoints(GEN P, GEN h, long flag);
5028 
5029 /* rootpol.c */
5030 
5031 GEN     QX_complex_roots(GEN p, long l);
5032 GEN     FFT(GEN W, GEN x);
5033 GEN     FFTinv(GEN W, GEN x);
5034 GEN     cleanroots(GEN x,long l);
5035 double  fujiwara_bound(GEN p);
5036 double  fujiwara_bound_real(GEN p, long sign);
5037 int     isrealappr(GEN x, long l);
5038 GEN     polgraeffe(GEN p);
5039 GEN     polmod_to_embed(GEN x, long prec);
5040 GEN     polrootsbound(GEN p, GEN tau);
5041 GEN     roots(GEN x,long l);
5042 GEN     realroots(GEN P, GEN ab, long prec);
5043 GEN     ZX_graeffe(GEN p);
5044 GEN     ZX_realroots_irred(GEN P, long prec);
5045 long    ZX_sturm(GEN P);
5046 long    ZX_sturm_irred(GEN P);
5047 long    ZX_sturmpart(GEN P, GEN ab);
5048 GEN     ZX_Uspensky(GEN P, GEN ab, long flag, long prec);
5049 
5050 /* subcyclo.c */
5051 
5052 GEN     factor_Aurifeuille(GEN p, long n);
5053 GEN     factor_Aurifeuille_prime(GEN p, long n);
5054 GEN     galoissubcyclo(GEN N, GEN sg, long flag, long v);
5055 GEN     polsubcyclo(long n, long d, long v);
5056 
5057 /* subfield.c */
5058 
5059 GEN     nfsubfields(GEN nf, long d);
5060 GEN     nfsubfields0(GEN nf, long d, long flag);
5061 GEN     nfsubfieldscm(GEN nf, long flag);
5062 GEN     nfsubfieldsmax(GEN nf, long flag);
5063 
5064 /* subgroup.c */
5065 
5066 GEN     subgrouplist(GEN cyc, GEN bound);
5067 void    forsubgroup(void *E, long fun(void*,GEN), GEN cyc, GEN B);
5068 
5069 /* stark.c */
5070 
5071 GEN     ag_kernel(GEN S);
5072 GEN     ag_subgroup_image(GEN S, GEN H);
5073 GEN     bnrL1(GEN bnr, GEN sbgrp, long flag, long prec);
5074 GEN     bnrrootnumber(GEN bnr, GEN chi, long flag, long prec);
5075 GEN     bnrstark(GEN bnr, GEN subgroup, long prec);
5076 GEN     cyc2elts(GEN cyc);
5077 GEN     qfbforms(GEN D);
5078 
5079 /* str.c */
5080 
5081 GEN     chartoGENstr(char c);
5082 char*   pari_strdup(const char *s);
5083 char*   pari_strndup(const char *s, long n);
5084 char*   stack_strcat(const char *s, const char *t);
5085 char*   stack_strdup(const char *s);
5086 GEN     pari_strchr(GEN g);
5087 GEN     strjoin(GEN v, GEN p);
5088 GEN     strntoGENstr(const char *s, long n0);
5089 GEN     strsplit(GEN x, GEN p);
5090 GEN     strtoGENstr(const char *s);
5091 const char* type_name(long t);
5092 GEN     type0(GEN x);
5093 
5094 /* sumiter.c */
5095 
5096 GEN     asympnum(void *E, GEN (*f)(void *,GEN,long), GEN alpha, long prec);
5097 GEN     asympnumraw(void *E, GEN (*f)(void *,GEN,long), long LIM, GEN alpha, long prec);
5098 GEN     derivnum(void *E, GEN (*eval)(void *, GEN, long prec), GEN x, long prec);
5099 GEN     derivnumk(void *E, GEN (*eval)(void *, GEN, long), GEN x, GEN ind0, long prec);
5100 GEN     derivfun(void *E, GEN (*eval)(void *, GEN, long prec), GEN x, long prec);
5101 GEN     derivfunk(void *E, GEN (*eval)(void *, GEN, long), GEN x, GEN ind0, long prec);
5102 int     forvec_init(forvec_t *T, GEN x, long flag);
5103 GEN     forvec_next(forvec_t *T);
5104 GEN     laurentseries(void *E, GEN (*f)(void*,GEN x, long), long M, long v, long prec);
5105 GEN     limitnum(void *E, GEN (*f)(void *,GEN,long), GEN alpha, long prec);
5106 GEN     polzag(long n, long m);
5107 GEN     prodeuler(void *E, GEN (*eval)(void *, GEN), GEN ga, GEN gb, long prec);
5108 GEN     prodinf(void *E, GEN (*eval)(void *, GEN), GEN a, long prec);
5109 GEN     prodinf1(void *E, GEN (*eval)(void *, GEN), GEN a, long prec);
5110 GEN     solvestep(void *E, GEN (*eval)(void *, GEN), GEN a, GEN b, GEN step, long flag, long prec);
5111 GEN     sumalt(void *E, GEN (*eval)(void *, GEN), GEN a, long prec);
5112 GEN     sumalt2(void *E, GEN (*eval)(void *, GEN), GEN a, long prec);
5113 GEN     sumpos(void *E, GEN (*eval)(void *, GEN), GEN a, long prec);
5114 GEN     sumpos2(void *E, GEN (*eval)(void *, GEN), GEN a, long prec);
5115 GEN     suminf(void *E, GEN (*eval)(void *, GEN), GEN a, long prec);
5116 GEN     suminf_bitprec(void *E, GEN (*eval)(void *, GEN), GEN a, long prec);
5117 GEN     sumdivmultexpr(void *D, GEN (*fun)(void*, GEN), GEN num);
5118 GEN     zbrent(void *E, GEN (*eval)(void *, GEN), GEN a, GEN b, long prec);
5119 
5120 /* thue.c */
5121 
5122 GEN     bnfisintnorm(GEN x, GEN y);
5123 GEN     bnfisintnormabs(GEN bnf, GEN a);
5124 GEN     thue(GEN thueres, GEN rhs, GEN ne);
5125 GEN     thueinit(GEN pol, long flag, long prec);
5126 
5127 /* trans1.c */
5128 
5129 GEN     Pi2n(long n, long prec);
5130 GEN     PiI2(long prec);
5131 GEN     PiI2n(long n, long prec);
5132 GEN     Qp_exp(GEN x);
5133 GEN     Qp_log(GEN x);
5134 GEN     Qp_sqrt(GEN x);
5135 GEN     Qp_sqrtn(GEN x, GEN n, GEN *zetan);
5136 long    Zn_ispower(GEN a, GEN q, GEN K, GEN *pt);
5137 long    Zn_issquare(GEN x, GEN n);
5138 GEN     Zn_sqrt(GEN x, GEN n);
5139 GEN     Zp_teichmuller(GEN x, GEN p, long n, GEN q);
5140 GEN     agm(GEN x, GEN y, long prec);
5141 GEN     constcatalan(long prec);
5142 GEN     consteuler(long prec);
5143 GEN     constlog2(long prec);
5144 GEN     constpi(long prec);
5145 GEN     cxexpm1(GEN z, long prec);
5146 GEN     ellE(GEN k, long prec);
5147 GEN     ellK(GEN k, long prec);
5148 GEN     expIr(GEN x);
5149 GEN     exp1r_abs(GEN x);
5150 GEN     gcos(GEN x, long prec);
5151 GEN     gcotan(GEN x, long prec);
5152 GEN     gcotanh(GEN x, long prec);
5153 GEN     gexp(GEN x, long prec);
5154 GEN     gexpm1(GEN x, long prec);
5155 GEN     glog(GEN x, long prec);
5156 GEN     glog1p(GEN x, long prec);
5157 GEN     gpow(GEN x, GEN n, long prec);
5158 GEN     gpowers(GEN x, long n);
5159 GEN     gpowers0(GEN x, long n, GEN x0);
5160 GEN     gpowgs(GEN x, long n);
5161 GEN     grootsof1(long N, long prec);
5162 GEN     gsin(GEN x, long prec);
5163 GEN     gsinc(GEN x, long prec);
5164 void    gsincos(GEN x, GEN *s, GEN *c, long prec);
5165 GEN     gsqrpowers(GEN q, long n);
5166 GEN     gsqrt(GEN x, long prec);
5167 GEN     gsqrtn(GEN x, GEN n, GEN *zetan, long prec);
5168 GEN     gtan(GEN x, long prec);
5169 GEN     logr_abs(GEN x);
5170 GEN     mpcos(GEN x);
5171 GEN     mpeuler(long prec);
5172 GEN     mpcatalan(long prec);
5173 void    mpsincosm1(GEN x, GEN *s, GEN *c);
5174 GEN     mpexp(GEN x);
5175 GEN     mpexpm1(GEN x);
5176 GEN     mplog(GEN x);
5177 GEN     mplog2(long prec);
5178 GEN     mppi(long prec);
5179 GEN     mpsin(GEN x);
5180 void    mpsincos(GEN x, GEN *s, GEN *c);
5181 GEN     powPis(GEN s, long prec);
5182 GEN     pow2Pis(GEN s, long prec);
5183 GEN     powersr(GEN a, long n);
5184 GEN     powis(GEN x, long n);
5185 GEN     powiu(GEN p, ulong k);
5186 GEN     powrfrac(GEN x, long n, long d);
5187 GEN     powrs(GEN x, long n);
5188 GEN     powrshalf(GEN x, long s);
5189 GEN     powru(GEN x, ulong n);
5190 GEN     powruhalf(GEN x, ulong s);
5191 GEN     powuu(ulong p, ulong k);
5192 GEN     powgi(GEN x, GEN n);
5193 GEN     rootsof1_cx(GEN d, long prec);
5194 GEN     rootsof1u_cx(ulong d, long prec);
5195 GEN     rootsof1q_cx(long a, long b, long prec);
5196 GEN     rootsof1powinit(long a, long b, long prec);
5197 GEN     rootsof1pow(GEN T, long c);
5198 GEN     serchop(GEN s, long n);
5199 GEN     serchop_i(GEN s, long n);
5200 GEN     serchop0(GEN s);
5201 GEN     sqrtnint(GEN a, long n);
5202 GEN     sqrtnr_abs(GEN x, long n);
5203 GEN     teich(GEN x);
5204 GEN     teichmullerinit(long p, long n);
5205 GEN     teichmuller(GEN x, GEN tab);
5206 GEN     trans_eval(const char *fun, GEN (*f) (GEN, long), GEN x, long prec);
5207 ulong   upowuu(ulong p, ulong k);
5208 GEN     upowers(ulong x, long n);
5209 ulong   usqrtn(ulong a, ulong n);
5210 ulong   usqrt(ulong a);
5211 
5212 /* trans2.c */
5213 
5214 GEN     Qp_gamma(GEN x);
5215 GEN     gacosh(GEN x, long prec);
5216 GEN     gacos(GEN x, long prec);
5217 GEN     garg(GEN x, long prec);
5218 GEN     gasinh(GEN x, long prec);
5219 GEN     gasin(GEN x, long prec);
5220 GEN     gatan(GEN x, long prec);
5221 GEN     gatanh(GEN x, long prec);
5222 GEN     gcosh(GEN x, long prec);
5223 GEN     ggammah(GEN x, long prec);
5224 GEN     ggamma(GEN x, long prec);
5225 GEN     ggamma1m1(GEN x, long prec);
5226 GEN     glngamma(GEN x, long prec);
5227 GEN     gpsi(GEN x, long prec);
5228 GEN     gsinh(GEN x, long prec);
5229 GEN     gtanh(GEN x, long prec);
5230 GEN     mpfactr(long n, long prec);
5231 void    mpsinhcosh(GEN x, GEN *s, GEN *c);
5232 GEN     psi1series(long n, long v, long prec);
5233 GEN     sumformal(GEN T, long v);
5234 
5235 /* trans3.c */
5236 
5237 int     RgV_is_arithprog(GEN v, GEN *a, GEN *b);
5238 GEN     constzeta(long n, long prec);
5239 GEN     cxEk(GEN tau, long k, long prec);
5240 double  dblmodulus(GEN x);
5241 GEN     dilog(GEN x, long prec);
5242 GEN     eint1(GEN x, long prec);
5243 GEN     expIPiR(GEN x, long prec);
5244 GEN     expIPiC(GEN z, long prec);
5245 GEN     expIxy(GEN x, GEN y, long prec);
5246 GEN     eta(GEN x, long prec);
5247 GEN     eta0(GEN x, long flag,long prec);
5248 GEN     gerfc(GEN x, long prec);
5249 GEN     glambertW(GEN y, long prec);
5250 GEN     gpolylog(long m, GEN x, long prec);
5251 GEN     gzeta(GEN x, long prec);
5252 GEN     hbessel1(GEN n, GEN z, long prec);
5253 GEN     hbessel2(GEN n, GEN z, long prec);
5254 GEN     hyperu(GEN a, GEN b, GEN gx, long prec);
5255 GEN     ibessel(GEN n, GEN z, long prec);
5256 GEN     incgam(GEN a, GEN x, long prec);
5257 GEN     incgam0(GEN a, GEN x, GEN z,long prec);
5258 GEN     incgamc(GEN a, GEN x, long prec);
5259 GEN     jbessel(GEN n, GEN z, long prec);
5260 GEN     jbesselh(GEN n, GEN z, long prec);
5261 GEN     jell(GEN x, long prec);
5262 GEN     kbessel(GEN nu, GEN gx, long prec);
5263 GEN     mpeint1(GEN x, GEN expx);
5264 GEN     mplambertW(GEN y);
5265 GEN     mpveceint1(GEN C, GEN eC, long n);
5266 GEN     nbessel(GEN n, GEN z, long prec);
5267 GEN     polylog0(long m, GEN x, long flag, long prec);
5268 GEN     sumdedekind(GEN h, GEN k);
5269 GEN     sumdedekind_coprime(GEN h, GEN k);
5270 GEN     szeta(long x, long prec);
5271 GEN     theta(GEN q, GEN z, long prec);
5272 GEN     thetanullk(GEN q, long k, long prec);
5273 GEN     trueeta(GEN x, long prec);
5274 GEN     u_sumdedekind_coprime(long h, long k);
5275 GEN     upper_to_cx(GEN x, long *prec);
5276 GEN     veceint1(GEN nmax, GEN C, long prec);
5277 GEN     vecthetanullk(GEN q, long k, long prec);
5278 GEN     vecthetanullk_tau(GEN tau, long k, long prec);
5279 GEN     veczeta(GEN a, GEN b, long N, long prec);
5280 GEN     weber0(GEN x, long flag,long prec);
5281 GEN     weberf(GEN x, long prec);
5282 GEN     weberf1(GEN x, long prec);
5283 GEN     weberf2(GEN x, long prec);
5284 GEN     zetahurwitz(GEN s, GEN x, long der, long bitprec);
5285 
5286 /* modsym.c */
5287 GEN     SL2_inv_shallow(GEN M);
5288 GEN     Qevproj_apply(GEN T, GEN pro);
5289 GEN     Qevproj_apply_vecei(GEN T, GEN pro, long k);
5290 GEN     Qevproj_down(GEN T, GEN pro);
5291 GEN     Qevproj_init(GEN M);
5292 GEN     RgX_act_Gl2Q(GEN g, long k);
5293 GEN     RgX_act_ZGl2Q(GEN z, long k);
5294 void    checkms(GEN W);
5295 void    checkmspadic(GEN W);
5296 GEN     ellpadiclambdamu(GEN E, long p, long D, long R);
5297 GEN     mfnumcusps(GEN n);
5298 GEN     mfnumcusps_fact(GEN fa);
5299 ulong   mfnumcuspsu_fact(GEN fa);
5300 ulong   mfnumcuspsu(ulong n);
5301 GEN     msfromcusp(GEN W, GEN c);
5302 GEN     msfromell(GEN E, long signe);
5303 GEN     msfromhecke(GEN W, GEN v, GEN H);
5304 long    msdim(GEN W);
5305 GEN     mseval2_ooQ(GEN W, GEN xpm, GEN c);
5306 long    msgetlevel(GEN W);
5307 long    msgetsign(GEN W);
5308 long    msgetweight(GEN W);
5309 GEN     msatkinlehner(GEN W, long Q, GEN);
5310 GEN     mscuspidal(GEN W, long flag);
5311 GEN     mseisenstein(GEN W);
5312 GEN     mseval(GEN W, GEN s, GEN p);
5313 GEN     mshecke(GEN W, long p, GEN H);
5314 GEN     msinit(GEN N, GEN k, long sign);
5315 GEN     msissymbol(GEN W, GEN s);
5316 GEN     mslattice(GEN M, GEN F);
5317 GEN     msomseval(GEN W, GEN phi, GEN path);
5318 void    mspadic_parse_chi(GEN s, GEN *s1, GEN *s2);
5319 GEN     mspadic_unit_eigenvalue(GEN ap, long k, GEN p, long n);
5320 GEN     mspadicinit(GEN W, long p, long n, long flag);
5321 GEN     mspadicL(GEN oms, GEN s, long r);
5322 GEN     mspadicmoments(GEN W, GEN phi, long D);
5323 GEN     mspadicseries(GEN M, long teichi);
5324 GEN     mspathgens(GEN W);
5325 GEN     mspathlog(GEN W, GEN path);
5326 GEN     msnew(GEN W);
5327 GEN     mspetersson(GEN W, GEN F1, GEN F2);
5328 GEN     mspolygon(GEN M, long flag);
5329 GEN     msstar(GEN W, GEN);
5330 GEN     msqexpansion(GEN W, GEN proV, ulong B);
5331 GEN     mssplit(GEN W, GEN H, long deglim);
5332 GEN     mstooms(GEN W, GEN phi);
5333 
5334 /* mscosets.c */
5335 GEN mscosets0(GEN V, GEN code);
5336 GEN mscosets(GEN V, void *E, long (*in)(void *, GEN));
5337 GEN msfarey(GEN F, void *E, long (*in)(void *, GEN), GEN *pCM);
5338 GEN msfarey0(GEN F, GEN code, GEN *pCM);
5339 int checkfarey_i(GEN F);
5340 
5341 /* zetamult.c */
5342 
5343 GEN     polylogmult(GEN avec, GEN zvec, long prec);
5344 GEN     polylogmult_interpolate(GEN avec, GEN zvec, GEN t, long prec);
5345 GEN     zetamult(GEN avec, long prec);
5346 GEN     zetamultdual(GEN s);
5347 GEN     zetamult_interpolate(GEN avec, GEN t, long prec);
5348 GEN     zetamultall(long k, long flag, long prec);
5349 GEN     zetamultconvert(GEN a, long fl);
5350 
5351 /* level1.h */
5352 
5353 INLINE ulong  Fl_add(ulong a, ulong b, ulong p);
5354 INLINE ulong  Fl_addmul_pre(ulong x0, ulong x1, ulong y0, ulong p, ulong pi);
5355 INLINE ulong  Fl_addmulmul_pre(ulong x0, ulong y0, ulong x1, ulong y1, ulong p, ulong pi);
5356 INLINE long   Fl_center(ulong u, ulong p, ulong ps2);
5357 INLINE ulong  Fl_div(ulong a, ulong b, ulong p);
5358 INLINE ulong  Fl_double(ulong a, ulong p);
5359 INLINE ulong  Fl_ellj_pre(ulong a4, ulong a6, ulong p, ulong pi);
5360 INLINE ulong  Fl_halve(ulong y, ulong p);
5361 INLINE ulong  Fl_mul(ulong a, ulong b, ulong p);
5362 INLINE ulong  Fl_mul_pre(ulong a, ulong b, ulong p, ulong pi);
5363 INLINE ulong  Fl_neg(ulong x, ulong p);
5364 INLINE ulong  Fl_sqr(ulong a, ulong p);
5365 INLINE ulong  Fl_sqr_pre(ulong a, ulong p, ulong pi);
5366 INLINE ulong  Fl_sub(ulong a, ulong b, ulong p);
5367 INLINE ulong  Fl_triple(ulong a, ulong p);
5368 INLINE ulong  Mod2(GEN x);
5369 INLINE ulong  Mod4(GEN x);
5370 INLINE ulong  Mod8(GEN x);
5371 INLINE ulong  Mod16(GEN x);
5372 INLINE ulong  Mod32(GEN x);
5373 INLINE ulong  Mod64(GEN x);
5374 INLINE int    abscmpiu(GEN x, ulong y);
5375 INLINE int    abscmpui(ulong x, GEN y);
5376 INLINE int    absequaliu(GEN x, ulong y);
5377 INLINE GEN    absi(GEN x);
5378 INLINE GEN    absi_shallow(GEN x);
5379 INLINE GEN    absr(GEN x);
5380 INLINE int    absrnz_equal1(GEN x);
5381 INLINE int    absrnz_equal2n(GEN x);
5382 INLINE GEN    addii(GEN x, GEN y);
5383 INLINE void   addiiz(GEN x, GEN y, GEN z);
5384 INLINE GEN    addir(GEN x, GEN y);
5385 INLINE void   addirz(GEN x, GEN y, GEN z);
5386 INLINE GEN    addis(GEN x, long s);
5387 INLINE GEN    addri(GEN x, GEN y);
5388 INLINE void   addriz(GEN x, GEN y, GEN z);
5389 INLINE GEN    addrr(GEN x, GEN y);
5390 INLINE void   addrrz(GEN x, GEN y, GEN z);
5391 INLINE GEN    addrs(GEN x, long s);
5392 INLINE GEN    addsi(long x, GEN y);
5393 INLINE void   addsiz(long s, GEN y, GEN z);
5394 INLINE void   addsrz(long s, GEN y, GEN z);
5395 INLINE GEN    addss(long x, long y);
5396 INLINE void   addssz(long s, long y, GEN z);
5397 INLINE GEN    adduu(ulong x, ulong y);
5398 INLINE void   affgr(GEN x, GEN y);
5399 INLINE void   affii(GEN x, GEN y);
5400 INLINE void   affiz(GEN x, GEN y);
5401 INLINE void   affrr_fixlg(GEN y, GEN z);
5402 INLINE void   affsi(long s, GEN x);
5403 INLINE void   affsr(long s, GEN x);
5404 INLINE void   affsz(long x, GEN y);
5405 INLINE void   affui(ulong s, GEN x);
5406 INLINE void   affur(ulong s, GEN x);
5407 INLINE GEN    cgetg(long x, long y);
5408 INLINE GEN    cgetg_block(long x, long y);
5409 INLINE GEN    cgetg_copy(GEN x, long *plx);
5410 INLINE GEN    cgeti(long x);
5411 INLINE GEN    cgetineg(long x);
5412 INLINE GEN    cgetipos(long x);
5413 INLINE GEN    cgetr(long x);
5414 INLINE GEN    cgetr_block(long prec);
5415 INLINE int    cmpir(GEN x, GEN y);
5416 INLINE int    cmpis(GEN x, long y);
5417 INLINE int    cmpiu(GEN x, ulong y);
5418 INLINE int    cmpri(GEN x, GEN y);
5419 INLINE int    cmprs(GEN x, long y);
5420 INLINE int    cmpsi(long x, GEN y);
5421 INLINE int    cmpsr(long x, GEN y);
5422 INLINE int    cmpss(long a, long b);
5423 INLINE int    cmpui(ulong x, GEN y);
5424 INLINE int    cmpuu(ulong a, ulong b);
5425 INLINE GEN    cxtofp(GEN x, long prec);
5426 INLINE GEN    divii(GEN a, GEN b);
5427 INLINE void   diviiz(GEN x, GEN y, GEN z);
5428 INLINE void   divirz(GEN x, GEN y, GEN z);
5429 INLINE void   divisz(GEN x, long s, GEN z);
5430 INLINE void   divriz(GEN x, GEN y, GEN z);
5431 INLINE void   divrrz(GEN x, GEN y, GEN z);
5432 INLINE void   divrsz(GEN y, long s, GEN z);
5433 INLINE GEN    divsi_rem(long x, GEN y, long *rem);
5434 INLINE void   divsiz(long x, GEN y, GEN z);
5435 INLINE void   divsrz(long s, GEN y, GEN z);
5436 INLINE GEN    divss(long x, long y);
5437 INLINE GEN    divss_rem(long x, long y, long *rem);
5438 INLINE void   divssz(long x, long y, GEN z);
5439 INLINE int    dvdii(GEN x, GEN y);
5440 INLINE int    dvdiiz(GEN x, GEN y, GEN z);
5441 INLINE int    dvdis(GEN x, long y);
5442 INLINE int    dvdisz(GEN x, long y, GEN z);
5443 INLINE int    dvdiu(GEN x, ulong y);
5444 INLINE int    dvdiuz(GEN x, ulong y, GEN z);
5445 INLINE int    dvdsi(long x, GEN y);
5446 INLINE int    dvdui(ulong x, GEN y);
5447 INLINE void   dvmdiiz(GEN x, GEN y, GEN z, GEN t);
5448 INLINE GEN    dvmdis(GEN x, long y, GEN *z);
5449 INLINE void   dvmdisz(GEN x, long y, GEN z, GEN t);
5450 INLINE long   dvmdsBIL(long n, long *r);
5451 INLINE GEN    dvmdsi(long x, GEN y, GEN *z);
5452 INLINE void   dvmdsiz(long x, GEN y, GEN z, GEN t);
5453 INLINE GEN    dvmdss(long x, long y, GEN *z);
5454 INLINE void   dvmdssz(long x, long y, GEN z, GEN t);
5455 INLINE ulong  dvmduBIL(ulong n, ulong *r);
5456 INLINE int    equalis(GEN x, long y);
5457 INLINE int    equalsi(long x, GEN y);
5458 INLINE int    equalui(ulong x, GEN y);
5459 INLINE int    equaliu(GEN x, ulong y);
5460 INLINE int    absequalui(ulong x, GEN y);
5461 INLINE ulong  ceildivuu(ulong a, ulong b);
5462 INLINE long   evalexpo(long x);
5463 INLINE long   evallg(long x);
5464 INLINE long   evalprecp(long x);
5465 INLINE long   evalvalp(long x);
5466 INLINE long   expi(GEN x);
5467 INLINE long   expu(ulong x);
5468 INLINE void   fixlg(GEN z, long ly);
5469 INLINE GEN    fractor(GEN x, long prec);
5470 INLINE int    gc_bool(pari_sp av, int s);
5471 INLINE GEN    gc_const(pari_sp av, GEN x);
5472 INLINE double gc_double(pari_sp av, double d);
5473 INLINE int    gc_int(pari_sp av, int s);
5474 INLINE long   gc_long(pari_sp av, long s);
5475 INLINE ulong  gc_ulong(pari_sp av, ulong s);
5476 INLINE GEN    gc_NULL(pari_sp av);
5477 INLINE GEN    icopy(GEN x);
5478 INLINE GEN    icopyspec(GEN x, long nx);
5479 INLINE GEN    icopy_avma(GEN x, pari_sp av);
5480 INLINE ulong  int_bit(GEN x, long n);
5481 INLINE GEN    itor(GEN x, long prec);
5482 INLINE long   itos(GEN x);
5483 INLINE long   itos_or_0(GEN x);
5484 INLINE ulong  itou(GEN x);
5485 INLINE ulong  itou_or_0(GEN x);
5486 INLINE GEN    leafcopy(GEN x);
5487 INLINE GEN    leafcopy_avma(GEN x, pari_sp av);
5488 INLINE double maxdd(double x, double y);
5489 INLINE long   maxss(long x, long y);
5490 INLINE long   maxuu(ulong x, ulong y);
5491 INLINE double mindd(double x, double y);
5492 INLINE long   minss(long x, long y);
5493 INLINE long   minuu(ulong x, ulong y);
5494 INLINE long   mod16(GEN x);
5495 INLINE long   mod2(GEN x);
5496 INLINE ulong  mod2BIL(GEN x);
5497 INLINE long   mod32(GEN x);
5498 INLINE long   mod4(GEN x);
5499 INLINE long   mod64(GEN x);
5500 INLINE long   mod8(GEN x);
5501 INLINE GEN    modis(GEN x, long y);
5502 INLINE void   modisz(GEN y, long s, GEN z);
5503 INLINE GEN    modsi(long x, GEN y);
5504 INLINE void   modsiz(long s, GEN y, GEN z);
5505 INLINE GEN    modss(long x, long y);
5506 INLINE void   modssz(long s, long y, GEN z);
5507 INLINE GEN    mpabs(GEN x);
5508 INLINE GEN    mpabs_shallow(GEN x);
5509 INLINE GEN    mpadd(GEN x, GEN y);
5510 INLINE void   mpaddz(GEN x, GEN y, GEN z);
5511 INLINE void   mpaff(GEN x, GEN y);
5512 INLINE GEN    mpceil(GEN x);
5513 INLINE int    mpcmp(GEN x, GEN y);
5514 INLINE GEN    mpcopy(GEN x);
5515 INLINE GEN    mpdiv(GEN x, GEN y);
5516 INLINE long   mpexpo(GEN x);
5517 INLINE GEN    mpfloor(GEN x);
5518 INLINE GEN    mpmul(GEN x, GEN y);
5519 INLINE void   mpmulz(GEN x, GEN y, GEN z);
5520 INLINE GEN    mpneg(GEN x);
5521 INLINE int    mpodd(GEN x);
5522 INLINE GEN    mpround(GEN x);
5523 INLINE GEN    mpshift(GEN x,long s);
5524 INLINE GEN    mpsqr(GEN x);
5525 INLINE GEN    mpsub(GEN x, GEN y);
5526 INLINE void   mpsubz(GEN x, GEN y, GEN z);
5527 INLINE GEN    mptrunc(GEN x);
5528 INLINE void   muliiz(GEN x, GEN y, GEN z);
5529 INLINE void   mulirz(GEN x, GEN y, GEN z);
5530 INLINE GEN    mulis(GEN x, long s);
5531 INLINE GEN    muliu(GEN x, ulong s);
5532 INLINE GEN    mulri(GEN x, GEN s);
5533 INLINE void   mulriz(GEN x, GEN y, GEN z);
5534 INLINE void   mulrrz(GEN x, GEN y, GEN z);
5535 INLINE GEN    mulrs(GEN x, long s);
5536 INLINE GEN    mulru(GEN x, ulong s);
5537 INLINE void   mulsiz(long s, GEN y, GEN z);
5538 INLINE void   mulsrz(long s, GEN y, GEN z);
5539 INLINE void   mulssz(long s, long y, GEN z);
5540 INLINE GEN    negi(GEN x);
5541 INLINE GEN    negr(GEN x);
5542 INLINE GEN    new_chunk(size_t x);
5543 INLINE GEN    rcopy(GEN x);
5544 INLINE GEN    rdivii(GEN x, GEN y, long prec);
5545 INLINE void   rdiviiz(GEN x, GEN y, GEN z);
5546 INLINE GEN    rdivis(GEN x, long y, long prec);
5547 INLINE GEN    rdivsi(long x, GEN y, long prec);
5548 INLINE GEN    rdivss(long x, long y, long prec);
5549 INLINE GEN    real2n(long n, long prec);
5550 INLINE GEN    real_m2n(long n, long prec);
5551 INLINE GEN    real_0(long prec);
5552 INLINE GEN    real_0_bit(long bitprec);
5553 INLINE GEN    real_1(long prec);
5554 INLINE GEN    real_1_bit(long bit);
5555 INLINE GEN    real_m1(long prec);
5556 INLINE GEN    remii(GEN a, GEN b);
5557 INLINE void   remiiz(GEN x, GEN y, GEN z);
5558 INLINE GEN    remis(GEN x, long y);
5559 INLINE void   remisz(GEN y, long s, GEN z);
5560 INLINE ulong  remlll_pre(ulong u2, ulong u1, ulong u0, ulong p, ulong pi);
5561 INLINE GEN    remsi(long x, GEN y);
5562 INLINE void   remsiz(long s, GEN y, GEN z);
5563 INLINE GEN    remss(long x, long y);
5564 INLINE void   remssz(long s, long y, GEN z);
5565 INLINE GEN    rtor(GEN x, long prec);
5566 INLINE long   sdivsi(long x, GEN y);
5567 INLINE long   sdivsi_rem(long x, GEN y, long *rem);
5568 INLINE long   sdivss_rem(long x, long y, long *rem);
5569 INLINE void   set_avma(ulong av);
5570 INLINE ulong  uabsdiviu_rem(GEN n, ulong d, ulong *r);
5571 INLINE ulong  udivuu_rem(ulong x, ulong y, ulong *r);
5572 INLINE ulong  umodi2n(GEN x, long n);
5573 INLINE void   setabssign(GEN x);
5574 INLINE void   shift_left(GEN z2, GEN z1, long min, long M, ulong f,  ulong sh);
5575 INLINE void   shift_right(GEN z2, GEN z1, long min, long M, ulong f, ulong sh);
5576 INLINE ulong  shiftl(ulong x, ulong y);
5577 INLINE ulong  shiftlr(ulong x, ulong y);
5578 INLINE GEN    shiftr(GEN x, long n);
5579 INLINE void   shiftr_inplace(GEN z, long d);
5580 INLINE long   smodis(GEN x, long y);
5581 INLINE long   smodss(long x, long y);
5582 INLINE void   stackdummy(pari_sp av, pari_sp ltop);
5583 INLINE char  *stack_malloc(size_t N);
5584 INLINE char  *stack_malloc_align(size_t N, long k);
5585 INLINE char  *stack_calloc(size_t N);
5586 INLINE char  *stack_calloc_align(size_t N, long k);
5587 INLINE GEN    stoi(long x);
5588 INLINE GEN    stor(long x, long prec);
5589 INLINE GEN    subii(GEN x, GEN y);
5590 INLINE void   subiiz(GEN x, GEN y, GEN z);
5591 INLINE GEN    subir(GEN x, GEN y);
5592 INLINE void   subirz(GEN x, GEN y, GEN z);
5593 INLINE GEN    subis(GEN x, long y);
5594 INLINE void   subisz(GEN y, long s, GEN z);
5595 INLINE GEN    subri(GEN x, GEN y);
5596 INLINE void   subriz(GEN x, GEN y, GEN z);
5597 INLINE GEN    subrr(GEN x, GEN y);
5598 INLINE void   subrrz(GEN x, GEN y, GEN z);
5599 INLINE GEN    subrs(GEN x, long y);
5600 INLINE void   subrsz(GEN y, long s, GEN z);
5601 INLINE GEN    subsi(long x, GEN y);
5602 INLINE void   subsiz(long s, GEN y, GEN z);
5603 INLINE void   subsrz(long s, GEN y, GEN z);
5604 INLINE GEN    subss(long x, long y);
5605 INLINE void   subssz(long x, long y, GEN z);
5606 INLINE GEN    subuu(ulong x, ulong y);
5607 INLINE void   togglesign(GEN x);
5608 INLINE void   togglesign_safe(GEN *px);
5609 INLINE void   affectsign(GEN x, GEN y);
5610 INLINE void   affectsign_safe(GEN x, GEN *py);
5611 INLINE GEN    truedivii(GEN a,GEN b);
5612 INLINE GEN    truedivis(GEN a, long b);
5613 INLINE GEN    truedivsi(long a, GEN b);
5614 INLINE ulong  uabsdivui_rem(ulong x, GEN y, ulong *rem);
5615 INLINE ulong  umodsu(long x, ulong y);
5616 INLINE ulong  umodui(ulong x, GEN y);
5617 INLINE ulong  ugcdiu(GEN x, ulong y);
5618 INLINE ulong  ugcdui(ulong y, GEN x);
5619 INLINE ulong  umuluu_le(ulong x, ulong y, ulong n);
5620 INLINE ulong  umuluu_or_0(ulong x, ulong y);
5621 INLINE GEN    utoi(ulong x);
5622 INLINE GEN    utoineg(ulong x);
5623 INLINE GEN    utoipos(ulong x);
5624 INLINE GEN    utor(ulong s, long prec);
5625 INLINE GEN    uutoi(ulong x, ulong y);
5626 INLINE GEN    uutoineg(ulong x, ulong y);
5627 INLINE long   vali(GEN x);
5628 INLINE int    varncmp(long x, long y);
5629 INLINE long   varnmax(long x, long y);
5630 INLINE long   varnmin(long x, long y);
5631 
5632 /* pariinl.h */
5633 INLINE GEN    abgrp_get_cyc(GEN x);
5634 INLINE GEN    abgrp_get_gen(GEN x);
5635 INLINE GEN    abgrp_get_no(GEN x);
5636 INLINE GEN    bid_get_arch(GEN bid);
5637 INLINE GEN    bid_get_archp(GEN bid);
5638 INLINE GEN    bid_get_cyc(GEN bid);
5639 INLINE GEN    bid_get_fact(GEN bid);
5640 INLINE GEN    bid_get_fact2(GEN bid);
5641 INLINE GEN    bid_get_gen(GEN bid);
5642 INLINE GEN    bid_get_gen_nocheck(GEN bid);
5643 INLINE GEN    bid_get_grp(GEN bid);
5644 INLINE GEN    bid_get_ideal(GEN bid);
5645 INLINE GEN    bid_get_mod(GEN bid);
5646 INLINE GEN    bid_get_no(GEN bid);
5647 INLINE GEN    bid_get_sarch(GEN bid);
5648 INLINE GEN    bid_get_sprk(GEN bid);
5649 INLINE GEN    bid_get_U(GEN bid);
5650 INLINE GEN    bnf_get_clgp(GEN bnf);
5651 INLINE GEN    bnf_get_cyc(GEN bnf);
5652 INLINE GEN    bnf_get_fu(GEN bnf);
5653 INLINE GEN    bnf_get_fu_nocheck(GEN bnf);
5654 INLINE GEN    bnf_get_gen(GEN bnf);
5655 INLINE GEN    bnf_get_logfu(GEN bnf);
5656 INLINE GEN    bnf_get_nf(GEN bnf);
5657 INLINE GEN    bnf_get_no(GEN bnf);
5658 INLINE GEN    bnf_get_reg(GEN bnf);
5659 INLINE GEN    bnf_get_sunits(GEN bnf);
5660 INLINE GEN    bnf_get_tuU(GEN bnf);
5661 INLINE long   bnf_get_tuN(GEN bnf);
5662 INLINE GEN    bnr_get_bnf(GEN bnr);
5663 INLINE GEN    bnr_get_clgp(GEN bnr);
5664 INLINE GEN    bnr_get_cyc(GEN bnr);
5665 INLINE GEN    bnr_get_gen(GEN bnr);
5666 INLINE GEN    bnr_get_gen_nocheck(GEN bnr);
5667 INLINE GEN    bnr_get_no(GEN bnr);
5668 INLINE GEN    bnr_get_bid(GEN bnr);
5669 INLINE GEN    bnr_get_mod(GEN bnr);
5670 INLINE GEN    bnr_get_nf(GEN bnr);
5671 INLINE int    checkell_i(GEN e);
5672 INLINE GEN    cyc_get_expo(GEN c);
5673 INLINE GEN    ell_get_a1(GEN e);
5674 INLINE GEN    ell_get_a2(GEN e);
5675 INLINE GEN    ell_get_a3(GEN e);
5676 INLINE GEN    ell_get_a4(GEN e);
5677 INLINE GEN    ell_get_a6(GEN e);
5678 INLINE GEN    ell_get_b2(GEN e);
5679 INLINE GEN    ell_get_b4(GEN e);
5680 INLINE GEN    ell_get_b6(GEN e);
5681 INLINE GEN    ell_get_b8(GEN e);
5682 INLINE GEN    ell_get_c4(GEN e);
5683 INLINE GEN    ell_get_c6(GEN e);
5684 INLINE GEN    ell_get_disc(GEN e);
5685 INLINE GEN    ell_get_j(GEN e);
5686 INLINE long   ell_get_type(GEN e);
5687 INLINE int    ell_is_inf(GEN z);
5688 INLINE GEN    ellinf(void);
5689 INLINE GEN    ellff_get_field(GEN x);
5690 INLINE GEN    ellff_get_a4a6(GEN x);
5691 INLINE GEN    ellnf_get_bnf(GEN x);
5692 INLINE GEN    ellnf_get_nf(GEN x);
5693 INLINE GEN    ellQp_get_p(GEN E);
5694 INLINE long   ellQp_get_prec(GEN E);
5695 INLINE GEN    ellQp_get_zero(GEN x);
5696 INLINE long   ellR_get_prec(GEN x);
5697 INLINE long   ellR_get_sign(GEN x);
5698 INLINE GEN    gal_get_pol(GEN gal);
5699 INLINE GEN    gal_get_p(GEN gal);
5700 INLINE GEN    gal_get_e(GEN gal);
5701 INLINE GEN    gal_get_mod(GEN gal);
5702 INLINE GEN    gal_get_roots(GEN gal);
5703 INLINE GEN    gal_get_invvdm(GEN gal);
5704 INLINE GEN    gal_get_den(GEN gal);
5705 INLINE GEN    gal_get_group(GEN gal);
5706 INLINE GEN    gal_get_gen(GEN gal);
5707 INLINE GEN    gal_get_orders(GEN gal);
5708 INLINE ulong  hash_str(const char *str);
5709 INLINE ulong  hash_str_len(const char *s, long len);
5710 INLINE GEN    idealchineseinit(GEN nf, GEN x);
5711 INLINE GEN    idealpseudomin(GEN I, GEN G);
5712 INLINE GEN    idealpseudomin_nonscalar(GEN I, GEN G);
5713 INLINE GEN    idealpseudominvec(GEN I, GEN G);
5714 INLINE GEN    idealpseudored(GEN I, GEN G);
5715 INLINE GEN    idealred_elt(GEN nf, GEN I);
5716 INLINE GEN    idealred(GEN nf, GEN I);
5717 INLINE long   logint(GEN B, GEN y);
5718 INLINE ulong  ulogint(ulong B, ulong y);
5719 INLINE GEN    modpr_get_pr(GEN x);
5720 INLINE GEN    modpr_get_p(GEN x);
5721 INLINE GEN    modpr_get_T(GEN x);
5722 INLINE GEN    nf_get_M(GEN nf);
5723 INLINE GEN    nf_get_G(GEN nf);
5724 INLINE GEN    nf_get_Tr(GEN nf);
5725 INLINE GEN    nf_get_diff(GEN nf);
5726 INLINE long   nf_get_degree(GEN nf);
5727 INLINE GEN    nf_get_disc(GEN nf);
5728 INLINE GEN    nf_get_index(GEN nf);
5729 INLINE GEN    nf_get_invzk(GEN nf);
5730 INLINE GEN    nf_get_pol(GEN nf);
5731 INLINE long   nf_get_r1(GEN nf);
5732 INLINE long   nf_get_r2(GEN nf);
5733 INLINE GEN    nf_get_ramified_primes(GEN nf);
5734 INLINE GEN    nf_get_roots(GEN nf);
5735 INLINE GEN    nf_get_roundG(GEN nf);
5736 INLINE void   nf_get_sign(GEN nf, long *r1, long *r2);
5737 INLINE long   nf_get_varn(GEN nf);
5738 INLINE GEN    nf_get_zk(GEN nf);
5739 INLINE GEN    nf_get_zkden(GEN nf);
5740 INLINE GEN    nf_get_zkprimpart(GEN nf);
5741 INLINE long   pr_get_e(GEN pr);
5742 INLINE long   pr_get_f(GEN pr);
5743 INLINE GEN    pr_get_gen(GEN pr);
5744 INLINE GEN    pr_get_p(GEN pr);
5745 INLINE GEN    pr_get_tau(GEN pr);
5746 INLINE int    pr_is_inert(GEN P);
5747 INLINE GEN    pr_norm(GEN pr);
5748 INLINE GEN    rnf_get_alpha(GEN rnf);
5749 INLINE long   rnf_get_absdegree(GEN rnf);
5750 INLINE long   rnf_get_degree(GEN rnf);
5751 INLINE GEN    rnf_get_disc(GEN rnf);
5752 INLINE GEN    rnf_get_idealdisc(GEN rnf);
5753 INLINE GEN    rnf_get_index(GEN rnf);
5754 INLINE GEN    rnf_get_invzk(GEN rnf);
5755 INLINE GEN    rnf_get_k(GEN rnf);
5756 INLINE GEN    rnf_get_map(GEN rnf);
5757 INLINE GEN    rnf_get_nf(GEN rnf);
5758 INLINE long   rnf_get_nfdegree(GEN rnf);
5759 INLINE GEN    rnf_get_nfpol(GEN rnf);
5760 INLINE long   rnf_get_nfvarn(GEN rnf);
5761 INLINE GEN    rnf_get_pol(GEN rnf);
5762 INLINE GEN    rnf_get_polabs(GEN rnf);
5763 INLINE GEN    rnf_get_ramified_primes(GEN rnf);
5764 INLINE GEN    rnf_get_zk(GEN nf);
5765 INLINE GEN    rnf_get_nfzk(GEN rnf);
5766 INLINE long   rnf_get_varn(GEN rnf);
5767 INLINE ulong  upr_norm(GEN pr);
5768 INLINE GEN    znstar_get_N(GEN G);
5769 INLINE GEN    znstar_get_conreycyc(GEN G);
5770 INLINE GEN    znstar_get_conreygen(GEN G);
5771 INLINE GEN    znstar_get_cyc(GEN G);
5772 INLINE GEN    znstar_get_faN(GEN G);
5773 INLINE GEN    znstar_get_gen(GEN G);
5774 INLINE GEN    znstar_get_no(GEN G);
5775 INLINE GEN    znstar_get_pe(GEN G);
5776 INLINE GEN    znstar_get_U(GEN G);
5777 INLINE GEN    znstar_get_Ui(GEN G);
5778 
5779 INLINE long   closure_arity(GEN C);
5780 INLINE const char * closure_codestr(GEN C);
5781 INLINE GEN    closure_get_code(GEN C);
5782 INLINE GEN    closure_get_oper(GEN C);
5783 INLINE GEN    closure_get_data(GEN C);
5784 INLINE GEN    closure_get_dbg(GEN C);
5785 INLINE GEN    closure_get_text(GEN C);
5786 INLINE GEN    closure_get_frame(GEN C);
5787 INLINE long   closure_is_variadic(GEN C);
5788 
5789 INLINE GEN    addmuliu(GEN x, GEN y, ulong u);
5790 INLINE GEN    addmuliu_inplace(GEN x, GEN y, ulong u);
5791 INLINE GEN    lincombii(GEN u, GEN v, GEN x, GEN y);
5792 INLINE GEN    mulsubii(GEN y, GEN z, GEN x);
5793 INLINE GEN    submulii(GEN x, GEN y, GEN z);
5794 INLINE GEN    submuliu(GEN x, GEN y, ulong u);
5795 INLINE GEN    submuliu_inplace(GEN x, GEN y, ulong u);
5796 
5797 INLINE GEN    FpXQ_add(GEN x,GEN y,GEN T,GEN p);
5798 INLINE GEN    FpXQ_sub(GEN x,GEN y,GEN T,GEN p);
5799 INLINE GEN    Flxq_add(GEN x,GEN y,GEN T,ulong p);
5800 INLINE GEN    Flxq_sub(GEN x,GEN y,GEN T,ulong p);
5801 
5802 INLINE GEN    FpXQX_div(GEN x, GEN y, GEN T, GEN p);
5803 INLINE GEN    FlxqX_div(GEN x, GEN y, GEN T, ulong p);
5804 INLINE GEN    F2xqX_div(GEN x, GEN y, GEN T);
5805 
5806 INLINE GEN    Rg_to_Fq(GEN x, GEN T, GEN p);
5807 INLINE GEN    Fq_red(GEN x, GEN T, GEN p);
5808 INLINE GEN    Fq_to_FpXQ(GEN x, GEN T, GEN p);
5809 INLINE GEN    gener_Fq_local(GEN T, GEN p, GEN L);
5810 INLINE GEN    FpXY_Fq_evaly(GEN Q, GEN y, GEN T, GEN p, long vx);
5811 INLINE GEN    FqX_Fp_mul(GEN P, GEN U, GEN T, GEN p);
5812 INLINE GEN    FqX_Fq_mul(GEN P, GEN U, GEN T, GEN p);
5813 INLINE GEN    FqX_add(GEN x,GEN y,GEN T,GEN p);
5814 INLINE GEN    FqX_ddf(GEN f, GEN T, GEN p);
5815 INLINE GEN    FqX_degfact(GEN f, GEN T, GEN p);
5816 INLINE GEN    FqX_deriv(GEN f, GEN T, GEN p);
5817 INLINE GEN    FqX_div(GEN x, GEN y, GEN T, GEN p);
5818 INLINE GEN    FqX_div_by_X_x(GEN x, GEN y, GEN T, GEN p, GEN *z);
5819 INLINE GEN    FqX_divrem(GEN x, GEN y, GEN T, GEN p, GEN *z);
5820 INLINE GEN    FqX_extgcd(GEN P,GEN Q,GEN T,GEN p, GEN *U, GEN *V);
5821 INLINE GEN    FqX_factor(GEN f, GEN T, GEN p);
5822 INLINE GEN    FqX_factor_squarefree(GEN f, GEN T, GEN p);
5823 INLINE GEN    FqX_gcd(GEN P, GEN Q, GEN T, GEN p);
5824 INLINE GEN    FqX_get_red(GEN S, GEN T, GEN p);
5825 INLINE GEN    FqX_halfgcd(GEN P,GEN Q,GEN T,GEN p);
5826 INLINE GEN    FqX_halve(GEN x, GEN T, GEN p);
5827 INLINE GEN    FqX_integ(GEN f, GEN T, GEN p);
5828 INLINE GEN    FqX_mul(GEN x, GEN y, GEN T, GEN p);
5829 INLINE GEN    FqX_mulu(GEN x, ulong y, GEN T, GEN p);
5830 INLINE GEN    FqX_neg(GEN x, GEN T, GEN p);
5831 INLINE GEN    FqX_normalize(GEN z, GEN T, GEN p);
5832 INLINE GEN    FqX_powu(GEN x, ulong n, GEN T, GEN p);
5833 INLINE GEN    FqX_red(GEN z, GEN T, GEN p);
5834 INLINE GEN    FqX_rem(GEN x, GEN y, GEN T, GEN p);
5835 INLINE GEN    FqX_roots(GEN f, GEN T, GEN p);
5836 INLINE GEN    FqX_sqr(GEN x, GEN T, GEN p);
5837 INLINE GEN    FqX_sub(GEN x,GEN y,GEN T,GEN p);
5838 INLINE GEN    FqX_to_mod(GEN f, GEN T, GEN p);
5839 
5840 INLINE GEN    FqXQ_add(GEN x, GEN y, GEN S, GEN T, GEN p);
5841 INLINE GEN    FqXQ_div(GEN x, GEN y, GEN S, GEN T, GEN p);
5842 INLINE GEN    FqXQ_inv(GEN x, GEN S, GEN T, GEN p);
5843 INLINE GEN    FqXQ_invsafe(GEN x, GEN S, GEN T, GEN p);
5844 INLINE GEN    FqXQ_mul(GEN x, GEN y, GEN S, GEN T, GEN p);
5845 INLINE GEN    FqXQ_pow(GEN x, GEN n, GEN S, GEN T, GEN p);
5846 INLINE GEN    FqXQ_sqr(GEN x, GEN S, GEN T, GEN p);
5847 INLINE GEN    FqXQ_sub(GEN x, GEN y, GEN S, GEN T, GEN p);
5848 
5849 INLINE GEN    FqXn_exp(GEN x, long n, GEN T, GEN p);
5850 INLINE GEN    FqXn_expint(GEN x, long n, GEN T, GEN p);
5851 INLINE GEN    FqXn_inv(GEN x, long n, GEN T, GEN p);
5852 INLINE GEN    FqXn_mul(GEN x, GEN y, long n, GEN T, GEN p);
5853 INLINE GEN    FqXn_sqr(GEN x, long n, GEN T, GEN p);
5854 
5855 INLINE long   get_F2x_degree(GEN T);
5856 INLINE GEN    get_F2x_mod(GEN T);
5857 INLINE long   get_F2x_var(GEN T);
5858 INLINE long   get_F2xqX_degree(GEN T);
5859 INLINE GEN    get_F2xqX_mod(GEN T);
5860 INLINE long   get_F2xqX_var(GEN T);
5861 INLINE long   get_Flx_degree(GEN T);
5862 INLINE GEN    get_Flx_mod(GEN T);
5863 INLINE long   get_Flx_var(GEN T);
5864 INLINE long   get_FlxqX_degree(GEN T);
5865 INLINE GEN    get_FlxqX_mod(GEN T);
5866 INLINE long   get_FlxqX_var(GEN T);
5867 INLINE long   get_FpX_degree(GEN T);
5868 INLINE GEN    get_FpX_mod(GEN T);
5869 INLINE long   get_FpX_var(GEN T);
5870 INLINE long   get_FpXQX_degree(GEN T);
5871 INLINE GEN    get_FpXQX_mod(GEN T);
5872 INLINE long   get_FpXQX_var(GEN T);
5873 
5874 INLINE ulong  F2m_coeff(GEN x, long a, long b);
5875 INLINE void   F2m_clear(GEN x, long a, long b);
5876 INLINE void   F2m_flip(GEN x, long a, long b);
5877 INLINE void   F2m_set(GEN x, long a, long b);
5878 INLINE void   F2v_clear(GEN x,long v);
5879 INLINE ulong  F2v_coeff(GEN x,long v);
5880 INLINE void   F2v_flip(GEN x,long v);
5881 INLINE GEN    F2v_to_F2x(GEN x, long sv);
5882 INLINE void   F2v_set(GEN x,long v);
5883 INLINE void   F2x_clear(GEN x,long v);
5884 INLINE ulong  F2x_coeff(GEN x,long v);
5885 INLINE void   F2x_flip(GEN x,long v);
5886 INLINE void   F2x_set(GEN x,long v);
5887 INLINE int    F2x_equal1(GEN x);
5888 INLINE int    F2x_equal(GEN V, GEN W);
5889 INLINE GEN    F2x_div(GEN x, GEN y);
5890 INLINE GEN    F2x_renormalize(GEN x, long lx);
5891 INLINE GEN    F2m_copy(GEN x);
5892 INLINE GEN    F2v_copy(GEN x);
5893 INLINE GEN    F2x_copy(GEN x);
5894 INLINE GEN    F2v_ei(long n, long i);
5895 INLINE GEN    Flm_copy(GEN x);
5896 INLINE GEN    Flv_copy(GEN x);
5897 INLINE int    Flx_equal1(GEN x);
5898 INLINE ulong  Flx_constant(GEN x);
5899 INLINE GEN    Flx_copy(GEN x);
5900 INLINE GEN    Flx_div(GEN x, GEN y, ulong p);
5901 INLINE ulong  Flx_lead(GEN x);
5902 INLINE GEN    Flx_mulu(GEN x, ulong a, ulong p);
5903 INLINE GEN    Fp_divu(GEN x, ulong a, GEN p);
5904 INLINE GEN    FpV_FpC_mul(GEN x, GEN y, GEN p);
5905 INLINE GEN    FpXQX_renormalize(GEN x, long lx);
5906 INLINE GEN    FpXX_renormalize(GEN x, long lx);
5907 INLINE GEN    FpX_div(GEN x, GEN y, GEN p);
5908 INLINE GEN    FpX_renormalize(GEN x, long lx);
5909 INLINE GEN    Fp_add(GEN a, GEN b, GEN m);
5910 INLINE GEN    Fp_addmul(GEN x, GEN y, GEN z, GEN p);
5911 INLINE GEN    Fp_center(GEN u, GEN p, GEN ps2);
5912 INLINE GEN    Fp_center_i(GEN u, GEN p, GEN ps2);
5913 INLINE GEN    Fp_div(GEN a, GEN b, GEN m);
5914 INLINE GEN    Fp_halve(GEN y, GEN p);
5915 INLINE GEN    Fp_inv(GEN a, GEN m);
5916 INLINE GEN    Fp_invsafe(GEN a, GEN m);
5917 INLINE GEN    Fp_mul(GEN a, GEN b, GEN m);
5918 INLINE GEN    Fp_muls(GEN a, long b, GEN m);
5919 INLINE GEN    Fp_mulu(GEN a, ulong b, GEN m);
5920 INLINE GEN    Fp_neg(GEN b, GEN m);
5921 INLINE GEN    Fp_red(GEN x, GEN p);
5922 INLINE GEN    Fp_sqr(GEN a, GEN m);
5923 INLINE GEN    Fp_sub(GEN a, GEN b, GEN m);
5924 INLINE GEN    GENbinbase(GENbin *p);
5925 INLINE GEN    Q_abs(GEN x);
5926 INLINE GEN    Q_abs_shallow(GEN x);
5927 INLINE int    QV_isscalar(GEN x);
5928 INLINE void   Qtoss(GEN q, long *n, long *d);
5929 INLINE GEN    R_abs(GEN x);
5930 INLINE GEN    R_abs_shallow(GEN x);
5931 INLINE GEN    RgC_fpnorml2(GEN x, long prec);
5932 INLINE GEN    RgC_gtofp(GEN x, long prec);
5933 INLINE GEN    RgC_gtomp(GEN x, long prec);
5934 INLINE void   RgM_dimensions(GEN x, long *m, long *n);
5935 INLINE GEN    RgM_fpnorml2(GEN x, long prec);
5936 INLINE GEN    RgM_gtofp(GEN x, long prec);
5937 INLINE GEN    RgM_gtomp(GEN x, long prec);
5938 INLINE GEN    RgM_minor(GEN a, long i, long j);
5939 INLINE GEN    RgM_shallowcopy(GEN x);
5940 INLINE GEN    RgV_gtofp(GEN x, long prec);
5941 INLINE int    RgV_isscalar(GEN x);
5942 INLINE long   RgV_isin(GEN v, GEN x);
5943 INLINE long   RgV_isin_i(GEN v, GEN x, long n);
5944 INLINE int    RgV_is_ZV(GEN x);
5945 INLINE int    RgV_is_QV(GEN x);
5946 INLINE long   RgX_equal_var(GEN x, GEN y);
5947 INLINE int    RgX_is_monomial(GEN x);
5948 INLINE int    RgX_is_rational(GEN x);
5949 INLINE int    RgX_is_QX(GEN x);
5950 INLINE int    RgX_is_ZX(GEN x);
5951 INLINE int    RgX_isscalar(GEN x);
5952 INLINE GEN    RgX_shift_inplace(GEN x, long v);
5953 INLINE void   RgX_shift_inplace_init(long v);
5954 INLINE GEN    RgXQX_div(GEN x, GEN y, GEN T);
5955 INLINE GEN    RgXQX_rem(GEN x, GEN y, GEN T);
5956 INLINE GEN    RgX_coeff(GEN x, long n);
5957 INLINE GEN    RgX_copy(GEN x);
5958 INLINE GEN    RgX_div(GEN x, GEN y);
5959 INLINE GEN    RgX_fpnorml2(GEN x, long prec);
5960 INLINE GEN    RgX_gtofp(GEN x, long prec);
5961 INLINE GEN    RgX_renormalize(GEN x);
5962 INLINE GEN    Rg_col_ei(GEN x, long n, long i);
5963 INLINE GEN    ZC_hnfrem(GEN x, GEN y);
5964 INLINE GEN    ZM_hnfrem(GEN x, GEN y);
5965 INLINE GEN    ZM_lll(GEN x, double D, long f);
5966 INLINE int    ZV_dvd(GEN x, GEN y);
5967 INLINE int    ZV_isscalar(GEN x);
5968 INLINE GEN    ZV_to_zv(GEN x);
5969 INLINE int    ZX_equal1(GEN x);
5970 INLINE int    ZX_is_monic(GEN x);
5971 INLINE GEN    ZX_renormalize(GEN x, long lx);
5972 INLINE GEN    ZXQ_mul(GEN x,GEN y,GEN T);
5973 INLINE GEN    ZXQ_sqr(GEN x,GEN T);
5974 INLINE long   Z_ispower(GEN x, ulong k);
5975 INLINE long   Z_issquare(GEN x);
5976 INLINE GEN    absfrac(GEN x);
5977 INLINE GEN    absfrac_shallow(GEN x);
5978 INLINE GEN    affc_fixlg(GEN x, GEN res);
5979 INLINE GEN    bin_copy(GENbin *p);
5980 INLINE long   bit_accuracy(long x);
5981 INLINE double bit_accuracy_mul(long x, double y);
5982 INLINE long   bit_prec(GEN x);
5983 INLINE int    both_odd(long x, long y);
5984 INLINE GEN    cbrtr(GEN x);
5985 INLINE GEN    cbrtr_abs(GEN x);
5986 INLINE GEN    cgetc(long x);
5987 INLINE GEN    cgetalloc(long t, size_t l);
5988 INLINE void   cgiv(GEN x);
5989 INLINE GEN    col_ei(long n, long i);
5990 INLINE GEN    const_col(long n, GEN x);
5991 INLINE GEN    const_vec(long n, GEN x);
5992 INLINE GEN    const_vecsmall(long n, long c);
5993 INLINE GEN    constant_coeff(GEN x);
5994 INLINE GEN    cxcompotor(GEN z, long prec);
5995 INLINE GEN    cxnorm(GEN x);
5996 INLINE GEN    cxtoreal(GEN q);
5997 INLINE GEN    cyclic_perm(long l, long d);
5998 INLINE double dbllog2r(GEN x);
5999 INLINE long   degpol(GEN x);
6000 INLINE long   divsBIL(long n);
6001 INLINE void   gabsz(GEN x, long prec, GEN z);
6002 INLINE GEN    gaddgs(GEN y, long s);
6003 INLINE void   gaddz(GEN x, GEN y, GEN z);
6004 INLINE int    gcmpgs(GEN y, long s);
6005 INLINE void   gdiventz(GEN x, GEN y, GEN z);
6006 INLINE GEN    gdivsg(long s, GEN y);
6007 INLINE void   gdivz(GEN x, GEN y, GEN z);
6008 INLINE GEN    gen_I(void);
6009 INLINE void   gerepileall(pari_sp av, int n, ...);
6010 INLINE void   gerepilecoeffs(pari_sp av, GEN x, int n);
6011 INLINE GEN    gerepilecopy(pari_sp av, GEN x);
6012 INLINE void   gerepilemany(pari_sp av, GEN* g[], int n);
6013 INLINE int    gequalgs(GEN y, long s);
6014 INLINE GEN    gerepileupto(pari_sp av, GEN q);
6015 INLINE GEN    gerepileuptoint(pari_sp av, GEN q);
6016 INLINE GEN    gerepileuptoleaf(pari_sp av, GEN q);
6017 INLINE int    gisdouble(GEN x, double *g);
6018 INLINE GEN    gmax_shallow(GEN x, GEN y);
6019 INLINE GEN    gmaxsg(long s, GEN y);
6020 INLINE GEN    gmin_shallow(GEN x, GEN y);
6021 INLINE GEN    gminsg(long s, GEN y);
6022 INLINE void   gmodz(GEN x, GEN y, GEN z);
6023 INLINE void   gmul2nz(GEN x, long s, GEN z);
6024 INLINE GEN    gmulgs(GEN y, long s);
6025 INLINE void   gmulz(GEN x, GEN y, GEN z);
6026 INLINE void   gnegz(GEN x, GEN z);
6027 INLINE void   gshiftz(GEN x, long s, GEN z);
6028 INLINE GEN    gsubgs(GEN y, long s);
6029 INLINE void   gsubz(GEN x, GEN y, GEN z);
6030 INLINE double gtodouble(GEN x);
6031 INLINE GEN    gtofp(GEN z, long prec);
6032 INLINE GEN    gtomp(GEN z, long prec);
6033 INLINE long   gtos(GEN x);
6034 INLINE ulong  gtou(GEN x);
6035 INLINE void   guncloneNULL(GEN x);
6036 INLINE void   guncloneNULL_deep(GEN x);
6037 INLINE long   gval(GEN x, long v);
6038 INLINE GEN    identity_perm(long l);
6039 INLINE GEN    identity_zv(long n);
6040 INLINE GEN    identity_ZV(long n);
6041 INLINE int    equali1(GEN n);
6042 INLINE int    equalim1(GEN n);
6043 INLINE long   inf_get_sign(GEN x);
6044 INLINE GEN    inv_content(GEN c);
6045 INLINE int    is_bigint(GEN n);
6046 INLINE int    is_const_t(long t);
6047 INLINE int    is_extscalar_t(long t);
6048 INLINE int    is_intreal_t(long t);
6049 INLINE int    is_matvec_t(long t);
6050 INLINE int    is_noncalc_t(long tx);
6051 INLINE int    is_pm1(GEN n);
6052 INLINE int    is_qfb_t(long t);
6053 INLINE int    is_rational_t(long t);
6054 INLINE int    is_real_t(long t);
6055 INLINE int    is_recursive_t(long t);
6056 INLINE int    is_scalar_t(long t);
6057 INLINE int    is_universal_constant(GEN x);
6058 INLINE int    is_vec_t(long t);
6059 INLINE int    isint1(GEN x);
6060 INLINE int    isintm1(GEN x);
6061 INLINE int    isintzero(GEN x);
6062 INLINE int    ismpzero(GEN x);
6063 INLINE int    isonstack(GEN x);
6064 INLINE void   killblock(GEN x);
6065 INLINE GEN    leading_coeff(GEN x);
6066 INLINE void   lg_increase(GEN x);
6067 INLINE long   lgcols(GEN x);
6068 INLINE long   lgpol(GEN x);
6069 INLINE GEN    div_content(GEN cx, GEN cy);
6070 INLINE GEN    matpascal(long n);
6071 INLINE GEN    matslice(GEN A, long x1, long x2, long y1, long y2);
6072 INLINE GEN    mkcol(GEN x);
6073 INLINE GEN    mkcol2(GEN x, GEN y);
6074 INLINE GEN    mkcol2s(long x, long y);
6075 INLINE GEN    mkcol3(GEN x, GEN y, GEN z);
6076 INLINE GEN    mkcol3s(long x, long y, long z);
6077 INLINE GEN    mkcol4(GEN x, GEN y, GEN z, GEN t);
6078 INLINE GEN    mkcol4s(long x, long y, long z, long t);
6079 INLINE GEN    mkcol5(GEN x, GEN y, GEN z, GEN t, GEN u);
6080 INLINE GEN    mkcol6(GEN x, GEN y, GEN z, GEN t, GEN u, GEN v);
6081 INLINE GEN    mkcolcopy(GEN x);
6082 INLINE GEN    mkcols(long x);
6083 INLINE GEN    mkcomplex(GEN x, GEN y);
6084 INLINE GEN    mkerr(long n);
6085 INLINE GEN    mkmoo(void);
6086 INLINE GEN    mkoo(void);
6087 INLINE GEN    mkfrac(GEN x, GEN y);
6088 INLINE GEN    mkfracss(long x, long y);
6089 INLINE GEN    mkfraccopy(GEN x, GEN y);
6090 INLINE GEN    mkintmod(GEN x, GEN y);
6091 INLINE GEN    mkintmodu(ulong x, ulong y);
6092 INLINE GEN    mkmat(GEN x);
6093 INLINE GEN    mkmat2(GEN x, GEN y);
6094 INLINE GEN    mkmat22(GEN a, GEN b, GEN c, GEN d);
6095 INLINE GEN    mkmat22s(long a, long b, long c, long d);
6096 INLINE GEN    mkmat3(GEN x, GEN y, GEN z);
6097 INLINE GEN    mkmat4(GEN x, GEN y, GEN z, GEN t);
6098 INLINE GEN    mkmat5(GEN x, GEN y, GEN z, GEN t, GEN u);
6099 INLINE GEN    mkmatcopy(GEN x);
6100 INLINE GEN    mkpolmod(GEN x, GEN y);
6101 INLINE GEN    mkqfi(GEN x, GEN y, GEN z);
6102 INLINE GEN    mkquad(GEN n, GEN x, GEN y);
6103 INLINE GEN    mkrfrac(GEN x, GEN y);
6104 INLINE GEN    mkrfraccopy(GEN x, GEN y);
6105 INLINE GEN    mkvec(GEN x);
6106 INLINE GEN    mkvec2(GEN x, GEN y);
6107 INLINE GEN    mkvec2copy(GEN x, GEN y);
6108 INLINE GEN    mkvec2s(long x, long y);
6109 INLINE GEN    mkvec3(GEN x, GEN y, GEN z);
6110 INLINE GEN    mkvec3s(long x, long y, long z);
6111 INLINE GEN    mkvec4(GEN x, GEN y, GEN z, GEN t);
6112 INLINE GEN    mkvec4s(long x, long y, long z, long t);
6113 INLINE GEN    mkvec5(GEN x, GEN y, GEN z, GEN t, GEN u);
6114 INLINE GEN    mkveccopy(GEN x);
6115 INLINE GEN    mkvecs(long x);
6116 INLINE GEN    mkvecsmall(long x);
6117 INLINE GEN    mkvecsmall2(long x,long y);
6118 INLINE GEN    mkvecsmall3(long x,long y,long z);
6119 INLINE GEN    mkvecsmall4(long x,long y,long z,long t);
6120 INLINE GEN    mkvecsmall5(long x,long y,long z,long t,long u);
6121 INLINE void   mpcosz(GEN x, GEN z);
6122 INLINE void   mpexpz(GEN x, GEN z);
6123 INLINE void   mplogz(GEN x, GEN z);
6124 INLINE void   mpsinz(GEN x, GEN z);
6125 INLINE GEN    mul_content(GEN cx, GEN cy);
6126 INLINE GEN    mul_denom(GEN cx, GEN cy);
6127 INLINE long   nbits2nlong(long x);
6128 INLINE long   nbits2extraprec(long x);
6129 INLINE long   nbits2ndec(long x);
6130 INLINE long   nbits2prec(long x);
6131 INLINE long   nbits2lg(long x);
6132 INLINE long   nbrows(GEN x);
6133 INLINE long   nchar2nlong(long x);
6134 INLINE long   ndec2nbits(long x);
6135 INLINE long   ndec2nlong(long x);
6136 INLINE long   ndec2prec(long x);
6137 INLINE void   normalize_frac(GEN z);
6138 INLINE int    odd(long x);
6139 INLINE void   pari_free(void *pointer);
6140 INLINE void*  pari_calloc(size_t size);
6141 INLINE void*  pari_malloc(size_t bytes);
6142 INLINE void*  pari_realloc(void *pointer,size_t size);
6143 INLINE void   pari_realloc_ip(void **pointer,size_t size);
6144 INLINE GEN    perm_conj(GEN s, GEN t);
6145 INLINE GEN    perm_inv(GEN x);
6146 INLINE GEN    perm_mul(GEN s, GEN t);
6147 INLINE GEN    perm_sqr(GEN s);
6148 INLINE GEN    pol_0(long v);
6149 INLINE GEN    pol_1(long v);
6150 INLINE GEN    pol_x(long v);
6151 INLINE GEN    pol_xn(long n, long v);
6152 INLINE GEN    pol_xnall(long n, long v);
6153 INLINE GEN    pol0_F2x(long sv);
6154 INLINE GEN    pol0_Flx(long sv);
6155 INLINE GEN    pol1_F2x(long sv);
6156 INLINE GEN    pol1_Flx(long sv);
6157 INLINE GEN    polx_Flx(long sv);
6158 INLINE GEN    polx_F2x(long sv);
6159 INLINE GEN    polx_zx(long sv);
6160 INLINE GEN    polxn_Flx(long n, long sv);
6161 INLINE GEN    powii(GEN x, GEN n);
6162 INLINE GEN    powIs(long n);
6163 INLINE long   prec2nbits(long x);
6164 INLINE double prec2nbits_mul(long x, double y);
6165 INLINE long   prec2ndec(long x);
6166 INLINE long   precdbl(long x);
6167 INLINE GEN    quad_disc(GEN x);
6168 INLINE GEN    qfb_disc(GEN x);
6169 INLINE GEN    qfb_disc3(GEN x, GEN y, GEN z);
6170 INLINE GEN    quadnorm(GEN q);
6171 INLINE long   remsBIL(long n);
6172 INLINE GEN    row(GEN A, long x1);
6173 INLINE GEN    Flm_row(GEN A, long x0);
6174 INLINE GEN    row_i(GEN A, long x0, long x1, long x2);
6175 INLINE GEN    zm_row(GEN x, long i);
6176 INLINE GEN    rowcopy(GEN A, long x0);
6177 INLINE GEN    rowpermute(GEN A, GEN p);
6178 INLINE GEN    rowslice(GEN A, long x1, long x2);
6179 INLINE GEN    rowslicepermute(GEN A, GEN p, long x1, long x2);
6180 INLINE GEN    rowsplice(GEN a, long j);
6181 INLINE int    ser_isexactzero(GEN x);
6182 INLINE GEN    shallowcopy(GEN x);
6183 INLINE GEN    sqrfrac(GEN x);
6184 INLINE GEN    sqrti(GEN x);
6185 INLINE GEN    sqrtnr(GEN x, long n);
6186 INLINE GEN    sqrtr(GEN x);
6187 INLINE GEN    sstoQ(long n, long d);
6188 INLINE void   pari_stack_alloc(pari_stack *s, long nb);
6189 INLINE void** pari_stack_base(pari_stack *s);
6190 INLINE void   pari_stack_delete(pari_stack *s);
6191 INLINE void   pari_stack_init(pari_stack *s, size_t size, void **data);
6192 INLINE long   pari_stack_new(pari_stack *s);
6193 INLINE void   pari_stack_pushp(pari_stack *s, void *u);
6194 INLINE long   sturm(GEN x);
6195 INLINE GEN    truecoef(GEN x, long n);
6196 INLINE GEN    trunc_safe(GEN x);
6197 INLINE GEN    vec_ei(long n, long i);
6198 INLINE GEN    vec_append(GEN v, GEN s);
6199 INLINE GEN    vec_lengthen(GEN v, long n);
6200 INLINE GEN    vec_prepend(GEN v, GEN s);
6201 INLINE GEN    vec_setconst(GEN v, GEN x);
6202 INLINE GEN    vec_shorten(GEN v, long n);
6203 INLINE GEN    vec_to_vecsmall(GEN z);
6204 INLINE GEN    vecpermute(GEN A, GEN p);
6205 INLINE GEN    vecreverse(GEN A);
6206 INLINE void   vecreverse_inplace(GEN y);
6207 INLINE GEN    vecsmallpermute(GEN A, GEN p);
6208 INLINE GEN    vecslice(GEN A, long y1, long y2);
6209 INLINE GEN    vecslicepermute(GEN A, GEN p, long y1, long y2);
6210 INLINE GEN    vecsplice(GEN a, long j);
6211 INLINE GEN    vecsmall_append(GEN V, long s);
6212 INLINE long   vecsmall_coincidence(GEN u, GEN v);
6213 INLINE GEN    vecsmall_concat(GEN u, GEN v);
6214 INLINE GEN    vecsmall_copy(GEN x);
6215 INLINE GEN    vecsmall_ei(long n, long i);
6216 INLINE long   vecsmall_indexmax(GEN x);
6217 INLINE long   vecsmall_indexmin(GEN x);
6218 INLINE long   vecsmall_isin(GEN v, long x);
6219 INLINE GEN    vecsmall_lengthen(GEN v, long n);
6220 INLINE int    vecsmall_lexcmp(GEN x, GEN y);
6221 INLINE long   vecsmall_max(GEN v);
6222 INLINE long   vecsmall_min(GEN v);
6223 INLINE long   vecsmall_pack(GEN V, long base, long mod);
6224 INLINE int    vecsmall_prefixcmp(GEN x, GEN y);
6225 INLINE GEN    vecsmall_prepend(GEN V, long s);
6226 INLINE GEN    vecsmall_reverse(GEN A);
6227 INLINE GEN    vecsmall_shorten(GEN v, long n);
6228 INLINE GEN    vecsmall_to_col(GEN z);
6229 INLINE GEN    vecsmall_to_vec(GEN z);
6230 INLINE GEN    vecsmall_to_vec_inplace(GEN z);
6231 INLINE void   vecsmalltrunc_append(GEN x, long t);
6232 INLINE GEN    vecsmalltrunc_init(long l);
6233 INLINE void   vectrunc_append(GEN x, GEN t);
6234 INLINE void   vectrunc_append_batch(GEN x, GEN y);
6235 INLINE GEN    vectrunc_init(long l);
6236 INLINE GEN    coltrunc_init(long l);
6237 INLINE GEN    zc_to_ZC(GEN x);
6238 INLINE GEN    zero_F2m(long n, long m);
6239 INLINE GEN    zero_F2m_copy(long n, long m);
6240 INLINE GEN    zero_F2v(long m);
6241 INLINE GEN    zero_F2x(long sv);
6242 INLINE GEN    zero_Flm(long m, long n);
6243 INLINE GEN    zero_Flm_copy(long m, long n);
6244 INLINE GEN    zero_Flv(long n);
6245 INLINE GEN    zero_Flx(long sv);
6246 INLINE GEN    zero_zm(long x, long y);
6247 INLINE GEN    zero_zv(long x);
6248 INLINE GEN    zero_zx(long sv);
6249 INLINE GEN    zerocol(long n);
6250 INLINE GEN    zeromat(long m, long n);
6251 INLINE GEN    zeromatcopy(long m, long n);
6252 INLINE GEN    zeropadic(GEN p, long e);
6253 INLINE GEN    zeropadic_shallow(GEN p, long e);
6254 INLINE GEN    zeropol(long v);
6255 INLINE GEN    zeroser(long v, long e);
6256 INLINE GEN    zerovec(long n);
6257 INLINE GEN    zerovec_block(long len);
6258 INLINE GEN    zm_copy(GEN x);
6259 INLINE GEN    zm_to_zxV(GEN x, long sv);
6260 INLINE GEN    zm_transpose(GEN x);
6261 INLINE GEN    zv_copy(GEN x);
6262 INLINE GEN    zv_to_ZV(GEN x);
6263 INLINE GEN    zv_to_zx(GEN x, long sv);
6264 INLINE GEN    zx_renormalize(GEN x, long l);
6265 INLINE GEN    zx_shift(GEN x, long n);
6266 INLINE GEN    zx_to_zv(GEN x, long N);
6267 
6268 INLINE GEN     err_get_compo(GEN e, long i);
6269 INLINE long    err_get_num(GEN e);
6270 INLINE void    pari_err_BUG(const char *f);
6271 INLINE void    pari_err_COMPONENT(const char *f, const char *op, GEN l, GEN x);
6272 INLINE void    pari_err_CONSTPOL(const char *f);
6273 INLINE void    pari_err_COPRIME(const char *f, GEN x, GEN y);
6274 INLINE void    pari_err_DIM(const char *f);
6275 INLINE void    pari_err_DOMAIN(const char *f, const char *v, const char *op, GEN l, GEN x);
6276 INLINE void    pari_err_FILE(const char *f, const char *g);
6277 INLINE void    pari_err_FILEDESC(const char *f, long n);
6278 INLINE void    pari_err_FLAG(const char *f);
6279 INLINE void    pari_err_IMPL(const char *f);
6280 INLINE void    pari_err_INV(const char *f, GEN x);
6281 INLINE void    pari_err_IRREDPOL(const char *f, GEN x);
6282 INLINE void    pari_err_MAXPRIME(ulong c);
6283 INLINE void    pari_err_MODULUS(const char *f, GEN x, GEN y);
6284 INLINE void    pari_err_OP(const char *f, GEN x, GEN y);
6285 INLINE void    pari_err_OVERFLOW(const char *f);
6286 INLINE void    pari_err_PACKAGE(const char *f);
6287 INLINE void    pari_err_PREC(const char *f);
6288 INLINE void    pari_err_PRIME(const char *f, GEN x);
6289 INLINE void    pari_err_PRIORITY(const char *f, GEN x, const char *op, long v);
6290 INLINE void    pari_err_SQRTN(const char *f, GEN x);
6291 INLINE void    pari_err_TYPE(const char *f, GEN x);
6292 INLINE void    pari_err_TYPE2(const char *f, GEN x, GEN y);
6293 INLINE void    pari_err_VAR(const char *f, GEN x, GEN y);
6294 INLINE void    pari_err_ROOTS0(const char *f);
6295