1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
/* automatically generated by rust-bindgen */

#![allow(dead_code,
         non_camel_case_types,
         non_upper_case_globals,
         non_snake_case)]

use ::gmp::*;

pub type mpfr_void = ::std::os::raw::c_void;
pub type mpfr_int = ::std::os::raw::c_int;
pub type mpfr_uint = ::std::os::raw::c_uint;
pub type mpfr_long = ::std::os::raw::c_long;
pub type mpfr_ulong = ::std::os::raw::c_ulong;
pub type mpfr_size_t = size_t;
#[derive(Copy, Clone)]
#[repr(i32)]
#[derive(Debug)]
pub enum mpfr_rnd_t {
    MPFR_RNDN = 0,
    MPFR_RNDZ = 1,
    MPFR_RNDU = 2,
    MPFR_RNDD = 3,
    MPFR_RNDA = 4,
    MPFR_RNDF = 5,
    MPFR_RNDNA = -1,
}
pub type mpfr_prec_t = ::std::os::raw::c_long;
pub type mpfr_uprec_t = ::std::os::raw::c_ulong;
pub type mpfr_sign_t = ::std::os::raw::c_int;
pub type mpfr_exp_t = ::std::os::raw::c_long;
pub type mpfr_uexp_t = ::std::os::raw::c_ulong;
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct __mpfr_struct {
    pub _mpfr_prec: mpfr_prec_t,
    pub _mpfr_sign: mpfr_sign_t,
    pub _mpfr_exp: mpfr_exp_t,
    pub _mpfr_d: *mut mp_limb_t,
}
impl ::std::default::Default for __mpfr_struct {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type mpfr_t = [__mpfr_struct; 1usize];
pub type mpfr_ptr = *mut __mpfr_struct;
pub type mpfr_srcptr = *const __mpfr_struct;
#[derive(Copy, Clone)]
#[repr(u32)]
#[derive(Debug)]
pub enum mpfr_kind_t {
    MPFR_NAN_KIND = 0,
    MPFR_INF_KIND = 1,
    MPFR_ZERO_KIND = 2,
    MPFR_REGULAR_KIND = 3,
}
#[link(name = "mpfr", kind = "static")]
extern "C" {
    pub fn mpfr_get_version() -> *const ::std::os::raw::c_char;
    pub fn mpfr_get_patches() -> *const ::std::os::raw::c_char;
    pub fn mpfr_buildopt_tls_p() -> ::std::os::raw::c_int;
    pub fn mpfr_buildopt_decimal_p() -> ::std::os::raw::c_int;
    pub fn mpfr_buildopt_gmpinternals_p() -> ::std::os::raw::c_int;
    pub fn mpfr_buildopt_tune_case() -> *const ::std::os::raw::c_char;
    pub fn mpfr_get_emin() -> mpfr_exp_t;
    pub fn mpfr_set_emin(arg1: mpfr_exp_t) -> ::std::os::raw::c_int;
    pub fn mpfr_get_emin_min() -> mpfr_exp_t;
    pub fn mpfr_get_emin_max() -> mpfr_exp_t;
    pub fn mpfr_get_emax() -> mpfr_exp_t;
    pub fn mpfr_set_emax(arg1: mpfr_exp_t) -> ::std::os::raw::c_int;
    pub fn mpfr_get_emax_min() -> mpfr_exp_t;
    pub fn mpfr_get_emax_max() -> mpfr_exp_t;
    pub fn mpfr_set_default_rounding_mode(arg1: mpfr_rnd_t);
    pub fn mpfr_get_default_rounding_mode() -> mpfr_rnd_t;
    pub fn mpfr_print_rnd_mode(arg1: mpfr_rnd_t)
     -> *const ::std::os::raw::c_char;
    pub fn mpfr_clear_flags();
    pub fn mpfr_clear_underflow();
    pub fn mpfr_clear_overflow();
    pub fn mpfr_clear_divby0();
    pub fn mpfr_clear_nanflag();
    pub fn mpfr_clear_inexflag();
    pub fn mpfr_clear_erangeflag();
    pub fn mpfr_set_underflow();
    pub fn mpfr_set_overflow();
    pub fn mpfr_set_divby0();
    pub fn mpfr_set_nanflag();
    pub fn mpfr_set_inexflag();
    pub fn mpfr_set_erangeflag();
    pub fn mpfr_underflow_p() -> ::std::os::raw::c_int;
    pub fn mpfr_overflow_p() -> ::std::os::raw::c_int;
    pub fn mpfr_divby0_p() -> ::std::os::raw::c_int;
    pub fn mpfr_nanflag_p() -> ::std::os::raw::c_int;
    pub fn mpfr_inexflag_p() -> ::std::os::raw::c_int;
    pub fn mpfr_erangeflag_p() -> ::std::os::raw::c_int;
    pub fn mpfr_check_range(arg1: mpfr_ptr, arg2: ::std::os::raw::c_int,
                            arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_init2(arg1: mpfr_ptr, arg2: mpfr_prec_t);
    pub fn mpfr_init(arg1: mpfr_ptr);
    pub fn mpfr_clear(arg1: mpfr_ptr);
    pub fn mpfr_inits2(arg1: mpfr_prec_t, arg2: mpfr_ptr, ...);
    pub fn mpfr_inits(arg1: mpfr_ptr, ...);
    pub fn mpfr_clears(arg1: mpfr_ptr, ...);
    pub fn mpfr_prec_round(arg1: mpfr_ptr, arg2: mpfr_prec_t,
                           arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_can_round(arg1: mpfr_srcptr, arg2: mpfr_exp_t,
                          arg3: mpfr_rnd_t, arg4: mpfr_rnd_t,
                          arg5: mpfr_prec_t) -> ::std::os::raw::c_int;
    pub fn mpfr_min_prec(arg1: mpfr_srcptr) -> mpfr_prec_t;
    pub fn mpfr_get_exp(arg1: mpfr_srcptr) -> mpfr_exp_t;
    pub fn mpfr_set_exp(arg1: mpfr_ptr, arg2: mpfr_exp_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_get_prec(arg1: mpfr_srcptr) -> mpfr_prec_t;
    pub fn mpfr_set_prec(arg1: mpfr_ptr, arg2: mpfr_prec_t);
    pub fn mpfr_set_prec_raw(arg1: mpfr_ptr, arg2: mpfr_prec_t);
    pub fn mpfr_set_default_prec(arg1: mpfr_prec_t);
    pub fn mpfr_get_default_prec() -> mpfr_prec_t;
    pub fn mpfr_set_d(arg1: mpfr_ptr, arg2: f64, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_set_flt(arg1: mpfr_ptr, arg2: f32, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_set_ld(arg1: mpfr_ptr, arg2: f64, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_set_z(arg1: mpfr_ptr, arg2: mpz_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_set_z_2exp(arg1: mpfr_ptr, arg2: mpz_srcptr, arg3: mpfr_exp_t,
                           arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_set_nan(arg1: mpfr_ptr);
    pub fn mpfr_set_inf(arg1: mpfr_ptr, arg2: ::std::os::raw::c_int);
    pub fn mpfr_set_zero(arg1: mpfr_ptr, arg2: ::std::os::raw::c_int);
    pub fn mpfr_set_f(arg1: mpfr_ptr, arg2: mpf_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_get_f(arg1: mpf_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_set_si(arg1: mpfr_ptr, arg2: ::std::os::raw::c_long,
                       arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_set_ui(arg1: mpfr_ptr, arg2: ::std::os::raw::c_ulong,
                       arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_set_si_2exp(arg1: mpfr_ptr, arg2: ::std::os::raw::c_long,
                            arg3: mpfr_exp_t, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_set_ui_2exp(arg1: mpfr_ptr, arg2: ::std::os::raw::c_ulong,
                            arg3: mpfr_exp_t, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_set_q(arg1: mpfr_ptr, arg2: mpq_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_set_str(arg1: mpfr_ptr, arg2: *const ::std::os::raw::c_char,
                        arg3: ::std::os::raw::c_int, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_init_set_str(arg1: mpfr_ptr,
                             arg2: *const ::std::os::raw::c_char,
                             arg3: ::std::os::raw::c_int, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_set4(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t,
                     arg4: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
    pub fn mpfr_abs(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_set(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_neg(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_signbit(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
    pub fn mpfr_setsign(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                        arg3: ::std::os::raw::c_int, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_copysign(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                         arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_get_z_2exp(arg1: mpz_ptr, arg2: mpfr_srcptr) -> mpfr_exp_t;
    pub fn mpfr_get_flt(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> f32;
    pub fn mpfr_get_d(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> f64;
    pub fn mpfr_get_ld(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> f64;
    pub fn mpfr_get_d1(arg1: mpfr_srcptr) -> f64;
    pub fn mpfr_get_d_2exp(arg1: *mut ::std::os::raw::c_long,
                           arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> f64;
    pub fn mpfr_get_ld_2exp(arg1: *mut ::std::os::raw::c_long,
                            arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> f64;
    pub fn mpfr_frexp(arg1: *mut mpfr_exp_t, arg2: mpfr_ptr,
                      arg3: mpfr_srcptr, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_get_si(arg1: mpfr_srcptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_long;
    pub fn mpfr_get_ui(arg1: mpfr_srcptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_ulong;
    pub fn mpfr_get_str(arg1: *mut ::std::os::raw::c_char,
                        arg2: *mut mpfr_exp_t, arg3: ::std::os::raw::c_int,
                        arg4: size_t, arg5: mpfr_srcptr, arg6: mpfr_rnd_t)
     -> *mut ::std::os::raw::c_char;
    pub fn mpfr_get_z(z: mpz_ptr, f: mpfr_srcptr, arg1: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_free_str(arg1: *mut ::std::os::raw::c_char);
    pub fn mpfr_urandom(arg1: mpfr_ptr, arg2: gmp_randstate_t,
                        arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_grandom(arg1: mpfr_ptr, arg2: mpfr_ptr, arg3: gmp_randstate_t,
                        arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_urandomb(arg1: mpfr_ptr, arg2: gmp_randstate_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_nextabove(arg1: mpfr_ptr);
    pub fn mpfr_nextbelow(arg1: mpfr_ptr);
    pub fn mpfr_nexttoward(arg1: mpfr_ptr, arg2: mpfr_srcptr);
    pub fn mpfr_printf(arg1: *const ::std::os::raw::c_char, ...)
     -> ::std::os::raw::c_int;
    pub fn mpfr_asprintf(arg1: *mut *mut ::std::os::raw::c_char,
                         arg2: *const ::std::os::raw::c_char, ...)
     -> ::std::os::raw::c_int;
    pub fn mpfr_sprintf(arg1: *mut ::std::os::raw::c_char,
                        arg2: *const ::std::os::raw::c_char, ...)
     -> ::std::os::raw::c_int;
    pub fn mpfr_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 mpfr_pow(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                    arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_pow_si(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                       arg3: ::std::os::raw::c_long, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_pow_ui(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                       arg3: ::std::os::raw::c_ulong, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_ui_pow_ui(arg1: mpfr_ptr, arg2: ::std::os::raw::c_ulong,
                          arg3: ::std::os::raw::c_ulong, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_ui_pow(arg1: mpfr_ptr, arg2: ::std::os::raw::c_ulong,
                       arg3: mpfr_srcptr, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_pow_z(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpz_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_sqrt(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_sqrt_ui(arg1: mpfr_ptr, arg2: ::std::os::raw::c_ulong,
                        arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_rec_sqrt(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_add(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                    arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_sub(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                    arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_mul(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                    arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_div(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                    arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_add_ui(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                       arg3: ::std::os::raw::c_ulong, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_sub_ui(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                       arg3: ::std::os::raw::c_ulong, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_ui_sub(arg1: mpfr_ptr, arg2: ::std::os::raw::c_ulong,
                       arg3: mpfr_srcptr, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_mul_ui(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                       arg3: ::std::os::raw::c_ulong, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_div_ui(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                       arg3: ::std::os::raw::c_ulong, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_ui_div(arg1: mpfr_ptr, arg2: ::std::os::raw::c_ulong,
                       arg3: mpfr_srcptr, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_add_si(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                       arg3: ::std::os::raw::c_long, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_sub_si(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                       arg3: ::std::os::raw::c_long, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_si_sub(arg1: mpfr_ptr, arg2: ::std::os::raw::c_long,
                       arg3: mpfr_srcptr, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_mul_si(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                       arg3: ::std::os::raw::c_long, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_div_si(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                       arg3: ::std::os::raw::c_long, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_si_div(arg1: mpfr_ptr, arg2: ::std::os::raw::c_long,
                       arg3: mpfr_srcptr, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_add_d(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: f64,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_sub_d(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: f64,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_d_sub(arg1: mpfr_ptr, arg2: f64, arg3: mpfr_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_mul_d(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: f64,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_div_d(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: f64,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_d_div(arg1: mpfr_ptr, arg2: f64, arg3: mpfr_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_sqr(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_const_pi(arg1: mpfr_ptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_const_log2(arg1: mpfr_ptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_const_euler(arg1: mpfr_ptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_const_catalan(arg1: mpfr_ptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_agm(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                    arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_log(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_log2(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_log10(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_log1p(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_exp(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_exp2(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_exp10(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_expm1(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_eint(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_li2(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_cmp(arg1: mpfr_srcptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_cmp3(arg1: mpfr_srcptr, arg2: mpfr_srcptr,
                     arg3: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
    pub fn mpfr_cmp_d(arg1: mpfr_srcptr, arg2: f64) -> ::std::os::raw::c_int;
    pub fn mpfr_cmp_ld(arg1: mpfr_srcptr, arg2: f64) -> ::std::os::raw::c_int;
    pub fn mpfr_cmpabs(arg1: mpfr_srcptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_cmp_ui(arg1: mpfr_srcptr, arg2: ::std::os::raw::c_ulong)
     -> ::std::os::raw::c_int;
    pub fn mpfr_cmp_si(arg1: mpfr_srcptr, arg2: ::std::os::raw::c_long)
     -> ::std::os::raw::c_int;
    pub fn mpfr_cmp_ui_2exp(arg1: mpfr_srcptr, arg2: ::std::os::raw::c_ulong,
                            arg3: mpfr_exp_t) -> ::std::os::raw::c_int;
    pub fn mpfr_cmp_si_2exp(arg1: mpfr_srcptr, arg2: ::std::os::raw::c_long,
                            arg3: mpfr_exp_t) -> ::std::os::raw::c_int;
    pub fn mpfr_reldiff(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                        arg4: mpfr_rnd_t);
    pub fn mpfr_eq(arg1: mpfr_srcptr, arg2: mpfr_srcptr,
                   arg3: ::std::os::raw::c_ulong) -> ::std::os::raw::c_int;
    pub fn mpfr_sgn(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
    pub fn mpfr_mul_2exp(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                         arg3: ::std::os::raw::c_ulong, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_div_2exp(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                         arg3: ::std::os::raw::c_ulong, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_mul_2ui(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                        arg3: ::std::os::raw::c_ulong, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_div_2ui(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                        arg3: ::std::os::raw::c_ulong, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_mul_2si(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                        arg3: ::std::os::raw::c_long, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_div_2si(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                        arg3: ::std::os::raw::c_long, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_rint(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_round(arg1: mpfr_ptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_trunc(arg1: mpfr_ptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_ceil(arg1: mpfr_ptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_floor(arg1: mpfr_ptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_rint_round(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                           arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_rint_trunc(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                           arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_rint_ceil(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_rint_floor(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                           arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_frac(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_modf(arg1: mpfr_ptr, arg2: mpfr_ptr, arg3: mpfr_srcptr,
                     arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_remquo(arg1: mpfr_ptr, arg2: *mut ::std::os::raw::c_long,
                       arg3: mpfr_srcptr, arg4: mpfr_srcptr, arg5: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_remainder(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                          arg3: mpfr_srcptr, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_fmod(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                     arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_fits_ulong_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_fits_slong_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_fits_uint_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_fits_sint_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_fits_ushort_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_fits_sshort_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_fits_uintmax_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_fits_intmax_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_extract(arg1: mpz_ptr, arg2: mpfr_srcptr,
                        arg3: ::std::os::raw::c_uint);
    pub fn mpfr_swap(arg1: mpfr_ptr, arg2: mpfr_ptr);
    pub fn mpfr_dump(arg1: mpfr_srcptr);
    pub fn mpfr_nan_p(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
    pub fn mpfr_inf_p(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
    pub fn mpfr_number_p(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
    pub fn mpfr_integer_p(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
    pub fn mpfr_zero_p(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
    pub fn mpfr_regular_p(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
    pub fn mpfr_greater_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_greaterequal_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_less_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_lessequal_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_lessgreater_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_equal_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_unordered_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_atanh(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_acosh(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_asinh(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_cosh(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_sinh(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_tanh(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_sinh_cosh(arg1: mpfr_ptr, arg2: mpfr_ptr, arg3: mpfr_srcptr,
                          arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_sech(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_csch(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_coth(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_acos(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_asin(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_atan(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_sin(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_sin_cos(arg1: mpfr_ptr, arg2: mpfr_ptr, arg3: mpfr_srcptr,
                        arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_cos(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_tan(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_atan2(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_sec(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_csc(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_cot(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_hypot(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_erf(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_erfc(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_cbrt(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_root(arg1: mpfr_ptr, arg2: mpfr_srcptr,
                     arg3: ::std::os::raw::c_ulong, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_gamma(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_lngamma(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_lgamma(arg1: mpfr_ptr, arg2: *mut ::std::os::raw::c_int,
                       arg3: mpfr_srcptr, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_digamma(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_zeta(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_zeta_ui(arg1: mpfr_ptr, arg2: ::std::os::raw::c_ulong,
                        arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_fac_ui(arg1: mpfr_ptr, arg2: ::std::os::raw::c_ulong,
                       arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_j0(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_j1(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_jn(arg1: mpfr_ptr, arg2: ::std::os::raw::c_long,
                   arg3: mpfr_srcptr, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_y0(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_y1(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_yn(arg1: mpfr_ptr, arg2: ::std::os::raw::c_long,
                   arg3: mpfr_srcptr, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_ai(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_min(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                    arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_max(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                    arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_dim(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                    arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_mul_z(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpz_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_div_z(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpz_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_add_z(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpz_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_sub_z(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpz_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_z_sub(arg1: mpfr_ptr, arg2: mpz_srcptr, arg3: mpfr_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_cmp_z(arg1: mpfr_srcptr, arg2: mpz_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_mul_q(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpq_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_div_q(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpq_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_add_q(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpq_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_sub_q(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpq_srcptr,
                      arg4: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_cmp_q(arg1: mpfr_srcptr, arg2: mpq_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_cmp_f(arg1: mpfr_srcptr, arg2: mpf_srcptr)
     -> ::std::os::raw::c_int;
    pub fn mpfr_fma(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                    arg4: mpfr_srcptr, arg5: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_fms(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr,
                    arg4: mpfr_srcptr, arg5: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_sum(arg1: mpfr_ptr, arg2: *mut mpfr_ptr,
                    arg3: ::std::os::raw::c_ulong, arg4: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_free_cache();
    pub fn mpfr_subnormalize(arg1: mpfr_ptr, arg2: ::std::os::raw::c_int,
                             arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
    pub fn mpfr_strtofr(arg1: mpfr_ptr, arg2: *const ::std::os::raw::c_char,
                        arg3: *mut *mut ::std::os::raw::c_char,
                        arg4: ::std::os::raw::c_int, arg5: mpfr_rnd_t)
     -> ::std::os::raw::c_int;
    pub fn mpfr_custom_get_size(arg1: mpfr_prec_t) -> size_t;
    pub fn mpfr_custom_init(arg1: *mut ::std::os::raw::c_void,
                            arg2: mpfr_prec_t);
    pub fn mpfr_custom_get_significand(arg1: mpfr_srcptr)
     -> *mut ::std::os::raw::c_void;
    pub fn mpfr_custom_get_exp(arg1: mpfr_srcptr) -> mpfr_exp_t;
    pub fn mpfr_custom_move(arg1: mpfr_ptr,
                            arg2: *mut ::std::os::raw::c_void);
    pub fn mpfr_custom_init_set(arg1: mpfr_ptr, arg2: ::std::os::raw::c_int,
                                arg3: mpfr_exp_t, arg4: mpfr_prec_t,
                                arg5: *mut ::std::os::raw::c_void);
    pub fn mpfr_custom_get_kind(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
}