flint_sys/
nmod_mpoly_factor.rs

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