gmp-mpfr-sys 0.2.1

Rust low-level bindings for GMP and MPFR
Documentation
/* automatically generated by rust-bindgen */

#![allow(dead_code,
         non_camel_case_types,
         non_upper_case_globals,
         non_snake_case)]
pub type ptrdiff_t = isize;
pub type size_t = usize;
pub type wchar_t = ::std::os::raw::c_int;
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct max_align_t {
    pub __clang_max_align_nonce1: ::std::os::raw::c_longlong,
    pub __clang_max_align_nonce2: f64,
}
impl ::std::default::Default for max_align_t {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type mp_limb_t = ::std::os::raw::c_ulong;
pub type mp_limb_signed_t = ::std::os::raw::c_long;
pub type mp_bitcnt_t = ::std::os::raw::c_ulong;
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct __mpz_struct {
    pub _mp_alloc: ::std::os::raw::c_int,
    pub _mp_size: ::std::os::raw::c_int,
    pub _mp_d: *mut mp_limb_t,
}
impl ::std::default::Default for __mpz_struct {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type MP_INT = __mpz_struct;
pub type mpz_t = [__mpz_struct; 1usize];
pub type mp_ptr = *mut mp_limb_t;
pub type mp_srcptr = *const mp_limb_t;
pub type mp_size_t = ::std::os::raw::c_long;
pub type mp_exp_t = ::std::os::raw::c_long;
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct __mpq_struct {
    pub _mp_num: __mpz_struct,
    pub _mp_den: __mpz_struct,
}
impl ::std::default::Default for __mpq_struct {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type MP_RAT = __mpq_struct;
pub type mpq_t = [__mpq_struct; 1usize];
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct __mpf_struct {
    pub _mp_prec: ::std::os::raw::c_int,
    pub _mp_size: ::std::os::raw::c_int,
    pub _mp_exp: mp_exp_t,
    pub _mp_d: *mut mp_limb_t,
}
impl ::std::default::Default for __mpf_struct {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type mpf_t = [__mpf_struct; 1usize];
pub const GMP_RAND_ALG_LC: gmp_randalg_t =
    gmp_randalg_t::GMP_RAND_ALG_DEFAULT;
#[derive(Copy, Clone)]
#[repr(u32)]
#[derive(Debug)]
pub enum gmp_randalg_t { GMP_RAND_ALG_DEFAULT = 0, }
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct __gmp_randstate_struct {
    pub _mp_seed: mpz_t,
    pub _mp_alg: gmp_randalg_t,
    pub _mp_algdata: Union_Unnamed1,
}
impl ::std::default::Default for __gmp_randstate_struct {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct Union_Unnamed1 {
    pub _bindgen_data_: [u64; 1usize],
}
impl Union_Unnamed1 {
    pub unsafe fn _mp_lc(&mut self) -> *mut *mut ::std::os::raw::c_void {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
}
impl ::std::default::Default for Union_Unnamed1 {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type gmp_randstate_t = [__gmp_randstate_struct; 1usize];
pub type mpz_srcptr = *const __mpz_struct;
pub type mpz_ptr = *mut __mpz_struct;
pub type mpf_srcptr = *const __mpf_struct;
pub type mpf_ptr = *mut __mpf_struct;
pub type mpq_srcptr = *const __mpq_struct;
pub type mpq_ptr = *mut __mpq_struct;
#[derive(Copy, Clone)]
#[repr(u32)]
#[derive(Debug)]
pub enum Enum_Unnamed2 {
    GMP_ERROR_NONE = 0,
    GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,
    GMP_ERROR_DIVISION_BY_ZERO = 2,
    GMP_ERROR_SQRT_OF_NEGATIVE = 4,
    GMP_ERROR_INVALID_ARGUMENT = 8,
}
#[link(name = "gmp", kind = "static")]
extern "C" {
    pub static __gmp_bits_per_limb: ::std::os::raw::c_int;
    pub static mut __gmp_errno: ::std::os::raw::c_int;
    pub static __gmp_version: *const ::std::os::raw::c_char;
}
#[link(name = "gmp", kind = "static")]
extern "C" {
    pub fn __gmp_set_memory_functions(arg1:
                                          ::std::option::Option<extern "C" fn(arg1:
                                                                                  size_t)
                                                                    ->
                                                                        *mut ::std::os::raw::c_void>,
                                      arg2:
                                          ::std::option::Option<unsafe extern "C" fn(arg1:
                                                                                         *mut ::std::os::raw::c_void,
                                                                                     arg2:
                                                                                         size_t,
                                                                                     arg3:
                                                                                         size_t)
                                                                    ->
                                                                        *mut ::std::os::raw::c_void>,
                                      arg3:
                                          ::std::option::Option<unsafe extern "C" fn(arg1:
                                                                                         *mut ::std::os::raw::c_void,
                                                                                     arg2:
                                                                                         size_t)>);
    pub fn __gmp_get_memory_functions(arg1:
                                          *mut ::std::option::Option<extern "C" fn(arg1:
                                                                                       size_t)
                                                                         ->
                                                                             *mut ::std::os::raw::c_void>,
                                      arg2:
                                          *mut ::std::option::Option<unsafe extern "C" fn(arg1:
                                                                                              *mut ::std::os::raw::c_void,
                                                                                          arg2:
                                                                                              size_t,
                                                                                          arg3:
                                                                                              size_t)
                                                                         ->
                                                                             *mut ::std::os::raw::c_void>,
                                      arg3:
                                          *mut ::std::option::Option<unsafe extern "C" fn(arg1:
                                                                                              *mut ::std::os::raw::c_void,
                                                                                          arg2:
                                                                                              size_t)>);
    pub fn __gmp_randinit(arg1: gmp_randstate_t, arg2: gmp_randalg_t, ...);
    pub fn __gmp_randinit_default(arg1: gmp_randstate_t);
    pub fn __gmp_randinit_lc_2exp(arg1: gmp_randstate_t, arg2: mpz_srcptr,
                                  arg3: ::std::os::raw::c_ulong,
                                  arg4: mp_bitcnt_t);
    pub fn __gmp_randinit_lc_2exp_size(arg1: gmp_randstate_t,
                                       arg2: mp_bitcnt_t)
     -> ::std::os::raw::c_int;
    pub fn __gmp_randinit_mt(arg1: gmp_randstate_t);
    pub fn __gmp_randinit_set(arg1: gmp_randstate_t,
                              arg2: *const __gmp_randstate_struct);
    pub fn __gmp_randseed(arg1: gmp_randstate_t, arg2: mpz_srcptr);
    pub fn __gmp_randseed_ui(arg1: gmp_randstate_t,
                             arg2: ::std::os::raw::c_ulong);
    pub fn __gmp_randclear(arg1: gmp_randstate_t);
    pub fn __gmp_urandomb_ui(arg1: gmp_randstate_t,
                             arg2: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmp_urandomm_ui(arg1: gmp_randstate_t,
                             arg2: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmp_asprintf(arg1: *mut *mut ::std::os::raw::c_char,
                          arg2: *const ::std::os::raw::c_char, ...)
     -> ::std::os::raw::c_int;
    pub fn __gmp_printf(arg1: *const ::std::os::raw::c_char, ...)
     -> ::std::os::raw::c_int;
    pub fn __gmp_snprintf(arg1: *mut ::std::os::raw::c_char, arg2: size_t,
                          arg3: *const ::std::os::raw::c_char, ...)
     -> ::std::os::raw::c_int;
    pub fn __gmp_sprintf(arg1: *mut ::std::os::raw::c_char,
                         arg2: *const ::std::os::raw::c_char, ...)
     -> ::std::os::raw::c_int;
    pub fn __gmp_scanf(arg1: *const ::std::os::raw::c_char, ...)
     -> ::std::os::raw::c_int;
    pub fn __gmp_sscanf(arg1: *const ::std::os::raw::c_char,
                        arg2: *const ::std::os::raw::c_char, ...)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_realloc(arg1: mpz_ptr, arg2: mp_size_t)
     -> *mut ::std::os::raw::c_void;
    pub fn __gmpz_abs(__gmp_w: mpz_ptr, __gmp_u: mpz_srcptr);
    pub fn __gmpz_add(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_add_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_addmul(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_addmul_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                            arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_and(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_array_init(arg1: mpz_ptr, arg2: mp_size_t, arg3: mp_size_t);
    pub fn __gmpz_bin_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_bin_uiui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong,
                           arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_cdiv_q(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_cdiv_q_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
                              arg3: mp_bitcnt_t);
    pub fn __gmpz_cdiv_q_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                            arg3: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_cdiv_qr(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
                          arg4: mpz_srcptr);
    pub fn __gmpz_cdiv_qr_ui(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
                             arg4: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_cdiv_r(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_cdiv_r_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
                              arg3: mp_bitcnt_t);
    pub fn __gmpz_cdiv_r_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                            arg3: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_cdiv_ui(arg1: mpz_srcptr, arg2: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_clear(arg1: mpz_ptr);
    pub fn __gmpz_clears(arg1: mpz_ptr, ...);
    pub fn __gmpz_clrbit(arg1: mpz_ptr, arg2: mp_bitcnt_t);
    pub fn __gmpz_cmp(arg1: mpz_srcptr, arg2: mpz_srcptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_cmp_d(arg1: mpz_srcptr, arg2: f64) -> ::std::os::raw::c_int;
    pub fn __gmpz_cmp_si(arg1: mpz_srcptr, arg2: ::std::os::raw::c_long)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_cmp_ui(arg1: mpz_srcptr, arg2: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_cmpabs(arg1: mpz_srcptr, arg2: mpz_srcptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_cmpabs_d(arg1: mpz_srcptr, arg2: f64)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_cmpabs_ui(arg1: mpz_srcptr, arg2: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_com(arg1: mpz_ptr, arg2: mpz_srcptr);
    pub fn __gmpz_combit(arg1: mpz_ptr, arg2: mp_bitcnt_t);
    pub fn __gmpz_congruent_p(arg1: mpz_srcptr, arg2: mpz_srcptr,
                              arg3: mpz_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpz_congruent_2exp_p(arg1: mpz_srcptr, arg2: mpz_srcptr,
                                   arg3: mp_bitcnt_t)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_congruent_ui_p(arg1: mpz_srcptr,
                                 arg2: ::std::os::raw::c_ulong,
                                 arg3: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_divexact(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_divexact_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                              arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_divisible_p(arg1: mpz_srcptr, arg2: mpz_srcptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_divisible_ui_p(arg1: mpz_srcptr,
                                 arg2: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_divisible_2exp_p(arg1: mpz_srcptr, arg2: mp_bitcnt_t)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_dump(arg1: mpz_srcptr);
    pub fn __gmpz_export(arg1: *mut ::std::os::raw::c_void, arg2: *mut size_t,
                         arg3: ::std::os::raw::c_int, arg4: size_t,
                         arg5: ::std::os::raw::c_int, arg6: size_t,
                         arg7: mpz_srcptr) -> *mut ::std::os::raw::c_void;
    pub fn __gmpz_fac_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
    pub fn __gmpz_2fac_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
    pub fn __gmpz_mfac_uiui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong,
                            arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_primorial_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
    pub fn __gmpz_fdiv_q(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_fdiv_q_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
                              arg3: mp_bitcnt_t);
    pub fn __gmpz_fdiv_q_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                            arg3: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_fdiv_qr(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
                          arg4: mpz_srcptr);
    pub fn __gmpz_fdiv_qr_ui(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
                             arg4: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_fdiv_r(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_fdiv_r_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
                              arg3: mp_bitcnt_t);
    pub fn __gmpz_fdiv_r_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                            arg3: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_fdiv_ui(arg1: mpz_srcptr, arg2: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_fib_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
    pub fn __gmpz_fib2_ui(arg1: mpz_ptr, arg2: mpz_ptr,
                          arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_fits_sint_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpz_fits_slong_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpz_fits_sshort_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpz_fits_uint_p(__gmp_z: mpz_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpz_fits_ulong_p(__gmp_z: mpz_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpz_fits_ushort_p(__gmp_z: mpz_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpz_gcd(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_gcd_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                         arg3: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_gcdext(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_ptr,
                         arg4: mpz_srcptr, arg5: mpz_srcptr);
    pub fn __gmpz_get_d(arg1: mpz_srcptr) -> f64;
    pub fn __gmpz_get_d_2exp(arg1: *mut ::std::os::raw::c_long,
                             arg2: mpz_srcptr) -> f64;
    pub fn __gmpz_get_si(arg1: mpz_srcptr) -> ::std::os::raw::c_long;
    pub fn __gmpz_get_str(arg1: *mut ::std::os::raw::c_char,
                          arg2: ::std::os::raw::c_int, arg3: mpz_srcptr)
     -> *mut ::std::os::raw::c_char;
    pub fn __gmpz_get_ui(__gmp_z: mpz_srcptr) -> ::std::os::raw::c_ulong;
    pub fn __gmpz_getlimbn(__gmp_z: mpz_srcptr, __gmp_n: mp_size_t)
     -> mp_limb_t;
    pub fn __gmpz_hamdist(arg1: mpz_srcptr, arg2: mpz_srcptr) -> mp_bitcnt_t;
    pub fn __gmpz_import(arg1: mpz_ptr, arg2: size_t,
                         arg3: ::std::os::raw::c_int, arg4: size_t,
                         arg5: ::std::os::raw::c_int, arg6: size_t,
                         arg7: *const ::std::os::raw::c_void);
    pub fn __gmpz_init(arg1: mpz_ptr);
    pub fn __gmpz_init2(arg1: mpz_ptr, arg2: mp_bitcnt_t);
    pub fn __gmpz_inits(arg1: mpz_ptr, ...);
    pub fn __gmpz_init_set(arg1: mpz_ptr, arg2: mpz_srcptr);
    pub fn __gmpz_init_set_d(arg1: mpz_ptr, arg2: f64);
    pub fn __gmpz_init_set_si(arg1: mpz_ptr, arg2: ::std::os::raw::c_long);
    pub fn __gmpz_init_set_str(arg1: mpz_ptr,
                               arg2: *const ::std::os::raw::c_char,
                               arg3: ::std::os::raw::c_int)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_init_set_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
    pub fn __gmpz_invert(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_ior(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_jacobi(arg1: mpz_srcptr, arg2: mpz_srcptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_kronecker_si(arg1: mpz_srcptr, arg2: ::std::os::raw::c_long)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_kronecker_ui(arg1: mpz_srcptr,
                               arg2: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_si_kronecker(arg1: ::std::os::raw::c_long, arg2: mpz_srcptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_ui_kronecker(arg1: ::std::os::raw::c_ulong,
                               arg2: mpz_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpz_lcm(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_lcm_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_lucnum_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
    pub fn __gmpz_lucnum2_ui(arg1: mpz_ptr, arg2: mpz_ptr,
                             arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_millerrabin(arg1: mpz_srcptr, arg2: ::std::os::raw::c_int)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_mod(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_mul(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_mul_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
                           arg3: mp_bitcnt_t);
    pub fn __gmpz_mul_si(arg1: mpz_ptr, arg2: mpz_srcptr,
                         arg3: ::std::os::raw::c_long);
    pub fn __gmpz_mul_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_neg(__gmp_w: mpz_ptr, __gmp_u: mpz_srcptr);
    pub fn __gmpz_nextprime(arg1: mpz_ptr, arg2: mpz_srcptr);
    pub fn __gmpz_perfect_power_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpz_perfect_square_p(__gmp_a: mpz_srcptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_popcount(__gmp_u: mpz_srcptr) -> mp_bitcnt_t;
    pub fn __gmpz_pow_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_powm(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr,
                       arg4: mpz_srcptr);
    pub fn __gmpz_powm_sec(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr,
                           arg4: mpz_srcptr);
    pub fn __gmpz_powm_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                          arg3: ::std::os::raw::c_ulong, arg4: mpz_srcptr);
    pub fn __gmpz_probab_prime_p(arg1: mpz_srcptr,
                                 arg2: ::std::os::raw::c_int)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_random(arg1: mpz_ptr, arg2: mp_size_t);
    pub fn __gmpz_random2(arg1: mpz_ptr, arg2: mp_size_t);
    pub fn __gmpz_realloc2(arg1: mpz_ptr, arg2: mp_bitcnt_t);
    pub fn __gmpz_remove(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr)
     -> mp_bitcnt_t;
    pub fn __gmpz_root(arg1: mpz_ptr, arg2: mpz_srcptr,
                       arg3: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_rootrem(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
                          arg4: ::std::os::raw::c_ulong);
    pub fn __gmpz_rrandomb(arg1: mpz_ptr, arg2: gmp_randstate_t,
                           arg3: mp_bitcnt_t);
    pub fn __gmpz_scan0(arg1: mpz_srcptr, arg2: mp_bitcnt_t) -> mp_bitcnt_t;
    pub fn __gmpz_scan1(arg1: mpz_srcptr, arg2: mp_bitcnt_t) -> mp_bitcnt_t;
    pub fn __gmpz_set(arg1: mpz_ptr, arg2: mpz_srcptr);
    pub fn __gmpz_set_d(arg1: mpz_ptr, arg2: f64);
    pub fn __gmpz_set_f(arg1: mpz_ptr, arg2: mpf_srcptr);
    pub fn __gmpz_set_q(__gmp_w: mpz_ptr, __gmp_u: mpq_srcptr);
    pub fn __gmpz_set_si(arg1: mpz_ptr, arg2: ::std::os::raw::c_long);
    pub fn __gmpz_set_str(arg1: mpz_ptr, arg2: *const ::std::os::raw::c_char,
                          arg3: ::std::os::raw::c_int)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_set_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
    pub fn __gmpz_setbit(arg1: mpz_ptr, arg2: mp_bitcnt_t);
    pub fn __gmpz_size(__gmp_z: mpz_srcptr) -> size_t;
    pub fn __gmpz_sizeinbase(arg1: mpz_srcptr, arg2: ::std::os::raw::c_int)
     -> size_t;
    pub fn __gmpz_sqrt(arg1: mpz_ptr, arg2: mpz_srcptr);
    pub fn __gmpz_sqrtrem(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr);
    pub fn __gmpz_sub(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_sub_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_ui_sub(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong,
                         arg3: mpz_srcptr);
    pub fn __gmpz_submul(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_submul_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                            arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_swap(arg1: mpz_ptr, arg2: mpz_ptr);
    pub fn __gmpz_tdiv_ui(arg1: mpz_srcptr, arg2: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_tdiv_q(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_tdiv_q_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
                              arg3: mp_bitcnt_t);
    pub fn __gmpz_tdiv_q_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                            arg3: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_tdiv_qr(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
                          arg4: mpz_srcptr);
    pub fn __gmpz_tdiv_qr_ui(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
                             arg4: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_tdiv_r(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_tdiv_r_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
                              arg3: mp_bitcnt_t);
    pub fn __gmpz_tdiv_r_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
                            arg3: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_ulong;
    pub fn __gmpz_tstbit(arg1: mpz_srcptr, arg2: mp_bitcnt_t)
     -> ::std::os::raw::c_int;
    pub fn __gmpz_ui_pow_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong,
                            arg3: ::std::os::raw::c_ulong);
    pub fn __gmpz_urandomb(arg1: mpz_ptr, arg2: gmp_randstate_t,
                           arg3: mp_bitcnt_t);
    pub fn __gmpz_urandomm(arg1: mpz_ptr, arg2: gmp_randstate_t,
                           arg3: mpz_srcptr);
    pub fn __gmpz_xor(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
    pub fn __gmpz_limbs_read(arg1: mpz_srcptr) -> mp_srcptr;
    pub fn __gmpz_limbs_write(arg1: mpz_ptr, arg2: mp_size_t) -> mp_ptr;
    pub fn __gmpz_limbs_modify(arg1: mpz_ptr, arg2: mp_size_t) -> mp_ptr;
    pub fn __gmpz_limbs_finish(arg1: mpz_ptr, arg2: mp_size_t);
    pub fn __gmpz_roinit_n(arg1: mpz_ptr, arg2: mp_srcptr, arg3: mp_size_t)
     -> mpz_srcptr;
    pub fn __gmpq_abs(__gmp_w: mpq_ptr, __gmp_u: mpq_srcptr);
    pub fn __gmpq_add(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mpq_srcptr);
    pub fn __gmpq_canonicalize(arg1: mpq_ptr);
    pub fn __gmpq_clear(arg1: mpq_ptr);
    pub fn __gmpq_clears(arg1: mpq_ptr, ...);
    pub fn __gmpq_cmp(arg1: mpq_srcptr, arg2: mpq_srcptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpq_cmp_si(arg1: mpq_srcptr, arg2: ::std::os::raw::c_long,
                         arg3: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_int;
    pub fn __gmpq_cmp_ui(arg1: mpq_srcptr, arg2: ::std::os::raw::c_ulong,
                         arg3: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_int;
    pub fn __gmpq_cmp_z(arg1: mpq_srcptr, arg2: mpz_srcptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpq_div(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mpq_srcptr);
    pub fn __gmpq_div_2exp(arg1: mpq_ptr, arg2: mpq_srcptr,
                           arg3: mp_bitcnt_t);
    pub fn __gmpq_equal(arg1: mpq_srcptr, arg2: mpq_srcptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpq_get_num(arg1: mpz_ptr, arg2: mpq_srcptr);
    pub fn __gmpq_get_den(arg1: mpz_ptr, arg2: mpq_srcptr);
    pub fn __gmpq_get_d(arg1: mpq_srcptr) -> f64;
    pub fn __gmpq_get_str(arg1: *mut ::std::os::raw::c_char,
                          arg2: ::std::os::raw::c_int, arg3: mpq_srcptr)
     -> *mut ::std::os::raw::c_char;
    pub fn __gmpq_init(arg1: mpq_ptr);
    pub fn __gmpq_inits(arg1: mpq_ptr, ...);
    pub fn __gmpq_inv(arg1: mpq_ptr, arg2: mpq_srcptr);
    pub fn __gmpq_mul(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mpq_srcptr);
    pub fn __gmpq_mul_2exp(arg1: mpq_ptr, arg2: mpq_srcptr,
                           arg3: mp_bitcnt_t);
    pub fn __gmpq_neg(__gmp_w: mpq_ptr, __gmp_u: mpq_srcptr);
    pub fn __gmpq_set(arg1: mpq_ptr, arg2: mpq_srcptr);
    pub fn __gmpq_set_d(arg1: mpq_ptr, arg2: f64);
    pub fn __gmpq_set_den(arg1: mpq_ptr, arg2: mpz_srcptr);
    pub fn __gmpq_set_f(arg1: mpq_ptr, arg2: mpf_srcptr);
    pub fn __gmpq_set_num(arg1: mpq_ptr, arg2: mpz_srcptr);
    pub fn __gmpq_set_si(arg1: mpq_ptr, arg2: ::std::os::raw::c_long,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpq_set_str(arg1: mpq_ptr, arg2: *const ::std::os::raw::c_char,
                          arg3: ::std::os::raw::c_int)
     -> ::std::os::raw::c_int;
    pub fn __gmpq_set_ui(arg1: mpq_ptr, arg2: ::std::os::raw::c_ulong,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpq_set_z(arg1: mpq_ptr, arg2: mpz_srcptr);
    pub fn __gmpq_sub(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mpq_srcptr);
    pub fn __gmpq_swap(arg1: mpq_ptr, arg2: mpq_ptr);
    pub fn __gmpf_abs(arg1: mpf_ptr, arg2: mpf_srcptr);
    pub fn __gmpf_add(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
    pub fn __gmpf_add_ui(arg1: mpf_ptr, arg2: mpf_srcptr,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpf_ceil(arg1: mpf_ptr, arg2: mpf_srcptr);
    pub fn __gmpf_clear(arg1: mpf_ptr);
    pub fn __gmpf_clears(arg1: mpf_ptr, ...);
    pub fn __gmpf_cmp(arg1: mpf_srcptr, arg2: mpf_srcptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpf_cmp_z(arg1: mpf_srcptr, arg2: mpz_srcptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpf_cmp_d(arg1: mpf_srcptr, arg2: f64) -> ::std::os::raw::c_int;
    pub fn __gmpf_cmp_si(arg1: mpf_srcptr, arg2: ::std::os::raw::c_long)
     -> ::std::os::raw::c_int;
    pub fn __gmpf_cmp_ui(arg1: mpf_srcptr, arg2: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_int;
    pub fn __gmpf_div(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
    pub fn __gmpf_div_2exp(arg1: mpf_ptr, arg2: mpf_srcptr,
                           arg3: mp_bitcnt_t);
    pub fn __gmpf_div_ui(arg1: mpf_ptr, arg2: mpf_srcptr,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpf_dump(arg1: mpf_srcptr);
    pub fn __gmpf_eq(arg1: mpf_srcptr, arg2: mpf_srcptr, arg3: mp_bitcnt_t)
     -> ::std::os::raw::c_int;
    pub fn __gmpf_fits_sint_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpf_fits_slong_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpf_fits_sshort_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpf_fits_uint_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpf_fits_ulong_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpf_fits_ushort_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpf_floor(arg1: mpf_ptr, arg2: mpf_srcptr);
    pub fn __gmpf_get_d(arg1: mpf_srcptr) -> f64;
    pub fn __gmpf_get_d_2exp(arg1: *mut ::std::os::raw::c_long,
                             arg2: mpf_srcptr) -> f64;
    pub fn __gmpf_get_default_prec() -> mp_bitcnt_t;
    pub fn __gmpf_get_prec(arg1: mpf_srcptr) -> mp_bitcnt_t;
    pub fn __gmpf_get_si(arg1: mpf_srcptr) -> ::std::os::raw::c_long;
    pub fn __gmpf_get_str(arg1: *mut ::std::os::raw::c_char,
                          arg2: *mut mp_exp_t, arg3: ::std::os::raw::c_int,
                          arg4: size_t, arg5: mpf_srcptr)
     -> *mut ::std::os::raw::c_char;
    pub fn __gmpf_get_ui(arg1: mpf_srcptr) -> ::std::os::raw::c_ulong;
    pub fn __gmpf_init(arg1: mpf_ptr);
    pub fn __gmpf_init2(arg1: mpf_ptr, arg2: mp_bitcnt_t);
    pub fn __gmpf_inits(arg1: mpf_ptr, ...);
    pub fn __gmpf_init_set(arg1: mpf_ptr, arg2: mpf_srcptr);
    pub fn __gmpf_init_set_d(arg1: mpf_ptr, arg2: f64);
    pub fn __gmpf_init_set_si(arg1: mpf_ptr, arg2: ::std::os::raw::c_long);
    pub fn __gmpf_init_set_str(arg1: mpf_ptr,
                               arg2: *const ::std::os::raw::c_char,
                               arg3: ::std::os::raw::c_int)
     -> ::std::os::raw::c_int;
    pub fn __gmpf_init_set_ui(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong);
    pub fn __gmpf_integer_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
    pub fn __gmpf_mul(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
    pub fn __gmpf_mul_2exp(arg1: mpf_ptr, arg2: mpf_srcptr,
                           arg3: mp_bitcnt_t);
    pub fn __gmpf_mul_ui(arg1: mpf_ptr, arg2: mpf_srcptr,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpf_neg(arg1: mpf_ptr, arg2: mpf_srcptr);
    pub fn __gmpf_pow_ui(arg1: mpf_ptr, arg2: mpf_srcptr,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpf_random2(arg1: mpf_ptr, arg2: mp_size_t, arg3: mp_exp_t);
    pub fn __gmpf_reldiff(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
    pub fn __gmpf_set(arg1: mpf_ptr, arg2: mpf_srcptr);
    pub fn __gmpf_set_d(arg1: mpf_ptr, arg2: f64);
    pub fn __gmpf_set_default_prec(arg1: mp_bitcnt_t);
    pub fn __gmpf_set_prec(arg1: mpf_ptr, arg2: mp_bitcnt_t);
    pub fn __gmpf_set_prec_raw(arg1: mpf_ptr, arg2: mp_bitcnt_t);
    pub fn __gmpf_set_q(arg1: mpf_ptr, arg2: mpq_srcptr);
    pub fn __gmpf_set_si(arg1: mpf_ptr, arg2: ::std::os::raw::c_long);
    pub fn __gmpf_set_str(arg1: mpf_ptr, arg2: *const ::std::os::raw::c_char,
                          arg3: ::std::os::raw::c_int)
     -> ::std::os::raw::c_int;
    pub fn __gmpf_set_ui(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong);
    pub fn __gmpf_set_z(arg1: mpf_ptr, arg2: mpz_srcptr);
    pub fn __gmpf_size(arg1: mpf_srcptr) -> size_t;
    pub fn __gmpf_sqrt(arg1: mpf_ptr, arg2: mpf_srcptr);
    pub fn __gmpf_sqrt_ui(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong);
    pub fn __gmpf_sub(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
    pub fn __gmpf_sub_ui(arg1: mpf_ptr, arg2: mpf_srcptr,
                         arg3: ::std::os::raw::c_ulong);
    pub fn __gmpf_swap(arg1: mpf_ptr, arg2: mpf_ptr);
    pub fn __gmpf_trunc(arg1: mpf_ptr, arg2: mpf_srcptr);
    pub fn __gmpf_ui_div(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong,
                         arg3: mpf_srcptr);
    pub fn __gmpf_ui_sub(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong,
                         arg3: mpf_srcptr);
    pub fn __gmpf_urandomb(arg1: mpf_t, arg2: gmp_randstate_t,
                           arg3: mp_bitcnt_t);
    pub fn __gmpn_add(__gmp_wp: mp_ptr, __gmp_xp: mp_srcptr,
                      __gmp_xsize: mp_size_t, __gmp_yp: mp_srcptr,
                      __gmp_ysize: mp_size_t) -> mp_limb_t;
    pub fn __gmpn_add_1(__gmp_dst: mp_ptr, __gmp_src: mp_srcptr,
                        __gmp_size: mp_size_t, __gmp_n: mp_limb_t)
     -> mp_limb_t;
    pub fn __gmpn_add_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
                        arg4: mp_size_t) -> mp_limb_t;
    pub fn __gmpn_addmul_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                           arg4: mp_limb_t) -> mp_limb_t;
    pub fn __gmpn_cmp(__gmp_xp: mp_srcptr, __gmp_yp: mp_srcptr,
                      __gmp_size: mp_size_t) -> ::std::os::raw::c_int;
    pub fn __gmpn_zero_p(__gmp_p: mp_srcptr, __gmp_n: mp_size_t)
     -> ::std::os::raw::c_int;
    pub fn __gmpn_divexact_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                             arg4: mp_limb_t);
    pub fn __gmpn_divexact_by3c(arg1: mp_ptr, arg2: mp_srcptr,
                                arg3: mp_size_t, arg4: mp_limb_t)
     -> mp_limb_t;
    pub fn __gmpn_divrem(arg1: mp_ptr, arg2: mp_size_t, arg3: mp_ptr,
                         arg4: mp_size_t, arg5: mp_srcptr, arg6: mp_size_t)
     -> mp_limb_t;
    pub fn __gmpn_divrem_1(arg1: mp_ptr, arg2: mp_size_t, arg3: mp_srcptr,
                           arg4: mp_size_t, arg5: mp_limb_t) -> mp_limb_t;
    pub fn __gmpn_divrem_2(arg1: mp_ptr, arg2: mp_size_t, arg3: mp_ptr,
                           arg4: mp_size_t, arg5: mp_srcptr) -> mp_limb_t;
    pub fn __gmpn_div_qr_1(arg1: mp_ptr, arg2: *mut mp_limb_t,
                           arg3: mp_srcptr, arg4: mp_size_t, arg5: mp_limb_t)
     -> mp_limb_t;
    pub fn __gmpn_div_qr_2(arg1: mp_ptr, arg2: mp_ptr, arg3: mp_srcptr,
                           arg4: mp_size_t, arg5: mp_srcptr) -> mp_limb_t;
    pub fn __gmpn_gcd(arg1: mp_ptr, arg2: mp_ptr, arg3: mp_size_t,
                      arg4: mp_ptr, arg5: mp_size_t) -> mp_size_t;
    pub fn __gmpn_gcd_1(arg1: mp_srcptr, arg2: mp_size_t, arg3: mp_limb_t)
     -> mp_limb_t;
    pub fn __gmpn_gcdext_1(arg1: *mut mp_limb_signed_t,
                           arg2: *mut mp_limb_signed_t, arg3: mp_limb_t,
                           arg4: mp_limb_t) -> mp_limb_t;
    pub fn __gmpn_gcdext(arg1: mp_ptr, arg2: mp_ptr, arg3: *mut mp_size_t,
                         arg4: mp_ptr, arg5: mp_size_t, arg6: mp_ptr,
                         arg7: mp_size_t) -> mp_size_t;
    pub fn __gmpn_get_str(arg1: *mut ::std::os::raw::c_uchar,
                          arg2: ::std::os::raw::c_int, arg3: mp_ptr,
                          arg4: mp_size_t) -> size_t;
    pub fn __gmpn_hamdist(arg1: mp_srcptr, arg2: mp_srcptr, arg3: mp_size_t)
     -> mp_bitcnt_t;
    pub fn __gmpn_lshift(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                         arg4: ::std::os::raw::c_uint) -> mp_limb_t;
    pub fn __gmpn_mod_1(arg1: mp_srcptr, arg2: mp_size_t, arg3: mp_limb_t)
     -> mp_limb_t;
    pub fn __gmpn_mul(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                      arg4: mp_srcptr, arg5: mp_size_t) -> mp_limb_t;
    pub fn __gmpn_mul_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                        arg4: mp_limb_t) -> mp_limb_t;
    pub fn __gmpn_mul_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
                        arg4: mp_size_t);
    pub fn __gmpn_sqr(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t);
    pub fn __gmpn_neg(__gmp_rp: mp_ptr, __gmp_up: mp_srcptr,
                      __gmp_n: mp_size_t) -> mp_limb_t;
    pub fn __gmpn_com(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t);
    pub fn __gmpn_perfect_square_p(arg1: mp_srcptr, arg2: mp_size_t)
     -> ::std::os::raw::c_int;
    pub fn __gmpn_perfect_power_p(arg1: mp_srcptr, arg2: mp_size_t)
     -> ::std::os::raw::c_int;
    pub fn __gmpn_popcount(arg1: mp_srcptr, arg2: mp_size_t) -> mp_bitcnt_t;
    pub fn __gmpn_pow_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                        arg4: mp_limb_t, arg5: mp_ptr) -> mp_size_t;
    pub fn __gmpn_preinv_mod_1(arg1: mp_srcptr, arg2: mp_size_t,
                               arg3: mp_limb_t, arg4: mp_limb_t) -> mp_limb_t;
    pub fn __gmpn_random(arg1: mp_ptr, arg2: mp_size_t);
    pub fn __gmpn_random2(arg1: mp_ptr, arg2: mp_size_t);
    pub fn __gmpn_rshift(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                         arg4: ::std::os::raw::c_uint) -> mp_limb_t;
    pub fn __gmpn_scan0(arg1: mp_srcptr, arg2: mp_bitcnt_t) -> mp_bitcnt_t;
    pub fn __gmpn_scan1(arg1: mp_srcptr, arg2: mp_bitcnt_t) -> mp_bitcnt_t;
    pub fn __gmpn_set_str(arg1: mp_ptr, arg2: *const ::std::os::raw::c_uchar,
                          arg3: size_t, arg4: ::std::os::raw::c_int)
     -> mp_size_t;
    pub fn __gmpn_sizeinbase(arg1: mp_srcptr, arg2: mp_size_t,
                             arg3: ::std::os::raw::c_int) -> size_t;
    pub fn __gmpn_sqrtrem(arg1: mp_ptr, arg2: mp_ptr, arg3: mp_srcptr,
                          arg4: mp_size_t) -> mp_size_t;
    pub fn __gmpn_sub(__gmp_wp: mp_ptr, __gmp_xp: mp_srcptr,
                      __gmp_xsize: mp_size_t, __gmp_yp: mp_srcptr,
                      __gmp_ysize: mp_size_t) -> mp_limb_t;
    pub fn __gmpn_sub_1(__gmp_dst: mp_ptr, __gmp_src: mp_srcptr,
                        __gmp_size: mp_size_t, __gmp_n: mp_limb_t)
     -> mp_limb_t;
    pub fn __gmpn_sub_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
                        arg4: mp_size_t) -> mp_limb_t;
    pub fn __gmpn_submul_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                           arg4: mp_limb_t) -> mp_limb_t;
    pub fn __gmpn_tdiv_qr(arg1: mp_ptr, arg2: mp_ptr, arg3: mp_size_t,
                          arg4: mp_srcptr, arg5: mp_size_t, arg6: mp_srcptr,
                          arg7: mp_size_t);
    pub fn __gmpn_and_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
                        arg4: mp_size_t);
    pub fn __gmpn_andn_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
                         arg4: mp_size_t);
    pub fn __gmpn_nand_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
                         arg4: mp_size_t);
    pub fn __gmpn_ior_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
                        arg4: mp_size_t);
    pub fn __gmpn_iorn_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
                         arg4: mp_size_t);
    pub fn __gmpn_nior_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
                         arg4: mp_size_t);
    pub fn __gmpn_xor_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
                        arg4: mp_size_t);
    pub fn __gmpn_xnor_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
                         arg4: mp_size_t);
    pub fn __gmpn_copyi(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t);
    pub fn __gmpn_copyd(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t);
    pub fn __gmpn_zero(arg1: mp_ptr, arg2: mp_size_t);
    pub fn __gmpn_cnd_add_n(arg1: mp_limb_t, arg2: mp_ptr, arg3: mp_srcptr,
                            arg4: mp_srcptr, arg5: mp_size_t) -> mp_limb_t;
    pub fn __gmpn_cnd_sub_n(arg1: mp_limb_t, arg2: mp_ptr, arg3: mp_srcptr,
                            arg4: mp_srcptr, arg5: mp_size_t) -> mp_limb_t;
    pub fn __gmpn_sec_add_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                            arg4: mp_limb_t, arg5: mp_ptr) -> mp_limb_t;
    pub fn __gmpn_sec_add_1_itch(arg1: mp_size_t) -> mp_size_t;
    pub fn __gmpn_sec_sub_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                            arg4: mp_limb_t, arg5: mp_ptr) -> mp_limb_t;
    pub fn __gmpn_sec_sub_1_itch(arg1: mp_size_t) -> mp_size_t;
    pub fn __gmpn_cnd_swap(arg1: mp_limb_t, arg2: *mut mp_limb_t,
                           arg3: *mut mp_limb_t, arg4: mp_size_t);
    pub fn __gmpn_sec_mul(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                          arg4: mp_srcptr, arg5: mp_size_t, arg6: mp_ptr);
    pub fn __gmpn_sec_mul_itch(arg1: mp_size_t, arg2: mp_size_t) -> mp_size_t;
    pub fn __gmpn_sec_sqr(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                          arg4: mp_ptr);
    pub fn __gmpn_sec_sqr_itch(arg1: mp_size_t) -> mp_size_t;
    pub fn __gmpn_sec_powm(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
                           arg4: mp_srcptr, arg5: mp_bitcnt_t,
                           arg6: mp_srcptr, arg7: mp_size_t, arg8: mp_ptr);
    pub fn __gmpn_sec_powm_itch(arg1: mp_size_t, arg2: mp_bitcnt_t,
                                arg3: mp_size_t) -> mp_size_t;
    pub fn __gmpn_sec_tabselect(arg1: *mut mp_limb_t, arg2: *const mp_limb_t,
                                arg3: mp_size_t, arg4: mp_size_t,
                                arg5: mp_size_t);
    pub fn __gmpn_sec_div_qr(arg1: mp_ptr, arg2: mp_ptr, arg3: mp_size_t,
                             arg4: mp_srcptr, arg5: mp_size_t, arg6: mp_ptr)
     -> mp_limb_t;
    pub fn __gmpn_sec_div_qr_itch(arg1: mp_size_t, arg2: mp_size_t)
     -> mp_size_t;
    pub fn __gmpn_sec_div_r(arg1: mp_ptr, arg2: mp_size_t, arg3: mp_srcptr,
                            arg4: mp_size_t, arg5: mp_ptr);
    pub fn __gmpn_sec_div_r_itch(arg1: mp_size_t, arg2: mp_size_t)
     -> mp_size_t;
    pub fn __gmpn_sec_invert(arg1: mp_ptr, arg2: mp_ptr, arg3: mp_srcptr,
                             arg4: mp_size_t, arg5: mp_bitcnt_t, arg6: mp_ptr)
     -> ::std::os::raw::c_int;
    pub fn __gmpn_sec_invert_itch(arg1: mp_size_t) -> mp_size_t;
}