1#![allow(non_snake_case)]
2#![allow(non_camel_case_types)]
3
4use crate::deps::*;
7use crate::flint::*;
8use crate::fmpz::fmpz;
9use crate::fq_nmod::fq_nmod_ctx_struct;
10use crate::fq_nmod_poly::fq_nmod_poly_struct;
11use crate::nmod_poly::nmod_poly_struct;
12use crate::nmod_vec::nmod_t;
13use libc::{c_char, c_int, FILE};
14
15#[repr(C)]
16#[derive(Debug, Copy, Clone)]
17pub struct n_poly_struct {
18 pub coeffs: *mut mp_limb_t,
19 pub alloc: mp_limb_signed_t,
20 pub length: mp_limb_signed_t,
21}
22pub type n_poly_t = [n_poly_struct; 1usize];
23pub type n_fq_poly_struct = n_poly_struct;
24pub type n_fq_poly_t = n_poly_t;
25#[repr(C)]
26#[derive(Debug, Copy, Clone)]
27pub struct n_bpoly_struct {
28 pub coeffs: *mut n_poly_struct,
29 pub alloc: mp_limb_signed_t,
30 pub length: mp_limb_signed_t,
31}
32pub type n_bpoly_t = [n_bpoly_struct; 1usize];
33pub type n_fq_bpoly_struct = n_bpoly_struct;
34pub type n_fq_bpoly_t = n_bpoly_t;
35#[repr(C)]
36#[derive(Debug, Copy, Clone)]
37pub struct n_tpoly_struct {
38 pub coeffs: *mut n_bpoly_struct,
39 pub alloc: mp_limb_signed_t,
40 pub length: mp_limb_signed_t,
41}
42pub type n_tpoly_t = [n_tpoly_struct; 1usize];
43pub type n_fq_tpoly_struct = n_tpoly_struct;
44pub type n_fq_tpoly_t = n_tpoly_t;
45#[repr(C)]
46#[derive(Debug, Copy, Clone)]
47pub struct n_polyu_struct {
48 pub exps: *mut mp_limb_t,
49 pub coeffs: *mut mp_limb_t,
50 pub length: mp_limb_signed_t,
51 pub alloc: mp_limb_signed_t,
52}
53pub type n_polyu_t = [n_polyu_struct; 1usize];
54pub type n_fq_polyu_struct = n_polyu_struct;
55pub type n_fq_polyu_t = n_polyu_t;
56#[repr(C)]
57#[derive(Debug, Copy, Clone)]
58pub struct n_polyun_struct {
59 pub coeffs: *mut n_poly_struct,
60 pub exps: *mut mp_limb_t,
61 pub length: mp_limb_signed_t,
62 pub alloc: mp_limb_signed_t,
63}
64pub type n_polyun_t = [n_polyun_struct; 1usize];
65pub type n_fq_polyun_struct = n_polyun_struct;
66pub type n_fq_polyun_t = n_polyun_t;
67#[repr(C)]
68#[derive(Debug, Copy, Clone)]
69pub struct n_poly_stack_struct {
70 pub array: *mut *mut n_poly_struct,
71 pub alloc: mp_limb_signed_t,
72 pub top: mp_limb_signed_t,
73}
74pub type n_poly_stack_t = [n_poly_stack_struct; 1usize];
75#[repr(C)]
76#[derive(Debug, Copy, Clone)]
77pub struct n_bpoly_stack_struct {
78 pub array: *mut *mut n_bpoly_struct,
79 pub alloc: mp_limb_signed_t,
80 pub top: mp_limb_signed_t,
81}
82pub type n_bpoly_stack_t = [n_bpoly_stack_struct; 1usize];
83#[repr(C)]
84#[derive(Debug, Copy, Clone)]
85pub struct n_poly_bpoly_stack_struct {
86 pub poly_stack: n_poly_stack_t,
87 pub bpoly_stack: n_bpoly_stack_t,
88}
89pub type n_poly_bpoly_stack_t = [n_poly_bpoly_stack_struct; 1usize];
90#[repr(C)]
91#[derive(Debug, Copy, Clone)]
92pub struct n_polyun_stack_struct {
93 pub array: *mut *mut n_polyun_struct,
94 pub alloc: mp_limb_signed_t,
95 pub top: mp_limb_signed_t,
96}
97pub type n_polyun_stack_t = [n_polyun_stack_struct; 1usize];
98#[repr(C)]
99#[derive(Debug, Copy, Clone)]
100pub struct n_poly_polyun_stack_struct {
101 pub poly_stack: n_poly_stack_t,
102 pub polyun_stack: n_polyun_stack_t,
103}
104pub type n_poly_polyun_stack_t = [n_poly_polyun_stack_struct; 1usize];
105extern "C" {
106 pub fn n_poly_init(A: *mut n_poly_struct);
107}
108extern "C" {
109 pub fn n_poly_init2(A: *mut n_poly_struct, alloc: mp_limb_signed_t);
110}
111extern "C" {
112 pub fn n_poly_clear(A: *mut n_poly_struct);
113}
114extern "C" {
115 pub fn n_poly_is_canonical(A: *mut n_poly_struct) -> c_int;
116}
117extern "C" {
118 pub fn n_poly_realloc(A: *mut n_poly_struct, len: mp_limb_signed_t);
119}
120extern "C" {
121 pub fn n_poly_print_pretty(A: *mut n_poly_struct, x: *const c_char);
122}
123extern "C" {
124 pub fn n_poly_fit_length(A: *mut n_poly_struct, len: mp_limb_signed_t);
125}
126extern "C" {
127 pub fn nmod_poly_mock(a: *mut nmod_poly_struct, b: *mut n_poly_struct, mod_: nmod_t);
128}
129extern "C" {
130 pub fn n_poly_mock(a: *mut n_poly_struct, b: *mut nmod_poly_struct);
131}
132extern "C" {
133 pub fn n_poly_set(A: *mut n_poly_struct, B: *mut n_poly_struct);
134}
135extern "C" {
136 pub fn n_poly_swap(A: *mut n_poly_struct, B: *mut n_poly_struct);
137}
138extern "C" {
139 pub fn _n_poly_normalise(A: *mut n_poly_struct);
140}
141extern "C" {
142 pub fn n_poly_degree(A: *mut n_poly_struct) -> mp_limb_signed_t;
143}
144extern "C" {
145 pub fn n_poly_is_one(A: *mut n_poly_struct) -> c_int;
146}
147extern "C" {
148 pub fn n_poly_lead(A: *mut n_poly_struct) -> mp_limb_t;
149}
150extern "C" {
151 pub fn n_poly_one(A: *mut n_poly_struct);
152}
153extern "C" {
154 pub fn n_poly_set_ui(A: *mut n_poly_struct, c: mp_limb_t);
155}
156extern "C" {
157 pub fn n_poly_is_zero(poly: *mut n_poly_struct) -> c_int;
158}
159extern "C" {
160 pub fn n_poly_zero(res: *mut n_poly_struct);
161}
162extern "C" {
163 pub fn n_poly_equal(a: *mut n_poly_struct, b: *mut n_poly_struct) -> c_int;
164}
165extern "C" {
166 pub fn n_poly_mod_is_canonical(A: *mut n_poly_struct, mod_: nmod_t) -> c_int;
167}
168extern "C" {
169 pub fn n_poly_mod_make_monic(A: *mut n_poly_struct, B: *mut n_poly_struct, mod_: nmod_t);
170}
171extern "C" {
172 pub fn n_poly_mod_taylor_shift(g: *mut n_poly_struct, c: mp_limb_t, mod_: nmod_t);
173}
174extern "C" {
175 pub fn n_poly_get_coeff(poly: *mut n_poly_struct, j: mp_limb_signed_t) -> mp_limb_t;
176}
177extern "C" {
178 pub fn n_poly_set_coeff_nonzero(A: *mut n_poly_struct, j: mp_limb_signed_t, c: mp_limb_t);
179}
180extern "C" {
181 pub fn n_poly_set_coeff(A: *mut n_poly_struct, e: mp_limb_signed_t, c: mp_limb_t);
182}
183extern "C" {
184 pub fn n_poly_mod_set_coeff_ui(
185 A: *mut n_poly_struct,
186 j: mp_limb_signed_t,
187 c: mp_limb_t,
188 mod_: nmod_t,
189 );
190}
191extern "C" {
192 pub fn n_poly_set_nmod_poly(a: *mut n_poly_struct, b: *mut nmod_poly_struct);
193}
194extern "C" {
195 pub fn nmod_poly_set_n_poly(a: *mut nmod_poly_struct, b: *mut n_poly_struct);
196}
197extern "C" {
198 pub fn n_poly_shift_left(A: *mut n_poly_struct, B: *mut n_poly_struct, k: mp_limb_signed_t);
199}
200extern "C" {
201 pub fn n_poly_shift_right(
202 res: *mut n_poly_struct,
203 poly: *mut n_poly_struct,
204 k: mp_limb_signed_t,
205 );
206}
207extern "C" {
208 pub fn n_poly_truncate(poly: *mut n_poly_struct, len: mp_limb_signed_t);
209}
210extern "C" {
211 pub fn _n_poly_mod_scalar_mul_nmod(
212 A: *mut n_poly_struct,
213 B: *mut n_poly_struct,
214 c: mp_limb_t,
215 mod_: nmod_t,
216 );
217}
218extern "C" {
219 pub fn _n_poly_mod_scalar_mul_nmod_inplace(A: *mut n_poly_struct, c: mp_limb_t, mod_: nmod_t);
220}
221extern "C" {
222 pub fn n_poly_mod_scalar_mul_ui(
223 A: *mut n_poly_struct,
224 B: *mut n_poly_struct,
225 c: mp_limb_t,
226 ctx: nmod_t,
227 );
228}
229extern "C" {
230 pub fn n_poly_mod_eval_step2(
231 Acur: *mut n_poly_struct,
232 Ainc: *mut n_poly_struct,
233 mod_: nmod_t,
234 ) -> mp_limb_t;
235}
236extern "C" {
237 pub fn n_poly_mod_evaluate_nmod(A: *mut n_poly_struct, c: mp_limb_t, mod_: nmod_t)
238 -> mp_limb_t;
239}
240extern "C" {
241 pub fn n_poly_mod_neg(A: *mut n_poly_struct, B: *mut n_poly_struct, mod_: nmod_t);
242}
243extern "C" {
244 pub fn n_poly_mod_add(
245 A: *mut n_poly_struct,
246 B: *mut n_poly_struct,
247 C: *mut n_poly_struct,
248 mod_: nmod_t,
249 );
250}
251extern "C" {
252 pub fn n_poly_mod_add_ui(
253 res: *mut n_poly_struct,
254 poly: *mut n_poly_struct,
255 c: mp_limb_t,
256 ctx: nmod_t,
257 );
258}
259extern "C" {
260 pub fn n_poly_mod_sub(
261 A: *mut n_poly_struct,
262 B: *mut n_poly_struct,
263 C: *mut n_poly_struct,
264 mod_: nmod_t,
265 );
266}
267extern "C" {
268 pub fn n_poly_mod_product_roots_nmod_vec(
269 A: *mut n_poly_struct,
270 r: mp_srcptr,
271 n: mp_limb_signed_t,
272 mod_: nmod_t,
273 );
274}
275extern "C" {
276 pub fn n_poly_mod_shift_left_scalar_addmul(
277 A: *mut n_poly_struct,
278 k: mp_limb_signed_t,
279 c: mp_limb_t,
280 mod_: nmod_t,
281 );
282}
283extern "C" {
284 pub fn n_poly_mod_addmul_linear(
285 A: *mut n_poly_struct,
286 B: *mut n_poly_struct,
287 C: *mut n_poly_struct,
288 d1: mp_limb_t,
289 d0: mp_limb_t,
290 mod_: nmod_t,
291 );
292}
293extern "C" {
294 pub fn n_poly_mod_scalar_addmul_nmod(
295 A: *mut n_poly_struct,
296 B: *mut n_poly_struct,
297 C: *mut n_poly_struct,
298 d0: mp_limb_t,
299 ctx: nmod_t,
300 );
301}
302extern "C" {
303 pub fn _n_poly_eval_pow(
304 P: *mut n_poly_struct,
305 alphapow: *mut n_poly_struct,
306 nlimbs: c_int,
307 ctx: nmod_t,
308 ) -> mp_limb_t;
309}
310extern "C" {
311 pub fn n_poly_mod_eval_pow(
312 P: *mut n_poly_struct,
313 alphapow: *mut n_poly_struct,
314 ctx: nmod_t,
315 ) -> mp_limb_t;
316}
317extern "C" {
318 pub fn n_poly_mod_eval2_pow(
319 vp: *mut mp_limb_t,
320 vm: *mut mp_limb_t,
321 P: *mut n_poly_struct,
322 alphapow: *mut n_poly_struct,
323 ctx: nmod_t,
324 );
325}
326extern "C" {
327 pub fn n_poly_mod_div_root(
328 Q: *mut n_poly_struct,
329 A: *mut n_poly_struct,
330 c: mp_limb_t,
331 ctx: nmod_t,
332 ) -> mp_limb_t;
333}
334extern "C" {
335 pub fn _n_poly_mod_mul(
336 A: *mut n_poly_struct,
337 B: *mut n_poly_struct,
338 C: *mut n_poly_struct,
339 ctx: nmod_t,
340 );
341}
342extern "C" {
343 pub fn _n_poly_mod_div(
344 Q: *mut n_poly_struct,
345 A: *mut n_poly_struct,
346 B: *mut n_poly_struct,
347 mod_: nmod_t,
348 );
349}
350extern "C" {
351 pub fn _n_poly_mod_rem(
352 R: *mut n_poly_struct,
353 A: *mut n_poly_struct,
354 B: *mut n_poly_struct,
355 mod_: nmod_t,
356 );
357}
358extern "C" {
359 pub fn _n_poly_mod_divrem(
360 Q: *mut n_poly_struct,
361 R: *mut n_poly_struct,
362 A: *mut n_poly_struct,
363 B: *mut n_poly_struct,
364 mod_: nmod_t,
365 );
366}
367extern "C" {
368 pub fn n_poly_mod_remove(
369 f: *mut n_poly_struct,
370 p: *mut n_poly_struct,
371 ctx: nmod_t,
372 ) -> mp_limb_t;
373}
374extern "C" {
375 pub fn n_poly_mod_pow(
376 res: *mut n_poly_struct,
377 poly: *mut n_poly_struct,
378 e: mp_limb_t,
379 ctx: nmod_t,
380 );
381}
382extern "C" {
383 pub fn n_poly_mod_mul(
384 A: *mut n_poly_struct,
385 B: *mut n_poly_struct,
386 C: *mut n_poly_struct,
387 mod_: nmod_t,
388 );
389}
390extern "C" {
391 pub fn n_poly_mod_mullow(
392 A: *mut n_poly_struct,
393 B: *mut n_poly_struct,
394 C: *mut n_poly_struct,
395 n: mp_limb_signed_t,
396 mod_: nmod_t,
397 );
398}
399extern "C" {
400 pub fn n_poly_mod_div(
401 Q: *mut n_poly_struct,
402 A: *mut n_poly_struct,
403 B: *mut n_poly_struct,
404 mod_: nmod_t,
405 );
406}
407extern "C" {
408 pub fn n_poly_mod_rem(
409 R: *mut n_poly_struct,
410 A: *mut n_poly_struct,
411 B: *mut n_poly_struct,
412 mod_: nmod_t,
413 );
414}
415extern "C" {
416 pub fn n_poly_mod_divrem(
417 Q: *mut n_poly_struct,
418 R: *mut n_poly_struct,
419 A: *mut n_poly_struct,
420 B: *mut n_poly_struct,
421 mod_: nmod_t,
422 );
423}
424extern "C" {
425 pub fn n_poly_mod_mulmod(
426 res: *mut n_poly_struct,
427 poly1: *mut n_poly_struct,
428 poly2: *mut n_poly_struct,
429 f: *mut n_poly_struct,
430 mod_: nmod_t,
431 );
432}
433extern "C" {
434 pub fn n_poly_mod_invmod(
435 A: *mut n_poly_struct,
436 B: *mut n_poly_struct,
437 P: *mut n_poly_struct,
438 mod_: nmod_t,
439 ) -> c_int;
440}
441extern "C" {
442 pub fn n_poly_mod_gcd(
443 G: *mut n_poly_struct,
444 A: *mut n_poly_struct,
445 B: *mut n_poly_struct,
446 mod_: nmod_t,
447 );
448}
449extern "C" {
450 pub fn n_poly_mod_xgcd(
451 G: *mut n_poly_struct,
452 S: *mut n_poly_struct,
453 T: *mut n_poly_struct,
454 A: *mut n_poly_struct,
455 B: *mut n_poly_struct,
456 mod_: nmod_t,
457 );
458}
459extern "C" {
460 pub fn n_poly_mod_inv_series(
461 Qinv: *mut n_poly_struct,
462 Q: *mut n_poly_struct,
463 n: mp_limb_signed_t,
464 mod_: nmod_t,
465 );
466}
467extern "C" {
468 pub fn n_poly_mod_div_series(
469 Q: *mut n_poly_struct,
470 A: *mut n_poly_struct,
471 B: *mut n_poly_struct,
472 order: mp_limb_signed_t,
473 ctx: nmod_t,
474 );
475}
476extern "C" {
477 pub fn n_poly_reverse(
478 output: *mut n_poly_struct,
479 input: *mut n_poly_struct,
480 m: mp_limb_signed_t,
481 );
482}
483extern "C" {
484 pub fn n_poly_mod_mulmod_preinv(
485 A: *mut n_poly_struct,
486 B: *mut n_poly_struct,
487 C: *mut n_poly_struct,
488 M: *mut n_poly_struct,
489 Minv: *mut n_poly_struct,
490 ctx: nmod_t,
491 );
492}
493extern "C" {
494 pub fn fq_nmod_ctx_mod(ctx: *mut fq_nmod_ctx_struct) -> nmod_t;
495}
496extern "C" {
497 pub fn _n_fq_is_zero(a: *const mp_limb_t, d: mp_limb_signed_t) -> c_int;
498}
499extern "C" {
500 pub fn _n_fq_zero(a: *mut mp_limb_t, d: mp_limb_signed_t);
501}
502extern "C" {
503 pub fn _n_fq_is_one(a: *const mp_limb_t, d: mp_limb_signed_t) -> c_int;
504}
505extern "C" {
506 pub fn _n_fq_is_ui(a: *const mp_limb_t, d: mp_limb_signed_t) -> c_int;
507}
508extern "C" {
509 pub fn n_fq_is_one(a: *const mp_limb_t, ctx: *mut fq_nmod_ctx_struct) -> c_int;
510}
511extern "C" {
512 pub fn _n_fq_one(a: *mut mp_limb_t, d: mp_limb_signed_t);
513}
514extern "C" {
515 pub fn _n_fq_set_nmod(a: *mut mp_limb_t, b: mp_limb_t, d: mp_limb_signed_t);
516}
517extern "C" {
518 pub fn n_fq_gen(a: *mut mp_limb_t, ctx: *mut fq_nmod_ctx_struct);
519}
520extern "C" {
521 pub fn _n_fq_set(a: *mut mp_limb_t, b: *const mp_limb_t, d: mp_limb_signed_t);
522}
523extern "C" {
524 pub fn _n_fq_swap(a: *mut mp_limb_t, b: *mut mp_limb_t, d: mp_limb_signed_t);
525}
526extern "C" {
527 pub fn _n_fq_equal(a: *mut mp_limb_t, b: *const mp_limb_t, d: mp_limb_signed_t) -> c_int;
528}
529extern "C" {
530 pub fn n_fq_equal_fq_nmod(
531 a: *const mp_limb_t,
532 b: *mut nmod_poly_struct,
533 ctx: *mut fq_nmod_ctx_struct,
534 ) -> c_int;
535}
536extern "C" {
537 pub fn n_fq_is_canonical(a: *const mp_limb_t, ctx: *mut fq_nmod_ctx_struct) -> c_int;
538}
539extern "C" {
540 pub fn n_fq_randtest_not_zero(
541 a: *mut mp_limb_t,
542 state: *mut flint_rand_s,
543 ctx: *mut fq_nmod_ctx_struct,
544 );
545}
546extern "C" {
547 pub fn n_fq_get_str_pretty(a: *const mp_limb_t, ctx: *mut fq_nmod_ctx_struct) -> *mut c_char;
548}
549extern "C" {
550 pub fn n_fq_fprint_pretty(
551 file: *mut FILE,
552 a: *const mp_limb_t,
553 ctx: *mut fq_nmod_ctx_struct,
554 ) -> c_int;
555}
556extern "C" {
557 pub fn n_fq_print_pretty(a: *const mp_limb_t, ctx: *mut fq_nmod_ctx_struct);
558}
559extern "C" {
560 pub fn n_fq_get_fq_nmod(
561 a: *mut nmod_poly_struct,
562 b: *const mp_limb_t,
563 ctx: *mut fq_nmod_ctx_struct,
564 );
565}
566extern "C" {
567 pub fn n_fq_set_fq_nmod(
568 a: *mut mp_limb_t,
569 b: *mut nmod_poly_struct,
570 ctx: *mut fq_nmod_ctx_struct,
571 );
572}
573extern "C" {
574 pub fn n_fq_get_n_poly(
575 a: *mut n_poly_struct,
576 b: *const mp_limb_t,
577 ctx: *mut fq_nmod_ctx_struct,
578 );
579}
580extern "C" {
581 pub fn _n_fq_set_n_poly(
582 a: *mut mp_limb_t,
583 bcoeffs: *const mp_limb_t,
584 blen: mp_limb_signed_t,
585 ctx: *mut fq_nmod_ctx_struct,
586 );
587}
588extern "C" {
589 pub fn n_fq_add_si(
590 a: *mut mp_limb_t,
591 b: *const mp_limb_t,
592 c: mp_limb_signed_t,
593 ctx: *mut fq_nmod_ctx_struct,
594 );
595}
596extern "C" {
597 pub fn n_fq_add(
598 a: *mut mp_limb_t,
599 b: *const mp_limb_t,
600 c: *const mp_limb_t,
601 ctx: *mut fq_nmod_ctx_struct,
602 );
603}
604extern "C" {
605 pub fn n_fq_add_fq_nmod(
606 a: *mut mp_limb_t,
607 b: *const mp_limb_t,
608 c: *mut nmod_poly_struct,
609 ctx: *mut fq_nmod_ctx_struct,
610 );
611}
612extern "C" {
613 pub fn n_fq_sub_fq_nmod(
614 a: *mut mp_limb_t,
615 b: *const mp_limb_t,
616 c: *mut nmod_poly_struct,
617 ctx: *mut fq_nmod_ctx_struct,
618 );
619}
620extern "C" {
621 pub fn n_fq_sub(
622 a: *mut mp_limb_t,
623 b: *const mp_limb_t,
624 c: *const mp_limb_t,
625 ctx: *mut fq_nmod_ctx_struct,
626 );
627}
628extern "C" {
629 pub fn _n_fq_add(
630 a: *mut mp_limb_t,
631 b: *const mp_limb_t,
632 c: *const mp_limb_t,
633 d: mp_limb_signed_t,
634 mod_: nmod_t,
635 );
636}
637extern "C" {
638 pub fn _n_fq_sub(
639 a: *mut mp_limb_t,
640 b: *const mp_limb_t,
641 c: *const mp_limb_t,
642 d: mp_limb_signed_t,
643 mod_: nmod_t,
644 );
645}
646extern "C" {
647 pub fn _n_fq_neg(a: *mut mp_limb_t, b: *const mp_limb_t, d: mp_limb_signed_t, mod_: nmod_t);
648}
649extern "C" {
650 pub fn _n_fq_mul_ui(
651 a: *mut mp_limb_t,
652 b: *const mp_limb_t,
653 c: mp_limb_t,
654 d: mp_limb_signed_t,
655 mod_: nmod_t,
656 );
657}
658extern "C" {
659 pub fn _n_fq_madd2(
660 a: *mut mp_limb_t,
661 b: *const mp_limb_t,
662 c: *const mp_limb_t,
663 ctx: *mut fq_nmod_ctx_struct,
664 t: *mut mp_limb_t,
665 );
666}
667extern "C" {
668 pub fn _n_fq_mul2(
669 t: *mut mp_limb_t,
670 b: *const mp_limb_t,
671 c: *const mp_limb_t,
672 ctx: *mut fq_nmod_ctx_struct,
673 );
674}
675extern "C" {
676 pub fn _n_fq_reduce(
677 a: *mut mp_limb_t,
678 b: *mut mp_limb_t,
679 blen: mp_limb_signed_t,
680 ctx: *mut fq_nmod_ctx_struct,
681 t: *mut mp_limb_t,
682 );
683}
684extern "C" {
685 pub fn _n_fq_reduce2(
686 a: *mut mp_limb_t,
687 b: *mut mp_limb_t,
688 ctx: *mut fq_nmod_ctx_struct,
689 t: *mut mp_limb_t,
690 );
691}
692extern "C" {
693 pub fn _n_fq_mul(
694 a: *mut mp_limb_t,
695 b: *const mp_limb_t,
696 c: *const mp_limb_t,
697 ctx: *mut fq_nmod_ctx_struct,
698 t: *mut mp_limb_t,
699 );
700}
701extern "C" {
702 pub fn _n_fq_addmul(
703 a: *mut mp_limb_t,
704 b: *const mp_limb_t,
705 c: *const mp_limb_t,
706 e: *const mp_limb_t,
707 ctx: *mut fq_nmod_ctx_struct,
708 t: *mut mp_limb_t,
709 );
710}
711extern "C" {
712 pub fn _n_fq_dot_lazy_size(len: mp_limb_signed_t, ctx: *mut fq_nmod_ctx_struct) -> c_int;
713}
714extern "C" {
715 pub fn _n_fq_reduce2_lazy1(a: *mut mp_limb_t, d: mp_limb_signed_t, ctx: nmod_t);
716}
717extern "C" {
718 pub fn _n_fq_madd2_lazy1(
719 a: *mut mp_limb_t,
720 b: *const mp_limb_t,
721 c: *const mp_limb_t,
722 d: mp_limb_signed_t,
723 );
724}
725extern "C" {
726 pub fn _n_fq_mul2_lazy1(
727 a: *mut mp_limb_t,
728 b: *const mp_limb_t,
729 c: *const mp_limb_t,
730 d: mp_limb_signed_t,
731 );
732}
733extern "C" {
734 pub fn _n_fq_reduce2_lazy2(a: *mut mp_limb_t, d: mp_limb_signed_t, ctx: nmod_t);
735}
736extern "C" {
737 pub fn _n_fq_madd2_lazy2(
738 a: *mut mp_limb_t,
739 b: *const mp_limb_t,
740 c: *const mp_limb_t,
741 d: mp_limb_signed_t,
742 );
743}
744extern "C" {
745 pub fn _n_fq_mul2_lazy2(
746 a: *mut mp_limb_t,
747 b: *const mp_limb_t,
748 c: *const mp_limb_t,
749 d: mp_limb_signed_t,
750 );
751}
752extern "C" {
753 pub fn _n_fq_reduce2_lazy3(a: *mut mp_limb_t, d: mp_limb_signed_t, ctx: nmod_t);
754}
755extern "C" {
756 pub fn _n_fq_madd2_lazy3(
757 a: *mut mp_limb_t,
758 b: *const mp_limb_t,
759 c: *const mp_limb_t,
760 d: mp_limb_signed_t,
761 );
762}
763extern "C" {
764 pub fn _n_fq_mul2_lazy3(
765 a: *mut mp_limb_t,
766 b: *const mp_limb_t,
767 c: *const mp_limb_t,
768 d: mp_limb_signed_t,
769 );
770}
771extern "C" {
772 pub fn _n_fq_inv(
773 a: *mut mp_limb_t,
774 b: *const mp_limb_t,
775 ctx: *mut fq_nmod_ctx_struct,
776 t: *mut mp_limb_t,
777 );
778}
779extern "C" {
780 pub fn _n_fq_pow_ui(
781 a: *mut mp_limb_t,
782 b: *const mp_limb_t,
783 e: mp_limb_t,
784 ctx: *mut fq_nmod_ctx_struct,
785 );
786}
787extern "C" {
788 pub fn n_fq_pow_fmpz(
789 a: *mut mp_limb_t,
790 b: *const mp_limb_t,
791 e: *mut fmpz,
792 ctx: *mut fq_nmod_ctx_struct,
793 );
794}
795extern "C" {
796 pub fn n_fq_mul(
797 a: *mut mp_limb_t,
798 b: *const mp_limb_t,
799 c: *const mp_limb_t,
800 ctx: *mut fq_nmod_ctx_struct,
801 );
802}
803extern "C" {
804 pub fn n_fq_mul_fq_nmod(
805 a: *mut mp_limb_t,
806 b: *const mp_limb_t,
807 c: *mut nmod_poly_struct,
808 ctx: *mut fq_nmod_ctx_struct,
809 );
810}
811extern "C" {
812 pub fn n_fq_addmul(
813 a: *mut mp_limb_t,
814 b: *const mp_limb_t,
815 c: *const mp_limb_t,
816 d: *const mp_limb_t,
817 ctx: *mut fq_nmod_ctx_struct,
818 );
819}
820extern "C" {
821 pub fn n_fq_inv(a: *mut mp_limb_t, b: *const mp_limb_t, ctx: *mut fq_nmod_ctx_struct);
822}
823extern "C" {
824 pub fn n_fq_pow_ui(
825 a: *mut mp_limb_t,
826 b: *const mp_limb_t,
827 e: mp_limb_t,
828 ctx: *mut fq_nmod_ctx_struct,
829 );
830}
831extern "C" {
832 pub fn n_fq_poly_init2(
833 A: *mut n_poly_struct,
834 alloc: mp_limb_signed_t,
835 ctx: *mut fq_nmod_ctx_struct,
836 );
837}
838extern "C" {
839 pub fn _n_fq_poly_one(A: *mut n_poly_struct, d: mp_limb_signed_t);
840}
841extern "C" {
842 pub fn n_fq_poly_one(A: *mut n_poly_struct, ctx: *mut fq_nmod_ctx_struct);
843}
844extern "C" {
845 pub fn n_fq_poly_is_one(A: *mut n_poly_struct, ctx: *mut fq_nmod_ctx_struct) -> c_int;
846}
847extern "C" {
848 pub fn n_fq_poly_is_canonical(a: *mut n_poly_struct, ctx: *mut fq_nmod_ctx_struct) -> c_int;
849}
850extern "C" {
851 pub fn _n_fq_poly_normalise(A: *mut n_poly_struct, d: mp_limb_signed_t);
852}
853extern "C" {
854 pub fn n_fq_poly_print_pretty(
855 A: *mut n_poly_struct,
856 x: *const c_char,
857 ctx: *mut fq_nmod_ctx_struct,
858 );
859}
860extern "C" {
861 pub fn n_fq_poly_equal(
862 A: *mut n_poly_struct,
863 B: *mut n_poly_struct,
864 ctx: *mut fq_nmod_ctx_struct,
865 ) -> c_int;
866}
867extern "C" {
868 pub fn n_fq_poly_set(
869 A: *mut n_poly_struct,
870 B: *mut n_poly_struct,
871 ctx: *mut fq_nmod_ctx_struct,
872 );
873}
874extern "C" {
875 pub fn n_fq_poly_randtest(
876 A: *mut n_poly_struct,
877 state: *mut flint_rand_s,
878 len: mp_limb_signed_t,
879 ctx: *mut fq_nmod_ctx_struct,
880 );
881}
882extern "C" {
883 pub fn n_fq_poly_make_monic(
884 A: *mut n_poly_struct,
885 B: *mut n_poly_struct,
886 ctx: *mut fq_nmod_ctx_struct,
887 );
888}
889extern "C" {
890 pub fn n_fq_poly_get_coeff_n_fq(
891 c: *mut mp_limb_t,
892 A: *mut n_poly_struct,
893 e: mp_limb_signed_t,
894 ctx: *mut fq_nmod_ctx_struct,
895 );
896}
897extern "C" {
898 pub fn n_fq_poly_get_coeff_fq_nmod(
899 c: *mut nmod_poly_struct,
900 A: *mut n_poly_struct,
901 e: mp_limb_signed_t,
902 ctx: *mut fq_nmod_ctx_struct,
903 );
904}
905extern "C" {
906 pub fn n_fq_poly_set_coeff_n_fq(
907 A: *mut n_poly_struct,
908 j: mp_limb_signed_t,
909 c: *const mp_limb_t,
910 ctx: *mut fq_nmod_ctx_struct,
911 );
912}
913extern "C" {
914 pub fn n_fq_poly_set_coeff_fq_nmod(
915 A: *mut n_poly_struct,
916 j: mp_limb_signed_t,
917 c: *mut nmod_poly_struct,
918 ctx: *mut fq_nmod_ctx_struct,
919 );
920}
921extern "C" {
922 pub fn n_fq_poly_scalar_mul_n_fq(
923 A: *mut n_poly_struct,
924 B: *mut n_poly_struct,
925 c: *const mp_limb_t,
926 ctx: *mut fq_nmod_ctx_struct,
927 );
928}
929extern "C" {
930 pub fn n_fq_poly_scalar_mul_ui(
931 A: *mut n_poly_struct,
932 B: *mut n_poly_struct,
933 c: mp_limb_t,
934 ctx: *mut fq_nmod_ctx_struct,
935 );
936}
937extern "C" {
938 pub fn n_fq_poly_scalar_addmul_n_fq(
939 A: *mut n_poly_struct,
940 B: *mut n_poly_struct,
941 C: *mut n_poly_struct,
942 d: *const mp_limb_t,
943 ctx: *mut fq_nmod_ctx_struct,
944 );
945}
946extern "C" {
947 pub fn n_fq_poly_shift_left_scalar_submul(
948 A: *mut n_poly_struct,
949 k: mp_limb_signed_t,
950 c: *const mp_limb_t,
951 ctx: *mut fq_nmod_ctx_struct,
952 );
953}
954extern "C" {
955 pub fn n_fq_poly_evaluate_fq_nmod(
956 e: *mut nmod_poly_struct,
957 A: *mut n_poly_struct,
958 c: *mut nmod_poly_struct,
959 ctx: *mut fq_nmod_ctx_struct,
960 );
961}
962extern "C" {
963 pub fn n_fq_poly_evaluate_n_fq(
964 e: *mut mp_limb_t,
965 A: *mut n_poly_struct,
966 c: *const mp_limb_t,
967 ctx: *mut fq_nmod_ctx_struct,
968 );
969}
970extern "C" {
971 pub fn n_fq_poly_get_fq_nmod_poly(
972 A: *mut fq_nmod_poly_struct,
973 B: *mut n_poly_struct,
974 ctx: *mut fq_nmod_ctx_struct,
975 );
976}
977extern "C" {
978 pub fn n_fq_poly_set_fq_nmod_poly(
979 A: *mut n_poly_struct,
980 B: *mut fq_nmod_poly_struct,
981 ctx: *mut fq_nmod_ctx_struct,
982 );
983}
984extern "C" {
985 pub fn n_fq_poly_set_n_fq(
986 A: *mut n_poly_struct,
987 c: *const mp_limb_t,
988 ctx: *mut fq_nmod_ctx_struct,
989 );
990}
991extern "C" {
992 pub fn n_fq_poly_set_fq_nmod(
993 A: *mut n_poly_struct,
994 c: *mut nmod_poly_struct,
995 ctx: *mut fq_nmod_ctx_struct,
996 );
997}
998extern "C" {
999 pub fn n_fq_poly_shift_right(
1000 A: *mut n_poly_struct,
1001 B: *mut n_poly_struct,
1002 n: mp_limb_signed_t,
1003 ctx: *mut fq_nmod_ctx_struct,
1004 );
1005}
1006extern "C" {
1007 pub fn n_fq_poly_shift_left(
1008 A: *mut n_poly_struct,
1009 B: *mut n_poly_struct,
1010 n: mp_limb_signed_t,
1011 ctx: *mut fq_nmod_ctx_struct,
1012 );
1013}
1014extern "C" {
1015 pub fn n_fq_poly_truncate(
1016 A: *mut n_poly_struct,
1017 len: mp_limb_signed_t,
1018 ctx: *mut fq_nmod_ctx_struct,
1019 );
1020}
1021extern "C" {
1022 pub fn n_fq_poly_add(
1023 A: *mut n_poly_struct,
1024 B: *mut n_poly_struct,
1025 C: *mut n_poly_struct,
1026 ctx: *mut fq_nmod_ctx_struct,
1027 );
1028}
1029extern "C" {
1030 pub fn n_fq_poly_sub(
1031 A: *mut n_poly_struct,
1032 B: *mut n_poly_struct,
1033 C: *mut n_poly_struct,
1034 ctx: *mut fq_nmod_ctx_struct,
1035 );
1036}
1037extern "C" {
1038 pub fn n_fq_poly_neg(
1039 A: *mut n_poly_struct,
1040 B: *mut n_poly_struct,
1041 ctx: *mut fq_nmod_ctx_struct,
1042 );
1043}
1044extern "C" {
1045 pub fn n_fq_poly_add_si(
1046 A: *mut n_poly_struct,
1047 B: *mut n_poly_struct,
1048 c: mp_limb_signed_t,
1049 ctx: *mut fq_nmod_ctx_struct,
1050 );
1051}
1052extern "C" {
1053 pub fn _n_fq_poly_mul_(
1054 A: *mut mp_limb_t,
1055 B: *const mp_limb_t,
1056 Blen: mp_limb_signed_t,
1057 C: *const mp_limb_t,
1058 Clen: mp_limb_signed_t,
1059 ctx: *mut fq_nmod_ctx_struct,
1060 St: *mut n_poly_stack_struct,
1061 );
1062}
1063extern "C" {
1064 pub fn n_fq_poly_mul_(
1065 A: *mut n_poly_struct,
1066 B: *mut n_poly_struct,
1067 C: *mut n_poly_struct,
1068 ctx: *mut fq_nmod_ctx_struct,
1069 St: *mut n_poly_stack_struct,
1070 );
1071}
1072extern "C" {
1073 pub fn n_fq_poly_mul(
1074 A: *mut n_poly_struct,
1075 B: *mut n_poly_struct,
1076 C: *mut n_poly_struct,
1077 ctx: *mut fq_nmod_ctx_struct,
1078 );
1079}
1080extern "C" {
1081 pub fn n_fq_poly_pow(
1082 A: *mut n_poly_struct,
1083 B: *mut n_poly_struct,
1084 e: mp_limb_t,
1085 ctx: *mut fq_nmod_ctx_struct,
1086 );
1087}
1088extern "C" {
1089 pub fn n_fq_poly_remove(
1090 f: *mut n_poly_struct,
1091 g: *mut n_poly_struct,
1092 ctx: *mut fq_nmod_ctx_struct,
1093 ) -> mp_limb_t;
1094}
1095extern "C" {
1096 pub fn n_fq_poly_divrem_divconquer_(
1097 Q: *mut n_poly_struct,
1098 R: *mut n_poly_struct,
1099 A: *mut n_poly_struct,
1100 B: *mut n_poly_struct,
1101 ctx: *mut fq_nmod_ctx_struct,
1102 St: *mut n_poly_stack_struct,
1103 );
1104}
1105extern "C" {
1106 pub fn n_fq_poly_divrem_(
1107 Q: *mut n_poly_struct,
1108 R: *mut n_poly_struct,
1109 A: *mut n_poly_struct,
1110 B: *mut n_poly_struct,
1111 ctx: *mut fq_nmod_ctx_struct,
1112 St: *mut n_poly_stack_struct,
1113 );
1114}
1115extern "C" {
1116 pub fn n_fq_poly_divrem(
1117 Q: *mut n_poly_struct,
1118 R: *mut n_poly_struct,
1119 A: *mut n_poly_struct,
1120 B: *mut n_poly_struct,
1121 ctx: *mut fq_nmod_ctx_struct,
1122 );
1123}
1124extern "C" {
1125 pub fn n_fq_poly_gcd(
1126 G: *mut n_poly_struct,
1127 A: *mut n_poly_struct,
1128 B: *mut n_poly_struct,
1129 ctx: *mut fq_nmod_ctx_struct,
1130 );
1131}
1132extern "C" {
1133 pub fn n_fq_poly_gcd_(
1134 G: *mut n_poly_struct,
1135 A: *mut n_poly_struct,
1136 B: *mut n_poly_struct,
1137 ctx: *mut fq_nmod_ctx_struct,
1138 St: *mut n_poly_stack_struct,
1139 );
1140}
1141extern "C" {
1142 pub fn n_fq_poly_xgcd(
1143 G: *mut n_poly_struct,
1144 S: *mut n_poly_struct,
1145 T: *mut n_poly_struct,
1146 B: *mut n_poly_struct,
1147 C: *mut n_poly_struct,
1148 ctx: *mut fq_nmod_ctx_struct,
1149 );
1150}
1151extern "C" {
1152 pub fn n_fq_poly_mulmod(
1153 A: *mut n_poly_struct,
1154 B: *mut n_poly_struct,
1155 C: *mut n_poly_struct,
1156 M: *mut n_poly_struct,
1157 ctx: *mut fq_nmod_ctx_struct,
1158 );
1159}
1160extern "C" {
1161 pub fn n_fq_poly_rem(
1162 R: *mut n_poly_struct,
1163 A: *mut n_poly_struct,
1164 B: *mut n_poly_struct,
1165 ctx: *mut fq_nmod_ctx_struct,
1166 );
1167}
1168extern "C" {
1169 pub fn n_fq_poly_mullow(
1170 A: *mut n_poly_struct,
1171 B: *mut n_poly_struct,
1172 C: *mut n_poly_struct,
1173 order: mp_limb_signed_t,
1174 ctx: *mut fq_nmod_ctx_struct,
1175 );
1176}
1177extern "C" {
1178 pub fn n_fq_poly_inv_series(
1179 A: *mut n_poly_struct,
1180 B: *mut n_poly_struct,
1181 order: mp_limb_signed_t,
1182 ctx: *mut fq_nmod_ctx_struct,
1183 );
1184}
1185extern "C" {
1186 pub fn n_fq_poly_eval_pow(
1187 ev: *mut mp_limb_t,
1188 A: *mut n_poly_struct,
1189 alphapow: *mut n_poly_struct,
1190 ctx: *mut fq_nmod_ctx_struct,
1191 );
1192}
1193extern "C" {
1194 pub fn n_bpoly_init(A: *mut n_bpoly_struct);
1195}
1196extern "C" {
1197 pub fn n_bpoly_clear(A: *mut n_bpoly_struct);
1198}
1199extern "C" {
1200 pub fn n_bpoly_swap(A: *mut n_bpoly_struct, B: *mut n_bpoly_struct);
1201}
1202extern "C" {
1203 pub fn n_bpoly_print_pretty(A: *mut n_bpoly_struct, xvar: *const c_char, yvar: *const c_char);
1204}
1205extern "C" {
1206 pub fn n_bpoly_normalise(A: *mut n_bpoly_struct);
1207}
1208extern "C" {
1209 pub fn n_bpoly_realloc(A: *mut n_bpoly_struct, len: mp_limb_signed_t);
1210}
1211extern "C" {
1212 pub fn n_bpoly_fit_length(A: *mut n_bpoly_struct, len: mp_limb_signed_t);
1213}
1214extern "C" {
1215 pub fn n_bpoly_zero(A: *mut n_bpoly_struct);
1216}
1217extern "C" {
1218 pub fn n_bpoly_is_zero(A: *mut n_bpoly_struct) -> c_int;
1219}
1220extern "C" {
1221 pub fn _n_bpoly_set(A: *mut n_bpoly_struct, B: *mut n_bpoly_struct);
1222}
1223extern "C" {
1224 pub fn n_bpoly_set(A: *mut n_bpoly_struct, B: *mut n_bpoly_struct);
1225}
1226extern "C" {
1227 pub fn n_bpoly_one(A: *mut n_bpoly_struct);
1228}
1229extern "C" {
1230 pub fn n_bpoly_equal(A: *mut n_bpoly_struct, B: *mut n_bpoly_struct) -> c_int;
1231}
1232extern "C" {
1233 pub fn n_bpoly_set_coeff(
1234 A: *mut n_bpoly_struct,
1235 e0: mp_limb_signed_t,
1236 e1: mp_limb_signed_t,
1237 c: mp_limb_t,
1238 );
1239}
1240extern "C" {
1241 pub fn n_bpoly_set_coeff_nonzero(
1242 A: *mut n_bpoly_struct,
1243 e0: mp_limb_signed_t,
1244 e1: mp_limb_signed_t,
1245 c: mp_limb_t,
1246 );
1247}
1248extern "C" {
1249 pub fn n_bpoly_mod_derivative_gen0(A: *mut n_bpoly_struct, B: *mut n_bpoly_struct, ctx: nmod_t);
1250}
1251extern "C" {
1252 pub fn n_bpoly_get_coeff(
1253 A: *mut n_bpoly_struct,
1254 e0: mp_limb_signed_t,
1255 e1: mp_limb_signed_t,
1256 ) -> mp_limb_t;
1257}
1258extern "C" {
1259 pub fn n_bpoly_degree0(A: *mut n_bpoly_struct) -> mp_limb_signed_t;
1260}
1261extern "C" {
1262 pub fn n_bpoly_degree1(A: *mut n_bpoly_struct) -> mp_limb_signed_t;
1263}
1264extern "C" {
1265 pub fn n_bpoly_set_poly_gen1(A: *mut n_bpoly_struct, B: *mut n_poly_struct);
1266}
1267extern "C" {
1268 pub fn n_bpoly_set_poly_gen0(A: *mut n_bpoly_struct, B: *mut n_poly_struct);
1269}
1270extern "C" {
1271 pub fn n_bpoly_mod_is_canonical(A: *mut n_bpoly_struct, mod_: nmod_t) -> c_int;
1272}
1273extern "C" {
1274 pub fn n_bpoly_bidegree(A: *mut n_bpoly_struct) -> mp_limb_t;
1275}
1276extern "C" {
1277 pub fn n_bpoly_scalar_mul_nmod(A: *mut n_bpoly_struct, c: mp_limb_t, ctx: nmod_t);
1278}
1279extern "C" {
1280 pub fn n_bpoly_mod_content_last(g: *mut n_poly_struct, A: *mut n_bpoly_struct, ctx: nmod_t);
1281}
1282extern "C" {
1283 pub fn n_bpoly_mod_divexact_last(A: *mut n_bpoly_struct, b: *mut n_poly_struct, ctx: nmod_t);
1284}
1285extern "C" {
1286 pub fn n_bpoly_mod_mul_last(A: *mut n_bpoly_struct, b: *mut n_poly_struct, ctx: nmod_t);
1287}
1288extern "C" {
1289 pub fn n_bpoly_mod_taylor_shift_gen1(
1290 A: *mut n_bpoly_struct,
1291 B: *mut n_bpoly_struct,
1292 c: mp_limb_t,
1293 ctx: nmod_t,
1294 );
1295}
1296extern "C" {
1297 pub fn n_bpoly_mod_taylor_shift_gen0(A: *mut n_bpoly_struct, c: mp_limb_t, ctx: nmod_t);
1298}
1299extern "C" {
1300 pub fn n_bpoly_mod_add(
1301 A: *mut n_bpoly_struct,
1302 B: *mut n_bpoly_struct,
1303 C: *mut n_bpoly_struct,
1304 ctx: nmod_t,
1305 );
1306}
1307extern "C" {
1308 pub fn n_bpoly_mod_sub(
1309 A: *mut n_bpoly_struct,
1310 B: *mut n_bpoly_struct,
1311 C: *mut n_bpoly_struct,
1312 ctx: nmod_t,
1313 );
1314}
1315extern "C" {
1316 pub fn n_bpoly_mod_make_primitive(g: *mut n_poly_struct, A: *mut n_bpoly_struct, ctx: nmod_t);
1317}
1318extern "C" {
1319 pub fn n_bpoly_mod_mul(
1320 A: *mut n_bpoly_struct,
1321 B: *mut n_bpoly_struct,
1322 C: *mut n_bpoly_struct,
1323 ctx: nmod_t,
1324 );
1325}
1326extern "C" {
1327 pub fn n_bpoly_mod_divides(
1328 Q: *mut n_bpoly_struct,
1329 A: *mut n_bpoly_struct,
1330 B: *mut n_bpoly_struct,
1331 ctx: nmod_t,
1332 ) -> c_int;
1333}
1334extern "C" {
1335 pub fn n_bpoly_mod_mul_series(
1336 A: *mut n_bpoly_struct,
1337 B: *mut n_bpoly_struct,
1338 C: *mut n_bpoly_struct,
1339 order: mp_limb_signed_t,
1340 ctx: nmod_t,
1341 );
1342}
1343extern "C" {
1344 pub fn n_bpoly_mod_divrem_series(
1345 Q: *mut n_bpoly_struct,
1346 R: *mut n_bpoly_struct,
1347 A: *mut n_bpoly_struct,
1348 B: *mut n_bpoly_struct,
1349 order: mp_limb_signed_t,
1350 ctx: nmod_t,
1351 );
1352}
1353extern "C" {
1354 pub fn n_bpoly_mod_interp_reduce_2sm_poly(
1355 Ap: *mut n_poly_struct,
1356 Am: *mut n_poly_struct,
1357 A: *mut n_bpoly_struct,
1358 alphapow: *mut n_poly_struct,
1359 mod_: nmod_t,
1360 );
1361}
1362extern "C" {
1363 pub fn n_bpoly_mod_interp_lift_2sm_poly(
1364 deg1: *mut mp_limb_signed_t,
1365 T: *mut n_bpoly_struct,
1366 A: *mut n_poly_struct,
1367 B: *mut n_poly_struct,
1368 alpha: mp_limb_t,
1369 mod_: nmod_t,
1370 );
1371}
1372extern "C" {
1373 pub fn n_bpoly_mod_interp_crt_2sm_poly(
1374 deg1: *mut mp_limb_signed_t,
1375 F: *mut n_bpoly_struct,
1376 T: *mut n_bpoly_struct,
1377 A: *mut n_poly_struct,
1378 B: *mut n_poly_struct,
1379 modulus: *mut n_poly_struct,
1380 alphapow: *mut n_poly_struct,
1381 mod_: nmod_t,
1382 ) -> c_int;
1383}
1384extern "C" {
1385 pub fn n_bpoly_mod_gcd_brown_smprime(
1386 G: *mut n_bpoly_struct,
1387 Abar: *mut n_bpoly_struct,
1388 Bbar: *mut n_bpoly_struct,
1389 A: *mut n_bpoly_struct,
1390 B: *mut n_bpoly_struct,
1391 ctx: nmod_t,
1392 Sp: *mut n_poly_bpoly_stack_struct,
1393 ) -> c_int;
1394}
1395extern "C" {
1396 pub fn n_polyu1n_mod_gcd_brown_smprime(
1397 G: *mut n_polyun_struct,
1398 Abar: *mut n_polyun_struct,
1399 Bbar: *mut n_polyun_struct,
1400 A: *mut n_polyun_struct,
1401 B: *mut n_polyun_struct,
1402 ctx: nmod_t,
1403 St: *mut n_poly_polyun_stack_struct,
1404 ) -> c_int;
1405}
1406extern "C" {
1407 pub fn n_fq_bpoly_equal(
1408 A: *mut n_bpoly_struct,
1409 B: *mut n_bpoly_struct,
1410 ctx: *mut fq_nmod_ctx_struct,
1411 ) -> c_int;
1412}
1413extern "C" {
1414 pub fn n_fq_bpoly_get_coeff_n_fq(
1415 c: *mut mp_limb_t,
1416 A: *mut n_bpoly_struct,
1417 e0: mp_limb_signed_t,
1418 e1: mp_limb_signed_t,
1419 ctx: *mut fq_nmod_ctx_struct,
1420 );
1421}
1422extern "C" {
1423 pub fn n_fq_bpoly_set_coeff_n_fq(
1424 A: *mut n_bpoly_struct,
1425 e0: mp_limb_signed_t,
1426 e1: mp_limb_signed_t,
1427 c: *const mp_limb_t,
1428 ctx: *mut fq_nmod_ctx_struct,
1429 );
1430}
1431extern "C" {
1432 pub fn n_fq_bpoly_get_coeff_fq_nmod(
1433 c: *mut nmod_poly_struct,
1434 A: *mut n_bpoly_struct,
1435 e0: mp_limb_signed_t,
1436 e1: mp_limb_signed_t,
1437 ctx: *mut fq_nmod_ctx_struct,
1438 );
1439}
1440extern "C" {
1441 pub fn n_fq_bpoly_set_fq_nmod_poly_gen0(
1442 A: *mut n_bpoly_struct,
1443 B: *mut fq_nmod_poly_struct,
1444 ctx: *mut fq_nmod_ctx_struct,
1445 );
1446}
1447extern "C" {
1448 pub fn n_fq_bpoly_set_n_fq_poly_gen0(
1449 A: *mut n_bpoly_struct,
1450 B: *mut n_poly_struct,
1451 ctx: *mut fq_nmod_ctx_struct,
1452 );
1453}
1454extern "C" {
1455 pub fn n_fq_bpoly_set_n_fq_poly_gen1(
1456 A: *mut n_bpoly_struct,
1457 B: *mut n_poly_struct,
1458 ctx: *mut fq_nmod_ctx_struct,
1459 );
1460}
1461extern "C" {
1462 pub fn n_fq_bpoly_derivative_gen0(
1463 A: *mut n_bpoly_struct,
1464 B: *mut n_bpoly_struct,
1465 ctx: *mut fq_nmod_ctx_struct,
1466 );
1467}
1468extern "C" {
1469 pub fn n_fq_bpoly_scalar_mul_n_fq(
1470 A: *mut n_bpoly_struct,
1471 c: *const mp_limb_t,
1472 ctx: *mut fq_nmod_ctx_struct,
1473 );
1474}
1475extern "C" {
1476 pub fn n_fq_bpoly_taylor_shift_gen1_fq_nmod(
1477 A: *mut n_bpoly_struct,
1478 B: *mut n_bpoly_struct,
1479 c_: *mut nmod_poly_struct,
1480 ctx: *mut fq_nmod_ctx_struct,
1481 );
1482}
1483extern "C" {
1484 pub fn n_fq_bpoly_taylor_shift_gen0_fq_nmod(
1485 A: *mut n_bpoly_struct,
1486 alpha: *mut nmod_poly_struct,
1487 ctx: *mut fq_nmod_ctx_struct,
1488 );
1489}
1490extern "C" {
1491 pub fn n_fq_bpoly_taylor_shift_gen0_n_fq(
1492 A: *mut n_bpoly_struct,
1493 alpha: *const mp_limb_t,
1494 ctx: *mut fq_nmod_ctx_struct,
1495 );
1496}
1497extern "C" {
1498 pub fn n_fq_bpoly_gcd_brown_smprime(
1499 G: *mut n_bpoly_struct,
1500 Abar: *mut n_bpoly_struct,
1501 Bbar: *mut n_bpoly_struct,
1502 A: *mut n_bpoly_struct,
1503 B: *mut n_bpoly_struct,
1504 ctx: *mut fq_nmod_ctx_struct,
1505 Sp: *mut n_poly_bpoly_stack_struct,
1506 ) -> c_int;
1507}
1508extern "C" {
1509 pub fn n_fq_bpoly_print_pretty(
1510 A: *mut n_bpoly_struct,
1511 xvar: *const c_char,
1512 yvar: *const c_char,
1513 ctx: *mut fq_nmod_ctx_struct,
1514 );
1515}
1516extern "C" {
1517 pub fn n_fq_bpoly_one(A: *mut n_bpoly_struct, ctx: *mut fq_nmod_ctx_struct);
1518}
1519extern "C" {
1520 pub fn n_fq_bpoly_set(
1521 A: *mut n_bpoly_struct,
1522 B: *mut n_bpoly_struct,
1523 ctx: *mut fq_nmod_ctx_struct,
1524 );
1525}
1526extern "C" {
1527 pub fn n_fq_bpoly_is_canonical(A: *mut n_bpoly_struct, ctx: *mut fq_nmod_ctx_struct) -> c_int;
1528}
1529extern "C" {
1530 pub fn n_tpoly_init(A: *mut n_tpoly_struct);
1531}
1532extern "C" {
1533 pub fn n_tpoly_swap(A: *mut n_tpoly_struct, B: *mut n_tpoly_struct);
1534}
1535extern "C" {
1536 pub fn n_tpoly_fit_length(A: *mut n_tpoly_struct, len: mp_limb_signed_t);
1537}
1538extern "C" {
1539 pub fn n_tpoly_clear(A: *mut n_tpoly_struct);
1540}
1541extern "C" {
1542 pub fn n_polyu_init(A: *mut n_polyu_struct);
1543}
1544extern "C" {
1545 pub fn n_polyu_clear(A: *mut n_polyu_struct);
1546}
1547extern "C" {
1548 pub fn n_polyu_realloc(A: *mut n_polyu_struct, len: mp_limb_signed_t);
1549}
1550extern "C" {
1551 pub fn n_polyu_fit_length(A: *mut n_polyu_struct, len: mp_limb_signed_t);
1552}
1553extern "C" {
1554 pub fn n_polyu_swap(A: *mut n_polyu_struct, B: *mut n_polyu_struct);
1555}
1556extern "C" {
1557 pub fn n_polyu3_print_pretty(
1558 A: *mut n_polyu_struct,
1559 gen0: *const c_char,
1560 gen1: *const c_char,
1561 var2: *const c_char,
1562 );
1563}
1564extern "C" {
1565 pub fn n_polyu3_degrees(
1566 deg0: *mut mp_limb_signed_t,
1567 deg1: *mut mp_limb_signed_t,
1568 deg2: *mut mp_limb_signed_t,
1569 A: *mut n_polyu_struct,
1570 );
1571}
1572extern "C" {
1573 pub fn nmod_pow_cache_start(
1574 b: mp_limb_t,
1575 pos_direct: *mut n_poly_struct,
1576 pos_bin: *mut n_poly_struct,
1577 neg_direct: *mut n_poly_struct,
1578 );
1579}
1580extern "C" {
1581 pub fn nmod_pow_cache_mulpow_ui(
1582 a: mp_limb_t,
1583 e: mp_limb_t,
1584 pos_direct: *mut n_poly_struct,
1585 pos_bin: *mut n_poly_struct,
1586 neg_direct: *mut n_poly_struct,
1587 ctx: nmod_t,
1588 ) -> mp_limb_t;
1589}
1590extern "C" {
1591 pub fn nmod_pow_cache_mulpow_neg_ui(
1592 a: mp_limb_t,
1593 e: mp_limb_t,
1594 pos_direct: *mut n_poly_struct,
1595 pos_bin: *mut n_poly_struct,
1596 neg_direct: *mut n_poly_struct,
1597 ctx: nmod_t,
1598 ) -> mp_limb_t;
1599}
1600extern "C" {
1601 pub fn nmod_pow_cache_mulpow_fmpz(
1602 a: mp_limb_t,
1603 e: *mut fmpz,
1604 pos_direct: *mut n_poly_struct,
1605 pos_bin: *mut n_poly_struct,
1606 neg_direct: *mut n_poly_struct,
1607 ctx: nmod_t,
1608 ) -> mp_limb_t;
1609}
1610extern "C" {
1611 pub fn n_fq_pow_cache_start_n_fq(
1612 b: *const mp_limb_t,
1613 pos_direct: *mut n_poly_struct,
1614 pos_bin: *mut n_poly_struct,
1615 neg_direct: *mut n_poly_struct,
1616 ctx: *mut fq_nmod_ctx_struct,
1617 );
1618}
1619extern "C" {
1620 pub fn n_fq_pow_cache_start_fq_nmod(
1621 b: *mut nmod_poly_struct,
1622 pos_direct: *mut n_poly_struct,
1623 pos_bin: *mut n_poly_struct,
1624 neg_direct: *mut n_poly_struct,
1625 ctx: *mut fq_nmod_ctx_struct,
1626 );
1627}
1628extern "C" {
1629 pub fn n_fq_pow_cache_mulpow_ui(
1630 r: *mut mp_limb_t,
1631 a: *const mp_limb_t,
1632 e: mp_limb_t,
1633 pos_direct: *mut n_poly_struct,
1634 pos_bin: *mut n_poly_struct,
1635 neg_direct: *mut n_poly_struct,
1636 ctx: *mut fq_nmod_ctx_struct,
1637 );
1638}
1639extern "C" {
1640 pub fn n_fq_pow_cache_mulpow_neg_ui(
1641 r: *mut mp_limb_t,
1642 a: *const mp_limb_t,
1643 e: mp_limb_t,
1644 pos_direct: *mut n_poly_struct,
1645 pos_bin: *mut n_poly_struct,
1646 neg_direct: *mut n_poly_struct,
1647 ctx: *mut fq_nmod_ctx_struct,
1648 );
1649}
1650extern "C" {
1651 pub fn n_fq_pow_cache_mulpow_fmpz(
1652 r: *mut mp_limb_t,
1653 a: *const mp_limb_t,
1654 e: *mut fmpz,
1655 pos_direct: *mut n_poly_struct,
1656 pos_bin: *mut n_poly_struct,
1657 neg_direct: *mut n_poly_struct,
1658 ctx: *mut fq_nmod_ctx_struct,
1659 );
1660}
1661#[repr(C)]
1662#[derive(Debug, Copy, Clone)]
1663pub struct nmod_eval_interp_struct {
1664 pub M: *mut mp_limb_t,
1665 pub T: *mut mp_limb_t,
1666 pub Q: *mut mp_limb_t,
1667 pub array: *mut mp_limb_t,
1668 pub alloc: mp_limb_signed_t,
1669 pub d: mp_limb_signed_t,
1670 pub radix: mp_limb_signed_t,
1671 pub w: mp_limb_t,
1672}
1673pub type nmod_eval_interp_t = [nmod_eval_interp_struct; 1usize];
1674extern "C" {
1675 pub fn nmod_eval_interp_init(E: *mut nmod_eval_interp_struct);
1676}
1677extern "C" {
1678 pub fn nmod_eval_interp_clear(E: *mut nmod_eval_interp_struct);
1679}
1680extern "C" {
1681 pub fn nmod_eval_interp_set_degree_modulus(
1682 E: *mut nmod_eval_interp_struct,
1683 deg: mp_limb_signed_t,
1684 ctx: nmod_t,
1685 ) -> c_int;
1686}
1687extern "C" {
1688 pub fn nmod_eval_interp_eval_length(E: *mut nmod_eval_interp_struct) -> mp_limb_signed_t;
1689}
1690extern "C" {
1691 pub fn nmod_eval_interp_to_coeffs_poly(
1692 a: *mut n_poly_struct,
1693 v: *mut n_poly_struct,
1694 E: *mut nmod_eval_interp_struct,
1695 ctx: nmod_t,
1696 );
1697}
1698extern "C" {
1699 pub fn nmod_eval_interp_from_coeffs_poly(
1700 v: *mut n_poly_struct,
1701 a: *mut n_poly_struct,
1702 E: *mut nmod_eval_interp_struct,
1703 ctx: nmod_t,
1704 );
1705}
1706extern "C" {
1707 pub fn nmod_eval_interp_to_coeffs_n_fq_poly(
1708 a: *mut n_poly_struct,
1709 v: *mut n_poly_struct,
1710 E: *mut nmod_eval_interp_struct,
1711 ctx: *mut fq_nmod_ctx_struct,
1712 );
1713}
1714extern "C" {
1715 pub fn nmod_eval_interp_from_coeffs_n_fq_poly(
1716 v: *mut n_poly_struct,
1717 a: *mut n_poly_struct,
1718 E: *mut nmod_eval_interp_struct,
1719 ctx: *mut fq_nmod_ctx_struct,
1720 );
1721}
1722extern "C" {
1723 pub fn nmod_evals_zero(a: *mut n_poly_struct);
1724}
1725extern "C" {
1726 pub fn nmod_evals_add_inplace(
1727 a: *mut n_poly_struct,
1728 b: *mut n_poly_struct,
1729 len: mp_limb_signed_t,
1730 ctx: nmod_t,
1731 );
1732}
1733extern "C" {
1734 pub fn nmod_evals_mul(
1735 a: *mut n_poly_struct,
1736 b: *mut n_poly_struct,
1737 c: *mut n_poly_struct,
1738 len: mp_limb_signed_t,
1739 ctx: nmod_t,
1740 );
1741}
1742extern "C" {
1743 pub fn nmod_evals_addmul(
1744 a: *mut n_poly_struct,
1745 b: *mut n_poly_struct,
1746 c: *mut n_poly_struct,
1747 len: mp_limb_signed_t,
1748 ctx: nmod_t,
1749 );
1750}
1751extern "C" {
1752 pub fn nmod_evals_fmma(
1753 a: *mut n_poly_struct,
1754 b: *mut n_poly_struct,
1755 c: *mut n_poly_struct,
1756 d: *mut n_poly_struct,
1757 e: *mut n_poly_struct,
1758 len: mp_limb_signed_t,
1759 ctx: nmod_t,
1760 );
1761}
1762extern "C" {
1763 pub fn n_fq_evals_zero(a: *mut n_poly_struct);
1764}
1765extern "C" {
1766 pub fn n_fq_evals_add_inplace(
1767 a: *mut n_poly_struct,
1768 b: *mut n_poly_struct,
1769 len: mp_limb_signed_t,
1770 ctx: *mut fq_nmod_ctx_struct,
1771 );
1772}
1773extern "C" {
1774 pub fn n_fq_evals_mul(
1775 a: *mut n_poly_struct,
1776 b: *mut n_poly_struct,
1777 c: *mut n_poly_struct,
1778 len: mp_limb_signed_t,
1779 ctx: *mut fq_nmod_ctx_struct,
1780 );
1781}
1782extern "C" {
1783 pub fn n_fq_evals_addmul(
1784 a: *mut n_poly_struct,
1785 b: *mut n_poly_struct,
1786 c: *mut n_poly_struct,
1787 len: mp_limb_signed_t,
1788 ctx: *mut fq_nmod_ctx_struct,
1789 );
1790}
1791extern "C" {
1792 pub fn n_fq_evals_fmma(
1793 a: *mut n_poly_struct,
1794 b: *mut n_poly_struct,
1795 c: *mut n_poly_struct,
1796 f: *mut n_poly_struct,
1797 e: *mut n_poly_struct,
1798 len: mp_limb_signed_t,
1799 ctx: *mut fq_nmod_ctx_struct,
1800 );
1801}
1802extern "C" {
1803 pub fn n_polyun_init(A: *mut n_polyun_struct);
1804}
1805extern "C" {
1806 pub fn n_polyun_is_canonical(A: *mut n_polyun_struct) -> c_int;
1807}
1808extern "C" {
1809 pub fn n_polyun_clear(A: *mut n_polyun_struct);
1810}
1811extern "C" {
1812 pub fn n_polyun_realloc(A: *mut n_polyun_struct, len: mp_limb_signed_t);
1813}
1814extern "C" {
1815 pub fn n_polyun_fit_length(A: *mut n_polyun_struct, len: mp_limb_signed_t);
1816}
1817extern "C" {
1818 pub fn n_polyun_mod_is_canonical(A: *mut n_polyun_struct, mod_: nmod_t) -> c_int;
1819}
1820extern "C" {
1821 pub fn n_polyun_swap(A: *mut n_polyun_struct, B: *mut n_polyun_struct);
1822}
1823extern "C" {
1824 pub fn n_polyun_set(A: *mut n_polyun_struct, B: *mut n_polyun_struct);
1825}
1826extern "C" {
1827 pub fn n_polyu1n_print_pretty(
1828 A: *mut n_polyun_struct,
1829 var0: *const c_char,
1830 varlast: *const c_char,
1831 );
1832}
1833extern "C" {
1834 pub fn n_polyu2n_print_pretty(
1835 A: *mut n_polyun_struct,
1836 gen0: *const c_char,
1837 gen1: *const c_char,
1838 varlast: *const c_char,
1839 );
1840}
1841extern "C" {
1842 pub fn n_polyu3n_print_pretty(
1843 A: *mut n_polyun_struct,
1844 gen0: *const c_char,
1845 gen1: *const c_char,
1846 var2: *const c_char,
1847 varlast: *const c_char,
1848 );
1849}
1850extern "C" {
1851 pub fn n_fq_polyun_set(
1852 A: *mut n_polyun_struct,
1853 B: *mut n_polyun_struct,
1854 ctx: *mut fq_nmod_ctx_struct,
1855 );
1856}
1857extern "C" {
1858 pub fn n_polyun_equal(A: *mut n_polyun_struct, B: *mut n_polyun_struct) -> c_int;
1859}
1860extern "C" {
1861 pub fn n_polyun_one(A: *mut n_polyun_struct);
1862}
1863extern "C" {
1864 pub fn n_polyu1n_bidegree(A: *mut n_polyun_struct) -> mp_limb_t;
1865}
1866extern "C" {
1867 pub fn n_fq_poly_product_roots_n_fq(
1868 M: *mut n_poly_struct,
1869 H: *const mp_limb_t,
1870 length: mp_limb_signed_t,
1871 ctx: *mut fq_nmod_ctx_struct,
1872 St: *mut n_poly_stack_struct,
1873 );
1874}
1875extern "C" {
1876 pub fn n_polyun_product_roots(
1877 M: *mut n_polyun_struct,
1878 H: *mut n_polyun_struct,
1879 ctx: nmod_t,
1880 ) -> mp_limb_signed_t;
1881}
1882extern "C" {
1883 pub fn n_fq_polyun_product_roots(
1884 M: *mut n_polyun_struct,
1885 H: *mut n_polyun_struct,
1886 ctx: *mut fq_nmod_ctx_struct,
1887 St: *mut n_poly_stack_struct,
1888 ) -> mp_limb_signed_t;
1889}
1890extern "C" {
1891 pub fn _nmod_zip_eval_step(
1892 cur: *mut mp_limb_t,
1893 inc: *const mp_limb_t,
1894 coeffs: *const mp_limb_t,
1895 length: mp_limb_signed_t,
1896 ctx: nmod_t,
1897 ) -> mp_limb_t;
1898}
1899extern "C" {
1900 pub fn _n_fq_zip_eval_step(
1901 res: *mut mp_limb_t,
1902 cur: *mut mp_limb_t,
1903 inc: *const mp_limb_t,
1904 coeffs: *const mp_limb_t,
1905 length: mp_limb_signed_t,
1906 ctx: *mut fq_nmod_ctx_struct,
1907 );
1908}
1909extern "C" {
1910 pub fn _n_fqp_zip_eval_step(
1911 res: *mut mp_limb_t,
1912 cur: *mut mp_limb_t,
1913 inc: *const mp_limb_t,
1914 coeffs: *const mp_limb_t,
1915 length: mp_limb_signed_t,
1916 d: mp_limb_signed_t,
1917 mod_: nmod_t,
1918 );
1919}
1920extern "C" {
1921 pub fn _nmod_zip_vand_solve(
1922 coeffs: *mut mp_limb_t,
1923 monomials: *const mp_limb_t,
1924 mlength: mp_limb_signed_t,
1925 evals: *const mp_limb_t,
1926 elength: mp_limb_signed_t,
1927 master: *const mp_limb_t,
1928 scratch: *mut mp_limb_t,
1929 ctx: nmod_t,
1930 ) -> c_int;
1931}
1932extern "C" {
1933 pub fn _n_fq_zip_vand_solve(
1934 coeffs: *mut mp_limb_t,
1935 monomials: *const mp_limb_t,
1936 mlength: mp_limb_signed_t,
1937 evals: *const mp_limb_t,
1938 elength: mp_limb_signed_t,
1939 master: *const mp_limb_t,
1940 scratch: *mut mp_limb_t,
1941 ctx: *mut fq_nmod_ctx_struct,
1942 ) -> c_int;
1943}
1944extern "C" {
1945 pub fn _n_fqp_zip_vand_solve(
1946 coeffs: *mut mp_limb_t,
1947 monomials: *const mp_limb_t,
1948 mlength: mp_limb_signed_t,
1949 evals: *const mp_limb_t,
1950 elength: mp_limb_signed_t,
1951 master: *const mp_limb_t,
1952 scratch: *mut mp_limb_t,
1953 ctx: *mut fq_nmod_ctx_struct,
1954 ) -> c_int;
1955}
1956extern "C" {
1957 pub fn n_poly_stack_init(S: *mut n_poly_stack_struct);
1958}
1959extern "C" {
1960 pub fn n_poly_stack_clear(S: *mut n_poly_stack_struct);
1961}
1962extern "C" {
1963 pub fn n_poly_stack_fit_request(
1964 S: *mut n_poly_stack_struct,
1965 k: mp_limb_signed_t,
1966 ) -> *mut *mut n_poly_struct;
1967}
1968extern "C" {
1969 pub fn n_poly_stack_vec_init(
1970 S: *mut n_poly_stack_struct,
1971 len: mp_limb_signed_t,
1972 ) -> *mut mp_limb_t;
1973}
1974extern "C" {
1975 pub fn n_poly_stack_vec_clear(S: *mut n_poly_stack_struct);
1976}
1977extern "C" {
1978 pub fn n_poly_stack_request(
1979 S: *mut n_poly_stack_struct,
1980 k: mp_limb_signed_t,
1981 ) -> *mut *mut n_poly_struct;
1982}
1983extern "C" {
1984 pub fn n_poly_stack_take_top(S: *mut n_poly_stack_struct) -> *mut n_poly_struct;
1985}
1986extern "C" {
1987 pub fn n_poly_stack_give_back(S: *mut n_poly_stack_struct, k: mp_limb_signed_t);
1988}
1989extern "C" {
1990 pub fn n_poly_stack_size(S: *mut n_poly_stack_struct) -> mp_limb_signed_t;
1991}
1992extern "C" {
1993 pub fn n_bpoly_stack_init(S: *mut n_bpoly_stack_struct);
1994}
1995extern "C" {
1996 pub fn n_bpoly_stack_clear(S: *mut n_bpoly_stack_struct);
1997}
1998extern "C" {
1999 pub fn n_bpoly_stack_fit_request(
2000 S: *mut n_bpoly_stack_struct,
2001 k: mp_limb_signed_t,
2002 ) -> *mut *mut n_bpoly_struct;
2003}
2004extern "C" {
2005 pub fn n_bpoly_stack_request(
2006 S: *mut n_bpoly_stack_struct,
2007 k: mp_limb_signed_t,
2008 ) -> *mut *mut n_bpoly_struct;
2009}
2010extern "C" {
2011 pub fn n_bpoly_stack_take_top(S: *mut n_bpoly_stack_struct) -> *mut n_bpoly_struct;
2012}
2013extern "C" {
2014 pub fn n_bpoly_stack_give_back(S: *mut n_bpoly_stack_struct, k: mp_limb_signed_t);
2015}
2016extern "C" {
2017 pub fn n_bpoly_stack_size(S: *mut n_bpoly_stack_struct) -> mp_limb_signed_t;
2018}
2019extern "C" {
2020 pub fn n_polyun_stack_init(S: *mut n_polyun_stack_struct);
2021}
2022extern "C" {
2023 pub fn n_polyun_stack_clear(S: *mut n_polyun_stack_struct);
2024}
2025extern "C" {
2026 pub fn n_polyun_stack_fit_request(
2027 S: *mut n_polyun_stack_struct,
2028 k: mp_limb_signed_t,
2029 ) -> *mut *mut n_polyun_struct;
2030}
2031extern "C" {
2032 pub fn n_polyun_stack_request(
2033 S: *mut n_polyun_stack_struct,
2034 k: mp_limb_signed_t,
2035 ) -> *mut *mut n_polyun_struct;
2036}
2037extern "C" {
2038 pub fn n_polyun_stack_take_top(S: *mut n_polyun_stack_struct) -> *mut n_polyun_struct;
2039}
2040extern "C" {
2041 pub fn n_polyun_stack_give_back(S: *mut n_polyun_stack_struct, k: mp_limb_signed_t);
2042}
2043extern "C" {
2044 pub fn n_polyun_stack_size(S: *mut n_polyun_stack_struct) -> mp_limb_signed_t;
2045}