flint_sys/
fq_nmod_mpoly_factor.rs

1#![allow(non_snake_case)]
2#![allow(non_camel_case_types)]
3
4//! *See the [FLINT documentation](http://flintlib.org/doc/fq_nmod_mpoly_factor.html).
5
6use crate::deps::*;
7use crate::flint::*;
8use crate::fmpz::fmpz;
9use crate::fq_nmod::*;
10use crate::fq_nmod_mpoly::*;
11use crate::fq_nmod_poly::fq_nmod_poly_struct;
12use crate::mpoly::*;
13use crate::n_poly::*;
14use crate::nmod_poly::nmod_poly_struct;
15use libc::{c_char, c_int, c_uint};
16
17#[repr(C)]
18#[derive(Debug, Copy, Clone)]
19pub struct fq_nmod_mpoly_factor_struct {
20    pub constant: fq_nmod_t,
21    pub poly: *mut fq_nmod_mpoly_struct,
22    pub exp: *mut fmpz,
23    pub num: mp_limb_signed_t,
24    pub alloc: mp_limb_signed_t,
25}
26
27pub type fq_nmod_mpoly_factor_t = [fq_nmod_mpoly_factor_struct; 1usize];
28
29#[repr(C)]
30#[derive(Debug, Copy, Clone)]
31pub struct fq_nmod_mpolyv_struct {
32    pub coeffs: *mut fq_nmod_mpoly_struct,
33    pub alloc: mp_limb_signed_t,
34    pub length: mp_limb_signed_t,
35}
36
37pub type fq_nmod_mpolyv_t = [fq_nmod_mpolyv_struct; 1usize];
38
39#[repr(C)]
40#[derive(Debug, Copy, Clone)]
41pub struct fq_nmod_mpoly_pfrac_struct {
42    pub bits: mp_limb_t,
43    pub w: mp_limb_signed_t,
44    pub r: mp_limb_signed_t,
45    pub inv_prod_dbetas: *mut fq_nmod_poly_struct,
46    pub inv_prod_dbetas_mvar: *mut fq_nmod_mpoly_struct,
47    pub dbetas: *mut fq_nmod_poly_struct,
48    pub dbetas_mvar: *mut fq_nmod_mpoly_struct,
49    pub prod_mbetas: *mut fq_nmod_mpoly_struct,
50    pub prod_mbetas_coeffs: *mut fq_nmod_mpolyv_struct,
51    pub mbetas: *mut fq_nmod_mpoly_struct,
52    pub deltas: *mut fq_nmod_mpoly_struct,
53    pub xalpha: *mut fq_nmod_mpoly_struct,
54    pub q: *mut fq_nmod_mpoly_struct,
55    pub G: *mut fq_nmod_mpoly_geobucket_struct,
56    pub qt: *mut fq_nmod_mpoly_struct,
57    pub newt: *mut fq_nmod_mpoly_struct,
58    pub delta_coeffs: *mut fq_nmod_mpolyv_struct,
59    pub T: fq_nmod_mpoly_t,
60    pub Q: fq_nmod_mpoly_t,
61    pub R: fq_nmod_mpoly_t,
62}
63
64pub type fq_nmod_mpoly_pfrac_t = [fq_nmod_mpoly_pfrac_struct; 1usize];
65
66extern "C" {
67    pub fn fq_nmod_mpoly_factor_init(
68        f: *mut fq_nmod_mpoly_factor_struct,
69        ctx: *mut fq_nmod_mpoly_ctx_struct,
70    );
71    pub fn fq_nmod_mpoly_factor_realloc(
72        f: *mut fq_nmod_mpoly_factor_struct,
73        alloc: mp_limb_signed_t,
74        ctx: *mut fq_nmod_mpoly_ctx_struct,
75    );
76    pub fn fq_nmod_mpoly_factor_fit_length(
77        f: *mut fq_nmod_mpoly_factor_struct,
78        len: mp_limb_signed_t,
79        ctx: *mut fq_nmod_mpoly_ctx_struct,
80    );
81    pub fn fq_nmod_mpoly_factor_clear(
82        f: *mut fq_nmod_mpoly_factor_struct,
83        ctx: *mut fq_nmod_mpoly_ctx_struct,
84    );
85    pub fn fq_nmod_mpoly_factor_length(
86        f: *mut fq_nmod_mpoly_factor_struct,
87        ctx: *mut fq_nmod_mpoly_ctx_struct,
88    ) -> mp_limb_signed_t;
89    pub fn fq_nmod_mpoly_factor_get_constant_fq_nmod(
90        c: *mut nmod_poly_struct,
91        f: *mut fq_nmod_mpoly_factor_struct,
92        ctx: *mut fq_nmod_mpoly_ctx_struct,
93    );
94    pub fn fq_nmod_mpoly_factor_get_base(
95        p: *mut fq_nmod_mpoly_struct,
96        f: *mut fq_nmod_mpoly_factor_struct,
97        i: mp_limb_signed_t,
98        ctx: *mut fq_nmod_mpoly_ctx_struct,
99    );
100    pub fn fq_nmod_mpoly_factor_swap_base(
101        p: *mut fq_nmod_mpoly_struct,
102        f: *mut fq_nmod_mpoly_factor_struct,
103        i: mp_limb_signed_t,
104        ctx: *mut fq_nmod_mpoly_ctx_struct,
105    );
106    pub fn fq_nmod_mpoly_factor_get_exp_si(
107        f: *mut fq_nmod_mpoly_factor_struct,
108        i: mp_limb_signed_t,
109        ctx: *mut fq_nmod_mpoly_ctx_struct,
110    ) -> mp_limb_signed_t;
111    pub fn fq_nmod_mpoly_factor_set(
112        a: *mut fq_nmod_mpoly_factor_struct,
113        b: *mut fq_nmod_mpoly_factor_struct,
114        ctx: *mut fq_nmod_mpoly_ctx_struct,
115    );
116    pub fn fq_nmod_mpoly_factor_print_pretty(
117        f: *mut fq_nmod_mpoly_factor_struct,
118        vars: *mut *const c_char,
119        ctx: *mut fq_nmod_mpoly_ctx_struct,
120    );
121    pub fn fq_nmod_mpoly_factor_append_ui(
122        f: *mut fq_nmod_mpoly_factor_struct,
123        A: *mut fq_nmod_mpoly_struct,
124        e: mp_limb_t,
125        ctx: *mut fq_nmod_mpoly_ctx_struct,
126    );
127    pub fn fq_nmod_mpoly_factor_append_fmpz(
128        f: *mut fq_nmod_mpoly_factor_struct,
129        A: *mut fq_nmod_mpoly_struct,
130        e: *mut fmpz,
131        ctx: *mut fq_nmod_mpoly_ctx_struct,
132    );
133    pub fn fq_nmod_mpoly_factor_content(
134        f: *mut fq_nmod_mpoly_factor_struct,
135        A: *mut fq_nmod_mpoly_struct,
136        ctx: *mut fq_nmod_mpoly_ctx_struct,
137    ) -> c_int;
138    pub fn fq_nmod_mpoly_factor_squarefree(
139        f: *mut fq_nmod_mpoly_factor_struct,
140        A: *mut fq_nmod_mpoly_struct,
141        ctx: *mut fq_nmod_mpoly_ctx_struct,
142    ) -> c_int;
143    pub fn fq_nmod_mpoly_factor_separable(
144        f: *mut fq_nmod_mpoly_factor_struct,
145        A: *mut fq_nmod_mpoly_struct,
146        ctx: *mut fq_nmod_mpoly_ctx_struct,
147        sep: c_int,
148    ) -> c_int;
149    pub fn fq_nmod_mpoly_factor(
150        f: *mut fq_nmod_mpoly_factor_struct,
151        A: *mut fq_nmod_mpoly_struct,
152        ctx: *mut fq_nmod_mpoly_ctx_struct,
153    ) -> c_int;
154    pub fn fq_nmod_mpoly_factor_sort(
155        f: *mut fq_nmod_mpoly_factor_struct,
156        ctx: *mut fq_nmod_mpoly_ctx_struct,
157    );
158    pub fn fq_nmod_mpoly_factor_cmp(
159        A: *mut fq_nmod_mpoly_factor_struct,
160        B: *mut fq_nmod_mpoly_factor_struct,
161        ctx: *mut fq_nmod_mpoly_ctx_struct,
162    ) -> c_int;
163    pub fn fq_nmod_mpoly_factor_swap(
164        A: *mut fq_nmod_mpoly_factor_struct,
165        B: *mut fq_nmod_mpoly_factor_struct,
166        ctx: *mut fq_nmod_mpoly_ctx_struct,
167    );
168    pub fn fq_nmod_mpoly_factor_one(
169        a: *mut fq_nmod_mpoly_factor_struct,
170        ctx: *mut fq_nmod_mpoly_ctx_struct,
171    );
172    pub fn fq_nmod_mpoly_factor_expand(
173        A: *mut fq_nmod_mpoly_struct,
174        f: *mut fq_nmod_mpoly_factor_struct,
175        ctx: *mut fq_nmod_mpoly_ctx_struct,
176    ) -> c_int;
177    pub fn fq_nmod_mpoly_factor_matches(
178        a: *mut fq_nmod_mpoly_struct,
179        f: *mut fq_nmod_mpoly_factor_struct,
180        ctx: *mut fq_nmod_mpoly_ctx_struct,
181    ) -> c_int;
182    pub fn _fq_nmod_mpoly_get_lead0(
183        c: *mut fq_nmod_mpoly_struct,
184        A: *mut fq_nmod_mpoly_struct,
185        ctx: *mut fq_nmod_mpoly_ctx_struct,
186    );
187    pub fn _fq_nmod_mpoly_set_lead0(
188        A: *mut fq_nmod_mpoly_struct,
189        B: *mut fq_nmod_mpoly_struct,
190        c: *mut fq_nmod_mpoly_struct,
191        ctx: *mut fq_nmod_mpoly_ctx_struct,
192    );
193    pub fn n_fq_bpoly_mul(
194        A: *mut n_bpoly_struct,
195        B: *mut n_bpoly_struct,
196        C: *mut n_bpoly_struct,
197        ctx: *mut fq_nmod_ctx_struct,
198    );
199    pub fn n_fq_bpoly_mul_series(
200        A: *mut n_bpoly_struct,
201        B: *mut n_bpoly_struct,
202        C: *mut n_bpoly_struct,
203        order: mp_limb_signed_t,
204        ctx: *mut fq_nmod_ctx_struct,
205    );
206    pub fn n_fq_bpoly_add(
207        A: *mut n_bpoly_struct,
208        B: *mut n_bpoly_struct,
209        C: *mut n_bpoly_struct,
210        ctx: *mut fq_nmod_ctx_struct,
211    );
212    pub fn n_fq_bpoly_sub(
213        A: *mut n_bpoly_struct,
214        B: *mut n_bpoly_struct,
215        C: *mut n_bpoly_struct,
216        ctx: *mut fq_nmod_ctx_struct,
217    );
218    pub fn n_fq_bpoly_divrem_series(
219        Q: *mut n_bpoly_struct,
220        R: *mut n_bpoly_struct,
221        A: *mut n_bpoly_struct,
222        B: *mut n_bpoly_struct,
223        order: mp_limb_signed_t,
224        ctx: *mut fq_nmod_ctx_struct,
225    );
226    pub fn n_fq_bpoly_divides(
227        Q: *mut n_bpoly_struct,
228        A: *mut n_bpoly_struct,
229        B: *mut n_bpoly_struct,
230        ctx: *mut fq_nmod_ctx_struct,
231    ) -> c_int;
232    pub fn n_fq_bpoly_make_primitive(
233        g: *mut n_poly_struct,
234        A: *mut n_bpoly_struct,
235        ctx: *mut fq_nmod_ctx_struct,
236    );
237    pub fn fq_nmod_mpoly_get_n_fq_bpoly(
238        A: *mut n_bpoly_struct,
239        B: *mut fq_nmod_mpoly_struct,
240        varx: mp_limb_signed_t,
241        vary: mp_limb_signed_t,
242        ctx: *mut fq_nmod_mpoly_ctx_struct,
243    );
244    pub fn fq_nmod_mpoly_set_n_fq_bpoly(
245        A: *mut fq_nmod_mpoly_struct,
246        Abits: mp_limb_t,
247        B: *mut n_bpoly_struct,
248        varx: mp_limb_signed_t,
249        vary: mp_limb_signed_t,
250        ctx: *mut fq_nmod_mpoly_ctx_struct,
251    );
252    pub fn n_fq_bpoly_factor_smprime(
253        c: *mut n_poly_struct,
254        F: *mut n_tpoly_struct,
255        B: *mut n_bpoly_struct,
256        allow_shift: c_int,
257        ctx: *mut fq_nmod_ctx_struct,
258    ) -> c_int;
259    pub fn n_fq_bpoly_factor_lgprime(
260        c: *mut n_poly_struct,
261        F: *mut n_tpoly_struct,
262        B: *mut n_bpoly_struct,
263        ctx: *mut fq_nmod_ctx_struct,
264        state: *mut flint_rand_s,
265    ) -> c_int;
266    pub fn n_polyu3_fq_print_pretty(
267        A: *mut n_polyu_struct,
268        var0: *const c_char,
269        var1: *const c_char,
270        var2: *const c_char,
271        ctx: *mut fq_nmod_ctx_struct,
272    );
273    pub fn n_polyu_fq_is_canonical(A: *mut n_polyu_struct, ctx: *mut fq_nmod_ctx_struct) -> c_int;
274    pub fn n_polyu2n_fq_print_pretty(
275        A: *mut n_polyun_struct,
276        var0: *const c_char,
277        var1: *const c_char,
278        varlast: *const c_char,
279        ctx: *mut fq_nmod_ctx_struct,
280    );
281    pub fn n_polyu3n_fq_print_pretty(
282        A: *mut n_polyun_struct,
283        var0: *const c_char,
284        var1: *const c_char,
285        var2: *const c_char,
286        varlast: *const c_char,
287        ctx: *mut fq_nmod_ctx_struct,
288    );
289    pub fn n_polyun_fq_is_canonical(A: *mut n_polyun_struct, ctx: *mut fq_nmod_ctx_struct)
290        -> c_int;
291    pub fn fq_nmod_mpolyv_init(A: *mut fq_nmod_mpolyv_struct, ctx: *mut fq_nmod_mpoly_ctx_struct);
292    pub fn fq_nmod_mpolyv_swap(
293        A: *mut fq_nmod_mpolyv_struct,
294        B: *mut fq_nmod_mpolyv_struct,
295        ctx: *mut fq_nmod_mpoly_ctx_struct,
296    );
297    pub fn fq_nmod_mpolyv_clear(A: *mut fq_nmod_mpolyv_struct, ctx: *mut fq_nmod_mpoly_ctx_struct);
298    pub fn fq_nmod_mpolyv_print_pretty(
299        poly: *mut fq_nmod_mpolyv_struct,
300        x: *mut *const c_char,
301        ctx: *mut fq_nmod_mpoly_ctx_struct,
302    );
303    pub fn fq_nmod_mpolyv_fit_length(
304        A: *mut fq_nmod_mpolyv_struct,
305        length: mp_limb_signed_t,
306        ctx: *mut fq_nmod_mpoly_ctx_struct,
307    );
308    pub fn fq_nmod_mpolyv_set_coeff(
309        A: *mut fq_nmod_mpolyv_struct,
310        i: mp_limb_signed_t,
311        c: *mut fq_nmod_mpoly_struct,
312        ctx: *mut fq_nmod_mpoly_ctx_struct,
313    );
314    pub fn fq_nmod_mpoly_to_mpolyv(
315        A: *mut fq_nmod_mpolyv_struct,
316        B: *mut fq_nmod_mpoly_struct,
317        xalpha: *mut fq_nmod_mpoly_struct,
318        ctx: *mut fq_nmod_mpoly_ctx_struct,
319    );
320    pub fn fq_nmod_mpoly_from_mpolyv(
321        A: *mut fq_nmod_mpoly_struct,
322        Abits: mp_limb_t,
323        B: *mut fq_nmod_mpolyv_struct,
324        xalpha: *mut fq_nmod_mpoly_struct,
325        ctx: *mut fq_nmod_mpoly_ctx_struct,
326    );
327    pub fn _fq_nmod_mpoly_vec_content_mpoly(
328        g: *mut fq_nmod_mpoly_struct,
329        A: *const fq_nmod_mpoly_struct,
330        Alen: mp_limb_signed_t,
331        ctx: *mut fq_nmod_mpoly_ctx_struct,
332    ) -> c_int;
333    pub fn _fq_nmod_mpoly_vec_divexact_mpoly(
334        A: *mut fq_nmod_mpoly_struct,
335        Alen: mp_limb_signed_t,
336        c: *mut fq_nmod_mpoly_struct,
337        ctx: *mut fq_nmod_mpoly_ctx_struct,
338    );
339    pub fn _fq_nmod_mpoly_vec_mul_mpoly(
340        A: *mut fq_nmod_mpoly_struct,
341        Alen: mp_limb_signed_t,
342        c: *mut fq_nmod_mpoly_struct,
343        ctx: *mut fq_nmod_mpoly_ctx_struct,
344    );
345    pub fn _fq_nmod_mpoly_factor_separable(
346        f: *mut fq_nmod_mpoly_factor_struct,
347        A: *mut fq_nmod_mpoly_struct,
348        ctx: *mut fq_nmod_mpoly_ctx_struct,
349        sep: c_int,
350    ) -> c_int;
351    pub fn fq_nmod_mpoly_factor_lcc_wang(
352        lc_divs: *mut fq_nmod_mpoly_struct,
353        lcAfac: *mut fq_nmod_mpoly_factor_struct,
354        Auc: *mut n_poly_struct,
355        Auf: *const n_bpoly_struct,
356        r: mp_limb_signed_t,
357        alpha: *const n_poly_struct,
358        ctx: *mut fq_nmod_mpoly_ctx_struct,
359    ) -> c_int;
360    pub fn fq_nmod_mpoly_factor_irred_smprime_zassenhaus(
361        fac: *mut fq_nmod_mpolyv_struct,
362        A: *mut fq_nmod_mpoly_struct,
363        ctx: *mut fq_nmod_mpoly_ctx_struct,
364        state: *mut flint_rand_s,
365    ) -> c_int;
366    pub fn fq_nmod_mpoly_factor_irred_lgprime_zassenhaus(
367        fac: *mut fq_nmod_mpolyv_struct,
368        A: *mut fq_nmod_mpoly_struct,
369        ctx: *mut fq_nmod_mpoly_ctx_struct,
370        state: *mut flint_rand_s,
371    ) -> c_int;
372    pub fn fq_nmod_mpoly_factor_irred_smprime_wang(
373        fac: *mut fq_nmod_mpolyv_struct,
374        A: *mut fq_nmod_mpoly_struct,
375        lcAfac: *mut fq_nmod_mpoly_factor_struct,
376        lcA: *mut fq_nmod_mpoly_struct,
377        ctx: *mut fq_nmod_mpoly_ctx_struct,
378        state: *mut flint_rand_s,
379    ) -> c_int;
380    pub fn fq_nmod_mpoly_factor_irred_lgprime_wang(
381        Af: *mut fq_nmod_mpolyv_struct,
382        A: *mut fq_nmod_mpoly_struct,
383        lcAfac: *mut fq_nmod_mpoly_factor_struct,
384        lcA: *mut fq_nmod_mpoly_struct,
385        ctx: *mut fq_nmod_mpoly_ctx_struct,
386        state: *mut flint_rand_s,
387    ) -> c_int;
388    pub fn fq_nmod_mpoly_factor_irred_smprime_zippel(
389        fac: *mut fq_nmod_mpolyv_struct,
390        A: *mut fq_nmod_mpoly_struct,
391        lcAfac: *mut fq_nmod_mpoly_factor_struct,
392        lcA: *mut fq_nmod_mpoly_struct,
393        ctx: *mut fq_nmod_mpoly_ctx_struct,
394        state: *mut flint_rand_s,
395    ) -> c_int;
396    pub fn fq_nmod_mpoly_factor_irred_lgprime_zippel(
397        Af: *mut fq_nmod_mpolyv_struct,
398        A: *mut fq_nmod_mpoly_struct,
399        lcAfac: *mut fq_nmod_mpoly_factor_struct,
400        lcA: *mut fq_nmod_mpoly_struct,
401        ctx: *mut fq_nmod_mpoly_ctx_struct,
402        state: *mut flint_rand_s,
403    ) -> c_int;
404    pub fn fq_nmod_mpoly_compression_do(
405        L: *mut fq_nmod_mpoly_struct,
406        Lctx: *mut fq_nmod_mpoly_ctx_struct,
407        Acoeffs: *mut mp_limb_t,
408        Alen: mp_limb_signed_t,
409        M: *mut mpoly_compression_struct,
410    );
411    pub fn fq_nmod_mpoly_compression_undo(
412        A: *mut fq_nmod_mpoly_struct,
413        Abits: mp_limb_t,
414        Actx: *mut fq_nmod_mpoly_ctx_struct,
415        L: *mut fq_nmod_mpoly_struct,
416        Lctx: *mut fq_nmod_mpoly_ctx_struct,
417        M: *mut mpoly_compression_struct,
418    );
419    pub fn fq_nmod_mpoly_pfrac_init(
420        I: *mut fq_nmod_mpoly_pfrac_struct,
421        bits: mp_limb_t,
422        l: mp_limb_signed_t,
423        r: mp_limb_signed_t,
424        betas: *const fq_nmod_mpoly_struct,
425        alpha: *const fq_nmod_struct,
426        ctx: *mut fq_nmod_mpoly_ctx_struct,
427    ) -> c_int;
428    pub fn fq_nmod_mpoly_pfrac_clear(
429        I: *mut fq_nmod_mpoly_pfrac_struct,
430        ctx: *mut fq_nmod_mpoly_ctx_struct,
431    );
432    pub fn fq_nmod_mpoly_pfrac(
433        r: mp_limb_signed_t,
434        t: *mut fq_nmod_mpoly_struct,
435        deg: *const mp_limb_signed_t,
436        I: *mut fq_nmod_mpoly_pfrac_struct,
437        ctx: *mut fq_nmod_mpoly_ctx_struct,
438    ) -> c_int;
439    pub fn fq_nmod_mpoly_hlift(
440        m: mp_limb_signed_t,
441        f: *mut fq_nmod_mpoly_struct,
442        r: mp_limb_signed_t,
443        alpha: *const fq_nmod_struct,
444        A: *mut fq_nmod_mpoly_struct,
445        degs: *const mp_limb_signed_t,
446        ctx: *mut fq_nmod_mpoly_ctx_struct,
447    ) -> c_int;
448    pub fn n_fq_bpoly_hlift2_cubic(
449        A: *mut n_bpoly_struct,
450        B0: *mut n_bpoly_struct,
451        B1: *mut n_bpoly_struct,
452        alpha_: *mut nmod_poly_struct,
453        degree_inner: mp_limb_signed_t,
454        ctx: *mut fq_nmod_ctx_struct,
455        E: *mut nmod_eval_interp_struct,
456        St: *mut n_poly_bpoly_stack_struct,
457    ) -> c_int;
458    pub fn n_fq_bpoly_hlift2(
459        A: *mut n_bpoly_struct,
460        B0: *mut n_bpoly_struct,
461        B1: *mut n_bpoly_struct,
462        alpha: *mut nmod_poly_struct,
463        degree_inner: mp_limb_signed_t,
464        ctx: *mut fq_nmod_ctx_struct,
465        St: *mut n_poly_bpoly_stack_struct,
466    ) -> c_int;
467    pub fn n_fq_bpoly_hlift_cubic(
468        A: *mut n_bpoly_struct,
469        B0: *mut n_bpoly_struct,
470        B1: *mut n_bpoly_struct,
471        alpha_: *mut nmod_poly_struct,
472        degree_inner: mp_limb_signed_t,
473        ctx: *mut fq_nmod_ctx_struct,
474        E: *mut nmod_eval_interp_struct,
475        St: *mut n_poly_bpoly_stack_struct,
476    ) -> c_int;
477    pub fn n_fq_bpoly_hlift(
478        r: mp_limb_signed_t,
479        A: *mut n_bpoly_struct,
480        B: *mut n_bpoly_struct,
481        alpha: *mut nmod_poly_struct,
482        degree_inner: mp_limb_signed_t,
483        ctx: *mut fq_nmod_ctx_struct,
484        St: *mut n_poly_bpoly_stack_struct,
485    ) -> c_int;
486    pub fn n_fq_polyu3_hlift(
487        r: mp_limb_signed_t,
488        BB: *mut n_polyun_struct,
489        A: *mut n_polyu_struct,
490        B: *mut n_polyu_struct,
491        beta: *mut nmod_poly_struct,
492        degree_inner: mp_limb_signed_t,
493        ctx: *mut fq_nmod_ctx_struct,
494        St: *mut n_poly_bpoly_stack_struct,
495    ) -> c_int;
496    pub fn fq_nmod_mpoly_factor_algo(
497        f: *mut fq_nmod_mpoly_factor_struct,
498        A: *mut fq_nmod_mpoly_struct,
499        ctx: *mut fq_nmod_mpoly_ctx_struct,
500        algo: c_uint,
501    ) -> c_int;
502    pub fn fq_nmod_mpoly_factor_wang(
503        f: *mut fq_nmod_mpoly_factor_struct,
504        A: *mut fq_nmod_mpoly_struct,
505        ctx: *mut fq_nmod_mpoly_ctx_struct,
506    ) -> c_int;
507    pub fn fq_nmod_mpoly_factor_zassenhaus(
508        f: *mut fq_nmod_mpoly_factor_struct,
509        A: *mut fq_nmod_mpoly_struct,
510        ctx: *mut fq_nmod_mpoly_ctx_struct,
511    ) -> c_int;
512    pub fn fq_nmod_mpoly_factor_zippel(
513        f: *mut fq_nmod_mpoly_factor_struct,
514        A: *mut fq_nmod_mpoly_struct,
515        ctx: *mut fq_nmod_mpoly_ctx_struct,
516    ) -> c_int;
517    pub fn _fq_nmod_mpoly_eval_rest_n_fq_poly(
518        E: *mut n_poly_struct,
519        starts: *mut mp_limb_signed_t,
520        ends: *mut mp_limb_signed_t,
521        stops: *mut mp_limb_signed_t,
522        es: *mut mp_limb_t,
523        Acoeffs: *const mp_limb_t,
524        Aexps: *const mp_limb_t,
525        Alen: mp_limb_signed_t,
526        var: mp_limb_signed_t,
527        alphas: *const n_fq_poly_struct,
528        offsets: *const mp_limb_signed_t,
529        shifts: *const mp_limb_signed_t,
530        N: mp_limb_signed_t,
531        mask: mp_limb_t,
532        nvars: mp_limb_signed_t,
533        ctx: *mut fq_nmod_ctx_struct,
534    ) -> c_int;
535    pub fn _fq_nmod_mpoly_eval_rest_to_n_fq_bpoly(
536        E: *mut n_bpoly_struct,
537        A: *mut fq_nmod_mpoly_struct,
538        alphabetas: *const n_poly_struct,
539        ctx: *mut fq_nmod_mpoly_ctx_struct,
540    );
541    pub fn _fq_nmod_mpoly_set_n_fq_bpoly_gen1_zero(
542        A: *mut fq_nmod_mpoly_struct,
543        Abits: mp_limb_t,
544        B: *mut n_bpoly_struct,
545        var: mp_limb_signed_t,
546        ctx: *mut fq_nmod_mpoly_ctx_struct,
547    );
548}