Skip to main content

flint_sys/
fmpz_mpoly.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3use libc::*;
4use crate::deps::*;
5use crate::acb_types::*;
6use crate::flint::*;
7use crate::fmpz_mod_types::*;
8use crate::fmpz_types::*;
9use crate::mpoly_types::*;
10
11
12#[repr(C)]
13pub struct fmpz_mpoly_univar_struct {
14    pub coeffs: *mut fmpz_mpoly_struct,
15    pub exps: *mut fmpz,
16    pub alloc: slong,
17    pub length: slong,
18}
19#[allow(clippy::unnecessary_operation, clippy::identity_op)]
20const _: () = {
21    ["Size of fmpz_mpoly_univar_struct"]
22        [::std::mem::size_of::<fmpz_mpoly_univar_struct>() - 32usize];
23    ["Alignment of fmpz_mpoly_univar_struct"]
24        [::std::mem::align_of::<fmpz_mpoly_univar_struct>() - 8usize];
25    ["Offset of field: fmpz_mpoly_univar_struct::coeffs"]
26        [::std::mem::offset_of!(fmpz_mpoly_univar_struct, coeffs) - 0usize];
27    ["Offset of field: fmpz_mpoly_univar_struct::exps"]
28        [::std::mem::offset_of!(fmpz_mpoly_univar_struct, exps) - 8usize];
29    ["Offset of field: fmpz_mpoly_univar_struct::alloc"]
30        [::std::mem::offset_of!(fmpz_mpoly_univar_struct, alloc) - 16usize];
31    ["Offset of field: fmpz_mpoly_univar_struct::length"]
32        [::std::mem::offset_of!(fmpz_mpoly_univar_struct, length) - 24usize];
33};
34impl Default for fmpz_mpoly_univar_struct {
35    fn default() -> Self {
36        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
37        unsafe {
38            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
39            s.assume_init()
40        }
41    }
42}
43pub type fmpz_mpoly_univar_t = [fmpz_mpoly_univar_struct; 1usize];
44#[repr(C)]
45pub struct fmpz_mpolyd_struct {
46    pub nvars: slong,
47    pub degb_alloc: slong,
48    pub deg_bounds: *mut slong,
49    pub length: slong,
50    pub coeff_alloc: slong,
51    pub coeffs: *mut fmpz,
52}
53#[allow(clippy::unnecessary_operation, clippy::identity_op)]
54const _: () = {
55    ["Size of fmpz_mpolyd_struct"][::std::mem::size_of::<fmpz_mpolyd_struct>() - 48usize];
56    ["Alignment of fmpz_mpolyd_struct"][::std::mem::align_of::<fmpz_mpolyd_struct>() - 8usize];
57    ["Offset of field: fmpz_mpolyd_struct::nvars"]
58        [::std::mem::offset_of!(fmpz_mpolyd_struct, nvars) - 0usize];
59    ["Offset of field: fmpz_mpolyd_struct::degb_alloc"]
60        [::std::mem::offset_of!(fmpz_mpolyd_struct, degb_alloc) - 8usize];
61    ["Offset of field: fmpz_mpolyd_struct::deg_bounds"]
62        [::std::mem::offset_of!(fmpz_mpolyd_struct, deg_bounds) - 16usize];
63    ["Offset of field: fmpz_mpolyd_struct::length"]
64        [::std::mem::offset_of!(fmpz_mpolyd_struct, length) - 24usize];
65    ["Offset of field: fmpz_mpolyd_struct::coeff_alloc"]
66        [::std::mem::offset_of!(fmpz_mpolyd_struct, coeff_alloc) - 32usize];
67    ["Offset of field: fmpz_mpolyd_struct::coeffs"]
68        [::std::mem::offset_of!(fmpz_mpolyd_struct, coeffs) - 40usize];
69};
70impl Default for fmpz_mpolyd_struct {
71    fn default() -> Self {
72        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
73        unsafe {
74            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
75            s.assume_init()
76        }
77    }
78}
79pub type fmpz_mpolyd_t = [fmpz_mpolyd_struct; 1usize];
80#[repr(C)]
81pub struct fmpz_mpoly_vec_struct {
82    pub p: *mut fmpz_mpoly_struct,
83    pub alloc: slong,
84    pub length: slong,
85}
86#[allow(clippy::unnecessary_operation, clippy::identity_op)]
87const _: () = {
88    ["Size of fmpz_mpoly_vec_struct"][::std::mem::size_of::<fmpz_mpoly_vec_struct>() - 24usize];
89    ["Alignment of fmpz_mpoly_vec_struct"]
90        [::std::mem::align_of::<fmpz_mpoly_vec_struct>() - 8usize];
91    ["Offset of field: fmpz_mpoly_vec_struct::p"]
92        [::std::mem::offset_of!(fmpz_mpoly_vec_struct, p) - 0usize];
93    ["Offset of field: fmpz_mpoly_vec_struct::alloc"]
94        [::std::mem::offset_of!(fmpz_mpoly_vec_struct, alloc) - 8usize];
95    ["Offset of field: fmpz_mpoly_vec_struct::length"]
96        [::std::mem::offset_of!(fmpz_mpoly_vec_struct, length) - 16usize];
97};
98impl Default for fmpz_mpoly_vec_struct {
99    fn default() -> Self {
100        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
101        unsafe {
102            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
103            s.assume_init()
104        }
105    }
106}
107pub type fmpz_mpoly_vec_t = [fmpz_mpoly_vec_struct; 1usize];
108#[repr(C)]
109pub struct _fmpz_mpoly_stripe_struct {
110    pub big_mem: *mut libc::c_char,
111    pub big_mem_alloc: slong,
112    pub N: slong,
113    pub bits: flint_bitcnt_t,
114    pub cmpmask: *const ulong,
115    pub startidx: *mut slong,
116    pub endidx: *mut slong,
117    pub emin: *mut ulong,
118    pub emax: *mut ulong,
119    pub coeff_bits: flint_bitcnt_t,
120    pub upperclosed: libc::c_int,
121    pub flint_small: libc::c_int,
122}
123#[allow(clippy::unnecessary_operation, clippy::identity_op)]
124const _: () = {
125    ["Size of _fmpz_mpoly_stripe_struct"]
126        [::std::mem::size_of::<_fmpz_mpoly_stripe_struct>() - 88usize];
127    ["Alignment of _fmpz_mpoly_stripe_struct"]
128        [::std::mem::align_of::<_fmpz_mpoly_stripe_struct>() - 8usize];
129    ["Offset of field: _fmpz_mpoly_stripe_struct::big_mem"]
130        [::std::mem::offset_of!(_fmpz_mpoly_stripe_struct, big_mem) - 0usize];
131    ["Offset of field: _fmpz_mpoly_stripe_struct::big_mem_alloc"]
132        [::std::mem::offset_of!(_fmpz_mpoly_stripe_struct, big_mem_alloc) - 8usize];
133    ["Offset of field: _fmpz_mpoly_stripe_struct::N"]
134        [::std::mem::offset_of!(_fmpz_mpoly_stripe_struct, N) - 16usize];
135    ["Offset of field: _fmpz_mpoly_stripe_struct::bits"]
136        [::std::mem::offset_of!(_fmpz_mpoly_stripe_struct, bits) - 24usize];
137    ["Offset of field: _fmpz_mpoly_stripe_struct::cmpmask"]
138        [::std::mem::offset_of!(_fmpz_mpoly_stripe_struct, cmpmask) - 32usize];
139    ["Offset of field: _fmpz_mpoly_stripe_struct::startidx"]
140        [::std::mem::offset_of!(_fmpz_mpoly_stripe_struct, startidx) - 40usize];
141    ["Offset of field: _fmpz_mpoly_stripe_struct::endidx"]
142        [::std::mem::offset_of!(_fmpz_mpoly_stripe_struct, endidx) - 48usize];
143    ["Offset of field: _fmpz_mpoly_stripe_struct::emin"]
144        [::std::mem::offset_of!(_fmpz_mpoly_stripe_struct, emin) - 56usize];
145    ["Offset of field: _fmpz_mpoly_stripe_struct::emax"]
146        [::std::mem::offset_of!(_fmpz_mpoly_stripe_struct, emax) - 64usize];
147    ["Offset of field: _fmpz_mpoly_stripe_struct::coeff_bits"]
148        [::std::mem::offset_of!(_fmpz_mpoly_stripe_struct, coeff_bits) - 72usize];
149    ["Offset of field: _fmpz_mpoly_stripe_struct::upperclosed"]
150        [::std::mem::offset_of!(_fmpz_mpoly_stripe_struct, upperclosed) - 80usize];
151    ["Offset of field: _fmpz_mpoly_stripe_struct::flint_small"]
152        [::std::mem::offset_of!(_fmpz_mpoly_stripe_struct, flint_small) - 84usize];
153};
154impl Default for _fmpz_mpoly_stripe_struct {
155    fn default() -> Self {
156        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
157        unsafe {
158            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
159            s.assume_init()
160        }
161    }
162}
163pub type fmpz_mpoly_stripe_struct = _fmpz_mpoly_stripe_struct;
164pub type fmpz_mpoly_stripe_t = [fmpz_mpoly_stripe_struct; 1usize];
165#[repr(C)]
166pub struct fmpz_mpolyd_ctx_struct {
167    pub nvars: slong,
168    pub perm: *mut slong,
169}
170#[allow(clippy::unnecessary_operation, clippy::identity_op)]
171const _: () = {
172    ["Size of fmpz_mpolyd_ctx_struct"][::std::mem::size_of::<fmpz_mpolyd_ctx_struct>() - 16usize];
173    ["Alignment of fmpz_mpolyd_ctx_struct"]
174        [::std::mem::align_of::<fmpz_mpolyd_ctx_struct>() - 8usize];
175    ["Offset of field: fmpz_mpolyd_ctx_struct::nvars"]
176        [::std::mem::offset_of!(fmpz_mpolyd_ctx_struct, nvars) - 0usize];
177    ["Offset of field: fmpz_mpolyd_ctx_struct::perm"]
178        [::std::mem::offset_of!(fmpz_mpolyd_ctx_struct, perm) - 8usize];
179};
180impl Default for fmpz_mpolyd_ctx_struct {
181    fn default() -> Self {
182        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
183        unsafe {
184            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
185            s.assume_init()
186        }
187    }
188}
189pub type fmpz_mpolyd_ctx_t = [fmpz_mpolyd_ctx_struct; 1usize];
190#[repr(C)]
191pub struct _bindgen_ty_3 {
192    pub powers: *mut fmpz,
193    pub length: slong,
194    pub alloc: slong,
195    pub tmp: fmpz_t,
196}
197#[allow(clippy::unnecessary_operation, clippy::identity_op)]
198const _: () = {
199    ["Size of _bindgen_ty_3"][::std::mem::size_of::<_bindgen_ty_3>() - 32usize];
200    ["Alignment of _bindgen_ty_3"][::std::mem::align_of::<_bindgen_ty_3>() - 8usize];
201    ["Offset of field: _bindgen_ty_3::powers"]
202        [::std::mem::offset_of!(_bindgen_ty_3, powers) - 0usize];
203    ["Offset of field: _bindgen_ty_3::length"]
204        [::std::mem::offset_of!(_bindgen_ty_3, length) - 8usize];
205    ["Offset of field: _bindgen_ty_3::alloc"]
206        [::std::mem::offset_of!(_bindgen_ty_3, alloc) - 16usize];
207    ["Offset of field: _bindgen_ty_3::tmp"][::std::mem::offset_of!(_bindgen_ty_3, tmp) - 24usize];
208};
209impl Default for _bindgen_ty_3 {
210    fn default() -> Self {
211        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
212        unsafe {
213            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
214            s.assume_init()
215        }
216    }
217}
218pub type fmpz_pow_cache_t = [_bindgen_ty_3; 1usize];
219#[repr(C)]
220pub struct fmpz_mpoly_geobucket {
221    pub polys: [fmpz_mpoly_struct; 32usize],
222    pub temps: [fmpz_mpoly_struct; 32usize],
223    pub length: slong,
224}
225#[allow(clippy::unnecessary_operation, clippy::identity_op)]
226const _: () = {
227    ["Size of fmpz_mpoly_geobucket"][::std::mem::size_of::<fmpz_mpoly_geobucket>() - 2568usize];
228    ["Alignment of fmpz_mpoly_geobucket"][::std::mem::align_of::<fmpz_mpoly_geobucket>() - 8usize];
229    ["Offset of field: fmpz_mpoly_geobucket::polys"]
230        [::std::mem::offset_of!(fmpz_mpoly_geobucket, polys) - 0usize];
231    ["Offset of field: fmpz_mpoly_geobucket::temps"]
232        [::std::mem::offset_of!(fmpz_mpoly_geobucket, temps) - 1280usize];
233    ["Offset of field: fmpz_mpoly_geobucket::length"]
234        [::std::mem::offset_of!(fmpz_mpoly_geobucket, length) - 2560usize];
235};
236impl Default for fmpz_mpoly_geobucket {
237    fn default() -> Self {
238        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
239        unsafe {
240            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
241            s.assume_init()
242        }
243    }
244}
245pub type fmpz_mpoly_geobucket_struct = fmpz_mpoly_geobucket;
246pub type fmpz_mpoly_geobucket_t = [fmpz_mpoly_geobucket_struct; 1usize];
247extern "C" {
248    #[link_name = "fmpz_mpoly_term_coeff_ref__extern"]
249    pub fn fmpz_mpoly_term_coeff_ref(
250        A: *mut fmpz_mpoly_struct,
251        i: slong,
252        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
253    ) -> *mut fmpz;
254    #[link_name = "fmpz_mpoly_leadcoeff__extern"]
255    pub fn fmpz_mpoly_leadcoeff(A: *const fmpz_mpoly_struct) -> *mut fmpz;
256    pub fn fmpz_mpoly_ctx_init(ctx: *mut fmpz_mpoly_ctx_struct, nvars: slong, ord: ordering_t);
257    pub fn fmpz_mpoly_ctx_init_rand(
258        mctx: *mut fmpz_mpoly_ctx_struct,
259        state: *mut flint_rand_struct,
260        max_nvars: slong,
261    );
262    pub fn fmpz_mpoly_ctx_clear(ctx: *mut fmpz_mpoly_ctx_struct);
263    #[link_name = "fmpz_mpoly_ctx_nvars__extern"]
264    pub fn fmpz_mpoly_ctx_nvars(ctx: *const fmpz_mpoly_ctx_struct) -> slong;
265    #[link_name = "fmpz_mpoly_ctx_ord__extern"]
266    pub fn fmpz_mpoly_ctx_ord(ctx: *const fmpz_mpoly_ctx_struct) -> ordering_t;
267    pub fn fmpz_mpoly_init(A: *mut fmpz_mpoly_struct, UNUSED_ctx: *const fmpz_mpoly_ctx_struct);
268    pub fn fmpz_mpoly_init2(
269        A: *mut fmpz_mpoly_struct,
270        alloc: slong,
271        ctx: *const fmpz_mpoly_ctx_struct,
272    );
273    pub fn fmpz_mpoly_init3(
274        A: *mut fmpz_mpoly_struct,
275        alloc: slong,
276        bits: flint_bitcnt_t,
277        ctx: *const fmpz_mpoly_ctx_struct,
278    );
279    pub fn _fmpz_mpoly_realloc(
280        Acoeff: *mut *mut fmpz,
281        Aexp: *mut *mut ulong,
282        Aalloc: *mut slong,
283        len: slong,
284        N: slong,
285    );
286    pub fn fmpz_mpoly_realloc(
287        A: *mut fmpz_mpoly_struct,
288        alloc: slong,
289        ctx: *const fmpz_mpoly_ctx_struct,
290    );
291    pub fn _fmpz_mpoly_fit_length(
292        Acoeff: *mut *mut fmpz,
293        Aexp: *mut *mut ulong,
294        Aalloc: *mut slong,
295        len: slong,
296        N: slong,
297    );
298    pub fn fmpz_mpoly_fit_length(
299        A: *mut fmpz_mpoly_struct,
300        len: slong,
301        ctx: *const fmpz_mpoly_ctx_struct,
302    );
303    pub fn fmpz_mpoly_fit_length_reset_bits(
304        A: *mut fmpz_mpoly_struct,
305        len: slong,
306        bits: flint_bitcnt_t,
307        ctx: *const fmpz_mpoly_ctx_struct,
308    );
309    pub fn fmpz_mpoly_clear(A: *mut fmpz_mpoly_struct, UNUSED_ctx: *const fmpz_mpoly_ctx_struct);
310    pub fn _fmpz_mpoly_set_length(
311        A: *mut fmpz_mpoly_struct,
312        newlen: slong,
313        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
314    );
315    pub fn fmpz_mpoly_truncate(
316        A: *mut fmpz_mpoly_struct,
317        newlen: slong,
318        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
319    );
320    pub fn fmpz_mpoly_fit_bits(
321        A: *mut fmpz_mpoly_struct,
322        bits: flint_bitcnt_t,
323        ctx: *const fmpz_mpoly_ctx_struct,
324    );
325    pub fn fmpz_mpoly_set_str_pretty(
326        A: *mut fmpz_mpoly_struct,
327        str_: *const libc::c_char,
328        x: *mut *const libc::c_char,
329        ctx: *const fmpz_mpoly_ctx_struct,
330    ) -> libc::c_int;
331    pub fn _fmpz_mpoly_get_str_pretty(
332        poly: *const fmpz,
333        exps: *const ulong,
334        len: slong,
335        x: *mut *const libc::c_char,
336        bits: slong,
337        mctx: *const mpoly_ctx_struct,
338    ) -> *mut libc::c_char;
339    pub fn fmpz_mpoly_get_str_pretty(
340        A: *const fmpz_mpoly_struct,
341        x: *mut *const libc::c_char,
342        ctx: *const fmpz_mpoly_ctx_struct,
343    ) -> *mut libc::c_char;
344    pub fn _fmpz_mpoly_fprint_pretty(
345        file: *mut FILE,
346        poly: *const fmpz,
347        exps: *const ulong,
348        len: slong,
349        x_in: *mut *const libc::c_char,
350        bits: flint_bitcnt_t,
351        mctx: *const mpoly_ctx_struct,
352    ) -> libc::c_int;
353    pub fn fmpz_mpoly_fprint_pretty(
354        file: *mut FILE,
355        A: *const fmpz_mpoly_struct,
356        x: *mut *const libc::c_char,
357        ctx: *const fmpz_mpoly_ctx_struct,
358    ) -> libc::c_int;
359    pub fn _fmpz_mpoly_print_pretty(
360        poly: *const fmpz,
361        exps: *const ulong,
362        len: slong,
363        x: *mut *const libc::c_char,
364        bits: slong,
365        mctx: *const mpoly_ctx_struct,
366    ) -> libc::c_int;
367    pub fn fmpz_mpoly_print_pretty(
368        A: *const fmpz_mpoly_struct,
369        x: *mut *const libc::c_char,
370        ctx: *const fmpz_mpoly_ctx_struct,
371    ) -> libc::c_int;
372    pub fn fmpz_mpoly_gen(
373        poly: *mut fmpz_mpoly_struct,
374        i: slong,
375        ctx: *const fmpz_mpoly_ctx_struct,
376    );
377    pub fn fmpz_mpoly_is_gen(
378        poly: *const fmpz_mpoly_struct,
379        k: slong,
380        ctx: *const fmpz_mpoly_ctx_struct,
381    ) -> libc::c_int;
382    pub fn _fmpz_mpoly_set(
383        poly1: *mut fmpz,
384        exps1: *mut ulong,
385        poly2: *const fmpz,
386        exps2: *const ulong,
387        n: slong,
388        N: slong,
389    );
390    pub fn fmpz_mpoly_set(
391        A: *mut fmpz_mpoly_struct,
392        B: *const fmpz_mpoly_struct,
393        ctx: *const fmpz_mpoly_ctx_struct,
394    );
395    pub fn _fmpz_mpoly_equal(
396        poly1: *mut fmpz,
397        exps1: *mut ulong,
398        poly2: *const fmpz,
399        exps2: *const ulong,
400        n: slong,
401        N: slong,
402    ) -> libc::c_int;
403    pub fn fmpz_mpoly_equal(
404        A: *const fmpz_mpoly_struct,
405        B: *const fmpz_mpoly_struct,
406        ctx: *const fmpz_mpoly_ctx_struct,
407    ) -> libc::c_int;
408    #[link_name = "fmpz_mpoly_swap__extern"]
409    pub fn fmpz_mpoly_swap(
410        A: *mut fmpz_mpoly_struct,
411        B: *mut fmpz_mpoly_struct,
412        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
413    );
414    #[link_name = "_fmpz_mpoly_fits_small__extern"]
415    pub fn _fmpz_mpoly_fits_small(poly: *const fmpz, len: slong) -> libc::c_int;
416    pub fn fmpz_mpoly_max_bits(A: *const fmpz_mpoly_struct) -> slong;
417    pub fn fmpz_mpoly_is_fmpz(
418        A: *const fmpz_mpoly_struct,
419        ctx: *const fmpz_mpoly_ctx_struct,
420    ) -> libc::c_int;
421    pub fn fmpz_mpoly_get_fmpz(
422        c: *mut fmpz,
423        A: *const fmpz_mpoly_struct,
424        ctx: *const fmpz_mpoly_ctx_struct,
425    );
426    pub fn fmpz_mpoly_set_si(
427        A: *mut fmpz_mpoly_struct,
428        c: slong,
429        ctx: *const fmpz_mpoly_ctx_struct,
430    );
431    pub fn fmpz_mpoly_set_ui(
432        A: *mut fmpz_mpoly_struct,
433        c: ulong,
434        ctx: *const fmpz_mpoly_ctx_struct,
435    );
436    pub fn fmpz_mpoly_set_fmpz(
437        A: *mut fmpz_mpoly_struct,
438        c: *const fmpz,
439        ctx: *const fmpz_mpoly_ctx_struct,
440    );
441    #[link_name = "fmpz_mpoly_zero__extern"]
442    pub fn fmpz_mpoly_zero(A: *mut fmpz_mpoly_struct, ctx: *const fmpz_mpoly_ctx_struct);
443    #[link_name = "fmpz_mpoly_one__extern"]
444    pub fn fmpz_mpoly_one(A: *mut fmpz_mpoly_struct, ctx: *const fmpz_mpoly_ctx_struct);
445    pub fn fmpz_mpoly_equal_si(
446        A: *const fmpz_mpoly_struct,
447        c: slong,
448        ctx: *const fmpz_mpoly_ctx_struct,
449    ) -> libc::c_int;
450    pub fn fmpz_mpoly_equal_ui(
451        A: *const fmpz_mpoly_struct,
452        c: ulong,
453        ctx: *const fmpz_mpoly_ctx_struct,
454    ) -> libc::c_int;
455    pub fn fmpz_mpoly_equal_fmpz(
456        A: *const fmpz_mpoly_struct,
457        c: *const fmpz,
458        ctx: *const fmpz_mpoly_ctx_struct,
459    ) -> libc::c_int;
460    #[link_name = "fmpz_mpoly_is_zero__extern"]
461    pub fn fmpz_mpoly_is_zero(
462        A: *const fmpz_mpoly_struct,
463        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
464    ) -> libc::c_int;
465    #[link_name = "fmpz_mpoly_is_one__extern"]
466    pub fn fmpz_mpoly_is_one(
467        A: *const fmpz_mpoly_struct,
468        ctx: *const fmpz_mpoly_ctx_struct,
469    ) -> libc::c_int;
470    pub fn fmpz_mpoly_degrees_fit_si(
471        A: *const fmpz_mpoly_struct,
472        ctx: *const fmpz_mpoly_ctx_struct,
473    ) -> libc::c_int;
474    pub fn fmpz_mpoly_degrees_fmpz(
475        degs: *mut *mut fmpz,
476        A: *const fmpz_mpoly_struct,
477        ctx: *const fmpz_mpoly_ctx_struct,
478    );
479    pub fn fmpz_mpoly_degrees_si(
480        degs: *mut slong,
481        A: *const fmpz_mpoly_struct,
482        ctx: *const fmpz_mpoly_ctx_struct,
483    );
484    pub fn fmpz_mpoly_degree_fmpz(
485        deg: *mut fmpz,
486        A: *const fmpz_mpoly_struct,
487        var: slong,
488        ctx: *const fmpz_mpoly_ctx_struct,
489    );
490    pub fn fmpz_mpoly_degree_si(
491        A: *const fmpz_mpoly_struct,
492        var: slong,
493        ctx: *const fmpz_mpoly_ctx_struct,
494    ) -> slong;
495    pub fn fmpz_mpoly_total_degree_fits_si(
496        A: *const fmpz_mpoly_struct,
497        ctx: *const fmpz_mpoly_ctx_struct,
498    ) -> libc::c_int;
499    pub fn fmpz_mpoly_total_degree_fmpz(
500        td: *mut fmpz,
501        A: *const fmpz_mpoly_struct,
502        ctx: *const fmpz_mpoly_ctx_struct,
503    );
504    pub fn fmpz_mpoly_total_degree_si(
505        A: *const fmpz_mpoly_struct,
506        ctx: *const fmpz_mpoly_ctx_struct,
507    ) -> slong;
508    pub fn fmpz_mpoly_used_vars(
509        used: *mut libc::c_int,
510        A: *const fmpz_mpoly_struct,
511        ctx: *const fmpz_mpoly_ctx_struct,
512    );
513    pub fn fmpz_mpoly_get_coeff_si_fmpz(
514        A: *const fmpz_mpoly_struct,
515        exp: *const *mut fmpz,
516        ctx: *const fmpz_mpoly_ctx_struct,
517    ) -> slong;
518    pub fn fmpz_mpoly_get_coeff_ui_fmpz(
519        A: *const fmpz_mpoly_struct,
520        exp: *const *mut fmpz,
521        ctx: *const fmpz_mpoly_ctx_struct,
522    ) -> ulong;
523    pub fn fmpz_mpoly_get_coeff_fmpz_fmpz(
524        c: *mut fmpz,
525        A: *const fmpz_mpoly_struct,
526        exp: *const *mut fmpz,
527        ctx: *const fmpz_mpoly_ctx_struct,
528    );
529    pub fn fmpz_mpoly_get_coeff_si_ui(
530        A: *const fmpz_mpoly_struct,
531        exp: *const ulong,
532        ctx: *const fmpz_mpoly_ctx_struct,
533    ) -> slong;
534    pub fn fmpz_mpoly_get_coeff_ui_ui(
535        A: *const fmpz_mpoly_struct,
536        exp: *const ulong,
537        ctx: *const fmpz_mpoly_ctx_struct,
538    ) -> ulong;
539    pub fn fmpz_mpoly_get_coeff_fmpz_ui(
540        c: *mut fmpz,
541        A: *const fmpz_mpoly_struct,
542        exp: *const ulong,
543        ctx: *const fmpz_mpoly_ctx_struct,
544    );
545    pub fn fmpz_mpoly_get_coeff_fmpz_monomial(
546        c: *mut fmpz,
547        A: *const fmpz_mpoly_struct,
548        M: *const fmpz_mpoly_struct,
549        ctx: *const fmpz_mpoly_ctx_struct,
550    );
551    pub fn fmpz_mpoly_set_coeff_si_ui(
552        A: *mut fmpz_mpoly_struct,
553        c: slong,
554        exp: *const ulong,
555        ctx: *const fmpz_mpoly_ctx_struct,
556    );
557    pub fn fmpz_mpoly_set_coeff_ui_ui(
558        A: *mut fmpz_mpoly_struct,
559        c: ulong,
560        exp: *const ulong,
561        ctx: *const fmpz_mpoly_ctx_struct,
562    );
563    pub fn fmpz_mpoly_set_coeff_fmpz_ui(
564        A: *mut fmpz_mpoly_struct,
565        c: *const fmpz,
566        exp: *const ulong,
567        ctx: *const fmpz_mpoly_ctx_struct,
568    );
569    pub fn fmpz_mpoly_set_coeff_si_fmpz(
570        A: *mut fmpz_mpoly_struct,
571        c: slong,
572        exp: *const *mut fmpz,
573        ctx: *const fmpz_mpoly_ctx_struct,
574    );
575    pub fn fmpz_mpoly_set_coeff_ui_fmpz(
576        A: *mut fmpz_mpoly_struct,
577        c: ulong,
578        exp: *const *mut fmpz,
579        ctx: *const fmpz_mpoly_ctx_struct,
580    );
581    pub fn _fmpz_mpoly_set_coeff_fmpz_fmpz(
582        A: *mut fmpz_mpoly_struct,
583        c: *const fmpz,
584        exp: *const fmpz,
585        ctx: *const fmpz_mpoly_ctx_struct,
586    );
587    pub fn fmpz_mpoly_set_coeff_fmpz_fmpz(
588        A: *mut fmpz_mpoly_struct,
589        c: *const fmpz,
590        exp: *const *mut fmpz,
591        ctx: *const fmpz_mpoly_ctx_struct,
592    );
593    pub fn fmpz_mpoly_set_coeff_fmpz_monomial(
594        A: *mut fmpz_mpoly_struct,
595        c: *const fmpz,
596        M: *const fmpz_mpoly_struct,
597        ctx: *const fmpz_mpoly_ctx_struct,
598    );
599    pub fn fmpz_mpoly_get_coeff_vars_ui(
600        C: *mut fmpz_mpoly_struct,
601        A: *const fmpz_mpoly_struct,
602        vars: *const slong,
603        exps: *const ulong,
604        length: slong,
605        ctx: *const fmpz_mpoly_ctx_struct,
606    );
607    pub fn fmpz_mpoly_is_fmpz_poly(
608        A: *const fmpz_mpoly_struct,
609        var: slong,
610        ctx: *const fmpz_mpoly_ctx_struct,
611    ) -> libc::c_int;
612    pub fn fmpz_mpoly_get_fmpz_poly(
613        A: *mut fmpz_poly_struct,
614        B: *const fmpz_mpoly_struct,
615        var: slong,
616        ctx: *const fmpz_mpoly_ctx_struct,
617    ) -> libc::c_int;
618    pub fn _fmpz_mpoly_set_fmpz_poly(
619        A: *mut fmpz_mpoly_struct,
620        Abits: flint_bitcnt_t,
621        Bcoeffs: *const fmpz,
622        Blen: slong,
623        var: slong,
624        ctx: *const fmpz_mpoly_ctx_struct,
625    );
626    pub fn fmpz_mpoly_set_fmpz_poly(
627        A: *mut fmpz_mpoly_struct,
628        B: *const fmpz_poly_struct,
629        v: slong,
630        ctx: *const fmpz_mpoly_ctx_struct,
631    );
632    pub fn _fmpz_mpoly_set_fmpz_poly_one_var(
633        A: *mut fmpz_mpoly_struct,
634        Aminbits: flint_bitcnt_t,
635        Acoeffs: *mut fmpz,
636        Adeg: slong,
637        ctx: *const fmpz_mpoly_ctx_struct,
638    );
639    pub fn fmpz_mpoly_set_gen_fmpz_poly(
640        res: *mut fmpz_mpoly_struct,
641        var: slong,
642        pol: *const fmpz_poly_struct,
643        ctx: *const fmpz_mpoly_ctx_struct,
644    );
645    pub fn fmpz_mpoly_cmp(
646        A: *const fmpz_mpoly_struct,
647        B: *const fmpz_mpoly_struct,
648        ctx: *const fmpz_mpoly_ctx_struct,
649    ) -> libc::c_int;
650    pub fn fmpz_mpoly_is_canonical(
651        A: *const fmpz_mpoly_struct,
652        ctx: *const fmpz_mpoly_ctx_struct,
653    ) -> libc::c_int;
654    #[link_name = "fmpz_mpoly_length__extern"]
655    pub fn fmpz_mpoly_length(
656        A: *const fmpz_mpoly_struct,
657        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
658    ) -> slong;
659    pub fn fmpz_mpoly_resize(
660        A: *mut fmpz_mpoly_struct,
661        new_length: slong,
662        ctx: *const fmpz_mpoly_ctx_struct,
663    );
664    pub fn fmpz_mpoly_get_term_coeff_fmpz(
665        c: *mut fmpz,
666        A: *const fmpz_mpoly_struct,
667        i: slong,
668        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
669    );
670    pub fn fmpz_mpoly_get_term_coeff_ui(
671        A: *const fmpz_mpoly_struct,
672        i: slong,
673        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
674    ) -> ulong;
675    pub fn fmpz_mpoly_get_term_coeff_si(
676        A: *const fmpz_mpoly_struct,
677        i: slong,
678        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
679    ) -> slong;
680    pub fn fmpz_mpoly_set_term_coeff_fmpz(
681        A: *mut fmpz_mpoly_struct,
682        i: slong,
683        c: *const fmpz,
684        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
685    );
686    pub fn fmpz_mpoly_set_term_coeff_ui(
687        A: *mut fmpz_mpoly_struct,
688        i: slong,
689        c: ulong,
690        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
691    );
692    pub fn fmpz_mpoly_set_term_coeff_si(
693        A: *mut fmpz_mpoly_struct,
694        i: slong,
695        c: slong,
696        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
697    );
698    pub fn fmpz_mpoly_term_exp_fits_ui(
699        A: *const fmpz_mpoly_struct,
700        i: slong,
701        ctx: *const fmpz_mpoly_ctx_struct,
702    ) -> libc::c_int;
703    pub fn fmpz_mpoly_term_exp_fits_si(
704        A: *const fmpz_mpoly_struct,
705        i: slong,
706        ctx: *const fmpz_mpoly_ctx_struct,
707    ) -> libc::c_int;
708    pub fn fmpz_mpoly_get_term_exp_si(
709        exp: *mut slong,
710        A: *const fmpz_mpoly_struct,
711        i: slong,
712        ctx: *const fmpz_mpoly_ctx_struct,
713    );
714    pub fn fmpz_mpoly_get_term_exp_ui(
715        exp: *mut ulong,
716        A: *const fmpz_mpoly_struct,
717        i: slong,
718        ctx: *const fmpz_mpoly_ctx_struct,
719    );
720    pub fn fmpz_mpoly_get_term_exp_fmpz(
721        exp: *mut *mut fmpz,
722        A: *const fmpz_mpoly_struct,
723        i: slong,
724        ctx: *const fmpz_mpoly_ctx_struct,
725    );
726    pub fn fmpz_mpoly_get_term_var_exp_si(
727        A: *const fmpz_mpoly_struct,
728        i: slong,
729        var: slong,
730        ctx: *const fmpz_mpoly_ctx_struct,
731    ) -> slong;
732    pub fn fmpz_mpoly_get_term_var_exp_ui(
733        A: *const fmpz_mpoly_struct,
734        i: slong,
735        var: slong,
736        ctx: *const fmpz_mpoly_ctx_struct,
737    ) -> ulong;
738    pub fn fmpz_mpoly_get_term(
739        M: *mut fmpz_mpoly_struct,
740        A: *const fmpz_mpoly_struct,
741        i: slong,
742        ctx: *const fmpz_mpoly_ctx_struct,
743    );
744    pub fn fmpz_mpoly_get_term_monomial(
745        M: *mut fmpz_mpoly_struct,
746        A: *const fmpz_mpoly_struct,
747        i: slong,
748        ctx: *const fmpz_mpoly_ctx_struct,
749    );
750    pub fn fmpz_mpoly_set_term_exp_ui(
751        A: *mut fmpz_mpoly_struct,
752        i: slong,
753        exp: *const ulong,
754        ctx: *const fmpz_mpoly_ctx_struct,
755    );
756    pub fn fmpz_mpoly_set_term_exp_fmpz(
757        A: *mut fmpz_mpoly_struct,
758        i: slong,
759        exp: *const *mut fmpz,
760        ctx: *const fmpz_mpoly_ctx_struct,
761    );
762    pub fn fmpz_mpoly_push_term_si_ui(
763        A: *mut fmpz_mpoly_struct,
764        c: slong,
765        exp: *const ulong,
766        ctx: *const fmpz_mpoly_ctx_struct,
767    );
768    pub fn fmpz_mpoly_push_term_si_fmpz(
769        A: *mut fmpz_mpoly_struct,
770        c: slong,
771        exp: *const *mut fmpz,
772        ctx: *const fmpz_mpoly_ctx_struct,
773    );
774    pub fn fmpz_mpoly_push_term_si_ffmpz(
775        A: *mut fmpz_mpoly_struct,
776        c: slong,
777        exp: *const fmpz,
778        ctx: *const fmpz_mpoly_ctx_struct,
779    );
780    pub fn fmpz_mpoly_push_term_ui_ui(
781        A: *mut fmpz_mpoly_struct,
782        c: ulong,
783        exp: *const ulong,
784        ctx: *const fmpz_mpoly_ctx_struct,
785    );
786    pub fn fmpz_mpoly_push_term_ui_fmpz(
787        A: *mut fmpz_mpoly_struct,
788        c: ulong,
789        exp: *const *mut fmpz,
790        ctx: *const fmpz_mpoly_ctx_struct,
791    );
792    pub fn fmpz_mpoly_push_term_ui_ffmpz(
793        A: *mut fmpz_mpoly_struct,
794        c: ulong,
795        exp: *const fmpz,
796        ctx: *const fmpz_mpoly_ctx_struct,
797    );
798    pub fn fmpz_mpoly_push_term_fmpz_ui(
799        A: *mut fmpz_mpoly_struct,
800        c: *const fmpz,
801        exp: *const ulong,
802        ctx: *const fmpz_mpoly_ctx_struct,
803    );
804    pub fn fmpz_mpoly_push_term_fmpz_fmpz(
805        A: *mut fmpz_mpoly_struct,
806        c: *const fmpz,
807        exp: *const *mut fmpz,
808        ctx: *const fmpz_mpoly_ctx_struct,
809    );
810    pub fn fmpz_mpoly_push_term_fmpz_ffmpz(
811        A: *mut fmpz_mpoly_struct,
812        c: *const fmpz,
813        exp: *const fmpz,
814        ctx: *const fmpz_mpoly_ctx_struct,
815    );
816    pub fn _fmpz_mpoly_push_exp_ui(
817        A: *mut fmpz_mpoly_struct,
818        exp: *const ulong,
819        ctx: *const fmpz_mpoly_ctx_struct,
820    );
821    pub fn _fmpz_mpoly_push_exp_ffmpz(
822        A: *mut fmpz_mpoly_struct,
823        exp: *const fmpz,
824        ctx: *const fmpz_mpoly_ctx_struct,
825    );
826    pub fn _fmpz_mpoly_push_exp_pfmpz(
827        A: *mut fmpz_mpoly_struct,
828        exp: *const *mut fmpz,
829        ctx: *const fmpz_mpoly_ctx_struct,
830    );
831    pub fn fmpz_mpoly_combine_like_terms(
832        A: *mut fmpz_mpoly_struct,
833        ctx: *const fmpz_mpoly_ctx_struct,
834    );
835    pub fn fmpz_mpoly_reverse(
836        A: *mut fmpz_mpoly_struct,
837        B: *const fmpz_mpoly_struct,
838        ctx: *const fmpz_mpoly_ctx_struct,
839    );
840    pub fn fmpz_mpoly_sort_terms(A: *mut fmpz_mpoly_struct, ctx: *const fmpz_mpoly_ctx_struct);
841    pub fn _fmpz_mpoly_radix_sort1(
842        A: *mut fmpz_mpoly_struct,
843        left: slong,
844        right: slong,
845        pos: flint_bitcnt_t,
846        cmpmask: ulong,
847        totalmask: ulong,
848    );
849    pub fn _fmpz_mpoly_radix_sort(
850        A: *mut fmpz_mpoly_struct,
851        left: slong,
852        right: slong,
853        pos: flint_bitcnt_t,
854        N: slong,
855        cmpmask: *mut ulong,
856    );
857    pub fn fmpz_mpoly_assert_canonical(
858        A: *const fmpz_mpoly_struct,
859        ctx: *const fmpz_mpoly_ctx_struct,
860    );
861    pub fn fmpz_mpoly_randtest_bound(
862        A: *mut fmpz_mpoly_struct,
863        state: *mut flint_rand_struct,
864        length: slong,
865        coeff_bits: flint_bitcnt_t,
866        exp_bound: ulong,
867        ctx: *const fmpz_mpoly_ctx_struct,
868    );
869    pub fn fmpz_mpoly_randtest_bounds(
870        A: *mut fmpz_mpoly_struct,
871        state: *mut flint_rand_struct,
872        length: slong,
873        coeff_bits: flint_bitcnt_t,
874        exp_bounds: *mut ulong,
875        ctx: *const fmpz_mpoly_ctx_struct,
876    );
877    pub fn fmpz_mpoly_randtest_bits(
878        A: *mut fmpz_mpoly_struct,
879        state: *mut flint_rand_struct,
880        length: slong,
881        coeff_bits: flint_bitcnt_t,
882        exp_bits: flint_bitcnt_t,
883        ctx: *const fmpz_mpoly_ctx_struct,
884    );
885    pub fn fmpz_mpoly_add_si(
886        A: *mut fmpz_mpoly_struct,
887        B: *const fmpz_mpoly_struct,
888        c: slong,
889        ctx: *const fmpz_mpoly_ctx_struct,
890    );
891    pub fn fmpz_mpoly_add_ui(
892        A: *mut fmpz_mpoly_struct,
893        B: *const fmpz_mpoly_struct,
894        c: ulong,
895        ctx: *const fmpz_mpoly_ctx_struct,
896    );
897    pub fn fmpz_mpoly_add_fmpz(
898        A: *mut fmpz_mpoly_struct,
899        B: *const fmpz_mpoly_struct,
900        c: *const fmpz,
901        ctx: *const fmpz_mpoly_ctx_struct,
902    );
903    pub fn _fmpz_mpoly_add(
904        poly1: *mut fmpz,
905        exps1: *mut ulong,
906        poly2: *const fmpz,
907        exps2: *const ulong,
908        len2: slong,
909        poly3: *const fmpz,
910        exps3: *const ulong,
911        len3: slong,
912        N: slong,
913        cmpmask: *const ulong,
914    ) -> slong;
915    pub fn fmpz_mpoly_add(
916        A: *mut fmpz_mpoly_struct,
917        B: *const fmpz_mpoly_struct,
918        C: *const fmpz_mpoly_struct,
919        ctx: *const fmpz_mpoly_ctx_struct,
920    );
921    pub fn fmpz_mpoly_sub_si(
922        A: *mut fmpz_mpoly_struct,
923        B: *const fmpz_mpoly_struct,
924        c: slong,
925        ctx: *const fmpz_mpoly_ctx_struct,
926    );
927    pub fn fmpz_mpoly_sub_ui(
928        A: *mut fmpz_mpoly_struct,
929        B: *const fmpz_mpoly_struct,
930        c: ulong,
931        ctx: *const fmpz_mpoly_ctx_struct,
932    );
933    pub fn fmpz_mpoly_sub_fmpz(
934        A: *mut fmpz_mpoly_struct,
935        B: *const fmpz_mpoly_struct,
936        c: *const fmpz,
937        ctx: *const fmpz_mpoly_ctx_struct,
938    );
939    pub fn _fmpz_mpoly_sub(
940        poly1: *mut fmpz,
941        exps1: *mut ulong,
942        poly2: *const fmpz,
943        exps2: *const ulong,
944        len2: slong,
945        poly3: *const fmpz,
946        exps3: *const ulong,
947        len3: slong,
948        N: slong,
949        cmpmask: *const ulong,
950    ) -> slong;
951    pub fn fmpz_mpoly_sub(
952        A: *mut fmpz_mpoly_struct,
953        B: *const fmpz_mpoly_struct,
954        C: *const fmpz_mpoly_struct,
955        ctx: *const fmpz_mpoly_ctx_struct,
956    );
957    pub fn fmpz_mpoly_neg(
958        A: *mut fmpz_mpoly_struct,
959        B: *const fmpz_mpoly_struct,
960        ctx: *const fmpz_mpoly_ctx_struct,
961    );
962    pub fn fmpz_mpoly_scalar_mul_si(
963        A: *mut fmpz_mpoly_struct,
964        B: *const fmpz_mpoly_struct,
965        c: slong,
966        ctx: *const fmpz_mpoly_ctx_struct,
967    );
968    pub fn fmpz_mpoly_scalar_mul_ui(
969        A: *mut fmpz_mpoly_struct,
970        B: *const fmpz_mpoly_struct,
971        c: ulong,
972        ctx: *const fmpz_mpoly_ctx_struct,
973    );
974    pub fn fmpz_mpoly_scalar_mul_fmpz(
975        A: *mut fmpz_mpoly_struct,
976        B: *const fmpz_mpoly_struct,
977        c: *const fmpz,
978        ctx: *const fmpz_mpoly_ctx_struct,
979    );
980    pub fn fmpz_mpoly_scalar_fmma(
981        A: *mut fmpz_mpoly_struct,
982        B: *const fmpz_mpoly_struct,
983        c: *const fmpz,
984        D: *const fmpz_mpoly_struct,
985        e: *const fmpz,
986        ctx: *const fmpz_mpoly_ctx_struct,
987    );
988    pub fn fmpz_mpoly_scalar_divexact_si(
989        A: *mut fmpz_mpoly_struct,
990        B: *const fmpz_mpoly_struct,
991        c: slong,
992        ctx: *const fmpz_mpoly_ctx_struct,
993    );
994    pub fn fmpz_mpoly_scalar_divexact_ui(
995        A: *mut fmpz_mpoly_struct,
996        B: *const fmpz_mpoly_struct,
997        c: ulong,
998        ctx: *const fmpz_mpoly_ctx_struct,
999    );
1000    pub fn fmpz_mpoly_scalar_divexact_fmpz(
1001        A: *mut fmpz_mpoly_struct,
1002        B: *const fmpz_mpoly_struct,
1003        c: *const fmpz,
1004        ctx: *const fmpz_mpoly_ctx_struct,
1005    );
1006    pub fn fmpz_mpoly_scalar_divides_si(
1007        A: *mut fmpz_mpoly_struct,
1008        B: *const fmpz_mpoly_struct,
1009        c: slong,
1010        ctx: *const fmpz_mpoly_ctx_struct,
1011    ) -> libc::c_int;
1012    pub fn fmpz_mpoly_scalar_divides_ui(
1013        A: *mut fmpz_mpoly_struct,
1014        B: *const fmpz_mpoly_struct,
1015        c: ulong,
1016        ctx: *const fmpz_mpoly_ctx_struct,
1017    ) -> libc::c_int;
1018    pub fn fmpz_mpoly_scalar_divides_fmpz(
1019        A: *mut fmpz_mpoly_struct,
1020        B: *const fmpz_mpoly_struct,
1021        c: *const fmpz,
1022        ctx: *const fmpz_mpoly_ctx_struct,
1023    ) -> libc::c_int;
1024    pub fn fmpz_mpoly_derivative(
1025        A: *mut fmpz_mpoly_struct,
1026        B: *const fmpz_mpoly_struct,
1027        var: slong,
1028        ctx: *const fmpz_mpoly_ctx_struct,
1029    );
1030    pub fn fmpz_mpoly_integral(
1031        A: *mut fmpz_mpoly_struct,
1032        scale: *mut fmpz,
1033        B: *const fmpz_mpoly_struct,
1034        var: slong,
1035        ctx: *const fmpz_mpoly_ctx_struct,
1036    );
1037    pub fn _fmpz_pow_ui_is_not_feasible(bbits: flint_bitcnt_t, e: ulong) -> libc::c_int;
1038    pub fn _fmpz_pow_fmpz_is_not_feasible(bbits: flint_bitcnt_t, e: *const fmpz) -> libc::c_int;
1039    pub fn fmpz_mpoly_evaluate_all_fmpz(
1040        ev: *mut fmpz,
1041        A: *const fmpz_mpoly_struct,
1042        vals: *const *mut fmpz,
1043        ctx: *const fmpz_mpoly_ctx_struct,
1044    ) -> libc::c_int;
1045    pub fn fmpz_mpoly_evaluate_all_nmod(
1046        A: *const fmpz_mpoly_struct,
1047        alphas: *const ulong,
1048        ctx: *const fmpz_mpoly_ctx_struct,
1049        fpctx: nmod_t,
1050    ) -> ulong;
1051    pub fn fmpz_mpoly_evaluate_all_fmpz_mod(
1052        ev: *mut fmpz,
1053        A: *const fmpz_mpoly_struct,
1054        alphas: *const fmpz,
1055        ctx: *const fmpz_mpoly_ctx_struct,
1056        fpctx: *const fmpz_mod_ctx_struct,
1057    );
1058    pub fn fmpz_mpoly_evaluate_acb(
1059        res: *mut acb_struct,
1060        pol: *const fmpz_mpoly_struct,
1061        x: acb_srcptr,
1062        prec: slong,
1063        ctx: *const fmpz_mpoly_ctx_struct,
1064    );
1065    pub fn fmpz_mpoly_evaluate_one_fmpz(
1066        A: *mut fmpz_mpoly_struct,
1067        B: *const fmpz_mpoly_struct,
1068        var: slong,
1069        val: *const fmpz,
1070        ctx: *const fmpz_mpoly_ctx_struct,
1071    ) -> libc::c_int;
1072    pub fn fmpz_mpoly_compose_fmpz_poly(
1073        A: *mut fmpz_poly_struct,
1074        B: *const fmpz_mpoly_struct,
1075        C: *const *mut fmpz_poly_struct,
1076        ctxB: *const fmpz_mpoly_ctx_struct,
1077    ) -> libc::c_int;
1078    pub fn _fmpz_mpoly_compose_mat(
1079        A: *mut fmpz_mpoly_struct,
1080        B: *const fmpz_mpoly_struct,
1081        M: *const fmpz_mat_struct,
1082        ctxB: *const fmpz_mpoly_ctx_struct,
1083        ctxAC: *const fmpz_mpoly_ctx_struct,
1084    );
1085    pub fn fmpz_mpoly_compose_fmpz_mpoly_geobucket(
1086        A: *mut fmpz_mpoly_struct,
1087        B: *const fmpz_mpoly_struct,
1088        C: *const *mut fmpz_mpoly_struct,
1089        ctxB: *const fmpz_mpoly_ctx_struct,
1090        ctxAC: *const fmpz_mpoly_ctx_struct,
1091    ) -> libc::c_int;
1092    pub fn fmpz_mpoly_compose_fmpz_mpoly_horner(
1093        A: *mut fmpz_mpoly_struct,
1094        B: *const fmpz_mpoly_struct,
1095        C: *const *mut fmpz_mpoly_struct,
1096        ctxB: *const fmpz_mpoly_ctx_struct,
1097        ctxAC: *const fmpz_mpoly_ctx_struct,
1098    ) -> libc::c_int;
1099    pub fn fmpz_mpoly_compose_fmpz_mpoly(
1100        A: *mut fmpz_mpoly_struct,
1101        B: *const fmpz_mpoly_struct,
1102        C: *const *mut fmpz_mpoly_struct,
1103        ctxB: *const fmpz_mpoly_ctx_struct,
1104        ctxAC: *const fmpz_mpoly_ctx_struct,
1105    ) -> libc::c_int;
1106    pub fn fmpz_mpoly_compose_fmpz_mpoly_gen(
1107        A: *mut fmpz_mpoly_struct,
1108        B: *const fmpz_mpoly_struct,
1109        c: *const slong,
1110        ctxB: *const fmpz_mpoly_ctx_struct,
1111        ctxAC: *const fmpz_mpoly_ctx_struct,
1112    );
1113    pub fn fmpz_mpoly_mul(
1114        A: *mut fmpz_mpoly_struct,
1115        B: *const fmpz_mpoly_struct,
1116        C: *const fmpz_mpoly_struct,
1117        ctx: *const fmpz_mpoly_ctx_struct,
1118    );
1119    pub fn fmpz_mpoly_mul_monomial(
1120        A: *mut fmpz_mpoly_struct,
1121        B: *const fmpz_mpoly_struct,
1122        C: *const fmpz_mpoly_struct,
1123        ctx: *const fmpz_mpoly_ctx_struct,
1124    );
1125    pub fn _fmpz_mpoly_mul_johnson_maxfields(
1126        A: *mut fmpz_mpoly_struct,
1127        B: *const fmpz_mpoly_struct,
1128        maxBfields: *mut fmpz,
1129        C: *const fmpz_mpoly_struct,
1130        maxCfields: *mut fmpz,
1131        ctx: *const fmpz_mpoly_ctx_struct,
1132    );
1133    pub fn _fmpz_mpoly_mul_johnson(
1134        poly1: *mut *mut fmpz,
1135        exp1: *mut *mut ulong,
1136        alloc: *mut slong,
1137        poly2: *const fmpz,
1138        exp2: *const ulong,
1139        len2: slong,
1140        poly3: *const fmpz,
1141        exp3: *const ulong,
1142        len3: slong,
1143        bits: flint_bitcnt_t,
1144        N: slong,
1145        cmpmask: *const ulong,
1146    ) -> slong;
1147    pub fn fmpz_mpoly_mul_johnson(
1148        A: *mut fmpz_mpoly_struct,
1149        B: *const fmpz_mpoly_struct,
1150        C: *const fmpz_mpoly_struct,
1151        ctx: *const fmpz_mpoly_ctx_struct,
1152    );
1153    pub fn _fmpz_mpoly_mul_heap_threaded_pool_maxfields(
1154        A: *mut fmpz_mpoly_struct,
1155        B: *const fmpz_mpoly_struct,
1156        maxBfields: *mut fmpz,
1157        C: *const fmpz_mpoly_struct,
1158        maxCfields: *mut fmpz,
1159        ctx: *const fmpz_mpoly_ctx_struct,
1160        handles: *const thread_pool_handle,
1161        num_handles: slong,
1162    );
1163    pub fn fmpz_mpoly_mul_heap_threaded(
1164        A: *mut fmpz_mpoly_struct,
1165        B: *const fmpz_mpoly_struct,
1166        C: *const fmpz_mpoly_struct,
1167        ctx: *const fmpz_mpoly_ctx_struct,
1168    );
1169    pub fn fmpz_mpoly_mul_array(
1170        A: *mut fmpz_mpoly_struct,
1171        B: *const fmpz_mpoly_struct,
1172        C: *const fmpz_mpoly_struct,
1173        ctx: *const fmpz_mpoly_ctx_struct,
1174    ) -> libc::c_int;
1175    pub fn fmpz_mpoly_mul_array_threaded(
1176        A: *mut fmpz_mpoly_struct,
1177        B: *const fmpz_mpoly_struct,
1178        C: *const fmpz_mpoly_struct,
1179        ctx: *const fmpz_mpoly_ctx_struct,
1180    ) -> libc::c_int;
1181    pub fn _fmpz_mpoly_mul_dense(
1182        P: *mut fmpz_mpoly_struct,
1183        A: *const fmpz_mpoly_struct,
1184        maxAfields: *mut fmpz,
1185        B: *const fmpz_mpoly_struct,
1186        maxBfields: *mut fmpz,
1187        ctx: *const fmpz_mpoly_ctx_struct,
1188    ) -> libc::c_int;
1189    pub fn fmpz_mpoly_mul_dense(
1190        A: *mut fmpz_mpoly_struct,
1191        B: *const fmpz_mpoly_struct,
1192        C: *const fmpz_mpoly_struct,
1193        ctx: *const fmpz_mpoly_ctx_struct,
1194    ) -> libc::c_int;
1195    pub fn _fmpz_mpoly_mul_array_DEG(
1196        A: *mut fmpz_mpoly_struct,
1197        B: *const fmpz_mpoly_struct,
1198        maxBfields: *mut fmpz,
1199        C: *const fmpz_mpoly_struct,
1200        maxCfields: *mut fmpz,
1201        ctx: *const fmpz_mpoly_ctx_struct,
1202    ) -> libc::c_int;
1203    pub fn _fmpz_mpoly_mul_array_LEX(
1204        A: *mut fmpz_mpoly_struct,
1205        B: *const fmpz_mpoly_struct,
1206        maxBfields: *mut fmpz,
1207        C: *const fmpz_mpoly_struct,
1208        maxCfields: *mut fmpz,
1209        ctx: *const fmpz_mpoly_ctx_struct,
1210    ) -> libc::c_int;
1211    pub fn _fmpz_mpoly_mul_array_threaded_pool_DEG(
1212        A: *mut fmpz_mpoly_struct,
1213        B: *const fmpz_mpoly_struct,
1214        maxBfields: *mut fmpz,
1215        C: *const fmpz_mpoly_struct,
1216        maxCfields: *mut fmpz,
1217        ctx: *const fmpz_mpoly_ctx_struct,
1218        handles: *const thread_pool_handle,
1219        num_handles: slong,
1220    ) -> libc::c_int;
1221    pub fn _fmpz_mpoly_mul_array_threaded_pool_LEX(
1222        A: *mut fmpz_mpoly_struct,
1223        B: *const fmpz_mpoly_struct,
1224        maxBfields: *mut fmpz,
1225        C: *const fmpz_mpoly_struct,
1226        maxCfields: *mut fmpz,
1227        ctx: *const fmpz_mpoly_ctx_struct,
1228        handles: *const thread_pool_handle,
1229        num_handles: slong,
1230    ) -> libc::c_int;
1231    pub fn fmpz_mpoly_pow_ui(
1232        A: *mut fmpz_mpoly_struct,
1233        B: *const fmpz_mpoly_struct,
1234        k: ulong,
1235        ctx: *const fmpz_mpoly_ctx_struct,
1236    ) -> libc::c_int;
1237    pub fn fmpz_mpoly_pow_fmpz(
1238        A: *mut fmpz_mpoly_struct,
1239        B: *const fmpz_mpoly_struct,
1240        k: *const fmpz,
1241        ctx: *const fmpz_mpoly_ctx_struct,
1242    ) -> libc::c_int;
1243    pub fn fmpz_mpoly_divides(
1244        Q: *mut fmpz_mpoly_struct,
1245        A: *const fmpz_mpoly_struct,
1246        B: *const fmpz_mpoly_struct,
1247        ctx: *const fmpz_mpoly_ctx_struct,
1248    ) -> libc::c_int;
1249    pub fn fmpz_mpoly_divides_monagan_pearce(
1250        Q: *mut fmpz_mpoly_struct,
1251        A: *const fmpz_mpoly_struct,
1252        B: *const fmpz_mpoly_struct,
1253        ctx: *const fmpz_mpoly_ctx_struct,
1254    ) -> libc::c_int;
1255    pub fn fmpz_mpoly_divides_heap_threaded(
1256        Q: *mut fmpz_mpoly_struct,
1257        A: *const fmpz_mpoly_struct,
1258        B: *const fmpz_mpoly_struct,
1259        ctx: *const fmpz_mpoly_ctx_struct,
1260    ) -> libc::c_int;
1261    pub fn _fmpz_mpoly_divides_heap_threaded_pool(
1262        Q: *mut fmpz_mpoly_struct,
1263        A: *const fmpz_mpoly_struct,
1264        B: *const fmpz_mpoly_struct,
1265        ctx: *const fmpz_mpoly_ctx_struct,
1266        handles: *const thread_pool_handle,
1267        num_handles: slong,
1268    ) -> libc::c_int;
1269    pub fn _fmpz_mpoly_divides_array(
1270        poly1: *mut *mut fmpz,
1271        exp1: *mut *mut ulong,
1272        alloc: *mut slong,
1273        poly2: *const fmpz,
1274        exp2: *const ulong,
1275        len2: slong,
1276        poly3: *const fmpz,
1277        exp3: *const ulong,
1278        len3: slong,
1279        mults: *mut slong,
1280        num: slong,
1281        bits: slong,
1282    ) -> slong;
1283    pub fn fmpz_mpoly_divides_array(
1284        poly1: *mut fmpz_mpoly_struct,
1285        poly2: *const fmpz_mpoly_struct,
1286        poly3: *const fmpz_mpoly_struct,
1287        ctx: *const fmpz_mpoly_ctx_struct,
1288    ) -> libc::c_int;
1289    pub fn mpoly_divides_select_exps(
1290        S: *mut fmpz_mpoly_struct,
1291        zctx: *mut fmpz_mpoly_ctx_struct,
1292        nworkers: slong,
1293        Aexp: *mut ulong,
1294        Alen: slong,
1295        Bexp: *mut ulong,
1296        Blen: slong,
1297        bits: flint_bitcnt_t,
1298    ) -> libc::c_int;
1299    pub fn _fmpz_mpoly_divides_monagan_pearce(
1300        poly1: *mut *mut fmpz,
1301        exp1: *mut *mut ulong,
1302        alloc: *mut slong,
1303        poly2: *const fmpz,
1304        exp2: *const ulong,
1305        len2: slong,
1306        poly3: *const fmpz,
1307        exp3: *const ulong,
1308        len3: slong,
1309        bits: flint_bitcnt_t,
1310        N: slong,
1311        cmpmask: *const ulong,
1312    ) -> slong;
1313    pub fn fmpz_mpoly_divrem(
1314        Q: *mut fmpz_mpoly_struct,
1315        R: *mut fmpz_mpoly_struct,
1316        A: *const fmpz_mpoly_struct,
1317        B: *const fmpz_mpoly_struct,
1318        ctx: *const fmpz_mpoly_ctx_struct,
1319    );
1320    pub fn fmpz_mpoly_quasidivrem(
1321        scale: *mut fmpz,
1322        Q: *mut fmpz_mpoly_struct,
1323        R: *mut fmpz_mpoly_struct,
1324        A: *const fmpz_mpoly_struct,
1325        B: *const fmpz_mpoly_struct,
1326        ctx: *const fmpz_mpoly_ctx_struct,
1327    );
1328    pub fn fmpz_mpoly_div(
1329        Q: *mut fmpz_mpoly_struct,
1330        A: *const fmpz_mpoly_struct,
1331        B: *const fmpz_mpoly_struct,
1332        ctx: *const fmpz_mpoly_ctx_struct,
1333    );
1334    pub fn fmpz_mpoly_quasidiv(
1335        scale: *mut fmpz,
1336        Q: *mut fmpz_mpoly_struct,
1337        A: *const fmpz_mpoly_struct,
1338        B: *const fmpz_mpoly_struct,
1339        ctx: *const fmpz_mpoly_ctx_struct,
1340    );
1341    pub fn fmpz_mpoly_divrem_ideal(
1342        Q: *mut *mut fmpz_mpoly_struct,
1343        R: *mut fmpz_mpoly_struct,
1344        A: *const fmpz_mpoly_struct,
1345        B: *const *mut fmpz_mpoly_struct,
1346        len: slong,
1347        ctx: *const fmpz_mpoly_ctx_struct,
1348    );
1349    pub fn fmpz_mpoly_quasidivrem_ideal(
1350        scale: *mut fmpz,
1351        Q: *mut *mut fmpz_mpoly_struct,
1352        R: *mut fmpz_mpoly_struct,
1353        A: *const fmpz_mpoly_struct,
1354        B: *const *mut fmpz_mpoly_struct,
1355        len: slong,
1356        ctx: *const fmpz_mpoly_ctx_struct,
1357    );
1358    #[link_name = "fmpz_mpoly_divexact__extern"]
1359    pub fn fmpz_mpoly_divexact(
1360        Q: *mut fmpz_mpoly_struct,
1361        A: *const fmpz_mpoly_struct,
1362        B: *const fmpz_mpoly_struct,
1363        ctx: *const fmpz_mpoly_ctx_struct,
1364    );
1365    pub fn _fmpz_mpoly_div_monagan_pearce(
1366        polyq: *mut *mut fmpz,
1367        expq: *mut *mut ulong,
1368        allocq: *mut slong,
1369        poly2: *const fmpz,
1370        exp2: *const ulong,
1371        len2: slong,
1372        poly3: *const fmpz,
1373        exp3: *const ulong,
1374        len3: slong,
1375        bits: slong,
1376        N: slong,
1377        cmpmask: *const ulong,
1378    ) -> slong;
1379    pub fn fmpz_mpoly_div_monagan_pearce(
1380        q: *mut fmpz_mpoly_struct,
1381        poly2: *const fmpz_mpoly_struct,
1382        poly3: *const fmpz_mpoly_struct,
1383        ctx: *const fmpz_mpoly_ctx_struct,
1384    );
1385    pub fn _fmpz_mpoly_divrem_monagan_pearce(
1386        lenr: *mut slong,
1387        polyq: *mut *mut fmpz,
1388        expq: *mut *mut ulong,
1389        allocq: *mut slong,
1390        polyr: *mut *mut fmpz,
1391        expr: *mut *mut ulong,
1392        allocr: *mut slong,
1393        poly2: *const fmpz,
1394        exp2: *const ulong,
1395        len2: slong,
1396        poly3: *const fmpz,
1397        exp3: *const ulong,
1398        len3: slong,
1399        bits: slong,
1400        N: slong,
1401        cmpmask: *const ulong,
1402    ) -> slong;
1403    pub fn fmpz_mpoly_divrem_monagan_pearce(
1404        q: *mut fmpz_mpoly_struct,
1405        r: *mut fmpz_mpoly_struct,
1406        poly2: *const fmpz_mpoly_struct,
1407        poly3: *const fmpz_mpoly_struct,
1408        ctx: *const fmpz_mpoly_ctx_struct,
1409    );
1410    pub fn _fmpz_mpoly_divrem_array(
1411        lenr: *mut slong,
1412        polyq: *mut *mut fmpz,
1413        expq: *mut *mut ulong,
1414        allocq: *mut slong,
1415        polyr: *mut *mut fmpz,
1416        expr: *mut *mut ulong,
1417        allocr: *mut slong,
1418        poly2: *const fmpz,
1419        exp2: *const ulong,
1420        len2: slong,
1421        poly3: *const fmpz,
1422        exp3: *const ulong,
1423        len3: slong,
1424        mults: *mut slong,
1425        num: slong,
1426        bits: slong,
1427    ) -> slong;
1428    pub fn fmpz_mpoly_divrem_array(
1429        q: *mut fmpz_mpoly_struct,
1430        r: *mut fmpz_mpoly_struct,
1431        poly2: *const fmpz_mpoly_struct,
1432        poly3: *const fmpz_mpoly_struct,
1433        ctx: *const fmpz_mpoly_ctx_struct,
1434    ) -> libc::c_int;
1435    pub fn fmpz_mpoly_quasidivrem_heap(
1436        scale: *mut fmpz,
1437        q: *mut fmpz_mpoly_struct,
1438        r: *mut fmpz_mpoly_struct,
1439        poly2: *const fmpz_mpoly_struct,
1440        poly3: *const fmpz_mpoly_struct,
1441        ctx: *const fmpz_mpoly_ctx_struct,
1442    );
1443    pub fn fmpz_mpoly_quasidiv_heap(
1444        scale: *mut fmpz,
1445        q: *mut fmpz_mpoly_struct,
1446        poly2: *const fmpz_mpoly_struct,
1447        poly3: *const fmpz_mpoly_struct,
1448        ctx: *const fmpz_mpoly_ctx_struct,
1449    );
1450    pub fn _fmpz_mpoly_divrem_ideal_monagan_pearce(
1451        polyq: *mut *mut fmpz_mpoly_struct,
1452        polyr: *mut *mut fmpz,
1453        expr: *mut *mut ulong,
1454        allocr: *mut slong,
1455        poly2: *const fmpz,
1456        exp2: *const ulong,
1457        len2: slong,
1458        poly3: *const *mut fmpz_mpoly_struct,
1459        exp3: *const *mut ulong,
1460        len: slong,
1461        N: slong,
1462        bits: slong,
1463        ctx: *const fmpz_mpoly_ctx_struct,
1464        cmpmask: *const ulong,
1465    ) -> slong;
1466    pub fn fmpz_mpoly_divrem_ideal_monagan_pearce(
1467        q: *mut *mut fmpz_mpoly_struct,
1468        r: *mut fmpz_mpoly_struct,
1469        poly2: *const fmpz_mpoly_struct,
1470        poly3: *const *mut fmpz_mpoly_struct,
1471        len: slong,
1472        ctx: *const fmpz_mpoly_ctx_struct,
1473    );
1474    pub fn fmpz_mpoly_quasidivrem_ideal_heap(
1475        scale: *mut fmpz,
1476        q: *mut *mut fmpz_mpoly_struct,
1477        r: *mut fmpz_mpoly_struct,
1478        poly2: *const fmpz_mpoly_struct,
1479        poly3: *const *mut fmpz_mpoly_struct,
1480        len: slong,
1481        ctx: *const fmpz_mpoly_ctx_struct,
1482    );
1483    pub fn _fmpz_mpoly_sqrt_heap(
1484        polyq: *mut *mut fmpz,
1485        expq: *mut *mut ulong,
1486        allocq: *mut slong,
1487        poly2: *const fmpz,
1488        exp2: *const ulong,
1489        len2: slong,
1490        bits: flint_bitcnt_t,
1491        mctx: *const mpoly_ctx_struct,
1492        check: libc::c_int,
1493    ) -> slong;
1494    pub fn fmpz_mpoly_sqrt_heap(
1495        q: *mut fmpz_mpoly_struct,
1496        poly2: *const fmpz_mpoly_struct,
1497        ctx: *const fmpz_mpoly_ctx_struct,
1498        check: libc::c_int,
1499    ) -> libc::c_int;
1500    #[link_name = "fmpz_mpoly_sqrt__extern"]
1501    pub fn fmpz_mpoly_sqrt(
1502        q: *mut fmpz_mpoly_struct,
1503        poly2: *const fmpz_mpoly_struct,
1504        ctx: *const fmpz_mpoly_ctx_struct,
1505    ) -> libc::c_int;
1506    #[link_name = "fmpz_mpoly_is_square__extern"]
1507    pub fn fmpz_mpoly_is_square(
1508        poly2: *const fmpz_mpoly_struct,
1509        ctx: *const fmpz_mpoly_ctx_struct,
1510    ) -> libc::c_int;
1511    pub fn fmpz_mpoly_term_content(
1512        M: *mut fmpz_mpoly_struct,
1513        A: *const fmpz_mpoly_struct,
1514        ctx: *const fmpz_mpoly_ctx_struct,
1515    );
1516    pub fn fmpz_mpoly_primitive_part(
1517        res: *mut fmpz_mpoly_struct,
1518        f: *const fmpz_mpoly_struct,
1519        ctx: *const fmpz_mpoly_ctx_struct,
1520    );
1521    pub fn fmpz_mpoly_content_vars(
1522        g: *mut fmpz_mpoly_struct,
1523        A: *const fmpz_mpoly_struct,
1524        vars: *mut slong,
1525        vars_length: slong,
1526        ctx: *const fmpz_mpoly_ctx_struct,
1527    ) -> libc::c_int;
1528    pub fn fmpz_mpoly_deflation(
1529        shift: *mut fmpz,
1530        stride: *mut fmpz,
1531        A: *const fmpz_mpoly_struct,
1532        ctx: *const fmpz_mpoly_ctx_struct,
1533    );
1534    pub fn fmpz_mpoly_deflate(
1535        A: *mut fmpz_mpoly_struct,
1536        B: *const fmpz_mpoly_struct,
1537        shift: *const fmpz,
1538        stride: *const fmpz,
1539        ctx: *const fmpz_mpoly_ctx_struct,
1540    );
1541    pub fn fmpz_mpoly_inflate(
1542        A: *mut fmpz_mpoly_struct,
1543        B: *const fmpz_mpoly_struct,
1544        shift: *const fmpz,
1545        stride: *const fmpz,
1546        ctx: *const fmpz_mpoly_ctx_struct,
1547    );
1548    pub fn fmpz_mpoly_gcd_cofactors(
1549        G: *mut fmpz_mpoly_struct,
1550        Abar: *mut fmpz_mpoly_struct,
1551        Bbar: *mut fmpz_mpoly_struct,
1552        A: *const fmpz_mpoly_struct,
1553        B: *const fmpz_mpoly_struct,
1554        ctx: *const fmpz_mpoly_ctx_struct,
1555    ) -> libc::c_int;
1556    pub fn fmpz_mpoly_gcd_hensel(
1557        G: *mut fmpz_mpoly_struct,
1558        A: *const fmpz_mpoly_struct,
1559        B: *const fmpz_mpoly_struct,
1560        ctx: *const fmpz_mpoly_ctx_struct,
1561    ) -> libc::c_int;
1562    pub fn fmpz_mpoly_gcd_brown(
1563        G: *mut fmpz_mpoly_struct,
1564        A: *const fmpz_mpoly_struct,
1565        B: *const fmpz_mpoly_struct,
1566        ctx: *const fmpz_mpoly_ctx_struct,
1567    ) -> libc::c_int;
1568    pub fn fmpz_mpoly_gcd_subresultant(
1569        G: *mut fmpz_mpoly_struct,
1570        A: *const fmpz_mpoly_struct,
1571        B: *const fmpz_mpoly_struct,
1572        ctx: *const fmpz_mpoly_ctx_struct,
1573    ) -> libc::c_int;
1574    pub fn fmpz_mpoly_gcd_zippel(
1575        G: *mut fmpz_mpoly_struct,
1576        A: *const fmpz_mpoly_struct,
1577        B: *const fmpz_mpoly_struct,
1578        ctx: *const fmpz_mpoly_ctx_struct,
1579    ) -> libc::c_int;
1580    pub fn fmpz_mpoly_gcd_zippel2(
1581        G: *mut fmpz_mpoly_struct,
1582        A: *const fmpz_mpoly_struct,
1583        B: *const fmpz_mpoly_struct,
1584        ctx: *const fmpz_mpoly_ctx_struct,
1585    ) -> libc::c_int;
1586    pub fn fmpz_mpoly_gcd(
1587        G: *mut fmpz_mpoly_struct,
1588        A: *const fmpz_mpoly_struct,
1589        B: *const fmpz_mpoly_struct,
1590        ctx: *const fmpz_mpoly_ctx_struct,
1591    ) -> libc::c_int;
1592    pub fn fmpz_mpoly_univar_init(
1593        A: *mut fmpz_mpoly_univar_struct,
1594        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
1595    );
1596    pub fn fmpz_mpoly_univar_clear(
1597        A: *mut fmpz_mpoly_univar_struct,
1598        ctx: *const fmpz_mpoly_ctx_struct,
1599    );
1600    pub fn fmpz_mpoly_univar_fit_length(
1601        A: *mut fmpz_mpoly_univar_struct,
1602        length: slong,
1603        ctx: *const fmpz_mpoly_ctx_struct,
1604    );
1605    pub fn fmpz_mpoly_univar_print_pretty(
1606        A: *const fmpz_mpoly_univar_struct,
1607        x: *mut *const libc::c_char,
1608        ctx: *const fmpz_mpoly_ctx_struct,
1609    );
1610    pub fn fmpz_mpoly_univar_assert_canonical(
1611        A: *mut fmpz_mpoly_univar_struct,
1612        ctx: *const fmpz_mpoly_ctx_struct,
1613    );
1614    #[link_name = "fmpz_mpoly_univar_zero__extern"]
1615    pub fn fmpz_mpoly_univar_zero(
1616        A: *mut fmpz_mpoly_univar_struct,
1617        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
1618    );
1619    pub fn fmpz_mpoly_univar_set_coeff_ui(
1620        A: *mut fmpz_mpoly_univar_struct,
1621        e: ulong,
1622        c: *const fmpz_mpoly_struct,
1623        ctx: *const fmpz_mpoly_ctx_struct,
1624    );
1625    pub fn fmpz_mpoly_to_univar(
1626        A: *mut fmpz_mpoly_univar_struct,
1627        B: *const fmpz_mpoly_struct,
1628        var: slong,
1629        ctx: *const fmpz_mpoly_ctx_struct,
1630    );
1631    pub fn _fmpz_mpoly_from_univar(
1632        A: *mut fmpz_mpoly_struct,
1633        Abits: flint_bitcnt_t,
1634        B: *const fmpz_mpoly_univar_struct,
1635        var: slong,
1636        ctx: *const fmpz_mpoly_ctx_struct,
1637    );
1638    pub fn fmpz_mpoly_from_univar(
1639        A: *mut fmpz_mpoly_struct,
1640        B: *const fmpz_mpoly_univar_struct,
1641        var: slong,
1642        ctx: *const fmpz_mpoly_ctx_struct,
1643    );
1644    #[link_name = "fmpz_mpoly_univar_swap__extern"]
1645    pub fn fmpz_mpoly_univar_swap(
1646        A: *mut fmpz_mpoly_univar_struct,
1647        B: *mut fmpz_mpoly_univar_struct,
1648        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
1649    );
1650    pub fn fmpz_mpoly_univar_degree_fits_si(
1651        A: *const fmpz_mpoly_univar_struct,
1652        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
1653    ) -> libc::c_int;
1654    #[link_name = "fmpz_mpoly_univar_length__extern"]
1655    pub fn fmpz_mpoly_univar_length(
1656        A: *const fmpz_mpoly_univar_struct,
1657        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
1658    ) -> slong;
1659    pub fn fmpz_mpoly_univar_get_term_exp_si(
1660        A: *mut fmpz_mpoly_univar_struct,
1661        i: slong,
1662        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
1663    ) -> slong;
1664    #[link_name = "fmpz_mpoly_univar_get_term_coeff__extern"]
1665    pub fn fmpz_mpoly_univar_get_term_coeff(
1666        c: *mut fmpz_mpoly_struct,
1667        A: *const fmpz_mpoly_univar_struct,
1668        i: slong,
1669        ctx: *const fmpz_mpoly_ctx_struct,
1670    );
1671    #[link_name = "fmpz_mpoly_univar_swap_term_coeff__extern"]
1672    pub fn fmpz_mpoly_univar_swap_term_coeff(
1673        c: *mut fmpz_mpoly_struct,
1674        A: *mut fmpz_mpoly_univar_struct,
1675        i: slong,
1676        ctx: *const fmpz_mpoly_ctx_struct,
1677    );
1678    pub fn fmpz_mpoly_univar_pseudo_gcd(
1679        gx: *mut fmpz_mpoly_univar_struct,
1680        ax: *const fmpz_mpoly_univar_struct,
1681        bx: *const fmpz_mpoly_univar_struct,
1682        ctx: *const fmpz_mpoly_ctx_struct,
1683    ) -> libc::c_int;
1684    pub fn fmpz_mpoly_univar_resultant(
1685        d: *mut fmpz_mpoly_struct,
1686        ax: *const fmpz_mpoly_univar_struct,
1687        bx: *const fmpz_mpoly_univar_struct,
1688        ctx: *const fmpz_mpoly_ctx_struct,
1689    ) -> libc::c_int;
1690    pub fn fmpz_mpoly_univar_discriminant(
1691        d: *mut fmpz_mpoly_struct,
1692        fx: *const fmpz_mpoly_univar_struct,
1693        ctx: *const fmpz_mpoly_ctx_struct,
1694    ) -> libc::c_int;
1695    pub fn fmpz_mpoly_resultant(
1696        R: *mut fmpz_mpoly_struct,
1697        A: *const fmpz_mpoly_struct,
1698        B: *const fmpz_mpoly_struct,
1699        var: slong,
1700        ctx: *const fmpz_mpoly_ctx_struct,
1701    ) -> libc::c_int;
1702    pub fn fmpz_mpoly_discriminant(
1703        R: *mut fmpz_mpoly_struct,
1704        A: *const fmpz_mpoly_struct,
1705        var: slong,
1706        ctx: *const fmpz_mpoly_ctx_struct,
1707    ) -> libc::c_int;
1708    pub fn fmpz_mpoly_symmetric_gens(
1709        res: *mut fmpz_mpoly_struct,
1710        k: ulong,
1711        vars: *mut slong,
1712        n: slong,
1713        ctx: *const fmpz_mpoly_ctx_struct,
1714    );
1715    pub fn fmpz_mpoly_symmetric(
1716        res: *mut fmpz_mpoly_struct,
1717        k: ulong,
1718        ctx: *const fmpz_mpoly_ctx_struct,
1719    );
1720    pub fn fmpz_mpoly_vec_init(
1721        vec: *mut fmpz_mpoly_vec_struct,
1722        len: slong,
1723        ctx: *const fmpz_mpoly_ctx_struct,
1724    );
1725    pub fn fmpz_mpoly_vec_print(F: *const fmpz_mpoly_vec_struct, ctx: *const fmpz_mpoly_ctx_struct);
1726    pub fn fmpz_mpoly_vec_swap(
1727        x: *mut fmpz_mpoly_vec_struct,
1728        y: *mut fmpz_mpoly_vec_struct,
1729        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
1730    );
1731    pub fn fmpz_mpoly_vec_fit_length(
1732        vec: *mut fmpz_mpoly_vec_struct,
1733        len: slong,
1734        ctx: *const fmpz_mpoly_ctx_struct,
1735    );
1736    pub fn fmpz_mpoly_vec_clear(vec: *mut fmpz_mpoly_vec_struct, ctx: *const fmpz_mpoly_ctx_struct);
1737    pub fn fmpz_mpoly_vec_set(
1738        dest: *mut fmpz_mpoly_vec_struct,
1739        src: *const fmpz_mpoly_vec_struct,
1740        ctx: *const fmpz_mpoly_ctx_struct,
1741    );
1742    pub fn fmpz_mpoly_vec_append(
1743        vec: *mut fmpz_mpoly_vec_struct,
1744        f: *const fmpz_mpoly_struct,
1745        ctx: *const fmpz_mpoly_ctx_struct,
1746    );
1747    pub fn fmpz_mpoly_vec_insert_unique(
1748        vec: *mut fmpz_mpoly_vec_struct,
1749        f: *const fmpz_mpoly_struct,
1750        ctx: *const fmpz_mpoly_ctx_struct,
1751    ) -> slong;
1752    pub fn fmpz_mpoly_vec_set_length(
1753        vec: *mut fmpz_mpoly_vec_struct,
1754        len: slong,
1755        ctx: *const fmpz_mpoly_ctx_struct,
1756    );
1757    pub fn fmpz_mpoly_vec_randtest_not_zero(
1758        vec: *mut fmpz_mpoly_vec_struct,
1759        state: *mut flint_rand_struct,
1760        len: slong,
1761        poly_len: slong,
1762        bits: slong,
1763        exp_bound: ulong,
1764        ctx: *mut fmpz_mpoly_ctx_struct,
1765    );
1766    pub fn fmpz_mpoly_spoly(
1767        res: *mut fmpz_mpoly_struct,
1768        f: *const fmpz_mpoly_struct,
1769        g: *const fmpz_mpoly_struct,
1770        ctx: *const fmpz_mpoly_ctx_struct,
1771    );
1772    pub fn fmpz_mpoly_vec_set_primitive_unique(
1773        G: *mut fmpz_mpoly_vec_struct,
1774        F: *const fmpz_mpoly_vec_struct,
1775        ctx: *const fmpz_mpoly_ctx_struct,
1776    );
1777    pub fn fmpz_mpoly_reduction_primitive_part(
1778        res: *mut fmpz_mpoly_struct,
1779        f: *const fmpz_mpoly_struct,
1780        Iv: *const fmpz_mpoly_vec_struct,
1781        ctx: *const fmpz_mpoly_ctx_struct,
1782    );
1783    pub fn fmpz_mpoly_vec_is_groebner(
1784        G: *const fmpz_mpoly_vec_struct,
1785        F: *const fmpz_mpoly_vec_struct,
1786        ctx: *const fmpz_mpoly_ctx_struct,
1787    ) -> libc::c_int;
1788    pub fn fmpz_mpoly_buchberger_naive(
1789        G: *mut fmpz_mpoly_vec_struct,
1790        F: *const fmpz_mpoly_vec_struct,
1791        ctx: *const fmpz_mpoly_ctx_struct,
1792    );
1793    pub fn fmpz_mpoly_buchberger_naive_with_limits(
1794        G: *mut fmpz_mpoly_vec_struct,
1795        F: *const fmpz_mpoly_vec_struct,
1796        ideal_len_limit: slong,
1797        poly_len_limit: slong,
1798        poly_bits_limit: slong,
1799        ctx: *const fmpz_mpoly_ctx_struct,
1800    ) -> libc::c_int;
1801    pub fn fmpz_mpoly_vec_autoreduction(
1802        H: *mut fmpz_mpoly_vec_struct,
1803        F: *const fmpz_mpoly_vec_struct,
1804        ctx: *const fmpz_mpoly_ctx_struct,
1805    );
1806    pub fn fmpz_mpoly_vec_autoreduction_groebner(
1807        H: *mut fmpz_mpoly_vec_struct,
1808        G: *const fmpz_mpoly_vec_struct,
1809        ctx: *const fmpz_mpoly_ctx_struct,
1810    );
1811    pub fn fmpz_mpoly_vec_is_autoreduced(
1812        G: *const fmpz_mpoly_vec_struct,
1813        ctx: *const fmpz_mpoly_ctx_struct,
1814    ) -> libc::c_int;
1815    #[doc = "Internal functions (guaranteed to change without notice)"]
1816    pub fn mpoly_void_ring_init_fmpz_mpoly_ctx(
1817        R: *mut _bindgen_ty_2,
1818        ctx: *const fmpz_mpoly_ctx_struct,
1819    );
1820    pub fn fmpz_mpoly_pow_fps(
1821        A: *mut fmpz_mpoly_struct,
1822        B: *const fmpz_mpoly_struct,
1823        k: ulong,
1824        ctx: *const fmpz_mpoly_ctx_struct,
1825    );
1826    pub fn fmpz_mpolyl_lead_coeff(
1827        c: *mut fmpz_mpoly_struct,
1828        A: *const fmpz_mpoly_struct,
1829        num_vars: slong,
1830        ctx: *const fmpz_mpoly_ctx_struct,
1831    );
1832    pub fn fmpz_mpolyl_content(
1833        g: *mut fmpz_mpoly_struct,
1834        A: *const fmpz_mpoly_struct,
1835        num_vars: slong,
1836        ctx: *const fmpz_mpoly_ctx_struct,
1837    ) -> libc::c_int;
1838    pub fn _fmpz_mpoly_to_fmpz_poly_deflate(
1839        A: *mut fmpz_poly_struct,
1840        B: *const fmpz_mpoly_struct,
1841        var: slong,
1842        Bshift: *const ulong,
1843        Bstride: *const ulong,
1844        ctx: *const fmpz_mpoly_ctx_struct,
1845    );
1846    pub fn fmpz_mpoly_to_fmpz_poly(
1847        poly1: *mut fmpz_poly_struct,
1848        poly1_shift: *mut slong,
1849        poly2: *const fmpz_mpoly_struct,
1850        var: slong,
1851        ctx: *const fmpz_mpoly_ctx_struct,
1852    );
1853    pub fn _fmpz_mpoly_from_fmpz_poly_inflate(
1854        A: *mut fmpz_mpoly_struct,
1855        Abits: flint_bitcnt_t,
1856        B: *const fmpz_poly_struct,
1857        var: slong,
1858        Ashift: *const ulong,
1859        Astride: *const ulong,
1860        ctx: *const fmpz_mpoly_ctx_struct,
1861    );
1862    pub fn fmpz_mpoly_from_fmpz_poly(
1863        poly1: *mut fmpz_mpoly_struct,
1864        poly2: *const fmpz_poly_struct,
1865        shift2: slong,
1866        var: slong,
1867        ctx: *const fmpz_mpoly_ctx_struct,
1868    );
1869    pub fn fmpz_mpoly_repack_bits(
1870        A: *mut fmpz_mpoly_struct,
1871        B: *const fmpz_mpoly_struct,
1872        Abits: flint_bitcnt_t,
1873        ctx: *const fmpz_mpoly_ctx_struct,
1874    ) -> libc::c_int;
1875    pub fn fmpz_mpoly_repack_bits_inplace(
1876        A: *mut fmpz_mpoly_struct,
1877        Abits: flint_bitcnt_t,
1878        ctx: *const fmpz_mpoly_ctx_struct,
1879    ) -> libc::c_int;
1880    pub fn fmpz_mpolyd_init(poly: *mut fmpz_mpolyd_struct, nvars: slong);
1881    pub fn fmpz_mpolyd_fit_length(poly: *mut fmpz_mpolyd_struct, len: slong);
1882    pub fn fmpz_mpolyd_clear(poly: *mut fmpz_mpolyd_struct);
1883    pub fn fmpz_pow_cache_init(T: *mut _bindgen_ty_3, val: *const fmpz);
1884    pub fn fmpz_pow_cache_clear(T: *mut _bindgen_ty_3);
1885    pub fn fmpz_pow_cache_mulpow_ui(
1886        a: *mut fmpz,
1887        b: *const fmpz,
1888        k: ulong,
1889        T: *mut _bindgen_ty_3,
1890    ) -> libc::c_int;
1891    pub fn fmpz_pow_cache_mulpow_fmpz(
1892        a: *mut fmpz,
1893        b: *const fmpz,
1894        k: *const fmpz,
1895        T: *mut _bindgen_ty_3,
1896    ) -> libc::c_int;
1897    pub fn fmpz_mpoly_to_mpoly_perm_deflate_threaded_pool(
1898        A: *mut fmpz_mpoly_struct,
1899        lctx: *const fmpz_mpoly_ctx_struct,
1900        B: *const fmpz_mpoly_struct,
1901        ctx: *const fmpz_mpoly_ctx_struct,
1902        perm: *const slong,
1903        shift: *const ulong,
1904        stride: *const ulong,
1905        handles: *const thread_pool_handle,
1906        num_handles: slong,
1907    );
1908    pub fn fmpz_mpoly_from_mpoly_perm_inflate(
1909        A: *mut fmpz_mpoly_struct,
1910        Abits: flint_bitcnt_t,
1911        ctx: *const fmpz_mpoly_ctx_struct,
1912        B: *const fmpz_mpoly_struct,
1913        lctx: *const fmpz_mpoly_ctx_struct,
1914        perm: *const slong,
1915        shift: *const ulong,
1916        stride: *const ulong,
1917    );
1918    pub fn fmpz_mpoly_height(
1919        max: *mut fmpz,
1920        A: *const fmpz_mpoly_struct,
1921        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
1922    );
1923    pub fn fmpz_mpoly_heights(
1924        max: *mut fmpz,
1925        sum: *mut fmpz,
1926        A: *const fmpz_mpoly_struct,
1927        UNUSED_ctx: *const fmpz_mpoly_ctx_struct,
1928    );
1929    pub fn fmpz_mpoly_geobucket_init(
1930        B: *mut fmpz_mpoly_geobucket_struct,
1931        ctx: *const fmpz_mpoly_ctx_struct,
1932    );
1933    pub fn fmpz_mpoly_geobucket_clear(
1934        B: *mut fmpz_mpoly_geobucket_struct,
1935        ctx: *const fmpz_mpoly_ctx_struct,
1936    );
1937    pub fn fmpz_mpoly_geobucket_empty(
1938        p: *mut fmpz_mpoly_struct,
1939        B: *mut fmpz_mpoly_geobucket_struct,
1940        ctx: *const fmpz_mpoly_ctx_struct,
1941    );
1942    pub fn fmpz_mpoly_geobucket_fit_length(
1943        B: *mut fmpz_mpoly_geobucket_struct,
1944        i: slong,
1945        ctx: *const fmpz_mpoly_ctx_struct,
1946    );
1947    pub fn fmpz_mpoly_geobucket_set(
1948        B: *mut fmpz_mpoly_geobucket_struct,
1949        p: *mut fmpz_mpoly_struct,
1950        ctx: *const fmpz_mpoly_ctx_struct,
1951    );
1952    pub fn fmpz_mpoly_geobucket_add(
1953        B: *mut fmpz_mpoly_geobucket_struct,
1954        p: *mut fmpz_mpoly_struct,
1955        ctx: *const fmpz_mpoly_ctx_struct,
1956    );
1957    pub fn fmpz_mpoly_geobucket_sub(
1958        B: *mut fmpz_mpoly_geobucket_struct,
1959        p: *mut fmpz_mpoly_struct,
1960        ctx: *const fmpz_mpoly_ctx_struct,
1961    );
1962    pub fn _fmpz_mpoly_mul_array_chunked_DEG(
1963        P: *mut fmpz_mpoly_struct,
1964        A: *const fmpz_mpoly_struct,
1965        B: *const fmpz_mpoly_struct,
1966        degb: ulong,
1967        ctx: *const fmpz_mpoly_ctx_struct,
1968    );
1969    pub fn _fmpz_mpoly_mul_array_chunked_LEX(
1970        P: *mut fmpz_mpoly_struct,
1971        A: *const fmpz_mpoly_struct,
1972        B: *const fmpz_mpoly_struct,
1973        mults: *const ulong,
1974        ctx: *const fmpz_mpoly_ctx_struct,
1975    );
1976    pub fn _fmpz_mpoly_addmul_array1_slong1(
1977        poly1: *mut ulong,
1978        poly2: *const slong,
1979        exp2: *const ulong,
1980        len2: slong,
1981        poly3: *const slong,
1982        exp3: *const ulong,
1983        len3: slong,
1984    );
1985    pub fn _fmpz_mpoly_addmul_array1_slong2(
1986        poly1: *mut ulong,
1987        poly2: *const slong,
1988        exp2: *const ulong,
1989        len2: slong,
1990        poly3: *const slong,
1991        exp3: *const ulong,
1992        len3: slong,
1993    );
1994    pub fn _fmpz_mpoly_addmul_array1_slong(
1995        poly1: *mut ulong,
1996        poly2: *const slong,
1997        exp2: *const ulong,
1998        len2: slong,
1999        poly3: *const slong,
2000        exp3: *const ulong,
2001        len3: slong,
2002    );
2003    pub fn _fmpz_mpoly_addmul_array1_fmpz(
2004        poly1: *mut fmpz,
2005        poly2: *const fmpz,
2006        exp2: *const ulong,
2007        len2: slong,
2008        poly3: *const fmpz,
2009        exp3: *const ulong,
2010        len3: slong,
2011    );
2012    pub fn _fmpz_mpoly_submul_array1_slong1(
2013        poly1: *mut ulong,
2014        poly2: *const slong,
2015        exp2: *const ulong,
2016        len2: slong,
2017        poly3: *const slong,
2018        exp3: *const ulong,
2019        len3: slong,
2020    );
2021    pub fn _fmpz_mpoly_submul_array1_slong2(
2022        poly1: *mut ulong,
2023        poly2: *const slong,
2024        exp2: *const ulong,
2025        len2: slong,
2026        poly3: *const slong,
2027        exp3: *const ulong,
2028        len3: slong,
2029    );
2030    pub fn _fmpz_mpoly_submul_array1_slong(
2031        poly1: *mut ulong,
2032        poly2: *const slong,
2033        exp2: *const ulong,
2034        len2: slong,
2035        poly3: *const slong,
2036        exp3: *const ulong,
2037        len3: slong,
2038    );
2039    pub fn _fmpz_mpoly_submul_array1_fmpz(
2040        poly1: *mut fmpz,
2041        poly2: *const fmpz,
2042        exp2: *const ulong,
2043        len2: slong,
2044        poly3: *const fmpz,
2045        exp3: *const ulong,
2046        len3: slong,
2047    );
2048    pub fn _fmpz_mpoly_submul_array1_slong2_1(
2049        poly1: *mut ulong,
2050        d: slong,
2051        exp2: ulong,
2052        poly3: *const slong,
2053        exp3: *const ulong,
2054        len3: slong,
2055    );
2056    pub fn _fmpz_mpoly_submul_array1_slong_1(
2057        poly1: *mut ulong,
2058        d: slong,
2059        exp2: ulong,
2060        poly3: *const slong,
2061        exp3: *const ulong,
2062        len3: slong,
2063    );
2064    pub fn _fmpz_mpoly_submul_array1_fmpz_1(
2065        poly1: *mut fmpz,
2066        d: *const fmpz,
2067        exp2: ulong,
2068        poly3: *const fmpz,
2069        exp3: *const ulong,
2070        len3: slong,
2071    );
2072    pub fn fmpz_mpoly_append_array_sm1_LEX(
2073        P: *mut fmpz_mpoly_struct,
2074        Plen: slong,
2075        coeff_array: *mut ulong,
2076        mults: *const ulong,
2077        num: slong,
2078        array_size: slong,
2079        top: slong,
2080    ) -> slong;
2081    pub fn fmpz_mpoly_append_array_sm2_LEX(
2082        P: *mut fmpz_mpoly_struct,
2083        Plen: slong,
2084        coeff_array: *mut ulong,
2085        mults: *const ulong,
2086        num: slong,
2087        array_size: slong,
2088        top: slong,
2089    ) -> slong;
2090    pub fn fmpz_mpoly_append_array_sm3_LEX(
2091        P: *mut fmpz_mpoly_struct,
2092        Plen: slong,
2093        coeff_array: *mut ulong,
2094        mults: *const ulong,
2095        num: slong,
2096        array_size: slong,
2097        top: slong,
2098    ) -> slong;
2099    pub fn fmpz_mpoly_append_array_fmpz_LEX(
2100        P: *mut fmpz_mpoly_struct,
2101        Plen: slong,
2102        coeff_array: *mut fmpz,
2103        mults: *const ulong,
2104        num: slong,
2105        array_size: slong,
2106        top: slong,
2107    ) -> slong;
2108    pub fn fmpz_mpoly_append_array_sm1_DEGLEX(
2109        P: *mut fmpz_mpoly_struct,
2110        Plen: slong,
2111        coeff_array: *mut ulong,
2112        top: slong,
2113        nvars: slong,
2114        degb: slong,
2115    ) -> slong;
2116    pub fn fmpz_mpoly_append_array_sm2_DEGLEX(
2117        P: *mut fmpz_mpoly_struct,
2118        Plen: slong,
2119        coeff_array: *mut ulong,
2120        top: slong,
2121        nvars: slong,
2122        degb: slong,
2123    ) -> slong;
2124    pub fn fmpz_mpoly_append_array_sm3_DEGLEX(
2125        P: *mut fmpz_mpoly_struct,
2126        Plen: slong,
2127        coeff_array: *mut ulong,
2128        top: slong,
2129        nvars: slong,
2130        degb: slong,
2131    ) -> slong;
2132    pub fn fmpz_mpoly_append_array_fmpz_DEGLEX(
2133        P: *mut fmpz_mpoly_struct,
2134        Plen: slong,
2135        coeff_array: *mut fmpz,
2136        top: slong,
2137        nvars: slong,
2138        degb: slong,
2139    ) -> slong;
2140    pub fn fmpz_mpoly_append_array_sm1_DEGREVLEX(
2141        P: *mut fmpz_mpoly_struct,
2142        Plen: slong,
2143        coeff_array: *mut ulong,
2144        top: slong,
2145        nvars: slong,
2146        degb: slong,
2147    ) -> slong;
2148    pub fn fmpz_mpoly_append_array_sm2_DEGREVLEX(
2149        P: *mut fmpz_mpoly_struct,
2150        Plen: slong,
2151        coeff_array: *mut ulong,
2152        top: slong,
2153        nvars: slong,
2154        degb: slong,
2155    ) -> slong;
2156    pub fn fmpz_mpoly_append_array_sm3_DEGREVLEX(
2157        P: *mut fmpz_mpoly_struct,
2158        Plen: slong,
2159        coeff_array: *mut ulong,
2160        top: slong,
2161        nvars: slong,
2162        degb: slong,
2163    ) -> slong;
2164    pub fn fmpz_mpoly_append_array_fmpz_DEGREVLEX(
2165        P: *mut fmpz_mpoly_struct,
2166        Plen: slong,
2167        coeff_array: *mut fmpz,
2168        top: slong,
2169        nvars: slong,
2170        degb: slong,
2171    ) -> slong;
2172    pub fn _fmpz_mpoly_from_ulong_array1(
2173        poly1: *mut *mut fmpz,
2174        exp1: *mut *mut ulong,
2175        alloc: *mut slong,
2176        poly2: *mut ulong,
2177        mults: *const slong,
2178        num: slong,
2179        bits: slong,
2180        k: slong,
2181    ) -> slong;
2182    pub fn _fmpz_mpoly_from_ulong_array2(
2183        poly1: *mut *mut fmpz,
2184        exp1: *mut *mut ulong,
2185        alloc: *mut slong,
2186        poly2: *mut ulong,
2187        mults: *const slong,
2188        num: slong,
2189        bits: slong,
2190        k: slong,
2191    ) -> slong;
2192    pub fn _fmpz_mpoly_from_ulong_array(
2193        poly1: *mut *mut fmpz,
2194        exp1: *mut *mut ulong,
2195        alloc: *mut slong,
2196        poly2: *mut ulong,
2197        mults: *const slong,
2198        num: slong,
2199        bits: slong,
2200        k: slong,
2201    ) -> slong;
2202    pub fn _fmpz_mpoly_from_fmpz_array(
2203        poly1: *mut *mut fmpz,
2204        exp1: *mut *mut ulong,
2205        alloc: *mut slong,
2206        poly2: *mut fmpz,
2207        mults: *const slong,
2208        num: slong,
2209        bits: slong,
2210        k: slong,
2211    ) -> slong;
2212    pub fn _fmpz_mpoly_to_ulong_array1(
2213        p: *mut ulong,
2214        coeffs: *const fmpz,
2215        exps: *const ulong,
2216        len: slong,
2217    );
2218    pub fn _fmpz_mpoly_to_ulong_array2(
2219        p: *mut ulong,
2220        coeffs: *const fmpz,
2221        exps: *const ulong,
2222        len: slong,
2223    );
2224    pub fn _fmpz_mpoly_to_ulong_array(
2225        p: *mut ulong,
2226        coeffs: *const fmpz,
2227        exps: *const ulong,
2228        len: slong,
2229    );
2230    pub fn _fmpz_mpoly_to_fmpz_array(
2231        p: *mut fmpz,
2232        coeffs: *const fmpz,
2233        exps: *const ulong,
2234        len: slong,
2235    );
2236    pub fn _fmpz_mpoly_add_uiuiui_fmpz(c: *mut ulong, d: *const fmpz);
2237    pub fn _fmpz_mpoly_sub_uiuiui_fmpz(c: *mut ulong, d: *const fmpz);
2238    #[link_name = "_fmpz_mpoly_submul_uiuiui_fmpz__extern"]
2239    pub fn _fmpz_mpoly_submul_uiuiui_fmpz(c: *mut ulong, d1: slong, d2: slong);
2240    #[link_name = "_fmpz_mpoly_addmul_uiuiui_fmpz__extern"]
2241    pub fn _fmpz_mpoly_addmul_uiuiui_fmpz(c: *mut ulong, d1: slong, d2: slong);
2242    #[doc = "Internal consistency checks"]
2243    pub fn fmpz_mpoly_remainder_test(
2244        r: *const fmpz_mpoly_struct,
2245        g: *const fmpz_mpoly_struct,
2246        ctx: *const fmpz_mpoly_ctx_struct,
2247    );
2248    pub fn fmpz_mpoly_remainder_strongtest(
2249        r: *const fmpz_mpoly_struct,
2250        g: *const fmpz_mpoly_struct,
2251        ctx: *const fmpz_mpoly_ctx_struct,
2252    );
2253}