1#![allow(non_snake_case)]
2#![allow(non_camel_case_types)]
3
4use 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}