Skip to main content

flint_sys/
n_poly.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3use libc::*;
4use crate::deps::*;
5use crate::flint::*;
6use crate::fq_nmod_types::*;
7use crate::n_poly_types::*;
8use crate::nmod_types::*;
9
10
11pub const N_FQ_REDUCE_ITCH: u32 = 2;
12pub const N_FQ_MUL_ITCH: u32 = 4;
13pub const N_FQ_LAZY_ITCH: u32 = 6;
14pub const N_FQ_INV_ITCH: u32 = 1;
15pub const N_FQ_POLY_DIVREM_DIVCONQUER_CUTOFF: u32 = 20;
16#[repr(C)]
17pub struct n_polyun_stack_struct {
18    pub array: *mut *mut n_polyun_struct,
19    pub alloc: slong,
20    pub top: slong,
21}
22#[allow(clippy::unnecessary_operation, clippy::identity_op)]
23const _: () = {
24    ["Size of n_polyun_stack_struct"][::std::mem::size_of::<n_polyun_stack_struct>() - 24usize];
25    ["Alignment of n_polyun_stack_struct"]
26        [::std::mem::align_of::<n_polyun_stack_struct>() - 8usize];
27    ["Offset of field: n_polyun_stack_struct::array"]
28        [::std::mem::offset_of!(n_polyun_stack_struct, array) - 0usize];
29    ["Offset of field: n_polyun_stack_struct::alloc"]
30        [::std::mem::offset_of!(n_polyun_stack_struct, alloc) - 8usize];
31    ["Offset of field: n_polyun_stack_struct::top"]
32        [::std::mem::offset_of!(n_polyun_stack_struct, top) - 16usize];
33};
34impl Default for n_polyun_stack_struct {
35    fn default() -> Self {
36        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
37        unsafe {
38            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
39            s.assume_init()
40        }
41    }
42}
43pub type n_polyun_stack_t = [n_polyun_stack_struct; 1usize];
44#[repr(C)]
45pub struct n_poly_polyun_stack_struct {
46    pub poly_stack: n_poly_stack_t,
47    pub polyun_stack: n_polyun_stack_t,
48}
49#[allow(clippy::unnecessary_operation, clippy::identity_op)]
50const _: () = {
51    ["Size of n_poly_polyun_stack_struct"]
52        [::std::mem::size_of::<n_poly_polyun_stack_struct>() - 48usize];
53    ["Alignment of n_poly_polyun_stack_struct"]
54        [::std::mem::align_of::<n_poly_polyun_stack_struct>() - 8usize];
55    ["Offset of field: n_poly_polyun_stack_struct::poly_stack"]
56        [::std::mem::offset_of!(n_poly_polyun_stack_struct, poly_stack) - 0usize];
57    ["Offset of field: n_poly_polyun_stack_struct::polyun_stack"]
58        [::std::mem::offset_of!(n_poly_polyun_stack_struct, polyun_stack) - 24usize];
59};
60impl Default for n_poly_polyun_stack_struct {
61    fn default() -> Self {
62        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
63        unsafe {
64            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
65            s.assume_init()
66        }
67    }
68}
69pub type n_poly_polyun_stack_t = [n_poly_polyun_stack_struct; 1usize];
70extern "C" {
71    #[link_name = "n_poly_init__extern"]
72    pub fn n_poly_init(A: *mut n_poly_struct);
73    #[link_name = "n_poly_init2__extern"]
74    pub fn n_poly_init2(A: *mut n_poly_struct, alloc: slong);
75    #[link_name = "n_poly_clear__extern"]
76    pub fn n_poly_clear(A: *mut n_poly_struct);
77    pub fn n_poly_realloc(A: *mut n_poly_struct, len: slong);
78    pub fn n_poly_is_canonical(A: *const n_poly_struct) -> libc::c_int;
79    #[link_name = "n_poly_swap__extern"]
80    pub fn n_poly_swap(A: *mut n_poly_struct, B: *mut n_poly_struct);
81    #[link_name = "n_poly_degree__extern"]
82    pub fn n_poly_degree(A: *const n_poly_struct) -> slong;
83    #[link_name = "n_poly_fit_length__extern"]
84    pub fn n_poly_fit_length(A: *mut n_poly_struct, len: slong);
85    #[link_name = "_n_poly_normalise__extern"]
86    pub fn _n_poly_normalise(A: *mut n_poly_struct);
87    #[link_name = "n_poly_truncate__extern"]
88    pub fn n_poly_truncate(poly: *mut n_poly_struct, len: slong);
89    pub fn n_poly_reverse(output: *mut n_poly_struct, input: *const n_poly_struct, m: slong);
90    #[link_name = "n_poly_lead__extern"]
91    pub fn n_poly_lead(A: *const n_poly_struct) -> ulong;
92    #[link_name = "n_poly_zero__extern"]
93    pub fn n_poly_zero(res: *mut n_poly_struct);
94    #[link_name = "n_poly_one__extern"]
95    pub fn n_poly_one(A: *mut n_poly_struct);
96    #[link_name = "n_poly_set_ui__extern"]
97    pub fn n_poly_set_ui(A: *mut n_poly_struct, c: ulong);
98    #[link_name = "n_poly_set__extern"]
99    pub fn n_poly_set(A: *mut n_poly_struct, B: *const n_poly_struct);
100    #[link_name = "n_poly_is_zero__extern"]
101    pub fn n_poly_is_zero(poly: *const n_poly_struct) -> libc::c_int;
102    #[link_name = "n_poly_is_one__extern"]
103    pub fn n_poly_is_one(A: *const n_poly_struct) -> libc::c_int;
104    #[link_name = "n_poly_equal__extern"]
105    pub fn n_poly_equal(a: *const n_poly_struct, b: *const n_poly_struct) -> libc::c_int;
106    #[link_name = "nmod_poly_mock__extern"]
107    pub fn nmod_poly_mock(a: *mut nmod_poly_struct, b: *const n_poly_struct, mod_: nmod_t);
108    #[link_name = "n_poly_mock__extern"]
109    pub fn n_poly_mock(a: *mut n_poly_struct, b: *const nmod_poly_struct);
110    #[link_name = "n_poly_get_coeff__extern"]
111    pub fn n_poly_get_coeff(poly: *const n_poly_struct, j: slong) -> ulong;
112    #[link_name = "n_poly_set_coeff_nonzero__extern"]
113    pub fn n_poly_set_coeff_nonzero(A: *mut n_poly_struct, j: slong, c: ulong);
114    pub fn n_poly_set_coeff(A: *mut n_poly_struct, e: slong, c: ulong);
115    #[link_name = "n_poly_set_nmod_poly__extern"]
116    pub fn n_poly_set_nmod_poly(a: *mut n_poly_struct, b: *const nmod_poly_struct);
117    #[link_name = "nmod_poly_set_n_poly__extern"]
118    pub fn nmod_poly_set_n_poly(a: *mut nmod_poly_struct, b: *const n_poly_struct);
119    #[link_name = "n_poly_shift_left__extern"]
120    pub fn n_poly_shift_left(A: *mut n_poly_struct, B: *const n_poly_struct, k: slong);
121    #[link_name = "n_poly_shift_right__extern"]
122    pub fn n_poly_shift_right(res: *mut n_poly_struct, poly: *const n_poly_struct, k: slong);
123    pub fn _n_poly_eval_pow(
124        P: *mut n_poly_struct,
125        alphapow: *mut n_poly_struct,
126        params: dot_params_t,
127        ctx: nmod_t,
128    ) -> ulong;
129    pub fn n_poly_print_pretty(A: *const n_poly_struct, x: *const libc::c_char);
130    pub fn n_poly_mod_is_canonical(A: *const n_poly_struct, mod_: nmod_t) -> libc::c_int;
131    pub fn n_poly_mod_set_coeff_ui(A: *mut n_poly_struct, j: slong, c: ulong, mod_: nmod_t);
132    #[link_name = "n_poly_mod_make_monic__extern"]
133    pub fn n_poly_mod_make_monic(A: *mut n_poly_struct, B: *const n_poly_struct, mod_: nmod_t);
134    #[link_name = "n_poly_mod_taylor_shift__extern"]
135    pub fn n_poly_mod_taylor_shift(g: *mut n_poly_struct, c: ulong, mod_: nmod_t);
136    #[link_name = "_n_poly_mod_scalar_mul_nmod__extern"]
137    pub fn _n_poly_mod_scalar_mul_nmod(
138        A: *mut n_poly_struct,
139        B: *const n_poly_struct,
140        c: ulong,
141        mod_: nmod_t,
142    );
143    #[link_name = "_n_poly_mod_scalar_mul_nmod_inplace__extern"]
144    pub fn _n_poly_mod_scalar_mul_nmod_inplace(A: *mut n_poly_struct, c: ulong, mod_: nmod_t);
145    pub fn n_poly_mod_scalar_mul_ui(
146        A: *mut n_poly_struct,
147        B: *const n_poly_struct,
148        c: ulong,
149        ctx: nmod_t,
150    );
151    pub fn n_poly_mod_eval_step2(
152        Acur: *mut n_poly_struct,
153        Ainc: *const n_poly_struct,
154        mod_: nmod_t,
155    ) -> ulong;
156    #[link_name = "n_poly_mod_evaluate_nmod__extern"]
157    pub fn n_poly_mod_evaluate_nmod(A: *const n_poly_struct, c: ulong, mod_: nmod_t) -> ulong;
158    #[link_name = "n_poly_mod_neg__extern"]
159    pub fn n_poly_mod_neg(A: *mut n_poly_struct, B: *const n_poly_struct, mod_: nmod_t);
160    pub fn n_poly_mod_add_ui(
161        res: *mut n_poly_struct,
162        poly: *const n_poly_struct,
163        c: ulong,
164        ctx: nmod_t,
165    );
166    #[link_name = "n_poly_mod_add__extern"]
167    pub fn n_poly_mod_add(
168        A: *mut n_poly_struct,
169        B: *const n_poly_struct,
170        C: *const n_poly_struct,
171        mod_: nmod_t,
172    );
173    #[link_name = "n_poly_mod_sub__extern"]
174    pub fn n_poly_mod_sub(
175        A: *mut n_poly_struct,
176        B: *const n_poly_struct,
177        C: *const n_poly_struct,
178        mod_: nmod_t,
179    );
180    #[link_name = "n_poly_mod_product_roots_nmod_vec__extern"]
181    pub fn n_poly_mod_product_roots_nmod_vec(
182        A: *mut n_poly_struct,
183        r: nn_srcptr,
184        n: slong,
185        mod_: nmod_t,
186    );
187    pub fn n_poly_mod_shift_left_scalar_addmul(
188        A: *mut n_poly_struct,
189        k: slong,
190        c: ulong,
191        mod_: nmod_t,
192    );
193    pub fn n_poly_mod_addmul_linear(
194        A: *mut n_poly_struct,
195        B: *const n_poly_struct,
196        C: *const n_poly_struct,
197        d1: ulong,
198        d0: ulong,
199        mod_: nmod_t,
200    );
201    pub fn n_poly_mod_scalar_addmul_nmod(
202        A: *mut n_poly_struct,
203        B: *const n_poly_struct,
204        C: *const n_poly_struct,
205        d0: ulong,
206        ctx: nmod_t,
207    );
208    pub fn n_poly_mod_eval_pow(
209        P: *mut n_poly_struct,
210        alphapow: *mut n_poly_struct,
211        ctx: nmod_t,
212    ) -> ulong;
213    pub fn n_poly_mod_eval2_pow(
214        vp: *mut ulong,
215        vm: *mut ulong,
216        P: *const n_poly_struct,
217        alphapow: *mut n_poly_struct,
218        ctx: nmod_t,
219    );
220    pub fn n_poly_mod_div_root(
221        Q: *mut n_poly_struct,
222        A: *const n_poly_struct,
223        c: ulong,
224        ctx: nmod_t,
225    ) -> ulong;
226    #[link_name = "_n_poly_mod_mul__extern"]
227    pub fn _n_poly_mod_mul(
228        A: *mut n_poly_struct,
229        B: *const n_poly_struct,
230        C: *const n_poly_struct,
231        ctx: nmod_t,
232    );
233    pub fn n_poly_mod_mul(
234        A: *mut n_poly_struct,
235        B: *const n_poly_struct,
236        C: *const n_poly_struct,
237        mod_: nmod_t,
238    );
239    pub fn n_poly_mod_mullow(
240        A: *mut n_poly_struct,
241        B: *const n_poly_struct,
242        C: *const n_poly_struct,
243        n: slong,
244        mod_: nmod_t,
245    );
246    #[link_name = "_n_poly_mod_div__extern"]
247    pub fn _n_poly_mod_div(
248        Q: *mut n_poly_struct,
249        A: *const n_poly_struct,
250        B: *const n_poly_struct,
251        mod_: nmod_t,
252    );
253    pub fn n_poly_mod_div(
254        Q: *mut n_poly_struct,
255        A: *const n_poly_struct,
256        B: *const n_poly_struct,
257        mod_: nmod_t,
258    );
259    #[link_name = "_n_poly_mod_rem__extern"]
260    pub fn _n_poly_mod_rem(
261        R: *mut n_poly_struct,
262        A: *const n_poly_struct,
263        B: *const n_poly_struct,
264        mod_: nmod_t,
265    );
266    pub fn n_poly_mod_rem(
267        R: *mut n_poly_struct,
268        A: *const n_poly_struct,
269        B: *const n_poly_struct,
270        mod_: nmod_t,
271    );
272    #[link_name = "_n_poly_mod_divrem__extern"]
273    pub fn _n_poly_mod_divrem(
274        Q: *mut n_poly_struct,
275        R: *mut n_poly_struct,
276        A: *const n_poly_struct,
277        B: *const n_poly_struct,
278        mod_: nmod_t,
279    );
280    pub fn n_poly_mod_divrem(
281        Q: *mut n_poly_struct,
282        R: *mut n_poly_struct,
283        A: *const n_poly_struct,
284        B: *const n_poly_struct,
285        mod_: nmod_t,
286    );
287    #[link_name = "_n_poly_mod_divexact__extern"]
288    pub fn _n_poly_mod_divexact(
289        Q: *mut n_poly_struct,
290        A: *const n_poly_struct,
291        B: *const n_poly_struct,
292        mod_: nmod_t,
293    );
294    pub fn n_poly_mod_divexact(
295        Q: *mut n_poly_struct,
296        A: *const n_poly_struct,
297        B: *const n_poly_struct,
298        mod_: nmod_t,
299    );
300    pub fn n_poly_mod_pow(
301        res: *mut n_poly_struct,
302        poly: *const n_poly_struct,
303        e: ulong,
304        ctx: nmod_t,
305    );
306    pub fn n_poly_mod_remove(f: *mut n_poly_struct, p: *const n_poly_struct, ctx: nmod_t) -> ulong;
307    pub fn n_poly_mod_mulmod_preinv(
308        A: *mut n_poly_struct,
309        B: *const n_poly_struct,
310        C: *const n_poly_struct,
311        M: *const n_poly_struct,
312        Minv: *const n_poly_struct,
313        ctx: nmod_t,
314    );
315    pub fn n_poly_mod_mulmod(
316        res: *mut n_poly_struct,
317        poly1: *const n_poly_struct,
318        poly2: *const n_poly_struct,
319        f: *const n_poly_struct,
320        mod_: nmod_t,
321    );
322    pub fn n_poly_mod_invmod(
323        A: *mut n_poly_struct,
324        B: *const n_poly_struct,
325        P: *const n_poly_struct,
326        mod_: nmod_t,
327    ) -> libc::c_int;
328    pub fn n_poly_mod_gcd(
329        G: *mut n_poly_struct,
330        A: *const n_poly_struct,
331        B: *const n_poly_struct,
332        mod_: nmod_t,
333    );
334    pub fn n_poly_mod_xgcd(
335        G: *mut n_poly_struct,
336        S: *mut n_poly_struct,
337        T: *mut n_poly_struct,
338        A: *const n_poly_struct,
339        B: *const n_poly_struct,
340        mod_: nmod_t,
341    );
342    pub fn n_poly_mod_inv_series(
343        Qinv: *mut n_poly_struct,
344        Q: *const n_poly_struct,
345        n: slong,
346        mod_: nmod_t,
347    );
348    pub fn n_poly_mod_div_series(
349        Q: *mut n_poly_struct,
350        A: *const n_poly_struct,
351        B: *const n_poly_struct,
352        order: slong,
353        ctx: nmod_t,
354    );
355    #[link_name = "fq_nmod_ctx_mod__extern"]
356    pub fn fq_nmod_ctx_mod(ctx: *const fq_nmod_ctx_struct) -> nmod_t;
357    #[link_name = "_n_fq_is_zero__extern"]
358    pub fn _n_fq_is_zero(a: *const ulong, d: slong) -> libc::c_int;
359    #[link_name = "_n_fq_zero__extern"]
360    pub fn _n_fq_zero(a: *mut ulong, d: slong);
361    #[link_name = "_n_fq_is_one__extern"]
362    pub fn _n_fq_is_one(a: *const ulong, d: slong) -> libc::c_int;
363    #[link_name = "_n_fq_is_ui__extern"]
364    pub fn _n_fq_is_ui(a: *const ulong, d: slong) -> libc::c_int;
365    #[link_name = "n_fq_is_one__extern"]
366    pub fn n_fq_is_one(a: *const ulong, ctx: *const fq_nmod_ctx_struct) -> libc::c_int;
367    #[link_name = "_n_fq_one__extern"]
368    pub fn _n_fq_one(a: *mut ulong, d: slong);
369    #[link_name = "_n_fq_set_nmod__extern"]
370    pub fn _n_fq_set_nmod(a: *mut ulong, b: ulong, d: slong);
371    pub fn n_fq_gen(a: *mut ulong, ctx: *const fq_nmod_ctx_struct);
372    #[link_name = "_n_fq_set__extern"]
373    pub fn _n_fq_set(a: *mut ulong, b: *const ulong, d: slong);
374    #[link_name = "_n_fq_swap__extern"]
375    pub fn _n_fq_swap(a: *mut ulong, b: *mut ulong, d: slong);
376    #[link_name = "_n_fq_equal__extern"]
377    pub fn _n_fq_equal(a: *mut ulong, b: *const ulong, d: slong) -> libc::c_int;
378    pub fn n_fq_equal_fq_nmod(
379        a: *const ulong,
380        b: *const nmod_poly_struct,
381        ctx: *const fq_nmod_ctx_struct,
382    ) -> libc::c_int;
383    pub fn n_fq_is_canonical(a: *const ulong, ctx: *const fq_nmod_ctx_struct) -> libc::c_int;
384    pub fn n_fq_randtest_not_zero(
385        a: *mut ulong,
386        state: *mut flint_rand_struct,
387        ctx: *const fq_nmod_ctx_struct,
388    );
389    pub fn n_fq_get_str_pretty(
390        a: *const ulong,
391        ctx: *const fq_nmod_ctx_struct,
392    ) -> *mut libc::c_char;
393    pub fn n_fq_fprint_pretty(
394        file: *mut FILE,
395        a: *const ulong,
396        ctx: *const fq_nmod_ctx_struct,
397    ) -> libc::c_int;
398    pub fn n_fq_print_pretty(a: *const ulong, ctx: *const fq_nmod_ctx_struct);
399    pub fn n_fq_get_n_poly(a: *mut n_poly_struct, b: *const ulong, ctx: *const fq_nmod_ctx_struct);
400    pub fn n_fq_get_fq_nmod(
401        a: *mut nmod_poly_struct,
402        b: *const ulong,
403        ctx: *const fq_nmod_ctx_struct,
404    );
405    pub fn _n_fq_set_n_poly(
406        a: *mut ulong,
407        bcoeffs: *const ulong,
408        blen: slong,
409        ctx: *const fq_nmod_ctx_struct,
410    );
411    pub fn n_fq_set_fq_nmod(
412        a: *mut ulong,
413        b: *const nmod_poly_struct,
414        ctx: *const fq_nmod_ctx_struct,
415    );
416    #[link_name = "_n_fq_neg__extern"]
417    pub fn _n_fq_neg(a: *mut ulong, b: *const ulong, d: slong, mod_: nmod_t);
418    #[link_name = "_n_fq_add__extern"]
419    pub fn _n_fq_add(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong, mod_: nmod_t);
420    pub fn n_fq_add_si(a: *mut ulong, b: *const ulong, c: slong, ctx: *const fq_nmod_ctx_struct);
421    pub fn n_fq_add_fq_nmod(
422        a: *mut ulong,
423        b: *const ulong,
424        c: *const nmod_poly_struct,
425        ctx: *const fq_nmod_ctx_struct,
426    );
427    #[link_name = "n_fq_add__extern"]
428    pub fn n_fq_add(
429        a: *mut ulong,
430        b: *const ulong,
431        c: *const ulong,
432        ctx: *const fq_nmod_ctx_struct,
433    );
434    #[link_name = "_n_fq_sub__extern"]
435    pub fn _n_fq_sub(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong, mod_: nmod_t);
436    pub fn n_fq_sub_fq_nmod(
437        a: *mut ulong,
438        b: *const ulong,
439        c: *const nmod_poly_struct,
440        ctx: *const fq_nmod_ctx_struct,
441    );
442    #[link_name = "n_fq_sub__extern"]
443    pub fn n_fq_sub(
444        a: *mut ulong,
445        b: *const ulong,
446        c: *const ulong,
447        ctx: *const fq_nmod_ctx_struct,
448    );
449    pub fn _n_fq_mul_ui(a: *mut ulong, b: *const ulong, c: ulong, d: slong, mod_: nmod_t);
450    pub fn _n_fq_madd2(
451        a: *mut ulong,
452        b: *const ulong,
453        c: *const ulong,
454        ctx: *const fq_nmod_ctx_struct,
455        t: *mut ulong,
456    );
457    pub fn _n_fq_mul2(
458        t: *mut ulong,
459        b: *const ulong,
460        c: *const ulong,
461        ctx: *const fq_nmod_ctx_struct,
462    );
463    pub fn _n_fq_reduce(
464        a: *mut ulong,
465        b: *mut ulong,
466        blen: slong,
467        ctx: *const fq_nmod_ctx_struct,
468        t: *mut ulong,
469    );
470    #[link_name = "_n_fq_reduce2__extern"]
471    pub fn _n_fq_reduce2(
472        a: *mut ulong,
473        b: *mut ulong,
474        ctx: *const fq_nmod_ctx_struct,
475        t: *mut ulong,
476    );
477    #[link_name = "_n_fq_mul__extern"]
478    pub fn _n_fq_mul(
479        a: *mut ulong,
480        b: *const ulong,
481        c: *const ulong,
482        ctx: *const fq_nmod_ctx_struct,
483        t: *mut ulong,
484    );
485    #[link_name = "_n_fq_addmul__extern"]
486    pub fn _n_fq_addmul(
487        a: *mut ulong,
488        b: *const ulong,
489        c: *const ulong,
490        e: *const ulong,
491        ctx: *const fq_nmod_ctx_struct,
492        t: *mut ulong,
493    );
494    pub fn _n_fq_dot_lazy_size(len: slong, ctx: *const fq_nmod_ctx_struct) -> libc::c_int;
495    pub fn _n_fq_madd2_lazy1(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong);
496    pub fn _n_fq_mul2_lazy1(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong);
497    pub fn _n_fq_reduce2_lazy1(a: *mut ulong, d: slong, ctx: nmod_t);
498    pub fn _n_fq_madd2_lazy2(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong);
499    pub fn _n_fq_mul2_lazy2(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong);
500    pub fn _n_fq_reduce2_lazy2(a: *mut ulong, d: slong, ctx: nmod_t);
501    pub fn _n_fq_madd2_lazy3(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong);
502    pub fn _n_fq_mul2_lazy3(a: *mut ulong, b: *const ulong, c: *const ulong, d: slong);
503    pub fn _n_fq_reduce2_lazy3(a: *mut ulong, d: slong, ctx: nmod_t);
504    pub fn _n_fq_inv(a: *mut ulong, b: *const ulong, ctx: *const fq_nmod_ctx_struct, t: *mut ulong);
505    pub fn n_fq_inv(a: *mut ulong, b: *const ulong, ctx: *const fq_nmod_ctx_struct);
506    pub fn n_fq_mul(
507        a: *mut ulong,
508        b: *const ulong,
509        c: *const ulong,
510        ctx: *const fq_nmod_ctx_struct,
511    );
512    pub fn n_fq_mul_fq_nmod(
513        a: *mut ulong,
514        b: *const ulong,
515        c: *const nmod_poly_struct,
516        ctx: *const fq_nmod_ctx_struct,
517    );
518    pub fn n_fq_addmul(
519        a: *mut ulong,
520        b: *const ulong,
521        c: *const ulong,
522        d: *const ulong,
523        ctx: *const fq_nmod_ctx_struct,
524    );
525    pub fn _n_fq_pow_ui(a: *mut ulong, b: *const ulong, e: ulong, ctx: *const fq_nmod_ctx_struct);
526    pub fn n_fq_pow_ui(a: *mut ulong, b: *const ulong, e: ulong, ctx: *const fq_nmod_ctx_struct);
527    pub fn n_fq_pow_fmpz(
528        a: *mut ulong,
529        b: *const ulong,
530        e: *const fmpz,
531        ctx: *const fq_nmod_ctx_struct,
532    );
533    pub fn n_fq_poly_init2(A: *mut n_poly_struct, alloc: slong, ctx: *const fq_nmod_ctx_struct);
534    pub fn n_fq_poly_is_canonical(
535        a: *const n_poly_struct,
536        ctx: *const fq_nmod_ctx_struct,
537    ) -> libc::c_int;
538    pub fn _n_fq_poly_one(A: *mut n_poly_struct, d: slong);
539    #[link_name = "n_fq_poly_one__extern"]
540    pub fn n_fq_poly_one(A: *mut n_poly_struct, ctx: *const fq_nmod_ctx_struct);
541    pub fn n_fq_poly_is_one(A: *mut n_poly_struct, ctx: *const fq_nmod_ctx_struct) -> libc::c_int;
542    pub fn n_fq_poly_equal(
543        A: *const n_poly_struct,
544        B: *const n_poly_struct,
545        ctx: *const fq_nmod_ctx_struct,
546    ) -> libc::c_int;
547    #[link_name = "_n_fq_poly_normalise__extern"]
548    pub fn _n_fq_poly_normalise(A: *mut n_poly_struct, d: slong);
549    pub fn n_fq_poly_print_pretty(
550        A: *const n_poly_struct,
551        x: *const libc::c_char,
552        ctx: *const fq_nmod_ctx_struct,
553    );
554    pub fn n_fq_poly_set(
555        A: *mut n_poly_struct,
556        B: *const n_poly_struct,
557        ctx: *const fq_nmod_ctx_struct,
558    );
559    pub fn n_fq_poly_randtest(
560        A: *mut n_poly_struct,
561        state: *mut flint_rand_struct,
562        len: slong,
563        ctx: *const fq_nmod_ctx_struct,
564    );
565    pub fn n_fq_poly_make_monic(
566        A: *mut n_poly_struct,
567        B: *const n_poly_struct,
568        ctx: *const fq_nmod_ctx_struct,
569    );
570    pub fn n_fq_poly_get_coeff_n_fq(
571        c: *mut ulong,
572        A: *const n_poly_struct,
573        e: slong,
574        ctx: *const fq_nmod_ctx_struct,
575    );
576    pub fn n_fq_poly_get_coeff_fq_nmod(
577        c: *mut nmod_poly_struct,
578        A: *const n_poly_struct,
579        e: slong,
580        ctx: *const fq_nmod_ctx_struct,
581    );
582    pub fn n_fq_poly_set_coeff_fq_nmod(
583        A: *mut n_poly_struct,
584        j: slong,
585        c: *const nmod_poly_struct,
586        ctx: *const fq_nmod_ctx_struct,
587    );
588    pub fn n_fq_poly_set_coeff_n_fq(
589        A: *mut n_poly_struct,
590        j: slong,
591        c: *const ulong,
592        ctx: *const fq_nmod_ctx_struct,
593    );
594    pub fn n_fq_poly_scalar_mul_ui(
595        A: *mut n_poly_struct,
596        B: *const n_poly_struct,
597        c: ulong,
598        ctx: *const fq_nmod_ctx_struct,
599    );
600    pub fn n_fq_poly_scalar_mul_n_fq(
601        A: *mut n_poly_struct,
602        B: *const n_poly_struct,
603        c: *const ulong,
604        ctx: *const fq_nmod_ctx_struct,
605    );
606    pub fn n_fq_poly_scalar_addmul_n_fq(
607        A: *mut n_poly_struct,
608        B: *const n_poly_struct,
609        C: *const n_poly_struct,
610        d: *const ulong,
611        ctx: *const fq_nmod_ctx_struct,
612    );
613    pub fn n_fq_poly_shift_left_scalar_submul(
614        A: *mut n_poly_struct,
615        k: slong,
616        c: *const ulong,
617        ctx: *const fq_nmod_ctx_struct,
618    );
619    pub fn n_fq_poly_evaluate_fq_nmod(
620        e: *mut nmod_poly_struct,
621        A: *const n_poly_struct,
622        c: *const nmod_poly_struct,
623        ctx: *const fq_nmod_ctx_struct,
624    );
625    pub fn n_fq_poly_evaluate_n_fq(
626        e: *mut ulong,
627        A: *const n_poly_struct,
628        c: *const ulong,
629        ctx: *const fq_nmod_ctx_struct,
630    );
631    pub fn n_fq_poly_get_fq_nmod_poly(
632        A: *mut fq_nmod_poly_struct,
633        B: *const n_poly_struct,
634        ctx: *const fq_nmod_ctx_struct,
635    );
636    pub fn n_fq_poly_set_n_fq(
637        A: *mut n_poly_struct,
638        c: *const ulong,
639        ctx: *const fq_nmod_ctx_struct,
640    );
641    pub fn n_fq_poly_set_fq_nmod(
642        A: *mut n_poly_struct,
643        c: *const nmod_poly_struct,
644        ctx: *const fq_nmod_ctx_struct,
645    );
646    pub fn n_fq_poly_set_fq_nmod_poly(
647        A: *mut n_poly_struct,
648        B: *const fq_nmod_poly_struct,
649        ctx: *const fq_nmod_ctx_struct,
650    );
651    pub fn n_fq_poly_shift_left(
652        A: *mut n_poly_struct,
653        B: *const n_poly_struct,
654        n: slong,
655        ctx: *const fq_nmod_ctx_struct,
656    );
657    pub fn n_fq_poly_shift_right(
658        A: *mut n_poly_struct,
659        B: *const n_poly_struct,
660        n: slong,
661        ctx: *const fq_nmod_ctx_struct,
662    );
663    pub fn n_fq_poly_truncate(A: *mut n_poly_struct, len: slong, ctx: *const fq_nmod_ctx_struct);
664    pub fn n_fq_poly_neg(
665        A: *mut n_poly_struct,
666        B: *const n_poly_struct,
667        ctx: *const fq_nmod_ctx_struct,
668    );
669    pub fn n_fq_poly_add(
670        A: *mut n_poly_struct,
671        B: *const n_poly_struct,
672        C: *const n_poly_struct,
673        ctx: *const fq_nmod_ctx_struct,
674    );
675    pub fn n_fq_poly_sub(
676        A: *mut n_poly_struct,
677        B: *const n_poly_struct,
678        C: *const n_poly_struct,
679        ctx: *const fq_nmod_ctx_struct,
680    );
681    pub fn n_fq_poly_add_si(
682        A: *mut n_poly_struct,
683        B: *const n_poly_struct,
684        c: slong,
685        ctx: *const fq_nmod_ctx_struct,
686    );
687    pub fn _n_fq_poly_mul_(
688        A: *mut ulong,
689        B: *const ulong,
690        Blen: slong,
691        C: *const ulong,
692        Clen: slong,
693        ctx: *const fq_nmod_ctx_struct,
694        St: *mut n_poly_stack_struct,
695    );
696    pub fn n_fq_poly_mul_(
697        A: *mut n_poly_struct,
698        B: *const n_poly_struct,
699        C: *const n_poly_struct,
700        ctx: *const fq_nmod_ctx_struct,
701        St: *mut n_poly_stack_struct,
702    );
703    pub fn n_fq_poly_mul(
704        A: *mut n_poly_struct,
705        B: *const n_poly_struct,
706        C: *const n_poly_struct,
707        ctx: *const fq_nmod_ctx_struct,
708    );
709    pub fn n_fq_poly_pow(
710        A: *mut n_poly_struct,
711        B: *const n_poly_struct,
712        e: ulong,
713        ctx: *const fq_nmod_ctx_struct,
714    );
715    pub fn n_fq_poly_remove(
716        f: *mut n_poly_struct,
717        g: *const n_poly_struct,
718        ctx: *const fq_nmod_ctx_struct,
719    ) -> ulong;
720    pub fn _n_fq_poly_divrem_basecase_(
721        Q: *mut ulong,
722        A: *mut ulong,
723        AA: *const ulong,
724        Alen: slong,
725        B: *const ulong,
726        Blen: slong,
727        invB: *const ulong,
728        ctx: *const fq_nmod_ctx_struct,
729        St: *mut n_poly_stack_struct,
730    );
731    pub fn n_fq_poly_divrem_divconquer_(
732        Q: *mut n_poly_struct,
733        R: *mut n_poly_struct,
734        A: *const n_poly_struct,
735        B: *const n_poly_struct,
736        ctx: *const fq_nmod_ctx_struct,
737        St: *mut n_poly_stack_struct,
738    );
739    #[link_name = "n_fq_poly_divrem___extern"]
740    pub fn n_fq_poly_divrem_(
741        Q: *mut n_poly_struct,
742        R: *mut n_poly_struct,
743        A: *const n_poly_struct,
744        B: *const n_poly_struct,
745        ctx: *const fq_nmod_ctx_struct,
746        St: *mut n_poly_stack_struct,
747    );
748    pub fn n_fq_poly_divrem(
749        Q: *mut n_poly_struct,
750        R: *mut n_poly_struct,
751        A: *const n_poly_struct,
752        B: *const n_poly_struct,
753        ctx: *const fq_nmod_ctx_struct,
754    );
755    pub fn n_fq_poly_gcd_(
756        G: *mut n_poly_struct,
757        A: *const n_poly_struct,
758        B: *const n_poly_struct,
759        ctx: *const fq_nmod_ctx_struct,
760        St: *mut n_poly_stack_struct,
761    );
762    pub fn n_fq_poly_gcd(
763        G: *mut n_poly_struct,
764        A: *const n_poly_struct,
765        B: *const n_poly_struct,
766        ctx: *const fq_nmod_ctx_struct,
767    );
768    pub fn n_fq_poly_xgcd(
769        G: *mut n_poly_struct,
770        S: *mut n_poly_struct,
771        T: *mut n_poly_struct,
772        B: *const n_poly_struct,
773        C: *const n_poly_struct,
774        ctx: *const fq_nmod_ctx_struct,
775    );
776    pub fn n_fq_poly_mulmod(
777        A: *mut n_poly_struct,
778        B: *const n_poly_struct,
779        C: *const n_poly_struct,
780        M: *const n_poly_struct,
781        ctx: *const fq_nmod_ctx_struct,
782    );
783    pub fn _n_fq_poly_rem_basecase_(
784        Q: *mut ulong,
785        A: *mut ulong,
786        AA: *const ulong,
787        Alen: slong,
788        B: *const ulong,
789        Blen: slong,
790        invB: *const ulong,
791        ctx: *const fq_nmod_ctx_struct,
792        St: *mut n_poly_stack_struct,
793    );
794    pub fn n_fq_poly_rem(
795        R: *mut n_poly_struct,
796        A: *const n_poly_struct,
797        B: *const n_poly_struct,
798        ctx: *const fq_nmod_ctx_struct,
799    );
800    pub fn n_fq_poly_mullow(
801        A: *mut n_poly_struct,
802        B: *const n_poly_struct,
803        C: *const n_poly_struct,
804        order: slong,
805        ctx: *const fq_nmod_ctx_struct,
806    );
807    pub fn n_fq_poly_inv_series(
808        A: *mut n_poly_struct,
809        B: *const n_poly_struct,
810        order: slong,
811        ctx: *const fq_nmod_ctx_struct,
812    );
813    pub fn n_fq_poly_eval_pow(
814        ev: *mut ulong,
815        A: *const n_poly_struct,
816        alphapow: *mut n_poly_struct,
817        ctx: *const fq_nmod_ctx_struct,
818    );
819    pub fn n_fq_polyun_set(
820        A: *mut n_polyun_struct,
821        B: *const n_polyun_struct,
822        ctx: *const fq_nmod_ctx_struct,
823    );
824    #[link_name = "n_bpoly_init__extern"]
825    pub fn n_bpoly_init(A: *mut n_bpoly_struct);
826    pub fn n_bpoly_clear(A: *mut n_bpoly_struct);
827    pub fn n_bpoly_realloc(A: *mut n_bpoly_struct, len: slong);
828    #[link_name = "n_bpoly_fit_length__extern"]
829    pub fn n_bpoly_fit_length(A: *mut n_bpoly_struct, len: slong);
830    #[link_name = "n_bpoly_swap__extern"]
831    pub fn n_bpoly_swap(A: *mut n_bpoly_struct, B: *mut n_bpoly_struct);
832    pub fn n_bpoly_print_pretty(
833        A: *const n_bpoly_struct,
834        xvar: *const libc::c_char,
835        yvar: *const libc::c_char,
836    );
837    #[link_name = "n_bpoly_normalise__extern"]
838    pub fn n_bpoly_normalise(A: *mut n_bpoly_struct);
839    #[link_name = "n_bpoly_zero__extern"]
840    pub fn n_bpoly_zero(A: *mut n_bpoly_struct);
841    pub fn n_bpoly_one(A: *mut n_bpoly_struct);
842    pub fn _n_bpoly_set(A: *mut n_bpoly_struct, B: *const n_bpoly_struct);
843    #[link_name = "n_bpoly_set__extern"]
844    pub fn n_bpoly_set(A: *mut n_bpoly_struct, B: *const n_bpoly_struct);
845    #[link_name = "n_bpoly_is_zero__extern"]
846    pub fn n_bpoly_is_zero(A: *const n_bpoly_struct) -> libc::c_int;
847    pub fn n_bpoly_equal(A: *const n_bpoly_struct, B: *const n_bpoly_struct) -> libc::c_int;
848    pub fn n_bpoly_set_coeff(A: *mut n_bpoly_struct, e0: slong, e1: slong, c: ulong);
849    pub fn n_bpoly_set_coeff_nonzero(A: *mut n_bpoly_struct, e0: slong, e1: slong, c: ulong);
850    pub fn n_bpoly_mod_derivative_gen0(
851        A: *mut n_bpoly_struct,
852        B: *const n_bpoly_struct,
853        ctx: nmod_t,
854    );
855    #[link_name = "n_bpoly_get_coeff__extern"]
856    pub fn n_bpoly_get_coeff(A: *const n_bpoly_struct, e0: slong, e1: slong) -> ulong;
857    #[link_name = "n_bpoly_degree0__extern"]
858    pub fn n_bpoly_degree0(A: *const n_bpoly_struct) -> slong;
859    pub fn n_bpoly_degree1(A: *const n_bpoly_struct) -> slong;
860    pub fn n_bpoly_set_poly_gen0(A: *mut n_bpoly_struct, B: *const n_poly_struct);
861    pub fn n_bpoly_set_poly_gen1(A: *mut n_bpoly_struct, B: *const n_poly_struct);
862    pub fn n_bpoly_mod_is_canonical(A: *const n_bpoly_struct, mod_: nmod_t) -> libc::c_int;
863    #[link_name = "n_bpoly_bidegree__extern"]
864    pub fn n_bpoly_bidegree(A: *const n_bpoly_struct) -> ulong;
865    pub fn n_bpoly_scalar_mul_nmod(A: *mut n_bpoly_struct, c: ulong, ctx: nmod_t);
866    pub fn n_bpoly_mod_content_last(g: *mut n_poly_struct, A: *const n_bpoly_struct, ctx: nmod_t);
867    pub fn n_bpoly_mod_divexact_last(A: *mut n_bpoly_struct, b: *const n_poly_struct, ctx: nmod_t);
868    pub fn n_bpoly_mod_mul_last(A: *mut n_bpoly_struct, b: *const n_poly_struct, ctx: nmod_t);
869    pub fn n_bpoly_mod_taylor_shift_gen0(A: *mut n_bpoly_struct, c: ulong, ctx: nmod_t);
870    pub fn n_bpoly_mod_taylor_shift_gen1(
871        A: *mut n_bpoly_struct,
872        B: *const n_bpoly_struct,
873        c: ulong,
874        ctx: nmod_t,
875    );
876    pub fn n_bpoly_mod_add(
877        A: *mut n_bpoly_struct,
878        B: *const n_bpoly_struct,
879        C: *const n_bpoly_struct,
880        ctx: nmod_t,
881    );
882    pub fn n_bpoly_mod_sub(
883        A: *mut n_bpoly_struct,
884        B: *const n_bpoly_struct,
885        C: *const n_bpoly_struct,
886        ctx: nmod_t,
887    );
888    pub fn n_bpoly_mod_mul(
889        A: *mut n_bpoly_struct,
890        B: *const n_bpoly_struct,
891        C: *const n_bpoly_struct,
892        ctx: nmod_t,
893    );
894    pub fn n_bpoly_mod_divides(
895        Q: *mut n_bpoly_struct,
896        A: *const n_bpoly_struct,
897        B: *const n_bpoly_struct,
898        ctx: nmod_t,
899    ) -> libc::c_int;
900    pub fn n_bpoly_mod_make_primitive(g: *mut n_poly_struct, A: *mut n_bpoly_struct, ctx: nmod_t);
901    pub fn n_bpoly_mod_mul_series(
902        A: *mut n_bpoly_struct,
903        B: *const n_bpoly_struct,
904        C: *const n_bpoly_struct,
905        order: slong,
906        ctx: nmod_t,
907    );
908    pub fn n_bpoly_mod_divrem_series(
909        Q: *mut n_bpoly_struct,
910        R: *mut n_bpoly_struct,
911        A: *const n_bpoly_struct,
912        B: *const n_bpoly_struct,
913        order: slong,
914        ctx: nmod_t,
915    );
916    pub fn n_bpoly_mod_interp_reduce_2sm_poly(
917        Ap: *mut n_poly_struct,
918        Am: *mut n_poly_struct,
919        A: *const n_bpoly_struct,
920        alphapow: *mut n_poly_struct,
921        mod_: nmod_t,
922    );
923    pub fn n_bpoly_mod_interp_lift_2sm_poly(
924        deg1: *mut slong,
925        T: *mut n_bpoly_struct,
926        A: *const n_poly_struct,
927        B: *const n_poly_struct,
928        alpha: ulong,
929        mod_: nmod_t,
930    );
931    pub fn n_bpoly_mod_interp_crt_2sm_poly(
932        deg1: *mut slong,
933        F: *mut n_bpoly_struct,
934        T: *mut n_bpoly_struct,
935        A: *mut n_poly_struct,
936        B: *mut n_poly_struct,
937        modulus: *const n_poly_struct,
938        alphapow: *mut n_poly_struct,
939        mod_: nmod_t,
940    ) -> libc::c_int;
941    pub fn n_bpoly_mod_gcd_brown_smprime(
942        G: *mut n_bpoly_struct,
943        Abar: *mut n_bpoly_struct,
944        Bbar: *mut n_bpoly_struct,
945        A: *mut n_bpoly_struct,
946        B: *mut n_bpoly_struct,
947        ctx: nmod_t,
948        Sp: *mut n_poly_bpoly_stack_struct,
949    ) -> libc::c_int;
950    pub fn n_fq_bpoly_is_canonical(
951        A: *const n_bpoly_struct,
952        ctx: *const fq_nmod_ctx_struct,
953    ) -> libc::c_int;
954    pub fn n_fq_bpoly_one(A: *mut n_bpoly_struct, ctx: *const fq_nmod_ctx_struct);
955    pub fn n_fq_bpoly_set(
956        A: *mut n_bpoly_struct,
957        B: *const n_bpoly_struct,
958        ctx: *const fq_nmod_ctx_struct,
959    );
960    pub fn n_fq_bpoly_equal(
961        A: *const n_bpoly_struct,
962        B: *const n_bpoly_struct,
963        ctx: *const fq_nmod_ctx_struct,
964    ) -> libc::c_int;
965    pub fn n_fq_bpoly_get_coeff_n_fq(
966        c: *mut ulong,
967        A: *const n_bpoly_struct,
968        e0: slong,
969        e1: slong,
970        ctx: *const fq_nmod_ctx_struct,
971    );
972    pub fn n_fq_bpoly_get_coeff_fq_nmod(
973        c: *mut nmod_poly_struct,
974        A: *const n_bpoly_struct,
975        e0: slong,
976        e1: slong,
977        ctx: *const fq_nmod_ctx_struct,
978    );
979    pub fn n_fq_bpoly_set_coeff_n_fq(
980        A: *mut n_bpoly_struct,
981        e0: slong,
982        e1: slong,
983        c: *const ulong,
984        ctx: *const fq_nmod_ctx_struct,
985    );
986    pub fn n_fq_bpoly_set_fq_nmod_poly_gen0(
987        A: *mut n_bpoly_struct,
988        B: *const fq_nmod_poly_struct,
989        ctx: *const fq_nmod_ctx_struct,
990    );
991    pub fn n_fq_bpoly_set_n_fq_poly_gen0(
992        A: *mut n_bpoly_struct,
993        B: *const n_poly_struct,
994        ctx: *const fq_nmod_ctx_struct,
995    );
996    pub fn n_fq_bpoly_set_n_fq_poly_gen1(
997        A: *mut n_bpoly_struct,
998        B: *const n_poly_struct,
999        ctx: *const fq_nmod_ctx_struct,
1000    );
1001    pub fn n_fq_bpoly_derivative_gen0(
1002        A: *mut n_bpoly_struct,
1003        B: *const n_bpoly_struct,
1004        ctx: *const fq_nmod_ctx_struct,
1005    );
1006    pub fn n_fq_bpoly_scalar_mul_n_fq(
1007        A: *mut n_bpoly_struct,
1008        c: *const ulong,
1009        ctx: *const fq_nmod_ctx_struct,
1010    );
1011    pub fn n_fq_bpoly_taylor_shift_gen0_fq_nmod(
1012        A: *mut n_bpoly_struct,
1013        alpha: *const nmod_poly_struct,
1014        ctx: *const fq_nmod_ctx_struct,
1015    );
1016    pub fn n_fq_bpoly_taylor_shift_gen1_fq_nmod(
1017        A: *mut n_bpoly_struct,
1018        B: *const n_bpoly_struct,
1019        c_: *const nmod_poly_struct,
1020        ctx: *const fq_nmod_ctx_struct,
1021    );
1022    pub fn n_fq_bpoly_taylor_shift_gen0_n_fq(
1023        A: *mut n_bpoly_struct,
1024        alpha: *const ulong,
1025        ctx: *const fq_nmod_ctx_struct,
1026    );
1027    pub fn n_fq_bpoly_gcd_brown_smprime(
1028        G: *mut n_bpoly_struct,
1029        Abar: *mut n_bpoly_struct,
1030        Bbar: *mut n_bpoly_struct,
1031        A: *mut n_bpoly_struct,
1032        B: *mut n_bpoly_struct,
1033        ctx: *const fq_nmod_ctx_struct,
1034        Sp: *mut n_poly_bpoly_stack_struct,
1035    ) -> libc::c_int;
1036    pub fn n_fq_bpoly_print_pretty(
1037        A: *const n_bpoly_struct,
1038        xvar: *const libc::c_char,
1039        yvar: *const libc::c_char,
1040        ctx: *const fq_nmod_ctx_struct,
1041    );
1042    #[link_name = "n_tpoly_init__extern"]
1043    pub fn n_tpoly_init(A: *mut n_tpoly_struct);
1044    pub fn n_tpoly_clear(A: *mut n_tpoly_struct);
1045    pub fn n_tpoly_fit_length(A: *mut n_tpoly_struct, len: slong);
1046    #[link_name = "n_tpoly_swap__extern"]
1047    pub fn n_tpoly_swap(A: *mut n_tpoly_struct, B: *mut n_tpoly_struct);
1048    #[link_name = "n_polyu_init__extern"]
1049    pub fn n_polyu_init(A: *mut n_polyu_struct);
1050    pub fn n_polyu_clear(A: *mut n_polyu_struct);
1051    pub fn n_polyu_realloc(A: *mut n_polyu_struct, len: slong);
1052    #[link_name = "n_polyu_fit_length__extern"]
1053    pub fn n_polyu_fit_length(A: *mut n_polyu_struct, len: slong);
1054    #[link_name = "n_polyu_swap__extern"]
1055    pub fn n_polyu_swap(A: *mut n_polyu_struct, B: *mut n_polyu_struct);
1056    pub fn n_polyu3_print_pretty(
1057        A: *const n_polyu_struct,
1058        gen0: *const libc::c_char,
1059        gen1: *const libc::c_char,
1060        var2: *const libc::c_char,
1061    );
1062    pub fn n_polyu3_degrees(
1063        deg0: *mut slong,
1064        deg1: *mut slong,
1065        deg2: *mut slong,
1066        A: *const n_polyu_struct,
1067    );
1068    pub fn nmod_pow_cache_start(
1069        b: ulong,
1070        pos_direct: *mut n_poly_struct,
1071        pos_bin: *mut n_poly_struct,
1072        neg_direct: *mut n_poly_struct,
1073    );
1074    pub fn nmod_pow_cache_mulpow_ui(
1075        a: ulong,
1076        e: ulong,
1077        pos_direct: *mut n_poly_struct,
1078        pos_bin: *mut n_poly_struct,
1079        neg_direct: *mut n_poly_struct,
1080        ctx: nmod_t,
1081    ) -> ulong;
1082    pub fn nmod_pow_cache_mulpow_neg_ui(
1083        a: ulong,
1084        e: ulong,
1085        pos_direct: *mut n_poly_struct,
1086        pos_bin: *mut n_poly_struct,
1087        neg_direct: *mut n_poly_struct,
1088        ctx: nmod_t,
1089    ) -> ulong;
1090    pub fn nmod_pow_cache_mulpow_fmpz(
1091        a: ulong,
1092        e: *const fmpz,
1093        pos_direct: *mut n_poly_struct,
1094        pos_bin: *mut n_poly_struct,
1095        neg_direct: *mut n_poly_struct,
1096        ctx: nmod_t,
1097    ) -> ulong;
1098    pub fn n_fq_pow_cache_start_n_fq(
1099        b: *const ulong,
1100        pos_direct: *mut n_poly_struct,
1101        pos_bin: *mut n_poly_struct,
1102        neg_direct: *mut n_poly_struct,
1103        ctx: *const fq_nmod_ctx_struct,
1104    );
1105    pub fn n_fq_pow_cache_start_fq_nmod(
1106        b: *const nmod_poly_struct,
1107        pos_direct: *mut n_poly_struct,
1108        pos_bin: *mut n_poly_struct,
1109        neg_direct: *mut n_poly_struct,
1110        ctx: *const fq_nmod_ctx_struct,
1111    );
1112    pub fn n_fq_pow_cache_mulpow_ui(
1113        r: *mut ulong,
1114        a: *const ulong,
1115        e: ulong,
1116        pos_direct: *mut n_poly_struct,
1117        pos_bin: *mut n_poly_struct,
1118        neg_direct: *mut n_poly_struct,
1119        ctx: *const fq_nmod_ctx_struct,
1120    );
1121    pub fn n_fq_pow_cache_mulpow_neg_ui(
1122        r: *mut ulong,
1123        a: *const ulong,
1124        e: ulong,
1125        pos_direct: *mut n_poly_struct,
1126        pos_bin: *mut n_poly_struct,
1127        neg_direct: *mut n_poly_struct,
1128        ctx: *const fq_nmod_ctx_struct,
1129    );
1130    pub fn n_fq_pow_cache_mulpow_fmpz(
1131        r: *mut ulong,
1132        a: *const ulong,
1133        e: *const fmpz,
1134        pos_direct: *mut n_poly_struct,
1135        pos_bin: *mut n_poly_struct,
1136        neg_direct: *mut n_poly_struct,
1137        ctx: *const fq_nmod_ctx_struct,
1138    );
1139    pub fn nmod_eval_interp_init(E: *mut nmod_eval_interp_struct);
1140    pub fn nmod_eval_interp_clear(E: *mut nmod_eval_interp_struct);
1141    pub fn nmod_eval_interp_set_degree_modulus(
1142        E: *mut nmod_eval_interp_struct,
1143        deg: slong,
1144        ctx: nmod_t,
1145    ) -> libc::c_int;
1146    #[link_name = "nmod_eval_interp_eval_length__extern"]
1147    pub fn nmod_eval_interp_eval_length(E: *mut nmod_eval_interp_struct) -> slong;
1148    pub fn nmod_eval_interp_to_coeffs_poly(
1149        a: *mut n_poly_struct,
1150        v: *const n_poly_struct,
1151        E: *mut nmod_eval_interp_struct,
1152        ctx: nmod_t,
1153    );
1154    pub fn nmod_eval_interp_from_coeffs_poly(
1155        v: *mut n_poly_struct,
1156        a: *const n_poly_struct,
1157        E: *mut nmod_eval_interp_struct,
1158        ctx: nmod_t,
1159    );
1160    pub fn nmod_eval_interp_to_coeffs_n_fq_poly(
1161        a: *mut n_poly_struct,
1162        v: *const n_poly_struct,
1163        E: *mut nmod_eval_interp_struct,
1164        ctx: *const fq_nmod_ctx_struct,
1165    );
1166    pub fn nmod_eval_interp_from_coeffs_n_fq_poly(
1167        v: *mut n_poly_struct,
1168        a: *const n_poly_struct,
1169        E: *mut nmod_eval_interp_struct,
1170        ctx: *const fq_nmod_ctx_struct,
1171    );
1172    #[link_name = "nmod_evals_zero__extern"]
1173    pub fn nmod_evals_zero(a: *mut n_poly_struct);
1174    pub fn nmod_evals_add_inplace(
1175        a: *mut n_poly_struct,
1176        b: *mut n_poly_struct,
1177        len: slong,
1178        ctx: nmod_t,
1179    );
1180    pub fn nmod_evals_mul(
1181        a: *mut n_poly_struct,
1182        b: *mut n_poly_struct,
1183        c: *mut n_poly_struct,
1184        len: slong,
1185        ctx: nmod_t,
1186    );
1187    pub fn nmod_evals_addmul(
1188        a: *mut n_poly_struct,
1189        b: *mut n_poly_struct,
1190        c: *mut n_poly_struct,
1191        len: slong,
1192        ctx: nmod_t,
1193    );
1194    pub fn nmod_evals_fmma(
1195        a: *mut n_poly_struct,
1196        b: *mut n_poly_struct,
1197        c: *mut n_poly_struct,
1198        d: *mut n_poly_struct,
1199        e: *mut n_poly_struct,
1200        len: slong,
1201        ctx: nmod_t,
1202    );
1203    #[link_name = "n_fq_evals_zero__extern"]
1204    pub fn n_fq_evals_zero(a: *mut n_poly_struct);
1205    pub fn n_fq_evals_add_inplace(
1206        a: *mut n_poly_struct,
1207        b: *mut n_poly_struct,
1208        len: slong,
1209        ctx: *const fq_nmod_ctx_struct,
1210    );
1211    pub fn n_fq_evals_mul(
1212        a: *mut n_poly_struct,
1213        b: *mut n_poly_struct,
1214        c: *mut n_poly_struct,
1215        len: slong,
1216        ctx: *const fq_nmod_ctx_struct,
1217    );
1218    pub fn n_fq_evals_addmul(
1219        a: *mut n_poly_struct,
1220        b: *mut n_poly_struct,
1221        c: *mut n_poly_struct,
1222        len: slong,
1223        ctx: *const fq_nmod_ctx_struct,
1224    );
1225    pub fn n_fq_evals_fmma(
1226        a: *mut n_poly_struct,
1227        b: *mut n_poly_struct,
1228        c: *mut n_poly_struct,
1229        f: *mut n_poly_struct,
1230        e: *mut n_poly_struct,
1231        len: slong,
1232        ctx: *const fq_nmod_ctx_struct,
1233    );
1234    #[link_name = "n_polyun_init__extern"]
1235    pub fn n_polyun_init(A: *mut n_polyun_struct);
1236    pub fn n_polyun_clear(A: *mut n_polyun_struct);
1237    pub fn n_polyun_realloc(A: *mut n_polyun_struct, len: slong);
1238    pub fn n_polyun_is_canonical(A: *const n_polyun_struct) -> libc::c_int;
1239    pub fn n_polyun_mod_is_canonical(A: *const n_polyun_struct, mod_: nmod_t) -> libc::c_int;
1240    #[link_name = "n_polyun_fit_length__extern"]
1241    pub fn n_polyun_fit_length(A: *mut n_polyun_struct, len: slong);
1242    #[link_name = "n_polyun_swap__extern"]
1243    pub fn n_polyun_swap(A: *mut n_polyun_struct, B: *mut n_polyun_struct);
1244    pub fn n_polyun_set(A: *mut n_polyun_struct, B: *const n_polyun_struct);
1245    pub fn n_polyu1n_print_pretty(
1246        A: *const n_polyun_struct,
1247        var0: *const libc::c_char,
1248        varlast: *const libc::c_char,
1249    );
1250    pub fn n_polyu2n_print_pretty(
1251        A: *const n_polyun_struct,
1252        gen0: *const libc::c_char,
1253        gen1: *const libc::c_char,
1254        varlast: *const libc::c_char,
1255    );
1256    pub fn n_polyu3n_print_pretty(
1257        A: *const n_polyun_struct,
1258        gen0: *const libc::c_char,
1259        gen1: *const libc::c_char,
1260        var2: *const libc::c_char,
1261        varlast: *const libc::c_char,
1262    );
1263    pub fn n_polyun_equal(A: *const n_polyun_struct, B: *const n_polyun_struct) -> libc::c_int;
1264    #[link_name = "n_polyun_one__extern"]
1265    pub fn n_polyun_one(A: *mut n_polyun_struct);
1266    #[link_name = "n_polyu1n_bidegree__extern"]
1267    pub fn n_polyu1n_bidegree(A: *mut n_polyun_struct) -> ulong;
1268    pub fn n_polyu1n_mod_gcd_brown_smprime(
1269        G: *mut n_polyun_struct,
1270        Abar: *mut n_polyun_struct,
1271        Bbar: *mut n_polyun_struct,
1272        A: *mut n_polyun_struct,
1273        B: *mut n_polyun_struct,
1274        ctx: nmod_t,
1275        St: *mut n_poly_polyun_stack_struct,
1276    ) -> libc::c_int;
1277    pub fn n_fq_poly_product_roots_n_fq(
1278        M: *mut n_poly_struct,
1279        H: *const ulong,
1280        length: slong,
1281        ctx: *const fq_nmod_ctx_struct,
1282        St: *mut n_poly_stack_struct,
1283    );
1284    pub fn n_polyun_product_roots(
1285        M: *mut n_polyun_struct,
1286        H: *const n_polyun_struct,
1287        ctx: nmod_t,
1288    ) -> slong;
1289    pub fn n_fq_polyun_product_roots(
1290        M: *mut n_polyun_struct,
1291        H: *const n_polyun_struct,
1292        ctx: *const fq_nmod_ctx_struct,
1293        St: *mut n_poly_stack_struct,
1294    ) -> slong;
1295    pub fn _nmod_zip_eval_step(
1296        cur: *mut ulong,
1297        inc: *const ulong,
1298        coeffs: *const ulong,
1299        length: slong,
1300        ctx: nmod_t,
1301    ) -> ulong;
1302    pub fn _n_fq_zip_eval_step(
1303        res: *mut ulong,
1304        cur: *mut ulong,
1305        inc: *const ulong,
1306        coeffs: *const ulong,
1307        length: slong,
1308        ctx: *const fq_nmod_ctx_struct,
1309    );
1310    pub fn _n_fqp_zip_eval_step(
1311        res: *mut ulong,
1312        cur: *mut ulong,
1313        inc: *const ulong,
1314        coeffs: *const ulong,
1315        length: slong,
1316        d: slong,
1317        mod_: nmod_t,
1318    );
1319    pub fn _nmod_zip_vand_solve(
1320        coeffs: *mut ulong,
1321        monomials: *const ulong,
1322        mlength: slong,
1323        evals: *const ulong,
1324        elength: slong,
1325        master: *const ulong,
1326        scratch: *mut ulong,
1327        ctx: nmod_t,
1328    ) -> libc::c_int;
1329    pub fn _n_fq_zip_vand_solve(
1330        coeffs: *mut ulong,
1331        monomials: *const ulong,
1332        mlength: slong,
1333        evals: *const ulong,
1334        elength: slong,
1335        master: *const ulong,
1336        scratch: *mut ulong,
1337        ctx: *const fq_nmod_ctx_struct,
1338    ) -> libc::c_int;
1339    pub fn _n_fqp_zip_vand_solve(
1340        coeffs: *mut ulong,
1341        monomials: *const ulong,
1342        mlength: slong,
1343        evals: *const ulong,
1344        elength: slong,
1345        master: *const ulong,
1346        scratch: *mut ulong,
1347        ctx: *const fq_nmod_ctx_struct,
1348    ) -> libc::c_int;
1349    pub fn n_poly_stack_init(S: *mut n_poly_stack_struct);
1350    pub fn n_poly_stack_clear(S: *mut n_poly_stack_struct);
1351    pub fn n_poly_stack_fit_request(
1352        S: *mut n_poly_stack_struct,
1353        k: slong,
1354    ) -> *mut *mut n_poly_struct;
1355    #[link_name = "n_poly_stack_vec_init__extern"]
1356    pub fn n_poly_stack_vec_init(S: *mut n_poly_stack_struct, len: slong) -> *mut ulong;
1357    #[link_name = "n_poly_stack_vec_clear__extern"]
1358    pub fn n_poly_stack_vec_clear(S: *mut n_poly_stack_struct);
1359    #[link_name = "n_poly_stack_request__extern"]
1360    pub fn n_poly_stack_request(S: *mut n_poly_stack_struct, k: slong) -> *mut *mut n_poly_struct;
1361    #[link_name = "n_poly_stack_take_top__extern"]
1362    pub fn n_poly_stack_take_top(S: *mut n_poly_stack_struct) -> *mut n_poly_struct;
1363    #[link_name = "n_poly_stack_give_back__extern"]
1364    pub fn n_poly_stack_give_back(S: *mut n_poly_stack_struct, k: slong);
1365    #[link_name = "n_poly_stack_size__extern"]
1366    pub fn n_poly_stack_size(S: *const n_poly_stack_struct) -> slong;
1367    pub fn n_bpoly_stack_init(S: *mut n_bpoly_stack_struct);
1368    pub fn n_bpoly_stack_clear(S: *mut n_bpoly_stack_struct);
1369    pub fn n_bpoly_stack_fit_request(
1370        S: *mut n_bpoly_stack_struct,
1371        k: slong,
1372    ) -> *mut *mut n_bpoly_struct;
1373    #[link_name = "n_bpoly_stack_request__extern"]
1374    pub fn n_bpoly_stack_request(
1375        S: *mut n_bpoly_stack_struct,
1376        k: slong,
1377    ) -> *mut *mut n_bpoly_struct;
1378    #[link_name = "n_bpoly_stack_take_top__extern"]
1379    pub fn n_bpoly_stack_take_top(S: *mut n_bpoly_stack_struct) -> *mut n_bpoly_struct;
1380    #[link_name = "n_bpoly_stack_give_back__extern"]
1381    pub fn n_bpoly_stack_give_back(S: *mut n_bpoly_stack_struct, k: slong);
1382    #[link_name = "n_bpoly_stack_size__extern"]
1383    pub fn n_bpoly_stack_size(S: *const n_bpoly_stack_struct) -> slong;
1384    pub fn n_polyun_stack_init(S: *mut n_polyun_stack_struct);
1385    pub fn n_polyun_stack_clear(S: *mut n_polyun_stack_struct);
1386    pub fn n_polyun_stack_fit_request(
1387        S: *mut n_polyun_stack_struct,
1388        k: slong,
1389    ) -> *mut *mut n_polyun_struct;
1390    #[link_name = "n_polyun_stack_request__extern"]
1391    pub fn n_polyun_stack_request(
1392        S: *mut n_polyun_stack_struct,
1393        k: slong,
1394    ) -> *mut *mut n_polyun_struct;
1395    #[link_name = "n_polyun_stack_take_top__extern"]
1396    pub fn n_polyun_stack_take_top(S: *mut n_polyun_stack_struct) -> *mut n_polyun_struct;
1397    #[link_name = "n_polyun_stack_give_back__extern"]
1398    pub fn n_polyun_stack_give_back(S: *mut n_polyun_stack_struct, k: slong);
1399    #[link_name = "n_polyun_stack_size__extern"]
1400    pub fn n_polyun_stack_size(S: *const n_polyun_stack_struct) -> slong;
1401}