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