Skip to main content

flint_sys/
nmod_mpoly_factor.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3use crate::deps::*;
4use crate::flint::*;
5use crate::mpoly_types::*;
6use crate::n_poly_types::*;
7use crate::nmod_mpoly::*;
8use crate::nmod_types::*;
9
10
11#[repr(C)]
12pub struct nmod_mpolyv_struct {
13    pub coeffs: *mut nmod_mpoly_struct,
14    pub alloc: slong,
15    pub length: slong,
16}
17#[allow(clippy::unnecessary_operation, clippy::identity_op)]
18const _: () = {
19    ["Size of nmod_mpolyv_struct"][::std::mem::size_of::<nmod_mpolyv_struct>() - 24usize];
20    ["Alignment of nmod_mpolyv_struct"][::std::mem::align_of::<nmod_mpolyv_struct>() - 8usize];
21    ["Offset of field: nmod_mpolyv_struct::coeffs"]
22        [::std::mem::offset_of!(nmod_mpolyv_struct, coeffs) - 0usize];
23    ["Offset of field: nmod_mpolyv_struct::alloc"]
24        [::std::mem::offset_of!(nmod_mpolyv_struct, alloc) - 8usize];
25    ["Offset of field: nmod_mpolyv_struct::length"]
26        [::std::mem::offset_of!(nmod_mpolyv_struct, length) - 16usize];
27};
28impl Default for nmod_mpolyv_struct {
29    fn default() -> Self {
30        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
31        unsafe {
32            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
33            s.assume_init()
34        }
35    }
36}
37pub type nmod_mpolyv_t = [nmod_mpolyv_struct; 1usize];
38#[repr(C)]
39pub struct nmod_mpoly_pfrac_struct {
40    pub bits: flint_bitcnt_t,
41    pub w: slong,
42    pub r: slong,
43    pub inv_prod_dbetas: *mut n_poly_struct,
44    pub inv_prod_dbetas_mvar: *mut nmod_mpoly_struct,
45    pub dbetas: *mut n_poly_struct,
46    pub dbetas_mvar: *mut nmod_mpoly_struct,
47    pub prod_mbetas: *mut nmod_mpoly_struct,
48    pub prod_mbetas_coeffs: *mut nmod_mpolyv_struct,
49    pub mbetas: *mut nmod_mpoly_struct,
50    pub deltas: *mut nmod_mpoly_struct,
51    pub xalpha: *mut nmod_mpoly_struct,
52    pub q: *mut nmod_mpoly_struct,
53    pub G: *mut nmod_mpoly_geobucket_struct,
54    pub qt: *mut nmod_mpoly_struct,
55    pub newt: *mut nmod_mpoly_struct,
56    pub delta_coeffs: *mut nmod_mpolyv_struct,
57    pub T: nmod_mpoly_t,
58    pub Q: nmod_mpoly_t,
59    pub R: nmod_mpoly_t,
60}
61#[allow(clippy::unnecessary_operation, clippy::identity_op)]
62const _: () = {
63    ["Size of nmod_mpoly_pfrac_struct"]
64        [::std::mem::size_of::<nmod_mpoly_pfrac_struct>() - 280usize];
65    ["Alignment of nmod_mpoly_pfrac_struct"]
66        [::std::mem::align_of::<nmod_mpoly_pfrac_struct>() - 8usize];
67    ["Offset of field: nmod_mpoly_pfrac_struct::bits"]
68        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, bits) - 0usize];
69    ["Offset of field: nmod_mpoly_pfrac_struct::w"]
70        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, w) - 8usize];
71    ["Offset of field: nmod_mpoly_pfrac_struct::r"]
72        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, r) - 16usize];
73    ["Offset of field: nmod_mpoly_pfrac_struct::inv_prod_dbetas"]
74        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, inv_prod_dbetas) - 24usize];
75    ["Offset of field: nmod_mpoly_pfrac_struct::inv_prod_dbetas_mvar"]
76        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, inv_prod_dbetas_mvar) - 32usize];
77    ["Offset of field: nmod_mpoly_pfrac_struct::dbetas"]
78        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, dbetas) - 40usize];
79    ["Offset of field: nmod_mpoly_pfrac_struct::dbetas_mvar"]
80        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, dbetas_mvar) - 48usize];
81    ["Offset of field: nmod_mpoly_pfrac_struct::prod_mbetas"]
82        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, prod_mbetas) - 56usize];
83    ["Offset of field: nmod_mpoly_pfrac_struct::prod_mbetas_coeffs"]
84        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, prod_mbetas_coeffs) - 64usize];
85    ["Offset of field: nmod_mpoly_pfrac_struct::mbetas"]
86        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, mbetas) - 72usize];
87    ["Offset of field: nmod_mpoly_pfrac_struct::deltas"]
88        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, deltas) - 80usize];
89    ["Offset of field: nmod_mpoly_pfrac_struct::xalpha"]
90        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, xalpha) - 88usize];
91    ["Offset of field: nmod_mpoly_pfrac_struct::q"]
92        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, q) - 96usize];
93    ["Offset of field: nmod_mpoly_pfrac_struct::G"]
94        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, G) - 104usize];
95    ["Offset of field: nmod_mpoly_pfrac_struct::qt"]
96        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, qt) - 112usize];
97    ["Offset of field: nmod_mpoly_pfrac_struct::newt"]
98        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, newt) - 120usize];
99    ["Offset of field: nmod_mpoly_pfrac_struct::delta_coeffs"]
100        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, delta_coeffs) - 128usize];
101    ["Offset of field: nmod_mpoly_pfrac_struct::T"]
102        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, T) - 136usize];
103    ["Offset of field: nmod_mpoly_pfrac_struct::Q"]
104        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, Q) - 184usize];
105    ["Offset of field: nmod_mpoly_pfrac_struct::R"]
106        [::std::mem::offset_of!(nmod_mpoly_pfrac_struct, R) - 232usize];
107};
108impl Default for nmod_mpoly_pfrac_struct {
109    fn default() -> Self {
110        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
111        unsafe {
112            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
113            s.assume_init()
114        }
115    }
116}
117pub type nmod_mpoly_pfrac_t = [nmod_mpoly_pfrac_struct; 1usize];
118extern "C" {
119    pub fn nmod_mpoly_get_bpoly(
120        A: *mut n_bpoly_struct,
121        B: *const nmod_mpoly_struct,
122        var0: slong,
123        var1: slong,
124        ctx: *const nmod_mpoly_ctx_struct,
125    );
126    pub fn nmod_mpoly_set_bpoly(
127        A: *mut nmod_mpoly_struct,
128        Abits: flint_bitcnt_t,
129        B: *const n_bpoly_struct,
130        var0: slong,
131        var1: slong,
132        ctx: *const nmod_mpoly_ctx_struct,
133    );
134    pub fn n_bpoly_mod_factor_smprime(
135        c: *mut n_poly_struct,
136        F: *mut n_tpoly_struct,
137        B: *mut n_bpoly_struct,
138        allow_shift: libc::c_int,
139        ctx: nmod_t,
140    ) -> libc::c_int;
141    pub fn n_bpoly_mod_factor_lgprime(
142        c: *mut n_poly_struct,
143        F: *mut n_tpoly_struct,
144        B: *mut n_bpoly_struct,
145        ctx: nmod_t,
146    );
147    pub fn nmod_mat_is_reduced(N: *const nmod_mat_struct) -> libc::c_int;
148    pub fn nmod_mat_init_nullspace_tr(X: *mut nmod_mat_struct, tmp: *mut nmod_mat_struct);
149    #[link_name = "nmod_mpoly_factor_init__extern"]
150    pub fn nmod_mpoly_factor_init(
151        f: *mut nmod_mpoly_factor_struct,
152        UNUSED_ctx: *const nmod_mpoly_ctx_struct,
153    );
154    pub fn nmod_mpoly_factor_init2(
155        f: *mut nmod_mpoly_factor_struct,
156        alloc: slong,
157        ctx: *const nmod_mpoly_ctx_struct,
158    );
159    pub fn nmod_mpoly_factor_realloc(
160        f: *mut nmod_mpoly_factor_struct,
161        alloc: slong,
162        ctx: *const nmod_mpoly_ctx_struct,
163    );
164    pub fn nmod_mpoly_factor_fit_length(
165        f: *mut nmod_mpoly_factor_struct,
166        len: slong,
167        ctx: *const nmod_mpoly_ctx_struct,
168    );
169    pub fn nmod_mpoly_factor_clear(
170        f: *mut nmod_mpoly_factor_struct,
171        ctx: *const nmod_mpoly_ctx_struct,
172    );
173    #[link_name = "nmod_mpoly_factor_length__extern"]
174    pub fn nmod_mpoly_factor_length(
175        f: *const nmod_mpoly_factor_struct,
176        UNUSED_ctx: *const nmod_mpoly_ctx_struct,
177    ) -> slong;
178    #[link_name = "nmod_mpoly_factor_get_constant_ui__extern"]
179    pub fn nmod_mpoly_factor_get_constant_ui(
180        f: *const nmod_mpoly_factor_struct,
181        UNUSED_ctx: *const nmod_mpoly_ctx_struct,
182    ) -> ulong;
183    #[link_name = "nmod_mpoly_factor_get_base__extern"]
184    pub fn nmod_mpoly_factor_get_base(
185        p: *mut nmod_mpoly_struct,
186        f: *const nmod_mpoly_factor_struct,
187        i: slong,
188        ctx: *const nmod_mpoly_ctx_struct,
189    );
190    #[link_name = "nmod_mpoly_factor_swap_base__extern"]
191    pub fn nmod_mpoly_factor_swap_base(
192        p: *mut nmod_mpoly_struct,
193        f: *mut nmod_mpoly_factor_struct,
194        i: slong,
195        ctx: *const nmod_mpoly_ctx_struct,
196    );
197    pub fn nmod_mpoly_factor_get_exp_si(
198        f: *mut nmod_mpoly_factor_struct,
199        i: slong,
200        UNUSED_ctx: *const nmod_mpoly_ctx_struct,
201    ) -> slong;
202    pub fn nmod_mpoly_factor_append_ui(
203        f: *mut nmod_mpoly_factor_struct,
204        A: *const nmod_mpoly_struct,
205        e: ulong,
206        ctx: *const nmod_mpoly_ctx_struct,
207    );
208    pub fn nmod_mpoly_factor_append_fmpz(
209        f: *mut nmod_mpoly_factor_struct,
210        A: *const nmod_mpoly_struct,
211        e: *const fmpz,
212        ctx: *const nmod_mpoly_ctx_struct,
213    );
214    pub fn nmod_mpoly_factor_set(
215        f: *mut nmod_mpoly_factor_struct,
216        g: *const nmod_mpoly_factor_struct,
217        ctx: *const nmod_mpoly_ctx_struct,
218    );
219    pub fn nmod_mpoly_factor_print_pretty(
220        f: *const nmod_mpoly_factor_struct,
221        vars: *mut *const libc::c_char,
222        ctx: *const nmod_mpoly_ctx_struct,
223    );
224    pub fn nmod_mpoly_factor_content(
225        f: *mut nmod_mpoly_factor_struct,
226        A: *const nmod_mpoly_struct,
227        ctx: *const nmod_mpoly_ctx_struct,
228    ) -> libc::c_int;
229    pub fn nmod_mpoly_factor_squarefree(
230        f: *mut nmod_mpoly_factor_struct,
231        A: *const nmod_mpoly_struct,
232        ctx: *const nmod_mpoly_ctx_struct,
233    ) -> libc::c_int;
234    pub fn nmod_mpoly_factor_separable(
235        f: *mut nmod_mpoly_factor_struct,
236        A: *const nmod_mpoly_struct,
237        ctx: *const nmod_mpoly_ctx_struct,
238        sep: libc::c_int,
239    ) -> libc::c_int;
240    pub fn nmod_mpoly_factor(
241        f: *mut nmod_mpoly_factor_struct,
242        A: *const nmod_mpoly_struct,
243        ctx: *const nmod_mpoly_ctx_struct,
244    ) -> libc::c_int;
245    pub fn nmod_mpoly_factor_sort(
246        f: *mut nmod_mpoly_factor_struct,
247        ctx: *const nmod_mpoly_ctx_struct,
248    );
249    pub fn nmod_mpoly_factor_cmp(
250        A: *const nmod_mpoly_factor_struct,
251        B: *const nmod_mpoly_factor_struct,
252        ctx: *const nmod_mpoly_ctx_struct,
253    ) -> libc::c_int;
254    pub fn nmod_mpoly_factor_expand(
255        A: *mut nmod_mpoly_struct,
256        f: *const nmod_mpoly_factor_struct,
257        ctx: *const nmod_mpoly_ctx_struct,
258    ) -> libc::c_int;
259    #[link_name = "nmod_mpoly_factor_matches__extern"]
260    pub fn nmod_mpoly_factor_matches(
261        a: *const nmod_mpoly_struct,
262        f: *const nmod_mpoly_factor_struct,
263        ctx: *const nmod_mpoly_ctx_struct,
264    ) -> libc::c_int;
265    pub fn nmod_mpoly_factor_fix_units(
266        f: *mut nmod_mpoly_factor_struct,
267        ctx: *const nmod_mpoly_ctx_struct,
268    ) -> libc::c_int;
269    #[link_name = "nmod_mpoly_factor_swap__extern"]
270    pub fn nmod_mpoly_factor_swap(
271        f: *mut nmod_mpoly_factor_struct,
272        g: *mut nmod_mpoly_factor_struct,
273        UNUSED_ctx: *const nmod_mpoly_ctx_struct,
274    );
275    #[link_name = "nmod_mpoly_factor_one__extern"]
276    pub fn nmod_mpoly_factor_one(
277        f: *mut nmod_mpoly_factor_struct,
278        UNUSED_ctx: *const nmod_mpoly_ctx_struct,
279    );
280    pub fn _nmod_mpoly_get_lead0(
281        c: *mut nmod_mpoly_struct,
282        A: *const nmod_mpoly_struct,
283        ctx: *const nmod_mpoly_ctx_struct,
284    );
285    pub fn _nmod_mpoly_set_lead0(
286        A: *mut nmod_mpoly_struct,
287        B: *const nmod_mpoly_struct,
288        c: *const nmod_mpoly_struct,
289        ctx: *const nmod_mpoly_ctx_struct,
290    );
291    pub fn _n_poly_vec_max_degree(A: *const n_poly_struct, Alen: slong) -> slong;
292    pub fn _n_poly_vec_mul_nmod_intertible(
293        A: *mut n_poly_struct,
294        Alen: slong,
295        c: ulong,
296        ctx: nmod_t,
297    );
298    pub fn _n_poly_vec_mod_mul_poly(
299        A: *mut n_poly_struct,
300        Alen: slong,
301        g: *const n_poly_struct,
302        ctx: nmod_t,
303    );
304    pub fn _n_poly_vec_mod_divexact_poly(
305        A: *mut n_poly_struct,
306        Alen: slong,
307        g: *const n_poly_struct,
308        ctx: nmod_t,
309    );
310    pub fn _n_poly_vec_mod_content(
311        g: *mut n_poly_struct,
312        A: *const n_poly_struct,
313        Alen: slong,
314        ctx: nmod_t,
315    );
316    pub fn _n_poly_vec_mod_remove_content(
317        g: *mut n_poly_struct,
318        A: *mut n_poly_struct,
319        Alen: slong,
320        ctx: nmod_t,
321    );
322    pub fn nmod_mpoly_get_polyu1n(
323        A: *mut n_polyun_struct,
324        B: *const nmod_mpoly_struct,
325        varx: slong,
326        vary: slong,
327        ctx: *const nmod_mpoly_ctx_struct,
328    );
329    pub fn nmod_mpoly_set_polyu1n(
330        B: *mut nmod_mpoly_struct,
331        A: *const n_polyun_struct,
332        varx: slong,
333        vary: slong,
334        ctx: *const nmod_mpoly_ctx_struct,
335    );
336    #[link_name = "nmod_mpolyv_init__extern"]
337    pub fn nmod_mpolyv_init(A: *mut nmod_mpolyv_struct, UNUSED_ctx: *const nmod_mpoly_ctx_struct);
338    #[link_name = "nmod_mpolyv_swap__extern"]
339    pub fn nmod_mpolyv_swap(
340        A: *mut nmod_mpolyv_struct,
341        B: *mut nmod_mpolyv_struct,
342        UNUSED_ctx: *const nmod_mpoly_ctx_struct,
343    );
344    pub fn nmod_mpolyv_clear(A: *mut nmod_mpolyv_struct, ctx: *const nmod_mpoly_ctx_struct);
345    pub fn nmod_mpolyv_print_pretty(
346        poly: *const nmod_mpolyv_struct,
347        x: *mut *const libc::c_char,
348        ctx: *const nmod_mpoly_ctx_struct,
349    );
350    pub fn nmod_mpolyv_fit_length(
351        A: *mut nmod_mpolyv_struct,
352        length: slong,
353        ctx: *const nmod_mpoly_ctx_struct,
354    );
355    pub fn nmod_mpolyv_set_coeff(
356        A: *mut nmod_mpolyv_struct,
357        i: slong,
358        c: *mut nmod_mpoly_struct,
359        ctx: *const nmod_mpoly_ctx_struct,
360    );
361    pub fn nmod_mpoly_to_mpolyv(
362        A: *mut nmod_mpolyv_struct,
363        B: *const nmod_mpoly_struct,
364        xalpha: *const nmod_mpoly_struct,
365        ctx: *const nmod_mpoly_ctx_struct,
366    );
367    pub fn nmod_mpoly_from_mpolyv(
368        A: *mut nmod_mpoly_struct,
369        Abits: flint_bitcnt_t,
370        B: *const nmod_mpolyv_struct,
371        xalpha: *const nmod_mpoly_struct,
372        ctx: *const nmod_mpoly_ctx_struct,
373    );
374    pub fn _nmod_mpoly_vec_content_mpoly(
375        g: *mut nmod_mpoly_struct,
376        A: *const nmod_mpoly_struct,
377        Alen: slong,
378        ctx: *const nmod_mpoly_ctx_struct,
379    ) -> libc::c_int;
380    pub fn _nmod_mpoly_vec_divexact_mpoly(
381        A: *mut nmod_mpoly_struct,
382        Alen: slong,
383        c: *const nmod_mpoly_struct,
384        ctx: *const nmod_mpoly_ctx_struct,
385    );
386    pub fn _nmod_mpoly_vec_mul_mpoly(
387        A: *mut nmod_mpoly_struct,
388        Alen: slong,
389        c: *const nmod_mpoly_struct,
390        ctx: *const nmod_mpoly_ctx_struct,
391    );
392    pub fn _nmod_mpoly_factor_separable(
393        f: *mut nmod_mpoly_factor_struct,
394        A: *const nmod_mpoly_struct,
395        ctx: *const nmod_mpoly_ctx_struct,
396        sep: libc::c_int,
397    ) -> libc::c_int;
398    pub fn nmod_mpoly_factor_lcc_wang(
399        lc_divs: *mut nmod_mpoly_struct,
400        lcAfac: *const nmod_mpoly_factor_struct,
401        Auc: *const n_poly_struct,
402        Auf: *const n_bpoly_struct,
403        r: slong,
404        alpha: *const n_poly_struct,
405        ctx: *const nmod_mpoly_ctx_struct,
406    ) -> libc::c_int;
407    pub fn nmod_mpoly_factor_irred_smprime_zassenhaus(
408        fac: *mut nmod_mpolyv_struct,
409        A: *const nmod_mpoly_struct,
410        ctx: *const nmod_mpoly_ctx_struct,
411        state: *mut flint_rand_struct,
412    ) -> libc::c_int;
413    pub fn nmod_mpoly_factor_irred_medprime_zassenhaus(
414        fac: *mut nmod_mpolyv_struct,
415        A: *const nmod_mpoly_struct,
416        ctx: *const nmod_mpoly_ctx_struct,
417        state: *mut flint_rand_struct,
418    ) -> libc::c_int;
419    pub fn nmod_mpoly_factor_irred_lgprime_zassenhaus(
420        fac: *mut nmod_mpolyv_struct,
421        A: *const nmod_mpoly_struct,
422        ctx: *const nmod_mpoly_ctx_struct,
423        state: *mut flint_rand_struct,
424    ) -> libc::c_int;
425    pub fn nmod_mpoly_factor_irred_smprime_wang(
426        fac: *mut nmod_mpolyv_struct,
427        A: *const nmod_mpoly_struct,
428        lcAfac: *const nmod_mpoly_factor_struct,
429        lcA: *const nmod_mpoly_struct,
430        ctx: *const nmod_mpoly_ctx_struct,
431        state: *mut flint_rand_struct,
432    ) -> libc::c_int;
433    pub fn nmod_mpoly_factor_irred_medprime_wang(
434        Af: *mut nmod_mpolyv_struct,
435        A: *const nmod_mpoly_struct,
436        lcAfac: *const nmod_mpoly_factor_struct,
437        lcA: *const nmod_mpoly_struct,
438        ctx: *const nmod_mpoly_ctx_struct,
439        state: *mut flint_rand_struct,
440    ) -> libc::c_int;
441    pub fn nmod_mpoly_factor_irred_lgprime_wang(
442        Af: *mut nmod_mpolyv_struct,
443        A: *const nmod_mpoly_struct,
444        lcAfac: *const nmod_mpoly_factor_struct,
445        lcA: *const nmod_mpoly_struct,
446        ctx: *const nmod_mpoly_ctx_struct,
447        state: *mut flint_rand_struct,
448    ) -> libc::c_int;
449    pub fn nmod_mpoly_factor_irred_smprime_zippel(
450        fac: *mut nmod_mpolyv_struct,
451        A: *const nmod_mpoly_struct,
452        lcAfac: *const nmod_mpoly_factor_struct,
453        lcA: *const nmod_mpoly_struct,
454        ctx: *const nmod_mpoly_ctx_struct,
455        state: *mut flint_rand_struct,
456    ) -> libc::c_int;
457    pub fn nmod_mpoly_factor_irred_medprime_zippel(
458        Af: *mut nmod_mpolyv_struct,
459        A: *const nmod_mpoly_struct,
460        lcAfac: *const nmod_mpoly_factor_struct,
461        lcA: *const nmod_mpoly_struct,
462        ctx: *const nmod_mpoly_ctx_struct,
463        state: *mut flint_rand_struct,
464    ) -> libc::c_int;
465    pub fn nmod_mpoly_factor_irred_lgprime_zippel(
466        Af: *mut nmod_mpolyv_struct,
467        A: *const nmod_mpoly_struct,
468        lcAfac: *const nmod_mpoly_factor_struct,
469        lcA: *const nmod_mpoly_struct,
470        ctx: *const nmod_mpoly_ctx_struct,
471        state: *mut flint_rand_struct,
472    ) -> libc::c_int;
473    pub fn nmod_mpoly_compression_do(
474        L: *mut nmod_mpoly_struct,
475        Lctx: *const nmod_mpoly_ctx_struct,
476        Acoeffs: *mut ulong,
477        Alen: slong,
478        M: *mut mpoly_compression_struct,
479    );
480    pub fn nmod_mpoly_compression_undo(
481        A: *mut nmod_mpoly_struct,
482        Abits: flint_bitcnt_t,
483        Actx: *const nmod_mpoly_ctx_struct,
484        L: *mut nmod_mpoly_struct,
485        Lctx: *const nmod_mpoly_ctx_struct,
486        M: *mut mpoly_compression_struct,
487    );
488    pub fn nmod_mpolyu_is_canonical(
489        A: *const nmod_mpolyu_struct,
490        ctx: *const nmod_mpoly_ctx_struct,
491    ) -> libc::c_int;
492    pub fn nmod_mpolyu3_print_pretty(
493        A: *const nmod_mpolyu_struct,
494        var0: *const libc::c_char,
495        var1: *const libc::c_char,
496        var2: *const libc::c_char,
497        vars: *mut *const libc::c_char,
498        ctx: *const nmod_mpoly_ctx_struct,
499    );
500    pub fn nmod_mpoly_pfrac_init(
501        Iv: *mut nmod_mpoly_pfrac_struct,
502        bits: flint_bitcnt_t,
503        l: slong,
504        r: slong,
505        betas: *const nmod_mpoly_struct,
506        alpha: *const ulong,
507        ctx: *const nmod_mpoly_ctx_struct,
508    ) -> libc::c_int;
509    pub fn nmod_mpoly_pfrac_clear(
510        Iv: *mut nmod_mpoly_pfrac_struct,
511        ctx: *const nmod_mpoly_ctx_struct,
512    );
513    pub fn nmod_mpoly_pfrac(
514        r: slong,
515        t: *mut nmod_mpoly_struct,
516        deg: *const slong,
517        Iv: *mut nmod_mpoly_pfrac_struct,
518        ctx: *const nmod_mpoly_ctx_struct,
519    ) -> libc::c_int;
520    pub fn nmod_mpoly_hlift(
521        m: slong,
522        f: *mut nmod_mpoly_struct,
523        r: slong,
524        alpha: *const ulong,
525        A: *const nmod_mpoly_struct,
526        degs: *const slong,
527        ctx: *const nmod_mpoly_ctx_struct,
528    ) -> libc::c_int;
529    pub fn n_bpoly_mod_pfrac(
530        r: slong,
531        C: *mut n_bpoly_struct,
532        C_deg1_bound: *mut slong,
533        A: *mut n_bpoly_struct,
534        B: *mut n_bpoly_struct,
535        mod_: nmod_t,
536    ) -> libc::c_int;
537    pub fn n_bpoly_mod_hlift2(
538        A: *mut n_bpoly_struct,
539        B0: *mut n_bpoly_struct,
540        B1: *mut n_bpoly_struct,
541        alpha: ulong,
542        degree_inner: slong,
543        mod_: nmod_t,
544        St: *mut n_poly_bpoly_stack_struct,
545    ) -> libc::c_int;
546    pub fn n_bpoly_mod_hlift2_cubic(
547        A: *mut n_bpoly_struct,
548        B0: *mut n_bpoly_struct,
549        B1: *mut n_bpoly_struct,
550        alpha: ulong,
551        degree_inner: slong,
552        ctx: nmod_t,
553        E: *mut nmod_eval_interp_struct,
554        St: *mut n_poly_bpoly_stack_struct,
555    ) -> libc::c_int;
556    pub fn n_bpoly_mod_hlift(
557        r: slong,
558        A: *mut n_bpoly_struct,
559        B: *mut n_bpoly_struct,
560        alpha: ulong,
561        degree_inner: slong,
562        mod_: nmod_t,
563        St: *mut n_poly_bpoly_stack_struct,
564    ) -> libc::c_int;
565    pub fn n_bpoly_mod_hlift_cubic(
566        r: slong,
567        A: *mut n_bpoly_struct,
568        B: *mut n_bpoly_struct,
569        alpha: ulong,
570        degree_inner: slong,
571        mod_: nmod_t,
572        E: *mut nmod_eval_interp_struct,
573        St: *mut n_poly_bpoly_stack_struct,
574    ) -> libc::c_int;
575    pub fn n_polyu3_mod_hlift(
576        r: slong,
577        BB: *mut n_polyun_struct,
578        A: *mut n_polyu_struct,
579        B: *mut n_polyu_struct,
580        beta: ulong,
581        degree_inner: slong,
582        ctx: nmod_t,
583    ) -> libc::c_int;
584    pub fn nmod_mpoly_hlift_zippel(
585        m: slong,
586        B: *mut nmod_mpoly_struct,
587        r: slong,
588        alpha: *const ulong,
589        A: *const nmod_mpoly_struct,
590        degs: *const slong,
591        ctx: *const nmod_mpoly_ctx_struct,
592        state: *mut flint_rand_struct,
593    ) -> libc::c_int;
594    pub fn nmod_mpoly_factor_algo(
595        f: *mut nmod_mpoly_factor_struct,
596        A: *const nmod_mpoly_struct,
597        ctx: *const nmod_mpoly_ctx_struct,
598        algo: libc::c_uint,
599    ) -> libc::c_int;
600    pub fn nmod_mpoly_factor_zassenhaus(
601        f: *mut nmod_mpoly_factor_struct,
602        A: *const nmod_mpoly_struct,
603        ctx: *const nmod_mpoly_ctx_struct,
604    ) -> libc::c_int;
605    pub fn nmod_mpoly_factor_wang(
606        f: *mut nmod_mpoly_factor_struct,
607        A: *const nmod_mpoly_struct,
608        ctx: *const nmod_mpoly_ctx_struct,
609    ) -> libc::c_int;
610    pub fn nmod_mpoly_factor_zippel(
611        f: *mut nmod_mpoly_factor_struct,
612        A: *const nmod_mpoly_struct,
613        ctx: *const nmod_mpoly_ctx_struct,
614    ) -> libc::c_int;
615    pub fn _nmod_mpoly_evaluate_rest_n_poly(
616        E: *mut n_poly_struct,
617        starts: *mut slong,
618        ends: *mut slong,
619        stops: *mut slong,
620        es: *mut ulong,
621        Acoeffs: *const ulong,
622        Aexps: *const ulong,
623        Alen: slong,
624        var: slong,
625        alphas: *const n_poly_struct,
626        offsets: *const slong,
627        shifts: *const slong,
628        N: slong,
629        mask: ulong,
630        nvars: slong,
631        ctx: nmod_t,
632    ) -> libc::c_int;
633    pub fn _nmod_mpoly_eval_rest_to_n_bpoly(
634        E: *mut n_bpoly_struct,
635        A: *const nmod_mpoly_struct,
636        alphabetas: *const n_poly_struct,
637        ctx: *const nmod_mpoly_ctx_struct,
638    );
639    pub fn _nmod_mpoly_set_n_bpoly_var1_zero(
640        A: *mut nmod_mpoly_struct,
641        Abits: flint_bitcnt_t,
642        B: *const n_bpoly_struct,
643        var: slong,
644        ctx: *const nmod_mpoly_ctx_struct,
645    );
646    pub fn nmod_mpolyl_gcdp_zippel_smprime(
647        G: *mut nmod_mpoly_struct,
648        Abar: *mut nmod_mpoly_struct,
649        Bbar: *mut nmod_mpoly_struct,
650        A: *mut nmod_mpoly_struct,
651        B: *mut nmod_mpoly_struct,
652        var: slong,
653        ctx: *const nmod_mpoly_ctx_struct,
654        state: *mut flint_rand_struct,
655    ) -> libc::c_int;
656    pub fn nmod_mpolyl_gcds_zippel(
657        G: *mut nmod_mpoly_struct,
658        Gmarks: *const ulong,
659        Gmarkslen: slong,
660        A: *mut nmod_mpoly_struct,
661        B: *mut nmod_mpoly_struct,
662        perm: *mut slong,
663        l: slong,
664        var: slong,
665        ctx: *const nmod_mpoly_ctx_struct,
666        state: *mut flint_rand_struct,
667        Gdegbound: *mut slong,
668        Amarks: *mut n_poly_struct,
669        Bmarks: *mut n_poly_struct,
670    ) -> libc::c_int;
671    pub fn mpoly_monomial_evals_nmod(
672        EH: *mut n_poly_struct,
673        Aexps: *const ulong,
674        Alen: slong,
675        Abits: flint_bitcnt_t,
676        alpha_caches: *mut n_poly_struct,
677        start: slong,
678        stop: slong,
679        mctx: *const mpoly_ctx_struct,
680        fpctx: nmod_t,
681    );
682    pub fn mpoly1_monomial_evals_nmod(
683        EH: *mut n_polyun_struct,
684        Aexps: *const ulong,
685        Abits: flint_bitcnt_t,
686        Amarks: *const ulong,
687        Amarkslen: slong,
688        alpha_caches: *mut n_poly_struct,
689        m: slong,
690        mctx: *const mpoly_ctx_struct,
691        fpctx: nmod_t,
692    );
693    pub fn mpoly2_monomial_evals_nmod(
694        EH: *mut n_polyun_struct,
695        Aexps: *const ulong,
696        Abits: flint_bitcnt_t,
697        Amarks: *mut ulong,
698        Amarkslen: slong,
699        alpha_caches: *mut n_poly_struct,
700        m: slong,
701        mctx: *const mpoly_ctx_struct,
702        fpctx: nmod_t,
703    );
704    pub fn n_polyun_zip_start(Z: *mut n_polyun_struct, H: *mut n_polyun_struct, req_images: slong);
705    pub fn n_polyu2n_add_zip_must_match(
706        Z: *mut n_polyun_struct,
707        A: *const n_bpoly_struct,
708        cur_length: slong,
709    ) -> libc::c_int;
710    pub fn n_polyun_zip_solve(
711        A: *mut nmod_mpoly_struct,
712        Z: *mut n_polyun_struct,
713        H: *mut n_polyun_struct,
714        M: *mut n_polyun_struct,
715        ctx: *const nmod_mpoly_ctx_struct,
716    ) -> libc::c_int;
717}