Skip to main content

flint_sys/
fmpq.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3use libc::*;
4use crate::deps::*;
5use crate::flint::*;
6
7
8pub const FMPQ_RECONSTRUCT_HGCD_CUTOFF: u32 = 500;
9#[doc = " 2x2 integer matrix"]
10#[repr(C)]
11pub struct _fmpz_mat22_struct {
12    pub _11: fmpz_t,
13    pub _12: fmpz_t,
14    pub _21: fmpz_t,
15    pub _22: fmpz_t,
16    pub det: libc::c_int,
17}
18#[allow(clippy::unnecessary_operation, clippy::identity_op)]
19const _: () = {
20    ["Size of _fmpz_mat22_struct"][::std::mem::size_of::<_fmpz_mat22_struct>() - 40usize];
21    ["Alignment of _fmpz_mat22_struct"][::std::mem::align_of::<_fmpz_mat22_struct>() - 8usize];
22    ["Offset of field: _fmpz_mat22_struct::_11"]
23        [::std::mem::offset_of!(_fmpz_mat22_struct, _11) - 0usize];
24    ["Offset of field: _fmpz_mat22_struct::_12"]
25        [::std::mem::offset_of!(_fmpz_mat22_struct, _12) - 8usize];
26    ["Offset of field: _fmpz_mat22_struct::_21"]
27        [::std::mem::offset_of!(_fmpz_mat22_struct, _21) - 16usize];
28    ["Offset of field: _fmpz_mat22_struct::_22"]
29        [::std::mem::offset_of!(_fmpz_mat22_struct, _22) - 24usize];
30    ["Offset of field: _fmpz_mat22_struct::det"]
31        [::std::mem::offset_of!(_fmpz_mat22_struct, det) - 32usize];
32};
33impl Default for _fmpz_mat22_struct {
34    fn default() -> Self {
35        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
36        unsafe {
37            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
38            s.assume_init()
39        }
40    }
41}
42pub type _fmpz_mat22_t = [_fmpz_mat22_struct; 1usize];
43#[repr(C)]
44pub struct _ui_mat22_struct {
45    pub _11: ulong,
46    pub _12: ulong,
47    pub _21: ulong,
48    pub _22: ulong,
49    pub det: libc::c_int,
50}
51#[allow(clippy::unnecessary_operation, clippy::identity_op)]
52const _: () = {
53    ["Size of _ui_mat22_struct"][::std::mem::size_of::<_ui_mat22_struct>() - 40usize];
54    ["Alignment of _ui_mat22_struct"][::std::mem::align_of::<_ui_mat22_struct>() - 8usize];
55    ["Offset of field: _ui_mat22_struct::_11"]
56        [::std::mem::offset_of!(_ui_mat22_struct, _11) - 0usize];
57    ["Offset of field: _ui_mat22_struct::_12"]
58        [::std::mem::offset_of!(_ui_mat22_struct, _12) - 8usize];
59    ["Offset of field: _ui_mat22_struct::_21"]
60        [::std::mem::offset_of!(_ui_mat22_struct, _21) - 16usize];
61    ["Offset of field: _ui_mat22_struct::_22"]
62        [::std::mem::offset_of!(_ui_mat22_struct, _22) - 24usize];
63    ["Offset of field: _ui_mat22_struct::det"]
64        [::std::mem::offset_of!(_ui_mat22_struct, det) - 32usize];
65};
66impl Default for _ui_mat22_struct {
67    fn default() -> Self {
68        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
69        unsafe {
70            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
71            s.assume_init()
72        }
73    }
74}
75pub type _ui_mat22_t = [_ui_mat22_struct; 1usize];
76#[doc = " resizable integer vector specific to cfrac functionality"]
77#[repr(C)]
78pub struct _fmpq_cfrac_list_struct {
79    pub array: *mut fmpz,
80    pub length: slong,
81    pub alloc: slong,
82    pub limit: slong,
83    pub alt_sum: fmpz_t,
84    pub want_alt_sum: libc::c_int,
85}
86#[allow(clippy::unnecessary_operation, clippy::identity_op)]
87const _: () = {
88    ["Size of _fmpq_cfrac_list_struct"][::std::mem::size_of::<_fmpq_cfrac_list_struct>() - 48usize];
89    ["Alignment of _fmpq_cfrac_list_struct"]
90        [::std::mem::align_of::<_fmpq_cfrac_list_struct>() - 8usize];
91    ["Offset of field: _fmpq_cfrac_list_struct::array"]
92        [::std::mem::offset_of!(_fmpq_cfrac_list_struct, array) - 0usize];
93    ["Offset of field: _fmpq_cfrac_list_struct::length"]
94        [::std::mem::offset_of!(_fmpq_cfrac_list_struct, length) - 8usize];
95    ["Offset of field: _fmpq_cfrac_list_struct::alloc"]
96        [::std::mem::offset_of!(_fmpq_cfrac_list_struct, alloc) - 16usize];
97    ["Offset of field: _fmpq_cfrac_list_struct::limit"]
98        [::std::mem::offset_of!(_fmpq_cfrac_list_struct, limit) - 24usize];
99    ["Offset of field: _fmpq_cfrac_list_struct::alt_sum"]
100        [::std::mem::offset_of!(_fmpq_cfrac_list_struct, alt_sum) - 32usize];
101    ["Offset of field: _fmpq_cfrac_list_struct::want_alt_sum"]
102        [::std::mem::offset_of!(_fmpq_cfrac_list_struct, want_alt_sum) - 40usize];
103};
104impl Default for _fmpq_cfrac_list_struct {
105    fn default() -> Self {
106        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
107        unsafe {
108            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
109            s.assume_init()
110        }
111    }
112}
113pub type _fmpq_cfrac_list_t = [_fmpq_cfrac_list_struct; 1usize];
114#[doc = " ball for closed interval [left, right]"]
115#[repr(C)]
116pub struct _fmpq_ball_struct {
117    pub left_num: fmpz_t,
118    pub left_den: fmpz_t,
119    pub right_num: fmpz_t,
120    pub right_den: fmpz_t,
121    pub exact: libc::c_int,
122}
123#[allow(clippy::unnecessary_operation, clippy::identity_op)]
124const _: () = {
125    ["Size of _fmpq_ball_struct"][::std::mem::size_of::<_fmpq_ball_struct>() - 40usize];
126    ["Alignment of _fmpq_ball_struct"][::std::mem::align_of::<_fmpq_ball_struct>() - 8usize];
127    ["Offset of field: _fmpq_ball_struct::left_num"]
128        [::std::mem::offset_of!(_fmpq_ball_struct, left_num) - 0usize];
129    ["Offset of field: _fmpq_ball_struct::left_den"]
130        [::std::mem::offset_of!(_fmpq_ball_struct, left_den) - 8usize];
131    ["Offset of field: _fmpq_ball_struct::right_num"]
132        [::std::mem::offset_of!(_fmpq_ball_struct, right_num) - 16usize];
133    ["Offset of field: _fmpq_ball_struct::right_den"]
134        [::std::mem::offset_of!(_fmpq_ball_struct, right_den) - 24usize];
135    ["Offset of field: _fmpq_ball_struct::exact"]
136        [::std::mem::offset_of!(_fmpq_ball_struct, exact) - 32usize];
137};
138impl Default for _fmpq_ball_struct {
139    fn default() -> Self {
140        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
141        unsafe {
142            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
143            s.assume_init()
144        }
145    }
146}
147pub type _fmpq_ball_t = [_fmpq_ball_struct; 1usize];
148extern "C" {
149    #[link_name = "fmpq_init__extern"]
150    pub fn fmpq_init(x: *mut fmpq);
151    #[link_name = "fmpq_clear__extern"]
152    pub fn fmpq_clear(x: *mut fmpq);
153    #[link_name = "fmpq_swap__extern"]
154    pub fn fmpq_swap(op1: *mut fmpq, op2: *mut fmpq);
155    pub fn _fmpq_canonicalise(num: *mut fmpz, den: *mut fmpz);
156    pub fn fmpq_canonicalise(res: *mut fmpq);
157    pub fn _fmpq_is_canonical(num: *const fmpz, den: *const fmpz) -> libc::c_int;
158    pub fn fmpq_is_canonical(x: *const fmpq) -> libc::c_int;
159    #[link_name = "fmpq_zero__extern"]
160    pub fn fmpq_zero(res: *mut fmpq);
161    #[link_name = "fmpq_one__extern"]
162    pub fn fmpq_one(res: *mut fmpq);
163    #[link_name = "fmpq_set__extern"]
164    pub fn fmpq_set(dest: *mut fmpq, src: *const fmpq);
165    pub fn flint_mpq_init_set_readonly(z: *mut __mpq_struct, f: *const fmpq);
166    pub fn flint_mpq_clear_readonly(z: *mut __mpq_struct);
167    pub fn fmpq_init_set_readonly(f: *mut fmpq, z: *const __mpq_struct);
168    pub fn fmpq_clear_readonly(f: *mut fmpq);
169    pub fn _fmpq_set_si(rnum: *mut fmpz, rden: *mut fmpz, p: slong, q: ulong);
170    pub fn _fmpq_set_ui(rnum: *mut fmpz, rden: *mut fmpz, p: ulong, q: ulong);
171    pub fn fmpq_set_si(res: *mut fmpq, p: slong, q: ulong);
172    pub fn fmpq_set_ui(res: *mut fmpq, p: ulong, q: ulong);
173    pub fn fmpq_set_fmpz_frac(res: *mut fmpq, p: *const fmpz, q: *const fmpz);
174    pub fn fmpq_set_mpq(dest: *mut fmpq, src: *const __mpq_struct);
175    #[link_name = "fmpq_set_fmpz__extern"]
176    pub fn fmpq_set_fmpz(q: *mut fmpq, n: *const fmpz);
177    pub fn fmpq_get_d(a: *const fmpq) -> f64;
178    pub fn fmpq_get_mpz_frac(a: *mut __mpz_struct, b: *mut __mpz_struct, c: *mut fmpq);
179    pub fn fmpq_get_mpq(dest: *mut __mpq_struct, src: *const fmpq);
180    pub fn fmpq_get_mpfr(r: *mut __mpfr_struct, x: *const fmpq, rnd: mpfr_rnd_t) -> libc::c_int;
181    pub fn fmpq_set_str(
182        res: *mut fmpq,
183        str_: *const libc::c_char,
184        base: libc::c_int,
185    ) -> libc::c_int;
186    pub fn _fmpq_get_str(
187        str_: *mut libc::c_char,
188        b: libc::c_int,
189        num: *const fmpz,
190        den: *const fmpz,
191    ) -> *mut libc::c_char;
192    pub fn fmpq_get_str(
193        str_: *mut libc::c_char,
194        b: libc::c_int,
195        x: *const fmpq,
196    ) -> *mut libc::c_char;
197    #[link_name = "fmpq_is_zero__extern"]
198    pub fn fmpq_is_zero(x: *const fmpq) -> libc::c_int;
199    #[link_name = "fmpq_is_one__extern"]
200    pub fn fmpq_is_one(x: *const fmpq) -> libc::c_int;
201    #[link_name = "fmpq_is_pm1__extern"]
202    pub fn fmpq_is_pm1(x: *const fmpq) -> libc::c_int;
203    #[link_name = "fmpq_sgn__extern"]
204    pub fn fmpq_sgn(x: *const fmpq) -> libc::c_int;
205    #[link_name = "fmpq_equal_si__extern"]
206    pub fn fmpq_equal_si(q: *mut fmpq, n: slong) -> libc::c_int;
207    #[link_name = "fmpq_equal_ui__extern"]
208    pub fn fmpq_equal_ui(q: *mut fmpq, n: ulong) -> libc::c_int;
209    #[link_name = "fmpq_equal__extern"]
210    pub fn fmpq_equal(x: *const fmpq, y: *const fmpq) -> libc::c_int;
211    pub fn _fmpq_cmp_si(p: *const fmpz, q: *const fmpz, c: slong) -> libc::c_int;
212    pub fn _fmpq_cmp_ui(p: *const fmpz, q: *const fmpz, c: ulong) -> libc::c_int;
213    pub fn _fmpq_cmp_fmpz(p: *const fmpz, q: *const fmpz, r: *const fmpz) -> libc::c_int;
214    pub fn _fmpq_cmp(p: *const fmpz, q: *const fmpz, r: *const fmpz, s: *const fmpz)
215        -> libc::c_int;
216    pub fn fmpq_cmp_si(x: *const fmpq, c: slong) -> libc::c_int;
217    pub fn fmpq_cmp_ui(x: *const fmpq, c: ulong) -> libc::c_int;
218    pub fn fmpq_cmp_fmpz(x: *const fmpq, y: *const fmpz) -> libc::c_int;
219    pub fn fmpq_cmp(x: *const fmpq, y: *const fmpq) -> libc::c_int;
220    pub fn fmpq_height_bits(x: *const fmpq) -> flint_bitcnt_t;
221    pub fn fmpq_height(height: *mut fmpz, x: *const fmpq);
222    #[link_name = "fmpq_neg__extern"]
223    pub fn fmpq_neg(dest: *mut fmpq, src: *const fmpq);
224    #[link_name = "fmpq_abs__extern"]
225    pub fn fmpq_abs(dest: *mut fmpq, src: *const fmpq);
226    pub fn _fmpq_add_si(rnum: *mut fmpz, rden: *mut fmpz, p: *const fmpz, q: *const fmpz, r: slong);
227    pub fn _fmpq_add_ui(rnum: *mut fmpz, rden: *mut fmpz, p: *const fmpz, q: *const fmpz, r: ulong);
228    pub fn _fmpq_add_fmpz(
229        rnum: *mut fmpz,
230        rden: *mut fmpz,
231        p: *const fmpz,
232        q: *const fmpz,
233        r: *const fmpz,
234    );
235    pub fn _fmpq_add_small(
236        rnum: *mut fmpz,
237        rden: *mut fmpz,
238        p1: slong,
239        q1: ulong,
240        p2: slong,
241        q2: ulong,
242    );
243    pub fn _fmpq_add(
244        rnum: *mut fmpz,
245        rden: *mut fmpz,
246        op1num: *const fmpz,
247        op1den: *const fmpz,
248        op2num: *const fmpz,
249        op2den: *const fmpz,
250    );
251    pub fn fmpq_add_si(res: *mut fmpq, op1: *const fmpq, c: slong);
252    pub fn fmpq_add_ui(res: *mut fmpq, op1: *const fmpq, c: ulong);
253    pub fn fmpq_add_fmpz(res: *mut fmpq, op1: *const fmpq, c: *const fmpz);
254    pub fn fmpq_add(res: *mut fmpq, op1: *const fmpq, op2: *const fmpq);
255    pub fn _fmpq_sub_si(rnum: *mut fmpz, rden: *mut fmpz, p: *const fmpz, q: *const fmpz, r: slong);
256    pub fn _fmpq_sub_ui(rnum: *mut fmpz, rden: *mut fmpz, p: *const fmpz, q: *const fmpz, r: ulong);
257    pub fn _fmpq_sub_fmpz(
258        rnum: *mut fmpz,
259        rden: *mut fmpz,
260        p: *const fmpz,
261        q: *const fmpz,
262        r: *const fmpz,
263    );
264    pub fn _fmpq_sub(
265        rnum: *mut fmpz,
266        rden: *mut fmpz,
267        op1num: *const fmpz,
268        op1den: *const fmpz,
269        op2num: *const fmpz,
270        op2den: *const fmpz,
271    );
272    pub fn fmpq_sub_si(res: *mut fmpq, op1: *const fmpq, c: slong);
273    pub fn fmpq_sub_ui(res: *mut fmpq, op1: *const fmpq, c: ulong);
274    pub fn fmpq_sub_fmpz(res: *mut fmpq, op1: *const fmpq, c: *const fmpz);
275    pub fn fmpq_sub(res: *mut fmpq, op1: *const fmpq, op2: *const fmpq);
276    pub fn _fmpq_mul_si(rnum: *mut fmpz, rden: *mut fmpz, p: *const fmpz, q: *const fmpz, r: slong);
277    pub fn _fmpq_mul_ui(rnum: *mut fmpz, rden: *mut fmpz, p: *const fmpz, q: *const fmpz, r: ulong);
278    pub fn _fmpq_mul_small(
279        rnum: *mut fmpz,
280        rden: *mut fmpz,
281        p1: slong,
282        q1: ulong,
283        p2: slong,
284        q2: ulong,
285    );
286    pub fn _fmpq_mul(
287        rnum: *mut fmpz,
288        rden: *mut fmpz,
289        op1num: *const fmpz,
290        op1den: *const fmpz,
291        op2num: *const fmpz,
292        op2den: *const fmpz,
293    );
294    pub fn fmpq_mul_si(res: *mut fmpq, op1: *const fmpq, c: slong);
295    pub fn fmpq_mul_ui(res: *mut fmpq, op1: *const fmpq, c: ulong);
296    pub fn fmpq_mul_fmpz(res: *mut fmpq, op: *const fmpq, x: *const fmpz);
297    pub fn fmpq_mul_2exp(res: *mut fmpq, x: *const fmpq, exp: flint_bitcnt_t);
298    pub fn fmpq_mul(res: *mut fmpq, op1: *const fmpq, op2: *const fmpq);
299    pub fn fmpq_inv(dest: *mut fmpq, src: *const fmpq);
300    pub fn _fmpq_div(
301        rnum: *mut fmpz,
302        rden: *mut fmpz,
303        op1num: *const fmpz,
304        op1den: *const fmpz,
305        op2num: *const fmpz,
306        op2den: *const fmpz,
307    );
308    pub fn fmpq_div_fmpz(res: *mut fmpq, op: *const fmpq, x: *const fmpz);
309    pub fn fmpq_div_2exp(res: *mut fmpq, x: *const fmpq, exp: flint_bitcnt_t);
310    pub fn fmpq_div(res: *mut fmpq, op1: *const fmpq, op2: *const fmpq);
311    pub fn _fmpq_pow_si(
312        rnum: *mut fmpz,
313        rden: *mut fmpz,
314        opnum: *const fmpz,
315        opden: *const fmpz,
316        e: slong,
317    );
318    pub fn fmpq_pow_si(rop: *mut fmpq, op: *const fmpq, e: slong);
319    pub fn fmpq_pow_fmpz(a: *mut fmpq, b: *const fmpq, e: *const fmpz) -> libc::c_int;
320    pub fn _fmpq_addmul(
321        rnum: *mut fmpz,
322        rden: *mut fmpz,
323        op1num: *const fmpz,
324        op1den: *const fmpz,
325        op2num: *const fmpz,
326        op2den: *const fmpz,
327    );
328    pub fn _fmpq_submul(
329        rnum: *mut fmpz,
330        rden: *mut fmpz,
331        op1num: *const fmpz,
332        op1den: *const fmpz,
333        op2num: *const fmpz,
334        op2den: *const fmpz,
335    );
336    pub fn fmpq_addmul(res: *mut fmpq, op1: *const fmpq, op2: *const fmpq);
337    pub fn fmpq_submul(res: *mut fmpq, op1: *const fmpq, op2: *const fmpq);
338    pub fn _fmpq_fprint(file: *mut FILE, num: *const fmpz, den: *const fmpz) -> libc::c_int;
339    pub fn fmpq_fprint(file: *mut FILE, x: *const fmpq) -> libc::c_int;
340    pub fn _fmpq_print(num: *const fmpz, den: *const fmpz) -> libc::c_int;
341    pub fn fmpq_print(x: *const fmpq) -> libc::c_int;
342    pub fn _fmpq_randtest(
343        num: *mut fmpz,
344        den: *mut fmpz,
345        state: *mut flint_rand_struct,
346        bits: flint_bitcnt_t,
347    );
348    pub fn _fmpq_randbits(
349        num: *mut fmpz,
350        den: *mut fmpz,
351        state: *mut flint_rand_struct,
352        bits: flint_bitcnt_t,
353    );
354    pub fn fmpq_randtest(res: *mut fmpq, state: *mut flint_rand_struct, bits: flint_bitcnt_t);
355    pub fn fmpq_randtest_not_zero(
356        res: *mut fmpq,
357        state: *mut flint_rand_struct,
358        bits: flint_bitcnt_t,
359    );
360    pub fn fmpq_randbits(res: *mut fmpq, state: *mut flint_rand_struct, bits: flint_bitcnt_t);
361    pub fn _fmpq_mod_fmpz(
362        res: *mut fmpz,
363        num: *const fmpz,
364        den: *const fmpz,
365        mod_: *const fmpz,
366    ) -> libc::c_int;
367    pub fn fmpq_mod_fmpz(res: *mut fmpz, x: *const fmpq, mod_: *const fmpz) -> libc::c_int;
368    pub fn _fmpq_gcd(
369        rnum: *mut fmpz,
370        rden: *mut fmpz,
371        p: *const fmpz,
372        q: *const fmpz,
373        r: *const fmpz,
374        s: *const fmpz,
375    );
376    pub fn fmpq_gcd(res: *mut fmpq, op1: *const fmpq, op2: *const fmpq);
377    pub fn _fmpq_gcd_cofactors(
378        ng: *mut fmpz,
379        dg: *mut fmpz,
380        A: *mut fmpz,
381        B: *mut fmpz,
382        na: *const fmpz,
383        da: *const fmpz,
384        nb: *const fmpz,
385        db: *const fmpz,
386    );
387    pub fn fmpq_gcd_cofactors(
388        g: *mut fmpq,
389        A: *mut fmpz,
390        B: *mut fmpz,
391        a: *const fmpq,
392        b: *const fmpq,
393    );
394    pub fn _fmpq_reconstruct_fmpz(
395        num: *mut fmpz,
396        den: *mut fmpz,
397        a: *const fmpz,
398        m: *const fmpz,
399    ) -> libc::c_int;
400    pub fn fmpq_reconstruct_fmpz(res: *mut fmpq, a: *const fmpz, m: *const fmpz) -> libc::c_int;
401    pub fn _fmpq_reconstruct_fmpz_2_naive(
402        n: *mut fmpz,
403        d: *mut fmpz,
404        a: *const fmpz,
405        m: *const fmpz,
406        N: *const fmpz,
407        D: *const fmpz,
408    ) -> libc::c_int;
409    pub fn _fmpq_reconstruct_fmpz_2(
410        n: *mut fmpz,
411        d: *mut fmpz,
412        a: *const fmpz,
413        m: *const fmpz,
414        N: *const fmpz,
415        D: *const fmpz,
416    ) -> libc::c_int;
417    pub fn fmpq_reconstruct_fmpz_2(
418        res: *mut fmpq,
419        a: *const fmpz,
420        m: *const fmpz,
421        N: *const fmpz,
422        D: *const fmpz,
423    ) -> libc::c_int;
424    pub fn _fmpq_next_calkin_wilf(
425        rnum: *mut fmpz,
426        rden: *mut fmpz,
427        num: *const fmpz,
428        den: *const fmpz,
429    );
430    pub fn fmpq_next_calkin_wilf(res: *mut fmpq, x: *const fmpq);
431    pub fn _fmpq_next_signed_calkin_wilf(
432        rnum: *mut fmpz,
433        rden: *mut fmpz,
434        num: *const fmpz,
435        den: *const fmpz,
436    );
437    pub fn fmpq_next_signed_calkin_wilf(res: *mut fmpq, x: *const fmpq);
438    pub fn _fmpq_next_minimal(rnum: *mut fmpz, rden: *mut fmpz, num: *const fmpz, den: *const fmpz);
439    pub fn fmpq_next_minimal(res: *mut fmpq, x: *const fmpq);
440    pub fn _fmpq_next_signed_minimal(
441        rnum: *mut fmpz,
442        rden: *mut fmpz,
443        num: *const fmpz,
444        den: *const fmpz,
445    );
446    pub fn fmpq_next_signed_minimal(res: *mut fmpq, x: *const fmpq);
447    pub fn fmpq_farey_neighbors(
448        left: *mut fmpq,
449        right: *mut fmpq,
450        mid: *const fmpq,
451        Q: *const fmpz,
452    );
453    pub fn _fmpq_simplest_between(
454        mid_num: *mut fmpz,
455        mid_den: *mut fmpz,
456        l_num: *const fmpz,
457        l_den: *const fmpz,
458        r_num: *const fmpz,
459        r_den: *const fmpz,
460    );
461    pub fn fmpq_simplest_between(mid: *mut fmpq, l: *const fmpq, r: *const fmpq);
462    pub fn fmpq_get_cfrac_naive(c: *mut fmpz, rem: *mut fmpq, x: *const fmpq, n: slong) -> slong;
463    pub fn fmpq_get_cfrac(c: *mut fmpz, rem: *mut fmpq, x: *const fmpq, n: slong) -> slong;
464    pub fn fmpq_set_cfrac(x: *mut fmpq, c: *const fmpz, n: slong);
465    pub fn fmpq_cfrac_bound(x: *const fmpq) -> slong;
466    pub fn fmpq_dedekind_sum_naive(s: *mut fmpq, h: *const fmpz, k: *const fmpz);
467    pub fn fmpq_dedekind_sum(s: *mut fmpq, h: *const fmpz, k: *const fmpz);
468    pub fn _fmpq_harmonic_ui(num: *mut fmpz, den: *mut fmpz, n: ulong);
469    pub fn fmpq_harmonic_ui(x: *mut fmpq, n: ulong);
470    pub fn _fmpz_mat22_init(M: *mut _fmpz_mat22_struct);
471    pub fn _fmpz_mat22_clear(M: *mut _fmpz_mat22_struct);
472    pub fn _fmpz_mat22_one(M: *mut _fmpz_mat22_struct);
473    pub fn _fmpz_mat22_is_one(M: *mut _fmpz_mat22_struct) -> libc::c_int;
474    pub fn _fmpz_mat22_bits(N: *const _fmpz_mat22_struct) -> flint_bitcnt_t;
475    pub fn _fmpz_mat22_rmul(M: *mut _fmpz_mat22_struct, N: *const _fmpz_mat22_struct);
476    pub fn _fmpz_mat22_rmul_ui(M: *mut _fmpz_mat22_struct, N: *const _ui_mat22_struct);
477    pub fn _fmpz_mat22_rmul_inv_ui(M: *mut _fmpz_mat22_struct, N: *const _ui_mat22_struct);
478    pub fn _fmpz_mat22_rmul_elem(M: *mut _fmpz_mat22_struct, q: *const fmpz);
479    pub fn _fmpz_mat22_lmul_elem(M: *mut _fmpz_mat22_struct, q: *const fmpz);
480    pub fn _fmpz_mat22_rmul_inv_elem(M: *mut _fmpz_mat22_struct, q: *const fmpz);
481    pub fn _fmpz_mat22_addmul_inv_vec(
482        ya: *mut fmpz,
483        yb: *mut fmpz,
484        N: *mut _fmpz_mat22_struct,
485        xa: *mut fmpz,
486        xb: *mut fmpz,
487    );
488    pub fn _fmpz_mat22_addmul_inv_mat(
489        A11: *mut fmpz,
490        A12: *mut fmpz,
491        A21: *mut fmpz,
492        A22: *mut fmpz,
493        M: *mut _fmpz_mat22_struct,
494        B11: *mut fmpz,
495        B12: *mut fmpz,
496        B21: *mut fmpz,
497        B22: *mut fmpz,
498    );
499    pub fn _fmpq_cfrac_list_init(v: *mut _fmpq_cfrac_list_struct);
500    pub fn _fmpq_cfrac_list_clear(v: *mut _fmpq_cfrac_list_struct);
501    pub fn _fmpq_cfrac_list_fit_length(v: *mut _fmpq_cfrac_list_struct, len: slong);
502    pub fn _fmpq_cfrac_list_push_back(v: *mut _fmpq_cfrac_list_struct, a: *const fmpz);
503    pub fn _fmpq_cfrac_list_push_back_zero(v: *mut _fmpq_cfrac_list_struct);
504    pub fn _fmpq_cfrac_list_append_ui(v: *mut _fmpq_cfrac_list_struct, a: *const ulong, n: slong);
505    pub fn _fmpq_ball_init(x: *mut _fmpq_ball_struct);
506    pub fn _fmpq_ball_clear(x: *mut _fmpq_ball_struct);
507    #[link_name = "_fmpq_ball_swap__extern"]
508    pub fn _fmpq_ball_swap(x: *mut _fmpq_ball_struct, y: *mut _fmpq_ball_struct);
509    pub fn _fmpq_ball_gt_one(x: *const _fmpq_ball_struct) -> libc::c_int;
510    pub fn _fmpq_hgcd(
511        s: *mut _fmpq_cfrac_list_struct,
512        M: *mut _fmpz_mat22_struct,
513        x_num: *mut fmpz,
514        x_den: *mut fmpz,
515    );
516    pub fn _fmpq_ball_get_cfrac(
517        s: *mut _fmpq_cfrac_list_struct,
518        M: *mut _fmpz_mat22_struct,
519        needM: libc::c_int,
520        x: *mut _fmpq_ball_struct,
521    );
522    pub fn fmpq_numerator(n: *mut fmpz, q: *const fmpq);
523    pub fn fmpq_denominator(n: *mut fmpz, q: *const fmpq);
524    pub fn fmpq_numerator_ptr(q: *mut fmpq) -> *mut fmpz;
525    pub fn fmpq_denominator_ptr(q: *mut fmpq) -> *mut fmpz;
526    pub fn fmpq_equal_fmpz(q: *mut fmpq, n: *mut fmpz) -> libc::c_int;
527}