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::fmpz_mat::fmpz_mat_struct;
11use crate::mpoly::*;
12use crate::n_poly::{n_bpoly_struct, n_poly_struct, n_polyun_struct};
13use crate::nmod_poly::nmod_poly_struct;
14use crate::nmod_vec::nmod_t;
15use libc::{c_char, c_int, c_uint, FILE};
16
17#[repr(C)]
18#[derive(Debug, Copy, Clone)]
19pub struct nmod_mpoly_ctx_struct {
20 pub minfo: mpoly_ctx_t,
21 pub mod_: nmod_t,
22}
23pub type nmod_mpoly_ctx_t = [nmod_mpoly_ctx_struct; 1usize];
24#[repr(C)]
25#[derive(Debug, Copy, Clone)]
26pub struct nmod_mpoly_struct {
27 pub coeffs: *mut mp_limb_t,
28 pub exps: *mut mp_limb_t,
29 pub length: mp_limb_signed_t,
30 pub bits: mp_limb_t,
31 pub coeffs_alloc: mp_limb_signed_t,
32 pub exps_alloc: mp_limb_signed_t,
33}
34pub type nmod_mpoly_t = [nmod_mpoly_struct; 1usize];
35extern "C" {
36 pub fn nmod_mpoly_term_coeff_ref(
37 A: *mut nmod_mpoly_struct,
38 i: mp_limb_signed_t,
39 ctx: *mut nmod_mpoly_ctx_struct,
40 ) -> *mut mp_limb_t;
41}
42extern "C" {
43 pub fn evil_cast_nmod_poly_to_n_poly(a: *mut nmod_poly_struct) -> *mut n_poly_struct;
44}
45extern "C" {
46 pub fn evil_const_cast_nmod_poly_to_n_poly(a: *const nmod_poly_struct) -> *const n_poly_struct;
47}
48#[repr(C)]
49#[derive(Debug, Copy, Clone)]
50pub struct nmod_mpoly_univar_struct {
51 pub coeffs: *mut nmod_mpoly_struct,
52 pub exps: *mut fmpz,
53 pub alloc: mp_limb_signed_t,
54 pub length: mp_limb_signed_t,
55}
56pub type nmod_mpoly_univar_t = [nmod_mpoly_univar_struct; 1usize];
57#[repr(C)]
58#[derive(Debug, Copy, Clone)]
59pub struct nmod_mpolyu_struct {
60 pub coeffs: *mut nmod_mpoly_struct,
61 pub exps: *mut mp_limb_t,
62 pub alloc: mp_limb_signed_t,
63 pub length: mp_limb_signed_t,
64 pub bits: mp_limb_t,
65}
66pub type nmod_mpolyu_t = [nmod_mpolyu_struct; 1usize];
67#[repr(C)]
68#[derive(Debug, Copy, Clone)]
69pub struct nmod_mpolyn_struct {
70 pub coeffs: *mut n_poly_struct,
71 pub exps: *mut mp_limb_t,
72 pub alloc: mp_limb_signed_t,
73 pub length: mp_limb_signed_t,
74 pub bits: mp_limb_signed_t,
75}
76pub type nmod_mpolyn_t = [nmod_mpolyn_struct; 1usize];
77#[repr(C)]
78#[derive(Debug, Copy, Clone)]
79pub struct nmod_mpolyun_struct {
80 pub coeffs: *mut nmod_mpolyn_struct,
81 pub exps: *mut mp_limb_t,
82 pub alloc: mp_limb_signed_t,
83 pub length: mp_limb_signed_t,
84 pub bits: mp_limb_t,
85}
86pub type nmod_mpolyun_t = [nmod_mpolyun_struct; 1usize];
87#[repr(C)]
88#[derive(Debug, Copy, Clone)]
89pub struct nmod_mpolyd_struct {
90 pub nvars: mp_limb_signed_t,
91 pub degb_alloc: mp_limb_signed_t,
92 pub deg_bounds: *mut mp_limb_signed_t,
93 pub coeff_alloc: mp_limb_signed_t,
94 pub coeffs: *mut mp_limb_t,
95}
96pub type nmod_mpolyd_t = [nmod_mpolyd_struct; 1usize];
97#[repr(C)]
98#[derive(Debug, Copy, Clone)]
99pub struct nmod_poly_stack_struct {
100 pub poly_array: *mut *mut n_poly_struct,
101 pub poly_alloc: mp_limb_signed_t,
102 pub poly_top: mp_limb_signed_t,
103 pub mpolyun_array: *mut *mut nmod_mpolyun_struct,
104 pub mpolyun_alloc: mp_limb_signed_t,
105 pub mpolyun_top: mp_limb_signed_t,
106 pub mpolyn_array: *mut *mut nmod_mpolyn_struct,
107 pub mpolyn_alloc: mp_limb_signed_t,
108 pub mpolyn_top: mp_limb_signed_t,
109 pub ctx: *const nmod_mpoly_ctx_struct,
110 pub bits: mp_limb_t,
111}
112pub type nmod_poly_stack_t = [nmod_poly_stack_struct; 1usize];
113extern "C" {
114 pub fn nmod_poly_stack_init(
115 S: *mut nmod_poly_stack_struct,
116 bits: mp_limb_t,
117 ctx: *mut nmod_mpoly_ctx_struct,
118 );
119}
120extern "C" {
121 pub fn nmod_poly_stack_clear(S: *mut nmod_poly_stack_struct);
122}
123extern "C" {
124 pub fn nmod_poly_stack_set_ctx(S: *mut nmod_poly_stack_struct, ctx: *mut nmod_mpoly_ctx_struct);
125}
126extern "C" {
127 pub fn nmod_poly_stack_fit_request_poly(
128 S: *mut nmod_poly_stack_struct,
129 k: mp_limb_signed_t,
130 ) -> *mut *mut n_poly_struct;
131}
132extern "C" {
133 pub fn nmod_poly_stack_fit_request_mpolyun(
134 S: *mut nmod_poly_stack_struct,
135 k: mp_limb_signed_t,
136 ) -> *mut *mut nmod_mpolyun_struct;
137}
138extern "C" {
139 pub fn nmod_poly_stack_fit_request_mpolyn(
140 S: *mut nmod_poly_stack_struct,
141 k: mp_limb_signed_t,
142 ) -> *mut *mut nmod_mpolyn_struct;
143}
144extern "C" {
145 pub fn nmod_poly_stack_request_poly(
146 S: *mut nmod_poly_stack_struct,
147 k: mp_limb_signed_t,
148 ) -> *mut *mut n_poly_struct;
149}
150extern "C" {
151 pub fn nmod_poly_stack_take_top_poly(S: *mut nmod_poly_stack_struct) -> *mut n_poly_struct;
152}
153extern "C" {
154 pub fn nmod_poly_stack_give_back_poly(S: *mut nmod_poly_stack_struct, k: mp_limb_signed_t);
155}
156extern "C" {
157 pub fn nmod_poly_stack_size_poly(S: *mut nmod_poly_stack_struct) -> mp_limb_signed_t;
158}
159extern "C" {
160 pub fn nmod_poly_stack_request_mpolyun(
161 S: *mut nmod_poly_stack_struct,
162 k: mp_limb_signed_t,
163 ) -> *mut *mut nmod_mpolyun_struct;
164}
165extern "C" {
166 pub fn nmod_poly_stack_take_top_mpolyun(
167 S: *mut nmod_poly_stack_struct,
168 ) -> *mut nmod_mpolyun_struct;
169}
170extern "C" {
171 pub fn nmod_poly_stack_give_back_mpolyun(S: *mut nmod_poly_stack_struct, k: mp_limb_signed_t);
172}
173extern "C" {
174 pub fn nmod_poly_stack_size_mpolyun(S: *mut nmod_poly_stack_struct) -> mp_limb_signed_t;
175}
176extern "C" {
177 pub fn nmod_poly_stack_request_mpolyn(
178 S: *mut nmod_poly_stack_struct,
179 k: mp_limb_signed_t,
180 ) -> *mut *mut nmod_mpolyn_struct;
181}
182extern "C" {
183 pub fn nmod_poly_stack_take_top_mpolyn(
184 S: *mut nmod_poly_stack_struct,
185 ) -> *mut nmod_mpolyn_struct;
186}
187extern "C" {
188 pub fn nmod_poly_stack_give_back_mpolyn(S: *mut nmod_poly_stack_struct, k: mp_limb_signed_t);
189}
190extern "C" {
191 pub fn nmod_poly_stack_size_mpolyn(S: *mut nmod_poly_stack_struct) -> mp_limb_signed_t;
192}
193extern "C" {
194 pub fn nmod_mpoly_ctx_init(
195 ctx: *mut nmod_mpoly_ctx_struct,
196 nvars: mp_limb_signed_t,
197 ord: ordering_t,
198 modulus: mp_limb_t,
199 );
200}
201extern "C" {
202 pub fn nmod_mpoly_ctx_init_rand(
203 ctx: *mut nmod_mpoly_ctx_struct,
204 state: *mut flint_rand_s,
205 max_nvars: mp_limb_signed_t,
206 modulus: mp_limb_t,
207 );
208}
209extern "C" {
210 pub fn nmod_mpoly_ctx_clear(ctx: *mut nmod_mpoly_ctx_struct);
211}
212extern "C" {
213 pub fn nmod_mpoly_ctx_set_modulus(ctx: *mut nmod_mpoly_ctx_struct, p: mp_limb_t);
214}
215extern "C" {
216 pub fn nmod_mpoly_ctx_nvars(ctx: *mut nmod_mpoly_ctx_struct) -> mp_limb_signed_t;
217}
218extern "C" {
219 pub fn nmod_mpoly_ctx_ord(ctx: *mut nmod_mpoly_ctx_struct) -> ordering_t;
220}
221extern "C" {
222 pub fn nmod_mpoly_ctx_modulus(ctx: *mut nmod_mpoly_ctx_struct) -> mp_limb_t;
223}
224extern "C" {
225 pub fn nmod_mpoly_ctx_change_modulus(ctx: *mut nmod_mpoly_ctx_struct, modulus: mp_limb_t);
226}
227extern "C" {
228 pub fn nmod_mpoly_init(A: *mut nmod_mpoly_struct, ctx: *mut nmod_mpoly_ctx_struct);
229}
230extern "C" {
231 pub fn nmod_mpoly_clear(A: *mut nmod_mpoly_struct, ctx: *mut nmod_mpoly_ctx_struct);
232}
233extern "C" {
234 pub fn nmod_mpoly_init2(
235 A: *mut nmod_mpoly_struct,
236 alloc: mp_limb_signed_t,
237 ctx: *mut nmod_mpoly_ctx_struct,
238 );
239}
240extern "C" {
241 pub fn nmod_mpoly_init3(
242 A: *mut nmod_mpoly_struct,
243 alloc: mp_limb_signed_t,
244 bits: mp_limb_t,
245 ctx: *mut nmod_mpoly_ctx_struct,
246 );
247}
248extern "C" {
249 pub fn nmod_mpoly_realloc(
250 A: *mut nmod_mpoly_struct,
251 alloc: mp_limb_signed_t,
252 ctx: *mut nmod_mpoly_ctx_struct,
253 );
254}
255extern "C" {
256 pub fn nmod_mpoly_fit_length(
257 A: *mut nmod_mpoly_struct,
258 length: mp_limb_signed_t,
259 ctx: *mut nmod_mpoly_ctx_struct,
260 );
261}
262extern "C" {
263 pub fn nmod_mpoly_fit_length_fit_bits(
264 A: *mut nmod_mpoly_struct,
265 len: mp_limb_signed_t,
266 bits: mp_limb_t,
267 ctx: *mut nmod_mpoly_ctx_struct,
268 );
269}
270extern "C" {
271 pub fn nmod_mpoly_fit_length_reset_bits(
272 A: *mut nmod_mpoly_struct,
273 len: mp_limb_signed_t,
274 bits: mp_limb_t,
275 ctx: *mut nmod_mpoly_ctx_struct,
276 );
277}
278extern "C" {
279 pub fn _nmod_mpoly_fit_length(
280 coeffs: *mut *mut mp_limb_t,
281 coeffs_alloc: *mut mp_limb_signed_t,
282 exps: *mut *mut mp_limb_t,
283 exps_alloc: *mut mp_limb_signed_t,
284 N: mp_limb_signed_t,
285 length: mp_limb_signed_t,
286 );
287}
288extern "C" {
289 pub fn _nmod_mpoly_set_length(
290 A: *mut nmod_mpoly_struct,
291 newlen: mp_limb_signed_t,
292 ctx: *mut nmod_mpoly_ctx_struct,
293 );
294}
295extern "C" {
296 pub fn nmod_mpoly_truncate(
297 A: *mut nmod_mpoly_struct,
298 newlen: mp_limb_signed_t,
299 ctx: *mut nmod_mpoly_ctx_struct,
300 );
301}
302extern "C" {
303 pub fn nmod_mpoly_set_str_pretty(
304 A: *mut nmod_mpoly_struct,
305 str_: *const c_char,
306 x: *mut *const c_char,
307 ctx: *mut nmod_mpoly_ctx_struct,
308 ) -> c_int;
309}
310extern "C" {
311 pub fn nmod_mpoly_get_str_pretty(
312 A: *mut nmod_mpoly_struct,
313 x: *mut *const c_char,
314 ctx: *mut nmod_mpoly_ctx_struct,
315 ) -> *mut c_char;
316}
317extern "C" {
318 pub fn nmod_mpoly_fprint_pretty(
319 file: *mut FILE,
320 A: *mut nmod_mpoly_struct,
321 x: *mut *const c_char,
322 ctx: *mut nmod_mpoly_ctx_struct,
323 ) -> c_int;
324}
325extern "C" {
326 pub fn nmod_mpoly_print_pretty(
327 A: *mut nmod_mpoly_struct,
328 x: *mut *const c_char,
329 ctx: *mut nmod_mpoly_ctx_struct,
330 ) -> c_int;
331}
332extern "C" {
333 pub fn nmod_mpoly_gen(
334 A: *mut nmod_mpoly_struct,
335 var: mp_limb_signed_t,
336 ctx: *mut nmod_mpoly_ctx_struct,
337 );
338}
339extern "C" {
340 pub fn nmod_mpoly_is_gen(
341 A: *mut nmod_mpoly_struct,
342 var: mp_limb_signed_t,
343 ctx: *mut nmod_mpoly_ctx_struct,
344 ) -> c_int;
345}
346extern "C" {
347 pub fn nmod_mpoly_set(
348 A: *mut nmod_mpoly_struct,
349 B: *mut nmod_mpoly_struct,
350 ctx: *mut nmod_mpoly_ctx_struct,
351 );
352}
353extern "C" {
354 pub fn nmod_mpoly_equal(
355 A: *mut nmod_mpoly_struct,
356 B: *mut nmod_mpoly_struct,
357 ctx: *mut nmod_mpoly_ctx_struct,
358 ) -> c_int;
359}
360extern "C" {
361 pub fn nmod_mpoly_swap(
362 A: *mut nmod_mpoly_struct,
363 B: *mut nmod_mpoly_struct,
364 ctx: *mut nmod_mpoly_ctx_struct,
365 );
366}
367extern "C" {
368 pub fn nmod_mpoly_is_ui(A: *mut nmod_mpoly_struct, ctx: *mut nmod_mpoly_ctx_struct) -> c_int;
369}
370extern "C" {
371 pub fn nmod_mpoly_get_ui(
372 A: *mut nmod_mpoly_struct,
373 ctx: *mut nmod_mpoly_ctx_struct,
374 ) -> mp_limb_t;
375}
376extern "C" {
377 pub fn nmod_mpoly_set_ui(
378 A: *mut nmod_mpoly_struct,
379 c: mp_limb_t,
380 ctx: *mut nmod_mpoly_ctx_struct,
381 );
382}
383extern "C" {
384 pub fn nmod_mpoly_set_fmpz(
385 A: *mut nmod_mpoly_struct,
386 c: *mut fmpz,
387 ctx: *mut nmod_mpoly_ctx_struct,
388 );
389}
390extern "C" {
391 pub fn nmod_mpoly_zero(A: *mut nmod_mpoly_struct, ctx: *mut nmod_mpoly_ctx_struct);
392}
393extern "C" {
394 pub fn nmod_mpoly_one(A: *mut nmod_mpoly_struct, ctx: *mut nmod_mpoly_ctx_struct);
395}
396extern "C" {
397 pub fn nmod_mpoly_equal_ui(
398 A: *mut nmod_mpoly_struct,
399 c: mp_limb_t,
400 ctx: *mut nmod_mpoly_ctx_struct,
401 ) -> c_int;
402}
403extern "C" {
404 pub fn nmod_mpoly_is_zero(A: *mut nmod_mpoly_struct, ctx: *mut nmod_mpoly_ctx_struct) -> c_int;
405}
406extern "C" {
407 pub fn nmod_mpoly_is_one(A: *mut nmod_mpoly_struct, ctx: *mut nmod_mpoly_ctx_struct) -> c_int;
408}
409extern "C" {
410 pub fn nmod_mpoly_degrees_fit_si(
411 A: *mut nmod_mpoly_struct,
412 ctx: *mut nmod_mpoly_ctx_struct,
413 ) -> c_int;
414}
415extern "C" {
416 pub fn nmod_mpoly_degrees_fmpz(
417 degs: *mut *mut fmpz,
418 A: *mut nmod_mpoly_struct,
419 ctx: *mut nmod_mpoly_ctx_struct,
420 );
421}
422extern "C" {
423 pub fn nmod_mpoly_degrees_si(
424 degs: *mut mp_limb_signed_t,
425 A: *mut nmod_mpoly_struct,
426 ctx: *mut nmod_mpoly_ctx_struct,
427 );
428}
429extern "C" {
430 pub fn nmod_mpoly_degree_fmpz(
431 deg: *mut fmpz,
432 A: *mut nmod_mpoly_struct,
433 var: mp_limb_signed_t,
434 ctx: *mut nmod_mpoly_ctx_struct,
435 );
436}
437extern "C" {
438 pub fn nmod_mpoly_degree_si(
439 A: *mut nmod_mpoly_struct,
440 var: mp_limb_signed_t,
441 ctx: *mut nmod_mpoly_ctx_struct,
442 ) -> mp_limb_signed_t;
443}
444extern "C" {
445 pub fn nmod_mpoly_total_degree_fits_si(
446 A: *mut nmod_mpoly_struct,
447 ctx: *mut nmod_mpoly_ctx_struct,
448 ) -> c_int;
449}
450extern "C" {
451 pub fn nmod_mpoly_total_degree_fmpz(
452 td: *mut fmpz,
453 A: *mut nmod_mpoly_struct,
454 ctx: *mut nmod_mpoly_ctx_struct,
455 );
456}
457extern "C" {
458 pub fn nmod_mpoly_total_degree_si(
459 A: *mut nmod_mpoly_struct,
460 ctx: *mut nmod_mpoly_ctx_struct,
461 ) -> mp_limb_signed_t;
462}
463extern "C" {
464 pub fn nmod_mpoly_used_vars(
465 used: *mut c_int,
466 A: *mut nmod_mpoly_struct,
467 ctx: *mut nmod_mpoly_ctx_struct,
468 );
469}
470extern "C" {
471 pub fn nmod_mpoly_get_coeff_ui_monomial(
472 A: *mut nmod_mpoly_struct,
473 M: *mut nmod_mpoly_struct,
474 ctx: *mut nmod_mpoly_ctx_struct,
475 ) -> mp_limb_t;
476}
477extern "C" {
478 pub fn nmod_mpoly_set_coeff_ui_monomial(
479 A: *mut nmod_mpoly_struct,
480 c: mp_limb_t,
481 M: *mut nmod_mpoly_struct,
482 ctx: *mut nmod_mpoly_ctx_struct,
483 );
484}
485extern "C" {
486 pub fn nmod_mpoly_get_coeff_ui_fmpz(
487 A: *mut nmod_mpoly_struct,
488 exp: *const *mut fmpz,
489 ctx: *mut nmod_mpoly_ctx_struct,
490 ) -> mp_limb_t;
491}
492extern "C" {
493 pub fn nmod_mpoly_get_coeff_ui_ui(
494 A: *mut nmod_mpoly_struct,
495 exp: *const mp_limb_t,
496 ctx: *mut nmod_mpoly_ctx_struct,
497 ) -> mp_limb_t;
498}
499extern "C" {
500 pub fn _nmod_mpoly_set_coeff_ui_fmpz(
501 A: *mut nmod_mpoly_struct,
502 c: mp_limb_t,
503 exp: *const fmpz,
504 ctx: *mut nmod_mpoly_ctx_struct,
505 );
506}
507extern "C" {
508 pub fn nmod_mpoly_set_coeff_ui_fmpz(
509 A: *mut nmod_mpoly_struct,
510 c: mp_limb_t,
511 exp: *const *mut fmpz,
512 ctx: *mut nmod_mpoly_ctx_struct,
513 );
514}
515extern "C" {
516 pub fn nmod_mpoly_set_coeff_ui_ui(
517 A: *mut nmod_mpoly_struct,
518 c: mp_limb_t,
519 exp: *const mp_limb_t,
520 ctx: *mut nmod_mpoly_ctx_struct,
521 );
522}
523extern "C" {
524 pub fn nmod_mpoly_get_coeff_vars_ui(
525 C: *mut nmod_mpoly_struct,
526 A: *mut nmod_mpoly_struct,
527 vars: *const mp_limb_signed_t,
528 exps: *const mp_limb_t,
529 length: mp_limb_signed_t,
530 ctx: *mut nmod_mpoly_ctx_struct,
531 );
532}
533extern "C" {
534 pub fn nmod_mpoly_leadcoeff(
535 A: *mut nmod_mpoly_struct,
536 ctx: *mut nmod_mpoly_ctx_struct,
537 ) -> mp_limb_t;
538}
539extern "C" {
540 pub fn nmod_mpoly_is_nmod_poly(
541 A: *mut nmod_mpoly_struct,
542 var: mp_limb_signed_t,
543 ctx: *mut nmod_mpoly_ctx_struct,
544 ) -> c_int;
545}
546extern "C" {
547 pub fn nmod_mpoly_get_n_poly(
548 A: *mut n_poly_struct,
549 B: *mut nmod_mpoly_struct,
550 var: mp_limb_signed_t,
551 ctx: *mut nmod_mpoly_ctx_struct,
552 ) -> c_int;
553}
554extern "C" {
555 pub fn nmod_mpoly_get_nmod_poly(
556 A: *mut nmod_poly_struct,
557 B: *mut nmod_mpoly_struct,
558 var: mp_limb_signed_t,
559 ctx: *mut nmod_mpoly_ctx_struct,
560 ) -> c_int;
561}
562extern "C" {
563 pub fn _nmod_mpoly_set_nmod_poly(
564 A: *mut nmod_mpoly_struct,
565 Abits: mp_limb_t,
566 Bcoeffs: *const mp_limb_t,
567 Blen: mp_limb_signed_t,
568 var: mp_limb_signed_t,
569 ctx: *mut nmod_mpoly_ctx_struct,
570 );
571}
572extern "C" {
573 pub fn nmod_mpoly_set_n_poly_mod(
574 A: *mut nmod_mpoly_struct,
575 B: *mut n_poly_struct,
576 var: mp_limb_signed_t,
577 ctx: *mut nmod_mpoly_ctx_struct,
578 );
579}
580extern "C" {
581 pub fn nmod_mpoly_set_nmod_poly(
582 A: *mut nmod_mpoly_struct,
583 B: *mut nmod_poly_struct,
584 var: mp_limb_signed_t,
585 ctx: *mut nmod_mpoly_ctx_struct,
586 );
587}
588extern "C" {
589 pub fn nmod_mpoly_cmp(
590 A: *mut nmod_mpoly_struct,
591 B: *mut nmod_mpoly_struct,
592 ctx: *mut nmod_mpoly_ctx_struct,
593 ) -> c_int;
594}
595extern "C" {
596 pub fn nmod_mpoly_is_canonical(
597 A: *mut nmod_mpoly_struct,
598 ctx: *mut nmod_mpoly_ctx_struct,
599 ) -> c_int;
600}
601extern "C" {
602 pub fn nmod_mpoly_length(
603 A: *mut nmod_mpoly_struct,
604 ctx: *mut nmod_mpoly_ctx_struct,
605 ) -> mp_limb_signed_t;
606}
607extern "C" {
608 pub fn nmod_mpoly_resize(
609 A: *mut nmod_mpoly_struct,
610 new_length: mp_limb_signed_t,
611 ctx: *mut nmod_mpoly_ctx_struct,
612 );
613}
614extern "C" {
615 pub fn nmod_mpoly_get_term_coeff_ui(
616 A: *mut nmod_mpoly_struct,
617 i: mp_limb_signed_t,
618 ctx: *mut nmod_mpoly_ctx_struct,
619 ) -> mp_limb_t;
620}
621extern "C" {
622 pub fn nmod_mpoly_set_term_coeff_ui(
623 A: *mut nmod_mpoly_struct,
624 i: mp_limb_signed_t,
625 c: mp_limb_t,
626 ctx: *mut nmod_mpoly_ctx_struct,
627 );
628}
629extern "C" {
630 pub fn nmod_mpoly_term_exp_fits_ui(
631 A: *mut nmod_mpoly_struct,
632 i: mp_limb_signed_t,
633 ctx: *mut nmod_mpoly_ctx_struct,
634 ) -> c_int;
635}
636extern "C" {
637 pub fn nmod_mpoly_term_exp_fits_si(
638 A: *mut nmod_mpoly_struct,
639 i: mp_limb_signed_t,
640 ctx: *mut nmod_mpoly_ctx_struct,
641 ) -> c_int;
642}
643extern "C" {
644 pub fn nmod_mpoly_get_term_exp_fmpz(
645 exp: *mut *mut fmpz,
646 A: *mut nmod_mpoly_struct,
647 i: mp_limb_signed_t,
648 ctx: *mut nmod_mpoly_ctx_struct,
649 );
650}
651extern "C" {
652 pub fn nmod_mpoly_get_term_exp_ui(
653 exp: *mut mp_limb_t,
654 A: *mut nmod_mpoly_struct,
655 i: mp_limb_signed_t,
656 ctx: *mut nmod_mpoly_ctx_struct,
657 );
658}
659extern "C" {
660 pub fn nmod_mpoly_get_term_exp_si(
661 exp: *mut mp_limb_signed_t,
662 A: *mut nmod_mpoly_struct,
663 i: mp_limb_signed_t,
664 ctx: *mut nmod_mpoly_ctx_struct,
665 );
666}
667extern "C" {
668 pub fn nmod_mpoly_get_term_var_exp_ui(
669 A: *mut nmod_mpoly_struct,
670 i: mp_limb_signed_t,
671 var: mp_limb_signed_t,
672 ctx: *mut nmod_mpoly_ctx_struct,
673 ) -> mp_limb_t;
674}
675extern "C" {
676 pub fn nmod_mpoly_get_term_var_exp_si(
677 A: *mut nmod_mpoly_struct,
678 i: mp_limb_signed_t,
679 var: mp_limb_signed_t,
680 ctx: *mut nmod_mpoly_ctx_struct,
681 ) -> mp_limb_signed_t;
682}
683extern "C" {
684 pub fn nmod_mpoly_set_term_exp_fmpz(
685 A: *mut nmod_mpoly_struct,
686 i: mp_limb_signed_t,
687 exp: *const *mut fmpz,
688 ctx: *mut nmod_mpoly_ctx_struct,
689 );
690}
691extern "C" {
692 pub fn nmod_mpoly_set_term_exp_ui(
693 A: *mut nmod_mpoly_struct,
694 i: mp_limb_signed_t,
695 exp: *const mp_limb_t,
696 ctx: *mut nmod_mpoly_ctx_struct,
697 );
698}
699extern "C" {
700 pub fn nmod_mpoly_get_term(
701 M: *mut nmod_mpoly_struct,
702 A: *mut nmod_mpoly_struct,
703 i: mp_limb_signed_t,
704 ctx: *mut nmod_mpoly_ctx_struct,
705 );
706}
707extern "C" {
708 pub fn nmod_mpoly_get_term_monomial(
709 M: *mut nmod_mpoly_struct,
710 A: *mut nmod_mpoly_struct,
711 i: mp_limb_signed_t,
712 ctx: *mut nmod_mpoly_ctx_struct,
713 );
714}
715extern "C" {
716 pub fn nmod_mpoly_push_term_ui_fmpz(
717 A: *mut nmod_mpoly_struct,
718 c: mp_limb_t,
719 exp: *const *mut fmpz,
720 ctx: *mut nmod_mpoly_ctx_struct,
721 );
722}
723extern "C" {
724 pub fn nmod_mpoly_push_term_ui_ui(
725 A: *mut nmod_mpoly_struct,
726 c: mp_limb_t,
727 exp: *const mp_limb_t,
728 ctx: *mut nmod_mpoly_ctx_struct,
729 );
730}
731extern "C" {
732 pub fn nmod_mpoly_sort_terms(A: *mut nmod_mpoly_struct, ctx: *mut nmod_mpoly_ctx_struct);
733}
734extern "C" {
735 pub fn nmod_mpoly_combine_like_terms(
736 A: *mut nmod_mpoly_struct,
737 ctx: *mut nmod_mpoly_ctx_struct,
738 );
739}
740extern "C" {
741 pub fn nmod_mpoly_reverse(
742 A: *mut nmod_mpoly_struct,
743 B: *mut nmod_mpoly_struct,
744 ctx: *mut nmod_mpoly_ctx_struct,
745 );
746}
747extern "C" {
748 pub fn nmod_mpoly_assert_canonical(A: *mut nmod_mpoly_struct, ctx: *mut nmod_mpoly_ctx_struct);
749}
750extern "C" {
751 pub fn _nmod_mpoly_radix_sort1(
752 A: *mut nmod_mpoly_struct,
753 left: mp_limb_signed_t,
754 right: mp_limb_signed_t,
755 pos: mp_limb_t,
756 cmpmask: mp_limb_t,
757 totalmask: mp_limb_t,
758 );
759}
760extern "C" {
761 pub fn _nmod_mpoly_radix_sort(
762 A: *mut nmod_mpoly_struct,
763 left: mp_limb_signed_t,
764 right: mp_limb_signed_t,
765 pos: mp_limb_t,
766 N: mp_limb_signed_t,
767 cmpmask: *mut mp_limb_t,
768 );
769}
770extern "C" {
771 pub fn _nmod_mpoly_push_exp_ffmpz(
772 A: *mut nmod_mpoly_struct,
773 exp: *const fmpz,
774 ctx: *mut nmod_mpoly_ctx_struct,
775 );
776}
777extern "C" {
778 pub fn _nmod_mpoly_push_exp_pfmpz(
779 A: *mut nmod_mpoly_struct,
780 exp: *const *mut fmpz,
781 ctx: *mut nmod_mpoly_ctx_struct,
782 );
783}
784extern "C" {
785 pub fn _nmod_mpoly_push_exp_ui(
786 A: *mut nmod_mpoly_struct,
787 exp: *const mp_limb_t,
788 ctx: *mut nmod_mpoly_ctx_struct,
789 );
790}
791extern "C" {
792 pub fn nmod_mpoly_randtest_bounds(
793 A: *mut nmod_mpoly_struct,
794 state: *mut flint_rand_s,
795 length: mp_limb_signed_t,
796 exp_bounds: *mut mp_limb_t,
797 ctx: *mut nmod_mpoly_ctx_struct,
798 );
799}
800extern "C" {
801 pub fn nmod_mpoly_randtest_bound(
802 A: *mut nmod_mpoly_struct,
803 state: *mut flint_rand_s,
804 length: mp_limb_signed_t,
805 exp_bound: mp_limb_t,
806 ctx: *mut nmod_mpoly_ctx_struct,
807 );
808}
809extern "C" {
810 pub fn nmod_mpoly_randtest_bits(
811 A: *mut nmod_mpoly_struct,
812 state: *mut flint_rand_s,
813 length: mp_limb_signed_t,
814 exp_bits: mp_limb_t,
815 ctx: *mut nmod_mpoly_ctx_struct,
816 );
817}
818extern "C" {
819 pub fn _nmod_mpoly_get_term_ui_fmpz(
820 poly: *mut nmod_mpoly_struct,
821 exp: *const fmpz,
822 ctx: *mut nmod_mpoly_ctx_struct,
823 ) -> mp_limb_t;
824}
825extern "C" {
826 pub fn nmod_mpoly_get_term_ui_fmpz(
827 poly: *mut nmod_mpoly_struct,
828 exp: *const *mut fmpz,
829 ctx: *mut nmod_mpoly_ctx_struct,
830 ) -> mp_limb_t;
831}
832extern "C" {
833 pub fn nmod_mpoly_get_term_ui_ui(
834 poly: *mut nmod_mpoly_struct,
835 exp: *const mp_limb_t,
836 ctx: *mut nmod_mpoly_ctx_struct,
837 ) -> mp_limb_t;
838}
839extern "C" {
840 pub fn _nmod_mpoly_max_degrees(
841 max_degs: *mut mp_limb_t,
842 exps: *const mp_limb_t,
843 len: mp_limb_signed_t,
844 bits: mp_limb_signed_t,
845 n: mp_limb_signed_t,
846 deg: c_int,
847 rev: c_int,
848 N: mp_limb_signed_t,
849 );
850}
851extern "C" {
852 pub fn nmod_mpoly_max_degrees(
853 max_degs: *mut mp_limb_t,
854 poly: *mut nmod_mpoly_struct,
855 ctx: *mut nmod_mpoly_ctx_struct,
856 );
857}
858extern "C" {
859 pub fn nmod_mpoly_set_nmod(
860 poly: *mut nmod_mpoly_struct,
861 c: nmod_t,
862 ctx: *mut nmod_mpoly_ctx_struct,
863 );
864}
865extern "C" {
866 pub fn nmod_mpoly_get_coeff_ui(
867 x: nmod_t,
868 poly: *mut nmod_mpoly_struct,
869 n: mp_limb_signed_t,
870 ctx: *mut nmod_mpoly_ctx_struct,
871 ) -> mp_limb_t;
872}
873extern "C" {
874 pub fn nmod_mpoly_set_coeff_ui(
875 poly: *mut nmod_mpoly_struct,
876 n: mp_limb_signed_t,
877 x: mp_limb_t,
878 ctx: *mut nmod_mpoly_ctx_struct,
879 );
880}
881extern "C" {
882 pub fn nmod_mpoly_get_monomial(
883 exps: *mut mp_limb_t,
884 poly: *mut nmod_mpoly_struct,
885 n: mp_limb_signed_t,
886 ctx: *mut nmod_mpoly_ctx_struct,
887 );
888}
889extern "C" {
890 pub fn nmod_mpoly_set_monomial(
891 poly: *mut nmod_mpoly_struct,
892 n: mp_limb_signed_t,
893 exps: *const mp_limb_t,
894 ctx: *mut nmod_mpoly_ctx_struct,
895 );
896}
897extern "C" {
898 pub fn nmod_mpoly_add_ui(
899 A: *mut nmod_mpoly_struct,
900 B: *mut nmod_mpoly_struct,
901 c: mp_limb_t,
902 ctx: *mut nmod_mpoly_ctx_struct,
903 );
904}
905extern "C" {
906 pub fn nmod_mpoly_sub_ui(
907 A: *mut nmod_mpoly_struct,
908 B: *mut nmod_mpoly_struct,
909 c: mp_limb_t,
910 ctx: *mut nmod_mpoly_ctx_struct,
911 );
912}
913extern "C" {
914 pub fn nmod_mpoly_add(
915 A: *mut nmod_mpoly_struct,
916 B: *mut nmod_mpoly_struct,
917 C: *mut nmod_mpoly_struct,
918 ctx: *mut nmod_mpoly_ctx_struct,
919 );
920}
921extern "C" {
922 pub fn nmod_mpoly_sub(
923 A: *mut nmod_mpoly_struct,
924 B: *mut nmod_mpoly_struct,
925 C: *mut nmod_mpoly_struct,
926 ctx: *mut nmod_mpoly_ctx_struct,
927 );
928}
929extern "C" {
930 pub fn _nmod_mpoly_add(
931 coeff1: *mut mp_limb_t,
932 exp1: *mut mp_limb_t,
933 coeff2: *const mp_limb_t,
934 exp2: *const mp_limb_t,
935 len2: mp_limb_signed_t,
936 coeff3: *const mp_limb_t,
937 exp3: *const mp_limb_t,
938 len3: mp_limb_signed_t,
939 N: mp_limb_signed_t,
940 cmpmask: *const mp_limb_t,
941 fctx: nmod_t,
942 ) -> mp_limb_signed_t;
943}
944extern "C" {
945 pub fn _nmod_mpoly_sub(
946 coeff1: *mut mp_limb_t,
947 exp1: *mut mp_limb_t,
948 coeff2: *const mp_limb_t,
949 exp2: *const mp_limb_t,
950 len2: mp_limb_signed_t,
951 coeff3: *const mp_limb_t,
952 exp3: *const mp_limb_t,
953 len3: mp_limb_signed_t,
954 N: mp_limb_signed_t,
955 cmpmask: *const mp_limb_t,
956 fctx: nmod_t,
957 ) -> mp_limb_signed_t;
958}
959extern "C" {
960 pub fn nmod_mpoly_neg(
961 A: *mut nmod_mpoly_struct,
962 B: *mut nmod_mpoly_struct,
963 ctx: *mut nmod_mpoly_ctx_struct,
964 );
965}
966extern "C" {
967 pub fn nmod_mpoly_scalar_mul_ui(
968 A: *mut nmod_mpoly_struct,
969 B: *mut nmod_mpoly_struct,
970 c: mp_limb_t,
971 ctx: *mut nmod_mpoly_ctx_struct,
972 );
973}
974extern "C" {
975 pub fn nmod_mpoly_make_monic(
976 A: *mut nmod_mpoly_struct,
977 B: *mut nmod_mpoly_struct,
978 ctx: *mut nmod_mpoly_ctx_struct,
979 );
980}
981extern "C" {
982 pub fn nmod_mpoly_scalar_mul_nmod_invertible(
983 A: *mut nmod_mpoly_struct,
984 B: *mut nmod_mpoly_struct,
985 c: mp_limb_t,
986 ctx: *mut nmod_mpoly_ctx_struct,
987 );
988}
989extern "C" {
990 pub fn nmod_mpoly_scalar_addmul_ui(
991 A: *mut nmod_mpoly_struct,
992 B: *mut nmod_mpoly_struct,
993 C: *mut nmod_mpoly_struct,
994 d: mp_limb_t,
995 ctx: *mut nmod_mpoly_ctx_struct,
996 );
997}
998extern "C" {
999 pub fn nmod_mpoly_derivative(
1000 A: *mut nmod_mpoly_struct,
1001 B: *mut nmod_mpoly_struct,
1002 var: mp_limb_signed_t,
1003 ctx: *mut nmod_mpoly_ctx_struct,
1004 );
1005}
1006extern "C" {
1007 pub fn _ff_poly_pow_fmpz_is_not_feasible(length: mp_limb_signed_t, e: *mut fmpz) -> c_int;
1008}
1009extern "C" {
1010 pub fn _ff_poly_pow_ui_is_not_feasible(length: mp_limb_signed_t, e: mp_limb_t) -> c_int;
1011}
1012extern "C" {
1013 pub fn _nmod_mpoly_eval_all_ui(
1014 Acoeffs: *const mp_limb_t,
1015 Aexps: *const mp_limb_t,
1016 Alen: mp_limb_signed_t,
1017 Abits: mp_limb_t,
1018 alphas: *const mp_limb_t,
1019 mctx: *mut mpoly_ctx_struct,
1020 mod_: nmod_t,
1021 ) -> mp_limb_t;
1022}
1023extern "C" {
1024 pub fn nmod_mpoly_evaluate_all_ui(
1025 A: *mut nmod_mpoly_struct,
1026 vals: *const mp_limb_t,
1027 ctx: *mut nmod_mpoly_ctx_struct,
1028 ) -> mp_limb_t;
1029}
1030extern "C" {
1031 pub fn nmod_mpoly_evaluate_one_ui(
1032 A: *mut nmod_mpoly_struct,
1033 B: *mut nmod_mpoly_struct,
1034 var: mp_limb_signed_t,
1035 val: mp_limb_t,
1036 ctx: *mut nmod_mpoly_ctx_struct,
1037 );
1038}
1039extern "C" {
1040 pub fn nmod_mpoly_compose_nmod_poly(
1041 A: *mut nmod_poly_struct,
1042 B: *mut nmod_mpoly_struct,
1043 C: *const *mut nmod_poly_struct,
1044 ctx: *mut nmod_mpoly_ctx_struct,
1045 ) -> c_int;
1046}
1047extern "C" {
1048 pub fn _nmod_mpoly_compose_mat(
1049 A: *mut nmod_mpoly_struct,
1050 B: *mut nmod_mpoly_struct,
1051 M: *mut fmpz_mat_struct,
1052 ctxB: *mut nmod_mpoly_ctx_struct,
1053 ctxAC: *mut nmod_mpoly_ctx_struct,
1054 );
1055}
1056extern "C" {
1057 pub fn nmod_mpoly_compose_nmod_mpoly_geobucket(
1058 A: *mut nmod_mpoly_struct,
1059 B: *mut nmod_mpoly_struct,
1060 C: *const *mut nmod_mpoly_struct,
1061 ctxB: *mut nmod_mpoly_ctx_struct,
1062 ctxAC: *mut nmod_mpoly_ctx_struct,
1063 ) -> c_int;
1064}
1065extern "C" {
1066 pub fn nmod_mpoly_compose_nmod_mpoly_horner(
1067 A: *mut nmod_mpoly_struct,
1068 B: *mut nmod_mpoly_struct,
1069 C: *const *mut nmod_mpoly_struct,
1070 ctxB: *mut nmod_mpoly_ctx_struct,
1071 ctxAC: *mut nmod_mpoly_ctx_struct,
1072 ) -> c_int;
1073}
1074extern "C" {
1075 pub fn nmod_mpoly_compose_nmod_mpoly(
1076 A: *mut nmod_mpoly_struct,
1077 B: *mut nmod_mpoly_struct,
1078 C: *const *mut nmod_mpoly_struct,
1079 ctxB: *mut nmod_mpoly_ctx_struct,
1080 ctxAC: *mut nmod_mpoly_ctx_struct,
1081 ) -> c_int;
1082}
1083extern "C" {
1084 pub fn nmod_mpoly_compose_nmod_mpoly_gen(
1085 A: *mut nmod_mpoly_struct,
1086 B: *mut nmod_mpoly_struct,
1087 c: *const mp_limb_signed_t,
1088 ctxB: *mut nmod_mpoly_ctx_struct,
1089 ctxAC: *mut nmod_mpoly_ctx_struct,
1090 );
1091}
1092extern "C" {
1093 pub fn nmod_mpoly_mul(
1094 A: *mut nmod_mpoly_struct,
1095 B: *mut nmod_mpoly_struct,
1096 C: *mut nmod_mpoly_struct,
1097 ctx: *mut nmod_mpoly_ctx_struct,
1098 );
1099}
1100extern "C" {
1101 pub fn nmod_mpoly_mul_johnson(
1102 A: *mut nmod_mpoly_struct,
1103 B: *mut nmod_mpoly_struct,
1104 C: *mut nmod_mpoly_struct,
1105 ctx: *mut nmod_mpoly_ctx_struct,
1106 );
1107}
1108extern "C" {
1109 pub fn nmod_mpoly_mul_heap_threaded(
1110 A: *mut nmod_mpoly_struct,
1111 B: *mut nmod_mpoly_struct,
1112 C: *mut nmod_mpoly_struct,
1113 ctx: *mut nmod_mpoly_ctx_struct,
1114 );
1115}
1116extern "C" {
1117 pub fn nmod_mpoly_mul_array(
1118 A: *mut nmod_mpoly_struct,
1119 B: *mut nmod_mpoly_struct,
1120 C: *mut nmod_mpoly_struct,
1121 ctx: *mut nmod_mpoly_ctx_struct,
1122 ) -> c_int;
1123}
1124extern "C" {
1125 pub fn nmod_mpoly_mul_array_threaded(
1126 A: *mut nmod_mpoly_struct,
1127 B: *mut nmod_mpoly_struct,
1128 C: *mut nmod_mpoly_struct,
1129 ctx: *mut nmod_mpoly_ctx_struct,
1130 ) -> c_int;
1131}
1132extern "C" {
1133 pub fn nmod_mpoly_mul_dense(
1134 A: *mut nmod_mpoly_struct,
1135 B: *mut nmod_mpoly_struct,
1136 C: *mut nmod_mpoly_struct,
1137 ctx: *mut nmod_mpoly_ctx_struct,
1138 ) -> c_int;
1139}
1140extern "C" {
1141 pub fn _nmod_mpoly_mul_johnson(
1142 A: *mut nmod_mpoly_struct,
1143 coeff2: *const mp_limb_t,
1144 exp2: *const mp_limb_t,
1145 len2: mp_limb_signed_t,
1146 coeff3: *const mp_limb_t,
1147 exp3: *const mp_limb_t,
1148 len3: mp_limb_signed_t,
1149 bits: mp_limb_t,
1150 N: mp_limb_signed_t,
1151 cmpmask: *const mp_limb_t,
1152 fctx: nmod_t,
1153 ) -> mp_limb_signed_t;
1154}
1155extern "C" {
1156 pub fn _nmod_mpoly_mul_johnson_maxfields(
1157 A: *mut nmod_mpoly_struct,
1158 B: *mut nmod_mpoly_struct,
1159 maxBfields: *mut fmpz,
1160 C: *mut nmod_mpoly_struct,
1161 maxCfields: *mut fmpz,
1162 ctx: *mut nmod_mpoly_ctx_struct,
1163 );
1164}
1165extern "C" {
1166 pub fn _nmod_mpoly_mul_heap_threaded_pool_maxfields(
1167 A: *mut nmod_mpoly_struct,
1168 B: *mut nmod_mpoly_struct,
1169 maxBfields: *mut fmpz,
1170 C: *mut nmod_mpoly_struct,
1171 maxCfields: *mut fmpz,
1172 ctx: *mut nmod_mpoly_ctx_struct,
1173 handles: *const thread_pool_handle,
1174 num_handles: mp_limb_signed_t,
1175 );
1176}
1177extern "C" {
1178 pub fn _nmod_mpoly_mul_array_DEG(
1179 A: *mut nmod_mpoly_struct,
1180 B: *mut nmod_mpoly_struct,
1181 maxBfields: *mut fmpz,
1182 C: *mut nmod_mpoly_struct,
1183 maxCfields: *mut fmpz,
1184 ctx: *mut nmod_mpoly_ctx_struct,
1185 ) -> c_int;
1186}
1187extern "C" {
1188 pub fn _nmod_mpoly_mul_array_LEX(
1189 A: *mut nmod_mpoly_struct,
1190 B: *mut nmod_mpoly_struct,
1191 maxBfields: *mut fmpz,
1192 C: *mut nmod_mpoly_struct,
1193 maxCfields: *mut fmpz,
1194 ctx: *mut nmod_mpoly_ctx_struct,
1195 ) -> c_int;
1196}
1197extern "C" {
1198 pub fn _nmod_mpoly_mul_array_threaded_pool_DEG(
1199 A: *mut nmod_mpoly_struct,
1200 B: *mut nmod_mpoly_struct,
1201 maxBfields: *mut fmpz,
1202 C: *mut nmod_mpoly_struct,
1203 maxCfields: *mut fmpz,
1204 ctx: *mut nmod_mpoly_ctx_struct,
1205 handles: *const thread_pool_handle,
1206 num_handles: mp_limb_signed_t,
1207 ) -> c_int;
1208}
1209extern "C" {
1210 pub fn _nmod_mpoly_mul_array_threaded_pool_LEX(
1211 A: *mut nmod_mpoly_struct,
1212 B: *mut nmod_mpoly_struct,
1213 maxBfields: *mut fmpz,
1214 C: *mut nmod_mpoly_struct,
1215 maxCfields: *mut fmpz,
1216 ctx: *mut nmod_mpoly_ctx_struct,
1217 handles: *const thread_pool_handle,
1218 num_handles: mp_limb_signed_t,
1219 ) -> c_int;
1220}
1221extern "C" {
1222 pub fn _nmod_mpoly_mul_dense(
1223 P: *mut nmod_mpoly_struct,
1224 A: *mut nmod_mpoly_struct,
1225 maxAfields: *mut fmpz,
1226 B: *mut nmod_mpoly_struct,
1227 maxBfields: *mut fmpz,
1228 ctx: *mut nmod_mpoly_ctx_struct,
1229 ) -> c_int;
1230}
1231extern "C" {
1232 pub fn _nmod_mpoly_pow_rmul(
1233 A: *mut nmod_mpoly_struct,
1234 Bcoeffs: *const mp_limb_t,
1235 Bexps: *const mp_limb_t,
1236 Blen: mp_limb_signed_t,
1237 k: mp_limb_t,
1238 N: mp_limb_signed_t,
1239 cmpmask: *const mp_limb_t,
1240 mod_: nmod_t,
1241 T: *mut nmod_mpoly_struct,
1242 );
1243}
1244extern "C" {
1245 pub fn nmod_mpoly_pow_rmul(
1246 A: *mut nmod_mpoly_struct,
1247 B: *mut nmod_mpoly_struct,
1248 k: mp_limb_t,
1249 ctx: *mut nmod_mpoly_ctx_struct,
1250 );
1251}
1252extern "C" {
1253 pub fn nmod_mpoly_pow_fmpz(
1254 A: *mut nmod_mpoly_struct,
1255 B: *mut nmod_mpoly_struct,
1256 k: *mut fmpz,
1257 ctx: *mut nmod_mpoly_ctx_struct,
1258 ) -> c_int;
1259}
1260extern "C" {
1261 pub fn nmod_mpoly_pow_ui(
1262 A: *mut nmod_mpoly_struct,
1263 B: *mut nmod_mpoly_struct,
1264 k: mp_limb_t,
1265 ctx: *mut nmod_mpoly_ctx_struct,
1266 ) -> c_int;
1267}
1268extern "C" {
1269 pub fn nmod_mpoly_divides(
1270 Q: *mut nmod_mpoly_struct,
1271 A: *mut nmod_mpoly_struct,
1272 B: *mut nmod_mpoly_struct,
1273 ctx: *mut nmod_mpoly_ctx_struct,
1274 ) -> c_int;
1275}
1276extern "C" {
1277 pub fn _nmod_mpoly_divides_threaded_pool(
1278 Q: *mut nmod_mpoly_struct,
1279 A: *mut nmod_mpoly_struct,
1280 B: *mut nmod_mpoly_struct,
1281 ctx: *mut nmod_mpoly_ctx_struct,
1282 handles: *const thread_pool_handle,
1283 num_handles: mp_limb_signed_t,
1284 ) -> c_int;
1285}
1286extern "C" {
1287 pub fn nmod_mpoly_divides_monagan_pearce(
1288 Q: *mut nmod_mpoly_struct,
1289 A: *mut nmod_mpoly_struct,
1290 B: *mut nmod_mpoly_struct,
1291 ctx: *mut nmod_mpoly_ctx_struct,
1292 ) -> c_int;
1293}
1294extern "C" {
1295 pub fn nmod_mpoly_divides_heap_threaded(
1296 Q: *mut nmod_mpoly_struct,
1297 A: *mut nmod_mpoly_struct,
1298 B: *mut nmod_mpoly_struct,
1299 ctx: *mut nmod_mpoly_ctx_struct,
1300 ) -> c_int;
1301}
1302extern "C" {
1303 pub fn _nmod_mpoly_divides_heap_threaded_pool(
1304 Q: *mut nmod_mpoly_struct,
1305 A: *mut nmod_mpoly_struct,
1306 B: *mut nmod_mpoly_struct,
1307 ctx: *mut nmod_mpoly_ctx_struct,
1308 handles: *const thread_pool_handle,
1309 num_handles: mp_limb_signed_t,
1310 ) -> c_int;
1311}
1312extern "C" {
1313 pub fn nmod_mpoly_divides_dense(
1314 Q: *mut nmod_mpoly_struct,
1315 A: *mut nmod_mpoly_struct,
1316 B: *mut nmod_mpoly_struct,
1317 ctx: *mut nmod_mpoly_ctx_struct,
1318 ) -> c_int;
1319}
1320extern "C" {
1321 pub fn nmod_mpoly_div(
1322 Q: *mut nmod_mpoly_struct,
1323 A: *mut nmod_mpoly_struct,
1324 B: *mut nmod_mpoly_struct,
1325 ctx: *mut nmod_mpoly_ctx_struct,
1326 );
1327}
1328extern "C" {
1329 pub fn nmod_mpoly_divrem(
1330 Q: *mut nmod_mpoly_struct,
1331 R: *mut nmod_mpoly_struct,
1332 A: *mut nmod_mpoly_struct,
1333 B: *mut nmod_mpoly_struct,
1334 ctx: *mut nmod_mpoly_ctx_struct,
1335 );
1336}
1337extern "C" {
1338 pub fn nmod_mpoly_divrem_ideal(
1339 Q: *mut *mut nmod_mpoly_struct,
1340 R: *mut nmod_mpoly_struct,
1341 A: *mut nmod_mpoly_struct,
1342 B: *const *mut nmod_mpoly_struct,
1343 len: mp_limb_signed_t,
1344 ctx: *mut nmod_mpoly_ctx_struct,
1345 );
1346}
1347extern "C" {
1348 pub fn nmod_mpoly_divexact(
1349 Q: *mut nmod_mpoly_struct,
1350 A: *mut nmod_mpoly_struct,
1351 B: *mut nmod_mpoly_struct,
1352 ctx: *mut nmod_mpoly_ctx_struct,
1353 );
1354}
1355extern "C" {
1356 pub fn _nmod_mpoly_divides_monagan_pearce(
1357 Q: *mut nmod_mpoly_struct,
1358 coeff2: *const mp_limb_t,
1359 exp2: *const mp_limb_t,
1360 len2: mp_limb_signed_t,
1361 coeff3: *const mp_limb_t,
1362 exp3: *const mp_limb_t,
1363 len3: mp_limb_signed_t,
1364 bits: mp_limb_t,
1365 N: mp_limb_signed_t,
1366 cmpmask: *const mp_limb_t,
1367 fctx: nmod_t,
1368 ) -> c_int;
1369}
1370extern "C" {
1371 pub fn nmod_mpoly_div_monagan_pearce(
1372 Q: *mut nmod_mpoly_struct,
1373 A: *mut nmod_mpoly_struct,
1374 B: *mut nmod_mpoly_struct,
1375 ctx: *mut nmod_mpoly_ctx_struct,
1376 );
1377}
1378extern "C" {
1379 pub fn nmod_mpoly_divrem_monagan_pearce(
1380 q: *mut nmod_mpoly_struct,
1381 r: *mut nmod_mpoly_struct,
1382 poly2: *mut nmod_mpoly_struct,
1383 poly3: *mut nmod_mpoly_struct,
1384 ctx: *mut nmod_mpoly_ctx_struct,
1385 );
1386}
1387extern "C" {
1388 pub fn nmod_mpoly_divrem_ideal_monagan_pearce(
1389 Q: *mut *mut nmod_mpoly_struct,
1390 R: *mut nmod_mpoly_struct,
1391 A: *mut nmod_mpoly_struct,
1392 B: *const *mut nmod_mpoly_struct,
1393 len: mp_limb_signed_t,
1394 ctx: *mut nmod_mpoly_ctx_struct,
1395 );
1396}
1397extern "C" {
1398 pub fn nmod_mpoly_sqrt_heap(
1399 Q: *mut nmod_mpoly_struct,
1400 A: *mut nmod_mpoly_struct,
1401 ctx: *mut nmod_mpoly_ctx_struct,
1402 ) -> c_int;
1403}
1404extern "C" {
1405 pub fn nmod_mpoly_sqrt(
1406 Q: *mut nmod_mpoly_struct,
1407 A: *mut nmod_mpoly_struct,
1408 ctx: *mut nmod_mpoly_ctx_struct,
1409 ) -> c_int;
1410}
1411extern "C" {
1412 pub fn nmod_mpoly_is_square(
1413 A: *mut nmod_mpoly_struct,
1414 ctx: *mut nmod_mpoly_ctx_struct,
1415 ) -> c_int;
1416}
1417extern "C" {
1418 pub fn nmod_mpoly_quadratic_root(
1419 Q: *mut nmod_mpoly_struct,
1420 A: *mut nmod_mpoly_struct,
1421 B: *mut nmod_mpoly_struct,
1422 ctx: *mut nmod_mpoly_ctx_struct,
1423 ) -> c_int;
1424}
1425extern "C" {
1426 pub fn nmod_mpoly_term_content(
1427 M: *mut nmod_mpoly_struct,
1428 A: *mut nmod_mpoly_struct,
1429 ctx: *mut nmod_mpoly_ctx_struct,
1430 );
1431}
1432extern "C" {
1433 pub fn nmod_mpoly_content_vars(
1434 g: *mut nmod_mpoly_struct,
1435 A: *mut nmod_mpoly_struct,
1436 vars: *mut mp_limb_signed_t,
1437 vars_length: mp_limb_signed_t,
1438 ctx: *mut nmod_mpoly_ctx_struct,
1439 ) -> c_int;
1440}
1441extern "C" {
1442 pub fn nmod_mpoly_gcd(
1443 G: *mut nmod_mpoly_struct,
1444 A: *mut nmod_mpoly_struct,
1445 B: *mut nmod_mpoly_struct,
1446 ctx: *mut nmod_mpoly_ctx_struct,
1447 ) -> c_int;
1448}
1449extern "C" {
1450 pub fn _nmod_mpoly_gcd_algo_small(
1451 G: *mut nmod_mpoly_struct,
1452 Abar: *mut nmod_mpoly_struct,
1453 Bbar: *mut nmod_mpoly_struct,
1454 A: *mut nmod_mpoly_struct,
1455 B: *mut nmod_mpoly_struct,
1456 ctx: *mut nmod_mpoly_ctx_struct,
1457 algo: c_uint,
1458 ) -> c_int;
1459}
1460extern "C" {
1461 pub fn _nmod_mpoly_gcd_algo(
1462 G: *mut nmod_mpoly_struct,
1463 Abar: *mut nmod_mpoly_struct,
1464 Bbar: *mut nmod_mpoly_struct,
1465 A: *mut nmod_mpoly_struct,
1466 B: *mut nmod_mpoly_struct,
1467 ctx: *mut nmod_mpoly_ctx_struct,
1468 algo: c_uint,
1469 ) -> c_int;
1470}
1471extern "C" {
1472 pub fn nmod_mpoly_gcd_cofactors(
1473 G: *mut nmod_mpoly_struct,
1474 Abar: *mut nmod_mpoly_struct,
1475 Bbar: *mut nmod_mpoly_struct,
1476 A: *mut nmod_mpoly_struct,
1477 B: *mut nmod_mpoly_struct,
1478 ctx: *mut nmod_mpoly_ctx_struct,
1479 ) -> c_int;
1480}
1481extern "C" {
1482 pub fn nmod_mpoly_gcd_brown(
1483 G: *mut nmod_mpoly_struct,
1484 A: *mut nmod_mpoly_struct,
1485 B: *mut nmod_mpoly_struct,
1486 ctx: *mut nmod_mpoly_ctx_struct,
1487 ) -> c_int;
1488}
1489extern "C" {
1490 pub fn nmod_mpoly_gcd_hensel(
1491 G: *mut nmod_mpoly_struct,
1492 A: *mut nmod_mpoly_struct,
1493 B: *mut nmod_mpoly_struct,
1494 ctx: *mut nmod_mpoly_ctx_struct,
1495 ) -> c_int;
1496}
1497extern "C" {
1498 pub fn nmod_mpoly_gcd_zippel(
1499 G: *mut nmod_mpoly_struct,
1500 A: *mut nmod_mpoly_struct,
1501 B: *mut nmod_mpoly_struct,
1502 ctx: *mut nmod_mpoly_ctx_struct,
1503 ) -> c_int;
1504}
1505extern "C" {
1506 pub fn nmod_mpoly_gcd_zippel2(
1507 G: *mut nmod_mpoly_struct,
1508 A: *mut nmod_mpoly_struct,
1509 B: *mut nmod_mpoly_struct,
1510 ctx: *mut nmod_mpoly_ctx_struct,
1511 ) -> c_int;
1512}
1513extern "C" {
1514 pub fn nmod_mpoly_deflation(
1515 shift: *mut fmpz,
1516 stride: *mut fmpz,
1517 A: *mut nmod_mpoly_struct,
1518 ctx: *mut nmod_mpoly_ctx_struct,
1519 );
1520}
1521extern "C" {
1522 pub fn nmod_mpoly_deflate(
1523 A: *mut nmod_mpoly_struct,
1524 B: *mut nmod_mpoly_struct,
1525 shift: *const fmpz,
1526 stride: *const fmpz,
1527 ctx: *mut nmod_mpoly_ctx_struct,
1528 );
1529}
1530extern "C" {
1531 pub fn nmod_mpoly_inflate(
1532 A: *mut nmod_mpoly_struct,
1533 B: *mut nmod_mpoly_struct,
1534 shift: *const fmpz,
1535 stride: *const fmpz,
1536 ctx: *mut nmod_mpoly_ctx_struct,
1537 );
1538}
1539extern "C" {
1540 pub fn mpoly_void_ring_init_nmod_mpoly_ctx(
1541 R: *mut _bindgen_ty_22,
1542 ctx: *mut nmod_mpoly_ctx_struct,
1543 );
1544}
1545extern "C" {
1546 pub fn nmod_mpolyl_lead_coeff(
1547 c: *mut nmod_mpoly_struct,
1548 A: *mut nmod_mpoly_struct,
1549 num_vars: mp_limb_signed_t,
1550 ctx: *mut nmod_mpoly_ctx_struct,
1551 );
1552}
1553extern "C" {
1554 pub fn nmod_mpolyl_content(
1555 g: *mut nmod_mpoly_struct,
1556 A: *mut nmod_mpoly_struct,
1557 num_vars: mp_limb_signed_t,
1558 ctx: *mut nmod_mpoly_ctx_struct,
1559 ) -> c_int;
1560}
1561extern "C" {
1562 pub fn _nmod_mpoly_to_nmod_poly_deflate(
1563 A: *mut nmod_poly_struct,
1564 B: *mut nmod_mpoly_struct,
1565 var: mp_limb_signed_t,
1566 Bshift: *const mp_limb_t,
1567 Bstride: *const mp_limb_t,
1568 ctx: *mut nmod_mpoly_ctx_struct,
1569 );
1570}
1571extern "C" {
1572 pub fn _nmod_mpoly_from_nmod_poly_inflate(
1573 A: *mut nmod_mpoly_struct,
1574 Abits: mp_limb_t,
1575 B: *mut nmod_poly_struct,
1576 var: mp_limb_signed_t,
1577 Ashift: *const mp_limb_t,
1578 Astride: *const mp_limb_t,
1579 ctx: *mut nmod_mpoly_ctx_struct,
1580 );
1581}
1582extern "C" {
1583 pub fn nmod_mpoly_repack_bits(
1584 A: *mut nmod_mpoly_struct,
1585 B: *mut nmod_mpoly_struct,
1586 Abits: mp_limb_t,
1587 ctx: *mut nmod_mpoly_ctx_struct,
1588 ) -> c_int;
1589}
1590extern "C" {
1591 pub fn nmod_mpoly_repack_bits_inplace(
1592 A: *mut nmod_mpoly_struct,
1593 Abits: mp_limb_t,
1594 ctx: *mut nmod_mpoly_ctx_struct,
1595 ) -> c_int;
1596}
1597#[repr(C)]
1598#[derive(Debug, Copy, Clone)]
1599pub struct nmod_mpolyd_ctx_struct {
1600 pub nvars: mp_limb_signed_t,
1601 pub perm: *mut mp_limb_signed_t,
1602}
1603pub type nmod_mpolyd_ctx_t = [nmod_mpolyd_ctx_struct; 1usize];
1604#[repr(C)]
1605#[derive(Debug, Copy, Clone)]
1606pub struct _nmod_mpoly_stripe_struct {
1607 pub big_mem: *mut c_char,
1608 pub big_mem_alloc: mp_limb_signed_t,
1609 pub ctx: *const nmod_mpoly_ctx_struct,
1610 pub N: mp_limb_signed_t,
1611 pub bits: mp_limb_t,
1612 pub mod_: nmod_t,
1613 pub lc_minus_inv: mp_limb_t,
1614 pub cmpmask: *const mp_limb_t,
1615 pub startidx: *mut mp_limb_signed_t,
1616 pub endidx: *mut mp_limb_signed_t,
1617 pub emin: *mut mp_limb_t,
1618 pub emax: *mut mp_limb_t,
1619 pub upperclosed: c_int,
1620}
1621pub type nmod_mpoly_stripe_struct = _nmod_mpoly_stripe_struct;
1622pub type nmod_mpoly_stripe_t = [nmod_mpoly_stripe_struct; 1usize];
1623extern "C" {
1624 pub fn nmod_mpoly_univar_init(
1625 A: *mut nmod_mpoly_univar_struct,
1626 ctx: *mut nmod_mpoly_ctx_struct,
1627 );
1628}
1629extern "C" {
1630 pub fn nmod_mpoly_univar_clear(
1631 A: *mut nmod_mpoly_univar_struct,
1632 ctx: *mut nmod_mpoly_ctx_struct,
1633 );
1634}
1635extern "C" {
1636 pub fn nmod_mpoly_univar_fit_length(
1637 A: *mut nmod_mpoly_univar_struct,
1638 length: mp_limb_signed_t,
1639 ctx: *mut nmod_mpoly_ctx_struct,
1640 );
1641}
1642extern "C" {
1643 pub fn nmod_mpoly_univar_print_pretty(
1644 A: *mut nmod_mpoly_univar_struct,
1645 x: *mut *const c_char,
1646 ctx: *mut nmod_mpoly_ctx_struct,
1647 );
1648}
1649extern "C" {
1650 pub fn nmod_mpoly_univar_assert_canonical(
1651 A: *mut nmod_mpoly_univar_struct,
1652 ctx: *mut nmod_mpoly_ctx_struct,
1653 );
1654}
1655extern "C" {
1656 pub fn nmod_mpoly_univar_zero(
1657 A: *mut nmod_mpoly_univar_struct,
1658 ctx: *mut nmod_mpoly_ctx_struct,
1659 );
1660}
1661extern "C" {
1662 pub fn nmod_mpoly_univar_set_coeff_ui(
1663 A: *mut nmod_mpoly_univar_struct,
1664 e: mp_limb_t,
1665 c: *mut nmod_mpoly_struct,
1666 ctx: *mut nmod_mpoly_ctx_struct,
1667 );
1668}
1669extern "C" {
1670 pub fn nmod_mpoly_to_univar(
1671 A: *mut nmod_mpoly_univar_struct,
1672 B: *mut nmod_mpoly_struct,
1673 var: mp_limb_signed_t,
1674 ctx: *mut nmod_mpoly_ctx_struct,
1675 );
1676}
1677extern "C" {
1678 pub fn _nmod_mpoly_from_univar(
1679 A: *mut nmod_mpoly_struct,
1680 Abits: mp_limb_t,
1681 B: *mut nmod_mpoly_univar_struct,
1682 var: mp_limb_signed_t,
1683 ctx: *mut nmod_mpoly_ctx_struct,
1684 );
1685}
1686extern "C" {
1687 pub fn nmod_mpoly_from_univar(
1688 A: *mut nmod_mpoly_struct,
1689 B: *mut nmod_mpoly_univar_struct,
1690 var: mp_limb_signed_t,
1691 ctx: *mut nmod_mpoly_ctx_struct,
1692 );
1693}
1694extern "C" {
1695 pub fn nmod_mpoly_univar_swap(
1696 A: *mut nmod_mpoly_univar_struct,
1697 B: *mut nmod_mpoly_univar_struct,
1698 ctx: *mut nmod_mpoly_ctx_struct,
1699 );
1700}
1701extern "C" {
1702 pub fn nmod_mpoly_univar_degree_fits_si(
1703 A: *mut nmod_mpoly_univar_struct,
1704 ctx: *mut nmod_mpoly_ctx_struct,
1705 ) -> c_int;
1706}
1707extern "C" {
1708 pub fn nmod_mpoly_univar_length(
1709 A: *mut nmod_mpoly_univar_struct,
1710 ctx: *mut nmod_mpoly_ctx_struct,
1711 ) -> mp_limb_signed_t;
1712}
1713extern "C" {
1714 pub fn nmod_mpoly_univar_get_term_exp_si(
1715 A: *mut nmod_mpoly_univar_struct,
1716 i: mp_limb_signed_t,
1717 ctx: *mut nmod_mpoly_ctx_struct,
1718 ) -> mp_limb_signed_t;
1719}
1720extern "C" {
1721 pub fn nmod_mpoly_univar_get_term_coeff(
1722 c: *mut nmod_mpoly_struct,
1723 A: *mut nmod_mpoly_univar_struct,
1724 i: mp_limb_signed_t,
1725 ctx: *mut nmod_mpoly_ctx_struct,
1726 );
1727}
1728extern "C" {
1729 pub fn nmod_mpoly_univar_swap_term_coeff(
1730 c: *mut nmod_mpoly_struct,
1731 A: *mut nmod_mpoly_univar_struct,
1732 i: mp_limb_signed_t,
1733 ctx: *mut nmod_mpoly_ctx_struct,
1734 );
1735}
1736extern "C" {
1737 pub fn nmod_mpoly_univar_pseudo_gcd(
1738 Gx: *mut nmod_mpoly_univar_struct,
1739 Ax: *mut nmod_mpoly_univar_struct,
1740 Bx: *mut nmod_mpoly_univar_struct,
1741 ctx: *mut nmod_mpoly_ctx_struct,
1742 ) -> c_int;
1743}
1744extern "C" {
1745 pub fn nmod_mpoly_univar_resultant(
1746 R: *mut nmod_mpoly_struct,
1747 Ax: *mut nmod_mpoly_univar_struct,
1748 Bx: *mut nmod_mpoly_univar_struct,
1749 ctx: *mut nmod_mpoly_ctx_struct,
1750 ) -> c_int;
1751}
1752extern "C" {
1753 pub fn nmod_mpoly_univar_discriminant(
1754 D: *mut nmod_mpoly_struct,
1755 Fx: *mut nmod_mpoly_univar_struct,
1756 ctx: *mut nmod_mpoly_ctx_struct,
1757 ) -> c_int;
1758}
1759extern "C" {
1760 pub fn nmod_mpoly_resultant(
1761 R: *mut nmod_mpoly_struct,
1762 A: *mut nmod_mpoly_struct,
1763 B: *mut nmod_mpoly_struct,
1764 var: mp_limb_signed_t,
1765 ctx: *mut nmod_mpoly_ctx_struct,
1766 ) -> c_int;
1767}
1768extern "C" {
1769 pub fn nmod_mpoly_discriminant(
1770 R: *mut nmod_mpoly_struct,
1771 A: *mut nmod_mpoly_struct,
1772 var: mp_limb_signed_t,
1773 ctx: *mut nmod_mpoly_ctx_struct,
1774 ) -> c_int;
1775}
1776extern "C" {
1777 pub fn _nmod_mpoly_mul_array_chunked_LEX(
1778 P: *mut nmod_mpoly_struct,
1779 A: *mut nmod_mpoly_struct,
1780 B: *mut nmod_mpoly_struct,
1781 mults: *const mp_limb_t,
1782 ctx: *mut nmod_mpoly_ctx_struct,
1783 );
1784}
1785extern "C" {
1786 pub fn _nmod_mpoly_mul_array_chunked_DEG(
1787 P: *mut nmod_mpoly_struct,
1788 A: *mut nmod_mpoly_struct,
1789 B: *mut nmod_mpoly_struct,
1790 degb: mp_limb_t,
1791 ctx: *mut nmod_mpoly_ctx_struct,
1792 );
1793}
1794extern "C" {
1795 pub fn _nmod_mpoly_addmul_array1_ulong1(
1796 poly1: *mut mp_limb_t,
1797 poly2: *const mp_limb_t,
1798 exp2: *const mp_limb_t,
1799 len2: mp_limb_signed_t,
1800 poly3: *const mp_limb_t,
1801 exp3: *const mp_limb_t,
1802 len3: mp_limb_signed_t,
1803 );
1804}
1805extern "C" {
1806 pub fn _nmod_mpoly_addmul_array1_ulong2(
1807 poly1: *mut mp_limb_t,
1808 poly2: *const mp_limb_t,
1809 exp2: *const mp_limb_t,
1810 len2: mp_limb_signed_t,
1811 poly3: *const mp_limb_t,
1812 exp3: *const mp_limb_t,
1813 len3: mp_limb_signed_t,
1814 );
1815}
1816extern "C" {
1817 pub fn _nmod_mpoly_addmul_array1_ulong3(
1818 poly1: *mut mp_limb_t,
1819 poly2: *const mp_limb_t,
1820 exp2: *const mp_limb_t,
1821 len2: mp_limb_signed_t,
1822 poly3: *const mp_limb_t,
1823 exp3: *const mp_limb_t,
1824 len3: mp_limb_signed_t,
1825 );
1826}
1827extern "C" {
1828 pub fn nmod_mpoly_append_array_sm1_LEX(
1829 P: *mut nmod_mpoly_struct,
1830 Plen: mp_limb_signed_t,
1831 coeff_array: *mut mp_limb_t,
1832 mults: *const mp_limb_t,
1833 num: mp_limb_signed_t,
1834 array_size: mp_limb_signed_t,
1835 top: mp_limb_signed_t,
1836 ctx: *mut nmod_mpoly_ctx_struct,
1837 ) -> mp_limb_signed_t;
1838}
1839extern "C" {
1840 pub fn nmod_mpoly_append_array_sm2_LEX(
1841 P: *mut nmod_mpoly_struct,
1842 Plen: mp_limb_signed_t,
1843 coeff_array: *mut mp_limb_t,
1844 mults: *const mp_limb_t,
1845 num: mp_limb_signed_t,
1846 array_size: mp_limb_signed_t,
1847 top: mp_limb_signed_t,
1848 ctx: *mut nmod_mpoly_ctx_struct,
1849 ) -> mp_limb_signed_t;
1850}
1851extern "C" {
1852 pub fn nmod_mpoly_append_array_sm3_LEX(
1853 P: *mut nmod_mpoly_struct,
1854 Plen: mp_limb_signed_t,
1855 coeff_array: *mut mp_limb_t,
1856 mults: *const mp_limb_t,
1857 num: mp_limb_signed_t,
1858 array_size: mp_limb_signed_t,
1859 top: mp_limb_signed_t,
1860 ctx: *mut nmod_mpoly_ctx_struct,
1861 ) -> mp_limb_signed_t;
1862}
1863extern "C" {
1864 pub fn nmod_mpoly_append_array_sm1_DEGLEX(
1865 P: *mut nmod_mpoly_struct,
1866 Plen: mp_limb_signed_t,
1867 coeff_array: *mut mp_limb_t,
1868 top: mp_limb_signed_t,
1869 nvars: mp_limb_signed_t,
1870 degb: mp_limb_signed_t,
1871 ctx: *mut nmod_mpoly_ctx_struct,
1872 ) -> mp_limb_signed_t;
1873}
1874extern "C" {
1875 pub fn nmod_mpoly_append_array_sm2_DEGLEX(
1876 P: *mut nmod_mpoly_struct,
1877 Plen: mp_limb_signed_t,
1878 coeff_array: *mut mp_limb_t,
1879 top: mp_limb_signed_t,
1880 nvars: mp_limb_signed_t,
1881 degb: mp_limb_signed_t,
1882 ctx: *mut nmod_mpoly_ctx_struct,
1883 ) -> mp_limb_signed_t;
1884}
1885extern "C" {
1886 pub fn nmod_mpoly_append_array_sm3_DEGLEX(
1887 P: *mut nmod_mpoly_struct,
1888 Plen: mp_limb_signed_t,
1889 coeff_array: *mut mp_limb_t,
1890 top: mp_limb_signed_t,
1891 nvars: mp_limb_signed_t,
1892 degb: mp_limb_signed_t,
1893 ctx: *mut nmod_mpoly_ctx_struct,
1894 ) -> mp_limb_signed_t;
1895}
1896extern "C" {
1897 pub fn nmod_mpoly_append_array_sm1_DEGREVLEX(
1898 P: *mut nmod_mpoly_struct,
1899 Plen: mp_limb_signed_t,
1900 coeff_array: *mut mp_limb_t,
1901 top: mp_limb_signed_t,
1902 nvars: mp_limb_signed_t,
1903 degb: mp_limb_signed_t,
1904 ctx: *mut nmod_mpoly_ctx_struct,
1905 ) -> mp_limb_signed_t;
1906}
1907extern "C" {
1908 pub fn nmod_mpoly_append_array_sm2_DEGREVLEX(
1909 P: *mut nmod_mpoly_struct,
1910 Plen: mp_limb_signed_t,
1911 coeff_array: *mut mp_limb_t,
1912 top: mp_limb_signed_t,
1913 nvars: mp_limb_signed_t,
1914 degb: mp_limb_signed_t,
1915 ctx: *mut nmod_mpoly_ctx_struct,
1916 ) -> mp_limb_signed_t;
1917}
1918extern "C" {
1919 pub fn nmod_mpoly_append_array_sm3_DEGREVLEX(
1920 P: *mut nmod_mpoly_struct,
1921 Plen: mp_limb_signed_t,
1922 coeff_array: *mut mp_limb_t,
1923 top: mp_limb_signed_t,
1924 nvars: mp_limb_signed_t,
1925 degb: mp_limb_signed_t,
1926 ctx: *mut nmod_mpoly_ctx_struct,
1927 ) -> mp_limb_signed_t;
1928}
1929extern "C" {
1930 pub fn nmod_mpolyd_ctx_init(dctx: *mut nmod_mpolyd_ctx_struct, nvars: mp_limb_signed_t);
1931}
1932extern "C" {
1933 pub fn nmod_mpolyd_ctx_clear(dctx: *mut nmod_mpolyd_ctx_struct);
1934}
1935extern "C" {
1936 pub fn nmod_mpolyd_swap(poly1: *mut nmod_mpolyd_struct, poly2: *mut nmod_mpolyd_struct);
1937}
1938extern "C" {
1939 pub fn nmod_mpolyd_set_degbounds(
1940 A: *mut nmod_mpolyd_struct,
1941 bounds: *mut mp_limb_signed_t,
1942 ) -> c_int;
1943}
1944extern "C" {
1945 pub fn nmod_mpolyd_set_degbounds_perm(
1946 A: *mut nmod_mpolyd_struct,
1947 dctx: *mut nmod_mpolyd_ctx_struct,
1948 bounds: *mut mp_limb_signed_t,
1949 ) -> c_int;
1950}
1951extern "C" {
1952 pub fn nmod_mpoly_convert_to_nmod_mpolyd(
1953 A: *mut nmod_mpolyd_struct,
1954 dctx: *mut nmod_mpolyd_ctx_struct,
1955 B: *mut nmod_mpoly_struct,
1956 ctx: *mut nmod_mpoly_ctx_struct,
1957 );
1958}
1959extern "C" {
1960 pub fn nmod_mpoly_convert_to_nmod_mpolyd_degbound(
1961 A: *mut nmod_mpolyd_struct,
1962 dctx: *mut nmod_mpolyd_ctx_struct,
1963 B: *mut nmod_mpoly_struct,
1964 ctx: *mut nmod_mpoly_ctx_struct,
1965 );
1966}
1967extern "C" {
1968 pub fn nmod_mpoly_convert_from_nmod_mpolyd(
1969 A: *mut nmod_mpoly_struct,
1970 ctx: *mut nmod_mpoly_ctx_struct,
1971 B: *mut nmod_mpolyd_struct,
1972 dctx: *mut nmod_mpolyd_ctx_struct,
1973 );
1974}
1975extern "C" {
1976 pub fn nmod_mpolyd_init(poly: *mut nmod_mpolyd_struct, nvars: mp_limb_signed_t);
1977}
1978extern "C" {
1979 pub fn nmod_mpolyd_fit_length(poly: *mut nmod_mpolyd_struct, len: mp_limb_signed_t);
1980}
1981extern "C" {
1982 pub fn nmod_mpolyd_zero(poly: *mut nmod_mpolyd_struct);
1983}
1984extern "C" {
1985 pub fn nmod_mpolyd_set_nvars(poly: *mut nmod_mpolyd_struct, nvars: mp_limb_signed_t);
1986}
1987extern "C" {
1988 pub fn nmod_mpolyd_set(A: *mut nmod_mpolyd_struct, B: *mut nmod_mpolyd_struct);
1989}
1990extern "C" {
1991 pub fn nmod_mpolyd_clear(poly: *mut nmod_mpolyd_struct);
1992}
1993extern "C" {
1994 pub fn nmod_mpolyd_print(poly: *mut nmod_mpolyd_struct);
1995}
1996extern "C" {
1997 pub fn nmod_mpolyd_length(A: *mut nmod_mpolyd_struct) -> mp_limb_signed_t;
1998}
1999extern "C" {
2000 pub fn nmod_mpolyu_init(
2001 A: *mut nmod_mpolyu_struct,
2002 bits: mp_limb_t,
2003 ctx: *mut nmod_mpoly_ctx_struct,
2004 );
2005}
2006extern "C" {
2007 pub fn nmod_mpolyu_clear(A: *mut nmod_mpolyu_struct, uctx: *mut nmod_mpoly_ctx_struct);
2008}
2009extern "C" {
2010 pub fn nmod_mpolyu_swap(
2011 A: *mut nmod_mpolyu_struct,
2012 B: *mut nmod_mpolyu_struct,
2013 uctx: *mut nmod_mpoly_ctx_struct,
2014 );
2015}
2016extern "C" {
2017 pub fn nmod_mpolyu_zero(A: *mut nmod_mpolyu_struct, uctx: *mut nmod_mpoly_ctx_struct);
2018}
2019extern "C" {
2020 pub fn nmod_mpolyu_is_one(
2021 A: *mut nmod_mpolyu_struct,
2022 uctx: *mut nmod_mpoly_ctx_struct,
2023 ) -> c_int;
2024}
2025extern "C" {
2026 pub fn nmod_mpolyu_print_pretty(
2027 poly: *mut nmod_mpolyu_struct,
2028 x: *mut *const c_char,
2029 ctx: *mut nmod_mpoly_ctx_struct,
2030 );
2031}
2032extern "C" {
2033 pub fn nmod_mpolyu_fit_length(
2034 A: *mut nmod_mpolyu_struct,
2035 length: mp_limb_signed_t,
2036 uctx: *mut nmod_mpoly_ctx_struct,
2037 );
2038}
2039extern "C" {
2040 pub fn nmod_mpolyu_one(A: *mut nmod_mpolyu_struct, uctx: *mut nmod_mpoly_ctx_struct);
2041}
2042extern "C" {
2043 pub fn nmod_mpolyu_degrees_si(
2044 degs: *mut mp_limb_signed_t,
2045 A: *mut nmod_mpolyu_struct,
2046 ctx: *mut nmod_mpoly_ctx_struct,
2047 );
2048}
2049extern "C" {
2050 pub fn nmod_mpolyu_repack_bits_inplace(
2051 A: *mut nmod_mpolyu_struct,
2052 bits: mp_limb_t,
2053 ctx: *mut nmod_mpoly_ctx_struct,
2054 );
2055}
2056extern "C" {
2057 pub fn _nmod_mpolyu_get_coeff(
2058 A: *mut nmod_mpolyu_struct,
2059 pow: mp_limb_t,
2060 uctx: *mut nmod_mpoly_ctx_struct,
2061 ) -> *mut nmod_mpoly_struct;
2062}
2063extern "C" {
2064 pub fn nmod_mpolyu_shift_right(A: *mut nmod_mpolyu_struct, s: mp_limb_t);
2065}
2066extern "C" {
2067 pub fn nmod_mpolyu_shift_left(A: *mut nmod_mpolyu_struct, s: mp_limb_t);
2068}
2069extern "C" {
2070 pub fn nmod_mpolyu_content_mpoly(
2071 g: *mut nmod_mpoly_struct,
2072 A: *mut nmod_mpolyu_struct,
2073 ctx: *mut nmod_mpoly_ctx_struct,
2074 ) -> c_int;
2075}
2076extern "C" {
2077 pub fn nmod_mpolyu_scalar_mul_nmod(
2078 A: *mut nmod_mpolyu_struct,
2079 c: mp_limb_t,
2080 ctx: *mut nmod_mpoly_ctx_struct,
2081 );
2082}
2083extern "C" {
2084 pub fn nmod_mpolyu_set(
2085 A: *mut nmod_mpolyu_struct,
2086 B: *mut nmod_mpolyu_struct,
2087 uctx: *mut nmod_mpoly_ctx_struct,
2088 );
2089}
2090extern "C" {
2091 pub fn nmod_mpolyu_cvtto_poly(
2092 a: *mut nmod_poly_struct,
2093 A: *mut nmod_mpolyu_struct,
2094 ctx: *mut nmod_mpoly_ctx_struct,
2095 );
2096}
2097extern "C" {
2098 pub fn nmod_mpolyu_cvtfrom_poly(
2099 A: *mut nmod_mpolyu_struct,
2100 a: *mut nmod_poly_struct,
2101 ctx: *mut nmod_mpoly_ctx_struct,
2102 );
2103}
2104extern "C" {
2105 pub fn nmod_mpolyu_cvtfrom_poly_notmain(
2106 A: *mut nmod_mpolyu_struct,
2107 a: *mut nmod_poly_struct,
2108 var: mp_limb_signed_t,
2109 ctx: *mut nmod_mpoly_ctx_struct,
2110 );
2111}
2112extern "C" {
2113 pub fn nmod_mpoly_to_mpolyu_perm_deflate_threaded_pool(
2114 A: *mut nmod_mpolyu_struct,
2115 uctx: *mut nmod_mpoly_ctx_struct,
2116 B: *mut nmod_mpoly_struct,
2117 ctx: *mut nmod_mpoly_ctx_struct,
2118 perm: *const mp_limb_signed_t,
2119 shift: *const mp_limb_t,
2120 stride: *const mp_limb_t,
2121 handles: *const thread_pool_handle,
2122 num_handles: mp_limb_signed_t,
2123 );
2124}
2125extern "C" {
2126 pub fn nmod_mpoly_from_mpolyu_perm_inflate(
2127 A: *mut nmod_mpoly_struct,
2128 Abits: mp_limb_t,
2129 ctx: *mut nmod_mpoly_ctx_struct,
2130 B: *mut nmod_mpolyu_struct,
2131 uctx: *mut nmod_mpoly_ctx_struct,
2132 perm: *const mp_limb_signed_t,
2133 shift: *const mp_limb_t,
2134 stride: *const mp_limb_t,
2135 );
2136}
2137extern "C" {
2138 pub fn nmod_mpolyuu_divides(
2139 Q: *mut nmod_mpolyu_struct,
2140 A: *mut nmod_mpolyu_struct,
2141 B: *mut nmod_mpolyu_struct,
2142 nmainvars: mp_limb_signed_t,
2143 ctx: *mut nmod_mpoly_ctx_struct,
2144 ) -> c_int;
2145}
2146extern "C" {
2147 pub fn nmod_mpolyu_divexact_mpoly_inplace(
2148 A: *mut nmod_mpolyu_struct,
2149 c: *mut nmod_mpoly_struct,
2150 ctx: *mut nmod_mpoly_ctx_struct,
2151 );
2152}
2153extern "C" {
2154 pub fn nmod_mpolyu_mul_mpoly(
2155 A: *mut nmod_mpolyu_struct,
2156 B: *mut nmod_mpolyu_struct,
2157 c: *mut nmod_mpoly_struct,
2158 ctx: *mut nmod_mpoly_ctx_struct,
2159 );
2160}
2161extern "C" {
2162 pub fn nmod_mpolyu_mul_mpoly_inplace(
2163 A: *mut nmod_mpolyu_struct,
2164 c: *mut nmod_mpoly_struct,
2165 ctx: *mut nmod_mpoly_ctx_struct,
2166 );
2167}
2168extern "C" {
2169 pub fn nmod_mpolyu_setform(
2170 A: *mut nmod_mpolyu_struct,
2171 B: *mut nmod_mpolyu_struct,
2172 ctx: *mut nmod_mpoly_ctx_struct,
2173 );
2174}
2175extern "C" {
2176 pub fn nmod_mpolyu_gcdm_zippel(
2177 G: *mut nmod_mpolyu_struct,
2178 Abar: *mut nmod_mpolyu_struct,
2179 Bbar: *mut nmod_mpolyu_struct,
2180 A: *mut nmod_mpolyu_struct,
2181 B: *mut nmod_mpolyu_struct,
2182 ctx: *mut nmod_mpoly_ctx_struct,
2183 randstate: *mut flint_rand_s,
2184 ) -> c_int;
2185}
2186extern "C" {
2187 pub fn nmod_mpolyu_leadcoeff(
2188 A: *mut nmod_mpolyu_struct,
2189 ctx: *mut nmod_mpoly_ctx_struct,
2190 ) -> mp_limb_t;
2191}
2192extern "C" {
2193 pub fn nmod_mpolyn_init(
2194 A: *mut nmod_mpolyn_struct,
2195 bits: mp_limb_t,
2196 ctx: *mut nmod_mpoly_ctx_struct,
2197 );
2198}
2199extern "C" {
2200 pub fn nmod_mpolyn_clear(A: *mut nmod_mpolyn_struct, ctx: *mut nmod_mpoly_ctx_struct);
2201}
2202extern "C" {
2203 pub fn nmod_mpolyn_swap(A: *mut nmod_mpolyn_struct, B: *mut nmod_mpolyn_struct);
2204}
2205extern "C" {
2206 pub fn nmod_mpolyn_zero(A: *mut nmod_mpolyn_struct, ctx: *mut nmod_mpoly_ctx_struct);
2207}
2208extern "C" {
2209 pub fn nmod_mpolyn_is_zero(
2210 A: *mut nmod_mpolyn_struct,
2211 ctx: *mut nmod_mpoly_ctx_struct,
2212 ) -> c_int;
2213}
2214extern "C" {
2215 pub fn nmod_mpolyn_print_pretty(
2216 A: *mut nmod_mpolyn_struct,
2217 x_in: *mut *const c_char,
2218 ctx: *mut nmod_mpoly_ctx_struct,
2219 );
2220}
2221extern "C" {
2222 pub fn nmod_mpolyn_fit_length(
2223 A: *mut nmod_mpolyn_struct,
2224 length: mp_limb_signed_t,
2225 ctx: *mut nmod_mpoly_ctx_struct,
2226 );
2227}
2228extern "C" {
2229 pub fn nmod_mpolyn_set_length(
2230 A: *mut nmod_mpolyn_struct,
2231 newlen: mp_limb_signed_t,
2232 ctx: *mut nmod_mpoly_ctx_struct,
2233 );
2234}
2235extern "C" {
2236 pub fn nmod_mpolyn_fit_bits(
2237 A: *mut nmod_mpolyn_struct,
2238 bits: mp_limb_signed_t,
2239 ctx: *mut nmod_mpoly_ctx_struct,
2240 );
2241}
2242extern "C" {
2243 pub fn nmod_mpolyn_is_canonical(
2244 A: *mut nmod_mpolyn_struct,
2245 ctx: *mut nmod_mpoly_ctx_struct,
2246 ) -> c_int;
2247}
2248extern "C" {
2249 pub fn nmod_mpolyn_set(
2250 A: *mut nmod_mpolyn_struct,
2251 B: *mut nmod_mpolyn_struct,
2252 ctx: *mut nmod_mpoly_ctx_struct,
2253 );
2254}
2255extern "C" {
2256 pub fn nmod_mpolyn_set_mpoly(
2257 A: *mut nmod_mpolyn_struct,
2258 B: *mut nmod_mpoly_struct,
2259 ctx: *mut nmod_mpoly_ctx_struct,
2260 );
2261}
2262extern "C" {
2263 pub fn nmod_mpoly_cvtfrom_mpolyn(
2264 A: *mut nmod_mpoly_struct,
2265 B: *mut nmod_mpolyn_struct,
2266 var: mp_limb_signed_t,
2267 ctx: *mut nmod_mpoly_ctx_struct,
2268 );
2269}
2270extern "C" {
2271 pub fn nmod_mpolyn_mul_poly(
2272 A: *mut nmod_mpolyn_struct,
2273 B: *mut nmod_mpolyn_struct,
2274 c: *mut n_poly_struct,
2275 ctx: *mut nmod_mpoly_ctx_struct,
2276 );
2277}
2278extern "C" {
2279 pub fn nmod_mpoly_cvtto_mpolyn(
2280 A: *mut nmod_mpolyn_struct,
2281 B: *mut nmod_mpoly_struct,
2282 var: mp_limb_signed_t,
2283 ctx: *mut nmod_mpoly_ctx_struct,
2284 );
2285}
2286extern "C" {
2287 pub fn nmod_mpolyn_leadcoeff(
2288 A: *mut nmod_mpolyn_struct,
2289 ctx: *mut nmod_mpoly_ctx_struct,
2290 ) -> mp_limb_t;
2291}
2292extern "C" {
2293 pub fn nmod_mpolyn_leadcoeff_poly(
2294 A: *mut nmod_mpolyn_struct,
2295 ctx: *mut nmod_mpoly_ctx_struct,
2296 ) -> *mut n_poly_struct;
2297}
2298extern "C" {
2299 pub fn nmod_mpolyun_init(
2300 A: *mut nmod_mpolyun_struct,
2301 bits: mp_limb_t,
2302 ctx: *mut nmod_mpoly_ctx_struct,
2303 );
2304}
2305extern "C" {
2306 pub fn nmod_mpolyun_clear(A: *mut nmod_mpolyun_struct, ctx: *mut nmod_mpoly_ctx_struct);
2307}
2308extern "C" {
2309 pub fn nmod_mpolyun_swap(A: *mut nmod_mpolyun_struct, B: *mut nmod_mpolyun_struct);
2310}
2311extern "C" {
2312 pub fn nmod_mpolyun_zero(A: *mut nmod_mpolyun_struct, ctx: *mut nmod_mpoly_ctx_struct);
2313}
2314extern "C" {
2315 pub fn nmod_mpolyun_print_pretty(
2316 poly: *mut nmod_mpolyun_struct,
2317 x: *mut *const c_char,
2318 ctx: *mut nmod_mpoly_ctx_struct,
2319 );
2320}
2321extern "C" {
2322 pub fn nmod_mpolyun_fit_length(
2323 A: *mut nmod_mpolyun_struct,
2324 length: mp_limb_signed_t,
2325 ctx: *mut nmod_mpoly_ctx_struct,
2326 );
2327}
2328extern "C" {
2329 pub fn nmod_mpolyun_is_canonical(
2330 A: *mut nmod_mpolyun_struct,
2331 ctx: *mut nmod_mpoly_ctx_struct,
2332 ) -> c_int;
2333}
2334extern "C" {
2335 pub fn nmod_mpolyun_shift_right(A: *mut nmod_mpolyun_struct, s: mp_limb_t);
2336}
2337extern "C" {
2338 pub fn nmod_mpolyun_shift_left(A: *mut nmod_mpolyun_struct, s: mp_limb_t);
2339}
2340extern "C" {
2341 pub fn nmod_mpolyn_lastdeg(
2342 A: *mut nmod_mpolyn_struct,
2343 ctx: *mut nmod_mpoly_ctx_struct,
2344 ) -> mp_limb_signed_t;
2345}
2346extern "C" {
2347 pub fn nmod_mpolyun_lastdeg(
2348 A: *mut nmod_mpolyun_struct,
2349 ctx: *mut nmod_mpoly_ctx_struct,
2350 ) -> mp_limb_signed_t;
2351}
2352extern "C" {
2353 pub fn nmod_mpolyun_set(
2354 A: *mut nmod_mpolyun_struct,
2355 B: *mut nmod_mpolyun_struct,
2356 ctx: *mut nmod_mpoly_ctx_struct,
2357 );
2358}
2359extern "C" {
2360 pub fn nmod_mpolyn_one(A: *mut nmod_mpolyn_struct, ctx: *mut nmod_mpoly_ctx_struct);
2361}
2362extern "C" {
2363 pub fn nmod_mpolyun_one(A: *mut nmod_mpolyun_struct, ctx: *mut nmod_mpoly_ctx_struct);
2364}
2365extern "C" {
2366 pub fn nmod_mpolyun_leadcoeff_last(
2367 A: *mut nmod_mpolyun_struct,
2368 ctx: *mut nmod_mpoly_ctx_struct,
2369 ) -> mp_limb_t;
2370}
2371extern "C" {
2372 pub fn nmod_mpolyn_set_mod(A: *mut nmod_mpolyn_struct, mod_: nmod_t);
2373}
2374extern "C" {
2375 pub fn nmod_mpolyun_set_mod(A: *mut nmod_mpolyun_struct, mod_: nmod_t);
2376}
2377extern "C" {
2378 pub fn nmod_mpolyn_is_nonzero_nmod(
2379 A: *mut nmod_mpolyn_struct,
2380 ctx: *mut nmod_mpoly_ctx_struct,
2381 ) -> c_int;
2382}
2383extern "C" {
2384 pub fn nmod_mpolyun_is_nonzero_nmod(
2385 A: *mut nmod_mpolyun_struct,
2386 ctx: *mut nmod_mpoly_ctx_struct,
2387 ) -> c_int;
2388}
2389extern "C" {
2390 pub fn nmod_mpolyn_scalar_mul_nmod(
2391 A: *mut nmod_mpolyn_struct,
2392 c: mp_limb_t,
2393 ctx: *mut nmod_mpoly_ctx_struct,
2394 );
2395}
2396extern "C" {
2397 pub fn nmod_mpolyun_scalar_mul_nmod(
2398 A: *mut nmod_mpolyun_struct,
2399 c: mp_limb_t,
2400 ctx: *mut nmod_mpoly_ctx_struct,
2401 );
2402}
2403extern "C" {
2404 pub fn nmod_mpolyn_mul_last(
2405 A: *mut nmod_mpolyn_struct,
2406 b: *mut n_poly_struct,
2407 ctx: *mut nmod_mpoly_ctx_struct,
2408 );
2409}
2410extern "C" {
2411 pub fn nmod_mpolyun_mul_last(
2412 A: *mut nmod_mpolyun_struct,
2413 b: *mut n_poly_struct,
2414 ctx: *mut nmod_mpoly_ctx_struct,
2415 );
2416}
2417extern "C" {
2418 pub fn nmod_mpolyn_equal(
2419 A: *mut nmod_mpolyn_struct,
2420 B: *mut nmod_mpolyn_struct,
2421 ctx: *mut nmod_mpoly_ctx_struct,
2422 ) -> c_int;
2423}
2424extern "C" {
2425 pub fn nmod_mpolyun_equal(
2426 A: *mut nmod_mpolyun_struct,
2427 B: *mut nmod_mpolyun_struct,
2428 ctx: *mut nmod_mpoly_ctx_struct,
2429 ) -> c_int;
2430}
2431extern "C" {
2432 pub fn nmod_mpolyu_cvtto_mpolyun(
2433 A: *mut nmod_mpolyun_struct,
2434 B: *mut nmod_mpolyu_struct,
2435 k: mp_limb_signed_t,
2436 ctx: *mut nmod_mpoly_ctx_struct,
2437 );
2438}
2439extern "C" {
2440 pub fn nmod_mpolyu_cvtfrom_mpolyun(
2441 A: *mut nmod_mpolyu_struct,
2442 B: *mut nmod_mpolyun_struct,
2443 var: mp_limb_signed_t,
2444 ctx: *mut nmod_mpoly_ctx_struct,
2445 );
2446}
2447extern "C" {
2448 pub fn nmod_mpolyun_mul_poly(
2449 A: *mut nmod_mpolyun_struct,
2450 B: *mut nmod_mpolyun_struct,
2451 c: *mut n_poly_struct,
2452 ctx: *mut nmod_mpoly_ctx_struct,
2453 );
2454}
2455extern "C" {
2456 pub fn nmod_mpolyn_content_last(
2457 a: *mut n_poly_struct,
2458 B: *mut nmod_mpolyn_struct,
2459 ctx: *mut nmod_mpoly_ctx_struct,
2460 );
2461}
2462extern "C" {
2463 pub fn nmod_mpolyun_content_last(
2464 a: *mut n_poly_struct,
2465 B: *mut nmod_mpolyun_struct,
2466 ctx: *mut nmod_mpoly_ctx_struct,
2467 );
2468}
2469extern "C" {
2470 pub fn nmod_mpolyn_divexact_last(
2471 A: *mut nmod_mpolyn_struct,
2472 b: *mut n_poly_struct,
2473 ctx: *mut nmod_mpoly_ctx_struct,
2474 );
2475}
2476extern "C" {
2477 pub fn nmod_mpolyun_divexact_last(
2478 A: *mut nmod_mpolyun_struct,
2479 b: *mut n_poly_struct,
2480 ctx: *mut nmod_mpoly_ctx_struct,
2481 );
2482}
2483extern "C" {
2484 pub fn nmod_mpolyn_divides(
2485 Q: *mut nmod_mpolyn_struct,
2486 A: *mut nmod_mpolyn_struct,
2487 B: *mut nmod_mpolyn_struct,
2488 ctx: *mut nmod_mpoly_ctx_struct,
2489 ) -> c_int;
2490}
2491extern "C" {
2492 pub fn nmod_mpolyn_divides_threaded_pool(
2493 Q: *mut nmod_mpolyn_struct,
2494 A: *mut nmod_mpolyn_struct,
2495 B: *mut nmod_mpolyn_struct,
2496 ctx: *mut nmod_mpoly_ctx_struct,
2497 handles: *const thread_pool_handle,
2498 num_handles: mp_limb_signed_t,
2499 ) -> c_int;
2500}
2501extern "C" {
2502 pub fn nmod_mpolyun_divides(
2503 Q: *mut nmod_mpolyun_struct,
2504 A: *mut nmod_mpolyun_struct,
2505 B: *mut nmod_mpolyun_struct,
2506 ctx: *mut nmod_mpoly_ctx_struct,
2507 ) -> c_int;
2508}
2509extern "C" {
2510 pub fn nmod_mpoly_to_mpolyun_perm_deflate_threaded_pool(
2511 A: *mut nmod_mpolyun_struct,
2512 uctx: *mut nmod_mpoly_ctx_struct,
2513 B: *mut nmod_mpoly_struct,
2514 ctx: *mut nmod_mpoly_ctx_struct,
2515 perm: *const mp_limb_signed_t,
2516 shift: *const mp_limb_t,
2517 stride: *const mp_limb_t,
2518 handles: *const thread_pool_handle,
2519 num_handles: mp_limb_signed_t,
2520 );
2521}
2522extern "C" {
2523 pub fn nmod_mpoly_to_mpolyn_perm_deflate_threaded_pool(
2524 A: *mut nmod_mpolyn_struct,
2525 nctx: *mut nmod_mpoly_ctx_struct,
2526 B: *mut nmod_mpoly_struct,
2527 ctx: *mut nmod_mpoly_ctx_struct,
2528 perm: *const mp_limb_signed_t,
2529 shift: *const mp_limb_t,
2530 stride: *const mp_limb_t,
2531 handles: *const thread_pool_handle,
2532 num_handles: mp_limb_signed_t,
2533 );
2534}
2535extern "C" {
2536 pub fn nmod_mpoly_from_mpolyun_perm_inflate(
2537 A: *mut nmod_mpoly_struct,
2538 Abits: mp_limb_t,
2539 ctx: *mut nmod_mpoly_ctx_struct,
2540 B: *mut nmod_mpolyun_struct,
2541 uctx: *mut nmod_mpoly_ctx_struct,
2542 perm: *const mp_limb_signed_t,
2543 shift: *const mp_limb_t,
2544 stride: *const mp_limb_t,
2545 );
2546}
2547extern "C" {
2548 pub fn nmod_mpoly_from_mpolyn_perm_inflate(
2549 A: *mut nmod_mpoly_struct,
2550 Abits: mp_limb_t,
2551 ctx: *mut nmod_mpoly_ctx_struct,
2552 B: *mut nmod_mpolyn_struct,
2553 nctx: *mut nmod_mpoly_ctx_struct,
2554 perm: *const mp_limb_signed_t,
2555 shift: *const mp_limb_t,
2556 stride: *const mp_limb_t,
2557 );
2558}
2559extern "C" {
2560 pub fn nmod_mpolyun_leadcoeff(
2561 A: *mut nmod_mpolyun_struct,
2562 ctx: *mut nmod_mpoly_ctx_struct,
2563 ) -> mp_limb_t;
2564}
2565extern "C" {
2566 pub fn nmod_mpolyun_leadcoeff_poly(
2567 A: *mut nmod_mpolyun_struct,
2568 ctx: *mut nmod_mpoly_ctx_struct,
2569 ) -> *mut n_poly_struct;
2570}
2571extern "C" {
2572 pub fn mpoly_gcd_get_use_first(
2573 rGdeg: mp_limb_signed_t,
2574 Adeg: mp_limb_signed_t,
2575 Bdeg: mp_limb_signed_t,
2576 gammadeg: mp_limb_signed_t,
2577 ) -> c_int;
2578}
2579extern "C" {
2580 pub fn nmod_mpoly_gcd_get_use_new(
2581 rGdeg: mp_limb_signed_t,
2582 Adeg: mp_limb_signed_t,
2583 Bdeg: mp_limb_signed_t,
2584 gammadeg: mp_limb_signed_t,
2585 degxAB: mp_limb_signed_t,
2586 degyAB: mp_limb_signed_t,
2587 numABgamma: mp_limb_signed_t,
2588 G: *mut n_polyun_struct,
2589 Abar: *mut n_polyun_struct,
2590 Bbar: *mut n_polyun_struct,
2591 ) -> c_int;
2592}
2593extern "C" {
2594 pub fn nmod_mpolyu_setform_mpolyun(
2595 A: *mut nmod_mpolyu_struct,
2596 B: *mut nmod_mpolyun_struct,
2597 ctx: *mut nmod_mpoly_ctx_struct,
2598 );
2599}
2600extern "C" {
2601 pub fn nmod_mpolyn_gcd_brown_smprime_bivar(
2602 G: *mut nmod_mpolyn_struct,
2603 Abar: *mut nmod_mpolyn_struct,
2604 Bbar: *mut nmod_mpolyn_struct,
2605 A: *mut nmod_mpolyn_struct,
2606 B: *mut nmod_mpolyn_struct,
2607 ctx: *mut nmod_mpoly_ctx_struct,
2608 Sp: *mut nmod_poly_stack_struct,
2609 ) -> c_int;
2610}
2611extern "C" {
2612 pub fn nmod_mpolyn_gcd_brown_smprime(
2613 G: *mut nmod_mpolyn_struct,
2614 Abar: *mut nmod_mpolyn_struct,
2615 Bbar: *mut nmod_mpolyn_struct,
2616 A: *mut nmod_mpolyn_struct,
2617 B: *mut nmod_mpolyn_struct,
2618 var: mp_limb_signed_t,
2619 ctx: *mut nmod_mpoly_ctx_struct,
2620 I: *mut mpoly_gcd_info_struct,
2621 Sp: *mut nmod_poly_stack_struct,
2622 ) -> c_int;
2623}
2624extern "C" {
2625 pub fn nmod_mpolyn_gcd_brown_smprime_threaded_pool(
2626 G: *mut nmod_mpolyn_struct,
2627 Abar: *mut nmod_mpolyn_struct,
2628 Bbar: *mut nmod_mpolyn_struct,
2629 A: *mut nmod_mpolyn_struct,
2630 B: *mut nmod_mpolyn_struct,
2631 var: mp_limb_signed_t,
2632 ctx: *mut nmod_mpoly_ctx_struct,
2633 I: *mut mpoly_gcd_info_struct,
2634 handles: *const thread_pool_handle,
2635 num_workers: mp_limb_signed_t,
2636 ) -> c_int;
2637}
2638extern "C" {
2639 pub fn nmod_mpolyn_gcd_brown_lgprime(
2640 G: *mut nmod_mpolyn_struct,
2641 Abar: *mut nmod_mpolyn_struct,
2642 Bbar: *mut nmod_mpolyn_struct,
2643 A: *mut nmod_mpolyn_struct,
2644 B: *mut nmod_mpolyn_struct,
2645 var: mp_limb_signed_t,
2646 ctx: *mut nmod_mpoly_ctx_struct,
2647 ) -> c_int;
2648}
2649pub const nmod_gcds_ret_t_nmod_gcds_success: nmod_gcds_ret_t = 0;
2650pub const nmod_gcds_ret_t_nmod_gcds_form_main_degree_too_high: nmod_gcds_ret_t = 1;
2651pub const nmod_gcds_ret_t_nmod_gcds_form_wrong: nmod_gcds_ret_t = 2;
2652pub const nmod_gcds_ret_t_nmod_gcds_no_solution: nmod_gcds_ret_t = 3;
2653pub const nmod_gcds_ret_t_nmod_gcds_scales_not_found: nmod_gcds_ret_t = 4;
2654pub const nmod_gcds_ret_t_nmod_gcds_eval_point_not_found: nmod_gcds_ret_t = 5;
2655pub const nmod_gcds_ret_t_nmod_gcds_eval_gcd_deg_too_high: nmod_gcds_ret_t = 6;
2656pub type nmod_gcds_ret_t = c_uint;
2657extern "C" {
2658 pub fn nmod_mpolyu_gcds_zippel(
2659 G: *mut nmod_mpolyu_struct,
2660 A: *mut nmod_mpolyu_struct,
2661 B: *mut nmod_mpolyu_struct,
2662 f: *mut nmod_mpolyu_struct,
2663 var: mp_limb_signed_t,
2664 ctx: *mut nmod_mpoly_ctx_struct,
2665 randstate: *mut flint_rand_s,
2666 degbound: *mut mp_limb_signed_t,
2667 ) -> nmod_gcds_ret_t;
2668}
2669extern "C" {
2670 pub fn nmod_mpolyu_gcdp_zippel(
2671 G: *mut nmod_mpolyu_struct,
2672 Abar: *mut nmod_mpolyu_struct,
2673 Bbar: *mut nmod_mpolyu_struct,
2674 A: *mut nmod_mpolyu_struct,
2675 B: *mut nmod_mpolyu_struct,
2676 var: mp_limb_signed_t,
2677 ctx: *mut nmod_mpoly_ctx_struct,
2678 randstate: *mut flint_rand_s,
2679 ) -> c_int;
2680}
2681extern "C" {
2682 pub fn nmod_mpoly_to_mpolyl_perm_deflate(
2683 A: *mut nmod_mpoly_struct,
2684 lctx: *mut nmod_mpoly_ctx_struct,
2685 B: *mut nmod_mpoly_struct,
2686 ctx: *mut nmod_mpoly_ctx_struct,
2687 perm: *const mp_limb_signed_t,
2688 shift: *const mp_limb_t,
2689 stride: *const mp_limb_t,
2690 );
2691}
2692extern "C" {
2693 pub fn nmod_mpoly_from_mpolyl_perm_inflate(
2694 A: *mut nmod_mpoly_struct,
2695 Abits: mp_limb_t,
2696 ctx: *mut nmod_mpoly_ctx_struct,
2697 B: *mut nmod_mpoly_struct,
2698 lctx: *mut nmod_mpoly_ctx_struct,
2699 perm: *const mp_limb_signed_t,
2700 shift: *const mp_limb_t,
2701 stride: *const mp_limb_t,
2702 );
2703}
2704extern "C" {
2705 pub fn nmod_mpolyl_gcd_zippel_smprime(
2706 rG: *mut nmod_mpoly_struct,
2707 rGdegs: *const mp_limb_signed_t,
2708 rAbar: *mut nmod_mpoly_struct,
2709 rBbar: *mut nmod_mpoly_struct,
2710 A: *mut nmod_mpoly_struct,
2711 Adegs: *const mp_limb_signed_t,
2712 B: *mut nmod_mpoly_struct,
2713 Bdegs: *const mp_limb_signed_t,
2714 gamma: *mut nmod_mpoly_struct,
2715 gammadegs: *const mp_limb_signed_t,
2716 ctx: *mut nmod_mpoly_ctx_struct,
2717 ) -> c_int;
2718}
2719extern "C" {
2720 pub fn nmod_mpolyl_gcd_zippel_lgprime(
2721 rG: *mut nmod_mpoly_struct,
2722 rGdegs: *const mp_limb_signed_t,
2723 rAbar: *mut nmod_mpoly_struct,
2724 rBbar: *mut nmod_mpoly_struct,
2725 A: *mut nmod_mpoly_struct,
2726 Adegs: *const mp_limb_signed_t,
2727 B: *mut nmod_mpoly_struct,
2728 Bdegs: *const mp_limb_signed_t,
2729 gamma: *mut nmod_mpoly_struct,
2730 gammadegs: *const mp_limb_signed_t,
2731 ctx: *mut nmod_mpoly_ctx_struct,
2732 ) -> c_int;
2733}
2734extern "C" {
2735 pub fn nmod_mpolyl_gcd_hensel_smprime(
2736 G: *mut nmod_mpoly_struct,
2737 Gdeg: mp_limb_signed_t,
2738 Abar: *mut nmod_mpoly_struct,
2739 Bbar: *mut nmod_mpoly_struct,
2740 A: *mut nmod_mpoly_struct,
2741 B: *mut nmod_mpoly_struct,
2742 ctx: *mut nmod_mpoly_ctx_struct,
2743 ) -> c_int;
2744}
2745extern "C" {
2746 pub fn nmod_mpolyl_gcd_hensel_medprime(
2747 G: *mut nmod_mpoly_struct,
2748 Gdeg: mp_limb_signed_t,
2749 Abar: *mut nmod_mpoly_struct,
2750 Bbar: *mut nmod_mpoly_struct,
2751 smA: *mut nmod_mpoly_struct,
2752 smB: *mut nmod_mpoly_struct,
2753 smctx: *mut nmod_mpoly_ctx_struct,
2754 ) -> c_int;
2755}
2756extern "C" {
2757 pub fn _nmod_mpoly_monomial_evals_cache(
2758 E: *mut n_poly_struct,
2759 Aexps: *const mp_limb_t,
2760 Abits: mp_limb_t,
2761 Alen: mp_limb_signed_t,
2762 betas: *const mp_limb_t,
2763 start: mp_limb_signed_t,
2764 stop: mp_limb_signed_t,
2765 mctx: *mut mpoly_ctx_struct,
2766 mod_: nmod_t,
2767 );
2768}
2769extern "C" {
2770 pub fn _nmod_mpoly_monomial_evals2_cache(
2771 E: *mut n_polyun_struct,
2772 Aexps: *const mp_limb_t,
2773 Abits: mp_limb_t,
2774 Alen: mp_limb_signed_t,
2775 betas: *const mp_limb_t,
2776 m: mp_limb_signed_t,
2777 ctx: *mut mpoly_ctx_struct,
2778 mod_: nmod_t,
2779 );
2780}
2781extern "C" {
2782 pub fn _nmod_poly_eval2_pow(
2783 vp: *mut mp_limb_t,
2784 vm: *mut mp_limb_t,
2785 P: *mut n_poly_struct,
2786 alphapow: *mut n_poly_struct,
2787 fctx: nmod_t,
2788 );
2789}
2790extern "C" {
2791 pub fn nmod_mpolyn_interp_reduce_2sm_poly(
2792 E: *mut n_poly_struct,
2793 F: *mut n_poly_struct,
2794 A: *mut nmod_mpolyn_struct,
2795 alphapow: *mut n_poly_struct,
2796 ctx: *mut nmod_mpoly_ctx_struct,
2797 );
2798}
2799extern "C" {
2800 pub fn nmod_mpolyn_interp_lift_2sm_poly(
2801 lastdeg_: *mut mp_limb_signed_t,
2802 F: *mut nmod_mpolyn_struct,
2803 A: *mut n_poly_struct,
2804 B: *mut n_poly_struct,
2805 alpha: mp_limb_t,
2806 ctx: *mut nmod_mpoly_ctx_struct,
2807 );
2808}
2809extern "C" {
2810 pub fn nmod_mpolyn_interp_crt_2sm_poly(
2811 lastdeg_: *mut mp_limb_signed_t,
2812 F: *mut nmod_mpolyn_struct,
2813 T: *mut nmod_mpolyn_struct,
2814 A: *mut n_poly_struct,
2815 B: *mut n_poly_struct,
2816 modulus: *mut n_poly_struct,
2817 alphapow: *mut n_poly_struct,
2818 ctx: *mut nmod_mpoly_ctx_struct,
2819 ) -> c_int;
2820}
2821extern "C" {
2822 pub fn nmod_mpolyn_interp_lift_sm_bpoly(
2823 F: *mut nmod_mpolyn_struct,
2824 A: *mut n_bpoly_struct,
2825 ctx: *mut nmod_mpoly_ctx_struct,
2826 );
2827}
2828extern "C" {
2829 pub fn nmod_mpolyn_interp_crt_sm_bpoly(
2830 lastdeg: *mut mp_limb_signed_t,
2831 F: *mut nmod_mpolyn_struct,
2832 T: *mut nmod_mpolyn_struct,
2833 A: *mut n_bpoly_struct,
2834 modulus: *mut n_poly_struct,
2835 alphapow: *mut n_poly_struct,
2836 ctx: *mut nmod_mpoly_ctx_struct,
2837 ) -> c_int;
2838}
2839extern "C" {
2840 pub fn nmod_mpolyn_interp_reduce_2sm_mpolyn(
2841 E: *mut nmod_mpolyn_struct,
2842 F: *mut nmod_mpolyn_struct,
2843 A: *mut nmod_mpolyn_struct,
2844 var: mp_limb_signed_t,
2845 alphapow: *mut n_poly_struct,
2846 ctx: *mut nmod_mpoly_ctx_struct,
2847 );
2848}
2849extern "C" {
2850 pub fn nmod_mpolyn_interp_lift_2sm_mpolyn(
2851 lastdeg: *mut mp_limb_signed_t,
2852 T: *mut nmod_mpolyn_struct,
2853 A: *mut nmod_mpolyn_struct,
2854 B: *mut nmod_mpolyn_struct,
2855 var: mp_limb_signed_t,
2856 alpha: mp_limb_t,
2857 ctx: *mut nmod_mpoly_ctx_struct,
2858 );
2859}
2860extern "C" {
2861 pub fn nmod_mpolyn_interp_crt_2sm_mpolyn(
2862 lastdeg: *mut mp_limb_signed_t,
2863 F: *mut nmod_mpolyn_struct,
2864 T: *mut nmod_mpolyn_struct,
2865 A: *mut nmod_mpolyn_struct,
2866 B: *mut nmod_mpolyn_struct,
2867 var: mp_limb_signed_t,
2868 modulus: *mut n_poly_struct,
2869 alphapow: *mut n_poly_struct,
2870 ctx: *mut nmod_mpoly_ctx_struct,
2871 ) -> c_int;
2872}
2873extern "C" {
2874 pub fn nmod_mpolyun_interp_reduce_sm_mpolyu(
2875 B: *mut nmod_mpolyu_struct,
2876 A: *mut nmod_mpolyun_struct,
2877 alpha: mp_limb_t,
2878 ctx: *mut nmod_mpoly_ctx_struct,
2879 );
2880}
2881extern "C" {
2882 pub fn nmod_mpolyn_interp_lift_sm_mpoly(
2883 A: *mut nmod_mpolyn_struct,
2884 B: *mut nmod_mpoly_struct,
2885 ctx: *mut nmod_mpoly_ctx_struct,
2886 );
2887}
2888extern "C" {
2889 pub fn nmod_mpolyun_interp_lift_sm_mpolyu(
2890 A: *mut nmod_mpolyun_struct,
2891 B: *mut nmod_mpolyu_struct,
2892 ctx: *mut nmod_mpoly_ctx_struct,
2893 );
2894}
2895extern "C" {
2896 pub fn nmod_mpolyn_interp_crt_sm_mpoly(
2897 lastdeg: *mut mp_limb_signed_t,
2898 F: *mut nmod_mpolyn_struct,
2899 T: *mut nmod_mpolyn_struct,
2900 A: *mut nmod_mpoly_struct,
2901 modulus: *mut n_poly_struct,
2902 alpha: mp_limb_t,
2903 ctx: *mut nmod_mpoly_ctx_struct,
2904 ) -> c_int;
2905}
2906extern "C" {
2907 pub fn nmod_mpolyun_interp_crt_sm_mpolyu(
2908 lastdeg: *mut mp_limb_signed_t,
2909 F: *mut nmod_mpolyun_struct,
2910 T: *mut nmod_mpolyun_struct,
2911 A: *mut nmod_mpolyu_struct,
2912 modulus: *mut n_poly_struct,
2913 alpha: mp_limb_t,
2914 ctx: *mut nmod_mpoly_ctx_struct,
2915 ) -> c_int;
2916}
2917extern "C" {
2918 pub fn nmod_mpolyn_interp_mcrt_sm_mpoly(
2919 lastdeg_: *mut mp_limb_signed_t,
2920 F: *mut nmod_mpolyn_struct,
2921 A: *mut nmod_mpoly_struct,
2922 modulus: *mut n_poly_struct,
2923 alphapow: *mut n_poly_struct,
2924 ctx: *mut nmod_mpoly_ctx_struct,
2925 ) -> c_int;
2926}
2927#[repr(C)]
2928#[derive(Debug, Copy, Clone)]
2929pub struct nmod_mpoly_geobucket {
2930 pub polys: [nmod_mpoly_struct; 32usize],
2931 pub temps: [nmod_mpoly_struct; 32usize],
2932 pub length: mp_limb_signed_t,
2933}
2934pub type nmod_mpoly_geobucket_struct = nmod_mpoly_geobucket;
2935pub type nmod_mpoly_geobucket_t = [nmod_mpoly_geobucket_struct; 1usize];
2936extern "C" {
2937 pub fn nmod_mpoly_geobucket_init(
2938 B: *mut nmod_mpoly_geobucket_struct,
2939 ctx: *mut nmod_mpoly_ctx_struct,
2940 );
2941}
2942extern "C" {
2943 pub fn nmod_mpoly_geobucket_clear(
2944 B: *mut nmod_mpoly_geobucket_struct,
2945 ctx: *mut nmod_mpoly_ctx_struct,
2946 );
2947}
2948extern "C" {
2949 pub fn nmod_mpoly_geobucket_empty(
2950 p: *mut nmod_mpoly_struct,
2951 B: *mut nmod_mpoly_geobucket_struct,
2952 ctx: *mut nmod_mpoly_ctx_struct,
2953 );
2954}
2955extern "C" {
2956 pub fn nmod_mpoly_geobucket_fit_length(
2957 B: *mut nmod_mpoly_geobucket_struct,
2958 i: mp_limb_signed_t,
2959 ctx: *mut nmod_mpoly_ctx_struct,
2960 );
2961}
2962extern "C" {
2963 pub fn nmod_mpoly_geobucket_set(
2964 B: *mut nmod_mpoly_geobucket_struct,
2965 p: *mut nmod_mpoly_struct,
2966 ctx: *mut nmod_mpoly_ctx_struct,
2967 );
2968}
2969extern "C" {
2970 pub fn nmod_mpoly_geobucket_add(
2971 B: *mut nmod_mpoly_geobucket_struct,
2972 p: *mut nmod_mpoly_struct,
2973 ctx: *mut nmod_mpoly_ctx_struct,
2974 );
2975}
2976extern "C" {
2977 pub fn nmod_mpoly_geobucket_sub(
2978 B: *mut nmod_mpoly_geobucket_struct,
2979 p: *mut nmod_mpoly_struct,
2980 ctx: *mut nmod_mpoly_ctx_struct,
2981 );
2982}
2983extern "C" {
2984 pub fn nmod_mpoly_remainder_strongtest(
2985 r: *mut nmod_mpoly_struct,
2986 g: *mut nmod_mpoly_struct,
2987 ctx: *mut nmod_mpoly_ctx_struct,
2988 );
2989}