gmp_sys/
lib.rs

1#![allow(non_camel_case_types)]
2
3extern crate libc;
4
5use libc::size_t;
6
7// automatically generated by rust-bindgen
8//
9// Manually edited to add gmp_randstate_ptr.
10// See discussion at https://github.com/netvl/gmp-sys/pull/1
11
12pub type mp_limb_t = ::std::os::raw::c_ulong;
13pub type mp_limb_signed_t = ::std::os::raw::c_long;
14pub type mp_bitcnt_t = ::std::os::raw::c_ulong;
15#[repr(C)]
16#[derive(Copy)]
17pub struct Struct_Unnamed1 {
18    pub _mp_alloc: ::std::os::raw::c_int,
19    pub _mp_size: ::std::os::raw::c_int,
20    pub _mp_d: *mut mp_limb_t,
21}
22impl ::std::clone::Clone for Struct_Unnamed1 {
23    fn clone(&self) -> Self { *self }
24}
25impl ::std::default::Default for Struct_Unnamed1 {
26    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
27}
28pub type __mpz_struct = Struct_Unnamed1;
29pub type MP_INT = __mpz_struct;
30pub type mpz_t = [__mpz_struct; 1usize];
31pub type mp_ptr = *mut mp_limb_t;
32pub type mp_srcptr = *const mp_limb_t;
33pub type mp_size_t = ::std::os::raw::c_long;
34pub type mp_exp_t = ::std::os::raw::c_long;
35#[repr(C)]
36#[derive(Copy)]
37pub struct Struct_Unnamed2 {
38    pub _mp_num: __mpz_struct,
39    pub _mp_den: __mpz_struct,
40}
41impl ::std::clone::Clone for Struct_Unnamed2 {
42    fn clone(&self) -> Self { *self }
43}
44impl ::std::default::Default for Struct_Unnamed2 {
45    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
46}
47pub type __mpq_struct = Struct_Unnamed2;
48pub type MP_RAT = __mpq_struct;
49pub type mpq_t = [__mpq_struct; 1usize];
50#[repr(C)]
51#[derive(Copy)]
52pub struct Struct_Unnamed3 {
53    pub _mp_prec: ::std::os::raw::c_int,
54    pub _mp_size: ::std::os::raw::c_int,
55    pub _mp_exp: mp_exp_t,
56    pub _mp_d: *mut mp_limb_t,
57}
58impl ::std::clone::Clone for Struct_Unnamed3 {
59    fn clone(&self) -> Self { *self }
60}
61impl ::std::default::Default for Struct_Unnamed3 {
62    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
63}
64pub type __mpf_struct = Struct_Unnamed3;
65pub type mpf_t = [__mpf_struct; 1usize];
66pub type Enum_Unnamed4 = ::libc::c_uint;
67pub const GMP_RAND_ALG_DEFAULT: ::libc::c_uint = 0;
68pub const GMP_RAND_ALG_LC: ::libc::c_uint = 0;
69pub type gmp_randalg_t = Enum_Unnamed4;
70#[repr(C)]
71#[derive(Copy)]
72pub struct Struct_Unnamed5 {
73    pub _mp_seed: mpz_t,
74    pub _mp_alg: gmp_randalg_t,
75    pub _mp_algdata: Union_Unnamed6,
76}
77impl ::std::clone::Clone for Struct_Unnamed5 {
78    fn clone(&self) -> Self { *self }
79}
80impl ::std::default::Default for Struct_Unnamed5 {
81    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
82}
83#[repr(C)]
84#[derive(Copy)]
85pub struct Union_Unnamed6 {
86    pub _bindgen_data_: [u64; 1usize],
87}
88impl Union_Unnamed6 {
89    pub unsafe fn _mp_lc(&mut self) -> *mut *mut ::std::os::raw::c_void {
90        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
91        ::std::mem::transmute(raw.offset(0))
92    }
93}
94impl ::std::clone::Clone for Union_Unnamed6 {
95    fn clone(&self) -> Self { *self }
96}
97impl ::std::default::Default for Union_Unnamed6 {
98    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
99}
100pub type __gmp_randstate_struct = Struct_Unnamed5;
101pub type gmp_randstate_t = [__gmp_randstate_struct; 1usize];
102pub type gmp_randstate_ptr = *mut __gmp_randstate_struct;
103pub type mpz_srcptr = *const __mpz_struct;
104pub type mpz_ptr = *mut __mpz_struct;
105pub type mpf_srcptr = *const __mpf_struct;
106pub type mpf_ptr = *mut __mpf_struct;
107pub type mpq_srcptr = *const __mpq_struct;
108pub type mpq_ptr = *mut __mpq_struct;
109#[derive(Clone, Copy)]
110#[repr(u32)]
111pub enum Enum_Unnamed7 {
112    GMP_ERROR_NONE = 0,
113    GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,
114    GMP_ERROR_DIVISION_BY_ZERO = 2,
115    GMP_ERROR_SQRT_OF_NEGATIVE = 4,
116    GMP_ERROR_INVALID_ARGUMENT = 8,
117}
118extern "C" {
119    pub static __gmp_bits_per_limb: ::std::os::raw::c_int;
120    pub static mut __gmp_errno: ::std::os::raw::c_int;
121    pub static __gmp_version: *const ::std::os::raw::c_char;
122}
123extern "C" {
124    pub fn __gmp_set_memory_functions(arg1:
125                                          ::std::option::Option<extern "C" fn(arg1:
126                                                                                  size_t)
127                                                                    ->
128                                                                        *mut ::std::os::raw::c_void>,
129                                      arg2:
130                                          ::std::option::Option<unsafe extern "C" fn(arg1:
131                                                                                         *mut ::std::os::raw::c_void,
132                                                                                     arg2:
133                                                                                         size_t,
134                                                                                     arg3:
135                                                                                         size_t)
136                                                                    ->
137                                                                        *mut ::std::os::raw::c_void>,
138                                      arg3:
139                                          ::std::option::Option<unsafe extern "C" fn(arg1:
140                                                                                         *mut ::std::os::raw::c_void,
141                                                                                     arg2:
142                                                                                         size_t)>);
143    pub fn __gmp_get_memory_functions(arg1:
144                                          *mut ::std::option::Option<extern "C" fn(arg1:
145                                                                                       size_t)
146                                                                         ->
147                                                                             *mut ::std::os::raw::c_void>,
148                                      arg2:
149                                          *mut ::std::option::Option<unsafe extern "C" fn(arg1:
150                                                                                              *mut ::std::os::raw::c_void,
151                                                                                          arg2:
152                                                                                              size_t,
153                                                                                          arg3:
154                                                                                              size_t)
155                                                                         ->
156                                                                             *mut ::std::os::raw::c_void>,
157                                      arg3:
158                                          *mut ::std::option::Option<unsafe extern "C" fn(arg1:
159                                                                                              *mut ::std::os::raw::c_void,
160                                                                                          arg2:
161                                                                                              size_t)>);
162    pub fn __gmp_randinit(arg1: gmp_randstate_ptr, arg2: gmp_randalg_t, ...);
163    pub fn __gmp_randinit_default(arg1: gmp_randstate_ptr);
164    pub fn __gmp_randinit_lc_2exp(arg1: gmp_randstate_ptr, arg2: mpz_srcptr,
165                                  arg3: ::std::os::raw::c_ulong,
166                                  arg4: mp_bitcnt_t);
167    pub fn __gmp_randinit_lc_2exp_size(arg1: gmp_randstate_ptr,
168                                       arg2: mp_bitcnt_t)
169     -> ::std::os::raw::c_int;
170    pub fn __gmp_randinit_mt(arg1: gmp_randstate_ptr);
171    pub fn __gmp_randinit_set(arg1: gmp_randstate_ptr,
172                              arg2: *const __gmp_randstate_struct);
173    pub fn __gmp_randseed(arg1: gmp_randstate_ptr, arg2: mpz_srcptr);
174    pub fn __gmp_randseed_ui(arg1: gmp_randstate_ptr,
175                             arg2: ::std::os::raw::c_ulong);
176    pub fn __gmp_randclear(arg1: gmp_randstate_ptr);
177    pub fn __gmp_urandomb_ui(arg1: gmp_randstate_ptr,
178                             arg2: ::std::os::raw::c_ulong)
179     -> ::std::os::raw::c_ulong;
180    pub fn __gmp_urandomm_ui(arg1: gmp_randstate_ptr,
181                             arg2: ::std::os::raw::c_ulong)
182     -> ::std::os::raw::c_ulong;
183    pub fn __gmp_asprintf(arg1: *mut *mut ::std::os::raw::c_char,
184                          arg2: *const ::std::os::raw::c_char, ...)
185     -> ::std::os::raw::c_int;
186    pub fn __gmp_printf(arg1: *const ::std::os::raw::c_char, ...)
187     -> ::std::os::raw::c_int;
188    pub fn __gmp_snprintf(arg1: *mut ::std::os::raw::c_char, arg2: size_t,
189                          arg3: *const ::std::os::raw::c_char, ...)
190     -> ::std::os::raw::c_int;
191    pub fn __gmp_sprintf(arg1: *mut ::std::os::raw::c_char,
192                         arg2: *const ::std::os::raw::c_char, ...)
193     -> ::std::os::raw::c_int;
194    pub fn __gmp_scanf(arg1: *const ::std::os::raw::c_char, ...)
195     -> ::std::os::raw::c_int;
196    pub fn __gmp_sscanf(arg1: *const ::std::os::raw::c_char,
197                        arg2: *const ::std::os::raw::c_char, ...)
198     -> ::std::os::raw::c_int;
199    pub fn __gmpz_realloc(arg1: mpz_ptr, arg2: mp_size_t)
200     -> *mut ::std::os::raw::c_void;
201    pub fn __gmpz_abs(__gmp_w: mpz_ptr, __gmp_u: mpz_srcptr);
202    pub fn __gmpz_add(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
203    pub fn __gmpz_add_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
204                         arg3: ::std::os::raw::c_ulong);
205    pub fn __gmpz_addmul(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
206    pub fn __gmpz_addmul_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
207                            arg3: ::std::os::raw::c_ulong);
208    pub fn __gmpz_and(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
209    pub fn __gmpz_array_init(arg1: mpz_ptr, arg2: mp_size_t, arg3: mp_size_t);
210    pub fn __gmpz_bin_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
211                         arg3: ::std::os::raw::c_ulong);
212    pub fn __gmpz_bin_uiui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong,
213                           arg3: ::std::os::raw::c_ulong);
214    pub fn __gmpz_cdiv_q(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
215    pub fn __gmpz_cdiv_q_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
216                              arg3: mp_bitcnt_t);
217    pub fn __gmpz_cdiv_q_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
218                            arg3: ::std::os::raw::c_ulong)
219     -> ::std::os::raw::c_ulong;
220    pub fn __gmpz_cdiv_qr(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
221                          arg4: mpz_srcptr);
222    pub fn __gmpz_cdiv_qr_ui(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
223                             arg4: ::std::os::raw::c_ulong)
224     -> ::std::os::raw::c_ulong;
225    pub fn __gmpz_cdiv_r(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
226    pub fn __gmpz_cdiv_r_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
227                              arg3: mp_bitcnt_t);
228    pub fn __gmpz_cdiv_r_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
229                            arg3: ::std::os::raw::c_ulong)
230     -> ::std::os::raw::c_ulong;
231    pub fn __gmpz_cdiv_ui(arg1: mpz_srcptr, arg2: ::std::os::raw::c_ulong)
232     -> ::std::os::raw::c_ulong;
233    pub fn __gmpz_clear(arg1: mpz_ptr);
234    pub fn __gmpz_clears(arg1: mpz_ptr, ...);
235    pub fn __gmpz_clrbit(arg1: mpz_ptr, arg2: mp_bitcnt_t);
236    pub fn __gmpz_cmp(arg1: mpz_srcptr, arg2: mpz_srcptr)
237     -> ::std::os::raw::c_int;
238    pub fn __gmpz_cmp_d(arg1: mpz_srcptr, arg2: ::std::os::raw::c_double)
239     -> ::std::os::raw::c_int;
240    pub fn __gmpz_cmp_si(arg1: mpz_srcptr, arg2: ::std::os::raw::c_long)
241     -> ::std::os::raw::c_int;
242    pub fn __gmpz_cmp_ui(arg1: mpz_srcptr, arg2: ::std::os::raw::c_ulong)
243     -> ::std::os::raw::c_int;
244    pub fn __gmpz_cmpabs(arg1: mpz_srcptr, arg2: mpz_srcptr)
245     -> ::std::os::raw::c_int;
246    pub fn __gmpz_cmpabs_d(arg1: mpz_srcptr, arg2: ::std::os::raw::c_double)
247     -> ::std::os::raw::c_int;
248    pub fn __gmpz_cmpabs_ui(arg1: mpz_srcptr, arg2: ::std::os::raw::c_ulong)
249     -> ::std::os::raw::c_int;
250    pub fn __gmpz_com(arg1: mpz_ptr, arg2: mpz_srcptr);
251    pub fn __gmpz_combit(arg1: mpz_ptr, arg2: mp_bitcnt_t);
252    pub fn __gmpz_congruent_p(arg1: mpz_srcptr, arg2: mpz_srcptr,
253                              arg3: mpz_srcptr) -> ::std::os::raw::c_int;
254    pub fn __gmpz_congruent_2exp_p(arg1: mpz_srcptr, arg2: mpz_srcptr,
255                                   arg3: mp_bitcnt_t)
256     -> ::std::os::raw::c_int;
257    pub fn __gmpz_congruent_ui_p(arg1: mpz_srcptr,
258                                 arg2: ::std::os::raw::c_ulong,
259                                 arg3: ::std::os::raw::c_ulong)
260     -> ::std::os::raw::c_int;
261    pub fn __gmpz_divexact(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
262    pub fn __gmpz_divexact_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
263                              arg3: ::std::os::raw::c_ulong);
264    pub fn __gmpz_divisible_p(arg1: mpz_srcptr, arg2: mpz_srcptr)
265     -> ::std::os::raw::c_int;
266    pub fn __gmpz_divisible_ui_p(arg1: mpz_srcptr,
267                                 arg2: ::std::os::raw::c_ulong)
268     -> ::std::os::raw::c_int;
269    pub fn __gmpz_divisible_2exp_p(arg1: mpz_srcptr, arg2: mp_bitcnt_t)
270     -> ::std::os::raw::c_int;
271    pub fn __gmpz_dump(arg1: mpz_srcptr);
272    pub fn __gmpz_export(arg1: *mut ::std::os::raw::c_void, arg2: *mut size_t,
273                         arg3: ::std::os::raw::c_int, arg4: size_t,
274                         arg5: ::std::os::raw::c_int, arg6: size_t,
275                         arg7: mpz_srcptr) -> *mut ::std::os::raw::c_void;
276    pub fn __gmpz_fac_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
277    pub fn __gmpz_2fac_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
278    pub fn __gmpz_mfac_uiui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong,
279                            arg3: ::std::os::raw::c_ulong);
280    pub fn __gmpz_primorial_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
281    pub fn __gmpz_fdiv_q(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
282    pub fn __gmpz_fdiv_q_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
283                              arg3: mp_bitcnt_t);
284    pub fn __gmpz_fdiv_q_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
285                            arg3: ::std::os::raw::c_ulong)
286     -> ::std::os::raw::c_ulong;
287    pub fn __gmpz_fdiv_qr(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
288                          arg4: mpz_srcptr);
289    pub fn __gmpz_fdiv_qr_ui(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
290                             arg4: ::std::os::raw::c_ulong)
291     -> ::std::os::raw::c_ulong;
292    pub fn __gmpz_fdiv_r(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
293    pub fn __gmpz_fdiv_r_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
294                              arg3: mp_bitcnt_t);
295    pub fn __gmpz_fdiv_r_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
296                            arg3: ::std::os::raw::c_ulong)
297     -> ::std::os::raw::c_ulong;
298    pub fn __gmpz_fdiv_ui(arg1: mpz_srcptr, arg2: ::std::os::raw::c_ulong)
299     -> ::std::os::raw::c_ulong;
300    pub fn __gmpz_fib_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
301    pub fn __gmpz_fib2_ui(arg1: mpz_ptr, arg2: mpz_ptr,
302                          arg3: ::std::os::raw::c_ulong);
303    pub fn __gmpz_fits_sint_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
304    pub fn __gmpz_fits_slong_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
305    pub fn __gmpz_fits_sshort_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
306    pub fn __gmpz_fits_uint_p(__gmp_z: mpz_srcptr) -> ::std::os::raw::c_int;
307    pub fn __gmpz_fits_ulong_p(__gmp_z: mpz_srcptr) -> ::std::os::raw::c_int;
308    pub fn __gmpz_fits_ushort_p(__gmp_z: mpz_srcptr) -> ::std::os::raw::c_int;
309    pub fn __gmpz_gcd(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
310    pub fn __gmpz_gcd_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
311                         arg3: ::std::os::raw::c_ulong)
312     -> ::std::os::raw::c_ulong;
313    pub fn __gmpz_gcdext(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_ptr,
314                         arg4: mpz_srcptr, arg5: mpz_srcptr);
315    pub fn __gmpz_get_d(arg1: mpz_srcptr) -> ::std::os::raw::c_double;
316    pub fn __gmpz_get_d_2exp(arg1: *mut ::std::os::raw::c_long,
317                             arg2: mpz_srcptr) -> ::std::os::raw::c_double;
318    pub fn __gmpz_get_si(arg1: mpz_srcptr) -> ::std::os::raw::c_long;
319    pub fn __gmpz_get_str(arg1: *mut ::std::os::raw::c_char,
320                          arg2: ::std::os::raw::c_int, arg3: mpz_srcptr)
321     -> *mut ::std::os::raw::c_char;
322    pub fn __gmpz_get_ui(__gmp_z: mpz_srcptr) -> ::std::os::raw::c_ulong;
323    pub fn __gmpz_getlimbn(__gmp_z: mpz_srcptr, __gmp_n: mp_size_t)
324     -> mp_limb_t;
325    pub fn __gmpz_hamdist(arg1: mpz_srcptr, arg2: mpz_srcptr) -> mp_bitcnt_t;
326    pub fn __gmpz_import(arg1: mpz_ptr, arg2: size_t,
327                         arg3: ::std::os::raw::c_int, arg4: size_t,
328                         arg5: ::std::os::raw::c_int, arg6: size_t,
329                         arg7: *const ::std::os::raw::c_void);
330    pub fn __gmpz_init(arg1: mpz_ptr);
331    pub fn __gmpz_init2(arg1: mpz_ptr, arg2: mp_bitcnt_t);
332    pub fn __gmpz_inits(arg1: mpz_ptr, ...);
333    pub fn __gmpz_init_set(arg1: mpz_ptr, arg2: mpz_srcptr);
334    pub fn __gmpz_init_set_d(arg1: mpz_ptr, arg2: ::std::os::raw::c_double);
335    pub fn __gmpz_init_set_si(arg1: mpz_ptr, arg2: ::std::os::raw::c_long);
336    pub fn __gmpz_init_set_str(arg1: mpz_ptr,
337                               arg2: *const ::std::os::raw::c_char,
338                               arg3: ::std::os::raw::c_int)
339     -> ::std::os::raw::c_int;
340    pub fn __gmpz_init_set_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
341    pub fn __gmpz_invert(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr)
342     -> ::std::os::raw::c_int;
343    pub fn __gmpz_ior(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
344    pub fn __gmpz_jacobi(arg1: mpz_srcptr, arg2: mpz_srcptr)
345     -> ::std::os::raw::c_int;
346    pub fn __gmpz_kronecker_si(arg1: mpz_srcptr, arg2: ::std::os::raw::c_long)
347     -> ::std::os::raw::c_int;
348    pub fn __gmpz_kronecker_ui(arg1: mpz_srcptr,
349                               arg2: ::std::os::raw::c_ulong)
350     -> ::std::os::raw::c_int;
351    pub fn __gmpz_si_kronecker(arg1: ::std::os::raw::c_long, arg2: mpz_srcptr)
352     -> ::std::os::raw::c_int;
353    pub fn __gmpz_ui_kronecker(arg1: ::std::os::raw::c_ulong,
354                               arg2: mpz_srcptr) -> ::std::os::raw::c_int;
355    pub fn __gmpz_lcm(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
356    pub fn __gmpz_lcm_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
357                         arg3: ::std::os::raw::c_ulong);
358    pub fn __gmpz_lucnum_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
359    pub fn __gmpz_lucnum2_ui(arg1: mpz_ptr, arg2: mpz_ptr,
360                             arg3: ::std::os::raw::c_ulong);
361    pub fn __gmpz_millerrabin(arg1: mpz_srcptr, arg2: ::std::os::raw::c_int)
362     -> ::std::os::raw::c_int;
363    pub fn __gmpz_mod(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
364    pub fn __gmpz_mul(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
365    pub fn __gmpz_mul_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
366                           arg3: mp_bitcnt_t);
367    pub fn __gmpz_mul_si(arg1: mpz_ptr, arg2: mpz_srcptr,
368                         arg3: ::std::os::raw::c_long);
369    pub fn __gmpz_mul_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
370                         arg3: ::std::os::raw::c_ulong);
371    pub fn __gmpz_neg(__gmp_w: mpz_ptr, __gmp_u: mpz_srcptr);
372    pub fn __gmpz_nextprime(arg1: mpz_ptr, arg2: mpz_srcptr);
373    pub fn __gmpz_perfect_power_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
374    pub fn __gmpz_perfect_square_p(__gmp_a: mpz_srcptr)
375     -> ::std::os::raw::c_int;
376    pub fn __gmpz_popcount(__gmp_u: mpz_srcptr) -> mp_bitcnt_t;
377    pub fn __gmpz_pow_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
378                         arg3: ::std::os::raw::c_ulong);
379    pub fn __gmpz_powm(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr,
380                       arg4: mpz_srcptr);
381    pub fn __gmpz_powm_sec(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr,
382                           arg4: mpz_srcptr);
383    pub fn __gmpz_powm_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
384                          arg3: ::std::os::raw::c_ulong, arg4: mpz_srcptr);
385    pub fn __gmpz_probab_prime_p(arg1: mpz_srcptr,
386                                 arg2: ::std::os::raw::c_int)
387     -> ::std::os::raw::c_int;
388    pub fn __gmpz_random(arg1: mpz_ptr, arg2: mp_size_t);
389    pub fn __gmpz_random2(arg1: mpz_ptr, arg2: mp_size_t);
390    pub fn __gmpz_realloc2(arg1: mpz_ptr, arg2: mp_bitcnt_t);
391    pub fn __gmpz_remove(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr)
392     -> mp_bitcnt_t;
393    pub fn __gmpz_root(arg1: mpz_ptr, arg2: mpz_srcptr,
394                       arg3: ::std::os::raw::c_ulong)
395     -> ::std::os::raw::c_int;
396    pub fn __gmpz_rootrem(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
397                          arg4: ::std::os::raw::c_ulong);
398    pub fn __gmpz_rrandomb(arg1: mpz_ptr, arg2: gmp_randstate_ptr,
399                           arg3: mp_bitcnt_t);
400    pub fn __gmpz_scan0(arg1: mpz_srcptr, arg2: mp_bitcnt_t) -> mp_bitcnt_t;
401    pub fn __gmpz_scan1(arg1: mpz_srcptr, arg2: mp_bitcnt_t) -> mp_bitcnt_t;
402    pub fn __gmpz_set(arg1: mpz_ptr, arg2: mpz_srcptr);
403    pub fn __gmpz_set_d(arg1: mpz_ptr, arg2: ::std::os::raw::c_double);
404    pub fn __gmpz_set_f(arg1: mpz_ptr, arg2: mpf_srcptr);
405    pub fn __gmpz_set_q(__gmp_w: mpz_ptr, __gmp_u: mpq_srcptr);
406    pub fn __gmpz_set_si(arg1: mpz_ptr, arg2: ::std::os::raw::c_long);
407    pub fn __gmpz_set_str(arg1: mpz_ptr, arg2: *const ::std::os::raw::c_char,
408                          arg3: ::std::os::raw::c_int)
409     -> ::std::os::raw::c_int;
410    pub fn __gmpz_set_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
411    pub fn __gmpz_setbit(arg1: mpz_ptr, arg2: mp_bitcnt_t);
412    pub fn __gmpz_size(__gmp_z: mpz_srcptr) -> size_t;
413    pub fn __gmpz_sizeinbase(arg1: mpz_srcptr, arg2: ::std::os::raw::c_int)
414     -> size_t;
415    pub fn __gmpz_sqrt(arg1: mpz_ptr, arg2: mpz_srcptr);
416    pub fn __gmpz_sqrtrem(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr);
417    pub fn __gmpz_sub(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
418    pub fn __gmpz_sub_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
419                         arg3: ::std::os::raw::c_ulong);
420    pub fn __gmpz_ui_sub(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong,
421                         arg3: mpz_srcptr);
422    pub fn __gmpz_submul(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
423    pub fn __gmpz_submul_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
424                            arg3: ::std::os::raw::c_ulong);
425    pub fn __gmpz_swap(arg1: mpz_ptr, arg2: mpz_ptr);
426    pub fn __gmpz_tdiv_ui(arg1: mpz_srcptr, arg2: ::std::os::raw::c_ulong)
427     -> ::std::os::raw::c_ulong;
428    pub fn __gmpz_tdiv_q(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
429    pub fn __gmpz_tdiv_q_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
430                              arg3: mp_bitcnt_t);
431    pub fn __gmpz_tdiv_q_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
432                            arg3: ::std::os::raw::c_ulong)
433     -> ::std::os::raw::c_ulong;
434    pub fn __gmpz_tdiv_qr(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
435                          arg4: mpz_srcptr);
436    pub fn __gmpz_tdiv_qr_ui(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr,
437                             arg4: ::std::os::raw::c_ulong)
438     -> ::std::os::raw::c_ulong;
439    pub fn __gmpz_tdiv_r(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
440    pub fn __gmpz_tdiv_r_2exp(arg1: mpz_ptr, arg2: mpz_srcptr,
441                              arg3: mp_bitcnt_t);
442    pub fn __gmpz_tdiv_r_ui(arg1: mpz_ptr, arg2: mpz_srcptr,
443                            arg3: ::std::os::raw::c_ulong)
444     -> ::std::os::raw::c_ulong;
445    pub fn __gmpz_tstbit(arg1: mpz_srcptr, arg2: mp_bitcnt_t)
446     -> ::std::os::raw::c_int;
447    pub fn __gmpz_ui_pow_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong,
448                            arg3: ::std::os::raw::c_ulong);
449    pub fn __gmpz_urandomb(arg1: mpz_ptr, arg2: gmp_randstate_ptr,
450                           arg3: mp_bitcnt_t);
451    pub fn __gmpz_urandomm(arg1: mpz_ptr, arg2: gmp_randstate_ptr,
452                           arg3: mpz_srcptr);
453    pub fn __gmpz_xor(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
454    pub fn __gmpz_limbs_read(arg1: mpz_srcptr) -> mp_srcptr;
455    pub fn __gmpz_limbs_write(arg1: mpz_ptr, arg2: mp_size_t) -> mp_ptr;
456    pub fn __gmpz_limbs_modify(arg1: mpz_ptr, arg2: mp_size_t) -> mp_ptr;
457    pub fn __gmpz_limbs_finish(arg1: mpz_ptr, arg2: mp_size_t);
458    pub fn __gmpz_roinit_n(arg1: mpz_ptr, arg2: mp_srcptr, arg3: mp_size_t)
459     -> mpz_srcptr;
460    pub fn __gmpq_abs(__gmp_w: mpq_ptr, __gmp_u: mpq_srcptr);
461    pub fn __gmpq_add(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mpq_srcptr);
462    pub fn __gmpq_canonicalize(arg1: mpq_ptr);
463    pub fn __gmpq_clear(arg1: mpq_ptr);
464    pub fn __gmpq_clears(arg1: mpq_ptr, ...);
465    pub fn __gmpq_cmp(arg1: mpq_srcptr, arg2: mpq_srcptr)
466     -> ::std::os::raw::c_int;
467    pub fn __gmpq_cmp_si(arg1: mpq_srcptr, arg2: ::std::os::raw::c_long,
468                         arg3: ::std::os::raw::c_ulong)
469     -> ::std::os::raw::c_int;
470    pub fn __gmpq_cmp_ui(arg1: mpq_srcptr, arg2: ::std::os::raw::c_ulong,
471                         arg3: ::std::os::raw::c_ulong)
472     -> ::std::os::raw::c_int;
473    pub fn __gmpq_cmp_z(arg1: mpq_srcptr, arg2: mpz_srcptr)
474     -> ::std::os::raw::c_int;
475    pub fn __gmpq_div(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mpq_srcptr);
476    pub fn __gmpq_div_2exp(arg1: mpq_ptr, arg2: mpq_srcptr,
477                           arg3: mp_bitcnt_t);
478    pub fn __gmpq_equal(arg1: mpq_srcptr, arg2: mpq_srcptr)
479     -> ::std::os::raw::c_int;
480    pub fn __gmpq_get_num(arg1: mpz_ptr, arg2: mpq_srcptr);
481    pub fn __gmpq_get_den(arg1: mpz_ptr, arg2: mpq_srcptr);
482    pub fn __gmpq_get_d(arg1: mpq_srcptr) -> ::std::os::raw::c_double;
483    pub fn __gmpq_get_str(arg1: *mut ::std::os::raw::c_char,
484                          arg2: ::std::os::raw::c_int, arg3: mpq_srcptr)
485     -> *mut ::std::os::raw::c_char;
486    pub fn __gmpq_init(arg1: mpq_ptr);
487    pub fn __gmpq_inits(arg1: mpq_ptr, ...);
488    pub fn __gmpq_inv(arg1: mpq_ptr, arg2: mpq_srcptr);
489    pub fn __gmpq_mul(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mpq_srcptr);
490    pub fn __gmpq_mul_2exp(arg1: mpq_ptr, arg2: mpq_srcptr,
491                           arg3: mp_bitcnt_t);
492    pub fn __gmpq_neg(__gmp_w: mpq_ptr, __gmp_u: mpq_srcptr);
493    pub fn __gmpq_set(arg1: mpq_ptr, arg2: mpq_srcptr);
494    pub fn __gmpq_set_d(arg1: mpq_ptr, arg2: ::std::os::raw::c_double);
495    pub fn __gmpq_set_den(arg1: mpq_ptr, arg2: mpz_srcptr);
496    pub fn __gmpq_set_f(arg1: mpq_ptr, arg2: mpf_srcptr);
497    pub fn __gmpq_set_num(arg1: mpq_ptr, arg2: mpz_srcptr);
498    pub fn __gmpq_set_si(arg1: mpq_ptr, arg2: ::std::os::raw::c_long,
499                         arg3: ::std::os::raw::c_ulong);
500    pub fn __gmpq_set_str(arg1: mpq_ptr, arg2: *const ::std::os::raw::c_char,
501                          arg3: ::std::os::raw::c_int)
502     -> ::std::os::raw::c_int;
503    pub fn __gmpq_set_ui(arg1: mpq_ptr, arg2: ::std::os::raw::c_ulong,
504                         arg3: ::std::os::raw::c_ulong);
505    pub fn __gmpq_set_z(arg1: mpq_ptr, arg2: mpz_srcptr);
506    pub fn __gmpq_sub(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mpq_srcptr);
507    pub fn __gmpq_swap(arg1: mpq_ptr, arg2: mpq_ptr);
508    pub fn __gmpf_abs(arg1: mpf_ptr, arg2: mpf_srcptr);
509    pub fn __gmpf_add(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
510    pub fn __gmpf_add_ui(arg1: mpf_ptr, arg2: mpf_srcptr,
511                         arg3: ::std::os::raw::c_ulong);
512    pub fn __gmpf_ceil(arg1: mpf_ptr, arg2: mpf_srcptr);
513    pub fn __gmpf_clear(arg1: mpf_ptr);
514    pub fn __gmpf_clears(arg1: mpf_ptr, ...);
515    pub fn __gmpf_cmp(arg1: mpf_srcptr, arg2: mpf_srcptr)
516     -> ::std::os::raw::c_int;
517    pub fn __gmpf_cmp_z(arg1: mpf_srcptr, arg2: mpz_srcptr)
518     -> ::std::os::raw::c_int;
519    pub fn __gmpf_cmp_d(arg1: mpf_srcptr, arg2: ::std::os::raw::c_double)
520     -> ::std::os::raw::c_int;
521    pub fn __gmpf_cmp_si(arg1: mpf_srcptr, arg2: ::std::os::raw::c_long)
522     -> ::std::os::raw::c_int;
523    pub fn __gmpf_cmp_ui(arg1: mpf_srcptr, arg2: ::std::os::raw::c_ulong)
524     -> ::std::os::raw::c_int;
525    pub fn __gmpf_div(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
526    pub fn __gmpf_div_2exp(arg1: mpf_ptr, arg2: mpf_srcptr,
527                           arg3: mp_bitcnt_t);
528    pub fn __gmpf_div_ui(arg1: mpf_ptr, arg2: mpf_srcptr,
529                         arg3: ::std::os::raw::c_ulong);
530    pub fn __gmpf_dump(arg1: mpf_srcptr);
531    pub fn __gmpf_eq(arg1: mpf_srcptr, arg2: mpf_srcptr, arg3: mp_bitcnt_t)
532     -> ::std::os::raw::c_int;
533    pub fn __gmpf_fits_sint_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
534    pub fn __gmpf_fits_slong_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
535    pub fn __gmpf_fits_sshort_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
536    pub fn __gmpf_fits_uint_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
537    pub fn __gmpf_fits_ulong_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
538    pub fn __gmpf_fits_ushort_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
539    pub fn __gmpf_floor(arg1: mpf_ptr, arg2: mpf_srcptr);
540    pub fn __gmpf_get_d(arg1: mpf_srcptr) -> ::std::os::raw::c_double;
541    pub fn __gmpf_get_d_2exp(arg1: *mut ::std::os::raw::c_long,
542                             arg2: mpf_srcptr) -> ::std::os::raw::c_double;
543    pub fn __gmpf_get_default_prec() -> mp_bitcnt_t;
544    pub fn __gmpf_get_prec(arg1: mpf_srcptr) -> mp_bitcnt_t;
545    pub fn __gmpf_get_si(arg1: mpf_srcptr) -> ::std::os::raw::c_long;
546    pub fn __gmpf_get_str(arg1: *mut ::std::os::raw::c_char,
547                          arg2: *mut mp_exp_t, arg3: ::std::os::raw::c_int,
548                          arg4: size_t, arg5: mpf_srcptr)
549     -> *mut ::std::os::raw::c_char;
550    pub fn __gmpf_get_ui(arg1: mpf_srcptr) -> ::std::os::raw::c_ulong;
551    pub fn __gmpf_init(arg1: mpf_ptr);
552    pub fn __gmpf_init2(arg1: mpf_ptr, arg2: mp_bitcnt_t);
553    pub fn __gmpf_inits(arg1: mpf_ptr, ...);
554    pub fn __gmpf_init_set(arg1: mpf_ptr, arg2: mpf_srcptr);
555    pub fn __gmpf_init_set_d(arg1: mpf_ptr, arg2: ::std::os::raw::c_double);
556    pub fn __gmpf_init_set_si(arg1: mpf_ptr, arg2: ::std::os::raw::c_long);
557    pub fn __gmpf_init_set_str(arg1: mpf_ptr,
558                               arg2: *const ::std::os::raw::c_char,
559                               arg3: ::std::os::raw::c_int)
560     -> ::std::os::raw::c_int;
561    pub fn __gmpf_init_set_ui(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong);
562    pub fn __gmpf_integer_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
563    pub fn __gmpf_mul(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
564    pub fn __gmpf_mul_2exp(arg1: mpf_ptr, arg2: mpf_srcptr,
565                           arg3: mp_bitcnt_t);
566    pub fn __gmpf_mul_ui(arg1: mpf_ptr, arg2: mpf_srcptr,
567                         arg3: ::std::os::raw::c_ulong);
568    pub fn __gmpf_neg(arg1: mpf_ptr, arg2: mpf_srcptr);
569    pub fn __gmpf_pow_ui(arg1: mpf_ptr, arg2: mpf_srcptr,
570                         arg3: ::std::os::raw::c_ulong);
571    pub fn __gmpf_random2(arg1: mpf_ptr, arg2: mp_size_t, arg3: mp_exp_t);
572    pub fn __gmpf_reldiff(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
573    pub fn __gmpf_set(arg1: mpf_ptr, arg2: mpf_srcptr);
574    pub fn __gmpf_set_d(arg1: mpf_ptr, arg2: ::std::os::raw::c_double);
575    pub fn __gmpf_set_default_prec(arg1: mp_bitcnt_t);
576    pub fn __gmpf_set_prec(arg1: mpf_ptr, arg2: mp_bitcnt_t);
577    pub fn __gmpf_set_prec_raw(arg1: mpf_ptr, arg2: mp_bitcnt_t);
578    pub fn __gmpf_set_q(arg1: mpf_ptr, arg2: mpq_srcptr);
579    pub fn __gmpf_set_si(arg1: mpf_ptr, arg2: ::std::os::raw::c_long);
580    pub fn __gmpf_set_str(arg1: mpf_ptr, arg2: *const ::std::os::raw::c_char,
581                          arg3: ::std::os::raw::c_int)
582     -> ::std::os::raw::c_int;
583    pub fn __gmpf_set_ui(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong);
584    pub fn __gmpf_set_z(arg1: mpf_ptr, arg2: mpz_srcptr);
585    pub fn __gmpf_size(arg1: mpf_srcptr) -> size_t;
586    pub fn __gmpf_sqrt(arg1: mpf_ptr, arg2: mpf_srcptr);
587    pub fn __gmpf_sqrt_ui(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong);
588    pub fn __gmpf_sub(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
589    pub fn __gmpf_sub_ui(arg1: mpf_ptr, arg2: mpf_srcptr,
590                         arg3: ::std::os::raw::c_ulong);
591    pub fn __gmpf_swap(arg1: mpf_ptr, arg2: mpf_ptr);
592    pub fn __gmpf_trunc(arg1: mpf_ptr, arg2: mpf_srcptr);
593    pub fn __gmpf_ui_div(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong,
594                         arg3: mpf_srcptr);
595    pub fn __gmpf_ui_sub(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong,
596                         arg3: mpf_srcptr);
597    pub fn __gmpf_urandomb(arg1: mpf_t, arg2: gmp_randstate_ptr,
598                           arg3: mp_bitcnt_t);
599    pub fn __gmpn_add(__gmp_wp: mp_ptr, __gmp_xp: mp_srcptr,
600                      __gmp_xsize: mp_size_t, __gmp_yp: mp_srcptr,
601                      __gmp_ysize: mp_size_t) -> mp_limb_t;
602    pub fn __gmpn_add_1(__gmp_dst: mp_ptr, __gmp_src: mp_srcptr,
603                        __gmp_size: mp_size_t, __gmp_n: mp_limb_t)
604     -> mp_limb_t;
605    pub fn __gmpn_add_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
606                        arg4: mp_size_t) -> mp_limb_t;
607    pub fn __gmpn_addmul_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
608                           arg4: mp_limb_t) -> mp_limb_t;
609    pub fn __gmpn_cmp(__gmp_xp: mp_srcptr, __gmp_yp: mp_srcptr,
610                      __gmp_size: mp_size_t) -> ::std::os::raw::c_int;
611    pub fn __gmpn_zero_p(__gmp_p: mp_srcptr, __gmp_n: mp_size_t)
612     -> ::std::os::raw::c_int;
613    pub fn __gmpn_divexact_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
614                             arg4: mp_limb_t);
615    pub fn __gmpn_divexact_by3c(arg1: mp_ptr, arg2: mp_srcptr,
616                                arg3: mp_size_t, arg4: mp_limb_t)
617     -> mp_limb_t;
618    pub fn __gmpn_divrem(arg1: mp_ptr, arg2: mp_size_t, arg3: mp_ptr,
619                         arg4: mp_size_t, arg5: mp_srcptr, arg6: mp_size_t)
620     -> mp_limb_t;
621    pub fn __gmpn_divrem_1(arg1: mp_ptr, arg2: mp_size_t, arg3: mp_srcptr,
622                           arg4: mp_size_t, arg5: mp_limb_t) -> mp_limb_t;
623    pub fn __gmpn_divrem_2(arg1: mp_ptr, arg2: mp_size_t, arg3: mp_ptr,
624                           arg4: mp_size_t, arg5: mp_srcptr) -> mp_limb_t;
625    pub fn __gmpn_div_qr_1(arg1: mp_ptr, arg2: *mut mp_limb_t,
626                           arg3: mp_srcptr, arg4: mp_size_t, arg5: mp_limb_t)
627     -> mp_limb_t;
628    pub fn __gmpn_div_qr_2(arg1: mp_ptr, arg2: mp_ptr, arg3: mp_srcptr,
629                           arg4: mp_size_t, arg5: mp_srcptr) -> mp_limb_t;
630    pub fn __gmpn_gcd(arg1: mp_ptr, arg2: mp_ptr, arg3: mp_size_t,
631                      arg4: mp_ptr, arg5: mp_size_t) -> mp_size_t;
632    pub fn __gmpn_gcd_1(arg1: mp_srcptr, arg2: mp_size_t, arg3: mp_limb_t)
633     -> mp_limb_t;
634    pub fn __gmpn_gcdext_1(arg1: *mut mp_limb_signed_t,
635                           arg2: *mut mp_limb_signed_t, arg3: mp_limb_t,
636                           arg4: mp_limb_t) -> mp_limb_t;
637    pub fn __gmpn_gcdext(arg1: mp_ptr, arg2: mp_ptr, arg3: *mut mp_size_t,
638                         arg4: mp_ptr, arg5: mp_size_t, arg6: mp_ptr,
639                         arg7: mp_size_t) -> mp_size_t;
640    pub fn __gmpn_get_str(arg1: *mut ::std::os::raw::c_uchar,
641                          arg2: ::std::os::raw::c_int, arg3: mp_ptr,
642                          arg4: mp_size_t) -> size_t;
643    pub fn __gmpn_hamdist(arg1: mp_srcptr, arg2: mp_srcptr, arg3: mp_size_t)
644     -> mp_bitcnt_t;
645    pub fn __gmpn_lshift(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
646                         arg4: ::std::os::raw::c_uint) -> mp_limb_t;
647    pub fn __gmpn_mod_1(arg1: mp_srcptr, arg2: mp_size_t, arg3: mp_limb_t)
648     -> mp_limb_t;
649    pub fn __gmpn_mul(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
650                      arg4: mp_srcptr, arg5: mp_size_t) -> mp_limb_t;
651    pub fn __gmpn_mul_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
652                        arg4: mp_limb_t) -> mp_limb_t;
653    pub fn __gmpn_mul_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
654                        arg4: mp_size_t);
655    pub fn __gmpn_sqr(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t);
656    pub fn __gmpn_neg(__gmp_rp: mp_ptr, __gmp_up: mp_srcptr,
657                      __gmp_n: mp_size_t) -> mp_limb_t;
658    pub fn __gmpn_com(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t);
659    pub fn __gmpn_perfect_square_p(arg1: mp_srcptr, arg2: mp_size_t)
660     -> ::std::os::raw::c_int;
661    pub fn __gmpn_perfect_power_p(arg1: mp_srcptr, arg2: mp_size_t)
662     -> ::std::os::raw::c_int;
663    pub fn __gmpn_popcount(arg1: mp_srcptr, arg2: mp_size_t) -> mp_bitcnt_t;
664    pub fn __gmpn_pow_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
665                        arg4: mp_limb_t, arg5: mp_ptr) -> mp_size_t;
666    pub fn __gmpn_preinv_mod_1(arg1: mp_srcptr, arg2: mp_size_t,
667                               arg3: mp_limb_t, arg4: mp_limb_t) -> mp_limb_t;
668    pub fn __gmpn_random(arg1: mp_ptr, arg2: mp_size_t);
669    pub fn __gmpn_random2(arg1: mp_ptr, arg2: mp_size_t);
670    pub fn __gmpn_rshift(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
671                         arg4: ::std::os::raw::c_uint) -> mp_limb_t;
672    pub fn __gmpn_scan0(arg1: mp_srcptr, arg2: mp_bitcnt_t) -> mp_bitcnt_t;
673    pub fn __gmpn_scan1(arg1: mp_srcptr, arg2: mp_bitcnt_t) -> mp_bitcnt_t;
674    pub fn __gmpn_set_str(arg1: mp_ptr, arg2: *const ::std::os::raw::c_uchar,
675                          arg3: size_t, arg4: ::std::os::raw::c_int)
676     -> mp_size_t;
677    pub fn __gmpn_sizeinbase(arg1: mp_srcptr, arg2: mp_size_t,
678                             arg3: ::std::os::raw::c_int) -> size_t;
679    pub fn __gmpn_sqrtrem(arg1: mp_ptr, arg2: mp_ptr, arg3: mp_srcptr,
680                          arg4: mp_size_t) -> mp_size_t;
681    pub fn __gmpn_sub(__gmp_wp: mp_ptr, __gmp_xp: mp_srcptr,
682                      __gmp_xsize: mp_size_t, __gmp_yp: mp_srcptr,
683                      __gmp_ysize: mp_size_t) -> mp_limb_t;
684    pub fn __gmpn_sub_1(__gmp_dst: mp_ptr, __gmp_src: mp_srcptr,
685                        __gmp_size: mp_size_t, __gmp_n: mp_limb_t)
686     -> mp_limb_t;
687    pub fn __gmpn_sub_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
688                        arg4: mp_size_t) -> mp_limb_t;
689    pub fn __gmpn_submul_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
690                           arg4: mp_limb_t) -> mp_limb_t;
691    pub fn __gmpn_tdiv_qr(arg1: mp_ptr, arg2: mp_ptr, arg3: mp_size_t,
692                          arg4: mp_srcptr, arg5: mp_size_t, arg6: mp_srcptr,
693                          arg7: mp_size_t);
694    pub fn __gmpn_and_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
695                        arg4: mp_size_t);
696    pub fn __gmpn_andn_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
697                         arg4: mp_size_t);
698    pub fn __gmpn_nand_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
699                         arg4: mp_size_t);
700    pub fn __gmpn_ior_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
701                        arg4: mp_size_t);
702    pub fn __gmpn_iorn_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
703                         arg4: mp_size_t);
704    pub fn __gmpn_nior_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
705                         arg4: mp_size_t);
706    pub fn __gmpn_xor_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
707                        arg4: mp_size_t);
708    pub fn __gmpn_xnor_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr,
709                         arg4: mp_size_t);
710    pub fn __gmpn_copyi(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t);
711    pub fn __gmpn_copyd(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t);
712    pub fn __gmpn_zero(arg1: mp_ptr, arg2: mp_size_t);
713    pub fn __gmpn_cnd_add_n(arg1: mp_limb_t, arg2: mp_ptr, arg3: mp_srcptr,
714                            arg4: mp_srcptr, arg5: mp_size_t) -> mp_limb_t;
715    pub fn __gmpn_cnd_sub_n(arg1: mp_limb_t, arg2: mp_ptr, arg3: mp_srcptr,
716                            arg4: mp_srcptr, arg5: mp_size_t) -> mp_limb_t;
717    pub fn __gmpn_sec_add_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
718                            arg4: mp_limb_t, arg5: mp_ptr) -> mp_limb_t;
719    pub fn __gmpn_sec_add_1_itch(arg1: mp_size_t) -> mp_size_t;
720    pub fn __gmpn_sec_sub_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
721                            arg4: mp_limb_t, arg5: mp_ptr) -> mp_limb_t;
722    pub fn __gmpn_sec_sub_1_itch(arg1: mp_size_t) -> mp_size_t;
723    pub fn __gmpn_cnd_swap(arg1: mp_limb_t, arg2: *mut mp_limb_t,
724                           arg3: *mut mp_limb_t, arg4: mp_size_t);
725    pub fn __gmpn_sec_mul(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
726                          arg4: mp_srcptr, arg5: mp_size_t, arg6: mp_ptr);
727    pub fn __gmpn_sec_mul_itch(arg1: mp_size_t, arg2: mp_size_t) -> mp_size_t;
728    pub fn __gmpn_sec_sqr(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
729                          arg4: mp_ptr);
730    pub fn __gmpn_sec_sqr_itch(arg1: mp_size_t) -> mp_size_t;
731    pub fn __gmpn_sec_powm(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t,
732                           arg4: mp_srcptr, arg5: mp_bitcnt_t,
733                           arg6: mp_srcptr, arg7: mp_size_t, arg8: mp_ptr);
734    pub fn __gmpn_sec_powm_itch(arg1: mp_size_t, arg2: mp_bitcnt_t,
735                                arg3: mp_size_t) -> mp_size_t;
736    pub fn __gmpn_sec_tabselect(arg1: *mut mp_limb_t, arg2: *const mp_limb_t,
737                                arg3: mp_size_t, arg4: mp_size_t,
738                                arg5: mp_size_t);
739    pub fn __gmpn_sec_div_qr(arg1: mp_ptr, arg2: mp_ptr, arg3: mp_size_t,
740                             arg4: mp_srcptr, arg5: mp_size_t, arg6: mp_ptr)
741     -> mp_limb_t;
742    pub fn __gmpn_sec_div_qr_itch(arg1: mp_size_t, arg2: mp_size_t)
743     -> mp_size_t;
744    pub fn __gmpn_sec_div_r(arg1: mp_ptr, arg2: mp_size_t, arg3: mp_srcptr,
745                            arg4: mp_size_t, arg5: mp_ptr);
746    pub fn __gmpn_sec_div_r_itch(arg1: mp_size_t, arg2: mp_size_t)
747     -> mp_size_t;
748    pub fn __gmpn_sec_invert(arg1: mp_ptr, arg2: mp_ptr, arg3: mp_srcptr,
749                             arg4: mp_size_t, arg5: mp_bitcnt_t, arg6: mp_ptr)
750     -> ::std::os::raw::c_int;
751    pub fn __gmpn_sec_invert_itch(arg1: mp_size_t) -> mp_size_t;
752}