use crate::prim::{typ::*, mpz::*, mpf::*, mpq::*, randstate::*};
extern "C" {
pub fn __gmp_printf(f: mp_r, a: mp_r, b: mp_r, c: mp_r, d: mp_r) -> ();
pub fn __gmpz_clears(a: *mut mpz_s, b: *mut mpz_s) -> ();
pub fn __gmpz_clear(a: *mut mpz_s) -> ();
pub fn __gmpz_inits(a: *mut mpz_s, b: *mut mpz_s) -> ();
pub fn __gmpz_init(a: *mut mpz_s) -> ();
pub fn __gmpz_init2(a: *mut mpz_s, n: mp_bitcnt_t) -> ();
pub fn __gmpz_init_set(a: *mut mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_init_set_ui(a: *mut mpz_s, u: ui_t) -> ();
pub fn __gmpz_init_set_si(a: *mut mpz_s, s: si_t) -> ();
pub fn __gmpz_init_set_d(a: *mut mpz_s, d: double_t) -> ();
pub fn __gmpz_init_set_str(a: *mut mpz_s, s: *const u8, b: int_t) -> ();
pub fn __gmpz_set(a: *mut mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_set_ui(a: *mut mpz_s, u: ui_t) -> ();
pub fn __gmpz_set_si(a: *mut mpz_s, s: si_t) -> ();
pub fn __gmpz_set_d(a: *mut mpz_s, d: double_t) -> ();
pub fn __gmpz_set_str(a: *mut mpz_s, s: *const u8, b: int_t) -> ();
pub fn __gmpz_get_str(s: *mut u8, b: int_t, a: *const mpz_s) -> *mut u8;
pub fn __gmpz_get_d(a: *const mpz_s) -> double_t;
pub fn __gmpz_get_ui(a: *const mpz_s) -> ui_t;
pub fn __gmpz_get_si(a: *const mpz_s) -> si_t;
pub fn __gmpz_get_d_2exp(e: *mut si_t, a: *const mpz_s) -> double_t;
pub fn __gmpz_swap(a: *mut mpz_s, b: *mut mpz_s) -> ();
pub fn __gmpz_realloc2(a: *mut mpz_s, n: mp_bitcnt_t) -> ();
pub fn __gmpz_realloc(a: *mut mpz_s, sz: mp_size_t) -> mp_t;
pub fn __gmpz_array_init(a: *mut mpz_s, sz: mp_size_t, fnb: mp_size_t) -> ();
pub fn __gmpz_size(a: *const mpz_s) -> mp_size_t;
pub fn __gmpz_limbs_read(a: *const mpz_s) -> *const mp_limb_t;
pub fn __gmpz_getlimbn(a: *const mpz_s, n: mp_size_t) -> mp_limb_t;
pub fn __gmpz_limbs_write(a: *mut mpz_s, sz: mp_size_t) -> *mut mp_limb_t;
pub fn __gmpz_limbs_modify(a: *mut mpz_s, sz: mp_size_t) -> *mut mp_limb_t;
pub fn __gmpz_limbs_finish(a: *mut mpz_s, sz: mp_size_t) -> ();
pub fn __gmpz_roinit_n(a: *mut mpz_s,
p: *const mp_limb_t, sz: mp_size_t) -> *mut mpz_s;
pub fn __gmpz_cmp(a: *const mpz_s, b: *const mpz_s) -> int_t;
pub fn __gmpz_cmp_d(a: *const mpz_s, d: double_t) -> int_t;
pub fn __gmpz_cmp_ui(a: *const mpz_s, u: ui_t) -> int_t;
pub fn __gmpz_cmp_si(a: *const mpz_s, s: si_t) -> int_t;
pub fn __gmpz_cmpabs(a: *const mpz_s, b: *const mpz_s) -> int_t;
pub fn __gmpz_cmpabs_d(a: *const mpz_s, d: double_t) -> int_t;
pub fn __gmpz_cmpabs_ui(a: *const mpz_s, u: ui_t) -> int_t;
pub fn __gmpz_root(r: *mut mpz_s, a: *const mpz_s, n: ui_t) -> int_t;
pub fn __gmpz_rootrem(r: *mut mpz_s, rem: *mut mpz_s,
u: *const mpz_s, n: ui_t) -> ();
pub fn __gmpz_sqrt(r: *mut mpz_s, a: *const mpz_s) -> ();
pub fn __gmpz_sqrtrem(r: *mut mpz_s, rem: *mut mpz_s, u: *const mpz_s) -> ();
pub fn __gmpz_perfect_power_p(a: *const mpz_s) -> int_t;
pub fn __gmpz_perfect_square_p(a: *const mpz_s) -> int_t;
pub fn __gmpz_primorial_ui(c: *mut mpz_s, n: ui_t) -> ();
pub fn __gmpz_fac_ui(c: *mut mpz_s, n: ui_t) -> ();
pub fn __gmpz_2fac_ui(c: *mut mpz_s, n: ui_t) -> ();
pub fn __gmpz_mfac_uiui(c: *mut mpz_s, n: ui_t, m: ui_t) -> ();
pub fn __gmpz_remove(c: *mut mpz_s,
a: *const mpz_s, f: *const mpz_s) -> mp_bitcnt_t;
pub fn __gmpz_fib_ui(f_n: *mut mpz_s, n: ui_t) -> ();
pub fn __gmpz_fib2_ui(f_n: *mut mpz_s, f_nsub1: *mut mpz_s, n: ui_t) -> ();
pub fn __gmpz_lucnum_ui(l_n: *mut mpz_s, n: ui_t) -> ();
pub fn __gmpz_lucnum2_ui(l_n: *mut mpz_s, l_n_1: *mut mpz_s, n: ui_t) -> ();
pub fn __gmpz_gcd(g: *mut mpz_s, a: *const mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_gcd_ui(g: *mut mpz_s, a: *const mpz_s, u: ui_t) -> ui_t;
pub fn __gmpz_gcdext(g: *mut mpz_s, s: *mut mpz_s, t: *mut mpz_s,
a: *const mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_lcm(c: *mut mpz_s, a: *const mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_lcm_ui(c: *mut mpz_s, a: *const mpz_s, u: ui_t) -> ();
pub fn __gmpz_probab_prime_p(a: *const mpz_s, r: int_t) -> int_t;
pub fn __gmpz_nextprime(c: *mut mpz_s, a: *const mpz_s) -> ();
pub fn __gmpz_invert(c: *mut mpz_s,
a: *const mpz_s, b: *const mpz_s) -> int_t;
pub fn __gmpz_jacobi(a: *const mpz_s, n: *const mpz_s) -> int_t;
pub fn __gmpz_legendre(a: *const mpz_s, p: *const mpz_s) -> int_t;
pub fn __gmpz_kronecker_ui(a: *const mpz_s, u: ui_t) -> int_t;
pub fn __gmpz_kronecker_si(a: *const mpz_s, s: si_t) -> int_t;
pub fn __gmpz_ui_kronecker(u: ui_t, a: *const mpz_s) -> int_t;
pub fn __gmpz_si_kronecker(s: si_t, a: *const mpz_s) -> int_t;
pub fn __gmpz_bin_ui(c: *mut mpz_s, n: *const mpz_s, k: ui_t) -> ();
pub fn __gmpz_bin_uiui(c: *mut mpz_s, n: ui_t, k: ui_t) -> ();
pub fn __gmpz_abs(c: *mut mpz_s, a: *const mpz_s) -> ();
pub fn __gmpz_neg(c: *mut mpz_s, a: *const mpz_s) -> ();
pub fn __gmpz_sub(c: *mut mpz_s, a: *const mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_sub_ui(c: *mut mpz_s, a: *const mpz_s, u: ui_t) -> ();
pub fn __gmpz_ui_sub(c: *mut mpz_s, u: ui_t, a: *const mpz_s) -> ();
pub fn __gmpz_submul(c: *mut mpz_s, a: *const mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_submul_ui(c: *mut mpz_s, a: *const mpz_s, u: ui_t) -> ();
pub fn __gmpz_add(c: *mut mpz_s, a: *const mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_add_ui(c: *mut mpz_s, a: *const mpz_s, u: ui_t) -> ();
pub fn __gmpz_addmul(c: *mut mpz_s, a: *const mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_addmul_ui(c: *mut mpz_s, a: *const mpz_s, u: ui_t) -> ();
pub fn __gmpz_mul(c: *mut mpz_s, a: *const mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_mul_ui(c: *mut mpz_s, a: *const mpz_s, u: ui_t) -> ();
pub fn __gmpz_mul_si(c: *mut mpz_s, a: *const mpz_s, s: si_t) -> ();
pub fn __gmpz_mul_2exp(c: *mut mpz_s, a: *const mpz_s, n: mp_bitcnt_t) -> ();
pub fn __gmpz_cdiv_q(q: *mut mpz_s, n: *const mpz_s, d: *const mpz_s) -> ();
pub fn __gmpz_cdiv_r(r: *mut mpz_s, n: *const mpz_s, d: *const mpz_s) -> ();
pub fn __gmpz_cdiv_qr(q: *mut mpz_s, r: *mut mpz_s,
n: *const mpz_s, d: *const mpz_s) -> ();
pub fn __gmpz_cdiv_q_ui(q: *mut mpz_s, n: *const mpz_s, d: ui_t) -> ui_t;
pub fn __gmpz_cdiv_r_ui(r: *mut mpz_s, n: *const mpz_s, d: ui_t) -> ui_t;
pub fn __gmpz_cdiv_qr_ui(q: *mut mpz_s, r: *mut mpz_s,
n: *const mpz_s, d: ui_t) -> ui_t;
pub fn __gmpz_cdiv_ui(n: *const mpz_s, d: ui_t) -> ui_t;
pub fn __gmpz_cdiv_q_2exp(q: *mut mpz_s,
n: *const mpz_s, b: mp_bitcnt_t) -> ();
pub fn __gmpz_cdiv_r_2exp(r: *mut mpz_s,
n: *const mpz_s, b: mp_bitcnt_t) -> ();
pub fn __gmpz_fdiv_q(q: *mut mpz_s, n: *const mpz_s, d: *const mpz_s) -> ();
pub fn __gmpz_fdiv_r(r: *mut mpz_s, n: *const mpz_s, d: *const mpz_s) -> ();
pub fn __gmpz_fdiv_qr(q: *mut mpz_s, r: *mut mpz_s,
n: *const mpz_s, d: *const mpz_s) -> ();
pub fn __gmpz_fdiv_q_ui(q: *mut mpz_s, n: *const mpz_s, d: ui_t) -> ui_t;
pub fn __gmpz_fdiv_r_ui(r: *mut mpz_s, n: *const mpz_s, d: ui_t) -> ui_t;
pub fn __gmpz_fdiv_qr_ui(q: *mut mpz_s, r: *mut mpz_s,
n: *const mpz_s, d: ui_t) -> ui_t;
pub fn __gmpz_fdiv_ui(n: *const mpz_s, d: ui_t) -> ui_t;
pub fn __gmpz_fdiv_q_2exp(q: *mut mpz_s,
n: *const mpz_s, b: mp_bitcnt_t) -> ();
pub fn __gmpz_fdiv_r_2exp(r: *mut mpz_s,
n: *const mpz_s, b: mp_bitcnt_t) -> ();
pub fn __gmpz_tdiv_q(q: *mut mpz_s, n: *const mpz_s, d: *const mpz_s) -> ();
pub fn __gmpz_tdiv_r(r: *mut mpz_s, n: *const mpz_s, d: *const mpz_s) -> ();
pub fn __gmpz_tdiv_qr(q: *mut mpz_s, r: *mut mpz_s,
n: *const mpz_s, d: *const mpz_s) -> ();
pub fn __gmpz_tdiv_q_ui(q: *mut mpz_s, n: *const mpz_s, d: ui_t) -> ui_t;
pub fn __gmpz_tdiv_r_ui(r: *mut mpz_s, n: *const mpz_s, d: ui_t) -> ui_t;
pub fn __gmpz_tdiv_qr_ui(q: *mut mpz_s, r: *mut mpz_s,
n: *const mpz_s, d: ui_t) -> ui_t;
pub fn __gmpz_tdiv_ui(n: *const mpz_s, d: ui_t) -> ui_t;
pub fn __gmpz_tdiv_q_2exp(q: *mut mpz_s,
n: *const mpz_s, b: mp_bitcnt_t) -> ();
pub fn __gmpz_tdiv_r_2exp(r: *mut mpz_s,
n: *const mpz_s, b: mp_bitcnt_t) -> ();
pub fn __gmpz_mod(r: *mut mpz_s, n: *const mpz_s, d: *const mpz_s) -> ();
pub fn __gmpz_divexact(q: *mut mpz_s, n: *const mpz_s, d: *const mpz_s) -> ();
pub fn __gmpz_divexact_ui(q: *mut mpz_s, n: *const mpz_s, d: ui_t) -> ();
pub fn __gmpz_divisible_p(n: *const mpz_s, d: *const mpz_s) -> int_t;
pub fn __gmpz_divisible_ui_p(n: *const mpz_s, d: ui_t) -> int_t;
pub fn __gmpz_divisible_2exp_p(n: *const mpz_s, b: mp_bitcnt_t) -> int_t;
pub fn __gmpz_congruent_p(n: *const mpz_s,
c: *const mpz_s, d: *const mpz_s) -> int_t;
pub fn __gmpz_congruent_ui_p(n: *const mpz_s,
c: ui_t, d: ui_t) -> int_t;
pub fn __gmpz_congruent_2exp_p(n: *const mpz_s,
c: *const mpz_s, b: mp_bitcnt_t) -> int_t;
pub fn __gmpz_powm_sec(c: *mut mpz_s,
a: *const mpz_s, n: *const mpz_s, m: *const mpz_s) -> ();
pub fn __gmpz_powm(c: *mut mpz_s,
a: *const mpz_s, n: *const mpz_s, m: *const mpz_s) -> ();
pub fn __gmpz_powm_ui(c: *mut mpz_s,
a: *const mpz_s, n: ui_t, m: *const mpz_s) -> ();
pub fn __gmpz_pow_ui(c: *mut mpz_s, a: *const mpz_s, n: ui_t) -> ();
pub fn __gmpz_ui_pow_ui(c: *mut mpz_s, a: ui_t, n: ui_t) -> ();
pub fn __gmpz_sizeinbase(a: *const mpz_s, base: int_t) -> mp_size_t;
pub fn __gmpz_fits_ulong_p(a: *const mpz_s) -> int_t;
pub fn __gmpz_fits_slong_p(a: *const mpz_s) -> int_t;
pub fn __gmpz_fits_uint_p(a: *const mpz_s) -> int_t;
pub fn __gmpz_fits_sint_p(a: *const mpz_s) -> int_t;
pub fn __gmpz_fits_ushort_p(a: *const mpz_s) -> int_t;
pub fn __gmpz_fits_sshort_p(a: *const mpz_s) -> int_t;
pub fn __gmpz_urandomb(c: *mut mpz_s,
r: *mut randstate_s, nbits: mp_bitcnt_t) -> ();
pub fn __gmpz_urandomm(c: *mut mpz_s,
r: *mut randstate_s, n: *const mpz_s) -> ();
pub fn __gmpz_rrandomb(c: *mut mpz_s,
r: *mut randstate_s, nbits: mp_bitcnt_t) -> ();
pub fn __gmpz_random(c: *mut mpz_s, max_size: mp_size_t) -> ();
pub fn __gmpz_random2(c: *mut mpz_s, max_size: mp_size_t) -> ();
pub fn __gmpz_and(c: *mut mpz_s, a: *const mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_ior(c: *mut mpz_s, a: *const mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_xor(c: *mut mpz_s, a: *const mpz_s, b: *const mpz_s) -> ();
pub fn __gmpz_com(c: *mut mpz_s, a: *const mpz_s) -> ();
pub fn __gmpz_popcount(a: *const mpz_s) -> mp_bitcnt_t;
pub fn __gmpz_hamdist(a: *const mpz_s, b: *const mpz_s) -> mp_bitcnt_t;
pub fn __gmpz_scan0(a: *const mpz_s, s: mp_bitcnt_t) -> mp_bitcnt_t;
pub fn __gmpz_scan1(a: *const mpz_s, s: mp_bitcnt_t) -> mp_bitcnt_t;
pub fn __gmpz_clrbit(c: *mut mpz_s, n: mp_bitcnt_t) -> ();
pub fn __gmpz_setbit(c: *mut mpz_s, n: mp_bitcnt_t) -> ();
pub fn __gmpz_combit(c: *mut mpz_s, n: mp_bitcnt_t) -> ();
pub fn __gmpz_tstbit(a: *const mpz_s, n: mp_bitcnt_t) -> int_t;
pub fn __gmpf_clears(f: *mut mpf_s, g: *mut mpf_s) -> ();
pub fn __gmpf_clear(f: *mut mpf_s) -> ();
pub fn __gmpf_inits(f: *mut mpf_s, g: *mut mpf_s) -> ();
pub fn __gmpf_init(f: *mut mpf_s) -> ();
pub fn __gmpf_init2(f: *mut mpf_s, n: mp_bitcnt_t) -> ();
pub fn __gmpf_init_set(f: *mut mpf_s, g: *const mpf_s) -> ();
pub fn __gmpf_init_set_ui(f: *mut mpf_s, u: ui_t) -> ();
pub fn __gmpf_init_set_si(f: *mut mpf_s, s: si_t) -> ();
pub fn __gmpf_init_set_d(f: *mut mpf_s, d: double_t) -> ();
pub fn __gmpf_init_set_str(f: *mut mpf_s, s: *const u8, b: int_t) -> ();
pub fn __gmpf_set(f: *mut mpf_s, g: *const mpf_s) -> ();
pub fn __gmpf_set_ui(f: *mut mpf_s, u: ui_t) -> ();
pub fn __gmpf_set_si(f: *mut mpf_s, s: si_t) -> ();
pub fn __gmpf_set_d(f: *mut mpf_s, d: double_t) -> ();
pub fn __gmpf_set_z(f: *mut mpf_s, a: *const mpz_s) -> ();
pub fn __gmpf_set_str(f: *mut mpf_s, s: *const u8, b: int_t) -> ();
pub fn __gmpf_get_str(s: *mut u8,
e: *mut mp_exp_t, b: int_t, d: mp_size_t, f: *const mpf_s) -> *mut u8;
pub fn __gmpf_get_d(f: *const mpf_s) -> double_t;
pub fn __gmpf_get_ui(f: *const mpf_s) -> ui_t;
pub fn __gmpf_get_si(f: *const mpf_s) -> si_t;
pub fn __gmpf_get_d_2exp(e: *mut si_t, f: *const mpf_s) -> double_t;
pub fn __gmpf_cmp(f: *const mpf_s, g: *const mpf_s) -> int_t;
pub fn __gmpf_cmp_d(f: *const mpf_s, d: double_t) -> int_t;
pub fn __gmpf_cmp_ui(f: *const mpf_s, u: ui_t) -> int_t;
pub fn __gmpf_cmp_si(f: *const mpf_s, s: si_t) -> int_t;
pub fn __gmpf_cmp_z(f: *const mpf_s, a: *const mpz_s) -> int_t;
pub fn __gmpf_eq(f: *const mpf_s, g: *const mpf_s, n: mp_bitcnt_t) -> int_t;
pub fn __gmpf_reldiff(g: *mut mpf_s, f: *const mpf_s, e: *const mpf_s) -> ();
pub fn __gmpf_sqrt(g: *mut mpf_s, f: *const mpf_s) -> ();
pub fn __gmpf_sqrt_ui(g: *mut mpf_s, u: ui_t) -> ();
pub fn __gmpf_abs(g: *mut mpf_s, f: *const mpf_s) -> ();
pub fn __gmpf_neg(g: *mut mpf_s, f: *const mpf_s) -> ();
pub fn __gmpf_sub(g: *mut mpf_s, f: *const mpf_s, e: *const mpf_s) -> ();
pub fn __gmpf_sub_ui(g: *mut mpf_s, f: *const mpf_s, u: ui_t) -> ();
pub fn __gmpf_ui_sub(g: *mut mpf_s, u: ui_t, f: *const mpf_s) -> ();
pub fn __gmpf_add(g: *mut mpf_s, f: *const mpf_s, e: *const mpf_s) -> ();
pub fn __gmpf_add_ui(g: *mut mpf_s, f: *const mpf_s, u: ui_t) -> ();
pub fn __gmpf_mul(g: *mut mpf_s, f: *const mpf_s, e: *const mpf_s) -> ();
pub fn __gmpf_mul_ui(g: *mut mpf_s, f: *const mpf_s, u: ui_t) -> ();
pub fn __gmpf_mul_2exp(g: *mut mpf_s, f: *const mpf_s, n: mp_bitcnt_t) -> ();
pub fn __gmpf_div(g: *mut mpf_s, f: *const mpf_s, e: *const mpf_s) -> ();
pub fn __gmpf_div_ui(g: *mut mpf_s, f: *const mpf_s, u: ui_t) -> ();
pub fn __gmpf_ui_div(g: *mut mpf_s, u: ui_t, f: *const mpf_s) -> ();
pub fn __gmpf_div_2exp(g: *mut mpf_s, f: *const mpf_s, n: mp_bitcnt_t) -> ();
pub fn __gmpf_pow_ui(g: *mut mpf_s, f: *const mpf_s, n: ui_t) -> ();
pub fn __gmpf_ceil(g: *mut mpf_s, f: *const mpf_s) -> ();
pub fn __gmpf_floor(g: *mut mpf_s, f: *const mpf_s) -> ();
pub fn __gmpf_trunc(g: *mut mpf_s, f: *const mpf_s) -> ();
pub fn __gmpf_integer_p(f: *const mpf_s) -> int_t;
pub fn __gmpf_fits_ulong_p(f: *const mpf_s) -> int_t;
pub fn __gmpf_fits_slong_p(f: *const mpf_s) -> int_t;
pub fn __gmpf_fits_uint_p(f: *const mpf_s) -> int_t;
pub fn __gmpf_fits_sint_p(f: *const mpf_s) -> int_t;
pub fn __gmpf_fits_ushort_p(f: *const mpf_s) -> int_t;
pub fn __gmpf_fits_sshort_p(f: *const mpf_s) -> int_t;
pub fn __gmpf_urandomb(g: *mut mpf_s, state: *mut randstate_s,
nbits: mp_bitcnt_t) -> ();
pub fn __gmpf_random2(g: *mut mpf_s, max_size: mp_size_t, e: mp_exp_t) -> ();
pub fn __gmpf_get_default_prec() -> mp_bitcnt_t;
pub fn __gmpf_get_prec(f: *const mpf_s) -> mp_bitcnt_t;
pub fn __gmpf_set_default_prec(n: mp_bitcnt_t) -> ();
pub fn __gmpf_set_prec(f: *mut mpf_s, n: mp_bitcnt_t) -> ();
pub fn __gmpf_set_prec_raw(f: *mut mpf_s, n: mp_bitcnt_t) -> ();
pub fn __gmpq_clears(q: *mut mpq_s, r: *mut mpq_s) -> ();
pub fn __gmpq_clear(q: *mut mpq_s) -> ();
pub fn __gmpq_inits(q: *mut mpq_s, r: *mut mpq_s) -> ();
pub fn __gmpq_init(q: *mut mpq_s) -> ();
pub fn __gmpq_set(q: *mut mpq_s, r: *const mpq_s) -> ();
pub fn __gmpq_set_ui(q: *mut mpq_s, u: ui_t, f: ui_t) -> ();
pub fn __gmpq_set_si(q: *mut mpq_s, s: si_t, f: ui_t) -> ();
pub fn __gmpq_set_d(q: *mut mpq_s, d: double_t) -> ();
pub fn __gmpq_set_z(q: *mut mpq_s, a: *const mpz_s) -> ();
pub fn __gmpq_set_f(q: *mut mpq_s, f: *const mpf_s) -> ();
pub fn __gmpq_set_num(q: *mut mpq_s, num: *const mpz_s) -> ();
pub fn __gmpq_set_den(q: *mut mpq_s, den: *const mpz_s) -> ();
pub fn __gmpq_set_str(q: *mut mpq_s, s: *const u8, b: int_t) -> ();
pub fn __gmpq_get_str(s: *mut u8, b: int_t, q: *const mpq_s) -> *mut u8;
pub fn __gmpq_get_d(q: *const mpq_s) -> double_t;
pub fn __gmpq_get_num(num: *mut mpz_s, q: *const mpq_s) -> ();
pub fn __gmpq_get_den(den: *mut mpz_s, q: *const mpq_s) -> ();
pub fn __gmpq_swap(q: *mut mpq_s, r: *mut mpq_s) -> ();
pub fn __gmpq_cmp(q: *const mpq_s, r: *const mpq_s) -> int_t;
pub fn __gmpq_cmp_z(q: *const mpq_s, a: *const mpz_s) -> int_t;
pub fn __gmpq_cmp_ui(q: *const mpq_s, u: ui_t, f: ui_t) -> int_t;
pub fn __gmpq_cmp_si(q: *const mpq_s, s: si_t, f: ui_t) -> int_t;
pub fn __gmpq_equal(q: *const mpq_s, r: *const mpq_s) -> int_t;
pub fn __gmpq_inv(p: *mut mpq_s, q: *const mpq_s) -> ();
pub fn __gmpq_abs(p: *mut mpq_s, q: *const mpq_s) -> ();
pub fn __gmpq_neg(p: *mut mpq_s, q: *const mpq_s) -> ();
pub fn __gmpq_sub(p: *mut mpq_s, q: *const mpq_s, r: *const mpq_s) -> ();
pub fn __gmpq_add(p: *mut mpq_s, q: *const mpq_s, r: *const mpq_s) -> ();
pub fn __gmpq_mul(p: *mut mpq_s, q: *const mpq_s, r: *const mpq_s) -> ();
pub fn __gmpq_mul_2exp(p: *mut mpq_s, q: *const mpq_s, n: mp_bitcnt_t) -> ();
pub fn __gmpq_div(p: *mut mpq_s, q: *const mpq_s, r: *const mpq_s) -> ();
pub fn __gmpq_div_2exp(p: *mut mpq_s, q: *const mpq_s, n: mp_bitcnt_t) -> ();
pub fn __gmp_randclear(r: *mut randstate_s) -> ();
pub fn __gmp_randinit(r: *mut randstate_s,
a: gmp_randalg_t, sz: mp_bitcnt_t) -> ();
pub fn __gmp_randinit_set(r: *mut randstate_s, s: *const randstate_s) -> ();
pub fn __gmp_randinit_default(r: *mut randstate_s) -> ();
pub fn __gmp_randinit_mt(r: *mut randstate_s) -> ();
pub fn __gmp_randinit_lc_2exp(r: *mut randstate_s,
a: *const mpz_s, c: ui_t, m2e: mp_bitcnt_t) -> ();
pub fn __gmp_randinit_lc_2exp_size(r: *mut randstate_s,
sz: mp_bitcnt_t) -> int_t;
pub fn __gmp_randseed(r: *mut randstate_s, seed: *mut mpz_s) -> ();
pub fn __gmp_randseed_ui(r: *mut randstate_s, seed: ui_t) -> ();
pub fn __gmp_urandomb_ui(r: *mut randstate_s, nbits: ui_t) -> ui_t;
pub fn __gmp_urandomm_ui(r: *mut randstate_s, n: ui_t) -> ui_t;
pub fn __gmp_get_memory_functions(
alloc: *mut FnPtrAllocate,
realloc: *mut FnPtrReallocate,
free: *mut FnPtrFree) -> ();
pub fn __gmp_allocate_func(sz: mp_size_t) -> mp_t;
pub fn __gmp_reallocate_func(p: mp_t, z: mp_size_t, sz: mp_size_t) -> mp_t;
pub fn __gmp_free_func(p: mp_t, z: mp_size_t) -> ();
}