1#![allow(non_camel_case_types)]
2
3use crate::deps::*;
6use crate::flint::*;
7use crate::fmpq::{fmpq, fmpq_t};
8use crate::fmpq_poly::fmpq_poly_struct;
9use crate::fmpz::fmpz;
10use crate::fmpz_mpoly::{fmpz_mpoly_ctx_t, fmpz_mpoly_struct, fmpz_mpoly_t};
11use crate::mpoly::*;
12use libc::FILE;
13
14#[repr(C)]
15#[derive(Debug, Copy, Clone)]
16pub struct fmpq_mpoly_ctx_struct {
17 pub zctx: fmpz_mpoly_ctx_t,
18}
19pub type fmpq_mpoly_ctx_t = [fmpq_mpoly_ctx_struct; 1usize];
20extern "C" {
21 pub fn fmpq_mpoly_ctx_init(
22 ctx: *mut fmpq_mpoly_ctx_struct,
23 nvars: mp_limb_signed_t,
24 ord: ordering_t,
25 );
26}
27extern "C" {
28 pub fn fmpq_mpoly_ctx_init_rand(
29 ctx: *mut fmpq_mpoly_ctx_struct,
30 state: *mut flint_rand_s,
31 max_nvars: mp_limb_signed_t,
32 );
33}
34extern "C" {
35 pub fn fmpq_mpoly_ctx_clear(ctx: *mut fmpq_mpoly_ctx_struct);
36}
37extern "C" {
38 pub fn fmpq_mpoly_ctx_nvars(ctx: *mut fmpq_mpoly_ctx_struct) -> mp_limb_signed_t;
39}
40extern "C" {
41 pub fn fmpq_mpoly_ctx_ord(ctx: *mut fmpq_mpoly_ctx_struct) -> ordering_t;
42}
43#[repr(C)]
44#[derive(Debug, Copy, Clone)]
45pub struct fmpq_mpoly_struct {
46 pub content: fmpq_t,
47 pub zpoly: fmpz_mpoly_t,
48}
49pub type fmpq_mpoly_t = [fmpq_mpoly_struct; 1usize];
50extern "C" {
51 pub fn fmpq_mpoly_content_ref(
52 A: *mut fmpq_mpoly_struct,
53 ctx: *mut fmpq_mpoly_ctx_struct,
54 ) -> *mut fmpq;
55}
56extern "C" {
57 pub fn fmpq_mpoly_zpoly_ref(
58 A: *mut fmpq_mpoly_struct,
59 ctx: *mut fmpq_mpoly_ctx_struct,
60 ) -> *mut fmpz_mpoly_struct;
61}
62extern "C" {
63 pub fn fmpq_mpoly_zpoly_term_coeff_ref(
64 A: *mut fmpq_mpoly_struct,
65 i: mp_limb_signed_t,
66 ctx: *mut fmpq_mpoly_ctx_struct,
67 ) -> *mut fmpz;
68}
69#[repr(C)]
70#[derive(Debug, Copy, Clone)]
71pub struct fmpq_mpoly_univar_struct {
72 pub coeffs: *mut fmpq_mpoly_struct,
73 pub exps: *mut fmpz,
74 pub alloc: mp_limb_signed_t,
75 pub length: mp_limb_signed_t,
76}
77pub type fmpq_mpoly_univar_t = [fmpq_mpoly_univar_struct; 1usize];
78extern "C" {
79 pub fn fmpq_mpoly_init(A: *mut fmpq_mpoly_struct, ctx: *mut fmpq_mpoly_ctx_struct);
80}
81extern "C" {
82 pub fn fmpq_mpoly_init2(
83 A: *mut fmpq_mpoly_struct,
84 alloc: mp_limb_signed_t,
85 ctx: *mut fmpq_mpoly_ctx_struct,
86 );
87}
88extern "C" {
89 pub fn fmpq_mpoly_init3(
90 A: *mut fmpq_mpoly_struct,
91 alloc: mp_limb_signed_t,
92 bits: mp_limb_t,
93 ctx: *mut fmpq_mpoly_ctx_struct,
94 );
95}
96extern "C" {
97 pub fn fmpq_mpoly_realloc(
98 A: *mut fmpq_mpoly_struct,
99 alloc: mp_limb_signed_t,
100 ctx: *mut fmpq_mpoly_ctx_struct,
101 );
102}
103extern "C" {
104 pub fn fmpq_mpoly_fit_length(
105 A: *mut fmpq_mpoly_struct,
106 len: mp_limb_signed_t,
107 ctx: *mut fmpq_mpoly_ctx_struct,
108 );
109}
110extern "C" {
111 pub fn fmpq_mpoly_clear(A: *mut fmpq_mpoly_struct, ctx: *mut fmpq_mpoly_ctx_struct);
112}
113extern "C" {
114 pub fn fmpq_mpoly_fit_bits(
115 A: *mut fmpq_mpoly_struct,
116 bits: mp_limb_t,
117 ctx: *mut fmpq_mpoly_ctx_struct,
118 );
119}
120extern "C" {
121 pub fn fmpq_mpoly_set_str_pretty(
122 A: *mut fmpq_mpoly_struct,
123 str_: *const ::std::os::raw::c_char,
124 x: *mut *const ::std::os::raw::c_char,
125 ctx: *mut fmpq_mpoly_ctx_struct,
126 ) -> ::std::os::raw::c_int;
127}
128extern "C" {
129 pub fn fmpq_mpoly_get_str_pretty(
130 A: *mut fmpq_mpoly_struct,
131 x: *mut *const ::std::os::raw::c_char,
132 ctx: *mut fmpq_mpoly_ctx_struct,
133 ) -> *mut ::std::os::raw::c_char;
134}
135extern "C" {
136 pub fn fmpq_mpoly_fprint_pretty(
137 file: *mut FILE,
138 A: *mut fmpq_mpoly_struct,
139 x: *mut *const ::std::os::raw::c_char,
140 ctx: *mut fmpq_mpoly_ctx_struct,
141 ) -> ::std::os::raw::c_int;
142}
143extern "C" {
144 pub fn fmpq_mpoly_print_pretty(
145 A: *mut fmpq_mpoly_struct,
146 x: *mut *const ::std::os::raw::c_char,
147 ctx: *mut fmpq_mpoly_ctx_struct,
148 ) -> ::std::os::raw::c_int;
149}
150extern "C" {
151 pub fn fmpq_mpoly_gen(
152 A: *mut fmpq_mpoly_struct,
153 var: mp_limb_signed_t,
154 ctx: *mut fmpq_mpoly_ctx_struct,
155 );
156}
157extern "C" {
158 pub fn fmpq_mpoly_is_gen(
159 A: *mut fmpq_mpoly_struct,
160 var: mp_limb_signed_t,
161 ctx: *mut fmpq_mpoly_ctx_struct,
162 ) -> ::std::os::raw::c_int;
163}
164extern "C" {
165 pub fn fmpq_mpoly_set(
166 A: *mut fmpq_mpoly_struct,
167 B: *mut fmpq_mpoly_struct,
168 ctx: *mut fmpq_mpoly_ctx_struct,
169 );
170}
171extern "C" {
172 pub fn fmpq_mpoly_equal(
173 A: *mut fmpq_mpoly_struct,
174 B: *mut fmpq_mpoly_struct,
175 ctx: *mut fmpq_mpoly_ctx_struct,
176 ) -> ::std::os::raw::c_int;
177}
178extern "C" {
179 pub fn fmpq_mpoly_swap(
180 A: *mut fmpq_mpoly_struct,
181 B: *mut fmpq_mpoly_struct,
182 ctx: *mut fmpq_mpoly_ctx_struct,
183 );
184}
185extern "C" {
186 pub fn fmpq_mpoly_is_fmpq(
187 A: *mut fmpq_mpoly_struct,
188 ctx: *mut fmpq_mpoly_ctx_struct,
189 ) -> ::std::os::raw::c_int;
190}
191extern "C" {
192 pub fn fmpq_mpoly_get_fmpq(
193 c: *mut fmpq,
194 A: *mut fmpq_mpoly_struct,
195 ctx: *mut fmpq_mpoly_ctx_struct,
196 );
197}
198extern "C" {
199 pub fn fmpq_mpoly_set_fmpq(
200 A: *mut fmpq_mpoly_struct,
201 c: *mut fmpq,
202 ctx: *mut fmpq_mpoly_ctx_struct,
203 );
204}
205extern "C" {
206 pub fn fmpq_mpoly_set_fmpz(
207 A: *mut fmpq_mpoly_struct,
208 c: *mut fmpz,
209 ctx: *mut fmpq_mpoly_ctx_struct,
210 );
211}
212extern "C" {
213 pub fn fmpq_mpoly_set_ui(
214 A: *mut fmpq_mpoly_struct,
215 c: mp_limb_t,
216 ctx: *mut fmpq_mpoly_ctx_struct,
217 );
218}
219extern "C" {
220 pub fn fmpq_mpoly_set_si(
221 A: *mut fmpq_mpoly_struct,
222 c: mp_limb_signed_t,
223 ctx: *mut fmpq_mpoly_ctx_struct,
224 );
225}
226extern "C" {
227 pub fn fmpq_mpoly_zero(A: *mut fmpq_mpoly_struct, ctx: *mut fmpq_mpoly_ctx_struct);
228}
229extern "C" {
230 pub fn fmpq_mpoly_one(A: *mut fmpq_mpoly_struct, ctx: *mut fmpq_mpoly_ctx_struct);
231}
232extern "C" {
233 pub fn fmpq_mpoly_equal_fmpq(
234 A: *mut fmpq_mpoly_struct,
235 c: *mut fmpq,
236 ctx: *mut fmpq_mpoly_ctx_struct,
237 ) -> ::std::os::raw::c_int;
238}
239extern "C" {
240 pub fn fmpq_mpoly_equal_fmpz(
241 A: *mut fmpq_mpoly_struct,
242 c: *mut fmpz,
243 ctx: *mut fmpq_mpoly_ctx_struct,
244 ) -> ::std::os::raw::c_int;
245}
246extern "C" {
247 pub fn fmpq_mpoly_equal_ui(
248 A: *mut fmpq_mpoly_struct,
249 c: mp_limb_t,
250 ctx: *mut fmpq_mpoly_ctx_struct,
251 ) -> ::std::os::raw::c_int;
252}
253extern "C" {
254 pub fn fmpq_mpoly_equal_si(
255 A: *mut fmpq_mpoly_struct,
256 c: mp_limb_signed_t,
257 ctx: *mut fmpq_mpoly_ctx_struct,
258 ) -> ::std::os::raw::c_int;
259}
260extern "C" {
261 pub fn fmpq_mpoly_is_zero(
262 A: *mut fmpq_mpoly_struct,
263 ctx: *mut fmpq_mpoly_ctx_struct,
264 ) -> ::std::os::raw::c_int;
265}
266extern "C" {
267 pub fn fmpq_mpoly_is_one(
268 A: *mut fmpq_mpoly_struct,
269 ctx: *mut fmpq_mpoly_ctx_struct,
270 ) -> ::std::os::raw::c_int;
271}
272extern "C" {
273 pub fn fmpq_mpoly_degrees_fit_si(
274 A: *mut fmpq_mpoly_struct,
275 ctx: *mut fmpq_mpoly_ctx_struct,
276 ) -> ::std::os::raw::c_int;
277}
278extern "C" {
279 pub fn fmpq_mpoly_degrees_fmpz(
280 degs: *mut *mut fmpz,
281 A: *mut fmpq_mpoly_struct,
282 ctx: *mut fmpq_mpoly_ctx_struct,
283 );
284}
285extern "C" {
286 pub fn fmpq_mpoly_degrees_si(
287 degs: *mut mp_limb_signed_t,
288 A: *mut fmpq_mpoly_struct,
289 ctx: *mut fmpq_mpoly_ctx_struct,
290 );
291}
292extern "C" {
293 pub fn fmpq_mpoly_degree_fmpz(
294 deg: *mut fmpz,
295 A: *mut fmpq_mpoly_struct,
296 var: mp_limb_signed_t,
297 ctx: *mut fmpq_mpoly_ctx_struct,
298 );
299}
300extern "C" {
301 pub fn fmpq_mpoly_degree_si(
302 A: *mut fmpq_mpoly_struct,
303 var: mp_limb_signed_t,
304 ctx: *mut fmpq_mpoly_ctx_struct,
305 ) -> mp_limb_signed_t;
306}
307extern "C" {
308 pub fn fmpq_mpoly_total_degree_fits_si(
309 A: *mut fmpq_mpoly_struct,
310 ctx: *mut fmpq_mpoly_ctx_struct,
311 ) -> ::std::os::raw::c_int;
312}
313extern "C" {
314 pub fn fmpq_mpoly_total_degree_fmpz(
315 tdeg: *mut fmpz,
316 A: *mut fmpq_mpoly_struct,
317 ctx: *mut fmpq_mpoly_ctx_struct,
318 );
319}
320extern "C" {
321 pub fn fmpq_mpoly_total_degree_si(
322 A: *mut fmpq_mpoly_struct,
323 ctx: *mut fmpq_mpoly_ctx_struct,
324 ) -> mp_limb_signed_t;
325}
326extern "C" {
327 pub fn fmpq_mpoly_used_vars(
328 used: *mut ::std::os::raw::c_int,
329 A: *mut fmpq_mpoly_struct,
330 ctx: *mut fmpq_mpoly_ctx_struct,
331 );
332}
333extern "C" {
334 pub fn fmpq_mpoly_get_denominator(
335 d: *mut fmpz,
336 A: *mut fmpq_mpoly_struct,
337 ctx: *mut fmpq_mpoly_ctx_struct,
338 );
339}
340extern "C" {
341 pub fn fmpq_mpoly_is_monic(
342 A: *mut fmpq_mpoly_struct,
343 ctx: *mut fmpq_mpoly_ctx_struct,
344 ) -> ::std::os::raw::c_int;
345}
346extern "C" {
347 pub fn fmpq_mpoly_get_coeff_fmpq_monomial(
348 c: *mut fmpq,
349 A: *mut fmpq_mpoly_struct,
350 M: *mut fmpq_mpoly_struct,
351 ctx: *mut fmpq_mpoly_ctx_struct,
352 );
353}
354extern "C" {
355 pub fn fmpq_mpoly_set_coeff_fmpq_monomial(
356 A: *mut fmpq_mpoly_struct,
357 c: *mut fmpq,
358 M: *mut fmpq_mpoly_struct,
359 ctx: *mut fmpq_mpoly_ctx_struct,
360 );
361}
362extern "C" {
363 pub fn _fmpq_mpoly_set_coeff_fmpq_fmpz(
364 A: *mut fmpq_mpoly_struct,
365 c: *mut fmpq,
366 exp: *const fmpz,
367 ctx: *mut fmpq_mpoly_ctx_struct,
368 );
369}
370extern "C" {
371 pub fn fmpq_mpoly_set_coeff_fmpq_fmpz(
372 A: *mut fmpq_mpoly_struct,
373 c: *mut fmpq,
374 exp: *const *mut fmpz,
375 ctx: *mut fmpq_mpoly_ctx_struct,
376 );
377}
378extern "C" {
379 pub fn fmpq_mpoly_set_coeff_fmpq_ui(
380 A: *mut fmpq_mpoly_struct,
381 c: *mut fmpq,
382 exp: *const mp_limb_t,
383 ctx: *mut fmpq_mpoly_ctx_struct,
384 );
385}
386extern "C" {
387 pub fn _fmpq_mpoly_get_coeff_fmpq_fmpz(
388 c: *mut fmpq,
389 A: *mut fmpq_mpoly_struct,
390 exp: *const fmpz,
391 ctx: *mut fmpq_mpoly_ctx_struct,
392 );
393}
394extern "C" {
395 pub fn fmpq_mpoly_get_coeff_fmpq_fmpz(
396 c: *mut fmpq,
397 A: *mut fmpq_mpoly_struct,
398 exp: *const *mut fmpz,
399 ctx: *mut fmpq_mpoly_ctx_struct,
400 );
401}
402extern "C" {
403 pub fn fmpq_mpoly_get_coeff_fmpq_ui(
404 c: *mut fmpq,
405 A: *mut fmpq_mpoly_struct,
406 exp: *const mp_limb_t,
407 ctx: *mut fmpq_mpoly_ctx_struct,
408 );
409}
410extern "C" {
411 pub fn fmpq_mpoly_get_coeff_vars_ui(
412 C: *mut fmpq_mpoly_struct,
413 A: *mut fmpq_mpoly_struct,
414 vars: *const mp_limb_signed_t,
415 exps: *const mp_limb_t,
416 length: mp_limb_signed_t,
417 ctx: *mut fmpq_mpoly_ctx_struct,
418 );
419}
420extern "C" {
421 pub fn fmpq_mpoly_is_fmpq_poly(
422 A: *mut fmpq_mpoly_struct,
423 var: mp_limb_signed_t,
424 ctx: *mut fmpq_mpoly_ctx_struct,
425 ) -> ::std::os::raw::c_int;
426}
427extern "C" {
428 pub fn fmpq_mpoly_get_fmpq_poly(
429 A: *mut fmpq_poly_struct,
430 B: *mut fmpq_mpoly_struct,
431 var: mp_limb_signed_t,
432 ctx: *mut fmpq_mpoly_ctx_struct,
433 ) -> ::std::os::raw::c_int;
434}
435extern "C" {
436 pub fn fmpq_mpoly_set_fmpq_poly(
437 A: *mut fmpq_mpoly_struct,
438 B: *mut fmpq_poly_struct,
439 var: mp_limb_signed_t,
440 ctx: *mut fmpq_mpoly_ctx_struct,
441 );
442}
443extern "C" {
444 pub fn fmpq_mpoly_cmp(
445 A: *mut fmpq_mpoly_struct,
446 B: *mut fmpq_mpoly_struct,
447 ctx: *mut fmpq_mpoly_ctx_struct,
448 ) -> ::std::os::raw::c_int;
449}
450extern "C" {
451 pub fn fmpq_mpoly_is_canonical(
452 A: *mut fmpq_mpoly_struct,
453 ctx: *mut fmpq_mpoly_ctx_struct,
454 ) -> ::std::os::raw::c_int;
455}
456extern "C" {
457 pub fn fmpq_mpoly_length(
458 A: *mut fmpq_mpoly_struct,
459 ctx: *mut fmpq_mpoly_ctx_struct,
460 ) -> mp_limb_signed_t;
461}
462extern "C" {
463 pub fn fmpq_mpoly_resize(
464 A: *mut fmpq_mpoly_struct,
465 new_length: mp_limb_signed_t,
466 ctx: *mut fmpq_mpoly_ctx_struct,
467 );
468}
469extern "C" {
470 pub fn fmpq_mpoly_get_term_coeff_fmpq(
471 c: *mut fmpq,
472 A: *mut fmpq_mpoly_struct,
473 i: mp_limb_signed_t,
474 ctx: *mut fmpq_mpoly_ctx_struct,
475 );
476}
477extern "C" {
478 pub fn fmpq_mpoly_set_term_coeff_fmpq(
479 A: *mut fmpq_mpoly_struct,
480 i: mp_limb_signed_t,
481 c: *mut fmpq,
482 ctx: *mut fmpq_mpoly_ctx_struct,
483 );
484}
485extern "C" {
486 pub fn fmpq_mpoly_term_exp_fits_ui(
487 A: *mut fmpq_mpoly_struct,
488 i: mp_limb_signed_t,
489 ctx: *mut fmpq_mpoly_ctx_struct,
490 ) -> ::std::os::raw::c_int;
491}
492extern "C" {
493 pub fn fmpq_mpoly_term_exp_fits_si(
494 A: *mut fmpq_mpoly_struct,
495 i: mp_limb_signed_t,
496 ctx: *mut fmpq_mpoly_ctx_struct,
497 ) -> ::std::os::raw::c_int;
498}
499extern "C" {
500 pub fn fmpq_mpoly_get_term_exp_fmpz(
501 exps: *mut *mut fmpz,
502 A: *mut fmpq_mpoly_struct,
503 i: mp_limb_signed_t,
504 ctx: *mut fmpq_mpoly_ctx_struct,
505 );
506}
507extern "C" {
508 pub fn fmpq_mpoly_get_term_exp_ui(
509 exps: *mut mp_limb_t,
510 A: *mut fmpq_mpoly_struct,
511 i: mp_limb_signed_t,
512 ctx: *mut fmpq_mpoly_ctx_struct,
513 );
514}
515extern "C" {
516 pub fn fmpq_mpoly_get_term_exp_si(
517 exps: *mut mp_limb_signed_t,
518 A: *mut fmpq_mpoly_struct,
519 i: mp_limb_signed_t,
520 ctx: *mut fmpq_mpoly_ctx_struct,
521 );
522}
523extern "C" {
524 pub fn fmpq_mpoly_get_term_var_exp_ui(
525 A: *mut fmpq_mpoly_struct,
526 i: mp_limb_signed_t,
527 var: mp_limb_signed_t,
528 ctx: *mut fmpq_mpoly_ctx_struct,
529 ) -> mp_limb_t;
530}
531extern "C" {
532 pub fn fmpq_mpoly_get_term_var_exp_si(
533 A: *mut fmpq_mpoly_struct,
534 i: mp_limb_signed_t,
535 var: mp_limb_signed_t,
536 ctx: *mut fmpq_mpoly_ctx_struct,
537 ) -> mp_limb_signed_t;
538}
539extern "C" {
540 pub fn fmpq_mpoly_set_term_exp_fmpz(
541 A: *mut fmpq_mpoly_struct,
542 i: mp_limb_signed_t,
543 exps: *const *mut fmpz,
544 ctx: *mut fmpq_mpoly_ctx_struct,
545 );
546}
547extern "C" {
548 pub fn fmpq_mpoly_set_term_exp_ui(
549 A: *mut fmpq_mpoly_struct,
550 i: mp_limb_signed_t,
551 exps: *const mp_limb_t,
552 ctx: *mut fmpq_mpoly_ctx_struct,
553 );
554}
555extern "C" {
556 pub fn fmpq_mpoly_get_term(
557 M: *mut fmpq_mpoly_struct,
558 A: *mut fmpq_mpoly_struct,
559 i: mp_limb_signed_t,
560 ctx: *mut fmpq_mpoly_ctx_struct,
561 );
562}
563extern "C" {
564 pub fn fmpq_mpoly_get_term_monomial(
565 M: *mut fmpq_mpoly_struct,
566 A: *mut fmpq_mpoly_struct,
567 i: mp_limb_signed_t,
568 ctx: *mut fmpq_mpoly_ctx_struct,
569 );
570}
571extern "C" {
572 pub fn fmpq_mpoly_push_term_fmpq_fmpz(
573 A: *mut fmpq_mpoly_struct,
574 c: *mut fmpq,
575 exp: *const *mut fmpz,
576 ctx: *mut fmpq_mpoly_ctx_struct,
577 );
578}
579extern "C" {
580 pub fn fmpq_mpoly_push_term_fmpz_fmpz(
581 A: *mut fmpq_mpoly_struct,
582 c: *mut fmpz,
583 exp: *const *mut fmpz,
584 ctx: *mut fmpq_mpoly_ctx_struct,
585 );
586}
587extern "C" {
588 pub fn fmpq_mpoly_push_term_ui_fmpz(
589 A: *mut fmpq_mpoly_struct,
590 c: mp_limb_t,
591 exp: *const *mut fmpz,
592 ctx: *mut fmpq_mpoly_ctx_struct,
593 );
594}
595extern "C" {
596 pub fn fmpq_mpoly_push_term_si_fmpz(
597 A: *mut fmpq_mpoly_struct,
598 c: mp_limb_signed_t,
599 exp: *const *mut fmpz,
600 ctx: *mut fmpq_mpoly_ctx_struct,
601 );
602}
603extern "C" {
604 pub fn fmpq_mpoly_push_term_fmpq_ui(
605 A: *mut fmpq_mpoly_struct,
606 c: *mut fmpq,
607 exp: *const mp_limb_t,
608 ctx: *mut fmpq_mpoly_ctx_struct,
609 );
610}
611extern "C" {
612 pub fn fmpq_mpoly_push_term_fmpz_ui(
613 A: *mut fmpq_mpoly_struct,
614 c: *mut fmpz,
615 exp: *const mp_limb_t,
616 ctx: *mut fmpq_mpoly_ctx_struct,
617 );
618}
619extern "C" {
620 pub fn fmpq_mpoly_push_term_ui_ui(
621 A: *mut fmpq_mpoly_struct,
622 c: mp_limb_t,
623 exp: *const mp_limb_t,
624 ctx: *mut fmpq_mpoly_ctx_struct,
625 );
626}
627extern "C" {
628 pub fn fmpq_mpoly_push_term_si_ui(
629 A: *mut fmpq_mpoly_struct,
630 c: mp_limb_signed_t,
631 exp: *const mp_limb_t,
632 ctx: *mut fmpq_mpoly_ctx_struct,
633 );
634}
635extern "C" {
636 pub fn fmpq_mpoly_reduce(A: *mut fmpq_mpoly_struct, ctx: *mut fmpq_mpoly_ctx_struct);
637}
638extern "C" {
639 pub fn fmpq_mpoly_reduce_easy(
640 A: *mut fmpq_mpoly_struct,
641 easy_length: mp_limb_signed_t,
642 arg1: *mut fmpq_mpoly_ctx_struct,
643 );
644}
645extern "C" {
646 pub fn fmpq_mpoly_sort_terms(A: *mut fmpq_mpoly_struct, ctx: *mut fmpq_mpoly_ctx_struct);
647}
648extern "C" {
649 pub fn fmpq_mpoly_combine_like_terms(
650 A: *mut fmpq_mpoly_struct,
651 ctx: *mut fmpq_mpoly_ctx_struct,
652 );
653}
654extern "C" {
655 pub fn fmpq_mpoly_reverse(
656 A: *mut fmpq_mpoly_struct,
657 B: *mut fmpq_mpoly_struct,
658 ctx: *mut fmpq_mpoly_ctx_struct,
659 );
660}
661extern "C" {
662 pub fn fmpq_mpoly_assert_canonical(
663 poly: *mut fmpq_mpoly_struct,
664 ctx: *mut fmpq_mpoly_ctx_struct,
665 );
666}
667extern "C" {
668 pub fn _fmpq_mpoly_push_rescale(
669 A: *mut fmpq_mpoly_struct,
670 C: *mut fmpq,
671 ctx: *mut fmpq_mpoly_ctx_struct,
672 );
673}
674extern "C" {
675 pub fn fmpq_mpoly_randtest_bounds(
676 A: *mut fmpq_mpoly_struct,
677 state: *mut flint_rand_s,
678 length: mp_limb_signed_t,
679 coeff_bits: mp_limb_t,
680 exp_bounds: *mut mp_limb_t,
681 ctx: *mut fmpq_mpoly_ctx_struct,
682 );
683}
684extern "C" {
685 pub fn fmpq_mpoly_randtest_bound(
686 A: *mut fmpq_mpoly_struct,
687 state: *mut flint_rand_s,
688 length: mp_limb_signed_t,
689 coeff_bits: mp_limb_t,
690 exp_bound: mp_limb_t,
691 ctx: *mut fmpq_mpoly_ctx_struct,
692 );
693}
694extern "C" {
695 pub fn fmpq_mpoly_randtest_bits(
696 A: *mut fmpq_mpoly_struct,
697 state: *mut flint_rand_s,
698 length: mp_limb_signed_t,
699 coeff_bits: mp_limb_t,
700 exp_bits: mp_limb_t,
701 ctx: *mut fmpq_mpoly_ctx_struct,
702 );
703}
704extern "C" {
705 pub fn fmpq_mpoly_add_fmpq(
706 A: *mut fmpq_mpoly_struct,
707 B: *mut fmpq_mpoly_struct,
708 c: *mut fmpq,
709 ctx: *mut fmpq_mpoly_ctx_struct,
710 );
711}
712extern "C" {
713 pub fn fmpq_mpoly_add_fmpz(
714 A: *mut fmpq_mpoly_struct,
715 B: *mut fmpq_mpoly_struct,
716 c: *mut fmpz,
717 ctx: *mut fmpq_mpoly_ctx_struct,
718 );
719}
720extern "C" {
721 pub fn fmpq_mpoly_add_ui(
722 A: *mut fmpq_mpoly_struct,
723 B: *mut fmpq_mpoly_struct,
724 c: mp_limb_t,
725 ctx: *mut fmpq_mpoly_ctx_struct,
726 );
727}
728extern "C" {
729 pub fn fmpq_mpoly_add_si(
730 A: *mut fmpq_mpoly_struct,
731 B: *mut fmpq_mpoly_struct,
732 c: mp_limb_signed_t,
733 ctx: *mut fmpq_mpoly_ctx_struct,
734 );
735}
736extern "C" {
737 pub fn fmpq_mpoly_sub_fmpq(
738 A: *mut fmpq_mpoly_struct,
739 B: *mut fmpq_mpoly_struct,
740 c: *mut fmpq,
741 ctx: *mut fmpq_mpoly_ctx_struct,
742 );
743}
744extern "C" {
745 pub fn fmpq_mpoly_sub_fmpz(
746 A: *mut fmpq_mpoly_struct,
747 B: *mut fmpq_mpoly_struct,
748 c: *mut fmpz,
749 ctx: *mut fmpq_mpoly_ctx_struct,
750 );
751}
752extern "C" {
753 pub fn fmpq_mpoly_sub_ui(
754 A: *mut fmpq_mpoly_struct,
755 B: *mut fmpq_mpoly_struct,
756 c: mp_limb_t,
757 ctx: *mut fmpq_mpoly_ctx_struct,
758 );
759}
760extern "C" {
761 pub fn fmpq_mpoly_sub_si(
762 A: *mut fmpq_mpoly_struct,
763 B: *mut fmpq_mpoly_struct,
764 c: mp_limb_signed_t,
765 ctx: *mut fmpq_mpoly_ctx_struct,
766 );
767}
768extern "C" {
769 pub fn fmpq_mpoly_add(
770 A: *mut fmpq_mpoly_struct,
771 B: *mut fmpq_mpoly_struct,
772 C: *mut fmpq_mpoly_struct,
773 ctx: *mut fmpq_mpoly_ctx_struct,
774 );
775}
776extern "C" {
777 pub fn fmpq_mpoly_sub(
778 A: *mut fmpq_mpoly_struct,
779 B: *mut fmpq_mpoly_struct,
780 C: *mut fmpq_mpoly_struct,
781 ctx: *mut fmpq_mpoly_ctx_struct,
782 );
783}
784extern "C" {
785 pub fn fmpq_mpoly_neg(
786 A: *mut fmpq_mpoly_struct,
787 B: *mut fmpq_mpoly_struct,
788 ctx: *mut fmpq_mpoly_ctx_struct,
789 );
790}
791extern "C" {
792 pub fn fmpq_mpoly_scalar_mul_fmpq(
793 A: *mut fmpq_mpoly_struct,
794 B: *mut fmpq_mpoly_struct,
795 c: *mut fmpq,
796 ctx: *mut fmpq_mpoly_ctx_struct,
797 );
798}
799extern "C" {
800 pub fn fmpq_mpoly_scalar_mul_fmpz(
801 A: *mut fmpq_mpoly_struct,
802 B: *mut fmpq_mpoly_struct,
803 c: *mut fmpz,
804 ctx: *mut fmpq_mpoly_ctx_struct,
805 );
806}
807extern "C" {
808 pub fn fmpq_mpoly_scalar_mul_ui(
809 A: *mut fmpq_mpoly_struct,
810 B: *mut fmpq_mpoly_struct,
811 c: mp_limb_t,
812 ctx: *mut fmpq_mpoly_ctx_struct,
813 );
814}
815extern "C" {
816 pub fn fmpq_mpoly_scalar_mul_si(
817 A: *mut fmpq_mpoly_struct,
818 B: *mut fmpq_mpoly_struct,
819 c: mp_limb_signed_t,
820 ctx: *mut fmpq_mpoly_ctx_struct,
821 );
822}
823extern "C" {
824 pub fn fmpq_mpoly_scalar_div_fmpq(
825 A: *mut fmpq_mpoly_struct,
826 B: *mut fmpq_mpoly_struct,
827 c: *mut fmpq,
828 ctx: *mut fmpq_mpoly_ctx_struct,
829 );
830}
831extern "C" {
832 pub fn fmpq_mpoly_scalar_div_fmpz(
833 A: *mut fmpq_mpoly_struct,
834 B: *mut fmpq_mpoly_struct,
835 c: *mut fmpz,
836 ctx: *mut fmpq_mpoly_ctx_struct,
837 );
838}
839extern "C" {
840 pub fn fmpq_mpoly_scalar_div_ui(
841 A: *mut fmpq_mpoly_struct,
842 B: *mut fmpq_mpoly_struct,
843 c: mp_limb_t,
844 ctx: *mut fmpq_mpoly_ctx_struct,
845 );
846}
847extern "C" {
848 pub fn fmpq_mpoly_scalar_div_si(
849 A: *mut fmpq_mpoly_struct,
850 B: *mut fmpq_mpoly_struct,
851 c: mp_limb_signed_t,
852 ctx: *mut fmpq_mpoly_ctx_struct,
853 );
854}
855extern "C" {
856 pub fn fmpq_mpoly_make_monic(
857 A: *mut fmpq_mpoly_struct,
858 B: *mut fmpq_mpoly_struct,
859 ctx: *mut fmpq_mpoly_ctx_struct,
860 );
861}
862extern "C" {
863 pub fn _fmpq_mpoly_make_monic_inplace(
864 A: *mut fmpq_mpoly_struct,
865 ctx: *mut fmpq_mpoly_ctx_struct,
866 );
867}
868extern "C" {
869 pub fn fmpq_mpoly_derivative(
870 A: *mut fmpq_mpoly_struct,
871 B: *mut fmpq_mpoly_struct,
872 var: mp_limb_signed_t,
873 ctx: *mut fmpq_mpoly_ctx_struct,
874 );
875}
876extern "C" {
877 pub fn fmpq_mpoly_integral(
878 A: *mut fmpq_mpoly_struct,
879 B: *mut fmpq_mpoly_struct,
880 var: mp_limb_signed_t,
881 ctx: *mut fmpq_mpoly_ctx_struct,
882 );
883}
884extern "C" {
885 pub fn _fmpq_mpoly_rescale(
886 Acontent: *mut fmpq,
887 Acoeff: *mut fmpz,
888 B: *mut fmpq_mpoly_struct,
889 scales: *const fmpq,
890 ctx: *mut fmpq_mpoly_ctx_struct,
891 ) -> ::std::os::raw::c_int;
892}
893extern "C" {
894 pub fn fmpq_mpoly_evaluate_all_fmpq(
895 ev: *mut fmpq,
896 A: *mut fmpq_mpoly_struct,
897 vals: *const *mut fmpq,
898 ctx: *mut fmpq_mpoly_ctx_struct,
899 ) -> ::std::os::raw::c_int;
900}
901extern "C" {
902 pub fn fmpq_mpoly_evaluate_one_fmpq(
903 A: *mut fmpq_mpoly_struct,
904 B: *mut fmpq_mpoly_struct,
905 var: mp_limb_signed_t,
906 val: *mut fmpq,
907 ctx: *mut fmpq_mpoly_ctx_struct,
908 ) -> ::std::os::raw::c_int;
909}
910extern "C" {
911 pub fn fmpq_mpoly_compose_fmpq_poly(
912 A: *mut fmpq_poly_struct,
913 B: *mut fmpq_mpoly_struct,
914 C: *const *mut fmpq_poly_struct,
915 ctxB: *mut fmpq_mpoly_ctx_struct,
916 ) -> ::std::os::raw::c_int;
917}
918extern "C" {
919 pub fn fmpq_mpoly_compose_fmpq_mpoly(
920 A: *mut fmpq_mpoly_struct,
921 B: *mut fmpq_mpoly_struct,
922 C: *const *mut fmpq_mpoly_struct,
923 ctxB: *mut fmpq_mpoly_ctx_struct,
924 ctxAC: *mut fmpq_mpoly_ctx_struct,
925 ) -> ::std::os::raw::c_int;
926}
927extern "C" {
928 pub fn fmpq_mpoly_compose_fmpq_mpoly_gen(
929 A: *mut fmpq_mpoly_struct,
930 B: *mut fmpq_mpoly_struct,
931 c: *const mp_limb_signed_t,
932 ctxB: *mut fmpq_mpoly_ctx_struct,
933 ctxAC: *mut fmpq_mpoly_ctx_struct,
934 );
935}
936extern "C" {
937 pub fn fmpq_mpoly_mul(
938 A: *mut fmpq_mpoly_struct,
939 B: *mut fmpq_mpoly_struct,
940 C: *mut fmpq_mpoly_struct,
941 ctx: *mut fmpq_mpoly_ctx_struct,
942 );
943}
944extern "C" {
945 pub fn fmpq_mpoly_pow_fmpz(
946 A: *mut fmpq_mpoly_struct,
947 B: *mut fmpq_mpoly_struct,
948 k: *mut fmpz,
949 ctx: *mut fmpq_mpoly_ctx_struct,
950 ) -> ::std::os::raw::c_int;
951}
952extern "C" {
953 pub fn fmpq_mpoly_pow_ui(
954 A: *mut fmpq_mpoly_struct,
955 B: *mut fmpq_mpoly_struct,
956 k: mp_limb_t,
957 ctx: *mut fmpq_mpoly_ctx_struct,
958 ) -> ::std::os::raw::c_int;
959}
960extern "C" {
961 pub fn fmpq_mpoly_divides(
962 poly1: *mut fmpq_mpoly_struct,
963 poly2: *mut fmpq_mpoly_struct,
964 poly3: *mut fmpq_mpoly_struct,
965 ctx: *mut fmpq_mpoly_ctx_struct,
966 ) -> ::std::os::raw::c_int;
967}
968extern "C" {
969 pub fn fmpq_mpoly_div(
970 q: *mut fmpq_mpoly_struct,
971 poly2: *mut fmpq_mpoly_struct,
972 poly3: *mut fmpq_mpoly_struct,
973 ctx: *mut fmpq_mpoly_ctx_struct,
974 );
975}
976extern "C" {
977 pub fn fmpq_mpoly_divrem(
978 q: *mut fmpq_mpoly_struct,
979 r: *mut fmpq_mpoly_struct,
980 poly2: *mut fmpq_mpoly_struct,
981 poly3: *mut fmpq_mpoly_struct,
982 ctx: *mut fmpq_mpoly_ctx_struct,
983 );
984}
985extern "C" {
986 pub fn fmpq_mpoly_divrem_ideal(
987 q: *mut *mut fmpq_mpoly_struct,
988 r: *mut fmpq_mpoly_struct,
989 poly2: *mut fmpq_mpoly_struct,
990 poly3: *const *mut fmpq_mpoly_struct,
991 len: mp_limb_signed_t,
992 ctx: *mut fmpq_mpoly_ctx_struct,
993 );
994}
995extern "C" {
996 pub fn fmpq_mpoly_sqrt(
997 Q: *mut fmpq_mpoly_struct,
998 A: *mut fmpq_mpoly_struct,
999 ctx: *mut fmpq_mpoly_ctx_struct,
1000 ) -> ::std::os::raw::c_int;
1001}
1002extern "C" {
1003 pub fn fmpq_mpoly_is_square(
1004 A: *mut fmpq_mpoly_struct,
1005 ctx: *mut fmpq_mpoly_ctx_struct,
1006 ) -> ::std::os::raw::c_int;
1007}
1008extern "C" {
1009 pub fn fmpq_mpoly_content(
1010 g: *mut fmpq,
1011 A: *mut fmpq_mpoly_struct,
1012 ctx: *mut fmpq_mpoly_ctx_struct,
1013 );
1014}
1015extern "C" {
1016 pub fn fmpq_mpoly_term_content(
1017 M: *mut fmpq_mpoly_struct,
1018 A: *mut fmpq_mpoly_struct,
1019 ctx: *mut fmpq_mpoly_ctx_struct,
1020 );
1021}
1022extern "C" {
1023 pub fn fmpq_mpoly_content_vars(
1024 g: *mut fmpq_mpoly_struct,
1025 A: *mut fmpq_mpoly_struct,
1026 vars: *mut mp_limb_signed_t,
1027 vars_length: mp_limb_signed_t,
1028 ctx: *mut fmpq_mpoly_ctx_struct,
1029 ) -> ::std::os::raw::c_int;
1030}
1031extern "C" {
1032 pub fn fmpq_mpoly_gcd(
1033 G: *mut fmpq_mpoly_struct,
1034 A: *mut fmpq_mpoly_struct,
1035 B: *mut fmpq_mpoly_struct,
1036 ctx: *mut fmpq_mpoly_ctx_struct,
1037 ) -> ::std::os::raw::c_int;
1038}
1039extern "C" {
1040 pub fn fmpq_mpoly_inflate(
1041 A: *mut fmpq_mpoly_struct,
1042 B: *mut fmpq_mpoly_struct,
1043 shift: *const fmpz,
1044 stride: *const fmpz,
1045 ctx: *mut fmpq_mpoly_ctx_struct,
1046 );
1047}
1048extern "C" {
1049 pub fn fmpq_mpoly_gcd_cofactors(
1050 G: *mut fmpq_mpoly_struct,
1051 Abar: *mut fmpq_mpoly_struct,
1052 Bbar: *mut fmpq_mpoly_struct,
1053 A: *mut fmpq_mpoly_struct,
1054 B: *mut fmpq_mpoly_struct,
1055 ctx: *mut fmpq_mpoly_ctx_struct,
1056 ) -> ::std::os::raw::c_int;
1057}
1058extern "C" {
1059 pub fn fmpq_mpoly_gcd_hensel(
1060 G: *mut fmpq_mpoly_struct,
1061 A: *mut fmpq_mpoly_struct,
1062 B: *mut fmpq_mpoly_struct,
1063 ctx: *mut fmpq_mpoly_ctx_struct,
1064 ) -> ::std::os::raw::c_int;
1065}
1066extern "C" {
1067 pub fn fmpq_mpoly_gcd_brown(
1068 G: *mut fmpq_mpoly_struct,
1069 A: *mut fmpq_mpoly_struct,
1070 B: *mut fmpq_mpoly_struct,
1071 ctx: *mut fmpq_mpoly_ctx_struct,
1072 ) -> ::std::os::raw::c_int;
1073}
1074extern "C" {
1075 pub fn fmpq_mpoly_gcd_subresultant(
1076 G: *mut fmpq_mpoly_struct,
1077 A: *mut fmpq_mpoly_struct,
1078 B: *mut fmpq_mpoly_struct,
1079 ctx: *mut fmpq_mpoly_ctx_struct,
1080 ) -> ::std::os::raw::c_int;
1081}
1082extern "C" {
1083 pub fn fmpq_mpoly_gcd_zippel(
1084 G: *mut fmpq_mpoly_struct,
1085 A: *mut fmpq_mpoly_struct,
1086 B: *mut fmpq_mpoly_struct,
1087 ctx: *mut fmpq_mpoly_ctx_struct,
1088 ) -> ::std::os::raw::c_int;
1089}
1090extern "C" {
1091 pub fn fmpq_mpoly_gcd_zippel2(
1092 G: *mut fmpq_mpoly_struct,
1093 A: *mut fmpq_mpoly_struct,
1094 B: *mut fmpq_mpoly_struct,
1095 ctx: *mut fmpq_mpoly_ctx_struct,
1096 ) -> ::std::os::raw::c_int;
1097}
1098extern "C" {
1099 pub fn fmpq_mpoly_resultant(
1100 R: *mut fmpq_mpoly_struct,
1101 A: *mut fmpq_mpoly_struct,
1102 B: *mut fmpq_mpoly_struct,
1103 var: mp_limb_signed_t,
1104 ctx: *mut fmpq_mpoly_ctx_struct,
1105 ) -> ::std::os::raw::c_int;
1106}
1107extern "C" {
1108 pub fn fmpq_mpoly_discriminant(
1109 R: *mut fmpq_mpoly_struct,
1110 A: *mut fmpq_mpoly_struct,
1111 var: mp_limb_signed_t,
1112 ctx: *mut fmpq_mpoly_ctx_struct,
1113 ) -> ::std::os::raw::c_int;
1114}
1115extern "C" {
1116 pub fn mpoly_void_ring_init_fmpq_mpoly_ctx(
1117 R: *mut _bindgen_ty_22,
1118 ctx: *mut fmpq_mpoly_ctx_struct,
1119 );
1120}
1121extern "C" {
1122 pub fn fmpq_mpoly_repack_bits(
1123 A: *mut fmpq_mpoly_struct,
1124 B: *mut fmpq_mpoly_struct,
1125 Abits: mp_limb_t,
1126 ctx: *mut fmpq_mpoly_ctx_struct,
1127 ) -> ::std::os::raw::c_int;
1128}
1129extern "C" {
1130 pub fn fmpq_mpoly_univar_init(
1131 A: *mut fmpq_mpoly_univar_struct,
1132 ctx: *mut fmpq_mpoly_ctx_struct,
1133 );
1134}
1135extern "C" {
1136 pub fn fmpq_mpoly_univar_clear(
1137 A: *mut fmpq_mpoly_univar_struct,
1138 ctx: *mut fmpq_mpoly_ctx_struct,
1139 );
1140}
1141extern "C" {
1142 pub fn fmpq_mpoly_univar_fit_length(
1143 A: *mut fmpq_mpoly_univar_struct,
1144 length: mp_limb_signed_t,
1145 ctx: *mut fmpq_mpoly_ctx_struct,
1146 );
1147}
1148extern "C" {
1149 pub fn fmpq_mpoly_univar_print_pretty(
1150 A: *mut fmpq_mpoly_univar_struct,
1151 x: *mut *const ::std::os::raw::c_char,
1152 ctx: *mut fmpq_mpoly_ctx_struct,
1153 );
1154}
1155extern "C" {
1156 pub fn fmpq_mpoly_univar_assert_canonical(
1157 A: *mut fmpq_mpoly_univar_struct,
1158 ctx: *mut fmpq_mpoly_ctx_struct,
1159 );
1160}
1161extern "C" {
1162 pub fn fmpq_mpoly_to_univar(
1163 A: *mut fmpq_mpoly_univar_struct,
1164 B: *mut fmpq_mpoly_struct,
1165 var: mp_limb_signed_t,
1166 ctx: *mut fmpq_mpoly_ctx_struct,
1167 );
1168}
1169extern "C" {
1170 pub fn fmpq_mpoly_from_univar_bits(
1171 A: *mut fmpq_mpoly_struct,
1172 Abits: mp_limb_t,
1173 B: *mut fmpq_mpoly_univar_struct,
1174 var: mp_limb_signed_t,
1175 ctx: *mut fmpq_mpoly_ctx_struct,
1176 );
1177}
1178extern "C" {
1179 pub fn fmpq_mpoly_from_univar(
1180 A: *mut fmpq_mpoly_struct,
1181 B: *mut fmpq_mpoly_univar_struct,
1182 var: mp_limb_signed_t,
1183 ctx: *mut fmpq_mpoly_ctx_struct,
1184 );
1185}
1186extern "C" {
1187 pub fn fmpq_mpoly_univar_swap(
1188 A: *mut fmpq_mpoly_univar_struct,
1189 B: *mut fmpq_mpoly_univar_struct,
1190 ctx: *mut fmpq_mpoly_ctx_struct,
1191 );
1192}
1193extern "C" {
1194 pub fn fmpq_mpoly_univar_degree_fits_si(
1195 A: *mut fmpq_mpoly_univar_struct,
1196 ctx: *mut fmpq_mpoly_ctx_struct,
1197 ) -> ::std::os::raw::c_int;
1198}
1199extern "C" {
1200 pub fn fmpq_mpoly_univar_length(
1201 A: *mut fmpq_mpoly_univar_struct,
1202 ctx: *mut fmpq_mpoly_ctx_struct,
1203 ) -> mp_limb_signed_t;
1204}
1205extern "C" {
1206 pub fn fmpq_mpoly_univar_get_term_exp_si(
1207 A: *mut fmpq_mpoly_univar_struct,
1208 i: mp_limb_signed_t,
1209 ctx: *mut fmpq_mpoly_ctx_struct,
1210 ) -> mp_limb_signed_t;
1211}
1212extern "C" {
1213 pub fn fmpq_mpoly_univar_get_term_coeff(
1214 c: *mut fmpq_mpoly_struct,
1215 A: *mut fmpq_mpoly_univar_struct,
1216 i: mp_limb_signed_t,
1217 ctx: *mut fmpq_mpoly_ctx_struct,
1218 );
1219}
1220extern "C" {
1221 pub fn fmpq_mpoly_univar_swap_term_coeff(
1222 c: *mut fmpq_mpoly_struct,
1223 A: *mut fmpq_mpoly_univar_struct,
1224 i: mp_limb_signed_t,
1225 ctx: *mut fmpq_mpoly_ctx_struct,
1226 );
1227}
1228extern "C" {
1229 pub fn fmpq_mpoly_remainder_test(
1230 r: *mut fmpq_mpoly_struct,
1231 g: *mut fmpq_mpoly_struct,
1232 ctx: *mut fmpq_mpoly_ctx_struct,
1233 );
1234}
1235extern "C" {
1236 pub fn tuple_print(alpha: *mut fmpz, n: mp_limb_signed_t);
1237}
1238extern "C" {
1239 pub fn tuple_saturate(alpha: *mut fmpz, n: mp_limb_signed_t, m: mp_limb_signed_t);
1240}
1241extern "C" {
1242 pub fn tuple_next(alpha: *mut fmpz, n: mp_limb_signed_t);
1243}