1use 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}