flint_sys/
fmpz_mod_mpoly.rs

1#![allow(non_snake_case)]
2#![allow(non_camel_case_types)]
3
4//! *See the [FLINT documentation](http://flintlib.org/doc/fmpz_mod_mpoly.html).
5
6use crate::deps::*;
7use crate::flint::*;
8use crate::fmpz::fmpz;
9use crate::fmpz_mat::fmpz_mat_struct;
10use crate::fmpz_mod::{fmpz_mod_ctx_struct, fmpz_mod_ctx_t};
11use crate::fmpz_mod_poly::fmpz_mod_poly_struct;
12use crate::mpoly::*;
13use crate::nmod_mpoly::*;
14use libc::FILE;
15
16#[repr(C)]
17#[derive(Debug, Copy, Clone)]
18pub struct fmpz_mod_mpoly_ctx_struct {
19    pub minfo: mpoly_ctx_t,
20    pub ffinfo: fmpz_mod_ctx_t,
21}
22pub type fmpz_mod_mpoly_ctx_t = [fmpz_mod_mpoly_ctx_struct; 1usize];
23#[repr(C)]
24#[derive(Debug, Copy, Clone)]
25pub struct fmpz_mod_mpoly_struct {
26    pub coeffs: *mut fmpz,
27    pub exps: *mut mp_limb_t,
28    pub length: mp_limb_signed_t,
29    pub bits: mp_limb_t,
30    pub coeffs_alloc: mp_limb_signed_t,
31    pub exps_alloc: mp_limb_signed_t,
32}
33pub type fmpz_mod_mpoly_t = [fmpz_mod_mpoly_struct; 1usize];
34#[repr(C)]
35#[derive(Debug, Copy, Clone)]
36pub struct fmpz_mod_mpoly_univar_struct {
37    pub coeffs: *mut fmpz_mod_mpoly_struct,
38    pub exps: *mut fmpz,
39    pub alloc: mp_limb_signed_t,
40    pub length: mp_limb_signed_t,
41}
42pub type fmpz_mod_mpoly_univar_t = [fmpz_mod_mpoly_univar_struct; 1usize];
43extern "C" {
44    pub fn fmpz_mod_mpoly_ctx_init(
45        ctx: *mut fmpz_mod_mpoly_ctx_struct,
46        nvars: mp_limb_signed_t,
47        ord: ordering_t,
48        modulus: *mut fmpz,
49    );
50}
51extern "C" {
52    pub fn fmpz_mod_mpoly_ctx_init_rand(
53        ctx: *mut fmpz_mod_mpoly_ctx_struct,
54        state: *mut flint_rand_s,
55        max_nvars: mp_limb_signed_t,
56        modulus: *mut fmpz,
57    );
58}
59extern "C" {
60    pub fn fmpz_mod_mpoly_ctx_init_rand_bits_prime(
61        ctx: *mut fmpz_mod_mpoly_ctx_struct,
62        state: *mut flint_rand_s,
63        max_nvars: mp_limb_signed_t,
64        max_bits: mp_limb_t,
65    );
66}
67extern "C" {
68    pub fn fmpz_mod_mpoly_ctx_init_rand_bits(
69        ctx: *mut fmpz_mod_mpoly_ctx_struct,
70        state: *mut flint_rand_s,
71        max_nvars: mp_limb_signed_t,
72        max_bits: mp_limb_t,
73    );
74}
75extern "C" {
76    pub fn fmpz_mod_mpoly_ctx_clear(ctx: *mut fmpz_mod_mpoly_ctx_struct);
77}
78extern "C" {
79    pub fn fmpz_mod_mpoly_clear(A: *mut fmpz_mod_mpoly_struct, ctx: *mut fmpz_mod_mpoly_ctx_struct);
80}
81extern "C" {
82    pub fn fmpz_mod_mpoly_init2(
83        A: *mut fmpz_mod_mpoly_struct,
84        alloc: mp_limb_signed_t,
85        ctx: *mut fmpz_mod_mpoly_ctx_struct,
86    );
87}
88extern "C" {
89    pub fn fmpz_mod_mpoly_init3(
90        A: *mut fmpz_mod_mpoly_struct,
91        alloc: mp_limb_signed_t,
92        bits: mp_limb_t,
93        ctx: *mut fmpz_mod_mpoly_ctx_struct,
94    );
95}
96extern "C" {
97    pub fn fmpz_mod_mpoly_realloc(
98        A: *mut fmpz_mod_mpoly_struct,
99        alloc: mp_limb_signed_t,
100        ctx: *mut fmpz_mod_mpoly_ctx_struct,
101    );
102}
103extern "C" {
104    pub fn fmpz_mod_mpoly_fit_length(
105        A: *mut fmpz_mod_mpoly_struct,
106        length: mp_limb_signed_t,
107        ctx: *mut fmpz_mod_mpoly_ctx_struct,
108    );
109}
110extern "C" {
111    pub fn fmpz_mod_mpoly_fit_length_fit_bits(
112        A: *mut fmpz_mod_mpoly_struct,
113        len: mp_limb_signed_t,
114        bits: mp_limb_t,
115        ctx: *mut fmpz_mod_mpoly_ctx_struct,
116    );
117}
118extern "C" {
119    pub fn fmpz_mod_mpoly_fit_length_reset_bits(
120        A: *mut fmpz_mod_mpoly_struct,
121        len: mp_limb_signed_t,
122        bits: mp_limb_t,
123        ctx: *mut fmpz_mod_mpoly_ctx_struct,
124    );
125}
126extern "C" {
127    pub fn fmpz_mod_mpoly_set_str_pretty(
128        A: *mut fmpz_mod_mpoly_struct,
129        str_: *const ::std::os::raw::c_char,
130        x: *mut *const ::std::os::raw::c_char,
131        ctx: *mut fmpz_mod_mpoly_ctx_struct,
132    ) -> ::std::os::raw::c_int;
133}
134extern "C" {
135    pub fn fmpz_mod_mpoly_get_str_pretty(
136        A: *mut fmpz_mod_mpoly_struct,
137        x: *mut *const ::std::os::raw::c_char,
138        ctx: *mut fmpz_mod_mpoly_ctx_struct,
139    ) -> *mut ::std::os::raw::c_char;
140}
141extern "C" {
142    pub fn fmpz_mod_mpoly_fprint_pretty(
143        file: *mut FILE,
144        A: *mut fmpz_mod_mpoly_struct,
145        x: *mut *const ::std::os::raw::c_char,
146        ctx: *mut fmpz_mod_mpoly_ctx_struct,
147    ) -> ::std::os::raw::c_int;
148}
149extern "C" {
150    pub fn fmpz_mod_mpoly_gen(
151        A: *mut fmpz_mod_mpoly_struct,
152        var: mp_limb_signed_t,
153        ctx: *mut fmpz_mod_mpoly_ctx_struct,
154    );
155}
156extern "C" {
157    pub fn fmpz_mod_mpoly_is_gen(
158        A: *mut fmpz_mod_mpoly_struct,
159        var: mp_limb_signed_t,
160        ctx: *mut fmpz_mod_mpoly_ctx_struct,
161    ) -> ::std::os::raw::c_int;
162}
163extern "C" {
164    pub fn fmpz_mod_mpoly_set(
165        A: *mut fmpz_mod_mpoly_struct,
166        B: *mut fmpz_mod_mpoly_struct,
167        ctx: *mut fmpz_mod_mpoly_ctx_struct,
168    );
169}
170extern "C" {
171    pub fn fmpz_mod_mpoly_equal(
172        A: *mut fmpz_mod_mpoly_struct,
173        B: *mut fmpz_mod_mpoly_struct,
174        ctx: *mut fmpz_mod_mpoly_ctx_struct,
175    ) -> ::std::os::raw::c_int;
176}
177extern "C" {
178    pub fn fmpz_mod_mpoly_is_fmpz(
179        A: *mut fmpz_mod_mpoly_struct,
180        ctx: *mut fmpz_mod_mpoly_ctx_struct,
181    ) -> ::std::os::raw::c_int;
182}
183extern "C" {
184    pub fn fmpz_mod_mpoly_get_fmpz(
185        c: *mut fmpz,
186        A: *mut fmpz_mod_mpoly_struct,
187        ctx: *mut fmpz_mod_mpoly_ctx_struct,
188    );
189}
190extern "C" {
191    pub fn fmpz_mod_mpoly_set_fmpz_mod(
192        A: *mut fmpz_mod_mpoly_struct,
193        c: *mut fmpz,
194        ctx: *mut fmpz_mod_mpoly_ctx_struct,
195    );
196}
197extern "C" {
198    pub fn fmpz_mod_mpoly_set_fmpz(
199        A: *mut fmpz_mod_mpoly_struct,
200        c: *mut fmpz,
201        ctx: *mut fmpz_mod_mpoly_ctx_struct,
202    );
203}
204extern "C" {
205    pub fn fmpz_mod_mpoly_set_ui(
206        A: *mut fmpz_mod_mpoly_struct,
207        c: mp_limb_signed_t,
208        ctx: *mut fmpz_mod_mpoly_ctx_struct,
209    );
210}
211extern "C" {
212    pub fn fmpz_mod_mpoly_set_si(
213        A: *mut fmpz_mod_mpoly_struct,
214        c: mp_limb_signed_t,
215        ctx: *mut fmpz_mod_mpoly_ctx_struct,
216    );
217}
218extern "C" {
219    pub fn fmpz_mod_mpoly_equal_fmpz(
220        A: *mut fmpz_mod_mpoly_struct,
221        c: *mut fmpz,
222        ctx: *mut fmpz_mod_mpoly_ctx_struct,
223    ) -> ::std::os::raw::c_int;
224}
225extern "C" {
226    pub fn fmpz_mod_mpoly_equal_ui(
227        A: *mut fmpz_mod_mpoly_struct,
228        c: mp_limb_t,
229        ctx: *mut fmpz_mod_mpoly_ctx_struct,
230    ) -> ::std::os::raw::c_int;
231}
232extern "C" {
233    pub fn fmpz_mod_mpoly_equal_si(
234        A: *mut fmpz_mod_mpoly_struct,
235        c: mp_limb_signed_t,
236        ctx: *mut fmpz_mod_mpoly_ctx_struct,
237    ) -> ::std::os::raw::c_int;
238}
239extern "C" {
240    pub fn fmpz_mod_mpoly_get_coeff_fmpz_monomial(
241        c: *mut fmpz,
242        A: *mut fmpz_mod_mpoly_struct,
243        M: *mut fmpz_mod_mpoly_struct,
244        ctx: *mut fmpz_mod_mpoly_ctx_struct,
245    );
246}
247extern "C" {
248    pub fn fmpz_mod_mpoly_set_coeff_fmpz_monomial(
249        A: *mut fmpz_mod_mpoly_struct,
250        c: *mut fmpz,
251        M: *mut fmpz_mod_mpoly_struct,
252        ctx: *mut fmpz_mod_mpoly_ctx_struct,
253    );
254}
255extern "C" {
256    pub fn fmpz_mod_mpoly_get_coeff_fmpz_fmpz(
257        c: *mut fmpz,
258        A: *mut fmpz_mod_mpoly_struct,
259        exp: *const *mut fmpz,
260        ctx: *mut fmpz_mod_mpoly_ctx_struct,
261    );
262}
263extern "C" {
264    pub fn fmpz_mod_mpoly_get_coeff_fmpz_ui(
265        c: *mut fmpz,
266        A: *mut fmpz_mod_mpoly_struct,
267        exp: *const mp_limb_t,
268        ctx: *mut fmpz_mod_mpoly_ctx_struct,
269    );
270}
271extern "C" {
272    pub fn _fmpz_mod_mpoly_set_coeff_fmpz_fmpz(
273        A: *mut fmpz_mod_mpoly_struct,
274        c: *mut fmpz,
275        exp: *const fmpz,
276        ctx: *mut fmpz_mod_mpoly_ctx_struct,
277    );
278}
279extern "C" {
280    pub fn fmpz_mod_mpoly_set_coeff_fmpz_fmpz(
281        A: *mut fmpz_mod_mpoly_struct,
282        c: *mut fmpz,
283        exp: *const *mut fmpz,
284        ctx: *mut fmpz_mod_mpoly_ctx_struct,
285    );
286}
287extern "C" {
288    pub fn fmpz_mod_mpoly_set_coeff_ui_fmpz(
289        A: *mut fmpz_mod_mpoly_struct,
290        c: mp_limb_t,
291        exp: *const *mut fmpz,
292        ctx: *mut fmpz_mod_mpoly_ctx_struct,
293    );
294}
295extern "C" {
296    pub fn fmpz_mod_mpoly_set_coeff_si_fmpz(
297        A: *mut fmpz_mod_mpoly_struct,
298        c: mp_limb_signed_t,
299        exp: *const *mut fmpz,
300        ctx: *mut fmpz_mod_mpoly_ctx_struct,
301    );
302}
303extern "C" {
304    pub fn fmpz_mod_mpoly_set_coeff_fmpz_ui(
305        A: *mut fmpz_mod_mpoly_struct,
306        c: *mut fmpz,
307        exp: *const mp_limb_t,
308        ctx: *mut fmpz_mod_mpoly_ctx_struct,
309    );
310}
311extern "C" {
312    pub fn fmpz_mod_mpoly_set_coeff_ui_ui(
313        A: *mut fmpz_mod_mpoly_struct,
314        c: mp_limb_t,
315        exp: *const mp_limb_t,
316        ctx: *mut fmpz_mod_mpoly_ctx_struct,
317    );
318}
319extern "C" {
320    pub fn fmpz_mod_mpoly_set_coeff_si_ui(
321        A: *mut fmpz_mod_mpoly_struct,
322        c: mp_limb_signed_t,
323        exp: *const mp_limb_t,
324        ctx: *mut fmpz_mod_mpoly_ctx_struct,
325    );
326}
327extern "C" {
328    pub fn fmpz_mod_mpoly_get_coeff_vars_ui(
329        C: *mut fmpz_mod_mpoly_struct,
330        A: *mut fmpz_mod_mpoly_struct,
331        vars: *const mp_limb_signed_t,
332        exps: *const mp_limb_t,
333        length: mp_limb_signed_t,
334        ctx: *mut fmpz_mod_mpoly_ctx_struct,
335    );
336}
337extern "C" {
338    pub fn fmpz_mod_mpoly_is_fmpz_mod_poly(
339        A: *mut fmpz_mod_mpoly_struct,
340        var: mp_limb_signed_t,
341        ctx: *mut fmpz_mod_mpoly_ctx_struct,
342    ) -> ::std::os::raw::c_int;
343}
344extern "C" {
345    pub fn fmpz_mod_mpoly_get_fmpz_mod_poly(
346        A: *mut fmpz_mod_poly_struct,
347        B: *mut fmpz_mod_mpoly_struct,
348        var: mp_limb_signed_t,
349        ctx: *mut fmpz_mod_mpoly_ctx_struct,
350    ) -> ::std::os::raw::c_int;
351}
352extern "C" {
353    pub fn _fmpz_mod_mpoly_set_fmpz_mod_poly(
354        A: *mut fmpz_mod_mpoly_struct,
355        Abits: mp_limb_t,
356        Bcoeffs: *const fmpz,
357        Blen: mp_limb_signed_t,
358        var: mp_limb_signed_t,
359        ctx: *mut fmpz_mod_mpoly_ctx_struct,
360    );
361}
362extern "C" {
363    pub fn fmpz_mod_mpoly_set_fmpz_mod_poly(
364        A: *mut fmpz_mod_mpoly_struct,
365        B: *mut fmpz_mod_poly_struct,
366        var: mp_limb_signed_t,
367        ctx: *mut fmpz_mod_mpoly_ctx_struct,
368    );
369}
370extern "C" {
371    pub fn fmpz_mod_mpoly_cmp(
372        A: *mut fmpz_mod_mpoly_struct,
373        B: *mut fmpz_mod_mpoly_struct,
374        ctx: *mut fmpz_mod_mpoly_ctx_struct,
375    ) -> ::std::os::raw::c_int;
376}
377extern "C" {
378    pub fn fmpz_mod_mpoly_is_canonical(
379        A: *mut fmpz_mod_mpoly_struct,
380        ctx: *mut fmpz_mod_mpoly_ctx_struct,
381    ) -> ::std::os::raw::c_int;
382}
383extern "C" {
384    pub fn fmpz_mod_mpoly_resize(
385        A: *mut fmpz_mod_mpoly_struct,
386        new_length: mp_limb_signed_t,
387        ctx: *mut fmpz_mod_mpoly_ctx_struct,
388    );
389}
390extern "C" {
391    pub fn fmpz_mod_mpoly_get_term_coeff_fmpz(
392        c: *mut fmpz,
393        A: *mut fmpz_mod_mpoly_struct,
394        i: mp_limb_signed_t,
395        ctx: *mut fmpz_mod_mpoly_ctx_struct,
396    );
397}
398extern "C" {
399    pub fn fmpz_mod_mpoly_set_term_coeff_fmpz(
400        A: *mut fmpz_mod_mpoly_struct,
401        i: mp_limb_signed_t,
402        c: *mut fmpz,
403        ctx: *mut fmpz_mod_mpoly_ctx_struct,
404    );
405}
406extern "C" {
407    pub fn fmpz_mod_mpoly_set_term_coeff_ui(
408        A: *mut fmpz_mod_mpoly_struct,
409        i: mp_limb_signed_t,
410        c: mp_limb_t,
411        ctx: *mut fmpz_mod_mpoly_ctx_struct,
412    );
413}
414extern "C" {
415    pub fn fmpz_mod_mpoly_set_term_coeff_si(
416        A: *mut fmpz_mod_mpoly_struct,
417        i: mp_limb_signed_t,
418        c: mp_limb_signed_t,
419        ctx: *mut fmpz_mod_mpoly_ctx_struct,
420    );
421}
422extern "C" {
423    pub fn fmpz_mod_mpoly_get_term_exp_fmpz(
424        exp: *mut *mut fmpz,
425        A: *mut fmpz_mod_mpoly_struct,
426        i: mp_limb_signed_t,
427        ctx: *mut fmpz_mod_mpoly_ctx_struct,
428    );
429}
430extern "C" {
431    pub fn fmpz_mod_mpoly_get_term_exp_ui(
432        exp: *mut mp_limb_t,
433        A: *mut fmpz_mod_mpoly_struct,
434        i: mp_limb_signed_t,
435        ctx: *mut fmpz_mod_mpoly_ctx_struct,
436    );
437}
438extern "C" {
439    pub fn fmpz_mod_mpoly_get_term_exp_si(
440        exp: *mut mp_limb_signed_t,
441        A: *mut fmpz_mod_mpoly_struct,
442        i: mp_limb_signed_t,
443        ctx: *mut fmpz_mod_mpoly_ctx_struct,
444    );
445}
446extern "C" {
447    pub fn fmpz_mod_mpoly_get_term_var_exp_ui(
448        A: *mut fmpz_mod_mpoly_struct,
449        i: mp_limb_signed_t,
450        var: mp_limb_signed_t,
451        ctx: *mut fmpz_mod_mpoly_ctx_struct,
452    ) -> mp_limb_t;
453}
454extern "C" {
455    pub fn fmpz_mod_mpoly_get_term_var_exp_si(
456        A: *mut fmpz_mod_mpoly_struct,
457        i: mp_limb_signed_t,
458        var: mp_limb_signed_t,
459        ctx: *mut fmpz_mod_mpoly_ctx_struct,
460    ) -> mp_limb_signed_t;
461}
462extern "C" {
463    pub fn fmpz_mod_mpoly_set_term_exp_fmpz(
464        A: *mut fmpz_mod_mpoly_struct,
465        i: mp_limb_signed_t,
466        exp: *const *mut fmpz,
467        ctx: *mut fmpz_mod_mpoly_ctx_struct,
468    );
469}
470extern "C" {
471    pub fn fmpz_mod_mpoly_set_term_exp_ui(
472        A: *mut fmpz_mod_mpoly_struct,
473        i: mp_limb_signed_t,
474        exp: *const mp_limb_t,
475        ctx: *mut fmpz_mod_mpoly_ctx_struct,
476    );
477}
478extern "C" {
479    pub fn fmpz_mod_mpoly_get_term(
480        M: *mut fmpz_mod_mpoly_struct,
481        A: *mut fmpz_mod_mpoly_struct,
482        i: mp_limb_signed_t,
483        ctx: *mut fmpz_mod_mpoly_ctx_struct,
484    );
485}
486extern "C" {
487    pub fn fmpz_mod_mpoly_get_term_monomial(
488        M: *mut fmpz_mod_mpoly_struct,
489        A: *mut fmpz_mod_mpoly_struct,
490        i: mp_limb_signed_t,
491        ctx: *mut fmpz_mod_mpoly_ctx_struct,
492    );
493}
494extern "C" {
495    pub fn fmpz_mod_mpoly_push_term_fmpz_fmpz(
496        A: *mut fmpz_mod_mpoly_struct,
497        c: *mut fmpz,
498        exp: *const *mut fmpz,
499        ctx: *mut fmpz_mod_mpoly_ctx_struct,
500    );
501}
502extern "C" {
503    pub fn fmpz_mod_mpoly_push_term_ui_fmpz(
504        A: *mut fmpz_mod_mpoly_struct,
505        c: mp_limb_t,
506        exp: *const *mut fmpz,
507        ctx: *mut fmpz_mod_mpoly_ctx_struct,
508    );
509}
510extern "C" {
511    pub fn fmpz_mod_mpoly_push_term_si_fmpz(
512        A: *mut fmpz_mod_mpoly_struct,
513        c: mp_limb_signed_t,
514        exp: *const *mut fmpz,
515        ctx: *mut fmpz_mod_mpoly_ctx_struct,
516    );
517}
518extern "C" {
519    pub fn fmpz_mod_mpoly_push_term_fmpz_ui(
520        A: *mut fmpz_mod_mpoly_struct,
521        c: *mut fmpz,
522        exp: *const mp_limb_t,
523        ctx: *mut fmpz_mod_mpoly_ctx_struct,
524    );
525}
526extern "C" {
527    pub fn fmpz_mod_mpoly_push_term_ui_ui(
528        A: *mut fmpz_mod_mpoly_struct,
529        c: mp_limb_t,
530        exp: *const mp_limb_t,
531        ctx: *mut fmpz_mod_mpoly_ctx_struct,
532    );
533}
534extern "C" {
535    pub fn fmpz_mod_mpoly_push_term_si_ui(
536        A: *mut fmpz_mod_mpoly_struct,
537        c: mp_limb_signed_t,
538        exp: *const mp_limb_t,
539        ctx: *mut fmpz_mod_mpoly_ctx_struct,
540    );
541}
542extern "C" {
543    pub fn fmpz_mod_mpoly_sort_terms(
544        A: *mut fmpz_mod_mpoly_struct,
545        ctx: *mut fmpz_mod_mpoly_ctx_struct,
546    );
547}
548extern "C" {
549    pub fn fmpz_mod_mpoly_combine_like_terms(
550        A: *mut fmpz_mod_mpoly_struct,
551        ctx: *mut fmpz_mod_mpoly_ctx_struct,
552    );
553}
554extern "C" {
555    pub fn fmpz_mod_mpoly_reverse(
556        A: *mut fmpz_mod_mpoly_struct,
557        B: *mut fmpz_mod_mpoly_struct,
558        ctx: *mut fmpz_mod_mpoly_ctx_struct,
559    );
560}
561extern "C" {
562    pub fn fmpz_mod_mpoly_assert_canonical(
563        A: *mut fmpz_mod_mpoly_struct,
564        ctx: *mut fmpz_mod_mpoly_ctx_struct,
565    );
566}
567extern "C" {
568    pub fn _fmpz_mod_mpoly_radix_sort1(
569        arg1: *mut fmpz,
570        arg2: *mut mp_limb_t,
571        left: mp_limb_signed_t,
572        right: mp_limb_signed_t,
573        pos: mp_limb_t,
574        cmpmask: mp_limb_t,
575        totalmask: mp_limb_t,
576    );
577}
578extern "C" {
579    pub fn _fmpz_mod_mpoly_radix_sort(
580        arg1: *mut fmpz,
581        arg2: *mut mp_limb_t,
582        left: mp_limb_signed_t,
583        right: mp_limb_signed_t,
584        pos: mp_limb_t,
585        N: mp_limb_signed_t,
586        cmpmask: *mut mp_limb_t,
587    );
588}
589extern "C" {
590    pub fn _fmpz_mod_mpoly_push_exp_ffmpz(
591        A: *mut fmpz_mod_mpoly_struct,
592        exp: *const fmpz,
593        ctx: *mut fmpz_mod_mpoly_ctx_struct,
594    );
595}
596extern "C" {
597    pub fn _fmpz_mod_mpoly_push_exp_pfmpz(
598        A: *mut fmpz_mod_mpoly_struct,
599        exp: *const *mut fmpz,
600        ctx: *mut fmpz_mod_mpoly_ctx_struct,
601    );
602}
603extern "C" {
604    pub fn _fmpz_mod_mpoly_push_exp_ui(
605        A: *mut fmpz_mod_mpoly_struct,
606        exp: *const mp_limb_t,
607        ctx: *mut fmpz_mod_mpoly_ctx_struct,
608    );
609}
610extern "C" {
611    pub fn fmpz_mod_mpoly_randtest_bounds(
612        A: *mut fmpz_mod_mpoly_struct,
613        state: *mut flint_rand_s,
614        length: mp_limb_signed_t,
615        exp_bounds: *mut mp_limb_t,
616        ctx: *mut fmpz_mod_mpoly_ctx_struct,
617    );
618}
619extern "C" {
620    pub fn fmpz_mod_mpoly_randtest_bound(
621        A: *mut fmpz_mod_mpoly_struct,
622        state: *mut flint_rand_s,
623        length: mp_limb_signed_t,
624        exp_bound: mp_limb_t,
625        ctx: *mut fmpz_mod_mpoly_ctx_struct,
626    );
627}
628extern "C" {
629    pub fn fmpz_mod_mpoly_randtest_bits(
630        A: *mut fmpz_mod_mpoly_struct,
631        state: *mut flint_rand_s,
632        length: mp_limb_signed_t,
633        exp_bits: mp_limb_t,
634        ctx: *mut fmpz_mod_mpoly_ctx_struct,
635    );
636}
637extern "C" {
638    pub fn fmpz_mod_mpoly_add_fmpz_mod(
639        A: *mut fmpz_mod_mpoly_struct,
640        B: *mut fmpz_mod_mpoly_struct,
641        c: *mut fmpz,
642        ctx: *mut fmpz_mod_mpoly_ctx_struct,
643    );
644}
645extern "C" {
646    pub fn fmpz_mod_mpoly_add_fmpz(
647        A: *mut fmpz_mod_mpoly_struct,
648        B: *mut fmpz_mod_mpoly_struct,
649        c: *mut fmpz,
650        ctx: *mut fmpz_mod_mpoly_ctx_struct,
651    );
652}
653extern "C" {
654    pub fn fmpz_mod_mpoly_add_ui(
655        A: *mut fmpz_mod_mpoly_struct,
656        B: *mut fmpz_mod_mpoly_struct,
657        c: mp_limb_t,
658        ctx: *mut fmpz_mod_mpoly_ctx_struct,
659    );
660}
661extern "C" {
662    pub fn fmpz_mod_mpoly_add_si(
663        A: *mut fmpz_mod_mpoly_struct,
664        B: *mut fmpz_mod_mpoly_struct,
665        c: mp_limb_signed_t,
666        ctx: *mut fmpz_mod_mpoly_ctx_struct,
667    );
668}
669extern "C" {
670    pub fn fmpz_mod_mpoly_sub_fmpz(
671        A: *mut fmpz_mod_mpoly_struct,
672        B: *mut fmpz_mod_mpoly_struct,
673        c: *mut fmpz,
674        ctx: *mut fmpz_mod_mpoly_ctx_struct,
675    );
676}
677extern "C" {
678    pub fn fmpz_mod_mpoly_sub_ui(
679        A: *mut fmpz_mod_mpoly_struct,
680        B: *mut fmpz_mod_mpoly_struct,
681        c: mp_limb_t,
682        ctx: *mut fmpz_mod_mpoly_ctx_struct,
683    );
684}
685extern "C" {
686    pub fn fmpz_mod_mpoly_sub_si(
687        A: *mut fmpz_mod_mpoly_struct,
688        B: *mut fmpz_mod_mpoly_struct,
689        c: mp_limb_signed_t,
690        ctx: *mut fmpz_mod_mpoly_ctx_struct,
691    );
692}
693extern "C" {
694    pub fn fmpz_mod_mpoly_add(
695        A: *mut fmpz_mod_mpoly_struct,
696        B: *mut fmpz_mod_mpoly_struct,
697        C: *mut fmpz_mod_mpoly_struct,
698        ctx: *mut fmpz_mod_mpoly_ctx_struct,
699    );
700}
701extern "C" {
702    pub fn fmpz_mod_mpoly_sub(
703        A: *mut fmpz_mod_mpoly_struct,
704        B: *mut fmpz_mod_mpoly_struct,
705        C: *mut fmpz_mod_mpoly_struct,
706        ctx: *mut fmpz_mod_mpoly_ctx_struct,
707    );
708}
709extern "C" {
710    pub fn fmpz_mod_mpoly_neg(
711        A: *mut fmpz_mod_mpoly_struct,
712        B: *mut fmpz_mod_mpoly_struct,
713        ctx: *mut fmpz_mod_mpoly_ctx_struct,
714    );
715}
716extern "C" {
717    pub fn fmpz_mod_mpoly_scalar_mul_fmpz_mod_invertible(
718        A: *mut fmpz_mod_mpoly_struct,
719        B: *mut fmpz_mod_mpoly_struct,
720        c: *mut fmpz,
721        ctx: *mut fmpz_mod_mpoly_ctx_struct,
722    );
723}
724extern "C" {
725    pub fn fmpz_mod_mpoly_scalar_mul_fmpz(
726        A: *mut fmpz_mod_mpoly_struct,
727        B: *mut fmpz_mod_mpoly_struct,
728        c: *mut fmpz,
729        ctx: *mut fmpz_mod_mpoly_ctx_struct,
730    );
731}
732extern "C" {
733    pub fn fmpz_mod_mpoly_scalar_mul_ui(
734        A: *mut fmpz_mod_mpoly_struct,
735        B: *mut fmpz_mod_mpoly_struct,
736        c: mp_limb_t,
737        ctx: *mut fmpz_mod_mpoly_ctx_struct,
738    );
739}
740extern "C" {
741    pub fn fmpz_mod_mpoly_scalar_mul_si(
742        A: *mut fmpz_mod_mpoly_struct,
743        B: *mut fmpz_mod_mpoly_struct,
744        c: mp_limb_signed_t,
745        ctx: *mut fmpz_mod_mpoly_ctx_struct,
746    );
747}
748extern "C" {
749    pub fn fmpz_mod_mpoly_scalar_addmul_fmpz(
750        A: *mut fmpz_mod_mpoly_struct,
751        B: *mut fmpz_mod_mpoly_struct,
752        C: *mut fmpz_mod_mpoly_struct,
753        d: *mut fmpz,
754        ctx: *mut fmpz_mod_mpoly_ctx_struct,
755    );
756}
757extern "C" {
758    pub fn fmpz_mod_mpoly_make_monic(
759        A: *mut fmpz_mod_mpoly_struct,
760        B: *mut fmpz_mod_mpoly_struct,
761        ctx: *mut fmpz_mod_mpoly_ctx_struct,
762    );
763}
764extern "C" {
765    pub fn fmpz_mod_mpoly_derivative(
766        A: *mut fmpz_mod_mpoly_struct,
767        B: *mut fmpz_mod_mpoly_struct,
768        var: mp_limb_signed_t,
769        ctx: *mut fmpz_mod_mpoly_ctx_struct,
770    );
771}
772extern "C" {
773    pub fn _fmpz_mod_mpoly_eval_all_fmpz_mod(
774        eval: *mut fmpz,
775        Acoeffs: *const fmpz,
776        Aexps: *const mp_limb_t,
777        Alen: mp_limb_signed_t,
778        Abits: mp_limb_t,
779        alphas: *const fmpz,
780        mctx: *mut mpoly_ctx_struct,
781        fctx: *mut fmpz_mod_ctx_struct,
782    );
783}
784extern "C" {
785    pub fn fmpz_mod_mpoly_evaluate_all_fmpz(
786        eval: *mut fmpz,
787        A: *mut fmpz_mod_mpoly_struct,
788        alphas: *const *mut fmpz,
789        ctx: *mut fmpz_mod_mpoly_ctx_struct,
790    );
791}
792extern "C" {
793    pub fn fmpz_mod_mpoly_evaluate_one_fmpz(
794        A: *mut fmpz_mod_mpoly_struct,
795        B: *mut fmpz_mod_mpoly_struct,
796        var: mp_limb_signed_t,
797        val: *mut fmpz,
798        ctx: *mut fmpz_mod_mpoly_ctx_struct,
799    );
800}
801extern "C" {
802    pub fn _fmpz_mod_mpoly_compose_mat(
803        A: *mut fmpz_mod_mpoly_struct,
804        B: *mut fmpz_mod_mpoly_struct,
805        M: *mut fmpz_mat_struct,
806        ctxB: *mut fmpz_mod_mpoly_ctx_struct,
807        ctxAC: *mut fmpz_mod_mpoly_ctx_struct,
808    );
809}
810extern "C" {
811    pub fn fmpz_mod_mpoly_compose_fmpz_mod_mpoly_geobucket(
812        A: *mut fmpz_mod_mpoly_struct,
813        B: *mut fmpz_mod_mpoly_struct,
814        C: *const *mut fmpz_mod_mpoly_struct,
815        ctxB: *mut fmpz_mod_mpoly_ctx_struct,
816        ctxAC: *mut fmpz_mod_mpoly_ctx_struct,
817    ) -> ::std::os::raw::c_int;
818}
819extern "C" {
820    pub fn fmpz_mod_mpoly_compose_fmpz_mod_mpoly(
821        A: *mut fmpz_mod_mpoly_struct,
822        B: *mut fmpz_mod_mpoly_struct,
823        C: *const *mut fmpz_mod_mpoly_struct,
824        ctxB: *mut fmpz_mod_mpoly_ctx_struct,
825        ctxAC: *mut fmpz_mod_mpoly_ctx_struct,
826    ) -> ::std::os::raw::c_int;
827}
828extern "C" {
829    pub fn fmpz_mod_mpoly_mul(
830        A: *mut fmpz_mod_mpoly_struct,
831        B: *mut fmpz_mod_mpoly_struct,
832        C: *mut fmpz_mod_mpoly_struct,
833        ctx: *mut fmpz_mod_mpoly_ctx_struct,
834    );
835}
836extern "C" {
837    pub fn fmpz_mod_mpoly_mul_johnson(
838        A: *mut fmpz_mod_mpoly_struct,
839        B: *mut fmpz_mod_mpoly_struct,
840        C: *mut fmpz_mod_mpoly_struct,
841        ctx: *mut fmpz_mod_mpoly_ctx_struct,
842    );
843}
844extern "C" {
845    pub fn _fmpz_mod_mpoly_mul_johnson_maxfields(
846        A: *mut fmpz_mod_mpoly_struct,
847        B: *mut fmpz_mod_mpoly_struct,
848        maxBfields: *mut fmpz,
849        C: *mut fmpz_mod_mpoly_struct,
850        maxCfields: *mut fmpz,
851        ctx: *mut fmpz_mod_mpoly_ctx_struct,
852    );
853}
854extern "C" {
855    pub fn fmpz_mod_mpoly_mul_dense(
856        A: *mut fmpz_mod_mpoly_struct,
857        B: *mut fmpz_mod_mpoly_struct,
858        C: *mut fmpz_mod_mpoly_struct,
859        ctx: *mut fmpz_mod_mpoly_ctx_struct,
860    ) -> ::std::os::raw::c_int;
861}
862extern "C" {
863    pub fn _fmpz_mod_mpoly_mul_dense_maxfields(
864        P: *mut fmpz_mod_mpoly_struct,
865        A: *mut fmpz_mod_mpoly_struct,
866        maxAfields: *mut fmpz,
867        B: *mut fmpz_mod_mpoly_struct,
868        maxBfields: *mut fmpz,
869        ctx: *mut fmpz_mod_mpoly_ctx_struct,
870    ) -> ::std::os::raw::c_int;
871}
872extern "C" {
873    pub fn fmpz_mod_mpoly_pow_fmpz(
874        A: *mut fmpz_mod_mpoly_struct,
875        B: *mut fmpz_mod_mpoly_struct,
876        k: *mut fmpz,
877        ctx: *mut fmpz_mod_mpoly_ctx_struct,
878    ) -> ::std::os::raw::c_int;
879}
880extern "C" {
881    pub fn fmpz_mod_mpoly_pow_ui(
882        A: *mut fmpz_mod_mpoly_struct,
883        B: *mut fmpz_mod_mpoly_struct,
884        k: mp_limb_t,
885        ctx: *mut fmpz_mod_mpoly_ctx_struct,
886    ) -> ::std::os::raw::c_int;
887}
888extern "C" {
889    pub fn fmpz_mod_mpoly_pow_rmul(
890        A: *mut fmpz_mod_mpoly_struct,
891        B: *mut fmpz_mod_mpoly_struct,
892        k: mp_limb_t,
893        ctx: *mut fmpz_mod_mpoly_ctx_struct,
894    );
895}
896extern "C" {
897    pub fn fmpz_mod_mpoly_divides(
898        Q: *mut fmpz_mod_mpoly_struct,
899        A: *mut fmpz_mod_mpoly_struct,
900        B: *mut fmpz_mod_mpoly_struct,
901        ctx: *mut fmpz_mod_mpoly_ctx_struct,
902    ) -> ::std::os::raw::c_int;
903}
904extern "C" {
905    pub fn fmpz_mod_mpoly_div(
906        Q: *mut fmpz_mod_mpoly_struct,
907        A: *mut fmpz_mod_mpoly_struct,
908        B: *mut fmpz_mod_mpoly_struct,
909        ctx: *mut fmpz_mod_mpoly_ctx_struct,
910    );
911}
912extern "C" {
913    pub fn fmpz_mod_mpoly_divrem(
914        Q: *mut fmpz_mod_mpoly_struct,
915        R: *mut fmpz_mod_mpoly_struct,
916        A: *mut fmpz_mod_mpoly_struct,
917        B: *mut fmpz_mod_mpoly_struct,
918        ctx: *mut fmpz_mod_mpoly_ctx_struct,
919    );
920}
921extern "C" {
922    pub fn fmpz_mod_mpoly_divrem_ideal(
923        Q: *mut *mut fmpz_mod_mpoly_struct,
924        R: *mut fmpz_mod_mpoly_struct,
925        A: *mut fmpz_mod_mpoly_struct,
926        B: *const *mut fmpz_mod_mpoly_struct,
927        len: mp_limb_signed_t,
928        ctx: *mut fmpz_mod_mpoly_ctx_struct,
929    );
930}
931extern "C" {
932    pub fn _fmpz_mod_mpoly_divides_dense_maxfields(
933        Q: *mut fmpz_mod_mpoly_struct,
934        A: *mut fmpz_mod_mpoly_struct,
935        maxAfields: *mut fmpz,
936        B: *mut fmpz_mod_mpoly_struct,
937        maxBfields: *mut fmpz,
938        ctx: *mut fmpz_mod_mpoly_ctx_struct,
939    ) -> ::std::os::raw::c_int;
940}
941extern "C" {
942    pub fn fmpz_mod_mpoly_divides_dense(
943        Q: *mut fmpz_mod_mpoly_struct,
944        A: *mut fmpz_mod_mpoly_struct,
945        B: *mut fmpz_mod_mpoly_struct,
946        ctx: *mut fmpz_mod_mpoly_ctx_struct,
947    ) -> ::std::os::raw::c_int;
948}
949extern "C" {
950    pub fn _fmpz_mod_mpoly_divides_monagan_pearce_maxfields(
951        Q: *mut fmpz_mod_mpoly_struct,
952        A: *mut fmpz_mod_mpoly_struct,
953        maxAfields: *mut fmpz,
954        B: *mut fmpz_mod_mpoly_struct,
955        maxBfields: *mut fmpz,
956        ctx: *mut fmpz_mod_mpoly_ctx_struct,
957    ) -> ::std::os::raw::c_int;
958}
959extern "C" {
960    pub fn fmpz_mod_mpoly_divides_monagan_pearce(
961        Q: *mut fmpz_mod_mpoly_struct,
962        A: *mut fmpz_mod_mpoly_struct,
963        B: *mut fmpz_mod_mpoly_struct,
964        ctx: *mut fmpz_mod_mpoly_ctx_struct,
965    ) -> ::std::os::raw::c_int;
966}
967extern "C" {
968    pub fn fmpz_mod_mpoly_div_monagan_pearce(
969        Q: *mut fmpz_mod_mpoly_struct,
970        A: *mut fmpz_mod_mpoly_struct,
971        B: *mut fmpz_mod_mpoly_struct,
972        ctx: *mut fmpz_mod_mpoly_ctx_struct,
973    );
974}
975extern "C" {
976    pub fn fmpz_mod_mpoly_divrem_monagan_pearce(
977        Q: *mut fmpz_mod_mpoly_struct,
978        R: *mut fmpz_mod_mpoly_struct,
979        A: *mut fmpz_mod_mpoly_struct,
980        B: *mut fmpz_mod_mpoly_struct,
981        ctx: *mut fmpz_mod_mpoly_ctx_struct,
982    );
983}
984extern "C" {
985    pub fn fmpz_mod_mpoly_divrem_ideal_monagan_pearce(
986        Q: *mut *mut fmpz_mod_mpoly_struct,
987        R: *mut fmpz_mod_mpoly_struct,
988        A: *mut fmpz_mod_mpoly_struct,
989        B: *const *mut fmpz_mod_mpoly_struct,
990        len: mp_limb_signed_t,
991        ctx: *mut fmpz_mod_mpoly_ctx_struct,
992    );
993}
994extern "C" {
995    pub fn fmpz_mod_mpoly_sqrt_heap(
996        Q: *mut fmpz_mod_mpoly_struct,
997        A: *mut fmpz_mod_mpoly_struct,
998        ctx: *mut fmpz_mod_mpoly_ctx_struct,
999    ) -> ::std::os::raw::c_int;
1000}
1001extern "C" {
1002    pub fn fmpz_mod_mpoly_quadratic_root(
1003        Q: *mut fmpz_mod_mpoly_struct,
1004        A: *mut fmpz_mod_mpoly_struct,
1005        B: *mut fmpz_mod_mpoly_struct,
1006        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1007    ) -> ::std::os::raw::c_int;
1008}
1009extern "C" {
1010    pub fn fmpz_mod_mpoly_term_content(
1011        M: *mut fmpz_mod_mpoly_struct,
1012        A: *mut fmpz_mod_mpoly_struct,
1013        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1014    );
1015}
1016extern "C" {
1017    pub fn fmpz_mod_mpoly_content_vars(
1018        g: *mut fmpz_mod_mpoly_struct,
1019        A: *mut fmpz_mod_mpoly_struct,
1020        vars: *mut mp_limb_signed_t,
1021        vars_length: mp_limb_signed_t,
1022        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1023    ) -> ::std::os::raw::c_int;
1024}
1025extern "C" {
1026    pub fn fmpz_mod_mpoly_gcd(
1027        G: *mut fmpz_mod_mpoly_struct,
1028        A: *mut fmpz_mod_mpoly_struct,
1029        B: *mut fmpz_mod_mpoly_struct,
1030        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1031    ) -> ::std::os::raw::c_int;
1032}
1033extern "C" {
1034    pub fn fmpz_mod_mpoly_gcd_cofactors(
1035        G: *mut fmpz_mod_mpoly_struct,
1036        Abar: *mut fmpz_mod_mpoly_struct,
1037        Bbar: *mut fmpz_mod_mpoly_struct,
1038        A: *mut fmpz_mod_mpoly_struct,
1039        B: *mut fmpz_mod_mpoly_struct,
1040        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1041    ) -> ::std::os::raw::c_int;
1042}
1043extern "C" {
1044    pub fn fmpz_mod_mpoly_gcd_subresultant(
1045        G: *mut fmpz_mod_mpoly_struct,
1046        A: *mut fmpz_mod_mpoly_struct,
1047        B: *mut fmpz_mod_mpoly_struct,
1048        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1049    ) -> ::std::os::raw::c_int;
1050}
1051extern "C" {
1052    pub fn fmpz_mod_mpoly_gcd_brown(
1053        G: *mut fmpz_mod_mpoly_struct,
1054        A: *mut fmpz_mod_mpoly_struct,
1055        B: *mut fmpz_mod_mpoly_struct,
1056        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1057    ) -> ::std::os::raw::c_int;
1058}
1059extern "C" {
1060    pub fn fmpz_mod_mpoly_gcd_hensel(
1061        G: *mut fmpz_mod_mpoly_struct,
1062        A: *mut fmpz_mod_mpoly_struct,
1063        B: *mut fmpz_mod_mpoly_struct,
1064        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1065    ) -> ::std::os::raw::c_int;
1066}
1067extern "C" {
1068    pub fn fmpz_mod_mpoly_gcd_zippel(
1069        G: *mut fmpz_mod_mpoly_struct,
1070        A: *mut fmpz_mod_mpoly_struct,
1071        B: *mut fmpz_mod_mpoly_struct,
1072        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1073    ) -> ::std::os::raw::c_int;
1074}
1075extern "C" {
1076    pub fn fmpz_mod_mpoly_gcd_zippel2(
1077        G: *mut fmpz_mod_mpoly_struct,
1078        A: *mut fmpz_mod_mpoly_struct,
1079        B: *mut fmpz_mod_mpoly_struct,
1080        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1081    ) -> ::std::os::raw::c_int;
1082}
1083extern "C" {
1084    pub fn fmpz_mod_mpoly_deflation(
1085        shift: *mut fmpz,
1086        stride: *mut fmpz,
1087        A: *mut fmpz_mod_mpoly_struct,
1088        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1089    );
1090}
1091extern "C" {
1092    pub fn fmpz_mod_mpoly_deflate(
1093        A: *mut fmpz_mod_mpoly_struct,
1094        B: *mut fmpz_mod_mpoly_struct,
1095        shift: *const fmpz,
1096        stride: *const fmpz,
1097        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1098    );
1099}
1100extern "C" {
1101    pub fn fmpz_mod_mpoly_inflate(
1102        A: *mut fmpz_mod_mpoly_struct,
1103        B: *mut fmpz_mod_mpoly_struct,
1104        shift: *const fmpz,
1105        stride: *const fmpz,
1106        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1107    );
1108}
1109extern "C" {
1110    pub fn fmpz_mod_mpoly_univar_init(
1111        A: *mut fmpz_mod_mpoly_univar_struct,
1112        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1113    );
1114}
1115extern "C" {
1116    pub fn fmpz_mod_mpoly_univar_clear(
1117        A: *mut fmpz_mod_mpoly_univar_struct,
1118        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1119    );
1120}
1121extern "C" {
1122    pub fn fmpz_mod_mpoly_univar_fit_length(
1123        A: *mut fmpz_mod_mpoly_univar_struct,
1124        length: mp_limb_signed_t,
1125        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1126    );
1127}
1128extern "C" {
1129    pub fn fmpz_mod_mpoly_univar_print_pretty(
1130        A: *mut fmpz_mod_mpoly_univar_struct,
1131        x: *mut *const ::std::os::raw::c_char,
1132        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1133    );
1134}
1135extern "C" {
1136    pub fn fmpz_mod_mpoly_univar_assert_canonical(
1137        A: *mut fmpz_mod_mpoly_univar_struct,
1138        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1139    );
1140}
1141extern "C" {
1142    pub fn fmpz_mod_mpoly_univar_set_coeff_ui(
1143        A: *mut fmpz_mod_mpoly_univar_struct,
1144        e: mp_limb_t,
1145        c: *mut fmpz_mod_mpoly_struct,
1146        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1147    );
1148}
1149extern "C" {
1150    pub fn fmpz_mod_mpoly_to_univar(
1151        A: *mut fmpz_mod_mpoly_univar_struct,
1152        B: *mut fmpz_mod_mpoly_struct,
1153        var: mp_limb_signed_t,
1154        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1155    );
1156}
1157extern "C" {
1158    pub fn _fmpz_mod_mpoly_from_univar(
1159        A: *mut fmpz_mod_mpoly_struct,
1160        Abits: mp_limb_t,
1161        B: *mut fmpz_mod_mpoly_univar_struct,
1162        var: mp_limb_signed_t,
1163        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1164    );
1165}
1166extern "C" {
1167    pub fn fmpz_mod_mpoly_from_univar(
1168        A: *mut fmpz_mod_mpoly_struct,
1169        B: *mut fmpz_mod_mpoly_univar_struct,
1170        var: mp_limb_signed_t,
1171        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1172    );
1173}
1174extern "C" {
1175    pub fn fmpz_mod_mpoly_univar_pseudo_gcd(
1176        Gx: *mut fmpz_mod_mpoly_univar_struct,
1177        Ax: *mut fmpz_mod_mpoly_univar_struct,
1178        Bx: *mut fmpz_mod_mpoly_univar_struct,
1179        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1180    ) -> ::std::os::raw::c_int;
1181}
1182extern "C" {
1183    pub fn fmpz_mod_mpoly_univar_resultant(
1184        R: *mut fmpz_mod_mpoly_struct,
1185        Ax: *mut fmpz_mod_mpoly_univar_struct,
1186        Bx: *mut fmpz_mod_mpoly_univar_struct,
1187        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1188    ) -> ::std::os::raw::c_int;
1189}
1190extern "C" {
1191    pub fn fmpz_mod_mpoly_univar_discriminant(
1192        D: *mut fmpz_mod_mpoly_struct,
1193        Fx: *mut fmpz_mod_mpoly_univar_struct,
1194        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1195    ) -> ::std::os::raw::c_int;
1196}
1197extern "C" {
1198    pub fn fmpz_mod_mpoly_resultant(
1199        R: *mut fmpz_mod_mpoly_struct,
1200        A: *mut fmpz_mod_mpoly_struct,
1201        B: *mut fmpz_mod_mpoly_struct,
1202        var: mp_limb_signed_t,
1203        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1204    ) -> ::std::os::raw::c_int;
1205}
1206extern "C" {
1207    pub fn fmpz_mod_mpoly_discriminant(
1208        R: *mut fmpz_mod_mpoly_struct,
1209        A: *mut fmpz_mod_mpoly_struct,
1210        var: mp_limb_signed_t,
1211        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1212    ) -> ::std::os::raw::c_int;
1213}
1214extern "C" {
1215    pub fn _fmpz_mod_mpoly_init_dense_mock(
1216        D: *mut fmpz_mod_poly_struct,
1217        A: *mut fmpz_mod_mpoly_struct,
1218        Adeg_bounds: *const mp_limb_signed_t,
1219        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1220    );
1221}
1222extern "C" {
1223    pub fn mpoly_void_ring_init_fmpz_mod_mpoly_ctx(
1224        R: *mut _bindgen_ty_22,
1225        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1226    );
1227}
1228#[repr(C)]
1229#[derive(Debug, Copy, Clone)]
1230pub struct fmpz_mod_mpoly_geobucket {
1231    pub polys: [fmpz_mod_mpoly_struct; 32usize],
1232    pub temps: [fmpz_mod_mpoly_struct; 32usize],
1233    pub length: mp_limb_signed_t,
1234}
1235pub type fmpz_mod_mpoly_geobucket_struct = fmpz_mod_mpoly_geobucket;
1236pub type fmpz_mod_mpoly_geobucket_t = [fmpz_mod_mpoly_geobucket_struct; 1usize];
1237extern "C" {
1238    pub fn fmpz_mod_mpoly_geobucket_init(
1239        B: *mut fmpz_mod_mpoly_geobucket_struct,
1240        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1241    );
1242}
1243extern "C" {
1244    pub fn fmpz_mod_mpoly_geobucket_clear(
1245        B: *mut fmpz_mod_mpoly_geobucket_struct,
1246        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1247    );
1248}
1249extern "C" {
1250    pub fn fmpz_mod_mpoly_geobucket_empty(
1251        p: *mut fmpz_mod_mpoly_struct,
1252        B: *mut fmpz_mod_mpoly_geobucket_struct,
1253        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1254    );
1255}
1256extern "C" {
1257    pub fn fmpz_mod_mpoly_geobucket_fit_length(
1258        B: *mut fmpz_mod_mpoly_geobucket_struct,
1259        i: mp_limb_signed_t,
1260        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1261    );
1262}
1263extern "C" {
1264    pub fn fmpz_mod_mpoly_geobucket_set(
1265        B: *mut fmpz_mod_mpoly_geobucket_struct,
1266        p: *mut fmpz_mod_mpoly_struct,
1267        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1268    );
1269}
1270extern "C" {
1271    pub fn fmpz_mod_mpoly_geobucket_add(
1272        B: *mut fmpz_mod_mpoly_geobucket_struct,
1273        p: *mut fmpz_mod_mpoly_struct,
1274        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1275    );
1276}
1277extern "C" {
1278    pub fn fmpz_mod_mpoly_geobucket_sub(
1279        B: *mut fmpz_mod_mpoly_geobucket_struct,
1280        p: *mut fmpz_mod_mpoly_struct,
1281        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1282    );
1283}
1284extern "C" {
1285    pub fn fmpz_mod_mpolyl_lead_coeff(
1286        c: *mut fmpz_mod_mpoly_struct,
1287        A: *mut fmpz_mod_mpoly_struct,
1288        num_vars: mp_limb_signed_t,
1289        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1290    );
1291}
1292extern "C" {
1293    pub fn fmpz_mod_mpolyl_content(
1294        g: *mut fmpz_mod_mpoly_struct,
1295        A: *mut fmpz_mod_mpoly_struct,
1296        num_vars: mp_limb_signed_t,
1297        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1298    ) -> ::std::os::raw::c_int;
1299}
1300extern "C" {
1301    pub fn _fmpz_mod_mpoly_to_fmpz_mod_poly_deflate(
1302        A: *mut fmpz_mod_poly_struct,
1303        B: *mut fmpz_mod_mpoly_struct,
1304        var: mp_limb_signed_t,
1305        Bshift: *const mp_limb_t,
1306        Bstride: *const mp_limb_t,
1307        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1308    );
1309}
1310extern "C" {
1311    pub fn _fmpz_mod_mpoly_from_fmpz_mod_poly_inflate(
1312        A: *mut fmpz_mod_mpoly_struct,
1313        Abits: mp_limb_t,
1314        B: *mut fmpz_mod_poly_struct,
1315        var: mp_limb_signed_t,
1316        Ashift: *const mp_limb_t,
1317        Astride: *const mp_limb_t,
1318        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1319    );
1320}
1321extern "C" {
1322    pub fn _fmpz_mod_mpoly_set_nmod_mpoly(
1323        A: *mut fmpz_mod_mpoly_struct,
1324        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1325        nA: *mut nmod_mpoly_struct,
1326        nctx: *mut nmod_mpoly_ctx_struct,
1327    );
1328}
1329extern "C" {
1330    pub fn _fmpz_mod_mpoly_get_nmod_mpoly(
1331        nA: *mut nmod_mpoly_struct,
1332        nctx: *mut nmod_mpoly_ctx_struct,
1333        A: *mut fmpz_mod_mpoly_struct,
1334        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1335    );
1336}
1337extern "C" {
1338    pub fn fmpz_mod_mpoly_repack_bits(
1339        A: *mut fmpz_mod_mpoly_struct,
1340        B: *mut fmpz_mod_mpoly_struct,
1341        Abits: mp_limb_t,
1342        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1343    ) -> ::std::os::raw::c_int;
1344}
1345extern "C" {
1346    pub fn fmpz_mod_mpoly_repack_bits_inplace(
1347        A: *mut fmpz_mod_mpoly_struct,
1348        Abits: mp_limb_t,
1349        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1350    ) -> ::std::os::raw::c_int;
1351}
1352extern "C" {
1353    pub fn fmpz_mod_mpoly_to_mpolyl_perm_deflate(
1354        A: *mut fmpz_mod_mpoly_struct,
1355        lctx: *mut fmpz_mod_mpoly_ctx_struct,
1356        B: *mut fmpz_mod_mpoly_struct,
1357        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1358        perm: *const mp_limb_signed_t,
1359        shift: *const mp_limb_t,
1360        stride: *const mp_limb_t,
1361    );
1362}
1363extern "C" {
1364    pub fn fmpz_mod_mpoly_from_mpolyl_perm_inflate(
1365        A: *mut fmpz_mod_mpoly_struct,
1366        Abits: mp_limb_t,
1367        ctx: *mut fmpz_mod_mpoly_ctx_struct,
1368        B: *mut fmpz_mod_mpoly_struct,
1369        lctx: *mut fmpz_mod_mpoly_ctx_struct,
1370        perm: *const mp_limb_signed_t,
1371        shift: *const mp_limb_t,
1372        stride: *const mp_limb_t,
1373    );
1374}
1375
1376#[inline]
1377pub unsafe fn fmpz_mod_mpoly_init(
1378    A: *mut fmpz_mod_mpoly_struct,
1379    ctx: *mut fmpz_mod_mpoly_ctx_struct,
1380) {
1381    fmpz_mod_mpoly_init2(A, 0, ctx);
1382}