Skip to main content

flint_sys/
fmpz_mod_mpoly_factor.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3use crate::deps::*;
4use crate::flint::*;
5use crate::fmpz_mod_mpoly::*;
6use crate::fmpz_mod_types::*;
7use crate::mpoly_types::*;
8use crate::nmod_types::*;
9
10
11#[repr(C)]
12pub struct fmpz_mod_bpoly_struct {
13    pub coeffs: *mut fmpz_mod_poly_struct,
14    pub alloc: slong,
15    pub length: slong,
16}
17#[allow(clippy::unnecessary_operation, clippy::identity_op)]
18const _: () = {
19    ["Size of fmpz_mod_bpoly_struct"][::std::mem::size_of::<fmpz_mod_bpoly_struct>() - 24usize];
20    ["Alignment of fmpz_mod_bpoly_struct"]
21        [::std::mem::align_of::<fmpz_mod_bpoly_struct>() - 8usize];
22    ["Offset of field: fmpz_mod_bpoly_struct::coeffs"]
23        [::std::mem::offset_of!(fmpz_mod_bpoly_struct, coeffs) - 0usize];
24    ["Offset of field: fmpz_mod_bpoly_struct::alloc"]
25        [::std::mem::offset_of!(fmpz_mod_bpoly_struct, alloc) - 8usize];
26    ["Offset of field: fmpz_mod_bpoly_struct::length"]
27        [::std::mem::offset_of!(fmpz_mod_bpoly_struct, length) - 16usize];
28};
29impl Default for fmpz_mod_bpoly_struct {
30    fn default() -> Self {
31        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
32        unsafe {
33            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
34            s.assume_init()
35        }
36    }
37}
38pub type fmpz_mod_bpoly_t = [fmpz_mod_bpoly_struct; 1usize];
39#[repr(C)]
40pub struct fmpz_mod_tpoly_struct {
41    pub coeffs: *mut fmpz_mod_bpoly_struct,
42    pub alloc: slong,
43    pub length: slong,
44}
45#[allow(clippy::unnecessary_operation, clippy::identity_op)]
46const _: () = {
47    ["Size of fmpz_mod_tpoly_struct"][::std::mem::size_of::<fmpz_mod_tpoly_struct>() - 24usize];
48    ["Alignment of fmpz_mod_tpoly_struct"]
49        [::std::mem::align_of::<fmpz_mod_tpoly_struct>() - 8usize];
50    ["Offset of field: fmpz_mod_tpoly_struct::coeffs"]
51        [::std::mem::offset_of!(fmpz_mod_tpoly_struct, coeffs) - 0usize];
52    ["Offset of field: fmpz_mod_tpoly_struct::alloc"]
53        [::std::mem::offset_of!(fmpz_mod_tpoly_struct, alloc) - 8usize];
54    ["Offset of field: fmpz_mod_tpoly_struct::length"]
55        [::std::mem::offset_of!(fmpz_mod_tpoly_struct, length) - 16usize];
56};
57impl Default for fmpz_mod_tpoly_struct {
58    fn default() -> Self {
59        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
60        unsafe {
61            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
62            s.assume_init()
63        }
64    }
65}
66pub type fmpz_mod_tpoly_t = [fmpz_mod_tpoly_struct; 1usize];
67#[repr(C)]
68pub struct fmpz_mod_polyu_struct {
69    pub exps: *mut ulong,
70    pub coeffs: *mut fmpz,
71    pub length: slong,
72    pub alloc: slong,
73}
74#[allow(clippy::unnecessary_operation, clippy::identity_op)]
75const _: () = {
76    ["Size of fmpz_mod_polyu_struct"][::std::mem::size_of::<fmpz_mod_polyu_struct>() - 32usize];
77    ["Alignment of fmpz_mod_polyu_struct"]
78        [::std::mem::align_of::<fmpz_mod_polyu_struct>() - 8usize];
79    ["Offset of field: fmpz_mod_polyu_struct::exps"]
80        [::std::mem::offset_of!(fmpz_mod_polyu_struct, exps) - 0usize];
81    ["Offset of field: fmpz_mod_polyu_struct::coeffs"]
82        [::std::mem::offset_of!(fmpz_mod_polyu_struct, coeffs) - 8usize];
83    ["Offset of field: fmpz_mod_polyu_struct::length"]
84        [::std::mem::offset_of!(fmpz_mod_polyu_struct, length) - 16usize];
85    ["Offset of field: fmpz_mod_polyu_struct::alloc"]
86        [::std::mem::offset_of!(fmpz_mod_polyu_struct, alloc) - 24usize];
87};
88impl Default for fmpz_mod_polyu_struct {
89    fn default() -> Self {
90        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
91        unsafe {
92            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
93            s.assume_init()
94        }
95    }
96}
97pub type fmpz_mod_polyu_t = [fmpz_mod_polyu_struct; 1usize];
98#[repr(C)]
99pub struct fmpz_mod_polyun_struct {
100    pub coeffs: *mut fmpz_mod_poly_struct,
101    pub exps: *mut ulong,
102    pub alloc: slong,
103    pub length: slong,
104}
105#[allow(clippy::unnecessary_operation, clippy::identity_op)]
106const _: () = {
107    ["Size of fmpz_mod_polyun_struct"][::std::mem::size_of::<fmpz_mod_polyun_struct>() - 32usize];
108    ["Alignment of fmpz_mod_polyun_struct"]
109        [::std::mem::align_of::<fmpz_mod_polyun_struct>() - 8usize];
110    ["Offset of field: fmpz_mod_polyun_struct::coeffs"]
111        [::std::mem::offset_of!(fmpz_mod_polyun_struct, coeffs) - 0usize];
112    ["Offset of field: fmpz_mod_polyun_struct::exps"]
113        [::std::mem::offset_of!(fmpz_mod_polyun_struct, exps) - 8usize];
114    ["Offset of field: fmpz_mod_polyun_struct::alloc"]
115        [::std::mem::offset_of!(fmpz_mod_polyun_struct, alloc) - 16usize];
116    ["Offset of field: fmpz_mod_polyun_struct::length"]
117        [::std::mem::offset_of!(fmpz_mod_polyun_struct, length) - 24usize];
118};
119impl Default for fmpz_mod_polyun_struct {
120    fn default() -> Self {
121        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
122        unsafe {
123            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
124            s.assume_init()
125        }
126    }
127}
128pub type fmpz_mod_polyun_t = [fmpz_mod_polyun_struct; 1usize];
129#[repr(C)]
130pub struct fmpz_mod_mpolyu_struct {
131    pub coeffs: *mut fmpz_mod_mpoly_struct,
132    pub exps: *mut ulong,
133    pub alloc: slong,
134    pub length: slong,
135    pub bits: flint_bitcnt_t,
136}
137#[allow(clippy::unnecessary_operation, clippy::identity_op)]
138const _: () = {
139    ["Size of fmpz_mod_mpolyu_struct"][::std::mem::size_of::<fmpz_mod_mpolyu_struct>() - 40usize];
140    ["Alignment of fmpz_mod_mpolyu_struct"]
141        [::std::mem::align_of::<fmpz_mod_mpolyu_struct>() - 8usize];
142    ["Offset of field: fmpz_mod_mpolyu_struct::coeffs"]
143        [::std::mem::offset_of!(fmpz_mod_mpolyu_struct, coeffs) - 0usize];
144    ["Offset of field: fmpz_mod_mpolyu_struct::exps"]
145        [::std::mem::offset_of!(fmpz_mod_mpolyu_struct, exps) - 8usize];
146    ["Offset of field: fmpz_mod_mpolyu_struct::alloc"]
147        [::std::mem::offset_of!(fmpz_mod_mpolyu_struct, alloc) - 16usize];
148    ["Offset of field: fmpz_mod_mpolyu_struct::length"]
149        [::std::mem::offset_of!(fmpz_mod_mpolyu_struct, length) - 24usize];
150    ["Offset of field: fmpz_mod_mpolyu_struct::bits"]
151        [::std::mem::offset_of!(fmpz_mod_mpolyu_struct, bits) - 32usize];
152};
153impl Default for fmpz_mod_mpolyu_struct {
154    fn default() -> Self {
155        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
156        unsafe {
157            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
158            s.assume_init()
159        }
160    }
161}
162pub type fmpz_mod_mpolyu_t = [fmpz_mod_mpolyu_struct; 1usize];
163#[repr(C)]
164pub struct fmpz_mod_mpolyn_struct {
165    pub coeffs: *mut fmpz_mod_poly_struct,
166    pub exps: *mut ulong,
167    pub alloc: slong,
168    pub length: slong,
169    pub bits: slong,
170}
171#[allow(clippy::unnecessary_operation, clippy::identity_op)]
172const _: () = {
173    ["Size of fmpz_mod_mpolyn_struct"][::std::mem::size_of::<fmpz_mod_mpolyn_struct>() - 40usize];
174    ["Alignment of fmpz_mod_mpolyn_struct"]
175        [::std::mem::align_of::<fmpz_mod_mpolyn_struct>() - 8usize];
176    ["Offset of field: fmpz_mod_mpolyn_struct::coeffs"]
177        [::std::mem::offset_of!(fmpz_mod_mpolyn_struct, coeffs) - 0usize];
178    ["Offset of field: fmpz_mod_mpolyn_struct::exps"]
179        [::std::mem::offset_of!(fmpz_mod_mpolyn_struct, exps) - 8usize];
180    ["Offset of field: fmpz_mod_mpolyn_struct::alloc"]
181        [::std::mem::offset_of!(fmpz_mod_mpolyn_struct, alloc) - 16usize];
182    ["Offset of field: fmpz_mod_mpolyn_struct::length"]
183        [::std::mem::offset_of!(fmpz_mod_mpolyn_struct, length) - 24usize];
184    ["Offset of field: fmpz_mod_mpolyn_struct::bits"]
185        [::std::mem::offset_of!(fmpz_mod_mpolyn_struct, bits) - 32usize];
186};
187impl Default for fmpz_mod_mpolyn_struct {
188    fn default() -> Self {
189        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
190        unsafe {
191            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
192            s.assume_init()
193        }
194    }
195}
196pub type fmpz_mod_mpolyn_t = [fmpz_mod_mpolyn_struct; 1usize];
197#[repr(C)]
198pub struct fmpz_mod_poly_stack_struct {
199    pub array: *mut *mut fmpz_mod_poly_struct,
200    pub alloc: slong,
201    pub top: slong,
202}
203#[allow(clippy::unnecessary_operation, clippy::identity_op)]
204const _: () = {
205    ["Size of fmpz_mod_poly_stack_struct"]
206        [::std::mem::size_of::<fmpz_mod_poly_stack_struct>() - 24usize];
207    ["Alignment of fmpz_mod_poly_stack_struct"]
208        [::std::mem::align_of::<fmpz_mod_poly_stack_struct>() - 8usize];
209    ["Offset of field: fmpz_mod_poly_stack_struct::array"]
210        [::std::mem::offset_of!(fmpz_mod_poly_stack_struct, array) - 0usize];
211    ["Offset of field: fmpz_mod_poly_stack_struct::alloc"]
212        [::std::mem::offset_of!(fmpz_mod_poly_stack_struct, alloc) - 8usize];
213    ["Offset of field: fmpz_mod_poly_stack_struct::top"]
214        [::std::mem::offset_of!(fmpz_mod_poly_stack_struct, top) - 16usize];
215};
216impl Default for fmpz_mod_poly_stack_struct {
217    fn default() -> Self {
218        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
219        unsafe {
220            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
221            s.assume_init()
222        }
223    }
224}
225pub type fmpz_mod_poly_stack_t = [fmpz_mod_poly_stack_struct; 1usize];
226#[repr(C)]
227pub struct fmpz_mod_bpoly_stack_struct {
228    pub array: *mut *mut fmpz_mod_bpoly_struct,
229    pub alloc: slong,
230    pub top: slong,
231}
232#[allow(clippy::unnecessary_operation, clippy::identity_op)]
233const _: () = {
234    ["Size of fmpz_mod_bpoly_stack_struct"]
235        [::std::mem::size_of::<fmpz_mod_bpoly_stack_struct>() - 24usize];
236    ["Alignment of fmpz_mod_bpoly_stack_struct"]
237        [::std::mem::align_of::<fmpz_mod_bpoly_stack_struct>() - 8usize];
238    ["Offset of field: fmpz_mod_bpoly_stack_struct::array"]
239        [::std::mem::offset_of!(fmpz_mod_bpoly_stack_struct, array) - 0usize];
240    ["Offset of field: fmpz_mod_bpoly_stack_struct::alloc"]
241        [::std::mem::offset_of!(fmpz_mod_bpoly_stack_struct, alloc) - 8usize];
242    ["Offset of field: fmpz_mod_bpoly_stack_struct::top"]
243        [::std::mem::offset_of!(fmpz_mod_bpoly_stack_struct, top) - 16usize];
244};
245impl Default for fmpz_mod_bpoly_stack_struct {
246    fn default() -> Self {
247        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
248        unsafe {
249            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
250            s.assume_init()
251        }
252    }
253}
254pub type fmpz_mod_bpoly_stack_t = [fmpz_mod_bpoly_stack_struct; 1usize];
255#[repr(C)]
256pub struct fmpz_mod_polyun_stack_struct {
257    pub array: *mut *mut fmpz_mod_polyun_struct,
258    pub alloc: slong,
259    pub top: slong,
260}
261#[allow(clippy::unnecessary_operation, clippy::identity_op)]
262const _: () = {
263    ["Size of fmpz_mod_polyun_stack_struct"]
264        [::std::mem::size_of::<fmpz_mod_polyun_stack_struct>() - 24usize];
265    ["Alignment of fmpz_mod_polyun_stack_struct"]
266        [::std::mem::align_of::<fmpz_mod_polyun_stack_struct>() - 8usize];
267    ["Offset of field: fmpz_mod_polyun_stack_struct::array"]
268        [::std::mem::offset_of!(fmpz_mod_polyun_stack_struct, array) - 0usize];
269    ["Offset of field: fmpz_mod_polyun_stack_struct::alloc"]
270        [::std::mem::offset_of!(fmpz_mod_polyun_stack_struct, alloc) - 8usize];
271    ["Offset of field: fmpz_mod_polyun_stack_struct::top"]
272        [::std::mem::offset_of!(fmpz_mod_polyun_stack_struct, top) - 16usize];
273};
274impl Default for fmpz_mod_polyun_stack_struct {
275    fn default() -> Self {
276        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
277        unsafe {
278            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
279            s.assume_init()
280        }
281    }
282}
283pub type fmpz_mod_polyun_stack_t = [fmpz_mod_polyun_stack_struct; 1usize];
284#[repr(C)]
285pub struct fmpz_mod_mpolyn_stack_struct {
286    pub array: *mut *mut fmpz_mod_mpolyn_struct,
287    pub alloc: slong,
288    pub top: slong,
289    pub bits: flint_bitcnt_t,
290}
291#[allow(clippy::unnecessary_operation, clippy::identity_op)]
292const _: () = {
293    ["Size of fmpz_mod_mpolyn_stack_struct"]
294        [::std::mem::size_of::<fmpz_mod_mpolyn_stack_struct>() - 32usize];
295    ["Alignment of fmpz_mod_mpolyn_stack_struct"]
296        [::std::mem::align_of::<fmpz_mod_mpolyn_stack_struct>() - 8usize];
297    ["Offset of field: fmpz_mod_mpolyn_stack_struct::array"]
298        [::std::mem::offset_of!(fmpz_mod_mpolyn_stack_struct, array) - 0usize];
299    ["Offset of field: fmpz_mod_mpolyn_stack_struct::alloc"]
300        [::std::mem::offset_of!(fmpz_mod_mpolyn_stack_struct, alloc) - 8usize];
301    ["Offset of field: fmpz_mod_mpolyn_stack_struct::top"]
302        [::std::mem::offset_of!(fmpz_mod_mpolyn_stack_struct, top) - 16usize];
303    ["Offset of field: fmpz_mod_mpolyn_stack_struct::bits"]
304        [::std::mem::offset_of!(fmpz_mod_mpolyn_stack_struct, bits) - 24usize];
305};
306impl Default for fmpz_mod_mpolyn_stack_struct {
307    fn default() -> Self {
308        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
309        unsafe {
310            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
311            s.assume_init()
312        }
313    }
314}
315pub type fmpz_mod_mpolyn_stack_t = [fmpz_mod_mpolyn_stack_struct; 1usize];
316#[repr(C)]
317pub struct fmpz_mod_poly_bpoly_stack_struct {
318    pub poly_stack: fmpz_mod_poly_stack_t,
319    pub bpoly_stack: fmpz_mod_bpoly_stack_t,
320}
321#[allow(clippy::unnecessary_operation, clippy::identity_op)]
322const _: () = {
323    ["Size of fmpz_mod_poly_bpoly_stack_struct"]
324        [::std::mem::size_of::<fmpz_mod_poly_bpoly_stack_struct>() - 48usize];
325    ["Alignment of fmpz_mod_poly_bpoly_stack_struct"]
326        [::std::mem::align_of::<fmpz_mod_poly_bpoly_stack_struct>() - 8usize];
327    ["Offset of field: fmpz_mod_poly_bpoly_stack_struct::poly_stack"]
328        [::std::mem::offset_of!(fmpz_mod_poly_bpoly_stack_struct, poly_stack) - 0usize];
329    ["Offset of field: fmpz_mod_poly_bpoly_stack_struct::bpoly_stack"]
330        [::std::mem::offset_of!(fmpz_mod_poly_bpoly_stack_struct, bpoly_stack) - 24usize];
331};
332impl Default for fmpz_mod_poly_bpoly_stack_struct {
333    fn default() -> Self {
334        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
335        unsafe {
336            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
337            s.assume_init()
338        }
339    }
340}
341pub type fmpz_mod_poly_bpoly_stack_t = [fmpz_mod_poly_bpoly_stack_struct; 1usize];
342#[repr(C)]
343pub struct fmpz_mod_poly_polyun_stack_struct {
344    pub poly_stack: fmpz_mod_poly_stack_t,
345    pub polyun_stack: fmpz_mod_polyun_stack_t,
346}
347#[allow(clippy::unnecessary_operation, clippy::identity_op)]
348const _: () = {
349    ["Size of fmpz_mod_poly_polyun_stack_struct"]
350        [::std::mem::size_of::<fmpz_mod_poly_polyun_stack_struct>() - 48usize];
351    ["Alignment of fmpz_mod_poly_polyun_stack_struct"]
352        [::std::mem::align_of::<fmpz_mod_poly_polyun_stack_struct>() - 8usize];
353    ["Offset of field: fmpz_mod_poly_polyun_stack_struct::poly_stack"]
354        [::std::mem::offset_of!(fmpz_mod_poly_polyun_stack_struct, poly_stack) - 0usize];
355    ["Offset of field: fmpz_mod_poly_polyun_stack_struct::polyun_stack"]
356        [::std::mem::offset_of!(fmpz_mod_poly_polyun_stack_struct, polyun_stack) - 24usize];
357};
358impl Default for fmpz_mod_poly_polyun_stack_struct {
359    fn default() -> Self {
360        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
361        unsafe {
362            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
363            s.assume_init()
364        }
365    }
366}
367pub type fmpz_mod_poly_polyun_stack_t = [fmpz_mod_poly_polyun_stack_struct; 1usize];
368#[repr(C)]
369pub struct fmpz_mod_poly_polyun_mpolyn_stack_struct {
370    pub poly_stack: fmpz_mod_poly_stack_t,
371    pub polyun_stack: fmpz_mod_polyun_stack_t,
372    pub mpolyn_stack: fmpz_mod_mpolyn_stack_t,
373}
374#[allow(clippy::unnecessary_operation, clippy::identity_op)]
375const _: () = {
376    ["Size of fmpz_mod_poly_polyun_mpolyn_stack_struct"]
377        [::std::mem::size_of::<fmpz_mod_poly_polyun_mpolyn_stack_struct>() - 80usize];
378    ["Alignment of fmpz_mod_poly_polyun_mpolyn_stack_struct"]
379        [::std::mem::align_of::<fmpz_mod_poly_polyun_mpolyn_stack_struct>() - 8usize];
380    ["Offset of field: fmpz_mod_poly_polyun_mpolyn_stack_struct::poly_stack"]
381        [::std::mem::offset_of!(fmpz_mod_poly_polyun_mpolyn_stack_struct, poly_stack) - 0usize];
382    ["Offset of field: fmpz_mod_poly_polyun_mpolyn_stack_struct::polyun_stack"]
383        [::std::mem::offset_of!(fmpz_mod_poly_polyun_mpolyn_stack_struct, polyun_stack) - 24usize];
384    ["Offset of field: fmpz_mod_poly_polyun_mpolyn_stack_struct::mpolyn_stack"]
385        [::std::mem::offset_of!(fmpz_mod_poly_polyun_mpolyn_stack_struct, mpolyn_stack) - 48usize];
386};
387impl Default for fmpz_mod_poly_polyun_mpolyn_stack_struct {
388    fn default() -> Self {
389        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
390        unsafe {
391            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
392            s.assume_init()
393        }
394    }
395}
396pub type fmpz_mod_poly_polyun_mpolyn_stack_t = [fmpz_mod_poly_polyun_mpolyn_stack_struct; 1usize];
397#[repr(C)]
398pub struct fmpz_mod_mpolyv_struct {
399    pub coeffs: *mut fmpz_mod_mpoly_struct,
400    pub alloc: slong,
401    pub length: slong,
402}
403#[allow(clippy::unnecessary_operation, clippy::identity_op)]
404const _: () = {
405    ["Size of fmpz_mod_mpolyv_struct"][::std::mem::size_of::<fmpz_mod_mpolyv_struct>() - 24usize];
406    ["Alignment of fmpz_mod_mpolyv_struct"]
407        [::std::mem::align_of::<fmpz_mod_mpolyv_struct>() - 8usize];
408    ["Offset of field: fmpz_mod_mpolyv_struct::coeffs"]
409        [::std::mem::offset_of!(fmpz_mod_mpolyv_struct, coeffs) - 0usize];
410    ["Offset of field: fmpz_mod_mpolyv_struct::alloc"]
411        [::std::mem::offset_of!(fmpz_mod_mpolyv_struct, alloc) - 8usize];
412    ["Offset of field: fmpz_mod_mpolyv_struct::length"]
413        [::std::mem::offset_of!(fmpz_mod_mpolyv_struct, length) - 16usize];
414};
415impl Default for fmpz_mod_mpolyv_struct {
416    fn default() -> Self {
417        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
418        unsafe {
419            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
420            s.assume_init()
421        }
422    }
423}
424pub type fmpz_mod_mpolyv_t = [fmpz_mod_mpolyv_struct; 1usize];
425#[repr(C)]
426pub struct fmpz_mod_mpoly_pfrac_struct {
427    pub bits: flint_bitcnt_t,
428    pub w: slong,
429    pub r: slong,
430    pub inv_prod_dbetas: *mut fmpz_mod_poly_struct,
431    pub inv_prod_dbetas_mvar: *mut fmpz_mod_mpoly_struct,
432    pub dbetas: *mut fmpz_mod_poly_struct,
433    pub dbetas_mvar: *mut fmpz_mod_mpoly_struct,
434    pub prod_mbetas: *mut fmpz_mod_mpoly_struct,
435    pub prod_mbetas_coeffs: *mut fmpz_mod_mpolyv_struct,
436    pub mbetas: *mut fmpz_mod_mpoly_struct,
437    pub deltas: *mut fmpz_mod_mpoly_struct,
438    pub xalpha: *mut fmpz_mod_mpoly_struct,
439    pub q: *mut fmpz_mod_mpoly_struct,
440    pub G: *mut fmpz_mod_mpoly_geobucket_struct,
441    pub qt: *mut fmpz_mod_mpoly_struct,
442    pub newt: *mut fmpz_mod_mpoly_struct,
443    pub delta_coeffs: *mut fmpz_mod_mpolyv_struct,
444    pub T: fmpz_mod_mpoly_t,
445    pub Q: fmpz_mod_mpoly_t,
446    pub R: fmpz_mod_mpoly_t,
447}
448#[allow(clippy::unnecessary_operation, clippy::identity_op)]
449const _: () = {
450    ["Size of fmpz_mod_mpoly_pfrac_struct"]
451        [::std::mem::size_of::<fmpz_mod_mpoly_pfrac_struct>() - 280usize];
452    ["Alignment of fmpz_mod_mpoly_pfrac_struct"]
453        [::std::mem::align_of::<fmpz_mod_mpoly_pfrac_struct>() - 8usize];
454    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::bits"]
455        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, bits) - 0usize];
456    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::w"]
457        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, w) - 8usize];
458    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::r"]
459        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, r) - 16usize];
460    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::inv_prod_dbetas"]
461        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, inv_prod_dbetas) - 24usize];
462    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::inv_prod_dbetas_mvar"]
463        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, inv_prod_dbetas_mvar) - 32usize];
464    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::dbetas"]
465        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, dbetas) - 40usize];
466    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::dbetas_mvar"]
467        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, dbetas_mvar) - 48usize];
468    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::prod_mbetas"]
469        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, prod_mbetas) - 56usize];
470    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::prod_mbetas_coeffs"]
471        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, prod_mbetas_coeffs) - 64usize];
472    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::mbetas"]
473        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, mbetas) - 72usize];
474    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::deltas"]
475        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, deltas) - 80usize];
476    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::xalpha"]
477        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, xalpha) - 88usize];
478    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::q"]
479        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, q) - 96usize];
480    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::G"]
481        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, G) - 104usize];
482    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::qt"]
483        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, qt) - 112usize];
484    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::newt"]
485        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, newt) - 120usize];
486    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::delta_coeffs"]
487        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, delta_coeffs) - 128usize];
488    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::T"]
489        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, T) - 136usize];
490    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::Q"]
491        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, Q) - 184usize];
492    ["Offset of field: fmpz_mod_mpoly_pfrac_struct::R"]
493        [::std::mem::offset_of!(fmpz_mod_mpoly_pfrac_struct, R) - 232usize];
494};
495impl Default for fmpz_mod_mpoly_pfrac_struct {
496    fn default() -> Self {
497        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
498        unsafe {
499            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
500            s.assume_init()
501        }
502    }
503}
504pub type fmpz_mod_mpoly_pfrac_t = [fmpz_mod_mpoly_pfrac_struct; 1usize];
505extern "C" {
506    #[link_name = "fmpz_mod_mpoly_factor_init__extern"]
507    pub fn fmpz_mod_mpoly_factor_init(
508        f: *mut fmpz_mod_mpoly_factor_struct,
509        UNUSED_ctx: *const fmpz_mod_mpoly_ctx_struct,
510    );
511    pub fn fmpz_mod_mpoly_factor_init2(
512        f: *mut fmpz_mod_mpoly_factor_struct,
513        alloc: slong,
514        ctx: *const fmpz_mod_mpoly_ctx_struct,
515    );
516    pub fn fmpz_mod_mpoly_factor_realloc(
517        f: *mut fmpz_mod_mpoly_factor_struct,
518        alloc: slong,
519        ctx: *const fmpz_mod_mpoly_ctx_struct,
520    );
521    pub fn fmpz_mod_mpoly_factor_fit_length(
522        f: *mut fmpz_mod_mpoly_factor_struct,
523        len: slong,
524        ctx: *const fmpz_mod_mpoly_ctx_struct,
525    );
526    pub fn fmpz_mod_mpoly_factor_clear(
527        f: *mut fmpz_mod_mpoly_factor_struct,
528        ctx: *const fmpz_mod_mpoly_ctx_struct,
529    );
530    #[link_name = "fmpz_mod_mpoly_factor_length__extern"]
531    pub fn fmpz_mod_mpoly_factor_length(
532        f: *const fmpz_mod_mpoly_factor_struct,
533        UNUSED_ctx: *const fmpz_mod_mpoly_ctx_struct,
534    ) -> slong;
535    #[link_name = "fmpz_mod_mpoly_factor_get_constant_fmpz__extern"]
536    pub fn fmpz_mod_mpoly_factor_get_constant_fmpz(
537        c: *mut fmpz,
538        f: *const fmpz_mod_mpoly_factor_struct,
539        UNUSED_ctx: *const fmpz_mod_mpoly_ctx_struct,
540    );
541    #[link_name = "fmpz_mod_mpoly_factor_get_base__extern"]
542    pub fn fmpz_mod_mpoly_factor_get_base(
543        p: *mut fmpz_mod_mpoly_struct,
544        f: *const fmpz_mod_mpoly_factor_struct,
545        i: slong,
546        ctx: *const fmpz_mod_mpoly_ctx_struct,
547    );
548    #[link_name = "fmpz_mod_mpoly_factor_swap_base__extern"]
549    pub fn fmpz_mod_mpoly_factor_swap_base(
550        p: *mut fmpz_mod_mpoly_struct,
551        f: *mut fmpz_mod_mpoly_factor_struct,
552        i: slong,
553        ctx: *const fmpz_mod_mpoly_ctx_struct,
554    );
555    #[link_name = "fmpz_mod_mpoly_factor_get_exp_si__extern"]
556    pub fn fmpz_mod_mpoly_factor_get_exp_si(
557        f: *mut fmpz_mod_mpoly_factor_struct,
558        i: slong,
559        UNUSED_ctx: *const fmpz_mod_mpoly_ctx_struct,
560    ) -> slong;
561    #[link_name = "fmpz_mod_mpoly_factor_swap__extern"]
562    pub fn fmpz_mod_mpoly_factor_swap(
563        f: *mut fmpz_mod_mpoly_factor_struct,
564        g: *mut fmpz_mod_mpoly_factor_struct,
565        UNUSED_ctx: *const fmpz_mod_mpoly_ctx_struct,
566    );
567    pub fn fmpz_mod_mpoly_factor_set(
568        f: *mut fmpz_mod_mpoly_factor_struct,
569        g: *const fmpz_mod_mpoly_factor_struct,
570        ctx: *const fmpz_mod_mpoly_ctx_struct,
571    );
572    pub fn fmpz_mod_mpoly_factor_print_pretty(
573        f: *const fmpz_mod_mpoly_factor_struct,
574        vars: *mut *const libc::c_char,
575        ctx: *const fmpz_mod_mpoly_ctx_struct,
576    );
577    pub fn fmpz_mod_mpoly_factor_content(
578        f: *mut fmpz_mod_mpoly_factor_struct,
579        A: *const fmpz_mod_mpoly_struct,
580        ctx: *const fmpz_mod_mpoly_ctx_struct,
581    ) -> libc::c_int;
582    pub fn fmpz_mod_mpoly_factor_squarefree(
583        f: *mut fmpz_mod_mpoly_factor_struct,
584        A: *const fmpz_mod_mpoly_struct,
585        ctx: *const fmpz_mod_mpoly_ctx_struct,
586    ) -> libc::c_int;
587    pub fn fmpz_mod_mpoly_factor(
588        f: *mut fmpz_mod_mpoly_factor_struct,
589        A: *const fmpz_mod_mpoly_struct,
590        ctx: *const fmpz_mod_mpoly_ctx_struct,
591    ) -> libc::c_int;
592    pub fn fmpz_mod_mpoly_factor_sort(
593        f: *mut fmpz_mod_mpoly_factor_struct,
594        ctx: *const fmpz_mod_mpoly_ctx_struct,
595    );
596    pub fn fmpz_mod_mpoly_factor_cmp(
597        A: *const fmpz_mod_mpoly_factor_struct,
598        B: *const fmpz_mod_mpoly_factor_struct,
599        ctx: *const fmpz_mod_mpoly_ctx_struct,
600    ) -> libc::c_int;
601    #[doc = "Internal functions (guaranteed to change without notice)"]
602    #[link_name = "_fmpz_mod_poly_degree__extern"]
603    pub fn _fmpz_mod_poly_degree(a: *const fmpz_mod_poly_struct) -> slong;
604    pub fn fmpz_mod_poly_scalar_addmul_fmpz_mod(
605        A: *mut fmpz_mod_poly_struct,
606        B: *const fmpz_mod_poly_struct,
607        C: *const fmpz_mod_poly_struct,
608        d0: *const fmpz,
609        ctx: *const fmpz_mod_ctx_struct,
610    );
611    pub fn fmpz_mod_poly_addmul_linear(
612        A: *mut fmpz_mod_poly_struct,
613        B: *const fmpz_mod_poly_struct,
614        C: *const fmpz_mod_poly_struct,
615        d1: *const fmpz,
616        d0: *const fmpz,
617        ctx: *const fmpz_mod_ctx_struct,
618    );
619    pub fn fmpz_mod_poly_shift_left_scalar_addmul_fmpz_mod(
620        A: *mut fmpz_mod_poly_struct,
621        k: slong,
622        c: *const fmpz,
623        ctx: *const fmpz_mod_ctx_struct,
624    );
625    pub fn fmpz_mod_poly_eval_pow(
626        eval: *mut fmpz,
627        P: *const fmpz_mod_poly_struct,
628        alphapow: *mut fmpz_mod_poly_struct,
629        ctx: *const fmpz_mod_ctx_struct,
630    );
631    pub fn fmpz_mod_poly_eval2_pow(
632        evalp: *mut fmpz,
633        evalm: *mut fmpz,
634        P: *const fmpz_mod_poly_struct,
635        alphapow: *mut fmpz_mod_poly_struct,
636        ctx: *const fmpz_mod_ctx_struct,
637    );
638    pub fn fmpz_mod_mat_is_reduced(
639        N: *const fmpz_mod_mat_struct,
640        ctx: *const fmpz_mod_ctx_struct,
641    ) -> libc::c_int;
642    pub fn fmpz_mod_mat_init_nullspace_tr(
643        X: *mut fmpz_mod_mat_struct,
644        tmp: *mut fmpz_mod_mat_struct,
645        ctx: *const fmpz_mod_ctx_struct,
646    );
647    pub fn fmpz_mod_mpoly_factor_separable(
648        f: *mut fmpz_mod_mpoly_factor_struct,
649        A: *const fmpz_mod_mpoly_struct,
650        ctx: *const fmpz_mod_mpoly_ctx_struct,
651        sep: libc::c_int,
652    ) -> libc::c_int;
653    pub fn fmpz_mod_mpoly_factor_expand(
654        A: *mut fmpz_mod_mpoly_struct,
655        f: *const fmpz_mod_mpoly_factor_struct,
656        ctx: *const fmpz_mod_mpoly_ctx_struct,
657    ) -> libc::c_int;
658    #[link_name = "fmpz_mod_mpoly_factor_matches__extern"]
659    pub fn fmpz_mod_mpoly_factor_matches(
660        a: *const fmpz_mod_mpoly_struct,
661        f: *const fmpz_mod_mpoly_factor_struct,
662        ctx: *const fmpz_mod_mpoly_ctx_struct,
663    ) -> libc::c_int;
664    #[link_name = "fmpz_mod_mpoly_factor_append_fmpz_swap__extern"]
665    pub fn fmpz_mod_mpoly_factor_append_fmpz_swap(
666        f: *mut fmpz_mod_mpoly_factor_struct,
667        A: *mut fmpz_mod_mpoly_struct,
668        e: *const fmpz,
669        ctx: *const fmpz_mod_mpoly_ctx_struct,
670    );
671    #[link_name = "fmpz_mod_mpoly_factor_one__extern"]
672    pub fn fmpz_mod_mpoly_factor_one(
673        f: *mut fmpz_mod_mpoly_factor_struct,
674        UNUSED_ctx: *const fmpz_mod_mpoly_ctx_struct,
675    );
676    pub fn _fmpz_mod_mpoly_get_lead0(
677        c: *mut fmpz_mod_mpoly_struct,
678        A: *const fmpz_mod_mpoly_struct,
679        ctx: *const fmpz_mod_mpoly_ctx_struct,
680    );
681    pub fn _fmpz_mod_mpoly_set_lead0(
682        A: *mut fmpz_mod_mpoly_struct,
683        B: *const fmpz_mod_mpoly_struct,
684        c: *const fmpz_mod_mpoly_struct,
685        ctx: *const fmpz_mod_mpoly_ctx_struct,
686    );
687    pub fn _fmpz_mod_mpoly_factor_set_nmod_mpoly_factor(
688        f: *mut fmpz_mod_mpoly_factor_struct,
689        ctx: *const fmpz_mod_mpoly_ctx_struct,
690        nf: *const nmod_mpoly_factor_struct,
691        nctx: *const nmod_mpoly_ctx_struct,
692    );
693    pub fn fmpz_mod_poly_stack_init(S: *mut fmpz_mod_poly_stack_struct);
694    pub fn fmpz_mod_poly_stack_clear(S: *mut fmpz_mod_poly_stack_struct);
695    pub fn fmpz_mod_poly_stack_fit_request(
696        S: *mut fmpz_mod_poly_stack_struct,
697        k: slong,
698    ) -> *mut *mut fmpz_mod_poly_struct;
699    #[link_name = "fmpz_mod_poly_stack_request__extern"]
700    pub fn fmpz_mod_poly_stack_request(
701        S: *mut fmpz_mod_poly_stack_struct,
702        k: slong,
703    ) -> *mut *mut fmpz_mod_poly_struct;
704    #[link_name = "fmpz_mod_poly_stack_take_top__extern"]
705    pub fn fmpz_mod_poly_stack_take_top(
706        S: *mut fmpz_mod_poly_stack_struct,
707    ) -> *mut fmpz_mod_poly_struct;
708    #[link_name = "fmpz_mod_poly_stack_give_back__extern"]
709    pub fn fmpz_mod_poly_stack_give_back(S: *mut fmpz_mod_poly_stack_struct, k: slong);
710    #[link_name = "fmpz_mod_poly_stack_size__extern"]
711    pub fn fmpz_mod_poly_stack_size(S: *const fmpz_mod_poly_stack_struct) -> slong;
712    pub fn fmpz_mod_bpoly_stack_init(S: *mut fmpz_mod_bpoly_stack_struct);
713    pub fn fmpz_mod_bpoly_stack_clear(S: *mut fmpz_mod_bpoly_stack_struct);
714    pub fn fmpz_mod_bpoly_stack_fit_request(
715        S: *mut fmpz_mod_bpoly_stack_struct,
716        k: slong,
717    ) -> *mut *mut fmpz_mod_bpoly_struct;
718    #[link_name = "fmpz_mod_bpoly_stack_request__extern"]
719    pub fn fmpz_mod_bpoly_stack_request(
720        S: *mut fmpz_mod_bpoly_stack_struct,
721        k: slong,
722    ) -> *mut *mut fmpz_mod_bpoly_struct;
723    #[link_name = "fmpz_mod_bpoly_stack_take_top__extern"]
724    pub fn fmpz_mod_bpoly_stack_take_top(
725        S: *mut fmpz_mod_bpoly_stack_struct,
726    ) -> *mut fmpz_mod_bpoly_struct;
727    #[link_name = "fmpz_mod_bpoly_stack_give_back__extern"]
728    pub fn fmpz_mod_bpoly_stack_give_back(S: *mut fmpz_mod_bpoly_stack_struct, k: slong);
729    #[link_name = "fmpz_mod_bpoly_stack_size__extern"]
730    pub fn fmpz_mod_bpoly_stack_size(S: *const fmpz_mod_bpoly_stack_struct) -> slong;
731    pub fn fmpz_mod_polyun_stack_init(S: *mut fmpz_mod_polyun_stack_struct);
732    pub fn fmpz_mod_polyun_stack_clear(S: *mut fmpz_mod_polyun_stack_struct);
733    pub fn fmpz_mod_polyun_stack_fit_request(
734        S: *mut fmpz_mod_polyun_stack_struct,
735        k: slong,
736    ) -> *mut *mut fmpz_mod_polyun_struct;
737    #[link_name = "fmpz_mod_polyun_stack_request__extern"]
738    pub fn fmpz_mod_polyun_stack_request(
739        S: *mut fmpz_mod_polyun_stack_struct,
740        k: slong,
741    ) -> *mut *mut fmpz_mod_polyun_struct;
742    #[link_name = "fmpz_mod_polyun_stack_take_top__extern"]
743    pub fn fmpz_mod_polyun_stack_take_top(
744        S: *mut fmpz_mod_polyun_stack_struct,
745    ) -> *mut fmpz_mod_polyun_struct;
746    #[link_name = "fmpz_mod_polyun_stack_give_back__extern"]
747    pub fn fmpz_mod_polyun_stack_give_back(S: *mut fmpz_mod_polyun_stack_struct, k: slong);
748    #[link_name = "fmpz_mod_polyun_stack_size__extern"]
749    pub fn fmpz_mod_polyun_stack_size(S: *const fmpz_mod_polyun_stack_struct) -> slong;
750    pub fn fmpz_mod_mpolyn_stack_init(
751        S: *mut fmpz_mod_mpolyn_stack_struct,
752        bits: flint_bitcnt_t,
753        UNUSED_ctx: *const fmpz_mod_mpoly_ctx_struct,
754    );
755    pub fn fmpz_mod_mpolyn_stack_clear(
756        S: *mut fmpz_mod_mpolyn_stack_struct,
757        ctx: *const fmpz_mod_mpoly_ctx_struct,
758    );
759    pub fn fmpz_mod_mpolyn_stack_fit_request(
760        S: *mut fmpz_mod_mpolyn_stack_struct,
761        k: slong,
762        ctx: *const fmpz_mod_mpoly_ctx_struct,
763    ) -> *mut *mut fmpz_mod_mpolyn_struct;
764    #[link_name = "fmpz_mod_mpolyn_stack_request__extern"]
765    pub fn fmpz_mod_mpolyn_stack_request(
766        S: *mut fmpz_mod_mpolyn_stack_struct,
767        k: slong,
768        ctx: *const fmpz_mod_mpoly_ctx_struct,
769    ) -> *mut *mut fmpz_mod_mpolyn_struct;
770    #[link_name = "fmpz_mod_mpolyn_stack_take_top__extern"]
771    pub fn fmpz_mod_mpolyn_stack_take_top(
772        S: *mut fmpz_mod_mpolyn_stack_struct,
773    ) -> *mut fmpz_mod_mpolyn_struct;
774    #[link_name = "fmpz_mod_mpolyn_stack_give_back__extern"]
775    pub fn fmpz_mod_mpolyn_stack_give_back(S: *mut fmpz_mod_mpolyn_stack_struct, k: slong);
776    #[link_name = "fmpz_mod_mpolyn_stack_size__extern"]
777    pub fn fmpz_mod_mpolyn_stack_size(S: *const fmpz_mod_mpolyn_stack_struct) -> slong;
778    pub fn _fmpz_mod_poly_vec_max_degree(
779        A: *const fmpz_mod_poly_struct,
780        Alen: slong,
781        ctx: *const fmpz_mod_ctx_struct,
782    ) -> slong;
783    pub fn _fmpz_mod_poly_vec_content(
784        g: *mut fmpz_mod_poly_struct,
785        A: *const fmpz_mod_poly_struct,
786        Alen: slong,
787        ctx: *const fmpz_mod_ctx_struct,
788    );
789    pub fn _fmpz_mod_poly_vec_remove_content(
790        g: *mut fmpz_mod_poly_struct,
791        A: *mut fmpz_mod_poly_struct,
792        Alen: slong,
793        ctx: *const fmpz_mod_ctx_struct,
794    );
795    pub fn _fmpz_mod_poly_vec_mul_poly(
796        A: *mut fmpz_mod_poly_struct,
797        Alen: slong,
798        g: *const fmpz_mod_poly_struct,
799        ctx: *const fmpz_mod_ctx_struct,
800    );
801    pub fn _fmpz_mod_poly_vec_divexact_poly(
802        A: *mut fmpz_mod_poly_struct,
803        Alen: slong,
804        g: *const fmpz_mod_poly_struct,
805        ctx: *const fmpz_mod_ctx_struct,
806    );
807    pub fn _fmpz_mod_poly_vec_mul_fmpz_mod(
808        A: *mut fmpz_mod_poly_struct,
809        Alen: slong,
810        g: *const fmpz,
811        ctx: *const fmpz_mod_ctx_struct,
812    );
813    #[link_name = "fmpz_mod_polyu1n_bidegree__extern"]
814    pub fn fmpz_mod_polyu1n_bidegree(A: *const fmpz_mod_polyun_struct) -> ulong;
815    #[link_name = "fmpz_mod_polyun_leadcoeff__extern"]
816    pub fn fmpz_mod_polyun_leadcoeff(A: *const fmpz_mod_polyun_struct) -> *const fmpz;
817    #[link_name = "fmpz_mod_polyun_swap__extern"]
818    pub fn fmpz_mod_polyun_swap(A: *mut fmpz_mod_polyun_struct, B: *mut fmpz_mod_polyun_struct);
819    pub fn fmpz_mod_polyun_is_canonical(
820        A: *const fmpz_mod_polyun_struct,
821        ctx: *const fmpz_mod_ctx_struct,
822    ) -> libc::c_int;
823    #[link_name = "fmpz_mod_polyun_init__extern"]
824    pub fn fmpz_mod_polyun_init(
825        A: *mut fmpz_mod_polyun_struct,
826        UNUSED_ctx: *const fmpz_mod_ctx_struct,
827    );
828    pub fn fmpz_mod_polyun_clear(A: *mut fmpz_mod_polyun_struct, ctx: *const fmpz_mod_ctx_struct);
829    pub fn fmpz_mod_polyun_realloc(
830        A: *mut fmpz_mod_polyun_struct,
831        len: slong,
832        ctx: *const fmpz_mod_ctx_struct,
833    );
834    pub fn fmpz_mod_polyu2n_print_pretty(
835        A: *const fmpz_mod_polyun_struct,
836        var0: *const libc::c_char,
837        var1: *const libc::c_char,
838        varlast: *const libc::c_char,
839        ctx: *const fmpz_mod_ctx_struct,
840    );
841    pub fn fmpz_mod_polyun_equal(
842        A: *mut fmpz_mod_polyun_struct,
843        B: *const fmpz_mod_polyun_struct,
844        ctx: *const fmpz_mod_ctx_struct,
845    ) -> libc::c_int;
846    pub fn fmpz_mod_polyun_set(
847        A: *mut fmpz_mod_polyun_struct,
848        B: *const fmpz_mod_polyun_struct,
849        ctx: *const fmpz_mod_ctx_struct,
850    );
851    pub fn fmpz_mod_polyu3n_print_pretty(
852        A: *const fmpz_mod_polyun_struct,
853        var0: *const libc::c_char,
854        var1: *const libc::c_char,
855        var2: *const libc::c_char,
856        varlast: *const libc::c_char,
857        ctx: *const fmpz_mod_ctx_struct,
858    );
859    pub fn fmpz_mod_polyu1n_print_pretty(
860        A: *const fmpz_mod_polyun_struct,
861        var0: *const libc::c_char,
862        varlast: *const libc::c_char,
863        ctx: *const fmpz_mod_ctx_struct,
864    );
865    #[link_name = "fmpz_mod_polyun_fit_length__extern"]
866    pub fn fmpz_mod_polyun_fit_length(
867        A: *mut fmpz_mod_polyun_struct,
868        len: slong,
869        ctx: *const fmpz_mod_ctx_struct,
870    );
871    pub fn fmpz_mod_polyun_one(A: *mut fmpz_mod_polyun_struct, ctx: *const fmpz_mod_ctx_struct);
872    pub fn fmpz_mod_mpoly_get_polyu1n(
873        A: *mut fmpz_mod_polyun_struct,
874        B: *const fmpz_mod_mpoly_struct,
875        varx: slong,
876        vary: slong,
877        ctx: *const fmpz_mod_mpoly_ctx_struct,
878    );
879    pub fn fmpz_mod_mpoly_set_polyu1n(
880        B: *mut fmpz_mod_mpoly_struct,
881        A: *const fmpz_mod_polyun_struct,
882        varx: slong,
883        vary: slong,
884        ctx: *const fmpz_mod_mpoly_ctx_struct,
885    );
886    pub fn fmpz_mod_mpolyn_init(
887        A: *mut fmpz_mod_mpolyn_struct,
888        bits: flint_bitcnt_t,
889        UNUSED_ctx: *const fmpz_mod_mpoly_ctx_struct,
890    );
891    #[link_name = "fmpz_mod_mpolyn_swap__extern"]
892    pub fn fmpz_mod_mpolyn_swap(
893        A: *mut fmpz_mod_mpolyn_struct,
894        B: *mut fmpz_mod_mpolyn_struct,
895        UNUSED_ctx: *const fmpz_mod_mpoly_ctx_struct,
896    );
897    pub fn fmpz_mod_mpolyn_fit_length(
898        A: *mut fmpz_mod_mpolyn_struct,
899        length: slong,
900        ctx: *const fmpz_mod_mpoly_ctx_struct,
901    );
902    #[link_name = "fmpz_mod_mpolyn_leadcoeff__extern"]
903    pub fn fmpz_mod_mpolyn_leadcoeff(A: *const fmpz_mod_mpolyn_struct) -> *const fmpz;
904    pub fn fmpz_mod_mpolyn_is_canonical(
905        A: *const fmpz_mod_mpolyn_struct,
906        ctx: *const fmpz_mod_mpoly_ctx_struct,
907    ) -> libc::c_int;
908    pub fn fmpz_mod_mpolyn_lastdeg(
909        A: *const fmpz_mod_mpolyn_struct,
910        ctx: *const fmpz_mod_mpoly_ctx_struct,
911    ) -> slong;
912    pub fn fmpz_mod_mpolyn_clear(
913        A: *mut fmpz_mod_mpolyn_struct,
914        ctx: *const fmpz_mod_mpoly_ctx_struct,
915    );
916    pub fn fmpz_mod_mpolyn_one(
917        A: *mut fmpz_mod_mpolyn_struct,
918        ctx: *const fmpz_mod_mpoly_ctx_struct,
919    );
920    pub fn fmpz_mod_mpolyn_scalar_mul_fmpz_mod(
921        A: *mut fmpz_mod_mpolyn_struct,
922        c: *const fmpz,
923        ctx: *const fmpz_mod_mpoly_ctx_struct,
924    );
925    pub fn fmpz_mod_mpolyn_equal(
926        A: *const fmpz_mod_mpolyn_struct,
927        B: *const fmpz_mod_mpolyn_struct,
928        ctx: *const fmpz_mod_mpoly_ctx_struct,
929    ) -> libc::c_int;
930    pub fn fmpz_mod_mpolyn_print_pretty(
931        poly: *const fmpz_mod_mpolyn_struct,
932        x: *mut *const libc::c_char,
933        ctx: *const fmpz_mod_mpoly_ctx_struct,
934    );
935    pub fn fmpz_mod_mpoly_cvtfrom_mpolyn(
936        A: *mut fmpz_mod_mpoly_struct,
937        B: *const fmpz_mod_mpolyn_struct,
938        var: slong,
939        ctx: *const fmpz_mod_mpoly_ctx_struct,
940    );
941    pub fn fmpz_mod_mpoly_cvtto_mpolyn(
942        A: *mut fmpz_mod_mpolyn_struct,
943        B: *const fmpz_mod_mpoly_struct,
944        var: slong,
945        ctx: *const fmpz_mod_mpoly_ctx_struct,
946    );
947    pub fn fmpz_mod_mpoly_to_mpolyn_perm_deflate(
948        A: *mut fmpz_mod_mpolyn_struct,
949        nctx: *const fmpz_mod_mpoly_ctx_struct,
950        B: *const fmpz_mod_mpoly_struct,
951        ctx: *const fmpz_mod_mpoly_ctx_struct,
952        perm: *const slong,
953        shift: *const ulong,
954        stride: *const ulong,
955    );
956    pub fn fmpz_mod_mpoly_from_mpolyn_perm_inflate(
957        A: *mut fmpz_mod_mpoly_struct,
958        Abits: flint_bitcnt_t,
959        ctx: *const fmpz_mod_mpoly_ctx_struct,
960        B: *const fmpz_mod_mpolyn_struct,
961        nctx: *const fmpz_mod_mpoly_ctx_struct,
962        perm: *const slong,
963        shift: *const ulong,
964        stride: *const ulong,
965    );
966    pub fn fmpz_mod_mpolyn_set(
967        A: *mut fmpz_mod_mpolyn_struct,
968        B: *const fmpz_mod_mpolyn_struct,
969        ctx: *const fmpz_mod_mpoly_ctx_struct,
970    );
971    pub fn fmpz_mod_mpolyn_is_nonzero_fmpz(
972        A: *const fmpz_mod_mpolyn_struct,
973        ctx: *const fmpz_mod_mpoly_ctx_struct,
974    ) -> libc::c_int;
975    pub fn fmpz_mod_mpolyn_divides(
976        Q: *mut fmpz_mod_mpolyn_struct,
977        A: *const fmpz_mod_mpolyn_struct,
978        B: *const fmpz_mod_mpolyn_struct,
979        ctx: *const fmpz_mod_mpoly_ctx_struct,
980    ) -> libc::c_int;
981    pub fn fmpz_mod_polyu1n_interp_reduce_2sm_poly(
982        E: *mut fmpz_mod_poly_struct,
983        F: *mut fmpz_mod_poly_struct,
984        A: *const fmpz_mod_polyun_struct,
985        alphapow: *mut fmpz_mod_poly_struct,
986        ctx: *const fmpz_mod_ctx_struct,
987    );
988    pub fn fmpz_mod_polyu1n_interp_lift_2sm_poly(
989        lastdeg: *mut slong,
990        F: *mut fmpz_mod_polyun_struct,
991        A: *const fmpz_mod_poly_struct,
992        B: *const fmpz_mod_poly_struct,
993        alpha: *const fmpz,
994        ctx: *const fmpz_mod_ctx_struct,
995    );
996    pub fn fmpz_mod_polyu1n_interp_crt_2sm_poly(
997        lastdeg: *mut slong,
998        F: *mut fmpz_mod_polyun_struct,
999        T: *mut fmpz_mod_polyun_struct,
1000        A: *const fmpz_mod_poly_struct,
1001        B: *const fmpz_mod_poly_struct,
1002        modulus: *const fmpz_mod_poly_struct,
1003        alphapow: *mut fmpz_mod_poly_struct,
1004        ctx: *const fmpz_mod_ctx_struct,
1005    ) -> libc::c_int;
1006    pub fn fmpz_mod_mpolyn_interp_reduce_sm_poly(
1007        E: *mut fmpz_mod_poly_struct,
1008        A: *const fmpz_mod_mpolyn_struct,
1009        alpha: *const fmpz,
1010        ctx: *const fmpz_mod_mpoly_ctx_struct,
1011    );
1012    pub fn fmpz_mod_mpolyn_interp_lift_sm_poly(
1013        A: *mut fmpz_mod_mpolyn_struct,
1014        B: *const fmpz_mod_poly_struct,
1015        ctx: *const fmpz_mod_mpoly_ctx_struct,
1016    );
1017    pub fn fmpz_mod_mpolyn_interp_crt_sm_poly(
1018        lastdeg_: *mut slong,
1019        F: *mut fmpz_mod_mpolyn_struct,
1020        T: *mut fmpz_mod_mpolyn_struct,
1021        A: *const fmpz_mod_poly_struct,
1022        modulus: *const fmpz_mod_poly_struct,
1023        alpha: *const fmpz,
1024        ctx: *const fmpz_mod_mpoly_ctx_struct,
1025    ) -> libc::c_int;
1026    pub fn fmpz_mod_mpolyn_interp_reduce_2sm_mpolyn(
1027        E: *mut fmpz_mod_mpolyn_struct,
1028        F: *mut fmpz_mod_mpolyn_struct,
1029        A: *mut fmpz_mod_mpolyn_struct,
1030        var: slong,
1031        alphapow: *mut fmpz_mod_poly_struct,
1032        ctx: *const fmpz_mod_mpoly_ctx_struct,
1033    );
1034    pub fn fmpz_mod_mpolyn_interp_lift_2sm_mpolyn(
1035        lastdeg: *mut slong,
1036        T: *mut fmpz_mod_mpolyn_struct,
1037        A: *mut fmpz_mod_mpolyn_struct,
1038        B: *mut fmpz_mod_mpolyn_struct,
1039        var: slong,
1040        alpha: *const fmpz,
1041        ctx: *const fmpz_mod_mpoly_ctx_struct,
1042    );
1043    pub fn fmpz_mod_mpolyn_interp_crt_2sm_mpolyn(
1044        lastdeg: *mut slong,
1045        F: *mut fmpz_mod_mpolyn_struct,
1046        T: *mut fmpz_mod_mpolyn_struct,
1047        A: *mut fmpz_mod_mpolyn_struct,
1048        B: *mut fmpz_mod_mpolyn_struct,
1049        var: slong,
1050        modulus: *mut fmpz_mod_poly_struct,
1051        alphapow: *mut fmpz_mod_poly_struct,
1052        ctx: *const fmpz_mod_mpoly_ctx_struct,
1053    ) -> libc::c_int;
1054    pub fn fmpz_mod_mpolyn_interp_lift_sm_mpoly(
1055        A: *mut fmpz_mod_mpolyn_struct,
1056        B: *const fmpz_mod_mpoly_struct,
1057        ctx: *const fmpz_mod_mpoly_ctx_struct,
1058    );
1059    pub fn fmpz_mod_mpolyn_interp_crt_sm_mpoly(
1060        lastdeg: *mut slong,
1061        F: *mut fmpz_mod_mpolyn_struct,
1062        T: *mut fmpz_mod_mpolyn_struct,
1063        A: *mut fmpz_mod_mpoly_struct,
1064        modulus: *mut fmpz_mod_poly_struct,
1065        alphapow: *mut fmpz_mod_poly_struct,
1066        ctx: *const fmpz_mod_mpoly_ctx_struct,
1067    ) -> libc::c_int;
1068    pub fn fmpz_mod_mpolyn_interp_mcrt_sm_mpoly(
1069        lastdeg: *mut slong,
1070        F: *mut fmpz_mod_mpolyn_struct,
1071        A: *const fmpz_mod_mpoly_struct,
1072        modulus: *const fmpz_mod_poly_struct,
1073        alphapow: *mut fmpz_mod_poly_struct,
1074        ctx: *const fmpz_mod_mpoly_ctx_struct,
1075    ) -> libc::c_int;
1076    #[link_name = "fmpz_mod_polyu_swap__extern"]
1077    pub fn fmpz_mod_polyu_swap(A: *mut fmpz_mod_polyu_struct, B: *mut fmpz_mod_polyu_struct);
1078    pub fn fmpz_mod_polyu_init(A: *mut fmpz_mod_polyu_struct);
1079    pub fn fmpz_mod_polyu_clear(A: *mut fmpz_mod_polyu_struct);
1080    pub fn fmpz_mod_polyu_realloc(A: *mut fmpz_mod_polyu_struct, len: slong);
1081    #[link_name = "fmpz_mod_polyu_fit_length__extern"]
1082    pub fn fmpz_mod_polyu_fit_length(
1083        a: *mut fmpz_mod_polyu_struct,
1084        len: slong,
1085        UNUSED_ctx: *const fmpz_mod_ctx_struct,
1086    );
1087    pub fn fmpz_mod_polyu3_degrees(
1088        deg0: *mut slong,
1089        deg1: *mut slong,
1090        deg2: *mut slong,
1091        A: *const fmpz_mod_polyu_struct,
1092    );
1093    pub fn fmpz_mod_polyu3_print_pretty(
1094        A: *const fmpz_mod_polyu_struct,
1095        var0: *const libc::c_char,
1096        var1: *const libc::c_char,
1097        var2: *const libc::c_char,
1098        UNUSED_ctx: *const fmpz_mod_ctx_struct,
1099    );
1100    pub fn fmpz_mod_mpolyu_is_canonical(
1101        A: *const fmpz_mod_mpolyu_struct,
1102        ctx: *const fmpz_mod_mpoly_ctx_struct,
1103    ) -> libc::c_int;
1104    pub fn fmpz_mod_mpolyu3_print_pretty(
1105        A: *const fmpz_mod_mpolyu_struct,
1106        var0: *const libc::c_char,
1107        var1: *const libc::c_char,
1108        var2: *const libc::c_char,
1109        vars: *mut *const libc::c_char,
1110        ctx: *const fmpz_mod_mpoly_ctx_struct,
1111    );
1112    pub fn fmpz_mod_bpoly_is_canonical(
1113        A: *const fmpz_mod_bpoly_struct,
1114        ctx: *const fmpz_mod_ctx_struct,
1115    ) -> libc::c_int;
1116    #[link_name = "fmpz_mod_bpoly_init__extern"]
1117    pub fn fmpz_mod_bpoly_init(
1118        A: *mut fmpz_mod_bpoly_struct,
1119        UNUSED_ctx: *const fmpz_mod_ctx_struct,
1120    );
1121    pub fn fmpz_mod_bpoly_clear(A: *mut fmpz_mod_bpoly_struct, ctx: *const fmpz_mod_ctx_struct);
1122    #[link_name = "fmpz_mod_bpoly_swap__extern"]
1123    pub fn fmpz_mod_bpoly_swap(
1124        A: *mut fmpz_mod_bpoly_struct,
1125        B: *mut fmpz_mod_bpoly_struct,
1126        UNUSED_ctx: *const fmpz_mod_ctx_struct,
1127    );
1128    #[link_name = "fmpz_mod_bpoly_get_coeff__extern"]
1129    pub fn fmpz_mod_bpoly_get_coeff(
1130        c: *mut fmpz,
1131        A: *const fmpz_mod_bpoly_struct,
1132        e0: slong,
1133        e1: slong,
1134        ctx: *const fmpz_mod_ctx_struct,
1135    );
1136    #[link_name = "fmpz_mod_bpoly_degree0__extern"]
1137    pub fn fmpz_mod_bpoly_degree0(
1138        A: *const fmpz_mod_bpoly_struct,
1139        UNUSED_ctx: *const fmpz_mod_ctx_struct,
1140    ) -> slong;
1141    #[link_name = "fmpz_mod_bpoly_normalise__extern"]
1142    pub fn fmpz_mod_bpoly_normalise(A: *mut fmpz_mod_bpoly_struct, ctx: *const fmpz_mod_ctx_struct);
1143    pub fn fmpz_mod_bpoly_equal(
1144        A: *const fmpz_mod_bpoly_struct,
1145        B: *const fmpz_mod_bpoly_struct,
1146        ctx: *const fmpz_mod_ctx_struct,
1147    ) -> libc::c_int;
1148    pub fn fmpz_mod_bpoly_set(
1149        A: *mut fmpz_mod_bpoly_struct,
1150        B: *const fmpz_mod_bpoly_struct,
1151        ctx: *const fmpz_mod_ctx_struct,
1152    );
1153    pub fn fmpz_mod_bpoly_set_poly_gen1(
1154        A: *mut fmpz_mod_bpoly_struct,
1155        B: *const fmpz_mod_poly_struct,
1156        ctx: *const fmpz_mod_ctx_struct,
1157    );
1158    pub fn fmpz_mod_bpoly_set_poly_gen0(
1159        A: *mut fmpz_mod_bpoly_struct,
1160        B: *const fmpz_mod_poly_struct,
1161        ctx: *const fmpz_mod_ctx_struct,
1162    );
1163    pub fn fmpz_mod_bpoly_one(A: *mut fmpz_mod_bpoly_struct, ctx: *const fmpz_mod_ctx_struct);
1164    #[link_name = "fmpz_mod_bpoly_is_one__extern"]
1165    pub fn fmpz_mod_bpoly_is_one(
1166        A: *const fmpz_mod_bpoly_struct,
1167        ctx: *const fmpz_mod_ctx_struct,
1168    ) -> libc::c_int;
1169    pub fn fmpz_mod_bpoly_degree1(
1170        A: *const fmpz_mod_bpoly_struct,
1171        UNUSED_ctx: *const fmpz_mod_ctx_struct,
1172    ) -> slong;
1173    pub fn fmpz_mod_bpoly_print_pretty(
1174        A: *const fmpz_mod_bpoly_struct,
1175        xvar: *const libc::c_char,
1176        yvar: *const libc::c_char,
1177        ctx: *const fmpz_mod_ctx_struct,
1178    );
1179    pub fn fmpz_mod_bpoly_fit_length(
1180        A: *mut fmpz_mod_bpoly_struct,
1181        len: slong,
1182        ctx: *const fmpz_mod_ctx_struct,
1183    );
1184    pub fn fmpz_mod_bpoly_set_coeff(
1185        A: *mut fmpz_mod_bpoly_struct,
1186        xi: slong,
1187        yi: slong,
1188        c: *const fmpz,
1189        ctx: *const fmpz_mod_ctx_struct,
1190    );
1191    pub fn fmpz_mod_bpoly_zero(
1192        A: *mut fmpz_mod_bpoly_struct,
1193        UNUSED_ctx: *const fmpz_mod_ctx_struct,
1194    );
1195    pub fn fmpz_mod_bpoly_reverse_vars(
1196        A: *mut fmpz_mod_bpoly_struct,
1197        B: *const fmpz_mod_bpoly_struct,
1198        ctx: *const fmpz_mod_ctx_struct,
1199    );
1200    pub fn fmpz_mod_bpoly_taylor_shift_gen1(
1201        A: *mut fmpz_mod_bpoly_struct,
1202        B: *const fmpz_mod_bpoly_struct,
1203        c: *const fmpz,
1204        ctx: *const fmpz_mod_ctx_struct,
1205    );
1206    pub fn fmpz_mod_bpoly_sub(
1207        A: *mut fmpz_mod_bpoly_struct,
1208        B: *const fmpz_mod_bpoly_struct,
1209        C: *const fmpz_mod_bpoly_struct,
1210        ctx: *const fmpz_mod_ctx_struct,
1211    );
1212    pub fn fmpz_mod_bpoly_add(
1213        A: *mut fmpz_mod_bpoly_struct,
1214        B: *const fmpz_mod_bpoly_struct,
1215        C: *const fmpz_mod_bpoly_struct,
1216        ctx: *const fmpz_mod_ctx_struct,
1217    );
1218    pub fn fmpz_mod_bpoly_make_primitive(
1219        g: *mut fmpz_mod_poly_struct,
1220        A: *mut fmpz_mod_bpoly_struct,
1221        ctx: *const fmpz_mod_ctx_struct,
1222    );
1223    pub fn fmpz_mod_bpoly_mul(
1224        A: *mut fmpz_mod_bpoly_struct,
1225        B: *const fmpz_mod_bpoly_struct,
1226        C: *const fmpz_mod_bpoly_struct,
1227        ctx: *const fmpz_mod_ctx_struct,
1228    );
1229    pub fn fmpz_mod_bpoly_mul_series(
1230        A: *mut fmpz_mod_bpoly_struct,
1231        B: *const fmpz_mod_bpoly_struct,
1232        C: *const fmpz_mod_bpoly_struct,
1233        order: slong,
1234        ctx: *const fmpz_mod_ctx_struct,
1235    );
1236    pub fn fmpz_mod_bpoly_divrem_series(
1237        Q: *mut fmpz_mod_bpoly_struct,
1238        R: *mut fmpz_mod_bpoly_struct,
1239        A: *const fmpz_mod_bpoly_struct,
1240        B: *const fmpz_mod_bpoly_struct,
1241        order: slong,
1242        ctx: *const fmpz_mod_ctx_struct,
1243    );
1244    pub fn fmpz_mod_bpoly_divides(
1245        Q: *mut fmpz_mod_bpoly_struct,
1246        A: *const fmpz_mod_bpoly_struct,
1247        B: *const fmpz_mod_bpoly_struct,
1248        ctx: *const fmpz_mod_ctx_struct,
1249    ) -> libc::c_int;
1250    pub fn fmpz_mod_bpoly_taylor_shift_gen0(
1251        A: *mut fmpz_mod_bpoly_struct,
1252        alpha: *const fmpz,
1253        ctx: *const fmpz_mod_ctx_struct,
1254    );
1255    pub fn fmpz_mod_bpoly_derivative_gen0(
1256        A: *mut fmpz_mod_bpoly_struct,
1257        B: *const fmpz_mod_bpoly_struct,
1258        ctx: *const fmpz_mod_ctx_struct,
1259    );
1260    pub fn fmpz_mod_bpoly_make_monic_series(
1261        A: *mut fmpz_mod_bpoly_struct,
1262        B: *const fmpz_mod_bpoly_struct,
1263        order: slong,
1264        ctx: *const fmpz_mod_ctx_struct,
1265    );
1266    #[link_name = "fmpz_mod_tpoly_init__extern"]
1267    pub fn fmpz_mod_tpoly_init(
1268        A: *mut fmpz_mod_tpoly_struct,
1269        UNUSED_ctx: *const fmpz_mod_ctx_struct,
1270    );
1271    #[link_name = "fmpz_mod_tpoly_swap__extern"]
1272    pub fn fmpz_mod_tpoly_swap(
1273        A: *mut fmpz_mod_tpoly_struct,
1274        B: *mut fmpz_mod_tpoly_struct,
1275        UNUSED_ctx: *const fmpz_mod_ctx_struct,
1276    );
1277    pub fn fmpz_mod_tpoly_fit_length(
1278        A: *mut fmpz_mod_tpoly_struct,
1279        len: slong,
1280        ctx: *const fmpz_mod_ctx_struct,
1281    );
1282    pub fn fmpz_mod_tpoly_clear(A: *mut fmpz_mod_tpoly_struct, ctx: *const fmpz_mod_ctx_struct);
1283    pub fn fmpz_mod_mpoly_get_fmpz_mod_bpoly(
1284        A: *mut fmpz_mod_bpoly_struct,
1285        B: *const fmpz_mod_mpoly_struct,
1286        var0: slong,
1287        var1: slong,
1288        ctx: *const fmpz_mod_mpoly_ctx_struct,
1289    );
1290    pub fn fmpz_mod_mpoly_set_fmpz_mod_bpoly(
1291        A: *mut fmpz_mod_mpoly_struct,
1292        Abits: flint_bitcnt_t,
1293        B: *const fmpz_mod_bpoly_struct,
1294        var0: slong,
1295        var1: slong,
1296        ctx: *const fmpz_mod_mpoly_ctx_struct,
1297    );
1298    pub fn fmpz_mod_bpoly_factor_smprime(
1299        c: *mut fmpz_mod_poly_struct,
1300        F: *mut fmpz_mod_tpoly_struct,
1301        B: *mut fmpz_mod_bpoly_struct,
1302        allow_shift: libc::c_int,
1303        ctx: *const fmpz_mod_ctx_struct,
1304    ) -> libc::c_int;
1305    pub fn _fmpz_mod_zip_vand_solve(
1306        coeffs: *mut fmpz,
1307        monomials: *const fmpz,
1308        mlength: slong,
1309        evals: *const fmpz,
1310        elength: slong,
1311        master: *const fmpz,
1312        scratch: *mut fmpz,
1313        ctx: *const fmpz_mod_ctx_struct,
1314    ) -> libc::c_int;
1315    pub fn _fmpz_mod_zip_eval_step(
1316        ev: *mut fmpz,
1317        cur: *mut fmpz,
1318        inc: *const fmpz,
1319        coeffs: *const fmpz,
1320        length: slong,
1321        ctx: *const fmpz_mod_ctx_struct,
1322    );
1323    #[link_name = "fmpz_mod_mpolyv_init__extern"]
1324    pub fn fmpz_mod_mpolyv_init(
1325        A: *mut fmpz_mod_mpolyv_struct,
1326        UNUSED_ctx: *const fmpz_mod_mpoly_ctx_struct,
1327    );
1328    #[link_name = "fmpz_mod_mpolyv_swap__extern"]
1329    pub fn fmpz_mod_mpolyv_swap(
1330        A: *mut fmpz_mod_mpolyv_struct,
1331        B: *mut fmpz_mod_mpolyv_struct,
1332        UNUSED_ctx: *const fmpz_mod_mpoly_ctx_struct,
1333    );
1334    pub fn fmpz_mod_mpolyv_clear(
1335        A: *mut fmpz_mod_mpolyv_struct,
1336        ctx: *const fmpz_mod_mpoly_ctx_struct,
1337    );
1338    pub fn fmpz_mod_mpolyv_print_pretty(
1339        poly: *const fmpz_mod_mpolyv_struct,
1340        x: *mut *const libc::c_char,
1341        ctx: *const fmpz_mod_mpoly_ctx_struct,
1342    );
1343    pub fn fmpz_mod_mpolyv_fit_length(
1344        A: *mut fmpz_mod_mpolyv_struct,
1345        length: slong,
1346        ctx: *const fmpz_mod_mpoly_ctx_struct,
1347    );
1348    pub fn fmpz_mod_mpolyv_set_coeff(
1349        A: *mut fmpz_mod_mpolyv_struct,
1350        i: slong,
1351        c: *mut fmpz_mod_mpoly_struct,
1352        ctx: *const fmpz_mod_mpoly_ctx_struct,
1353    );
1354    pub fn fmpz_mod_mpoly_to_mpolyv(
1355        A: *mut fmpz_mod_mpolyv_struct,
1356        B: *const fmpz_mod_mpoly_struct,
1357        xalpha: *const fmpz_mod_mpoly_struct,
1358        ctx: *const fmpz_mod_mpoly_ctx_struct,
1359    );
1360    pub fn fmpz_mod_mpoly_from_mpolyv(
1361        A: *mut fmpz_mod_mpoly_struct,
1362        Abits: flint_bitcnt_t,
1363        B: *const fmpz_mod_mpolyv_struct,
1364        xalpha: *const fmpz_mod_mpoly_struct,
1365        ctx: *const fmpz_mod_mpoly_ctx_struct,
1366    );
1367    pub fn _fmpz_mod_mpoly_vec_content_mpoly(
1368        g: *mut fmpz_mod_mpoly_struct,
1369        A: *const fmpz_mod_mpoly_struct,
1370        Alen: slong,
1371        ctx: *const fmpz_mod_mpoly_ctx_struct,
1372    ) -> libc::c_int;
1373    pub fn _fmpz_mod_mpoly_vec_divexact_mpoly(
1374        A: *mut fmpz_mod_mpoly_struct,
1375        Alen: slong,
1376        c: *const fmpz_mod_mpoly_struct,
1377        ctx: *const fmpz_mod_mpoly_ctx_struct,
1378    );
1379    pub fn _fmpz_mod_mpoly_vec_mul_mpoly(
1380        A: *mut fmpz_mod_mpoly_struct,
1381        Alen: slong,
1382        c: *const fmpz_mod_mpoly_struct,
1383        ctx: *const fmpz_mod_mpoly_ctx_struct,
1384    );
1385    pub fn _fmpz_mod_mpoly_factor_separable(
1386        f: *mut fmpz_mod_mpoly_factor_struct,
1387        A: *const fmpz_mod_mpoly_struct,
1388        ctx: *const fmpz_mod_mpoly_ctx_struct,
1389        sep: libc::c_int,
1390    ) -> libc::c_int;
1391    pub fn fmpz_mod_mpoly_factor_lcc_wang(
1392        lc_divs: *mut fmpz_mod_mpoly_struct,
1393        lcAfac: *const fmpz_mod_mpoly_factor_struct,
1394        Auc: *const fmpz_mod_poly_struct,
1395        Auf: *const fmpz_mod_bpoly_struct,
1396        r: slong,
1397        alpha: *const fmpz_mod_poly_struct,
1398        ctx: *const fmpz_mod_mpoly_ctx_struct,
1399    ) -> libc::c_int;
1400    pub fn fmpz_mod_mpoly_factor_irred_smprime_zassenhaus(
1401        fac: *mut fmpz_mod_mpolyv_struct,
1402        A: *const fmpz_mod_mpoly_struct,
1403        ctx: *const fmpz_mod_mpoly_ctx_struct,
1404        state: *mut flint_rand_struct,
1405    ) -> libc::c_int;
1406    pub fn fmpz_mod_mpoly_factor_irred_smprime_wang(
1407        fac: *mut fmpz_mod_mpolyv_struct,
1408        A: *const fmpz_mod_mpoly_struct,
1409        lcAfac: *const fmpz_mod_mpoly_factor_struct,
1410        lcA: *const fmpz_mod_mpoly_struct,
1411        ctx: *const fmpz_mod_mpoly_ctx_struct,
1412        state: *mut flint_rand_struct,
1413    ) -> libc::c_int;
1414    pub fn fmpz_mod_mpoly_factor_irred_smprime_zippel(
1415        fac: *mut fmpz_mod_mpolyv_struct,
1416        A: *const fmpz_mod_mpoly_struct,
1417        lcAfac: *const fmpz_mod_mpoly_factor_struct,
1418        lcA: *const fmpz_mod_mpoly_struct,
1419        ctx: *const fmpz_mod_mpoly_ctx_struct,
1420        state: *mut flint_rand_struct,
1421    ) -> libc::c_int;
1422    pub fn fmpz_mod_mpoly_compression_do(
1423        L: *mut fmpz_mod_mpoly_struct,
1424        Lctx: *const fmpz_mod_mpoly_ctx_struct,
1425        Acoeffs: *mut fmpz,
1426        Alen: slong,
1427        M: *mut mpoly_compression_struct,
1428    );
1429    pub fn fmpz_mod_mpoly_compression_undo(
1430        A: *mut fmpz_mod_mpoly_struct,
1431        Abits: flint_bitcnt_t,
1432        Actx: *const fmpz_mod_mpoly_ctx_struct,
1433        L: *mut fmpz_mod_mpoly_struct,
1434        Lctx: *const fmpz_mod_mpoly_ctx_struct,
1435        M: *mut mpoly_compression_struct,
1436    );
1437    pub fn fmpz_mod_mpoly_pfrac_init(
1438        Iv: *mut fmpz_mod_mpoly_pfrac_struct,
1439        bits: flint_bitcnt_t,
1440        l: slong,
1441        r: slong,
1442        betas: *const fmpz_mod_mpoly_struct,
1443        alpha: *const fmpz,
1444        ctx: *const fmpz_mod_mpoly_ctx_struct,
1445    ) -> libc::c_int;
1446    pub fn fmpz_mod_mpoly_pfrac_clear(
1447        Iv: *mut fmpz_mod_mpoly_pfrac_struct,
1448        ctx: *const fmpz_mod_mpoly_ctx_struct,
1449    );
1450    pub fn fmpz_mod_mpoly_pfrac(
1451        r: slong,
1452        t: *mut fmpz_mod_mpoly_struct,
1453        deg: *const slong,
1454        Iv: *mut fmpz_mod_mpoly_pfrac_struct,
1455        ctx: *const fmpz_mod_mpoly_ctx_struct,
1456    ) -> libc::c_int;
1457    pub fn fmpz_mod_mpoly_hlift(
1458        m: slong,
1459        f: *mut fmpz_mod_mpoly_struct,
1460        r: slong,
1461        alpha: *const fmpz,
1462        A: *const fmpz_mod_mpoly_struct,
1463        degs: *const slong,
1464        ctx: *const fmpz_mod_mpoly_ctx_struct,
1465    ) -> libc::c_int;
1466    pub fn fmpz_mod_bpoly_pfrac(
1467        r: slong,
1468        C: *mut fmpz_mod_bpoly_struct,
1469        C_deg1_bound: *mut slong,
1470        A: *mut fmpz_mod_bpoly_struct,
1471        B: *mut fmpz_mod_bpoly_struct,
1472        ctx: *const fmpz_mod_ctx_struct,
1473    ) -> libc::c_int;
1474    pub fn fmpz_mod_bpoly_hlift2(
1475        A: *mut fmpz_mod_bpoly_struct,
1476        B0: *mut fmpz_mod_bpoly_struct,
1477        B1: *mut fmpz_mod_bpoly_struct,
1478        alpha: *const fmpz,
1479        degree_inner: slong,
1480        ctx: *const fmpz_mod_ctx_struct,
1481        St: *mut fmpz_mod_poly_bpoly_stack_struct,
1482    ) -> libc::c_int;
1483    pub fn fmpz_mod_bpoly_hlift(
1484        r: slong,
1485        A: *mut fmpz_mod_bpoly_struct,
1486        B: *mut fmpz_mod_bpoly_struct,
1487        alpha: *const fmpz,
1488        degree_inner: slong,
1489        ctx: *const fmpz_mod_ctx_struct,
1490        St: *mut fmpz_mod_poly_bpoly_stack_struct,
1491    ) -> libc::c_int;
1492    pub fn fmpz_mod_polyu3_hlift(
1493        r: slong,
1494        BB: *mut fmpz_mod_polyun_struct,
1495        A: *mut fmpz_mod_polyu_struct,
1496        B: *mut fmpz_mod_polyu_struct,
1497        beta: *const fmpz,
1498        degree_inner: slong,
1499        ctx: *const fmpz_mod_ctx_struct,
1500    ) -> libc::c_int;
1501    pub fn fmpz_mod_mpoly_hlift_zippel(
1502        m: slong,
1503        B: *mut fmpz_mod_mpoly_struct,
1504        r: slong,
1505        alpha: *const fmpz,
1506        A: *const fmpz_mod_mpoly_struct,
1507        degs: *const slong,
1508        ctx: *const fmpz_mod_mpoly_ctx_struct,
1509        state: *mut flint_rand_struct,
1510    ) -> libc::c_int;
1511    pub fn fmpz_mod_mpoly_factor_algo(
1512        f: *mut fmpz_mod_mpoly_factor_struct,
1513        A: *const fmpz_mod_mpoly_struct,
1514        ctx: *const fmpz_mod_mpoly_ctx_struct,
1515        algo: libc::c_uint,
1516    ) -> libc::c_int;
1517    pub fn fmpz_mod_mpoly_factor_zassenhaus(
1518        f: *mut fmpz_mod_mpoly_factor_struct,
1519        A: *const fmpz_mod_mpoly_struct,
1520        ctx: *const fmpz_mod_mpoly_ctx_struct,
1521    ) -> libc::c_int;
1522    pub fn fmpz_mod_mpoly_factor_wang(
1523        f: *mut fmpz_mod_mpoly_factor_struct,
1524        A: *const fmpz_mod_mpoly_struct,
1525        ctx: *const fmpz_mod_mpoly_ctx_struct,
1526    ) -> libc::c_int;
1527    pub fn fmpz_mod_mpoly_factor_zippel(
1528        f: *mut fmpz_mod_mpoly_factor_struct,
1529        A: *const fmpz_mod_mpoly_struct,
1530        ctx: *const fmpz_mod_mpoly_ctx_struct,
1531    ) -> libc::c_int;
1532    pub fn _fmpz_mod_mpoly_evaluate_rest_fmpz_mod_poly(
1533        E: *mut fmpz_mod_poly_struct,
1534        starts: *mut slong,
1535        ends: *mut slong,
1536        stops: *mut slong,
1537        es: *mut ulong,
1538        Acoeffs: *const fmpz,
1539        Aexps: *const ulong,
1540        Alen: slong,
1541        var: slong,
1542        alphas: *const fmpz_mod_poly_struct,
1543        offsets: *const slong,
1544        shifts: *const slong,
1545        N: slong,
1546        mask: ulong,
1547        nvars: slong,
1548        ctx: *const fmpz_mod_ctx_struct,
1549    ) -> libc::c_int;
1550    pub fn _fmpz_mod_mpoly_eval_rest_to_fmpz_mod_bpoly(
1551        E: *mut fmpz_mod_bpoly_struct,
1552        A: *const fmpz_mod_mpoly_struct,
1553        alphabetas: *const fmpz_mod_poly_struct,
1554        ctx: *const fmpz_mod_mpoly_ctx_struct,
1555    );
1556    pub fn _fmpz_mod_mpoly_set_fmpz_mod_bpoly_var1_zero(
1557        A: *mut fmpz_mod_mpoly_struct,
1558        Abits: flint_bitcnt_t,
1559        B: *const fmpz_mod_bpoly_struct,
1560        var: slong,
1561        ctx: *const fmpz_mod_mpoly_ctx_struct,
1562    );
1563    pub fn _fmpz_mod_mpoly_gcd_algo(
1564        G: *mut fmpz_mod_mpoly_struct,
1565        Abar: *mut fmpz_mod_mpoly_struct,
1566        Bbar: *mut fmpz_mod_mpoly_struct,
1567        A: *const fmpz_mod_mpoly_struct,
1568        B: *const fmpz_mod_mpoly_struct,
1569        ctx: *const fmpz_mod_mpoly_ctx_struct,
1570        algo: libc::c_uint,
1571    ) -> libc::c_int;
1572    pub fn fmpz_mod_polyu1n_gcd_brown_smprime(
1573        G: *mut fmpz_mod_polyun_struct,
1574        Abar: *mut fmpz_mod_polyun_struct,
1575        Bbar: *mut fmpz_mod_polyun_struct,
1576        A: *mut fmpz_mod_polyun_struct,
1577        B: *mut fmpz_mod_polyun_struct,
1578        ctx: *const fmpz_mod_ctx_struct,
1579        St_poly: *mut fmpz_mod_poly_stack_struct,
1580        St_polyun: *mut fmpz_mod_polyun_stack_struct,
1581    ) -> libc::c_int;
1582    pub fn fmpz_mod_mpolyn_gcd_brown_smprime(
1583        G: *mut fmpz_mod_mpolyn_struct,
1584        Abar: *mut fmpz_mod_mpolyn_struct,
1585        Bbar: *mut fmpz_mod_mpolyn_struct,
1586        A: *mut fmpz_mod_mpolyn_struct,
1587        B: *mut fmpz_mod_mpolyn_struct,
1588        var: slong,
1589        ctx: *const fmpz_mod_mpoly_ctx_struct,
1590        Iv: *const mpoly_gcd_info_struct,
1591        St: *mut fmpz_mod_poly_polyun_mpolyn_stack_struct,
1592    ) -> libc::c_int;
1593    pub fn fmpz_mod_mpolyl_gcdp_zippel(
1594        G: *mut fmpz_mod_mpoly_struct,
1595        Abar: *mut fmpz_mod_mpoly_struct,
1596        Bbar: *mut fmpz_mod_mpoly_struct,
1597        A: *mut fmpz_mod_mpoly_struct,
1598        B: *mut fmpz_mod_mpoly_struct,
1599        var: slong,
1600        ctx: *const fmpz_mod_mpoly_ctx_struct,
1601        state: *mut flint_rand_struct,
1602    ) -> libc::c_int;
1603    pub fn fmpz_mod_mpolyl_gcd_zippel2_smprime(
1604        rG: *mut fmpz_mod_mpoly_struct,
1605        rGdegs: *const slong,
1606        rAbar: *mut fmpz_mod_mpoly_struct,
1607        rBbar: *mut fmpz_mod_mpoly_struct,
1608        A: *const fmpz_mod_mpoly_struct,
1609        Adegs: *const slong,
1610        B: *const fmpz_mod_mpoly_struct,
1611        Bdegs: *const slong,
1612        gamma: *const fmpz_mod_mpoly_struct,
1613        gammadegs: *const slong,
1614        ctx: *const fmpz_mod_mpoly_ctx_struct,
1615    ) -> libc::c_int;
1616    pub fn fmpz_mod_mpolyl_gcd_hensel_smprime(
1617        G: *mut fmpz_mod_mpoly_struct,
1618        Gdeg: slong,
1619        Abar: *mut fmpz_mod_mpoly_struct,
1620        Bbar: *mut fmpz_mod_mpoly_struct,
1621        A: *const fmpz_mod_mpoly_struct,
1622        B: *const fmpz_mod_mpoly_struct,
1623        ctx: *const fmpz_mod_mpoly_ctx_struct,
1624    ) -> libc::c_int;
1625    pub fn fmpz_mod_pow_cache_start(
1626        b: *const fmpz,
1627        c: *mut fmpz_mod_poly_struct,
1628        ctx: *const fmpz_mod_ctx_struct,
1629    );
1630    pub fn fmpz_mod_pow_cache_mulpow_ui(
1631        a: *mut fmpz,
1632        b: *const fmpz,
1633        e: ulong,
1634        c: *mut fmpz_mod_poly_struct,
1635        ctx: *const fmpz_mod_ctx_struct,
1636    );
1637    pub fn mpoly_monomial_evals_fmpz_mod(
1638        EH: *mut fmpz_mod_poly_struct,
1639        Aexps: *const ulong,
1640        Alen: slong,
1641        Abits: flint_bitcnt_t,
1642        alpha_caches: *mut fmpz_mod_poly_struct,
1643        start: slong,
1644        stop: slong,
1645        mctx: *const mpoly_ctx_struct,
1646        fpctx: *const fmpz_mod_ctx_struct,
1647    );
1648    pub fn mpoly1_monomial_evals_fmpz_mod(
1649        EH: *mut fmpz_mod_polyun_struct,
1650        Aexps: *const ulong,
1651        Abits: flint_bitcnt_t,
1652        Amarks: *const ulong,
1653        Amarkslen: slong,
1654        alpha_caches: *mut fmpz_mod_poly_struct,
1655        m: slong,
1656        mctx: *const mpoly_ctx_struct,
1657        fpctx: *const fmpz_mod_ctx_struct,
1658    );
1659    pub fn mpoly2_monomial_evals_fmpz_mod(
1660        EH: *mut fmpz_mod_polyun_struct,
1661        Aexps: *const ulong,
1662        Abits: flint_bitcnt_t,
1663        Amarks: *mut ulong,
1664        Amarkslen: slong,
1665        alpha_caches: *mut fmpz_mod_poly_struct,
1666        m: slong,
1667        mctx: *const mpoly_ctx_struct,
1668        fpctx: *const fmpz_mod_ctx_struct,
1669    );
1670    pub fn fmpz_mod_mpoly_mock_eval_coeff(
1671        mock: *mut fmpz_mod_polyun_struct,
1672        A: *const fmpz_mod_mpoly_struct,
1673        Aeh_inc: *const fmpz_mod_polyun_struct,
1674        UNUSED_ctx: *const fmpz_mod_mpoly_ctx_struct,
1675    );
1676    pub fn fmpz_mod_polyun_product_roots(
1677        M: *mut fmpz_mod_polyun_struct,
1678        H: *const fmpz_mod_polyun_struct,
1679        ctx: *const fmpz_mod_ctx_struct,
1680    ) -> slong;
1681    pub fn fmpz_mod_polyun_zip_start(
1682        Z: *mut fmpz_mod_polyun_struct,
1683        H: *mut fmpz_mod_polyun_struct,
1684        req_images: slong,
1685        fctx: *const fmpz_mod_ctx_struct,
1686    );
1687    pub fn fmpz_mod_polyu2n_zip_eval_cur_inc_coeff(
1688        E: *mut fmpz_mod_polyun_struct,
1689        Acur: *mut fmpz_mod_polyun_struct,
1690        Ainc: *const fmpz_mod_polyun_struct,
1691        Acoeff: *const fmpz_mod_polyun_struct,
1692        ctx: *const fmpz_mod_ctx_struct,
1693    );
1694    pub fn fmpz_mod_polyun_zip_solve(
1695        A: *mut fmpz_mod_mpoly_struct,
1696        Z: *mut fmpz_mod_polyun_struct,
1697        H: *mut fmpz_mod_polyun_struct,
1698        M: *mut fmpz_mod_polyun_struct,
1699        ctx: *const fmpz_mod_mpoly_ctx_struct,
1700    ) -> libc::c_int;
1701}