1#![allow(non_camel_case_types)]
2#![allow(non_upper_case_globals)]
3#![allow(non_snake_case)]
4
5use crate::deps::*;
8use crate::flint::*;
9use crate::fmpz::{fmpz, fmpz_t};
10use crate::fmpz_mat::fmpz_mat_struct;
11use libc::{c_char, c_int, c_uchar, c_uint, c_void};
12
13pub type ordering_t = c_uint;
14pub const ordering_t_ORD_LEX: ordering_t = 0;
15pub const ordering_t_ORD_DEGLEX: ordering_t = 1;
16pub const ordering_t_ORD_DEGREVLEX: ordering_t = 2;
17
18extern "C" {
19 pub fn mpoly_divide_threads(n: mp_limb_signed_t, la: f64, lb: f64) -> mp_limb_signed_t;
20}
21#[repr(C)]
22#[derive(Debug, Copy, Clone)]
23pub struct mpoly_ctx_struct {
24 pub nvars: mp_limb_signed_t,
25 pub nfields: mp_limb_signed_t,
26 pub ord: ordering_t,
27 pub deg: c_int,
28 pub rev: c_int,
29 pub lut_words_per_exp: [mp_limb_signed_t; 64usize],
30 pub lut_fix_bits: [c_uchar; 64usize],
31}
32pub type mpoly_ctx_t = [mpoly_ctx_struct; 1usize];
33extern "C" {
34 pub fn mpoly_ctx_init(ctx: *mut mpoly_ctx_struct, nvars: mp_limb_signed_t, ord: ordering_t);
35}
36extern "C" {
37 pub fn mpoly_ctx_init_rand(
38 mctx: *mut mpoly_ctx_struct,
39 state: *mut flint_rand_s,
40 max_nvars: mp_limb_signed_t,
41 );
42}
43extern "C" {
44 pub fn mpoly_monomial_randbits_fmpz(
45 exp: *mut fmpz,
46 state: *mut flint_rand_s,
47 exp_bits: mp_limb_t,
48 mctx: *mut mpoly_ctx_struct,
49 );
50}
51extern "C" {
52 pub fn mpoly_ctx_clear(mctx: *mut mpoly_ctx_struct);
53}
54extern "C" {
55 pub fn mpoly_words_per_exp_sp(bits: mp_limb_t, mctx: *mut mpoly_ctx_struct)
56 -> mp_limb_signed_t;
57}
58extern "C" {
59 pub fn mpoly_words_per_exp_mp(bits: mp_limb_t, mctx: *mut mpoly_ctx_struct)
60 -> mp_limb_signed_t;
61}
62extern "C" {
63 pub fn mpoly_words_per_exp(bits: mp_limb_t, mctx: *mut mpoly_ctx_struct) -> mp_limb_signed_t;
64}
65extern "C" {
66 pub fn mpoly_fix_bits(bits: mp_limb_t, mctx: *mut mpoly_ctx_struct) -> mp_limb_t;
67}
68#[repr(C)]
69#[derive(Debug, Copy, Clone)]
70pub struct mpoly_heap_t {
71 pub i: mp_limb_t,
72 pub j: mp_limb_t,
73 pub next: *mut mpoly_heap_t,
74}
75#[repr(C)]
76#[derive(Debug, Copy, Clone)]
77pub struct mpoly_nheap_t {
78 pub i: mp_limb_t,
79 pub j: mp_limb_t,
80 pub next: *mut mpoly_nheap_t,
81 pub p: mp_limb_signed_t,
82}
83#[repr(C)]
84#[derive(Debug, Copy, Clone)]
85pub struct mpoly_heap1_s {
86 pub exp: mp_limb_t,
87 pub next: *mut c_void,
88}
89#[repr(C)]
90#[derive(Debug, Copy, Clone)]
91pub struct mpoly_heap_s {
92 pub exp: *mut mp_limb_t,
93 pub next: *mut c_void,
94}
95#[repr(C)]
96#[derive(Debug, Copy, Clone)]
97pub struct mpoly_rbnode_ui_struct {
98 pub key: mp_limb_t,
99 pub up: mp_limb_signed_t,
100 pub left: mp_limb_signed_t,
101 pub right: mp_limb_signed_t,
102 pub color: c_int,
103}
104#[repr(C)]
105#[derive(Debug, Copy, Clone)]
106pub struct mpoly_rbtree_ui_struct {
107 pub length: mp_limb_signed_t,
108 pub nodes: *mut mpoly_rbnode_ui_struct,
109 pub node_alloc: mp_limb_signed_t,
110 pub data: *mut c_char,
111 pub data_alloc: mp_limb_signed_t,
112 pub data_size: mp_limb_signed_t,
113}
114pub type mpoly_rbtree_ui_t = [mpoly_rbtree_ui_struct; 1usize];
115extern "C" {
116 pub fn mpoly_rbtree_ui_init(T: *mut mpoly_rbtree_ui_struct, data_size: mp_limb_signed_t);
117}
118extern "C" {
119 pub fn mpoly_rbtree_ui_clear(T: *mut mpoly_rbtree_ui_struct);
120}
121extern "C" {
122 pub fn mpoly_rbtree_ui_lookup(
123 T: *mut mpoly_rbtree_ui_struct,
124 its_new: *mut c_int,
125 key: mp_limb_t,
126 ) -> *mut c_void;
127}
128extern "C" {
129 pub fn mpoly_rbtree_ui_head(T: *mut mpoly_rbtree_ui_struct) -> mp_limb_signed_t;
130}
131#[repr(C)]
132#[derive(Debug, Copy, Clone)]
133pub struct mpoly_rbnode_fmpz_struct {
134 pub key: fmpz_t,
135 pub up: mp_limb_signed_t,
136 pub left: mp_limb_signed_t,
137 pub right: mp_limb_signed_t,
138 pub color: c_int,
139}
140#[repr(C)]
141#[derive(Debug, Copy, Clone)]
142pub struct mpoly_rbtree_fmpz_struct {
143 pub length: mp_limb_signed_t,
144 pub nodes: *mut mpoly_rbnode_fmpz_struct,
145 pub node_alloc: mp_limb_signed_t,
146 pub data: *mut c_char,
147 pub data_alloc: mp_limb_signed_t,
148 pub data_size: mp_limb_signed_t,
149}
150pub type mpoly_rbtree_fmpz_t = [mpoly_rbtree_fmpz_struct; 1usize];
151extern "C" {
152 pub fn mpoly_rbtree_fmpz_init(T: *mut mpoly_rbtree_fmpz_struct, data_size: mp_limb_signed_t);
153}
154extern "C" {
155 pub fn mpoly_rbtree_fmpz_clear(T: *mut mpoly_rbtree_fmpz_struct);
156}
157extern "C" {
158 pub fn mpoly_rbtree_fmpz_lookup(
159 T: *mut mpoly_rbtree_fmpz_struct,
160 its_new: *mut c_int,
161 key: *mut fmpz,
162 ) -> *mut c_void;
163}
164extern "C" {
165 pub fn mpoly_rbtree_fmpz_head(T: *mut mpoly_rbtree_fmpz_struct) -> mp_limb_signed_t;
166}
167extern "C" {
168 pub fn mpoly_ordering_randtest(state: *mut flint_rand_s) -> ordering_t;
169}
170extern "C" {
171 pub fn mpoly_ordering_isdeg(mctx: *mut mpoly_ctx_struct) -> c_int;
172}
173extern "C" {
174 pub fn mpoly_ordering_isrev(mctx: *mut mpoly_ctx_struct) -> c_int;
175}
176extern "C" {
177 pub fn mpoly_ordering_print(ord: ordering_t);
178}
179extern "C" {
180 pub fn mpoly_monomial_zero(exp_ptr: *mut mp_limb_t, N: mp_limb_signed_t);
181}
182extern "C" {
183 pub fn mpoly_monomial_add(
184 exp_ptr: *mut mp_limb_t,
185 exp2: *const mp_limb_t,
186 exp3: *const mp_limb_t,
187 N: mp_limb_signed_t,
188 );
189}
190extern "C" {
191 pub fn mpoly_monomial_add_mp(
192 exp_ptr: *mut mp_limb_t,
193 exp2: *const mp_limb_t,
194 exp3: *const mp_limb_t,
195 N: mp_limb_signed_t,
196 );
197}
198extern "C" {
199 pub fn mpoly_monomial_sub(
200 exp_ptr: *mut mp_limb_t,
201 exp2: *const mp_limb_t,
202 exp3: *const mp_limb_t,
203 N: mp_limb_signed_t,
204 );
205}
206extern "C" {
207 pub fn mpoly_monomial_sub_mp(
208 exp_ptr: *mut mp_limb_t,
209 exp2: *const mp_limb_t,
210 exp3: *const mp_limb_t,
211 N: mp_limb_signed_t,
212 );
213}
214extern "C" {
215 pub fn mpoly_monomial_madd(
216 exp1: *mut mp_limb_t,
217 exp2: *const mp_limb_t,
218 scalar: mp_limb_t,
219 exp3: *const mp_limb_t,
220 N: mp_limb_signed_t,
221 );
222}
223extern "C" {
224 pub fn mpoly_monomial_madd_mp(
225 exp1: *mut mp_limb_t,
226 exp2: *const mp_limb_t,
227 scalar: mp_limb_t,
228 exp3: *const mp_limb_t,
229 N: mp_limb_signed_t,
230 );
231}
232extern "C" {
233 pub fn mpoly_monomial_madd_inplace_mp(
234 exp12: *mut mp_limb_t,
235 scalar: mp_limb_t,
236 exp3: *const mp_limb_t,
237 N: mp_limb_signed_t,
238 );
239}
240extern "C" {
241 pub fn mpoly_monomial_msub(
242 exp1: *mut mp_limb_t,
243 exp2: *const mp_limb_t,
244 scalar: mp_limb_t,
245 exp3: *const mp_limb_t,
246 N: mp_limb_signed_t,
247 );
248}
249extern "C" {
250 pub fn mpoly_monomial_msub_mp(
251 exp1: *mut mp_limb_t,
252 exp2: *const mp_limb_t,
253 scalar: mp_limb_t,
254 exp3: *const mp_limb_t,
255 N: mp_limb_signed_t,
256 );
257}
258extern "C" {
259 pub fn mpoly_monomial_msub_ui_array(
260 exp1: *mut mp_limb_t,
261 exp2: *const mp_limb_t,
262 scalar: *const mp_limb_t,
263 scalar_limbs: mp_limb_signed_t,
264 exp3: *const mp_limb_t,
265 N: mp_limb_signed_t,
266 );
267}
268extern "C" {
269 pub fn mpoly_monomial_madd_ui_array(
270 exp1: *mut mp_limb_t,
271 exp2: *const mp_limb_t,
272 scalar: *const mp_limb_t,
273 scalar_limbs: mp_limb_signed_t,
274 exp3: *const mp_limb_t,
275 N: mp_limb_signed_t,
276 );
277}
278extern "C" {
279 pub fn mpoly_monomial_madd_fmpz(
280 exp1: *mut mp_limb_t,
281 exp2: *const mp_limb_t,
282 scalar: *mut fmpz,
283 exp3: *const mp_limb_t,
284 N: mp_limb_signed_t,
285 );
286}
287extern "C" {
288 pub fn mpoly_overflow_mask_sp(bits: mp_limb_t) -> mp_limb_t;
289}
290extern "C" {
291 pub fn mpoly_monomial_max1(
292 exp2: mp_limb_t,
293 exp3: mp_limb_t,
294 bits: mp_limb_t,
295 mask: mp_limb_t,
296 ) -> mp_limb_t;
297}
298extern "C" {
299 pub fn mpoly_monomial_max(
300 exp1: *mut mp_limb_t,
301 exp2: *const mp_limb_t,
302 exp3: *const mp_limb_t,
303 bits: mp_limb_t,
304 N: mp_limb_signed_t,
305 mask: mp_limb_t,
306 );
307}
308extern "C" {
309 pub fn mpoly_monomial_min1(
310 exp2: mp_limb_t,
311 exp3: mp_limb_t,
312 bits: mp_limb_t,
313 mask: mp_limb_t,
314 ) -> mp_limb_t;
315}
316extern "C" {
317 pub fn mpoly_monomial_min(
318 exp1: *mut mp_limb_t,
319 exp2: *const mp_limb_t,
320 exp3: *const mp_limb_t,
321 bits: mp_limb_t,
322 N: mp_limb_signed_t,
323 mask: mp_limb_t,
324 );
325}
326extern "C" {
327 pub fn mpoly_monomial_max_mp(
328 exp1: *mut mp_limb_t,
329 exp2: *const mp_limb_t,
330 exp3: *const mp_limb_t,
331 bits: mp_limb_t,
332 N: mp_limb_signed_t,
333 );
334}
335extern "C" {
336 pub fn mpoly_monomial_min_mp(
337 exp1: *mut mp_limb_t,
338 exp2: *const mp_limb_t,
339 exp3: *const mp_limb_t,
340 bits: mp_limb_t,
341 N: mp_limb_signed_t,
342 );
343}
344extern "C" {
345 pub fn mpoly_monomial_overflows(
346 exp2: *mut mp_limb_t,
347 N: mp_limb_signed_t,
348 mask: mp_limb_t,
349 ) -> c_int;
350}
351extern "C" {
352 pub fn mpoly_monomial_overflows_mp(
353 exp_ptr: *mut mp_limb_t,
354 N: mp_limb_signed_t,
355 bits: mp_limb_t,
356 ) -> c_int;
357}
358extern "C" {
359 pub fn mpoly_monomial_overflows1(exp: mp_limb_t, mask: mp_limb_t) -> c_int;
360}
361extern "C" {
362 pub fn mpoly_monomial_divides(
363 exp_ptr: *mut mp_limb_t,
364 exp2: *const mp_limb_t,
365 exp3: *const mp_limb_t,
366 N: mp_limb_signed_t,
367 mask: mp_limb_t,
368 ) -> c_int;
369}
370extern "C" {
371 pub fn mpoly_monomial_halves(
372 exp_ptr: *mut mp_limb_t,
373 exp2: *const mp_limb_t,
374 N: mp_limb_signed_t,
375 mask: mp_limb_t,
376 ) -> c_int;
377}
378extern "C" {
379 pub fn mpoly_monomial_divides_mp(
380 exp_ptr: *mut mp_limb_t,
381 exp2: *const mp_limb_t,
382 exp3: *const mp_limb_t,
383 N: mp_limb_signed_t,
384 bits: mp_limb_t,
385 ) -> c_int;
386}
387extern "C" {
388 pub fn mpoly_monomial_halves_mp(
389 exp_ptr: *mut mp_limb_t,
390 exp2: *const mp_limb_t,
391 N: mp_limb_signed_t,
392 bits: mp_limb_t,
393 ) -> c_int;
394}
395extern "C" {
396 pub fn mpoly_monomial_divides_test(
397 exp2: *const mp_limb_t,
398 exp3: *const mp_limb_t,
399 N: mp_limb_signed_t,
400 mask: mp_limb_t,
401 ) -> c_int;
402}
403extern "C" {
404 pub fn mpoly_monomial_divides_mp_test(
405 exp2: *const mp_limb_t,
406 exp3: *const mp_limb_t,
407 N: mp_limb_signed_t,
408 bits: mp_limb_t,
409 ) -> c_int;
410}
411extern "C" {
412 pub fn mpoly_monomial_divides1(
413 exp_ptr: *mut mp_limb_t,
414 exp2: mp_limb_t,
415 exp3: mp_limb_t,
416 mask: mp_limb_t,
417 ) -> c_int;
418}
419extern "C" {
420 pub fn mpoly_monomial_halves1(
421 exp_ptr: *mut mp_limb_t,
422 exp2: mp_limb_t,
423 mask: mp_limb_t,
424 ) -> c_int;
425}
426extern "C" {
427 pub fn mpoly_monomial_set(exp2: *mut mp_limb_t, exp3: *const mp_limb_t, N: mp_limb_signed_t);
428}
429extern "C" {
430 pub fn mpoly_monomial_set_extra(
431 exp2: *mut mp_limb_t,
432 exp3: *const mp_limb_t,
433 N: mp_limb_signed_t,
434 offset: mp_limb_signed_t,
435 extra: mp_limb_t,
436 );
437}
438extern "C" {
439 pub fn mpoly_copy_monomials(
440 exp1: *mut mp_limb_t,
441 exp2: *const mp_limb_t,
442 len: mp_limb_signed_t,
443 N: mp_limb_signed_t,
444 );
445}
446extern "C" {
447 pub fn mpoly_monomial_swap(exp2: *mut mp_limb_t, exp3: *mut mp_limb_t, N: mp_limb_signed_t);
448}
449extern "C" {
450 pub fn mpoly_monomial_mul_ui(
451 exp2: *mut mp_limb_t,
452 exp3: *const mp_limb_t,
453 N: mp_limb_signed_t,
454 c: mp_limb_t,
455 );
456}
457extern "C" {
458 pub fn mpoly_monomial_mul_ui_mp(
459 exp2: *mut mp_limb_t,
460 exp3: *const mp_limb_t,
461 N: mp_limb_signed_t,
462 c: mp_limb_t,
463 );
464}
465extern "C" {
466 pub fn mpoly_monomial_mul_fmpz(
467 exp2: *mut mp_limb_t,
468 exp3: *const mp_limb_t,
469 N: mp_limb_signed_t,
470 c: *mut fmpz,
471 );
472}
473extern "C" {
474 pub fn mpoly_monomial_is_zero(exp: *const mp_limb_t, N: mp_limb_signed_t) -> c_int;
475}
476extern "C" {
477 pub fn mpoly_monomial_equal(
478 exp2: *const mp_limb_t,
479 exp3: *const mp_limb_t,
480 N: mp_limb_signed_t,
481 ) -> c_int;
482}
483extern "C" {
484 pub fn mpoly_monomial_equal_extra(
485 exp2: *const mp_limb_t,
486 exp3: *const mp_limb_t,
487 N: mp_limb_signed_t,
488 offset: mp_limb_signed_t,
489 extra: mp_limb_t,
490 ) -> c_int;
491}
492extern "C" {
493 pub fn mpoly_monomial_cmp1(a: mp_limb_t, b: mp_limb_t, cmpmask: mp_limb_t) -> c_int;
494}
495extern "C" {
496 pub fn mpoly_monomial_gt1(a: mp_limb_t, b: mp_limb_t, cmpmask: mp_limb_t) -> c_int;
497}
498extern "C" {
499 pub fn mpoly_monomial_ge1(a: mp_limb_t, b: mp_limb_t, cmpmask: mp_limb_t) -> c_int;
500}
501extern "C" {
502 pub fn mpoly_monomial_lt(
503 exp3: *const mp_limb_t,
504 exp2: *const mp_limb_t,
505 N: mp_limb_signed_t,
506 cmpmask: *const mp_limb_t,
507 ) -> c_int;
508}
509extern "C" {
510 pub fn mpoly_monomial_gt(
511 exp3: *const mp_limb_t,
512 exp2: *const mp_limb_t,
513 N: mp_limb_signed_t,
514 cmpmask: *const mp_limb_t,
515 ) -> c_int;
516}
517extern "C" {
518 pub fn mpoly_monomial_lt_nomask(
519 exp2: *const mp_limb_t,
520 exp3: *const mp_limb_t,
521 N: mp_limb_signed_t,
522 ) -> c_int;
523}
524extern "C" {
525 pub fn mpoly_monomial_gt_nomask(
526 exp2: *const mp_limb_t,
527 exp3: *const mp_limb_t,
528 N: mp_limb_signed_t,
529 ) -> c_int;
530}
531extern "C" {
532 pub fn mpoly_monomial_lt_nomask_extra(
533 exp2: *const mp_limb_t,
534 exp3: *const mp_limb_t,
535 N: mp_limb_signed_t,
536 offset: mp_limb_signed_t,
537 extra: mp_limb_t,
538 ) -> c_int;
539}
540extern "C" {
541 pub fn mpoly_monomial_gt_nomask_extra(
542 exp2: *const mp_limb_t,
543 exp3: *const mp_limb_t,
544 N: mp_limb_signed_t,
545 offset: mp_limb_signed_t,
546 extra: mp_limb_t,
547 ) -> c_int;
548}
549extern "C" {
550 pub fn mpoly_monomial_cmp(
551 exp2: *const mp_limb_t,
552 exp3: *const mp_limb_t,
553 N: mp_limb_signed_t,
554 cmpmask: *const mp_limb_t,
555 ) -> c_int;
556}
557extern "C" {
558 pub fn mpoly_monomial_cmp_nomask(
559 exp2: *const mp_limb_t,
560 exp3: *const mp_limb_t,
561 N: mp_limb_signed_t,
562 ) -> c_int;
563}
564extern "C" {
565 pub fn mpoly_monomial_cmp_nomask_extra(
566 exp2: *const mp_limb_t,
567 exp3: *const mp_limb_t,
568 N: mp_limb_signed_t,
569 offset: mp_limb_signed_t,
570 extra: mp_limb_t,
571 ) -> c_int;
572}
573extern "C" {
574 pub fn mpoly_monomial_divides_tight(
575 e1: mp_limb_signed_t,
576 e2: mp_limb_signed_t,
577 prods: *mut mp_limb_signed_t,
578 num: mp_limb_signed_t,
579 ) -> c_int;
580}
581extern "C" {
582 pub fn mpoly_max_degrees_tight(
583 max_exp: *mut mp_limb_signed_t,
584 exps: *mut mp_limb_t,
585 len: mp_limb_signed_t,
586 prods: *mut mp_limb_signed_t,
587 num: mp_limb_signed_t,
588 );
589}
590extern "C" {
591 pub fn mpoly_geobucket_clog4(x: mp_limb_signed_t) -> mp_limb_signed_t;
592}
593extern "C" {
594 pub fn pack_exp2(e0: mp_limb_t, e1: mp_limb_t) -> mp_limb_t;
595}
596extern "C" {
597 pub fn pack_exp3(e0: mp_limb_t, e1: mp_limb_t, e2: mp_limb_t) -> mp_limb_t;
598}
599extern "C" {
600 pub fn extract_exp(e: mp_limb_t, idx: c_int, nvars: c_int) -> mp_limb_t;
601}
602extern "C" {
603 pub fn _mpoly_bidegree(
604 Aexps: *const mp_limb_t,
605 Abits: mp_limb_t,
606 mctx: *mut mpoly_ctx_struct,
607 ) -> mp_limb_t;
608}
609extern "C" {
610 pub fn mpoly_gen_fields_ui(
611 exp: *mut mp_limb_t,
612 var: mp_limb_signed_t,
613 mctx: *mut mpoly_ctx_struct,
614 );
615}
616extern "C" {
617 pub fn mpoly_gen_fields_fmpz(
618 exp: *mut fmpz,
619 var: mp_limb_signed_t,
620 mctx: *mut mpoly_ctx_struct,
621 );
622}
623extern "C" {
624 pub fn mpoly_gen_bits_required(var: mp_limb_signed_t, mctx: *mut mpoly_ctx_struct)
625 -> mp_limb_t;
626}
627extern "C" {
628 pub fn mpoly_gen_index(v: mp_limb_signed_t, mctx: *mut mpoly_ctx_struct) -> mp_limb_signed_t;
629}
630extern "C" {
631 pub fn mpoly_gen_offset_shift_sp(
632 offset: *mut mp_limb_signed_t,
633 shift: *mut mp_limb_signed_t,
634 var: mp_limb_signed_t,
635 bits: mp_limb_t,
636 mctx: *mut mpoly_ctx_struct,
637 );
638}
639extern "C" {
640 pub fn mpoly_gen_monomial_offset_shift_sp(
641 mexp: *mut mp_limb_t,
642 offset: *mut mp_limb_signed_t,
643 shift: *mut mp_limb_signed_t,
644 var: mp_limb_signed_t,
645 bits: mp_limb_t,
646 mctx: *mut mpoly_ctx_struct,
647 );
648}
649extern "C" {
650 pub fn mpoly_gen_monomial_sp(
651 oneexp: *mut mp_limb_t,
652 var: mp_limb_signed_t,
653 bits: mp_limb_t,
654 mctx: *mut mpoly_ctx_struct,
655 );
656}
657extern "C" {
658 pub fn mpoly_gen_offset_mp(
659 var: mp_limb_signed_t,
660 bits: mp_limb_t,
661 mctx: *mut mpoly_ctx_struct,
662 ) -> mp_limb_signed_t;
663}
664extern "C" {
665 pub fn mpoly_gen_monomial_offset_mp(
666 mexp: *mut mp_limb_t,
667 var: mp_limb_signed_t,
668 bits: mp_limb_t,
669 mctx: *mut mpoly_ctx_struct,
670 ) -> mp_limb_signed_t;
671}
672extern "C" {
673 pub fn fmpz_mat_mul_vec(v: *mut fmpz, M: *mut fmpz_mat_struct, u: *mut fmpz);
674}
675extern "C" {
676 pub fn mpoly_compose_mat_gen(
677 M: *mut fmpz_mat_struct,
678 c: *const mp_limb_signed_t,
679 mctxB: *mut mpoly_ctx_struct,
680 mctxAC: *mut mpoly_ctx_struct,
681 );
682}
683extern "C" {
684 pub fn mpoly_compose_mat_fill_column(
685 M: *mut fmpz_mat_struct,
686 Cexp: *const mp_limb_t,
687 Cbits: mp_limb_t,
688 Bvar: mp_limb_signed_t,
689 mctxB: *mut mpoly_ctx_struct,
690 mctxAC: *mut mpoly_ctx_struct,
691 );
692}
693extern "C" {
694 pub fn mpoly_get_cmpmask(
695 cmpmask: *mut mp_limb_t,
696 N: mp_limb_signed_t,
697 bits: mp_limb_t,
698 mctx: *mut mpoly_ctx_struct,
699 );
700}
701extern "C" {
702 pub fn mpoly_get_ovfmask(
703 ovfmask: *mut mp_limb_t,
704 N: mp_limb_signed_t,
705 bits: mp_limb_t,
706 mctx: *mut mpoly_ctx_struct,
707 );
708}
709extern "C" {
710 pub fn mpoly_monomials_cmp(
711 Aexps: *const mp_limb_t,
712 Abits: mp_limb_t,
713 Bexps: *const mp_limb_t,
714 Bbits: mp_limb_t,
715 length: mp_limb_signed_t,
716 mctx: *mut mpoly_ctx_struct,
717 ) -> c_int;
718}
719extern "C" {
720 pub fn mpoly_exp_bits_required_ui(
721 user_exp: *const mp_limb_t,
722 mctx: *mut mpoly_ctx_struct,
723 ) -> mp_limb_t;
724}
725extern "C" {
726 pub fn mpoly_exp_bits_required_ffmpz(
727 user_exp: *const fmpz,
728 mctx: *mut mpoly_ctx_struct,
729 ) -> mp_limb_t;
730}
731extern "C" {
732 pub fn mpoly_exp_bits_required_pfmpz(
733 user_exp: *const *mut fmpz,
734 mctx: *mut mpoly_ctx_struct,
735 ) -> mp_limb_t;
736}
737extern "C" {
738 pub fn mpoly_gen_pow_exp_bits_required(
739 v: mp_limb_signed_t,
740 e: mp_limb_t,
741 mctx: *mut mpoly_ctx_struct,
742 ) -> mp_limb_t;
743}
744extern "C" {
745 pub fn mpoly_is_poly(
746 Aexps: *const mp_limb_t,
747 Alen: mp_limb_signed_t,
748 Abits: mp_limb_t,
749 var: mp_limb_signed_t,
750 mctx: *mut mpoly_ctx_struct,
751 ) -> c_int;
752}
753extern "C" {
754 pub fn mpoly_pack_vec_ui(
755 exp1: *mut mp_limb_t,
756 exp2: *const mp_limb_t,
757 bits: mp_limb_t,
758 nfields: mp_limb_signed_t,
759 len: mp_limb_signed_t,
760 );
761}
762extern "C" {
763 pub fn mpoly_pack_vec_fmpz(
764 exp1: *mut mp_limb_t,
765 exp2: *const fmpz,
766 bits: mp_limb_t,
767 nfields: mp_limb_signed_t,
768 len: mp_limb_signed_t,
769 );
770}
771extern "C" {
772 pub fn mpoly_unpack_vec_ui(
773 exp1: *mut mp_limb_t,
774 exp2: *const mp_limb_t,
775 bits: mp_limb_t,
776 nfields: mp_limb_signed_t,
777 len: mp_limb_signed_t,
778 );
779}
780extern "C" {
781 pub fn mpoly_unpack_vec_fmpz(
782 exp1: *mut fmpz,
783 exp2: *const mp_limb_t,
784 bits: mp_limb_t,
785 nfields: mp_limb_signed_t,
786 len: mp_limb_signed_t,
787 );
788}
789extern "C" {
790 pub fn mpoly_get_monomial_ui_unpacked_ffmpz(
791 user_exps: *mut mp_limb_t,
792 poly_exps: *const fmpz,
793 mctx: *mut mpoly_ctx_struct,
794 );
795}
796extern "C" {
797 pub fn mpoly_get_monomial_ffmpz_unpacked_ffmpz(
798 user_exps: *mut fmpz,
799 poly_exps: *const fmpz,
800 mctx: *mut mpoly_ctx_struct,
801 );
802}
803extern "C" {
804 pub fn mpoly_get_monomial_pfmpz_unpacked_ffmpz(
805 user_exps: *mut *mut fmpz,
806 poly_exps: *const fmpz,
807 mctx: *mut mpoly_ctx_struct,
808 );
809}
810extern "C" {
811 pub fn mpoly_get_monomial_ui_unpacked_ui(
812 user_exps: *mut mp_limb_t,
813 poly_exps: *const mp_limb_t,
814 mctx: *mut mpoly_ctx_struct,
815 );
816}
817extern "C" {
818 pub fn mpoly_get_monomial_ui_sp(
819 user_exps: *mut mp_limb_t,
820 poly_exps: *const mp_limb_t,
821 bits: mp_limb_t,
822 mctx: *mut mpoly_ctx_struct,
823 );
824}
825extern "C" {
826 pub fn mpoly_get_monomial_ui_mp(
827 user_exps: *mut mp_limb_t,
828 poly_exps: *const mp_limb_t,
829 bits: mp_limb_t,
830 mctx: *mut mpoly_ctx_struct,
831 );
832}
833extern "C" {
834 pub fn mpoly_get_monomial_si_mp(
835 user_exps: *mut mp_limb_signed_t,
836 poly_exps: *const mp_limb_t,
837 bits: mp_limb_t,
838 mctx: *mut mpoly_ctx_struct,
839 );
840}
841extern "C" {
842 pub fn mpoly_get_monomial_ui(
843 user_exps: *mut mp_limb_t,
844 poly_exps: *const mp_limb_t,
845 bits: mp_limb_t,
846 mctx: *mut mpoly_ctx_struct,
847 );
848}
849extern "C" {
850 pub fn mpoly_get_monomial_si(
851 user_exps: *mut mp_limb_signed_t,
852 poly_exps: *const mp_limb_t,
853 bits: mp_limb_t,
854 mctx: *mut mpoly_ctx_struct,
855 );
856}
857extern "C" {
858 pub fn mpoly_get_monomial_var_exp_ui_sp(
859 poly_exps: *const mp_limb_t,
860 var: mp_limb_signed_t,
861 bits: mp_limb_t,
862 mctx: *mut mpoly_ctx_struct,
863 ) -> mp_limb_t;
864}
865extern "C" {
866 pub fn mpoly_get_monomial_var_exp_ui_mp(
867 poly_exps: *const mp_limb_t,
868 var: mp_limb_signed_t,
869 bits: mp_limb_t,
870 mctx: *mut mpoly_ctx_struct,
871 ) -> mp_limb_t;
872}
873extern "C" {
874 pub fn mpoly_get_monomial_var_exp_si_mp(
875 poly_exps: *const mp_limb_t,
876 var: mp_limb_signed_t,
877 bits: mp_limb_t,
878 mctx: *mut mpoly_ctx_struct,
879 ) -> mp_limb_signed_t;
880}
881extern "C" {
882 pub fn mpoly_get_monomial_var_exp_ui(
883 poly_exps: *const mp_limb_t,
884 var: mp_limb_signed_t,
885 bits: mp_limb_t,
886 mctx: *mut mpoly_ctx_struct,
887 ) -> mp_limb_t;
888}
889extern "C" {
890 pub fn mpoly_get_monomial_var_exp_si(
891 poly_exps: *const mp_limb_t,
892 var: mp_limb_signed_t,
893 bits: mp_limb_t,
894 mctx: *mut mpoly_ctx_struct,
895 ) -> mp_limb_signed_t;
896}
897extern "C" {
898 pub fn mpoly_get_monomial_ffmpz(
899 exps: *mut fmpz,
900 poly_exps: *const mp_limb_t,
901 bits: mp_limb_t,
902 mctx: *mut mpoly_ctx_struct,
903 );
904}
905extern "C" {
906 pub fn mpoly_get_monomial_pfmpz(
907 exps: *mut *mut fmpz,
908 poly_exps: *const mp_limb_t,
909 bits: mp_limb_t,
910 mctx: *mut mpoly_ctx_struct,
911 );
912}
913extern "C" {
914 pub fn mpoly_set_monomial_ui(
915 exp1: *mut mp_limb_t,
916 exp2: *const mp_limb_t,
917 bits: mp_limb_t,
918 mctx: *mut mpoly_ctx_struct,
919 );
920}
921extern "C" {
922 pub fn mpoly_set_monomial_ffmpz(
923 exp1: *mut mp_limb_t,
924 exp2: *const fmpz,
925 bits: mp_limb_t,
926 mctx: *mut mpoly_ctx_struct,
927 );
928}
929extern "C" {
930 pub fn mpoly_set_monomial_pfmpz(
931 exp1: *mut mp_limb_t,
932 exp2: *const *mut fmpz,
933 bits: mp_limb_t,
934 mctx: *mut mpoly_ctx_struct,
935 );
936}
937extern "C" {
938 pub fn mpoly_repack_monomials(
939 exps1: *mut mp_limb_t,
940 bits1: mp_limb_t,
941 exps2: *const mp_limb_t,
942 bits2: mp_limb_t,
943 len: mp_limb_signed_t,
944 mctx: *mut mpoly_ctx_struct,
945 ) -> c_int;
946}
947extern "C" {
948 pub fn mpoly_pack_monomials_tight(
949 exp1: *mut mp_limb_t,
950 exp2: *const mp_limb_t,
951 len: mp_limb_signed_t,
952 mults: *const mp_limb_signed_t,
953 num: mp_limb_signed_t,
954 bits: mp_limb_signed_t,
955 );
956}
957extern "C" {
958 pub fn mpoly_unpack_monomials_tight(
959 e1: *mut mp_limb_t,
960 e2: *mut mp_limb_t,
961 len: mp_limb_signed_t,
962 mults: *mut mp_limb_signed_t,
963 num: mp_limb_signed_t,
964 bits: mp_limb_signed_t,
965 );
966}
967extern "C" {
968 pub fn mpoly_monomial_exists(
969 index: *mut mp_limb_signed_t,
970 poly_exps: *const mp_limb_t,
971 exp: *const mp_limb_t,
972 len: mp_limb_signed_t,
973 N: mp_limb_signed_t,
974 cmpmask: *const mp_limb_t,
975 ) -> c_int;
976}
977extern "C" {
978 pub fn mpoly_monomial_index1_nomask(
979 Aexps: *mut mp_limb_t,
980 Alen: mp_limb_signed_t,
981 e: mp_limb_t,
982 ) -> mp_limb_signed_t;
983}
984extern "C" {
985 pub fn mpoly_monomial_index_ui(
986 Aexp: *const mp_limb_t,
987 Abits: mp_limb_t,
988 Alength: mp_limb_signed_t,
989 exp: *const mp_limb_t,
990 mctx: *mut mpoly_ctx_struct,
991 ) -> mp_limb_signed_t;
992}
993extern "C" {
994 pub fn mpoly_monomial_index_pfmpz(
995 Aexp: *const mp_limb_t,
996 Abits: mp_limb_t,
997 Alength: mp_limb_signed_t,
998 exp: *const *mut fmpz,
999 mctx: *mut mpoly_ctx_struct,
1000 ) -> mp_limb_signed_t;
1001}
1002extern "C" {
1003 pub fn mpoly_monomial_index_monomial(
1004 Aexp: *const mp_limb_t,
1005 Abits: mp_limb_t,
1006 Alength: mp_limb_signed_t,
1007 Mexp: *const mp_limb_t,
1008 Mbits: mp_limb_t,
1009 mctx: *mut mpoly_ctx_struct,
1010 ) -> mp_limb_signed_t;
1011}
1012extern "C" {
1013 pub fn mpoly_min_fields_ui_sp(
1014 min_fields: *mut mp_limb_t,
1015 poly_exps: *const mp_limb_t,
1016 len: mp_limb_signed_t,
1017 bits: mp_limb_t,
1018 mctx: *mut mpoly_ctx_struct,
1019 );
1020}
1021extern "C" {
1022 pub fn mpoly_min_fields_fmpz(
1023 min_fields: *mut fmpz,
1024 poly_exps: *const mp_limb_t,
1025 len: mp_limb_signed_t,
1026 bits: mp_limb_t,
1027 mctx: *mut mpoly_ctx_struct,
1028 );
1029}
1030extern "C" {
1031 pub fn mpoly_max_fields_ui_sp(
1032 max_fields: *mut mp_limb_t,
1033 poly_exps: *const mp_limb_t,
1034 len: mp_limb_signed_t,
1035 bits: mp_limb_t,
1036 mctx: *mut mpoly_ctx_struct,
1037 );
1038}
1039extern "C" {
1040 pub fn mpoly_max_fields_fmpz(
1041 max_fields: *mut fmpz,
1042 poly_exps: *const mp_limb_t,
1043 len: mp_limb_signed_t,
1044 bits: mp_limb_t,
1045 mctx: *mut mpoly_ctx_struct,
1046 );
1047}
1048extern "C" {
1049 pub fn mpoly_degrees_fit_si(
1050 poly_exps: *const mp_limb_t,
1051 len: mp_limb_signed_t,
1052 bits: mp_limb_t,
1053 mctx: *mut mpoly_ctx_struct,
1054 ) -> c_int;
1055}
1056extern "C" {
1057 pub fn mpoly_degrees_si(
1058 user_degs: *mut mp_limb_signed_t,
1059 poly_exps: *const mp_limb_t,
1060 len: mp_limb_signed_t,
1061 bits: mp_limb_t,
1062 mctx: *mut mpoly_ctx_struct,
1063 );
1064}
1065extern "C" {
1066 pub fn mpoly_degrees_si_threaded(
1067 user_degs: *mut mp_limb_signed_t,
1068 poly_exps: *const mp_limb_t,
1069 len: mp_limb_signed_t,
1070 bits: mp_limb_t,
1071 mctx: *mut mpoly_ctx_struct,
1072 handles: *const thread_pool_handle,
1073 num_handles: mp_limb_signed_t,
1074 );
1075}
1076extern "C" {
1077 pub fn mpoly_degrees_ffmpz(
1078 user_degs: *mut fmpz,
1079 poly_exps: *const mp_limb_t,
1080 len: mp_limb_signed_t,
1081 bits: mp_limb_t,
1082 mctx: *mut mpoly_ctx_struct,
1083 );
1084}
1085extern "C" {
1086 pub fn mpoly_degrees_pfmpz(
1087 user_degs: *mut *mut fmpz,
1088 poly_exps: *const mp_limb_t,
1089 len: mp_limb_signed_t,
1090 bits: mp_limb_t,
1091 mctx: *mut mpoly_ctx_struct,
1092 );
1093}
1094extern "C" {
1095 pub fn mpoly_degree_si(
1096 poly_exps: *const mp_limb_t,
1097 len: mp_limb_signed_t,
1098 bits: mp_limb_t,
1099 var: mp_limb_signed_t,
1100 mctx: *mut mpoly_ctx_struct,
1101 ) -> mp_limb_signed_t;
1102}
1103extern "C" {
1104 pub fn mpoly_degree_fmpz(
1105 deg: *mut fmpz,
1106 poly_exps: *const mp_limb_t,
1107 len: mp_limb_signed_t,
1108 bits: mp_limb_t,
1109 var: mp_limb_signed_t,
1110 mctx: *mut mpoly_ctx_struct,
1111 );
1112}
1113extern "C" {
1114 pub fn mpoly_total_degree_fits_si(
1115 exps: *const mp_limb_t,
1116 len: mp_limb_signed_t,
1117 bits: mp_limb_t,
1118 mctx: *mut mpoly_ctx_struct,
1119 ) -> c_int;
1120}
1121extern "C" {
1122 pub fn mpoly_total_degree_si(
1123 exps: *const mp_limb_t,
1124 len: mp_limb_signed_t,
1125 bits: mp_limb_t,
1126 mctx: *mut mpoly_ctx_struct,
1127 ) -> mp_limb_signed_t;
1128}
1129extern "C" {
1130 pub fn mpoly_total_degree_fmpz(
1131 totdeg: *mut fmpz,
1132 exps: *const mp_limb_t,
1133 len: mp_limb_signed_t,
1134 bits: mp_limb_t,
1135 mctx: *mut mpoly_ctx_struct,
1136 );
1137}
1138extern "C" {
1139 pub fn mpoly_total_degree_fmpz_ref(
1140 totdeg: *mut fmpz,
1141 exps: *const mp_limb_t,
1142 len: mp_limb_signed_t,
1143 bits: mp_limb_t,
1144 mctx: *mut mpoly_ctx_struct,
1145 );
1146}
1147extern "C" {
1148 pub fn mpoly_used_vars_or(
1149 used: *mut c_int,
1150 exps: *const mp_limb_t,
1151 len: mp_limb_signed_t,
1152 bits: mp_limb_t,
1153 mctx: *mut mpoly_ctx_struct,
1154 );
1155}
1156extern "C" {
1157 pub fn mpoly_monomial_cmp_general(
1158 Aexp: *mut mp_limb_t,
1159 Abits: mp_limb_t,
1160 Bexp: *mut mp_limb_t,
1161 Bbits: mp_limb_t,
1162 mctx: *mut mpoly_ctx_struct,
1163 ) -> c_int;
1164}
1165extern "C" {
1166 pub fn mpoly_search_monomials(
1167 e_ind: *mut *mut mp_limb_signed_t,
1168 e: *mut mp_limb_t,
1169 e_score: *mut mp_limb_signed_t,
1170 t1: *mut mp_limb_signed_t,
1171 t2: *mut mp_limb_signed_t,
1172 t3: *mut mp_limb_signed_t,
1173 lower: mp_limb_signed_t,
1174 upper: mp_limb_signed_t,
1175 a: *const mp_limb_t,
1176 a_len: mp_limb_signed_t,
1177 b: *const mp_limb_t,
1178 b_len: mp_limb_signed_t,
1179 N: mp_limb_signed_t,
1180 cmpmask: *const mp_limb_t,
1181 );
1182}
1183extern "C" {
1184 pub fn mpoly_main_variable_split_LEX(
1185 ind: *mut mp_limb_signed_t,
1186 pexp: *mut mp_limb_t,
1187 Aexp: *const mp_limb_t,
1188 l1: mp_limb_signed_t,
1189 Alen: mp_limb_signed_t,
1190 mults: *const mp_limb_t,
1191 num: mp_limb_signed_t,
1192 Abits: mp_limb_signed_t,
1193 );
1194}
1195extern "C" {
1196 pub fn mpoly_main_variable_split_DEG(
1197 ind: *mut mp_limb_signed_t,
1198 pexp: *mut mp_limb_t,
1199 Aexp: *const mp_limb_t,
1200 l1: mp_limb_signed_t,
1201 Alen: mp_limb_signed_t,
1202 deg: mp_limb_t,
1203 num: mp_limb_signed_t,
1204 Abits: mp_limb_signed_t,
1205 );
1206}
1207extern "C" {
1208 pub fn mpoly_term_exp_fits_si(
1209 exps: *mut mp_limb_t,
1210 bits: mp_limb_t,
1211 n: mp_limb_signed_t,
1212 mctx: *mut mpoly_ctx_struct,
1213 ) -> c_int;
1214}
1215extern "C" {
1216 pub fn mpoly_term_exp_fits_ui(
1217 exps: *mut mp_limb_t,
1218 bits: mp_limb_t,
1219 n: mp_limb_signed_t,
1220 mctx: *mut mpoly_ctx_struct,
1221 ) -> c_int;
1222}
1223extern "C" {
1224 pub fn mpoly_is_gen(
1225 exps: *mut mp_limb_t,
1226 var: mp_limb_signed_t,
1227 bits: mp_limb_t,
1228 mctx: *mut mpoly_ctx_struct,
1229 ) -> c_int;
1230}
1231extern "C" {
1232 pub fn mpoly_monomials_valid_test(
1233 exps: *mut mp_limb_t,
1234 len: mp_limb_signed_t,
1235 bits: mp_limb_t,
1236 mctx: *mut mpoly_ctx_struct,
1237 ) -> c_int;
1238}
1239extern "C" {
1240 pub fn mpoly_monomials_overflow_test(
1241 exps: *mut mp_limb_t,
1242 len: mp_limb_signed_t,
1243 bits: mp_limb_t,
1244 mctx: *mut mpoly_ctx_struct,
1245 ) -> c_int;
1246}
1247extern "C" {
1248 pub fn mpoly_monomials_inorder_test(
1249 exps: *mut mp_limb_t,
1250 len: mp_limb_signed_t,
1251 bits: mp_limb_t,
1252 mctx: *mut mpoly_ctx_struct,
1253 ) -> c_int;
1254}
1255extern "C" {
1256 pub fn mpoly_reverse(
1257 Aexp: *mut mp_limb_t,
1258 Bexp: *const mp_limb_t,
1259 len: mp_limb_signed_t,
1260 N: mp_limb_signed_t,
1261 );
1262}
1263extern "C" {
1264 pub fn mpoly_monomials_deflation(
1265 shift: *mut fmpz,
1266 stride: *mut fmpz,
1267 Aexps: *const mp_limb_t,
1268 Abits: mp_limb_t,
1269 Alength: mp_limb_signed_t,
1270 mctx: *mut mpoly_ctx_struct,
1271 );
1272}
1273extern "C" {
1274 pub fn mpoly_monomials_deflate(
1275 Aexps: *mut mp_limb_t,
1276 Abits: mp_limb_t,
1277 Bexps: *const mp_limb_t,
1278 Bbits: mp_limb_t,
1279 Blength: mp_limb_signed_t,
1280 shift: *const fmpz,
1281 stride: *const fmpz,
1282 mctx: *mut mpoly_ctx_struct,
1283 );
1284}
1285extern "C" {
1286 pub fn mpoly_monomials_inflate(
1287 Aexps: *mut mp_limb_t,
1288 Abits: mp_limb_t,
1289 Bexps: *const mp_limb_t,
1290 Bbits: mp_limb_t,
1291 Blength: mp_limb_signed_t,
1292 shift: *const fmpz,
1293 stride: *const fmpz,
1294 mctx: *mut mpoly_ctx_struct,
1295 );
1296}
1297extern "C" {
1298 pub fn _mpoly_gen_shift_right(
1299 Aexp: *mut mp_limb_t,
1300 Abits: mp_limb_t,
1301 Alength: mp_limb_signed_t,
1302 var: mp_limb_signed_t,
1303 amount: mp_limb_t,
1304 mctx: *mut mpoly_ctx_struct,
1305 );
1306}
1307extern "C" {
1308 pub fn _mpoly_gen_shift_right_fmpz(
1309 Aexp: *mut mp_limb_t,
1310 Abits: mp_limb_t,
1311 Alength: mp_limb_signed_t,
1312 var: mp_limb_signed_t,
1313 amount: *mut fmpz,
1314 mctx: *mut mpoly_ctx_struct,
1315 );
1316}
1317extern "C" {
1318 pub fn _mpoly_gen_shift_left(
1319 Aexp: *mut mp_limb_t,
1320 Abits: mp_limb_t,
1321 Alength: mp_limb_signed_t,
1322 var: mp_limb_signed_t,
1323 amount: mp_limb_t,
1324 mctx: *mut mpoly_ctx_struct,
1325 );
1326}
1327extern "C" {
1328 pub fn mpoly_monomials_shift_right_ui(
1329 Aexps: *mut mp_limb_t,
1330 Abits: mp_limb_t,
1331 Alength: mp_limb_signed_t,
1332 user_exps: *const mp_limb_t,
1333 mctx: *mut mpoly_ctx_struct,
1334 );
1335}
1336extern "C" {
1337 pub fn mpoly_monomials_shift_right_ffmpz(
1338 Aexps: *mut mp_limb_t,
1339 Abits: mp_limb_t,
1340 Alength: mp_limb_signed_t,
1341 user_exps: *const fmpz,
1342 mctx: *mut mpoly_ctx_struct,
1343 );
1344}
1345extern "C" {
1346 pub fn mpoly1_fill_marks(
1347 Dcoeffs: *mut *mut mp_limb_t,
1348 Dlen: *mut mp_limb_signed_t,
1349 Dalloc: *mut mp_limb_signed_t,
1350 Aexps: *const mp_limb_t,
1351 Alen: mp_limb_signed_t,
1352 Abits: mp_limb_t,
1353 mctx: *mut mpoly_ctx_struct,
1354 );
1355}
1356extern "C" {
1357 pub fn mpoly2_fill_marks(
1358 Dcoeffs: *mut *mut mp_limb_t,
1359 Dlen: *mut mp_limb_signed_t,
1360 Dalloc: *mut mp_limb_signed_t,
1361 Aexps: *const mp_limb_t,
1362 Alen: mp_limb_signed_t,
1363 Abits: mp_limb_t,
1364 mctx: *mut mpoly_ctx_struct,
1365 );
1366}
1367extern "C" {
1368 pub fn mpoly_to_mpolyl_perm_deflate(
1369 Aexps: *mut mp_limb_t,
1370 Abits: mp_limb_t,
1371 Actx: *mut mpoly_ctx_struct,
1372 Bexps: *mut mp_limb_t,
1373 Bbits: mp_limb_t,
1374 Bctx: *mut mpoly_ctx_struct,
1375 length: mp_limb_signed_t,
1376 perm: *const mp_limb_signed_t,
1377 shift: *const mp_limb_t,
1378 stride: *const mp_limb_t,
1379 );
1380}
1381extern "C" {
1382 pub fn mpoly_from_mpolyl_perm_inflate(
1383 Bexps: *mut mp_limb_t,
1384 Bbits: mp_limb_t,
1385 Bctx: *mut mpoly_ctx_struct,
1386 Aexps: *mut mp_limb_t,
1387 Abits: mp_limb_t,
1388 Actx: *mut mpoly_ctx_struct,
1389 length: mp_limb_signed_t,
1390 perm: *const mp_limb_signed_t,
1391 shift: *const mp_limb_t,
1392 stride: *const mp_limb_t,
1393 );
1394}
1395#[repr(C)]
1396#[derive(Debug, Copy, Clone)]
1397pub struct mpoly_gcd_info_struct {
1398 pub Amax_exp: *mut mp_limb_t,
1399 pub Amin_exp: *mut mp_limb_t,
1400 pub Astride: *mut mp_limb_t,
1401 pub Adeflate_deg: *mut mp_limb_signed_t,
1402 pub Alead_count: *mut mp_limb_signed_t,
1403 pub Atail_count: *mut mp_limb_signed_t,
1404 pub Bmax_exp: *mut mp_limb_t,
1405 pub Bmin_exp: *mut mp_limb_t,
1406 pub Bstride: *mut mp_limb_t,
1407 pub Bdeflate_deg: *mut mp_limb_signed_t,
1408 pub Blead_count: *mut mp_limb_signed_t,
1409 pub Btail_count: *mut mp_limb_signed_t,
1410 pub Gmin_exp: *mut mp_limb_t,
1411 pub Abarmin_exp: *mut mp_limb_t,
1412 pub Bbarmin_exp: *mut mp_limb_t,
1413 pub Gstride: *mut mp_limb_t,
1414 pub Gterm_count_est: *mut mp_limb_signed_t,
1415 pub Gdeflate_deg_bound: *mut mp_limb_signed_t,
1416 pub Gbits: mp_limb_t,
1417 pub Abarbits: mp_limb_t,
1418 pub Bbarbits: mp_limb_t,
1419 pub mvars: mp_limb_signed_t,
1420 pub Adeflate_tdeg: mp_limb_signed_t,
1421 pub Bdeflate_tdeg: mp_limb_signed_t,
1422 pub Adensity: f64,
1423 pub Bdensity: f64,
1424 pub hensel_time: f64,
1425 pub brown_time: f64,
1426 pub zippel_time: f64,
1427 pub zippel2_time: f64,
1428 pub hensel_perm: *mut mp_limb_signed_t,
1429 pub brown_perm: *mut mp_limb_signed_t,
1430 pub zippel_perm: *mut mp_limb_signed_t,
1431 pub zippel2_perm: *mut mp_limb_signed_t,
1432 pub can_use: c_uint,
1433 pub Gdeflate_deg_bounds_are_nice: c_int,
1434 pub data: *mut c_char,
1435}
1436pub type mpoly_gcd_info_t = [mpoly_gcd_info_struct; 1usize];
1437extern "C" {
1438 pub fn mpoly_gcd_info_init(I: *mut mpoly_gcd_info_struct, nvars: mp_limb_signed_t);
1439}
1440extern "C" {
1441 pub fn mpoly_gcd_info_clear(I: *mut mpoly_gcd_info_struct);
1442}
1443extern "C" {
1444 pub fn mpoly_gcd_info_limits(
1445 Amax_exp: *mut mp_limb_t,
1446 Amin_exp: *mut mp_limb_t,
1447 Amax_exp_count: *mut mp_limb_signed_t,
1448 Amin_exp_count: *mut mp_limb_signed_t,
1449 Aexps: *const mp_limb_t,
1450 Abits: mp_limb_t,
1451 Alength: mp_limb_signed_t,
1452 mctx: *mut mpoly_ctx_struct,
1453 );
1454}
1455extern "C" {
1456 pub fn mpoly_gcd_info_stride(
1457 strides: *mut mp_limb_t,
1458 Aexps: *const mp_limb_t,
1459 Abits: mp_limb_t,
1460 Alength: mp_limb_signed_t,
1461 Amax_exp: *const mp_limb_t,
1462 Amin_exp: *const mp_limb_t,
1463 Bexps: *const mp_limb_t,
1464 Bbits: mp_limb_t,
1465 Blength: mp_limb_signed_t,
1466 Bmax_exp: *const mp_limb_t,
1467 Bmin_exp: *const mp_limb_t,
1468 mctx: *mut mpoly_ctx_struct,
1469 );
1470}
1471extern "C" {
1472 pub fn mpoly_gcd_info_set_perm(
1473 I: *mut mpoly_gcd_info_struct,
1474 Alength: mp_limb_signed_t,
1475 Blength: mp_limb_signed_t,
1476 mctx: *mut mpoly_ctx_struct,
1477 );
1478}
1479extern "C" {
1480 pub fn mpoly_gcd_info_get_brown_upper_limit(
1481 I: *mut mpoly_gcd_info_struct,
1482 var: mp_limb_signed_t,
1483 bound: mp_limb_signed_t,
1484 ) -> mp_limb_signed_t;
1485}
1486extern "C" {
1487 pub fn mpoly_gcd_info_measure_hensel(
1488 I: *mut mpoly_gcd_info_struct,
1489 Alength: mp_limb_signed_t,
1490 Blength: mp_limb_signed_t,
1491 mctx: *mut mpoly_ctx_struct,
1492 );
1493}
1494extern "C" {
1495 pub fn mpoly_gcd_info_measure_brown(
1496 I: *mut mpoly_gcd_info_struct,
1497 Alength: mp_limb_signed_t,
1498 Blength: mp_limb_signed_t,
1499 mctx: *mut mpoly_ctx_struct,
1500 );
1501}
1502extern "C" {
1503 pub fn mpoly_gcd_info_measure_bma(
1504 I: *mut mpoly_gcd_info_struct,
1505 Alength: mp_limb_signed_t,
1506 Blength: mp_limb_signed_t,
1507 mctx: *mut mpoly_ctx_struct,
1508 );
1509}
1510extern "C" {
1511 pub fn mpoly_gcd_info_measure_zippel(
1512 I: *mut mpoly_gcd_info_struct,
1513 Alength: mp_limb_signed_t,
1514 Blength: mp_limb_signed_t,
1515 mctx: *mut mpoly_ctx_struct,
1516 );
1517}
1518extern "C" {
1519 pub fn mpoly_gcd_info_measure_zippel2(
1520 I: *mut mpoly_gcd_info_struct,
1521 Alength: mp_limb_signed_t,
1522 Blength: mp_limb_signed_t,
1523 mctx: *mut mpoly_ctx_struct,
1524 );
1525}
1526extern "C" {
1527 pub fn mpoly_monomial_cofactors(
1528 Abarexps: *mut fmpz,
1529 Bbarexps: *mut fmpz,
1530 Aexps: *const mp_limb_t,
1531 Abits: mp_limb_t,
1532 Bexps: *const mp_limb_t,
1533 Bbits: mp_limb_t,
1534 length: mp_limb_signed_t,
1535 mctx: *mut mpoly_ctx_struct,
1536 ) -> c_int;
1537}
1538extern "C" {
1539 pub fn mpoly_is_proved_not_square(
1540 Aexps: *const mp_limb_t,
1541 Alen: mp_limb_signed_t,
1542 Abits: mp_limb_t,
1543 N: mp_limb_signed_t,
1544 t: *mut mp_limb_t,
1545 ) -> c_int;
1546}
1547extern "C" {
1548 pub fn mpoly_remove_var_powers(
1549 var_powers: *mut fmpz,
1550 Aexps: *mut mp_limb_t,
1551 Abits: mp_limb_t,
1552 Alen: mp_limb_signed_t,
1553 mctx: *mut mpoly_ctx_struct,
1554 );
1555}
1556extern "C" {
1557 pub fn _mpoly_compress_exps(
1558 V: *mut mp_limb_signed_t,
1559 D: *mut mp_limb_signed_t,
1560 deg: *mut mp_limb_signed_t,
1561 S: *mut mp_limb_signed_t,
1562 n: mp_limb_signed_t,
1563 l: mp_limb_signed_t,
1564 ) -> mp_limb_signed_t;
1565}
1566extern "C" {
1567 pub fn mpoly_test_irreducible(
1568 Aexps: *mut mp_limb_t,
1569 Abits: mp_limb_t,
1570 Alen: mp_limb_signed_t,
1571 ctx: *mut mpoly_ctx_struct,
1572 ) -> c_int;
1573}
1574extern "C" {
1575 pub fn _mpoly_test_irreducible(
1576 Aexps: *mut mp_limb_signed_t,
1577 stride: mp_limb_signed_t,
1578 Alen: mp_limb_signed_t,
1579 nvars: mp_limb_signed_t,
1580 state: *mut flint_rand_s,
1581 tries_left: mp_limb_signed_t,
1582 ) -> c_int;
1583}
1584#[repr(C)]
1585#[derive(Debug, Copy, Clone)]
1586pub struct mpoly_compression_struct {
1587 pub mvars: mp_limb_signed_t,
1588 pub nvars: mp_limb_signed_t,
1589 pub exps: *mut mp_limb_signed_t,
1590 pub exps_alloc: mp_limb_signed_t,
1591 pub rest: *mut mp_limb_signed_t,
1592 pub rest_alloc: mp_limb_signed_t,
1593 pub umat: *mut mp_limb_signed_t,
1594 pub deltas: *mut mp_limb_signed_t,
1595 pub degs: *mut mp_limb_signed_t,
1596 pub is_trivial: c_int,
1597 pub is_perm: c_int,
1598 pub is_irred: c_int,
1599}
1600pub type mpoly_compression_t = [mpoly_compression_struct; 1usize];
1601extern "C" {
1602 pub fn mpoly_compression_init(M: *mut mpoly_compression_struct);
1603}
1604extern "C" {
1605 pub fn mpoly_compression_clear(M: *mut mpoly_compression_struct);
1606}
1607extern "C" {
1608 pub fn mpoly_compression_set(
1609 M: *mut mpoly_compression_struct,
1610 Aexps: *const mp_limb_t,
1611 Abits: mp_limb_t,
1612 Alen: mp_limb_signed_t,
1613 mctx: *mut mpoly_ctx_struct,
1614 );
1615}
1616extern "C" {
1617 pub fn mpoly_bivar_cld_bounds(l: *mut mp_limb_signed_t, n: mp_limb_signed_t);
1618}
1619extern "C" {
1620 pub fn _slong_array_fit_length(
1621 array: *mut *mut mp_limb_signed_t,
1622 alloc: *mut mp_limb_signed_t,
1623 len: mp_limb_signed_t,
1624 );
1625}
1626extern "C" {
1627 pub fn _mpoly_heap_pop1(
1628 heap: *mut mpoly_heap1_s,
1629 heap_len: *mut mp_limb_signed_t,
1630 maskhi: mp_limb_t,
1631 ) -> *mut c_void;
1632}
1633extern "C" {
1634 pub fn _mpoly_heap_insert1(
1635 heap: *mut mpoly_heap1_s,
1636 exp: mp_limb_t,
1637 x: *mut c_void,
1638 next_loc: *mut mp_limb_signed_t,
1639 heap_len: *mut mp_limb_signed_t,
1640 maskhi: mp_limb_t,
1641 );
1642}
1643extern "C" {
1644 pub fn _mpoly_heap_pop(
1645 heap: *mut mpoly_heap_s,
1646 heap_len: *mut mp_limb_signed_t,
1647 N: mp_limb_signed_t,
1648 cmpmask: *const mp_limb_t,
1649 ) -> *mut c_void;
1650}
1651extern "C" {
1652 pub fn _mpoly_heap_insert(
1653 heap: *mut mpoly_heap_s,
1654 exp: *mut mp_limb_t,
1655 x: *mut c_void,
1656 next_loc: *mut mp_limb_signed_t,
1657 heap_len: *mut mp_limb_signed_t,
1658 N: mp_limb_signed_t,
1659 cmpmask: *const mp_limb_t,
1660 ) -> c_int;
1661}
1662#[repr(C)]
1663#[derive(Debug, Copy, Clone)]
1664pub struct mpoly_univar_struct {
1665 pub coeffs: *mut c_char,
1666 pub exps: *mut fmpz,
1667 pub length: mp_limb_signed_t,
1668 pub alloc: mp_limb_signed_t,
1669}
1670pub type mpoly_univar_t = [mpoly_univar_struct; 1usize];
1671#[repr(C)]
1672#[derive(Debug, Copy, Clone)]
1673pub struct _bindgen_ty_22 {
1674 pub elem_size: mp_limb_signed_t,
1675 pub ctx: *const c_void,
1676 pub init: ::std::option::Option<unsafe extern "C" fn(arg1: *mut c_void, arg2: *const c_void)>,
1677 pub clear: ::std::option::Option<unsafe extern "C" fn(arg1: *mut c_void, arg2: *const c_void)>,
1678 pub is_zero: ::std::option::Option<
1679 unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int,
1680 >,
1681 pub zero: ::std::option::Option<unsafe extern "C" fn(arg1: *mut c_void, arg2: *const c_void)>,
1682 pub one: ::std::option::Option<unsafe extern "C" fn(arg1: *mut c_void, arg2: *const c_void)>,
1683 pub set_fmpz: ::std::option::Option<
1684 unsafe extern "C" fn(arg1: *mut c_void, arg2: *mut fmpz, arg3: *const c_void),
1685 >,
1686 pub set: ::std::option::Option<
1687 unsafe extern "C" fn(arg1: *mut c_void, arg2: *const c_void, arg3: *const c_void),
1688 >,
1689 pub swap: ::std::option::Option<
1690 unsafe extern "C" fn(arg1: *mut c_void, arg2: *mut c_void, arg3: *const c_void),
1691 >,
1692 pub neg: ::std::option::Option<
1693 unsafe extern "C" fn(arg1: *mut c_void, arg2: *const c_void, arg3: *const c_void),
1694 >,
1695 pub add: ::std::option::Option<
1696 unsafe extern "C" fn(
1697 arg1: *mut c_void,
1698 arg2: *const c_void,
1699 arg3: *const c_void,
1700 arg4: *const c_void,
1701 ),
1702 >,
1703 pub sub: ::std::option::Option<
1704 unsafe extern "C" fn(
1705 arg1: *mut c_void,
1706 arg2: *const c_void,
1707 arg3: *const c_void,
1708 arg4: *const c_void,
1709 ),
1710 >,
1711 pub mul_fmpz: ::std::option::Option<
1712 unsafe extern "C" fn(
1713 arg1: *mut c_void,
1714 arg2: *const c_void,
1715 arg3: *mut fmpz,
1716 arg4: *const c_void,
1717 ),
1718 >,
1719 pub mul: ::std::option::Option<
1720 unsafe extern "C" fn(
1721 arg1: *mut c_void,
1722 arg2: *const c_void,
1723 arg3: *const c_void,
1724 arg4: *const c_void,
1725 ),
1726 >,
1727 pub divexact: ::std::option::Option<
1728 unsafe extern "C" fn(
1729 arg1: *mut c_void,
1730 arg2: *const c_void,
1731 arg3: *const c_void,
1732 arg4: *const c_void,
1733 ),
1734 >,
1735 pub divides: ::std::option::Option<
1736 unsafe extern "C" fn(
1737 arg1: *mut c_void,
1738 arg2: *const c_void,
1739 arg3: *const c_void,
1740 arg4: *const c_void,
1741 ) -> c_int,
1742 >,
1743 pub pow_fmpz: ::std::option::Option<
1744 unsafe extern "C" fn(
1745 arg1: *mut c_void,
1746 arg2: *const c_void,
1747 arg3: *mut fmpz,
1748 arg4: *const c_void,
1749 ) -> c_int,
1750 >,
1751 pub length: ::std::option::Option<
1752 unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> mp_limb_signed_t,
1753 >,
1754}
1755pub type mpoly_void_ring_t = [_bindgen_ty_22; 1usize];
1756extern "C" {
1757 pub fn mpoly_void_ring_elem_init(R: *mut _bindgen_ty_22) -> *mut c_void;
1758}
1759extern "C" {
1760 pub fn mpoly_void_ring_elem_clear(a: *mut c_void, R: *mut _bindgen_ty_22);
1761}
1762extern "C" {
1763 pub fn mpoly_univar_init(A: *mut mpoly_univar_struct, R: *mut _bindgen_ty_22);
1764}
1765extern "C" {
1766 pub fn mpoly_univar_clear(A: *mut mpoly_univar_struct, R: *mut _bindgen_ty_22);
1767}
1768extern "C" {
1769 pub fn mpoly_univar_swap(A: *mut mpoly_univar_struct, B: *mut mpoly_univar_struct);
1770}
1771extern "C" {
1772 pub fn mpoly_univar_fit_length(
1773 A: *mut mpoly_univar_struct,
1774 len: mp_limb_signed_t,
1775 R: *mut _bindgen_ty_22,
1776 );
1777}
1778extern "C" {
1779 pub fn mpoly_univar_init2(
1780 A: *mut mpoly_univar_struct,
1781 len: mp_limb_signed_t,
1782 R: *mut _bindgen_ty_22,
1783 );
1784}
1785extern "C" {
1786 pub fn mpoly_univar_pseudo_gcd_ducos(
1787 G: *mut mpoly_univar_struct,
1788 B: *mut mpoly_univar_struct,
1789 A: *mut mpoly_univar_struct,
1790 R: *mut _bindgen_ty_22,
1791 ) -> c_int;
1792}
1793extern "C" {
1794 pub fn mpoly_univar_resultant(
1795 r: *mut c_void,
1796 fx: *mut mpoly_univar_struct,
1797 gx: *mut mpoly_univar_struct,
1798 R: *mut _bindgen_ty_22,
1799 ) -> c_int;
1800}
1801extern "C" {
1802 pub fn mpoly_univar_discriminant(
1803 d: *mut c_void,
1804 fx: *mut mpoly_univar_struct,
1805 R: *mut _bindgen_ty_22,
1806 ) -> c_int;
1807}
1808#[repr(C)]
1809#[derive(Debug, Copy, Clone)]
1810pub struct string_with_length_struct {
1811 pub str_: *mut c_char,
1812 pub str_len: mp_limb_signed_t,
1813}
1814#[repr(C)]
1815#[derive(Debug, Copy, Clone)]
1816pub struct mpoly_parse_struct {
1817 pub R: mpoly_void_ring_t,
1818 pub stack: *mut mp_limb_signed_t,
1819 pub stack_len: mp_limb_signed_t,
1820 pub stack_alloc: mp_limb_signed_t,
1821 pub estore: *mut c_char,
1822 pub estore_len: mp_limb_signed_t,
1823 pub estore_alloc: mp_limb_signed_t,
1824 pub tmp: *mut c_void,
1825 pub terminal_strings: *mut string_with_length_struct,
1826 pub terminal_values: *mut c_char,
1827 pub terminals_alloc: mp_limb_signed_t,
1828 pub terminals_len: mp_limb_signed_t,
1829}
1830pub type mpoly_parse_t = [mpoly_parse_struct; 1usize];
1831extern "C" {
1832 pub fn mpoly_parse_init(E: *mut mpoly_parse_struct);
1833}
1834extern "C" {
1835 pub fn mpoly_parse_clear(E: *mut mpoly_parse_struct);
1836}
1837extern "C" {
1838 pub fn mpoly_parse_add_terminal(E: *mut mpoly_parse_struct, s: *const c_char, v: *const c_void);
1839}
1840extern "C" {
1841 pub fn mpoly_parse_parse(
1842 E: *mut mpoly_parse_struct,
1843 res: *mut c_void,
1844 s: *const c_char,
1845 len: mp_limb_signed_t,
1846 ) -> c_int;
1847}
1848extern "C" {
1849 pub fn mpoly_main_variable_terms1(
1850 i1: *mut mp_limb_signed_t,
1851 n1: *mut mp_limb_signed_t,
1852 exp1: *const mp_limb_t,
1853 l1: mp_limb_signed_t,
1854 len1: mp_limb_signed_t,
1855 k: mp_limb_signed_t,
1856 num: mp_limb_signed_t,
1857 bits: mp_limb_signed_t,
1858 );
1859}