flint_sys/
fmpq_mpoly.rs

1#![allow(non_camel_case_types)]
2
3//! *See the [FLINT documentation](http://flintlib.org/doc/fmpq_mpoly.html).
4
5use 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}