1#![allow(non_camel_case_types)]
2#![allow(non_snake_case)]
3
4use crate::deps::*;
7use crate::flint::*;
8use crate::fmpq::fmpq;
9use crate::fmpz::{fmpz, fmpz_t};
10use crate::fmpz_mod::{fmpz_mod_ctx_struct, fmpz_mod_ctx_t};
11use crate::fmpz_mod_poly::{fmpz_mod_poly_struct, fmpz_mod_poly_t};
12use crate::fmpz_mpoly::{
13 fmpz_mpoly_ctx_struct, fmpz_mpoly_geobucket_struct, fmpz_mpoly_struct, fmpz_mpoly_univar_struct,
14};
15use crate::fmpz_poly::{fmpz_poly_struct, fmpz_poly_t};
16use crate::fmpz_poly_factor::{fmpz_poly_factor_struct, zassenhaus_prune_struct};
17use crate::mpoly::*;
18use crate::nmod_mpoly::*;
19use libc::{c_char, c_int, c_uint};
20
21#[repr(C)]
22#[derive(Debug, Copy, Clone)]
23pub struct fmpz_mpoly_factor_struct {
24 pub constant: fmpz_t,
25 pub constant_den: fmpz_t,
26 pub poly: *mut fmpz_mpoly_struct,
27 pub exp: *mut fmpz,
28 pub num: mp_limb_signed_t,
29 pub alloc: mp_limb_signed_t,
30}
31pub type fmpz_mpoly_factor_t = [fmpz_mpoly_factor_struct; 1usize];
32extern "C" {
33 pub fn fmpz_mpoly_factor_init(
34 f: *mut fmpz_mpoly_factor_struct,
35 ctx: *mut fmpz_mpoly_ctx_struct,
36 );
37}
38extern "C" {
39 pub fn fmpz_mpoly_factor_init2(
40 f: *mut fmpz_mpoly_factor_struct,
41 alloc: mp_limb_signed_t,
42 ctx: *mut fmpz_mpoly_ctx_struct,
43 );
44}
45extern "C" {
46 pub fn fmpz_mpoly_factor_realloc(
47 f: *mut fmpz_mpoly_factor_struct,
48 alloc: mp_limb_signed_t,
49 ctx: *mut fmpz_mpoly_ctx_struct,
50 );
51}
52extern "C" {
53 pub fn fmpz_mpoly_factor_fit_length(
54 f: *mut fmpz_mpoly_factor_struct,
55 len: mp_limb_signed_t,
56 ctx: *mut fmpz_mpoly_ctx_struct,
57 );
58}
59extern "C" {
60 pub fn fmpz_mpoly_factor_clear(
61 f: *mut fmpz_mpoly_factor_struct,
62 ctx: *mut fmpz_mpoly_ctx_struct,
63 );
64}
65extern "C" {
66 pub fn fmpz_mpoly_factor_length(
67 f: *mut fmpz_mpoly_factor_struct,
68 ctx: *mut fmpz_mpoly_ctx_struct,
69 ) -> mp_limb_signed_t;
70}
71extern "C" {
72 pub fn fmpz_mpoly_factor_get_constant_fmpz(
73 c: *mut fmpz,
74 f: *mut fmpz_mpoly_factor_struct,
75 ctx: *mut fmpz_mpoly_ctx_struct,
76 );
77}
78extern "C" {
79 pub fn fmpz_mpoly_factor_get_constant_fmpq(
80 c: *mut fmpq,
81 f: *mut fmpz_mpoly_factor_struct,
82 ctx: *mut fmpz_mpoly_ctx_struct,
83 );
84}
85extern "C" {
86 pub fn fmpz_mpoly_factor_get_base(
87 p: *mut fmpz_mpoly_struct,
88 f: *mut fmpz_mpoly_factor_struct,
89 i: mp_limb_signed_t,
90 ctx: *mut fmpz_mpoly_ctx_struct,
91 );
92}
93extern "C" {
94 pub fn fmpz_mpoly_factor_swap_base(
95 p: *mut fmpz_mpoly_struct,
96 f: *mut fmpz_mpoly_factor_struct,
97 i: mp_limb_signed_t,
98 ctx: *mut fmpz_mpoly_ctx_struct,
99 );
100}
101extern "C" {
102 pub fn fmpz_mpoly_factor_get_exp_si(
103 f: *mut fmpz_mpoly_factor_struct,
104 i: mp_limb_signed_t,
105 ctx: *mut fmpz_mpoly_ctx_struct,
106 ) -> mp_limb_signed_t;
107}
108extern "C" {
109 pub fn fmpz_mpoly_factor_set(
110 f: *mut fmpz_mpoly_factor_struct,
111 g: *mut fmpz_mpoly_factor_struct,
112 ctx: *mut fmpz_mpoly_ctx_struct,
113 );
114}
115extern "C" {
116 pub fn fmpz_mpoly_factor_cmp(
117 f: *mut fmpz_mpoly_factor_struct,
118 g: *mut fmpz_mpoly_factor_struct,
119 ctx: *mut fmpz_mpoly_ctx_struct,
120 ) -> c_int;
121}
122extern "C" {
123 pub fn fmpz_mpoly_factor_print_pretty(
124 f: *mut fmpz_mpoly_factor_struct,
125 vars: *mut *const c_char,
126 ctx: *mut fmpz_mpoly_ctx_struct,
127 );
128}
129extern "C" {
130 pub fn fmpz_mpoly_factor_content(
131 f: *mut fmpz_mpoly_factor_struct,
132 A: *mut fmpz_mpoly_struct,
133 ctx: *mut fmpz_mpoly_ctx_struct,
134 ) -> c_int;
135}
136extern "C" {
137 pub fn fmpz_mpoly_factor_squarefree(
138 f: *mut fmpz_mpoly_factor_struct,
139 A: *mut fmpz_mpoly_struct,
140 ctx: *mut fmpz_mpoly_ctx_struct,
141 ) -> c_int;
142}
143extern "C" {
144 pub fn fmpz_mpoly_factor(
145 f: *mut fmpz_mpoly_factor_struct,
146 A: *mut fmpz_mpoly_struct,
147 ctx: *mut fmpz_mpoly_ctx_struct,
148 ) -> c_int;
149}
150extern "C" {
151 pub fn fmpz_mpoly_factor_swap(
152 f: *mut fmpz_mpoly_factor_struct,
153 g: *mut fmpz_mpoly_factor_struct,
154 ctx: *mut fmpz_mpoly_ctx_struct,
155 );
156}
157extern "C" {
158 pub fn fmpz_mpoly_factor_set_fmpz(
159 f: *mut fmpz_mpoly_factor_struct,
160 a: *mut fmpz,
161 ctx: *mut fmpz_mpoly_ctx_struct,
162 );
163}
164extern "C" {
165 pub fn fmpz_mpoly_factor_zero(
166 f: *mut fmpz_mpoly_factor_struct,
167 ctx: *mut fmpz_mpoly_ctx_struct,
168 );
169}
170extern "C" {
171 pub fn fmpz_mpoly_factor_one(f: *mut fmpz_mpoly_factor_struct, ctx: *mut fmpz_mpoly_ctx_struct);
172}
173extern "C" {
174 pub fn fmpz_mpoly_factor_sort(
175 f: *mut fmpz_mpoly_factor_struct,
176 ctx: *mut fmpz_mpoly_ctx_struct,
177 );
178}
179extern "C" {
180 pub fn fmpz_mpoly_factor_expand(
181 A: *mut fmpz_mpoly_struct,
182 f: *mut fmpz_mpoly_factor_struct,
183 ctx: *mut fmpz_mpoly_ctx_struct,
184 ) -> c_int;
185}
186extern "C" {
187 pub fn fmpz_mpoly_factor_bound_si(
188 B: *mut fmpz,
189 A: *mut fmpz,
190 degs: *const mp_limb_signed_t,
191 nvars: mp_limb_signed_t,
192 ) -> c_int;
193}
194extern "C" {
195 pub fn fmpz_mpoly_factor_matches(
196 A: *mut fmpz_mpoly_struct,
197 f: *mut fmpz_mpoly_factor_struct,
198 ctx: *mut fmpz_mpoly_ctx_struct,
199 ) -> c_int;
200}
201extern "C" {
202 pub fn fmpz_mpoly_factor_append_fmpz_swap(
203 f: *mut fmpz_mpoly_factor_struct,
204 A: *mut fmpz_mpoly_struct,
205 e: *mut fmpz,
206 ctx: *mut fmpz_mpoly_ctx_struct,
207 );
208}
209extern "C" {
210 pub fn fmpz_mpoly_factor_append_ui(
211 f: *mut fmpz_mpoly_factor_struct,
212 A: *mut fmpz_mpoly_struct,
213 e: mp_limb_t,
214 ctx: *mut fmpz_mpoly_ctx_struct,
215 );
216}
217extern "C" {
218 pub fn fmpz_mpoly_interp_lift_p(
219 A: *mut fmpz_mpoly_struct,
220 ctx: *mut fmpz_mpoly_ctx_struct,
221 Ap: *mut nmod_mpoly_struct,
222 ctxp: *mut nmod_mpoly_ctx_struct,
223 );
224}
225extern "C" {
226 pub fn fmpz_mpoly_interp_reduce_p(
227 Ap: *mut nmod_mpoly_struct,
228 ctxp: *mut nmod_mpoly_ctx_struct,
229 A: *mut fmpz_mpoly_struct,
230 ctx: *mut fmpz_mpoly_ctx_struct,
231 );
232}
233extern "C" {
234 pub fn fmpz_mpoly_interp_mcrt_p(
235 coeffbits: *mut mp_limb_t,
236 H: *mut fmpz_mpoly_struct,
237 ctx: *mut fmpz_mpoly_ctx_struct,
238 m: *mut fmpz,
239 A: *mut nmod_mpoly_struct,
240 ctxp: *mut nmod_mpoly_ctx_struct,
241 ) -> c_int;
242}
243extern "C" {
244 pub fn fmpz_mpoly_interp_reduce_p_mpolyn(
245 E: *mut nmod_mpolyn_struct,
246 pctx: *mut nmod_mpoly_ctx_struct,
247 A: *mut fmpz_mpoly_struct,
248 ctx: *mut fmpz_mpoly_ctx_struct,
249 );
250}
251extern "C" {
252 pub fn fmpz_mpoly_interp_lift_p_mpolyn(
253 A: *mut fmpz_mpoly_struct,
254 ctx: *mut fmpz_mpoly_ctx_struct,
255 B: *mut nmod_mpolyn_struct,
256 pctx: *mut nmod_mpoly_ctx_struct,
257 );
258}
259extern "C" {
260 pub fn fmpz_mpoly_interp_crt_p_mpolyn(
261 F: *mut fmpz_mpoly_struct,
262 T: *mut fmpz_mpoly_struct,
263 ctx: *mut fmpz_mpoly_ctx_struct,
264 modulus: *mut fmpz,
265 A: *mut nmod_mpolyn_struct,
266 pctx: *mut nmod_mpoly_ctx_struct,
267 ) -> c_int;
268}
269#[repr(C)]
270#[derive(Debug, Copy, Clone)]
271pub struct fmpz_mpolyv_struct {
272 pub coeffs: *mut fmpz_mpoly_struct,
273 pub alloc: mp_limb_signed_t,
274 pub length: mp_limb_signed_t,
275}
276pub type fmpz_mpolyv_t = [fmpz_mpolyv_struct; 1usize];
277extern "C" {
278 pub fn fmpz_mpolyv_init(A: *mut fmpz_mpolyv_struct, ctx: *mut fmpz_mpoly_ctx_struct);
279}
280extern "C" {
281 pub fn fmpz_mpolyv_swap(
282 A: *mut fmpz_mpolyv_struct,
283 B: *mut fmpz_mpolyv_struct,
284 ctx: *mut fmpz_mpoly_ctx_struct,
285 );
286}
287extern "C" {
288 pub fn fmpz_mpolyv_clear(A: *mut fmpz_mpolyv_struct, ctx: *mut fmpz_mpoly_ctx_struct);
289}
290extern "C" {
291 pub fn fmpz_mpolyv_print_pretty(
292 poly: *mut fmpz_mpolyv_struct,
293 x: *mut *const c_char,
294 ctx: *mut fmpz_mpoly_ctx_struct,
295 );
296}
297extern "C" {
298 pub fn fmpz_mpolyv_fit_length(
299 A: *mut fmpz_mpolyv_struct,
300 length: mp_limb_signed_t,
301 ctx: *mut fmpz_mpoly_ctx_struct,
302 );
303}
304extern "C" {
305 pub fn fmpz_mpolyv_set_coeff(
306 A: *mut fmpz_mpolyv_struct,
307 i: mp_limb_signed_t,
308 c: *mut fmpz_mpoly_struct,
309 ctx: *mut fmpz_mpoly_ctx_struct,
310 );
311}
312extern "C" {
313 pub fn fmpz_mpoly_to_mpolyv(
314 A: *mut fmpz_mpolyv_struct,
315 B: *mut fmpz_mpoly_struct,
316 xalpha: *mut fmpz_mpoly_struct,
317 ctx: *mut fmpz_mpoly_ctx_struct,
318 );
319}
320extern "C" {
321 pub fn fmpz_mpoly_from_mpolyv(
322 A: *mut fmpz_mpoly_struct,
323 Abits: mp_limb_t,
324 B: *mut fmpz_mpolyv_struct,
325 xalpha: *mut fmpz_mpoly_struct,
326 ctx: *mut fmpz_mpoly_ctx_struct,
327 );
328}
329extern "C" {
330 pub fn _fmpz_mpoly_vec_content_mpoly(
331 g: *mut fmpz_mpoly_struct,
332 A: *const fmpz_mpoly_struct,
333 Alen: mp_limb_signed_t,
334 ctx: *mut fmpz_mpoly_ctx_struct,
335 ) -> c_int;
336}
337extern "C" {
338 pub fn _fmpz_mpoly_vec_divexact_mpoly(
339 A: *mut fmpz_mpoly_struct,
340 Alen: mp_limb_signed_t,
341 c: *mut fmpz_mpoly_struct,
342 ctx: *mut fmpz_mpoly_ctx_struct,
343 );
344}
345extern "C" {
346 pub fn _fmpz_mpoly_vec_mul_mpoly(
347 A: *mut fmpz_mpoly_struct,
348 Alen: mp_limb_signed_t,
349 c: *mut fmpz_mpoly_struct,
350 ctx: *mut fmpz_mpoly_ctx_struct,
351 );
352}
353extern "C" {
354 pub fn _fmpz_mpoly_gcd_algo(
355 G: *mut fmpz_mpoly_struct,
356 Abar: *mut fmpz_mpoly_struct,
357 Bbar: *mut fmpz_mpoly_struct,
358 A: *mut fmpz_mpoly_struct,
359 B: *mut fmpz_mpoly_struct,
360 ctx: *mut fmpz_mpoly_ctx_struct,
361 algo: c_uint,
362 ) -> c_int;
363}
364extern "C" {
365 pub fn fmpz_mpoly_to_mpolyl_perm_deflate(
366 A: *mut fmpz_mpoly_struct,
367 lctx: *mut fmpz_mpoly_ctx_struct,
368 B: *mut fmpz_mpoly_struct,
369 ctx: *mut fmpz_mpoly_ctx_struct,
370 perm: *const mp_limb_signed_t,
371 shift: *const mp_limb_t,
372 stride: *const mp_limb_t,
373 );
374}
375extern "C" {
376 pub fn fmpz_mpoly_from_mpolyl_perm_inflate(
377 A: *mut fmpz_mpoly_struct,
378 Abits: mp_limb_t,
379 ctx: *mut fmpz_mpoly_ctx_struct,
380 B: *mut fmpz_mpoly_struct,
381 lctx: *mut fmpz_mpoly_ctx_struct,
382 perm: *const mp_limb_signed_t,
383 shift: *const mp_limb_t,
384 stride: *const mp_limb_t,
385 );
386}
387extern "C" {
388 pub fn fmpz_mpolyl_gcd_brown(
389 G: *mut fmpz_mpoly_struct,
390 Abar: *mut fmpz_mpoly_struct,
391 Bbar: *mut fmpz_mpoly_struct,
392 A: *mut fmpz_mpoly_struct,
393 B: *mut fmpz_mpoly_struct,
394 ctx: *mut fmpz_mpoly_ctx_struct,
395 I: *mut mpoly_gcd_info_struct,
396 ) -> c_int;
397}
398extern "C" {
399 pub fn fmpz_mpolyl_gcd_brown_threaded_pool(
400 G: *mut fmpz_mpoly_struct,
401 Abar: *mut fmpz_mpoly_struct,
402 Bbar: *mut fmpz_mpoly_struct,
403 A: *mut fmpz_mpoly_struct,
404 B: *mut fmpz_mpoly_struct,
405 ctx: *mut fmpz_mpoly_ctx_struct,
406 I: *mut mpoly_gcd_info_struct,
407 handles: *const thread_pool_handle,
408 num_handles: mp_limb_signed_t,
409 ) -> c_int;
410}
411extern "C" {
412 pub fn fmpz_mpolyl_gcd_zippel(
413 G: *mut fmpz_mpoly_struct,
414 Abar: *mut fmpz_mpoly_struct,
415 Bbar: *mut fmpz_mpoly_struct,
416 A: *mut fmpz_mpoly_struct,
417 B: *mut fmpz_mpoly_struct,
418 ctx: *mut fmpz_mpoly_ctx_struct,
419 randstate: *mut flint_rand_s,
420 ) -> c_int;
421}
422extern "C" {
423 pub fn fmpz_mpolyl_gcd_zippel2(
424 G: *mut fmpz_mpoly_struct,
425 Abar: *mut fmpz_mpoly_struct,
426 Bbar: *mut fmpz_mpoly_struct,
427 A: *mut fmpz_mpoly_struct,
428 B: *mut fmpz_mpoly_struct,
429 Gamma: *mut fmpz_mpoly_struct,
430 ctx: *mut fmpz_mpoly_ctx_struct,
431 ) -> c_int;
432}
433extern "C" {
434 pub fn fmpz_mpolyl_gcd_hensel(
435 G: *mut fmpz_mpoly_struct,
436 Gdeg: mp_limb_signed_t,
437 Abar: *mut fmpz_mpoly_struct,
438 Bbar: *mut fmpz_mpoly_struct,
439 A: *mut fmpz_mpoly_struct,
440 B: *mut fmpz_mpoly_struct,
441 ctx: *mut fmpz_mpoly_ctx_struct,
442 ) -> c_int;
443}
444#[repr(C)]
445#[derive(Debug, Copy, Clone)]
446pub struct fmpz_poly_pfrac_struct {
447 pub r: mp_limb_signed_t,
448 pub bits: *mut mp_limb_t,
449 pub a: fmpz_poly_t,
450 pub newa: fmpz_poly_t,
451 pub t: fmpz_poly_t,
452 pub b: *mut fmpz_poly_struct,
453 pub bprod: *mut fmpz_poly_struct,
454 pub old_pk: fmpz_t,
455 pub pk: fmpz_t,
456 pub p: fmpz_t,
457 pub halfpks: *mut fmpz,
458 pub ctxp: fmpz_mod_ctx_t,
459 pub ctxs: *mut fmpz_mod_ctx_struct,
460 pub T: fmpz_mod_poly_t,
461 pub R: fmpz_mod_poly_t,
462 pub Q: fmpz_mod_poly_t,
463 pub B: *mut fmpz_mod_poly_struct,
464 pub invBprod: *mut fmpz_mod_poly_struct,
465 pub inwBprod: *mut fmpz_mod_poly_struct,
466 pub B_inv: *mut fmpz_mod_poly_struct,
467}
468pub type fmpz_poly_pfrac_t = [fmpz_poly_pfrac_struct; 1usize];
469extern "C" {
470 pub fn fmpz_poly_pfrac_init(I: *mut fmpz_poly_pfrac_struct);
471}
472extern "C" {
473 pub fn fmpz_poly_pfrac_clear(I: *mut fmpz_poly_pfrac_struct);
474}
475extern "C" {
476 pub fn fmpz_poly_pfrac_precompute(
477 I: *mut fmpz_poly_pfrac_struct,
478 b: *const fmpz_poly_struct,
479 r: mp_limb_signed_t,
480 ) -> c_int;
481}
482extern "C" {
483 pub fn fmpz_poly_pfrac_precomp(
484 c: *mut fmpz_poly_struct,
485 A: *mut fmpz_poly_struct,
486 I: *mut fmpz_poly_pfrac_struct,
487 ) -> c_int;
488}
489#[repr(C)]
490#[derive(Debug, Copy, Clone)]
491pub struct fmpz_mpoly_pfrac_struct {
492 pub bits: mp_limb_t,
493 pub w: mp_limb_signed_t,
494 pub r: mp_limb_signed_t,
495 pub prod_mbetas: *mut fmpz_mpoly_struct,
496 pub prod_mbetas_coeffs: *mut fmpz_mpolyv_struct,
497 pub mbetas: *mut fmpz_mpoly_struct,
498 pub deltas: *mut fmpz_mpoly_struct,
499 pub xalpha: *mut fmpz_mpoly_struct,
500 pub q: *mut fmpz_mpoly_struct,
501 pub U: *mut fmpz_mpoly_univar_struct,
502 pub G: *mut fmpz_mpoly_geobucket_struct,
503 pub qt: *mut fmpz_mpoly_struct,
504 pub newt: *mut fmpz_mpoly_struct,
505 pub delta_coeffs: *mut fmpz_mpolyv_struct,
506 pub uni_pfrac: fmpz_poly_pfrac_t,
507 pub uni_a: fmpz_poly_t,
508 pub uni_c: *mut fmpz_poly_struct,
509}
510pub type fmpz_mpoly_pfrac_t = [fmpz_mpoly_pfrac_struct; 1usize];
511extern "C" {
512 pub fn fmpz_mpoly_pfrac_init(
513 I: *mut fmpz_mpoly_pfrac_struct,
514 bits: mp_limb_t,
515 r: mp_limb_signed_t,
516 w: mp_limb_signed_t,
517 betas: *const fmpz_mpoly_struct,
518 alpha: *const fmpz,
519 ctx: *mut fmpz_mpoly_ctx_struct,
520 ) -> c_int;
521}
522extern "C" {
523 pub fn fmpz_mpoly_pfrac_clear(I: *mut fmpz_mpoly_pfrac_struct, ctx: *mut fmpz_mpoly_ctx_struct);
524}
525extern "C" {
526 pub fn fmpz_mpoly_pfrac(
527 l: mp_limb_signed_t,
528 t: *mut fmpz_mpoly_struct,
529 degs: *const mp_limb_signed_t,
530 I: *mut fmpz_mpoly_pfrac_struct,
531 ctx: *mut fmpz_mpoly_ctx_struct,
532 ) -> c_int;
533}
534extern "C" {
535 pub fn fmpz_mpoly_hlift(
536 m: mp_limb_signed_t,
537 f: *mut fmpz_mpoly_struct,
538 r: mp_limb_signed_t,
539 alpha: *const fmpz,
540 A: *mut fmpz_mpoly_struct,
541 degs: *const mp_limb_signed_t,
542 ctx: *mut fmpz_mpoly_ctx_struct,
543 ) -> c_int;
544}
545extern "C" {
546 pub fn _fmpz_mpoly_get_lead0(
547 c: *mut fmpz_mpoly_struct,
548 A: *mut fmpz_mpoly_struct,
549 ctx: *mut fmpz_mpoly_ctx_struct,
550 );
551}
552extern "C" {
553 pub fn _fmpz_mpoly_set_lead0(
554 A: *mut fmpz_mpoly_struct,
555 B: *mut fmpz_mpoly_struct,
556 c: *mut fmpz_mpoly_struct,
557 ctx: *mut fmpz_mpoly_ctx_struct,
558 );
559}
560#[repr(C)]
561#[derive(Debug, Copy, Clone)]
562pub struct fmpz_bpoly_struct {
563 pub coeffs: *mut fmpz_poly_struct,
564 pub alloc: mp_limb_signed_t,
565 pub length: mp_limb_signed_t,
566}
567pub type fmpz_bpoly_t = [fmpz_bpoly_struct; 1usize];
568extern "C" {
569 pub fn fmpz_bpoly_init(A: *mut fmpz_bpoly_struct);
570}
571extern "C" {
572 pub fn fmpz_bpoly_swap(A: *mut fmpz_bpoly_struct, B: *mut fmpz_bpoly_struct);
573}
574extern "C" {
575 pub fn fmpz_bpoly_clear(A: *mut fmpz_bpoly_struct);
576}
577extern "C" {
578 pub fn fmpz_bpoly_realloc(A: *mut fmpz_bpoly_struct, len: mp_limb_signed_t);
579}
580extern "C" {
581 pub fn fmpz_bpoly_fit_length(A: *mut fmpz_bpoly_struct, len: mp_limb_signed_t);
582}
583extern "C" {
584 pub fn fmpz_bpoly_print_pretty(
585 A: *mut fmpz_bpoly_struct,
586 var0: *const c_char,
587 var1: *const c_char,
588 );
589}
590extern "C" {
591 pub fn fmpz_bpoly_lead(A: *mut fmpz_bpoly_struct) -> *mut fmpz_poly_struct;
592}
593extern "C" {
594 pub fn fmpz_bpoly_zero(A: *mut fmpz_bpoly_struct);
595}
596extern "C" {
597 pub fn fmpz_bpoly_degree0(A: *mut fmpz_bpoly_struct) -> mp_limb_signed_t;
598}
599extern "C" {
600 pub fn fmpz_bpoly_degree1(A: *mut fmpz_bpoly_struct) -> mp_limb_signed_t;
601}
602extern "C" {
603 pub fn fmpz_bpoly_set_coeff(
604 A: *mut fmpz_bpoly_struct,
605 exp0: mp_limb_signed_t,
606 exp1: mp_limb_signed_t,
607 c: *mut fmpz,
608 );
609}
610extern "C" {
611 pub fn fmpz_mpoly_set_fmpz_bpoly(
612 A: *mut fmpz_mpoly_struct,
613 Abits: mp_limb_t,
614 B: *mut fmpz_bpoly_struct,
615 var0: mp_limb_signed_t,
616 var1: mp_limb_signed_t,
617 ctx: *mut fmpz_mpoly_ctx_struct,
618 );
619}
620extern "C" {
621 pub fn fmpz_mpoly_get_bpoly(
622 A: *mut fmpz_bpoly_struct,
623 B: *mut fmpz_mpoly_struct,
624 var0: mp_limb_signed_t,
625 var1: mp_limb_signed_t,
626 ctx: *mut fmpz_mpoly_ctx_struct,
627 );
628}
629#[repr(C)]
630#[derive(Debug, Copy, Clone)]
631pub struct fmpz_tpoly_struct {
632 pub coeffs: *mut fmpz_bpoly_struct,
633 pub alloc: mp_limb_signed_t,
634 pub length: mp_limb_signed_t,
635}
636pub type fmpz_tpoly_t = [fmpz_tpoly_struct; 1usize];
637extern "C" {
638 pub fn fmpz_tpoly_init(A: *mut fmpz_tpoly_struct);
639}
640extern "C" {
641 pub fn fmpz_tpoly_swap(A: *mut fmpz_tpoly_struct, B: *mut fmpz_tpoly_struct);
642}
643extern "C" {
644 pub fn fmpz_tpoly_fit_length(A: *mut fmpz_tpoly_struct, len: mp_limb_signed_t);
645}
646extern "C" {
647 pub fn fmpz_tpoly_clear(A: *mut fmpz_tpoly_struct);
648}
649extern "C" {
650 pub fn fmpz_bpoly_factor(
651 c: *mut fmpz_poly_struct,
652 F: *mut fmpz_tpoly_struct,
653 B: *mut fmpz_bpoly_struct,
654 );
655}
656extern "C" {
657 pub fn fmpz_bpoly_factor_ordered(
658 c: *mut fmpz_poly_struct,
659 F: *mut fmpz_tpoly_struct,
660 B: *mut fmpz_bpoly_struct,
661 alpha: *mut fmpz,
662 Bevalf: *mut fmpz_poly_factor_struct,
663 ) -> c_int;
664}
665extern "C" {
666 pub fn fmpz_mpoly_unit_normalize(A: *mut fmpz_mpoly_struct, ctx: *mut fmpz_mpoly_ctx_struct);
667}
668extern "C" {
669 pub fn _fmpz_mpoly_factor_squarefree(
670 f: *mut fmpz_mpoly_factor_struct,
671 A: *mut fmpz_mpoly_struct,
672 e: *mut fmpz,
673 ctx: *mut fmpz_mpoly_ctx_struct,
674 ) -> c_int;
675}
676extern "C" {
677 pub fn fmpz_mpoly_factor_lcc_wang(
678 lc_divs: *mut fmpz_mpoly_struct,
679 lcAfac: *mut fmpz_mpoly_factor_struct,
680 Auc: *mut fmpz,
681 Auf: *const fmpz_poly_struct,
682 r: mp_limb_signed_t,
683 alpha: *const fmpz,
684 ctx: *mut fmpz_mpoly_ctx_struct,
685 ) -> c_int;
686}
687extern "C" {
688 pub fn fmpz_mpoly_factor_irred_zassenhaus(
689 fac: *mut fmpz_mpolyv_struct,
690 A: *mut fmpz_mpoly_struct,
691 ctx: *mut fmpz_mpoly_ctx_struct,
692 Z: *mut zassenhaus_prune_struct,
693 ) -> c_int;
694}
695extern "C" {
696 pub fn fmpz_mpoly_factor_irred_wang(
697 fac: *mut fmpz_mpolyv_struct,
698 A: *mut fmpz_mpoly_struct,
699 lcAfac: *mut fmpz_mpoly_factor_struct,
700 lcAfac_irred: c_int,
701 lcA: *mut fmpz_mpoly_struct,
702 ctx: *mut fmpz_mpoly_ctx_struct,
703 state: *mut flint_rand_s,
704 Z: *mut zassenhaus_prune_struct,
705 allow_shift: c_int,
706 ) -> c_int;
707}
708extern "C" {
709 pub fn fmpz_mpoly_factor_irred_zippel(
710 fac: *mut fmpz_mpolyv_struct,
711 A: *mut fmpz_mpoly_struct,
712 lcAfac: *mut fmpz_mpoly_factor_struct,
713 lcAfac_irred: c_int,
714 lcA: *mut fmpz_mpoly_struct,
715 ctx: *mut fmpz_mpoly_ctx_struct,
716 state: *mut flint_rand_s,
717 Z: *mut zassenhaus_prune_struct,
718 ) -> c_int;
719}
720extern "C" {
721 pub fn fmpz_mpoly_factor_irred(
722 f: *mut fmpz_mpoly_factor_struct,
723 ctx: *mut fmpz_mpoly_ctx_struct,
724 algo: c_uint,
725 ) -> c_int;
726}
727extern "C" {
728 pub fn fmpz_mpoly_factor_zassenhaus(
729 f: *mut fmpz_mpoly_factor_struct,
730 A: *mut fmpz_mpoly_struct,
731 ctx: *mut fmpz_mpoly_ctx_struct,
732 ) -> c_int;
733}
734extern "C" {
735 pub fn fmpz_mpoly_factor_wang(
736 f: *mut fmpz_mpoly_factor_struct,
737 A: *mut fmpz_mpoly_struct,
738 ctx: *mut fmpz_mpoly_ctx_struct,
739 ) -> c_int;
740}
741extern "C" {
742 pub fn fmpz_mpoly_factor_zippel(
743 f: *mut fmpz_mpoly_factor_struct,
744 A: *mut fmpz_mpoly_struct,
745 ctx: *mut fmpz_mpoly_ctx_struct,
746 ) -> c_int;
747}
748extern "C" {
749 pub fn _fmpz_mpoly_evaluate_rest_fmpz(
750 E: *mut fmpz,
751 starts: *mut mp_limb_signed_t,
752 ends: *mut mp_limb_signed_t,
753 stops: *mut mp_limb_signed_t,
754 es: *mut mp_limb_t,
755 Acoeffs: *const fmpz,
756 Aexps: *const mp_limb_t,
757 Alen: mp_limb_signed_t,
758 var: mp_limb_signed_t,
759 alphas: *const fmpz,
760 offsets: *const mp_limb_signed_t,
761 shifts: *const mp_limb_signed_t,
762 N: mp_limb_signed_t,
763 mask: mp_limb_t,
764 nvars: mp_limb_signed_t,
765 ) -> c_int;
766}
767extern "C" {
768 pub fn _fmpz_mpoly_eval_rest_to_poly(
769 E: *mut fmpz_poly_struct,
770 A: *mut fmpz_mpoly_struct,
771 alphas: *const fmpz,
772 ctx: *mut fmpz_mpoly_ctx_struct,
773 );
774}
775extern "C" {
776 pub fn fmpz_mpoly_factor_lcc_kaltofen_step(
777 divs: *mut fmpz_mpoly_struct,
778 r: mp_limb_signed_t,
779 Af: *mut fmpz_mpoly_factor_struct,
780 Au: *const fmpz_poly_struct,
781 v: mp_limb_signed_t,
782 alphas: *const fmpz,
783 ctx: *mut fmpz_mpoly_ctx_struct,
784 ) -> c_int;
785}
786extern "C" {
787 pub fn fmpz_mpoly_factor_lcc_kaltofen(
788 divs: *mut fmpz_mpoly_struct,
789 lcAf_: *mut fmpz_mpoly_factor_struct,
790 A: *mut fmpz_mpoly_struct,
791 r: mp_limb_signed_t,
792 alpha: *const fmpz,
793 degs: *mut mp_limb_signed_t,
794 uf: *mut fmpz_poly_factor_struct,
795 ctx: *mut fmpz_mpoly_ctx_struct,
796 ) -> c_int;
797}
798extern "C" {
799 pub fn fmpz_mpoly_evaluate_rest_except_one(
800 e: *mut fmpz_poly_struct,
801 A: *mut fmpz_mpoly_struct,
802 alphas: *const fmpz,
803 v: mp_limb_signed_t,
804 ctx: *mut fmpz_mpoly_ctx_struct,
805 ) -> c_int;
806}
807extern "C" {
808 pub fn fmpz_mpoly_compression_do(
809 L: *mut fmpz_mpoly_struct,
810 Lctx: *mut fmpz_mpoly_ctx_struct,
811 Acoeffs: *mut fmpz,
812 Alen: mp_limb_signed_t,
813 M: *mut mpoly_compression_struct,
814 );
815}
816extern "C" {
817 pub fn fmpz_mpoly_compression_undo(
818 A: *mut fmpz_mpoly_struct,
819 Abits: mp_limb_t,
820 Actx: *mut fmpz_mpoly_ctx_struct,
821 L: *mut fmpz_mpoly_struct,
822 Lctx: *mut fmpz_mpoly_ctx_struct,
823 M: *mut mpoly_compression_struct,
824 );
825}