flint_sys/
fq_nmod_poly.rs

1#![allow(non_camel_case_types)]
2
3//! *See the [FLINT documentation](http://flintlib.org/doc/fq_nmod_poly.html).
4
5use crate::deps::*;
6use crate::flint::*;
7use crate::fmpz::fmpz;
8use crate::fmpz_mod_poly::fmpz_mod_poly_struct;
9use crate::fq_nmod::{fq_nmod_ctx_struct, fq_nmod_struct};
10use crate::fq_nmod_mat::fq_nmod_mat_struct;
11use crate::nmod_poly::nmod_poly_struct;
12use libc::{c_char, c_int, FILE};
13
14#[repr(C)]
15#[derive(Debug, Copy, Clone)]
16pub struct fq_nmod_poly_struct {
17    pub coeffs: *mut fq_nmod_struct,
18    pub alloc: mp_limb_signed_t,
19    pub length: mp_limb_signed_t,
20}
21
22pub type fq_nmod_poly_t = [fq_nmod_poly_struct; 1usize];
23
24extern "C" {
25    pub fn fq_nmod_poly_init(poly: *mut fq_nmod_poly_struct, ctx: *mut fq_nmod_ctx_struct);
26    pub fn fq_nmod_poly_init2(
27        poly: *mut fq_nmod_poly_struct,
28        alloc: mp_limb_signed_t,
29        ctx: *mut fq_nmod_ctx_struct,
30    );
31    pub fn fq_nmod_poly_realloc(
32        poly: *mut fq_nmod_poly_struct,
33        alloc: mp_limb_signed_t,
34        ctx: *mut fq_nmod_ctx_struct,
35    );
36    pub fn fq_nmod_poly_truncate(
37        poly: *mut fq_nmod_poly_struct,
38        len: mp_limb_signed_t,
39        ctx: *mut fq_nmod_ctx_struct,
40    );
41    pub fn fq_nmod_poly_set_trunc(
42        poly1: *mut fq_nmod_poly_struct,
43        poly2: *mut fq_nmod_poly_struct,
44        len: mp_limb_signed_t,
45        ctx: *mut fq_nmod_ctx_struct,
46    );
47    pub fn fq_nmod_poly_fit_length(
48        poly: *mut fq_nmod_poly_struct,
49        len: mp_limb_signed_t,
50        ctx: *mut fq_nmod_ctx_struct,
51    );
52    pub fn fq_nmod_poly_clear(poly: *mut fq_nmod_poly_struct, ctx: *mut fq_nmod_ctx_struct);
53    pub fn _fq_nmod_poly_normalise(poly: *mut fq_nmod_poly_struct, ctx: *mut fq_nmod_ctx_struct);
54    pub fn _fq_nmod_poly_normalise2(
55        poly: *const fq_nmod_struct,
56        length: *mut mp_limb_signed_t,
57        ctx: *mut fq_nmod_ctx_struct,
58    );
59    pub fn _fq_nmod_poly_set_length(
60        poly: *mut fq_nmod_poly_struct,
61        len: mp_limb_signed_t,
62        ctx: *mut fq_nmod_ctx_struct,
63    );
64    pub fn fq_nmod_poly_length(
65        poly: *mut fq_nmod_poly_struct,
66        ctx: *mut fq_nmod_ctx_struct,
67    ) -> mp_limb_signed_t;
68    pub fn fq_nmod_poly_degree(
69        poly: *mut fq_nmod_poly_struct,
70        ctx: *mut fq_nmod_ctx_struct,
71    ) -> mp_limb_signed_t;
72    pub fn fq_nmod_poly_lead(
73        poly: *mut fq_nmod_poly_struct,
74        ctx: *mut fq_nmod_ctx_struct,
75    ) -> *mut fq_nmod_struct;
76    pub fn fq_nmod_poly_randtest(
77        f: *mut fq_nmod_poly_struct,
78        state: *mut flint_rand_s,
79        len: mp_limb_signed_t,
80        ctx: *mut fq_nmod_ctx_struct,
81    );
82    pub fn fq_nmod_poly_randtest_not_zero(
83        f: *mut fq_nmod_poly_struct,
84        state: *mut flint_rand_s,
85        len: mp_limb_signed_t,
86        ctx: *mut fq_nmod_ctx_struct,
87    );
88    pub fn fq_nmod_poly_randtest_monic(
89        f: *mut fq_nmod_poly_struct,
90        state: *mut flint_rand_s,
91        len: mp_limb_signed_t,
92        ctx: *mut fq_nmod_ctx_struct,
93    );
94    pub fn fq_nmod_poly_randtest_irreducible(
95        f: *mut fq_nmod_poly_struct,
96        state: *mut flint_rand_s,
97        len: mp_limb_signed_t,
98        ctx: *mut fq_nmod_ctx_struct,
99    );
100    pub fn _fq_nmod_poly_set(
101        rop: *mut fq_nmod_struct,
102        op: *const fq_nmod_struct,
103        len: mp_limb_signed_t,
104        ctx: *mut fq_nmod_ctx_struct,
105    );
106    pub fn fq_nmod_poly_set(
107        rop: *mut fq_nmod_poly_struct,
108        op: *mut fq_nmod_poly_struct,
109        ctx: *mut fq_nmod_ctx_struct,
110    );
111    pub fn fq_nmod_poly_set_fq_nmod(
112        poly: *mut fq_nmod_poly_struct,
113        c: *mut nmod_poly_struct,
114        ctx: *mut fq_nmod_ctx_struct,
115    );
116    pub fn fq_nmod_poly_set_fmpz_mod_poly(
117        rop: *mut fq_nmod_poly_struct,
118        op: *mut fmpz_mod_poly_struct,
119        ctx: *mut fq_nmod_ctx_struct,
120    );
121    pub fn fq_nmod_poly_set_nmod_poly(
122        rop: *mut fq_nmod_poly_struct,
123        op: *mut nmod_poly_struct,
124        ctx: *mut fq_nmod_ctx_struct,
125    );
126    pub fn fq_nmod_poly_swap(
127        op1: *mut fq_nmod_poly_struct,
128        op2: *mut fq_nmod_poly_struct,
129        ctx: *mut fq_nmod_ctx_struct,
130    );
131    pub fn _fq_nmod_poly_zero(
132        rop: *mut fq_nmod_struct,
133        len: mp_limb_signed_t,
134        ctx: *mut fq_nmod_ctx_struct,
135    );
136    pub fn fq_nmod_poly_zero(poly: *mut fq_nmod_poly_struct, ctx: *mut fq_nmod_ctx_struct);
137    pub fn fq_nmod_poly_one(poly: *mut fq_nmod_poly_struct, ctx: *mut fq_nmod_ctx_struct);
138    pub fn fq_nmod_poly_gen(f: *mut fq_nmod_poly_struct, ctx: *mut fq_nmod_ctx_struct);
139    pub fn _fq_nmod_poly_make_monic(
140        rop: *mut fq_nmod_struct,
141        op: *const fq_nmod_struct,
142        length: mp_limb_signed_t,
143        ctx: *mut fq_nmod_ctx_struct,
144    );
145    pub fn fq_nmod_poly_make_monic(
146        rop: *mut fq_nmod_poly_struct,
147        op: *mut fq_nmod_poly_struct,
148        ctx: *mut fq_nmod_ctx_struct,
149    );
150    pub fn _fq_nmod_poly_reverse(
151        res: *mut fq_nmod_struct,
152        poly: *const fq_nmod_struct,
153        len: mp_limb_signed_t,
154        n: mp_limb_signed_t,
155        ctx: *mut fq_nmod_ctx_struct,
156    );
157    pub fn fq_nmod_poly_reverse(
158        res: *mut fq_nmod_poly_struct,
159        poly: *mut fq_nmod_poly_struct,
160        n: mp_limb_signed_t,
161        ctx: *mut fq_nmod_ctx_struct,
162    );
163    pub fn fq_nmod_poly_deflation(
164        input: *mut fq_nmod_poly_struct,
165        ctx: *mut fq_nmod_ctx_struct,
166    ) -> mp_limb_t;
167    pub fn fq_nmod_poly_deflate(
168        result: *mut fq_nmod_poly_struct,
169        input: *mut fq_nmod_poly_struct,
170        deflation: mp_limb_t,
171        ctx: *mut fq_nmod_ctx_struct,
172    );
173    pub fn fq_nmod_poly_inflate(
174        result: *mut fq_nmod_poly_struct,
175        input: *mut fq_nmod_poly_struct,
176        inflation: mp_limb_t,
177        ctx: *mut fq_nmod_ctx_struct,
178    );
179    pub fn fq_nmod_poly_get_coeff(
180        x: *mut nmod_poly_struct,
181        poly: *mut fq_nmod_poly_struct,
182        n: mp_limb_signed_t,
183        ctx: *mut fq_nmod_ctx_struct,
184    );
185    pub fn fq_nmod_poly_set_coeff(
186        poly: *mut fq_nmod_poly_struct,
187        n: mp_limb_signed_t,
188        x: *mut nmod_poly_struct,
189        ctx: *mut fq_nmod_ctx_struct,
190    );
191    pub fn fq_nmod_poly_set_coeff_fmpz(
192        poly: *mut fq_nmod_poly_struct,
193        n: mp_limb_signed_t,
194        x: *mut fmpz,
195        ctx: *mut fq_nmod_ctx_struct,
196    );
197    pub fn fq_nmod_poly_is_gen(
198        poly: *mut fq_nmod_poly_struct,
199        ctx: *mut fq_nmod_ctx_struct,
200    ) -> c_int;
201    pub fn fq_nmod_poly_equal(
202        poly1: *mut fq_nmod_poly_struct,
203        poly2: *mut fq_nmod_poly_struct,
204        ctx: *mut fq_nmod_ctx_struct,
205    ) -> c_int;
206    pub fn fq_nmod_poly_equal_trunc(
207        poly1: *mut fq_nmod_poly_struct,
208        poly2: *mut fq_nmod_poly_struct,
209        n: mp_limb_signed_t,
210        ctx: *mut fq_nmod_ctx_struct,
211    ) -> c_int;
212    pub fn fq_nmod_poly_is_zero(
213        poly: *mut fq_nmod_poly_struct,
214        ctx: *mut fq_nmod_ctx_struct,
215    ) -> c_int;
216    pub fn fq_nmod_poly_is_one(op: *mut fq_nmod_poly_struct, ctx: *mut fq_nmod_ctx_struct)
217        -> c_int;
218    pub fn fq_nmod_poly_is_unit(
219        op: *mut fq_nmod_poly_struct,
220        ctx: *mut fq_nmod_ctx_struct,
221    ) -> c_int;
222    pub fn fq_nmod_poly_equal_fq_nmod(
223        poly: *mut fq_nmod_poly_struct,
224        c: *mut nmod_poly_struct,
225        ctx: *mut fq_nmod_ctx_struct,
226    ) -> c_int;
227    pub fn _fq_nmod_poly_add(
228        res: *mut fq_nmod_struct,
229        poly1: *const fq_nmod_struct,
230        len1: mp_limb_signed_t,
231        poly2: *const fq_nmod_struct,
232        len2: mp_limb_signed_t,
233        ctx: *mut fq_nmod_ctx_struct,
234    );
235    pub fn fq_nmod_poly_add(
236        rop: *mut fq_nmod_poly_struct,
237        op1: *mut fq_nmod_poly_struct,
238        op2: *mut fq_nmod_poly_struct,
239        ctx: *mut fq_nmod_ctx_struct,
240    );
241    pub fn fq_nmod_poly_add_si(
242        rop: *mut fq_nmod_poly_struct,
243        op1: *mut fq_nmod_poly_struct,
244        c: mp_limb_signed_t,
245        ctx: *mut fq_nmod_ctx_struct,
246    );
247    pub fn fq_nmod_poly_add_series(
248        rop: *mut fq_nmod_poly_struct,
249        op1: *mut fq_nmod_poly_struct,
250        op2: *mut fq_nmod_poly_struct,
251        n: mp_limb_signed_t,
252        ctx: *mut fq_nmod_ctx_struct,
253    );
254    pub fn _fq_nmod_poly_sub(
255        res: *mut fq_nmod_struct,
256        poly1: *const fq_nmod_struct,
257        len1: mp_limb_signed_t,
258        poly2: *const fq_nmod_struct,
259        len2: mp_limb_signed_t,
260        ctx: *mut fq_nmod_ctx_struct,
261    );
262    pub fn fq_nmod_poly_sub(
263        rop: *mut fq_nmod_poly_struct,
264        op1: *mut fq_nmod_poly_struct,
265        op2: *mut fq_nmod_poly_struct,
266        ctx: *mut fq_nmod_ctx_struct,
267    );
268    pub fn fq_nmod_poly_sub_series(
269        rop: *mut fq_nmod_poly_struct,
270        op1: *mut fq_nmod_poly_struct,
271        op2: *mut fq_nmod_poly_struct,
272        n: mp_limb_signed_t,
273        ctx: *mut fq_nmod_ctx_struct,
274    );
275    pub fn _fq_nmod_poly_neg(
276        rop: *mut fq_nmod_struct,
277        op: *const fq_nmod_struct,
278        len: mp_limb_signed_t,
279        ctx: *mut fq_nmod_ctx_struct,
280    );
281    pub fn fq_nmod_poly_neg(
282        rop: *mut fq_nmod_poly_struct,
283        op: *mut fq_nmod_poly_struct,
284        ctx: *mut fq_nmod_ctx_struct,
285    );
286    pub fn _fq_nmod_poly_scalar_mul_fq_nmod(
287        rop: *mut fq_nmod_struct,
288        op: *const fq_nmod_struct,
289        len: mp_limb_signed_t,
290        x: *mut nmod_poly_struct,
291        ctx: *mut fq_nmod_ctx_struct,
292    );
293    pub fn fq_nmod_poly_scalar_mul_fq_nmod(
294        rop: *mut fq_nmod_poly_struct,
295        op: *mut fq_nmod_poly_struct,
296        x: *mut nmod_poly_struct,
297        ctx: *mut fq_nmod_ctx_struct,
298    );
299    pub fn _fq_nmod_poly_scalar_div_fq_nmod(
300        rop: *mut fq_nmod_struct,
301        op: *const fq_nmod_struct,
302        len: mp_limb_signed_t,
303        x: *mut nmod_poly_struct,
304        ctx: *mut fq_nmod_ctx_struct,
305    );
306    pub fn fq_nmod_poly_scalar_div_fq_nmod(
307        rop: *mut fq_nmod_poly_struct,
308        op: *mut fq_nmod_poly_struct,
309        x: *mut nmod_poly_struct,
310        ctx: *mut fq_nmod_ctx_struct,
311    );
312    pub fn _fq_nmod_poly_scalar_addmul_fq_nmod(
313        rop: *mut fq_nmod_struct,
314        op: *const fq_nmod_struct,
315        len: mp_limb_signed_t,
316        x: *mut nmod_poly_struct,
317        ctx: *mut fq_nmod_ctx_struct,
318    );
319    pub fn fq_nmod_poly_scalar_addmul_fq_nmod(
320        rop: *mut fq_nmod_poly_struct,
321        op: *mut fq_nmod_poly_struct,
322        x: *mut nmod_poly_struct,
323        ctx: *mut fq_nmod_ctx_struct,
324    );
325    pub fn _fq_nmod_poly_scalar_submul_fq_nmod(
326        rop: *mut fq_nmod_struct,
327        op: *const fq_nmod_struct,
328        len: mp_limb_signed_t,
329        x: *mut nmod_poly_struct,
330        ctx: *mut fq_nmod_ctx_struct,
331    );
332    pub fn fq_nmod_poly_scalar_submul_fq_nmod(
333        rop: *mut fq_nmod_poly_struct,
334        op: *mut fq_nmod_poly_struct,
335        x: *mut nmod_poly_struct,
336        ctx: *mut fq_nmod_ctx_struct,
337    );
338    pub fn _fq_nmod_poly_mul_classical(
339        rop: *mut fq_nmod_struct,
340        op1: *const fq_nmod_struct,
341        len1: mp_limb_signed_t,
342        op2: *const fq_nmod_struct,
343        len2: mp_limb_signed_t,
344        ctx: *mut fq_nmod_ctx_struct,
345    );
346    pub fn fq_nmod_poly_mul_classical(
347        rop: *mut fq_nmod_poly_struct,
348        op1: *mut fq_nmod_poly_struct,
349        op2: *mut fq_nmod_poly_struct,
350        ctx: *mut fq_nmod_ctx_struct,
351    );
352    pub fn _fq_nmod_poly_mul_reorder(
353        rop: *mut fq_nmod_struct,
354        op1: *const fq_nmod_struct,
355        len1: mp_limb_signed_t,
356        op2: *const fq_nmod_struct,
357        len2: mp_limb_signed_t,
358        ctx: *mut fq_nmod_ctx_struct,
359    );
360    pub fn fq_nmod_poly_mul_reorder(
361        rop: *mut fq_nmod_poly_struct,
362        op1: *mut fq_nmod_poly_struct,
363        op2: *mut fq_nmod_poly_struct,
364        ctx: *mut fq_nmod_ctx_struct,
365    );
366    pub fn _fq_nmod_poly_mul_univariate(
367        rop: *mut fq_nmod_struct,
368        op1: *const fq_nmod_struct,
369        len1: mp_limb_signed_t,
370        op2: *const fq_nmod_struct,
371        len2: mp_limb_signed_t,
372        ctx: *mut fq_nmod_ctx_struct,
373    );
374    pub fn fq_nmod_poly_mul_univariate(
375        rop: *mut fq_nmod_poly_struct,
376        op1: *mut fq_nmod_poly_struct,
377        op2: *mut fq_nmod_poly_struct,
378        ctx: *mut fq_nmod_ctx_struct,
379    );
380    pub fn _fq_nmod_poly_mul_KS(
381        rop: *mut fq_nmod_struct,
382        op1: *const fq_nmod_struct,
383        len1: mp_limb_signed_t,
384        op2: *const fq_nmod_struct,
385        len2: mp_limb_signed_t,
386        ctx: *mut fq_nmod_ctx_struct,
387    );
388    pub fn fq_nmod_poly_mul_KS(
389        rop: *mut fq_nmod_poly_struct,
390        op1: *mut fq_nmod_poly_struct,
391        op2: *mut fq_nmod_poly_struct,
392        ctx: *mut fq_nmod_ctx_struct,
393    );
394    pub fn _fq_nmod_poly_mul(
395        rop: *mut fq_nmod_struct,
396        op1: *const fq_nmod_struct,
397        len1: mp_limb_signed_t,
398        op2: *const fq_nmod_struct,
399        len2: mp_limb_signed_t,
400        ctx: *mut fq_nmod_ctx_struct,
401    );
402    pub fn fq_nmod_poly_mul(
403        rop: *mut fq_nmod_poly_struct,
404        op1: *mut fq_nmod_poly_struct,
405        op2: *mut fq_nmod_poly_struct,
406        ctx: *mut fq_nmod_ctx_struct,
407    );
408    pub fn _fq_nmod_poly_mullow_classical(
409        rop: *mut fq_nmod_struct,
410        op1: *const fq_nmod_struct,
411        len1: mp_limb_signed_t,
412        op2: *const fq_nmod_struct,
413        len2: mp_limb_signed_t,
414        n: mp_limb_signed_t,
415        ctx: *mut fq_nmod_ctx_struct,
416    );
417    pub fn fq_nmod_poly_mullow_classical(
418        rop: *mut fq_nmod_poly_struct,
419        op1: *mut fq_nmod_poly_struct,
420        op2: *mut fq_nmod_poly_struct,
421        n: mp_limb_signed_t,
422        ctx: *mut fq_nmod_ctx_struct,
423    );
424    pub fn _fq_nmod_poly_mullow_KS(
425        rop: *mut fq_nmod_struct,
426        op1: *const fq_nmod_struct,
427        len1: mp_limb_signed_t,
428        op2: *const fq_nmod_struct,
429        len2: mp_limb_signed_t,
430        n: mp_limb_signed_t,
431        ctx: *mut fq_nmod_ctx_struct,
432    );
433    pub fn fq_nmod_poly_mullow_KS(
434        rop: *mut fq_nmod_poly_struct,
435        op1: *mut fq_nmod_poly_struct,
436        op2: *mut fq_nmod_poly_struct,
437        n: mp_limb_signed_t,
438        ctx: *mut fq_nmod_ctx_struct,
439    );
440    pub fn _fq_nmod_poly_mullow_univariate(
441        rop: *mut fq_nmod_struct,
442        op1: *const fq_nmod_struct,
443        len1: mp_limb_signed_t,
444        op2: *const fq_nmod_struct,
445        len2: mp_limb_signed_t,
446        n: mp_limb_signed_t,
447        ctx: *mut fq_nmod_ctx_struct,
448    );
449    pub fn fq_nmod_poly_mullow_univariate(
450        rop: *mut fq_nmod_poly_struct,
451        op1: *mut fq_nmod_poly_struct,
452        op2: *mut fq_nmod_poly_struct,
453        n: mp_limb_signed_t,
454        ctx: *mut fq_nmod_ctx_struct,
455    );
456    pub fn _fq_nmod_poly_mullow(
457        rop: *mut fq_nmod_struct,
458        op1: *const fq_nmod_struct,
459        len1: mp_limb_signed_t,
460        op2: *const fq_nmod_struct,
461        len2: mp_limb_signed_t,
462        n: mp_limb_signed_t,
463        ctx: *mut fq_nmod_ctx_struct,
464    );
465    pub fn fq_nmod_poly_mullow(
466        rop: *mut fq_nmod_poly_struct,
467        op1: *mut fq_nmod_poly_struct,
468        op2: *mut fq_nmod_poly_struct,
469        n: mp_limb_signed_t,
470        ctx: *mut fq_nmod_ctx_struct,
471    );
472    pub fn _fq_nmod_poly_mulhigh_classical(
473        rop: *mut fq_nmod_struct,
474        op1: *const fq_nmod_struct,
475        len1: mp_limb_signed_t,
476        op2: *const fq_nmod_struct,
477        len2: mp_limb_signed_t,
478        start: mp_limb_signed_t,
479        ctx: *mut fq_nmod_ctx_struct,
480    );
481    pub fn fq_nmod_poly_mulhigh_classical(
482        rop: *mut fq_nmod_poly_struct,
483        op1: *mut fq_nmod_poly_struct,
484        op2: *mut fq_nmod_poly_struct,
485        start: mp_limb_signed_t,
486        ctx: *mut fq_nmod_ctx_struct,
487    );
488    pub fn _fq_nmod_poly_mulhigh(
489        res: *mut fq_nmod_struct,
490        poly1: *const fq_nmod_struct,
491        len1: mp_limb_signed_t,
492        poly2: *const fq_nmod_struct,
493        len2: mp_limb_signed_t,
494        n: mp_limb_signed_t,
495        ctx: *mut fq_nmod_ctx_struct,
496    );
497    pub fn fq_nmod_poly_mulhigh(
498        rop: *mut fq_nmod_poly_struct,
499        op1: *mut fq_nmod_poly_struct,
500        op2: *mut fq_nmod_poly_struct,
501        start: mp_limb_signed_t,
502        ctx: *mut fq_nmod_ctx_struct,
503    );
504    pub fn _fq_nmod_poly_mulmod(
505        res: *mut fq_nmod_struct,
506        poly1: *const fq_nmod_struct,
507        len1: mp_limb_signed_t,
508        poly2: *const fq_nmod_struct,
509        len2: mp_limb_signed_t,
510        f: *const fq_nmod_struct,
511        lenf: mp_limb_signed_t,
512        ctx: *mut fq_nmod_ctx_struct,
513    );
514    pub fn fq_nmod_poly_mulmod(
515        res: *mut fq_nmod_poly_struct,
516        poly1: *mut fq_nmod_poly_struct,
517        poly2: *mut fq_nmod_poly_struct,
518        f: *mut fq_nmod_poly_struct,
519        ctx: *mut fq_nmod_ctx_struct,
520    );
521    pub fn _fq_nmod_poly_mulmod_preinv(
522        res: *mut fq_nmod_struct,
523        poly1: *const fq_nmod_struct,
524        len1: mp_limb_signed_t,
525        poly2: *const fq_nmod_struct,
526        len2: mp_limb_signed_t,
527        f: *const fq_nmod_struct,
528        lenf: mp_limb_signed_t,
529        finv: *const fq_nmod_struct,
530        lenfinv: mp_limb_signed_t,
531        ctx: *mut fq_nmod_ctx_struct,
532    );
533    pub fn fq_nmod_poly_mulmod_preinv(
534        res: *mut fq_nmod_poly_struct,
535        poly1: *mut fq_nmod_poly_struct,
536        poly2: *mut fq_nmod_poly_struct,
537        f: *mut fq_nmod_poly_struct,
538        finv: *mut fq_nmod_poly_struct,
539        ctx: *mut fq_nmod_ctx_struct,
540    );
541    pub fn _fq_nmod_poly_sqr_classical(
542        rop: *mut fq_nmod_struct,
543        op: *const fq_nmod_struct,
544        len: mp_limb_signed_t,
545        ctx: *mut fq_nmod_ctx_struct,
546    );
547    pub fn fq_nmod_poly_sqr_classical(
548        rop: *mut fq_nmod_poly_struct,
549        op: *mut fq_nmod_poly_struct,
550        ctx: *mut fq_nmod_ctx_struct,
551    );
552    pub fn _fq_nmod_poly_sqr_reorder(
553        rop: *mut fq_nmod_struct,
554        op: *const fq_nmod_struct,
555        len: mp_limb_signed_t,
556        ctx: *mut fq_nmod_ctx_struct,
557    );
558    pub fn fq_nmod_poly_sqr_reorder(
559        rop: *mut fq_nmod_poly_struct,
560        op: *mut fq_nmod_poly_struct,
561        ctx: *mut fq_nmod_ctx_struct,
562    );
563    pub fn _fq_nmod_poly_sqr_KS(
564        rop: *mut fq_nmod_struct,
565        op: *const fq_nmod_struct,
566        len: mp_limb_signed_t,
567        ctx: *mut fq_nmod_ctx_struct,
568    );
569    pub fn fq_nmod_poly_sqr_KS(
570        rop: *mut fq_nmod_poly_struct,
571        op: *mut fq_nmod_poly_struct,
572        ctx: *mut fq_nmod_ctx_struct,
573    );
574    pub fn _fq_nmod_poly_sqr(
575        rop: *mut fq_nmod_struct,
576        op: *const fq_nmod_struct,
577        len: mp_limb_signed_t,
578        ctx: *mut fq_nmod_ctx_struct,
579    );
580    pub fn fq_nmod_poly_sqr(
581        rop: *mut fq_nmod_poly_struct,
582        op: *mut fq_nmod_poly_struct,
583        ctx: *mut fq_nmod_ctx_struct,
584    );
585    pub fn _fq_nmod_poly_pow(
586        rop: *mut fq_nmod_struct,
587        op: *const fq_nmod_struct,
588        len: mp_limb_signed_t,
589        e: mp_limb_t,
590        ctx: *mut fq_nmod_ctx_struct,
591    );
592    pub fn fq_nmod_poly_pow(
593        rop: *mut fq_nmod_poly_struct,
594        op: *mut fq_nmod_poly_struct,
595        e: mp_limb_t,
596        ctx: *mut fq_nmod_ctx_struct,
597    );
598    pub fn _fq_nmod_poly_pow_trunc_binexp(
599        res: *mut fq_nmod_struct,
600        poly: *const fq_nmod_struct,
601        e: mp_limb_t,
602        trunc: mp_limb_signed_t,
603        ctx: *mut fq_nmod_ctx_struct,
604    );
605    pub fn fq_nmod_poly_pow_trunc_binexp(
606        res: *mut fq_nmod_poly_struct,
607        poly: *mut fq_nmod_poly_struct,
608        e: mp_limb_t,
609        trunc: mp_limb_signed_t,
610        ctx: *mut fq_nmod_ctx_struct,
611    );
612    pub fn _fq_nmod_poly_pow_trunc(
613        res: *mut fq_nmod_struct,
614        poly: *const fq_nmod_struct,
615        e: mp_limb_t,
616        trunc: mp_limb_signed_t,
617        ctx: *mut fq_nmod_ctx_struct,
618    );
619    pub fn fq_nmod_poly_pow_trunc(
620        res: *mut fq_nmod_poly_struct,
621        poly: *mut fq_nmod_poly_struct,
622        e: mp_limb_t,
623        trunc: mp_limb_signed_t,
624        ctx: *mut fq_nmod_ctx_struct,
625    );
626    pub fn _fq_nmod_poly_powmod_fmpz_binexp(
627        res: *mut fq_nmod_struct,
628        poly: *const fq_nmod_struct,
629        e: *mut fmpz,
630        f: *const fq_nmod_struct,
631        lenf: mp_limb_signed_t,
632        ctx: *mut fq_nmod_ctx_struct,
633    );
634    pub fn fq_nmod_poly_powmod_fmpz_binexp(
635        res: *mut fq_nmod_poly_struct,
636        poly: *mut fq_nmod_poly_struct,
637        e: *mut fmpz,
638        f: *mut fq_nmod_poly_struct,
639        ctx: *mut fq_nmod_ctx_struct,
640    );
641    pub fn _fq_nmod_poly_powmod_fmpz_binexp_preinv(
642        res: *mut fq_nmod_struct,
643        poly: *const fq_nmod_struct,
644        e: *mut fmpz,
645        f: *const fq_nmod_struct,
646        lenf: mp_limb_signed_t,
647        finv: *const fq_nmod_struct,
648        lenfinv: mp_limb_signed_t,
649        ctx: *mut fq_nmod_ctx_struct,
650    );
651    pub fn fq_nmod_poly_powmod_fmpz_binexp_preinv(
652        res: *mut fq_nmod_poly_struct,
653        poly: *mut fq_nmod_poly_struct,
654        e: *mut fmpz,
655        f: *mut fq_nmod_poly_struct,
656        finv: *mut fq_nmod_poly_struct,
657        ctx: *mut fq_nmod_ctx_struct,
658    );
659    pub fn _fq_nmod_poly_powmod_ui_binexp(
660        res: *mut fq_nmod_struct,
661        poly: *const fq_nmod_struct,
662        e: mp_limb_t,
663        f: *const fq_nmod_struct,
664        lenf: mp_limb_signed_t,
665        ctx: *mut fq_nmod_ctx_struct,
666    );
667    pub fn fq_nmod_poly_powmod_ui_binexp(
668        res: *mut fq_nmod_poly_struct,
669        poly: *mut fq_nmod_poly_struct,
670        e: mp_limb_t,
671        f: *mut fq_nmod_poly_struct,
672        ctx: *mut fq_nmod_ctx_struct,
673    );
674    pub fn _fq_nmod_poly_powmod_ui_binexp_preinv(
675        res: *mut fq_nmod_struct,
676        poly: *const fq_nmod_struct,
677        e: mp_limb_t,
678        f: *const fq_nmod_struct,
679        lenf: mp_limb_signed_t,
680        finv: *const fq_nmod_struct,
681        lenfinv: mp_limb_signed_t,
682        ctx: *mut fq_nmod_ctx_struct,
683    );
684    pub fn fq_nmod_poly_powmod_ui_binexp_preinv(
685        res: *mut fq_nmod_poly_struct,
686        poly: *mut fq_nmod_poly_struct,
687        e: mp_limb_t,
688        f: *mut fq_nmod_poly_struct,
689        finv: *mut fq_nmod_poly_struct,
690        ctx: *mut fq_nmod_ctx_struct,
691    );
692    pub fn _fq_nmod_poly_powmod_fmpz_sliding_preinv(
693        res: *mut fq_nmod_struct,
694        poly: *const fq_nmod_struct,
695        e: *mut fmpz,
696        k: mp_limb_t,
697        f: *const fq_nmod_struct,
698        lenf: mp_limb_signed_t,
699        finv: *const fq_nmod_struct,
700        lenfinv: mp_limb_signed_t,
701        ctx: *mut fq_nmod_ctx_struct,
702    );
703    pub fn fq_nmod_poly_powmod_fmpz_sliding_preinv(
704        res: *mut fq_nmod_poly_struct,
705        poly: *mut fq_nmod_poly_struct,
706        e: *mut fmpz,
707        k: mp_limb_t,
708        f: *mut fq_nmod_poly_struct,
709        finv: *mut fq_nmod_poly_struct,
710        ctx: *mut fq_nmod_ctx_struct,
711    );
712    pub fn _fq_nmod_poly_powmod_x_fmpz_preinv(
713        res: *mut fq_nmod_struct,
714        e: *mut fmpz,
715        f: *const fq_nmod_struct,
716        lenf: mp_limb_signed_t,
717        finv: *const fq_nmod_struct,
718        lenfinv: mp_limb_signed_t,
719        ctx: *mut fq_nmod_ctx_struct,
720    );
721    pub fn fq_nmod_poly_powmod_x_fmpz_preinv(
722        res: *mut fq_nmod_poly_struct,
723        e: *mut fmpz,
724        f: *mut fq_nmod_poly_struct,
725        finv: *mut fq_nmod_poly_struct,
726        ctx: *mut fq_nmod_ctx_struct,
727    );
728    pub fn _fq_nmod_poly_shift_left(
729        rop: *mut fq_nmod_struct,
730        op: *const fq_nmod_struct,
731        len: mp_limb_signed_t,
732        n: mp_limb_signed_t,
733        ctx: *mut fq_nmod_ctx_struct,
734    );
735    pub fn fq_nmod_poly_shift_left(
736        rop: *mut fq_nmod_poly_struct,
737        op: *mut fq_nmod_poly_struct,
738        n: mp_limb_signed_t,
739        ctx: *mut fq_nmod_ctx_struct,
740    );
741    pub fn _fq_nmod_poly_shift_right(
742        rop: *mut fq_nmod_struct,
743        op: *const fq_nmod_struct,
744        len: mp_limb_signed_t,
745        n: mp_limb_signed_t,
746        ctx: *mut fq_nmod_ctx_struct,
747    );
748    pub fn fq_nmod_poly_shift_right(
749        rop: *mut fq_nmod_poly_struct,
750        op: *mut fq_nmod_poly_struct,
751        n: mp_limb_signed_t,
752        ctx: *mut fq_nmod_ctx_struct,
753    );
754    pub fn _fq_nmod_poly_hamming_weight(
755        op: *const fq_nmod_struct,
756        len: mp_limb_signed_t,
757        ctx: *mut fq_nmod_ctx_struct,
758    ) -> mp_limb_signed_t;
759    pub fn fq_nmod_poly_hamming_weight(
760        op: *mut fq_nmod_poly_struct,
761        ctx: *mut fq_nmod_ctx_struct,
762    ) -> mp_limb_signed_t;
763    pub fn fq_nmod_poly_gcd_euclidean(
764        rop: *mut fq_nmod_poly_struct,
765        op1: *mut fq_nmod_poly_struct,
766        op2: *mut fq_nmod_poly_struct,
767        ctx: *mut fq_nmod_ctx_struct,
768    );
769    pub fn _fq_nmod_poly_gcd_euclidean(
770        G: *mut fq_nmod_struct,
771        A: *const fq_nmod_struct,
772        lenA: mp_limb_signed_t,
773        B: *const fq_nmod_struct,
774        lenB: mp_limb_signed_t,
775        invB: *mut nmod_poly_struct,
776        ctx: *mut fq_nmod_ctx_struct,
777    ) -> mp_limb_signed_t;
778    pub fn _fq_nmod_poly_gcd(
779        G: *mut fq_nmod_struct,
780        A: *const fq_nmod_struct,
781        lenA: mp_limb_signed_t,
782        B: *const fq_nmod_struct,
783        lenB: mp_limb_signed_t,
784        invB: *mut nmod_poly_struct,
785        ctx: *mut fq_nmod_ctx_struct,
786    ) -> mp_limb_signed_t;
787    pub fn fq_nmod_poly_gcd(
788        rop: *mut fq_nmod_poly_struct,
789        op1: *mut fq_nmod_poly_struct,
790        op2: *mut fq_nmod_poly_struct,
791        ctx: *mut fq_nmod_ctx_struct,
792    );
793    pub fn _fq_nmod_poly_gcd_euclidean_f(
794        f: *mut nmod_poly_struct,
795        G: *mut fq_nmod_struct,
796        A: *const fq_nmod_struct,
797        lenA: mp_limb_signed_t,
798        B: *const fq_nmod_struct,
799        lenB: mp_limb_signed_t,
800        ctx: *mut fq_nmod_ctx_struct,
801    ) -> mp_limb_signed_t;
802    pub fn fq_nmod_poly_gcd_euclidean_f(
803        f: *mut nmod_poly_struct,
804        G: *mut fq_nmod_poly_struct,
805        A: *mut fq_nmod_poly_struct,
806        B: *mut fq_nmod_poly_struct,
807        ctx: *mut fq_nmod_ctx_struct,
808    );
809    pub fn _fq_nmod_poly_hgcd(
810        M: *mut *mut fq_nmod_struct,
811        lenM: *mut mp_limb_signed_t,
812        A: *mut fq_nmod_struct,
813        lenA: *mut mp_limb_signed_t,
814        B: *mut fq_nmod_struct,
815        lenB: *mut mp_limb_signed_t,
816        a: *const fq_nmod_struct,
817        lena: mp_limb_signed_t,
818        b: *const fq_nmod_struct,
819        lenb: mp_limb_signed_t,
820        ctx: *mut fq_nmod_ctx_struct,
821    ) -> mp_limb_signed_t;
822    pub fn _fq_nmod_poly_gcd_hgcd(
823        G: *mut fq_nmod_struct,
824        A: *const fq_nmod_struct,
825        lenA: mp_limb_signed_t,
826        B: *const fq_nmod_struct,
827        lenB: mp_limb_signed_t,
828        invB: *mut nmod_poly_struct,
829        ctx: *mut fq_nmod_ctx_struct,
830    ) -> mp_limb_signed_t;
831    pub fn fq_nmod_poly_gcd_hgcd(
832        G: *mut fq_nmod_poly_struct,
833        A: *mut fq_nmod_poly_struct,
834        B: *mut fq_nmod_poly_struct,
835        ctx: *mut fq_nmod_ctx_struct,
836    );
837    pub fn _fq_nmod_poly_xgcd_euclidean_f(
838        f: *mut nmod_poly_struct,
839        G: *mut fq_nmod_struct,
840        S: *mut fq_nmod_struct,
841        fq_nmod: *mut fq_nmod_struct,
842        A: *const fq_nmod_struct,
843        lenA: mp_limb_signed_t,
844        B: *const fq_nmod_struct,
845        lenB: mp_limb_signed_t,
846        ctx: *mut fq_nmod_ctx_struct,
847    ) -> mp_limb_signed_t;
848    pub fn fq_nmod_poly_xgcd_euclidean_f(
849        f: *mut nmod_poly_struct,
850        G: *mut fq_nmod_poly_struct,
851        S: *mut fq_nmod_poly_struct,
852        fq_nmod: *mut fq_nmod_poly_struct,
853        A: *mut fq_nmod_poly_struct,
854        B: *mut fq_nmod_poly_struct,
855        ctx: *mut fq_nmod_ctx_struct,
856    );
857    pub fn _fq_nmod_poly_xgcd_euclidean(
858        G: *mut fq_nmod_struct,
859        S: *mut fq_nmod_struct,
860        fq_nmod: *mut fq_nmod_struct,
861        A: *const fq_nmod_struct,
862        lenA: mp_limb_signed_t,
863        B: *const fq_nmod_struct,
864        lenB: mp_limb_signed_t,
865        invB: *mut nmod_poly_struct,
866        ctx: *mut fq_nmod_ctx_struct,
867    ) -> mp_limb_signed_t;
868    pub fn fq_nmod_poly_xgcd_euclidean(
869        G: *mut fq_nmod_poly_struct,
870        S: *mut fq_nmod_poly_struct,
871        fq_nmod: *mut fq_nmod_poly_struct,
872        A: *mut fq_nmod_poly_struct,
873        B: *mut fq_nmod_poly_struct,
874        ctx: *mut fq_nmod_ctx_struct,
875    );
876    pub fn _fq_nmod_poly_xgcd(
877        G: *mut fq_nmod_struct,
878        S: *mut fq_nmod_struct,
879        fq_nmod: *mut fq_nmod_struct,
880        A: *const fq_nmod_struct,
881        lenA: mp_limb_signed_t,
882        B: *const fq_nmod_struct,
883        lenB: mp_limb_signed_t,
884        invB: *mut nmod_poly_struct,
885        ctx: *mut fq_nmod_ctx_struct,
886    ) -> mp_limb_signed_t;
887    pub fn fq_nmod_poly_xgcd(
888        G: *mut fq_nmod_poly_struct,
889        S: *mut fq_nmod_poly_struct,
890        fq_nmod: *mut fq_nmod_poly_struct,
891        A: *mut fq_nmod_poly_struct,
892        B: *mut fq_nmod_poly_struct,
893        ctx: *mut fq_nmod_ctx_struct,
894    );
895    pub fn fq_nmod_poly_remove(
896        f: *mut fq_nmod_poly_struct,
897        g: *mut fq_nmod_poly_struct,
898        ctx: *mut fq_nmod_ctx_struct,
899    ) -> mp_limb_t;
900    pub fn _fq_nmod_poly_div_basecase(
901        Q: *mut fq_nmod_struct,
902        R: *mut fq_nmod_struct,
903        A: *const fq_nmod_struct,
904        lenA: mp_limb_signed_t,
905        B: *const fq_nmod_struct,
906        lenB: mp_limb_signed_t,
907        invB: *mut nmod_poly_struct,
908        ctx: *mut fq_nmod_ctx_struct,
909    );
910    pub fn fq_nmod_poly_div_basecase(
911        Q: *mut fq_nmod_poly_struct,
912        A: *mut fq_nmod_poly_struct,
913        B: *mut fq_nmod_poly_struct,
914        ctx: *mut fq_nmod_ctx_struct,
915    );
916    pub fn _fq_nmod_poly_divrem_basecase(
917        Q: *mut fq_nmod_struct,
918        R: *mut fq_nmod_struct,
919        A: *const fq_nmod_struct,
920        lenA: mp_limb_signed_t,
921        B: *const fq_nmod_struct,
922        lenB: mp_limb_signed_t,
923        invB: *mut nmod_poly_struct,
924        ctx: *mut fq_nmod_ctx_struct,
925    );
926    pub fn fq_nmod_poly_divrem_basecase(
927        Q: *mut fq_nmod_poly_struct,
928        R: *mut fq_nmod_poly_struct,
929        A: *mut fq_nmod_poly_struct,
930        B: *mut fq_nmod_poly_struct,
931        ctx: *mut fq_nmod_ctx_struct,
932    );
933    pub fn _fq_nmod_poly_divrem_divconquer_recursive(
934        Q: *mut fq_nmod_struct,
935        BQ: *mut fq_nmod_struct,
936        W: *mut fq_nmod_struct,
937        A: *const fq_nmod_struct,
938        B: *const fq_nmod_struct,
939        lenB: mp_limb_signed_t,
940        invB: *mut nmod_poly_struct,
941        ctx: *mut fq_nmod_ctx_struct,
942    );
943    pub fn _fq_nmod_poly_divrem_divconquer(
944        Q: *mut fq_nmod_struct,
945        R: *mut fq_nmod_struct,
946        A: *const fq_nmod_struct,
947        lenA: mp_limb_signed_t,
948        B: *const fq_nmod_struct,
949        lenB: mp_limb_signed_t,
950        invB: *mut nmod_poly_struct,
951        ctx: *mut fq_nmod_ctx_struct,
952    );
953    pub fn fq_nmod_poly_divrem_divconquer(
954        Q: *mut fq_nmod_poly_struct,
955        R: *mut fq_nmod_poly_struct,
956        A: *mut fq_nmod_poly_struct,
957        B: *mut fq_nmod_poly_struct,
958        ctx: *mut fq_nmod_ctx_struct,
959    );
960    pub fn _fq_nmod_poly_divrem(
961        Q: *mut fq_nmod_struct,
962        R: *mut fq_nmod_struct,
963        A: *const fq_nmod_struct,
964        lenA: mp_limb_signed_t,
965        B: *const fq_nmod_struct,
966        lenB: mp_limb_signed_t,
967        invB: *mut nmod_poly_struct,
968        ctx: *mut fq_nmod_ctx_struct,
969    );
970    pub fn fq_nmod_poly_divrem(
971        Q: *mut fq_nmod_poly_struct,
972        R: *mut fq_nmod_poly_struct,
973        A: *mut fq_nmod_poly_struct,
974        B: *mut fq_nmod_poly_struct,
975        ctx: *mut fq_nmod_ctx_struct,
976    );
977    pub fn _fq_nmod_poly_rem(
978        R: *mut fq_nmod_struct,
979        A: *const fq_nmod_struct,
980        lenA: mp_limb_signed_t,
981        B: *const fq_nmod_struct,
982        lenB: mp_limb_signed_t,
983        invB: *mut nmod_poly_struct,
984        ctx: *mut fq_nmod_ctx_struct,
985    );
986    pub fn fq_nmod_poly_rem(
987        R: *mut fq_nmod_poly_struct,
988        A: *mut fq_nmod_poly_struct,
989        B: *mut fq_nmod_poly_struct,
990        ctx: *mut fq_nmod_ctx_struct,
991    );
992    pub fn _fq_nmod_poly_inv_series_newton(
993        Qinv: *mut fq_nmod_struct,
994        Q: *const fq_nmod_struct,
995        n: mp_limb_signed_t,
996        cinv: *mut nmod_poly_struct,
997        ctx: *mut fq_nmod_ctx_struct,
998    );
999    pub fn fq_nmod_poly_inv_series_newton(
1000        Qinv: *mut fq_nmod_poly_struct,
1001        Q: *mut fq_nmod_poly_struct,
1002        n: mp_limb_signed_t,
1003        ctx: *mut fq_nmod_ctx_struct,
1004    );
1005    pub fn _fq_nmod_poly_inv_series(
1006        Qinv: *mut fq_nmod_struct,
1007        Q: *const fq_nmod_struct,
1008        n: mp_limb_signed_t,
1009        cinv: *mut nmod_poly_struct,
1010        ctx: *mut fq_nmod_ctx_struct,
1011    );
1012    pub fn fq_nmod_poly_inv_series(
1013        Qinv: *mut fq_nmod_poly_struct,
1014        Q: *mut fq_nmod_poly_struct,
1015        n: mp_limb_signed_t,
1016        ctx: *mut fq_nmod_ctx_struct,
1017    );
1018    pub fn _fq_nmod_poly_div_series(
1019        Q: *mut fq_nmod_struct,
1020        A: *const fq_nmod_struct,
1021        Alen: mp_limb_signed_t,
1022        B: *const fq_nmod_struct,
1023        Blen: mp_limb_signed_t,
1024        n: mp_limb_signed_t,
1025        ctx: *mut fq_nmod_ctx_struct,
1026    );
1027    pub fn fq_nmod_poly_div_series(
1028        Q: *mut fq_nmod_poly_struct,
1029        A: *mut fq_nmod_poly_struct,
1030        B: *mut fq_nmod_poly_struct,
1031        n: mp_limb_signed_t,
1032        ctx: *mut fq_nmod_ctx_struct,
1033    );
1034    pub fn _fq_nmod_poly_div_newton_n_preinv(
1035        Q: *mut fq_nmod_struct,
1036        A: *const fq_nmod_struct,
1037        lenA: mp_limb_signed_t,
1038        B: *const fq_nmod_struct,
1039        lenB: mp_limb_signed_t,
1040        Binv: *const fq_nmod_struct,
1041        lenBinv: mp_limb_signed_t,
1042        ctx: *mut fq_nmod_ctx_struct,
1043    );
1044    pub fn fq_nmod_poly_div_newton_n_preinv(
1045        Q: *mut fq_nmod_poly_struct,
1046        A: *mut fq_nmod_poly_struct,
1047        B: *mut fq_nmod_poly_struct,
1048        Binv: *mut fq_nmod_poly_struct,
1049        ctx: *mut fq_nmod_ctx_struct,
1050    );
1051    pub fn _fq_nmod_poly_divrem_newton_n_preinv(
1052        Q: *mut fq_nmod_struct,
1053        R: *mut fq_nmod_struct,
1054        A: *const fq_nmod_struct,
1055        lenA: mp_limb_signed_t,
1056        B: *const fq_nmod_struct,
1057        lenB: mp_limb_signed_t,
1058        Binv: *const fq_nmod_struct,
1059        lenBinv: mp_limb_signed_t,
1060        ctx: *mut fq_nmod_ctx_struct,
1061    );
1062    pub fn fq_nmod_poly_divrem_newton_n_preinv(
1063        Q: *mut fq_nmod_poly_struct,
1064        R: *mut fq_nmod_poly_struct,
1065        A: *mut fq_nmod_poly_struct,
1066        B: *mut fq_nmod_poly_struct,
1067        Binv: *mut fq_nmod_poly_struct,
1068        ctx: *mut fq_nmod_ctx_struct,
1069    );
1070    pub fn _fq_nmod_poly_divrem_f(
1071        f: *mut nmod_poly_struct,
1072        Q: *mut fq_nmod_struct,
1073        R: *mut fq_nmod_struct,
1074        A: *const fq_nmod_struct,
1075        lenA: mp_limb_signed_t,
1076        B: *const fq_nmod_struct,
1077        lenB: mp_limb_signed_t,
1078        ctx: *mut fq_nmod_ctx_struct,
1079    );
1080    pub fn fq_nmod_poly_divrem_f(
1081        f: *mut nmod_poly_struct,
1082        Q: *mut fq_nmod_poly_struct,
1083        R: *mut fq_nmod_poly_struct,
1084        A: *mut fq_nmod_poly_struct,
1085        B: *mut fq_nmod_poly_struct,
1086        ctx: *mut fq_nmod_ctx_struct,
1087    );
1088    pub fn _fq_nmod_poly_divides(
1089        Q: *mut fq_nmod_struct,
1090        A: *const fq_nmod_struct,
1091        lenA: mp_limb_signed_t,
1092        B: *const fq_nmod_struct,
1093        lenB: mp_limb_signed_t,
1094        invB: *mut nmod_poly_struct,
1095        ctx: *mut fq_nmod_ctx_struct,
1096    ) -> c_int;
1097    pub fn fq_nmod_poly_divides(
1098        Q: *mut fq_nmod_poly_struct,
1099        A: *mut fq_nmod_poly_struct,
1100        B: *mut fq_nmod_poly_struct,
1101        ctx: *mut fq_nmod_ctx_struct,
1102    ) -> c_int;
1103    pub fn _fq_nmod_poly_derivative(
1104        rop: *mut fq_nmod_struct,
1105        op: *const fq_nmod_struct,
1106        len: mp_limb_signed_t,
1107        ctx: *mut fq_nmod_ctx_struct,
1108    );
1109    pub fn fq_nmod_poly_derivative(
1110        rop: *mut fq_nmod_poly_struct,
1111        op: *mut fq_nmod_poly_struct,
1112        ctx: *mut fq_nmod_ctx_struct,
1113    );
1114    pub fn _fq_nmod_poly_evaluate_fq_nmod(
1115        rop: *mut nmod_poly_struct,
1116        op: *const fq_nmod_struct,
1117        len: mp_limb_signed_t,
1118        a: *mut nmod_poly_struct,
1119        ctx: *mut fq_nmod_ctx_struct,
1120    );
1121    pub fn fq_nmod_poly_evaluate_fq_nmod(
1122        res: *mut nmod_poly_struct,
1123        f: *mut fq_nmod_poly_struct,
1124        a: *mut nmod_poly_struct,
1125        ctx: *mut fq_nmod_ctx_struct,
1126    );
1127    pub fn _fq_nmod_poly_evaluate_fq_nmod_vec(
1128        ys: *mut fq_nmod_struct,
1129        coeffs: *const fq_nmod_struct,
1130        len: mp_limb_signed_t,
1131        xs: *const fq_nmod_struct,
1132        n: mp_limb_signed_t,
1133        ctx: *mut fq_nmod_ctx_struct,
1134    );
1135    pub fn fq_nmod_poly_evaluate_fq_nmod_vec(
1136        ys: *mut fq_nmod_struct,
1137        poly: *mut fq_nmod_poly_struct,
1138        xs: *const fq_nmod_struct,
1139        n: mp_limb_signed_t,
1140        ctx: *mut fq_nmod_ctx_struct,
1141    );
1142    pub fn _fq_nmod_poly_tree_alloc(
1143        len: mp_limb_signed_t,
1144        ctx: *mut fq_nmod_ctx_struct,
1145    ) -> *mut *mut fq_nmod_poly_struct;
1146    pub fn _fq_nmod_poly_tree_free(
1147        tree: *mut *mut fq_nmod_poly_struct,
1148        len: mp_limb_signed_t,
1149        ctx: *mut fq_nmod_ctx_struct,
1150    );
1151    pub fn _fq_nmod_poly_tree_build(
1152        tree: *mut *mut fq_nmod_poly_struct,
1153        roots: *const fq_nmod_struct,
1154        len: mp_limb_signed_t,
1155        ctx: *mut fq_nmod_ctx_struct,
1156    );
1157    pub fn _fq_nmod_poly_evaluate_fq_nmod_vec_fast_precomp(
1158        vs: *mut fq_nmod_struct,
1159        poly: *const fq_nmod_struct,
1160        plen: mp_limb_signed_t,
1161        tree: *const *mut fq_nmod_poly_struct,
1162        len: mp_limb_signed_t,
1163        ctx: *mut fq_nmod_ctx_struct,
1164    );
1165    pub fn _fq_nmod_poly_evaluate_fq_nmod_vec_fast(
1166        ys: *mut fq_nmod_struct,
1167        poly: *const fq_nmod_struct,
1168        plen: mp_limb_signed_t,
1169        xs: *const fq_nmod_struct,
1170        n: mp_limb_signed_t,
1171        ctx: *mut fq_nmod_ctx_struct,
1172    );
1173    pub fn fq_nmod_poly_evaluate_fq_nmod_vec_fast(
1174        ys: *mut fq_nmod_struct,
1175        poly: *mut fq_nmod_poly_struct,
1176        xs: *const fq_nmod_struct,
1177        n: mp_limb_signed_t,
1178        ctx: *mut fq_nmod_ctx_struct,
1179    );
1180    pub fn _fq_nmod_poly_evaluate_fq_nmod_vec_iter(
1181        ys: *mut fq_nmod_struct,
1182        coeffs: *const fq_nmod_struct,
1183        len: mp_limb_signed_t,
1184        xs: *const fq_nmod_struct,
1185        n: mp_limb_signed_t,
1186        ctx: *mut fq_nmod_ctx_struct,
1187    );
1188    pub fn fq_nmod_poly_evaluate_fq_nmod_vec_iter(
1189        ys: *mut fq_nmod_struct,
1190        poly: *mut fq_nmod_poly_struct,
1191        xs: *const fq_nmod_struct,
1192        n: mp_limb_signed_t,
1193        ctx: *mut fq_nmod_ctx_struct,
1194    );
1195    pub fn _fq_nmod_poly_compose_divconquer(
1196        rop: *mut fq_nmod_struct,
1197        op1: *const fq_nmod_struct,
1198        len1: mp_limb_signed_t,
1199        op2: *const fq_nmod_struct,
1200        len2: mp_limb_signed_t,
1201        ctx: *mut fq_nmod_ctx_struct,
1202    );
1203    pub fn fq_nmod_poly_compose_divconquer(
1204        rop: *mut fq_nmod_poly_struct,
1205        op1: *mut fq_nmod_poly_struct,
1206        op2: *mut fq_nmod_poly_struct,
1207        ctx: *mut fq_nmod_ctx_struct,
1208    );
1209    pub fn _fq_nmod_poly_compose_horner(
1210        rop: *mut fq_nmod_struct,
1211        op1: *const fq_nmod_struct,
1212        len1: mp_limb_signed_t,
1213        op2: *const fq_nmod_struct,
1214        len2: mp_limb_signed_t,
1215        ctx: *mut fq_nmod_ctx_struct,
1216    );
1217    pub fn fq_nmod_poly_compose_horner(
1218        rop: *mut fq_nmod_poly_struct,
1219        op1: *mut fq_nmod_poly_struct,
1220        op2: *mut fq_nmod_poly_struct,
1221        ctx: *mut fq_nmod_ctx_struct,
1222    );
1223    pub fn _fq_nmod_poly_compose(
1224        rop: *mut fq_nmod_struct,
1225        op1: *const fq_nmod_struct,
1226        len1: mp_limb_signed_t,
1227        op2: *const fq_nmod_struct,
1228        len2: mp_limb_signed_t,
1229        ctx: *mut fq_nmod_ctx_struct,
1230    );
1231    pub fn fq_nmod_poly_compose(
1232        rop: *mut fq_nmod_poly_struct,
1233        op1: *mut fq_nmod_poly_struct,
1234        op2: *mut fq_nmod_poly_struct,
1235        ctx: *mut fq_nmod_ctx_struct,
1236    );
1237    pub fn _fq_nmod_poly_compose_mod(
1238        res: *mut fq_nmod_struct,
1239        f: *const fq_nmod_struct,
1240        lenf: mp_limb_signed_t,
1241        g: *const fq_nmod_struct,
1242        h: *const fq_nmod_struct,
1243        lenh: mp_limb_signed_t,
1244        ctx: *mut fq_nmod_ctx_struct,
1245    );
1246    pub fn fq_nmod_poly_compose_mod(
1247        res: *mut fq_nmod_poly_struct,
1248        poly1: *mut fq_nmod_poly_struct,
1249        poly2: *mut fq_nmod_poly_struct,
1250        poly3: *mut fq_nmod_poly_struct,
1251        ctx: *mut fq_nmod_ctx_struct,
1252    );
1253    pub fn _fq_nmod_poly_compose_mod_preinv(
1254        res: *mut fq_nmod_struct,
1255        f: *const fq_nmod_struct,
1256        lenf: mp_limb_signed_t,
1257        g: *const fq_nmod_struct,
1258        h: *const fq_nmod_struct,
1259        lenh: mp_limb_signed_t,
1260        hinv: *const fq_nmod_struct,
1261        lenhinv: mp_limb_signed_t,
1262        ctx: *mut fq_nmod_ctx_struct,
1263    );
1264    pub fn fq_nmod_poly_compose_mod_preinv(
1265        res: *mut fq_nmod_poly_struct,
1266        poly1: *mut fq_nmod_poly_struct,
1267        poly2: *mut fq_nmod_poly_struct,
1268        poly3: *mut fq_nmod_poly_struct,
1269        poly3inv: *mut fq_nmod_poly_struct,
1270        ctx: *mut fq_nmod_ctx_struct,
1271    );
1272    pub fn _fq_nmod_poly_compose_mod_horner(
1273        res: *mut fq_nmod_struct,
1274        f: *const fq_nmod_struct,
1275        lenf: mp_limb_signed_t,
1276        g: *const fq_nmod_struct,
1277        h: *const fq_nmod_struct,
1278        lenh: mp_limb_signed_t,
1279        ctx: *mut fq_nmod_ctx_struct,
1280    );
1281    pub fn fq_nmod_poly_compose_mod_horner(
1282        res: *mut fq_nmod_poly_struct,
1283        poly1: *mut fq_nmod_poly_struct,
1284        poly2: *mut fq_nmod_poly_struct,
1285        poly3: *mut fq_nmod_poly_struct,
1286        ctx: *mut fq_nmod_ctx_struct,
1287    );
1288    pub fn _fq_nmod_poly_compose_mod_horner_preinv(
1289        res: *mut fq_nmod_struct,
1290        f: *const fq_nmod_struct,
1291        lenf: mp_limb_signed_t,
1292        g: *const fq_nmod_struct,
1293        h: *const fq_nmod_struct,
1294        lenh: mp_limb_signed_t,
1295        hinv: *const fq_nmod_struct,
1296        lenhinv: mp_limb_signed_t,
1297        ctx: *mut fq_nmod_ctx_struct,
1298    );
1299    pub fn fq_nmod_poly_compose_mod_horner_preinv(
1300        res: *mut fq_nmod_poly_struct,
1301        poly1: *mut fq_nmod_poly_struct,
1302        poly2: *mut fq_nmod_poly_struct,
1303        poly3: *mut fq_nmod_poly_struct,
1304        poly3inv: *mut fq_nmod_poly_struct,
1305        ctx: *mut fq_nmod_ctx_struct,
1306    );
1307    pub fn fq_nmod_poly_compose_mod_brent_kung(
1308        res: *mut fq_nmod_poly_struct,
1309        poly1: *mut fq_nmod_poly_struct,
1310        poly2: *mut fq_nmod_poly_struct,
1311        poly3: *mut fq_nmod_poly_struct,
1312        ctx: *mut fq_nmod_ctx_struct,
1313    );
1314    pub fn _fq_nmod_poly_compose_mod_brent_kung(
1315        res: *mut fq_nmod_struct,
1316        poly1: *const fq_nmod_struct,
1317        len1: mp_limb_signed_t,
1318        poly2: *const fq_nmod_struct,
1319        poly3: *const fq_nmod_struct,
1320        len3: mp_limb_signed_t,
1321        ctx: *mut fq_nmod_ctx_struct,
1322    );
1323    pub fn _fq_nmod_poly_compose_mod_brent_kung_preinv(
1324        res: *mut fq_nmod_struct,
1325        poly1: *const fq_nmod_struct,
1326        len1: mp_limb_signed_t,
1327        poly2: *const fq_nmod_struct,
1328        poly3: *const fq_nmod_struct,
1329        len3: mp_limb_signed_t,
1330        poly3inv: *const fq_nmod_struct,
1331        len3inv: mp_limb_signed_t,
1332        ctx: *mut fq_nmod_ctx_struct,
1333    );
1334    pub fn fq_nmod_poly_compose_mod_brent_kung_preinv(
1335        res: *mut fq_nmod_poly_struct,
1336        poly1: *mut fq_nmod_poly_struct,
1337        poly2: *mut fq_nmod_poly_struct,
1338        poly3: *mut fq_nmod_poly_struct,
1339        poly3inv: *mut fq_nmod_poly_struct,
1340        ctx: *mut fq_nmod_ctx_struct,
1341    );
1342    pub fn _fq_nmod_poly_reduce_matrix_mod_poly(
1343        A: *mut fq_nmod_mat_struct,
1344        B: *mut fq_nmod_mat_struct,
1345        f: *mut fq_nmod_poly_struct,
1346        ctx: *mut fq_nmod_ctx_struct,
1347    );
1348    pub fn _fq_nmod_poly_precompute_matrix(
1349        A: *mut fq_nmod_mat_struct,
1350        poly1: *const fq_nmod_struct,
1351        poly2: *const fq_nmod_struct,
1352        len2: mp_limb_signed_t,
1353        poly2inv: *const fq_nmod_struct,
1354        len2inv: mp_limb_signed_t,
1355        ctx: *mut fq_nmod_ctx_struct,
1356    );
1357    pub fn fq_nmod_poly_precompute_matrix(
1358        A: *mut fq_nmod_mat_struct,
1359        poly1: *mut fq_nmod_poly_struct,
1360        poly2: *mut fq_nmod_poly_struct,
1361        poly2inv: *mut fq_nmod_poly_struct,
1362        ctx: *mut fq_nmod_ctx_struct,
1363    );
1364    pub fn _fq_nmod_poly_compose_mod_brent_kung_precomp_preinv(
1365        res: *mut fq_nmod_struct,
1366        poly1: *const fq_nmod_struct,
1367        len1: mp_limb_signed_t,
1368        A: *mut fq_nmod_mat_struct,
1369        poly3: *const fq_nmod_struct,
1370        len3: mp_limb_signed_t,
1371        poly3inv: *const fq_nmod_struct,
1372        len3inv: mp_limb_signed_t,
1373        ctx: *mut fq_nmod_ctx_struct,
1374    );
1375    pub fn fq_nmod_poly_compose_mod_brent_kung_precomp_preinv(
1376        res: *mut fq_nmod_poly_struct,
1377        poly1: *mut fq_nmod_poly_struct,
1378        A: *mut fq_nmod_mat_struct,
1379        poly3: *mut fq_nmod_poly_struct,
1380        poly3inv: *mut fq_nmod_poly_struct,
1381        ctx: *mut fq_nmod_ctx_struct,
1382    );
1383    pub fn _fq_nmod_poly_fprint_pretty(
1384        file: *mut FILE,
1385        poly: *const fq_nmod_struct,
1386        len: mp_limb_signed_t,
1387        x: *const c_char,
1388        ctx: *mut fq_nmod_ctx_struct,
1389    ) -> c_int;
1390    pub fn fq_nmod_poly_fprint_pretty(
1391        file: *mut FILE,
1392        poly: *mut fq_nmod_poly_struct,
1393        x: *const c_char,
1394        ctx: *mut fq_nmod_ctx_struct,
1395    ) -> c_int;
1396    pub fn _fq_nmod_poly_fprint(
1397        file: *mut FILE,
1398        poly: *const fq_nmod_struct,
1399        len: mp_limb_signed_t,
1400        ctx: *mut fq_nmod_ctx_struct,
1401    ) -> c_int;
1402    pub fn fq_nmod_poly_fprint(
1403        file: *mut FILE,
1404        poly: *mut fq_nmod_poly_struct,
1405        ctx: *mut fq_nmod_ctx_struct,
1406    ) -> c_int;
1407    pub fn _fq_nmod_poly_print(
1408        poly: *const fq_nmod_struct,
1409        len: mp_limb_signed_t,
1410        ctx: *mut fq_nmod_ctx_struct,
1411    ) -> c_int;
1412    pub fn fq_nmod_poly_print(
1413        poly: *mut fq_nmod_poly_struct,
1414        ctx: *mut fq_nmod_ctx_struct,
1415    ) -> c_int;
1416    pub fn _fq_nmod_poly_print_pretty(
1417        poly: *const fq_nmod_struct,
1418        len: mp_limb_signed_t,
1419        x: *const c_char,
1420        ctx: *mut fq_nmod_ctx_struct,
1421    ) -> c_int;
1422    pub fn fq_nmod_poly_print_pretty(
1423        poly: *mut fq_nmod_poly_struct,
1424        x: *const c_char,
1425        ctx: *mut fq_nmod_ctx_struct,
1426    ) -> c_int;
1427    pub fn _fq_nmod_poly_get_str_pretty(
1428        poly: *const fq_nmod_struct,
1429        len: mp_limb_signed_t,
1430        x: *const c_char,
1431        ctx: *mut fq_nmod_ctx_struct,
1432    ) -> *mut c_char;
1433    pub fn fq_nmod_poly_get_str_pretty(
1434        poly: *mut fq_nmod_poly_struct,
1435        x: *const c_char,
1436        ctx: *mut fq_nmod_ctx_struct,
1437    ) -> *mut c_char;
1438    pub fn _fq_nmod_poly_get_str(
1439        poly: *const fq_nmod_struct,
1440        len: mp_limb_signed_t,
1441        ctx: *mut fq_nmod_ctx_struct,
1442    ) -> *mut c_char;
1443    pub fn fq_nmod_poly_get_str(
1444        poly: *mut fq_nmod_poly_struct,
1445        ctx: *mut fq_nmod_ctx_struct,
1446    ) -> *mut c_char;
1447}