Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sagelib
Path: blob/master/sage/libs/mpfr.pxd
4057 views

from sage.libs.gmp.all cimport mp_exp_t, mp_size_t, gmp_randstate_t, mpz_t, mpq_t

cdef extern from "mpfr.h":
    ctypedef struct __mpfr_struct:
        pass
        
    #ctypedef __mpfr_struct mpfr_t[1]
    ctypedef __mpfr_struct* mpfr_t
    ctypedef mpfr_t mpfr_ptr 
    ctypedef mpfr_t mpfr_srcptr
    ctypedef enum mpfr_rnd_t:
        GMP_RNDN = 0
        GMP_RNDZ = 1
        GMP_RNDU = 2
        GMP_RNDD = 3
        GMP_RND_MAX = 4
        GMP_RNDNA = -1
    
    ctypedef mpfr_rnd_t mp_rnd_t
    ctypedef long mp_prec_t

    int MPFR_PREC_MIN, MPFR_PREC_MAX

    # Initialization Functions
    void mpfr_init2 (mpfr_t x, mp_prec_t prec) 
    void mpfr_clear (mpfr_t x) 
    void mpfr_init (mpfr_t x) 
    void mpfr_set_default_prec (mp_prec_t prec) 
    mp_prec_t mpfr_get_default_prec () 
    void mpfr_set_prec (mpfr_t x, mp_prec_t prec) 
    mp_prec_t mpfr_get_prec (mpfr_t x) 

    # Assignment Functions
    int mpfr_set (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_set_ui (mpfr_t rop, unsigned long int op, mp_rnd_t rnd) 
    int mpfr_set_si (mpfr_t rop, long int op, mp_rnd_t rnd) 
    # int mpfr_set_uj (mpfr_t rop, uintmax_t op, mp_rnd_t rnd) 
    # int mpfr_set_sj (mpfr_t rop, intmax_t op, mp_rnd_t rnd) 
    int mpfr_set_d (mpfr_t rop, double op, mp_rnd_t rnd) 
    int mpfr_set_ld (mpfr_t rop, long double op, mp_rnd_t rnd) 
    # int mpfr_set_decimal64 (mpfr_t rop, _Decimal64 op, mp_rnd_t rnd) 
    int mpfr_set_z (mpfr_t rop, mpz_t op, mp_rnd_t rnd) 
    int mpfr_set_q (mpfr_t rop, mpq_t op, mp_rnd_t rnd) 
    # int mpfr_set_f (mpfr_t rop, mpf_t op, mp_rnd_t rnd) 
    int mpfr_set_ui_2exp (mpfr_t rop, unsigned long int op, mp_exp_t e, mp_rnd_t rnd) 
    int mpfr_set_si_2exp (mpfr_t rop, long int op, mp_exp_t e, mp_rnd_t rnd) 
    # int mpfr_set_uj_2exp (mpfr_t rop, uintmax_t op, intmax_t e, mp_rnd_t rnd) 
    # int mpfr_set_sj_2exp (mpfr_t rop, intmax_t op, intmax_t e, mp_rnd_t rnd) 
    int mpfr_set_str (mpfr_t rop,  char *s, int base, mp_rnd_t rnd) 
    int mpfr_strtofr (mpfr_t rop, char *nptr, char **endptr, int base, mp_rnd_t rnd) 
    void mpfr_set_inf (mpfr_t x, int sign) 
    void mpfr_set_nan (mpfr_t x) 
    void mpfr_swap (mpfr_t x, mpfr_t y) 

    # Combined Initialization and Assignment Functions
    int mpfr_init_set (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_init_set_ui (mpfr_t rop, unsigned long int op, mp_rnd_t rnd) 
    int mpfr_init_set_si (mpfr_t rop, signed long int op, mp_rnd_t rnd) 
    int mpfr_init_set_d (mpfr_t rop, double op, mp_rnd_t rnd) 
    int mpfr_init_set_ld (mpfr_t rop, long double op, mp_rnd_t rnd) 
    int mpfr_init_set_z (mpfr_t rop, mpz_t op, mp_rnd_t rnd) 
    int mpfr_init_set_q (mpfr_t rop, mpq_t op, mp_rnd_t rnd) 
    # int mpfr_init_set_f (mpfr_t rop, mpf_t op, mp_rnd_t rnd) 
    int mpfr_init_set_str (mpfr_t x, char *s, int base, mp_rnd_t rnd) 

    # Conversion Functions
    double mpfr_get_d (mpfr_t op, mp_rnd_t rnd) 
    long double mpfr_get_ld (mpfr_t op, mp_rnd_t rnd) 
    # _Decimal64 mpfr_get_decimal64 (mpfr_t op, mp_rnd_t rnd) 
    double mpfr_get_d_2exp (long *exp, mpfr_t op, mp_rnd_t rnd) 
    long double mpfr_get_ld_2exp (long *exp, mpfr_t op, mp_rnd_t rnd) 
    long mpfr_get_si (mpfr_t op, mp_rnd_t rnd) 
    unsigned long mpfr_get_ui (mpfr_t op, mp_rnd_t rnd) 
    # intmax_t mpfr_get_sj (mpfr_t op, mp_rnd_t rnd) 
    # uintmax_t mpfr_get_uj (mpfr_t op, mp_rnd_t rnd) 
    mp_exp_t mpfr_get_z_exp (mpz_t rop, mpfr_t op) 
    void mpfr_get_z (mpz_t rop, mpfr_t op, mp_rnd_t rnd) 
    # int mpfr_get_f (mpf_t rop, mpfr_t op, mp_rnd_t rnd) 
    char * mpfr_get_str (char *str, mp_exp_t *expptr, int b, size_t n, mpfr_t op, mp_rnd_t rnd) 
    void mpfr_free_str (char *str) 
    bint mpfr_fits_ulong_p (mpfr_t op, mp_rnd_t rnd) 
    bint mpfr_fits_slong_p (mpfr_t op, mp_rnd_t rnd) 
    bint mpfr_fits_uint_p (mpfr_t op, mp_rnd_t rnd) 
    bint mpfr_fits_sint_p (mpfr_t op, mp_rnd_t rnd) 
    bint mpfr_fits_ushort_p (mpfr_t op, mp_rnd_t rnd) 
    bint mpfr_fits_sshort_p (mpfr_t op, mp_rnd_t rnd) 
    bint mpfr_fits_intmax_p (mpfr_t op, mp_rnd_t rnd) 
    bint mpfr_fits_uintmax_p (mpfr_t op, mp_rnd_t rnd) 

    # Basic Arithmetic Functions
    int mpfr_add (mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_add_ui (mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd) 
    int mpfr_add_si (mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd) 
    int mpfr_add_z (mpfr_t rop, mpfr_t op1, mpz_t op2, mp_rnd_t rnd) 
    int mpfr_add_q (mpfr_t rop, mpfr_t op1, mpq_t op2, mp_rnd_t rnd) 
    int mpfr_sub (mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_ui_sub (mpfr_t rop, unsigned long int op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_sub_ui (mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd) 
    int mpfr_si_sub (mpfr_t rop, long int op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_sub_si (mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd) 
    int mpfr_sub_z (mpfr_t rop, mpfr_t op1, mpz_t op2, mp_rnd_t rnd) 
    int mpfr_sub_q (mpfr_t rop, mpfr_t op1, mpq_t op2, mp_rnd_t rnd) 
    int mpfr_mul (mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_mul_ui (mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd) 
    int mpfr_mul_si (mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd) 
    int mpfr_mul_z (mpfr_t rop, mpfr_t op1, mpz_t op2, mp_rnd_t rnd) 
    int mpfr_mul_q (mpfr_t rop, mpfr_t op1, mpq_t op2, mp_rnd_t rnd) 
    int mpfr_sqr (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_div (mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_ui_div (mpfr_t rop, unsigned long int op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_div_ui (mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd) 
    int mpfr_si_div (mpfr_t rop, long int op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_div_si (mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd) 
    int mpfr_div_z (mpfr_t rop, mpfr_t op1, mpz_t op2, mp_rnd_t rnd) 
    int mpfr_div_q (mpfr_t rop, mpfr_t op1, mpq_t op2, mp_rnd_t rnd) 
    int mpfr_sqrt (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_sqrt_ui (mpfr_t rop, unsigned long int op, mp_rnd_t rnd) 
    int mpfr_cbrt (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_root (mpfr_t rop, mpfr_t op, unsigned long int k, mp_rnd_t rnd) 
    int mpfr_pow (mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_pow_ui (mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd) 
    int mpfr_pow_si (mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd) 
    int mpfr_pow_z (mpfr_t rop, mpfr_t op1, mpz_t op2, mp_rnd_t rnd) 
    int mpfr_ui_pow_ui (mpfr_t rop, unsigned long int op1, unsigned long int op2, mp_rnd_t rnd) 
    int mpfr_ui_pow (mpfr_t rop, unsigned long int op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_neg (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_abs (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_dim (mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_mul_2ui (mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd) 
    int mpfr_mul_2si (mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd) 
    int mpfr_div_2ui (mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd) 
    int mpfr_div_2si (mpfr_t rop, mpfr_t op1, long int op2, mp_rnd_t rnd) 

    # Comparison Functions
    int mpfr_cmp (mpfr_t op1, mpfr_t op2) 
    int mpfr_cmp_ui (mpfr_t op1, unsigned long int op2) 
    int mpfr_cmp_si (mpfr_t op1, signed long int op2) 
    int mpfr_cmp_d (mpfr_t op1, double op2) 
    int mpfr_cmp_ld (mpfr_t op1, long double op2) 
    int mpfr_cmp_z (mpfr_t op1, mpz_t op2) 
    int mpfr_cmp_q (mpfr_t op1, mpq_t op2) 
    # int mpfr_cmp_f (mpfr_t op1, mpf_t op2) 
    int mpfr_cmp_ui_2exp (mpfr_t op1, unsigned long int op2, mp_exp_t e) 
    int mpfr_cmp_si_2exp (mpfr_t op1, long int op2, mp_exp_t e) 
    int mpfr_cmpabs (mpfr_t op1, mpfr_t op2) 
    bint mpfr_nan_p (mpfr_t op) 
    bint mpfr_inf_p (mpfr_t op) 
    bint mpfr_number_p (mpfr_t op) 
    bint mpfr_zero_p (mpfr_t op) 
    int mpfr_sgn (mpfr_t op) 
    bint mpfr_greater_p (mpfr_t op1, mpfr_t op2) 
    bint mpfr_greaterequal_p (mpfr_t op1, mpfr_t op2) 
    bint mpfr_less_p (mpfr_t op1, mpfr_t op2) 
    bint mpfr_lessequal_p (mpfr_t op1, mpfr_t op2) 
    bint mpfr_lessgreater_p (mpfr_t op1, mpfr_t op2) 
    bint mpfr_equal_p (mpfr_t op1, mpfr_t op2) 
    bint mpfr_unordered_p (mpfr_t op1, mpfr_t op2) 

    # Special Functions
    int mpfr_log (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_log2 (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_log10 (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_exp (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_exp2 (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_exp10 (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_cos (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_sin (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_tan (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_sec (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_csc (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_cot (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_sin_cos (mpfr_t sop, mpfr_t cop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_acos (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_asin (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_atan (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_atan2 (mpfr_t rop, mpfr_t y, mpfr_t x, mp_rnd_t rnd) 
    int mpfr_cosh (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_sinh (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_tanh (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_sech (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_csch (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_coth (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_acosh (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_asinh (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_atanh (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_fac_ui (mpfr_t rop, unsigned long int op, mp_rnd_t rnd) 
    int mpfr_log1p (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_expm1 (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_eint (mpfr_t y, mpfr_t x, mp_rnd_t rnd) 
    int mpfr_gamma (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_lngamma (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_lgamma (mpfr_t rop, int *signp, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_zeta (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_zeta_ui (mpfr_t rop, unsigned long op, mp_rnd_t rnd) 
    int mpfr_erf (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_erfc (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_j0 (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_j1 (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_jn (mpfr_t rop, long n, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_y0 (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_y1 (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_yn (mpfr_t rop, long n, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_fma (mpfr_t rop, mpfr_t op1, mpfr_t op2, mpfr_t op3, mp_rnd_t rnd) 
    int mpfr_fms (mpfr_t rop, mpfr_t op1, mpfr_t op2, mpfr_t op3, mp_rnd_t rnd) 
    int mpfr_agm (mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_hypot (mpfr_t rop, mpfr_t x, mpfr_t y, mp_rnd_t rnd) 
    int mpfr_const_log2 (mpfr_t rop, mp_rnd_t rnd) 
    int mpfr_const_pi (mpfr_t rop, mp_rnd_t rnd) 
    int mpfr_const_euler (mpfr_t rop, mp_rnd_t rnd) 
    int mpfr_const_catalan (mpfr_t rop, mp_rnd_t rnd) 
    void mpfr_free_cache () 
    int mpfr_sum (mpfr_t rop, mpfr_ptr tab[], unsigned long n, mp_rnd_t rnd) 

    # Input and Output Functions
    # size_t mpfr_out_str (file *stream, int base, size_t n, mpfr_t op, mp_rnd_t rnd) 
    # size_t mpfr_inp_str (mpfr_t rop, file *stream, int base, mp_rnd_t rnd) 

    # Integer Related Functions
    int mpfr_rint (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_ceil (mpfr_t rop, mpfr_t op) 
    int mpfr_floor (mpfr_t rop, mpfr_t op) 
    int mpfr_round (mpfr_t rop, mpfr_t op) 
    int mpfr_trunc (mpfr_t rop, mpfr_t op) 
    int mpfr_rint_ceil (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_rint_floor (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_rint_round (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_rint_trunc (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_frac (mpfr_t rop, mpfr_t op, mp_rnd_t rnd) 
    int mpfr_remainder (mpfr_t r, mpfr_t x, mpfr_t y, mp_rnd_t rnd) 
    int mpfr_remquo (mpfr_t r, long* q, mpfr_t x, mpfr_t y, mp_rnd_t rnd) 
    bint mpfr_integer_p (mpfr_t op) 

    # Miscellaneous Functions
    void mpfr_nexttoward (mpfr_t x, mpfr_t y) 
    void mpfr_nextabove (mpfr_t x) 
    void mpfr_nextbelow (mpfr_t x) 
    int mpfr_min (mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_max (mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_urandomb (mpfr_t rop, gmp_randstate_t state) 
    void mpfr_random (mpfr_t rop) 
    void mpfr_random2 (mpfr_t rop, mp_size_t size, mp_exp_t exp) 
    mp_exp_t mpfr_get_exp (mpfr_t x) 
    int mpfr_set_exp (mpfr_t x, mp_exp_t e) 
    int mpfr_signbit (mpfr_t op) 
    int mpfr_setsign (mpfr_t rop, mpfr_t op, int s, mp_rnd_t rnd) 
    int mpfr_copysign (mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd) 
    char * mpfr_get_version () 
    long MPFR_VERSION_NUM (major, minor, patchlevel) 
    char * mpfr_get_patches () 

    # Rounding Mode Related Functions
    void mpfr_set_default_rounding_mode (mp_rnd_t rnd) 
    mp_rnd_t mpfr_get_default_rounding_mode () 
    int mpfr_prec_round (mpfr_t x, mp_prec_t prec, mp_rnd_t rnd) 
    int mpfr_round_prec (mpfr_t x, mp_rnd_t rnd, mp_prec_t prec) 
    char * mpfr_print_rnd_mode (mp_rnd_t rnd) 

    # Exception Related Functions
    mp_exp_t mpfr_get_emin () 
    mp_exp_t mpfr_get_emax () 
    int mpfr_set_emin (mp_exp_t exp) 
    int mpfr_set_emax (mp_exp_t exp) 
    mp_exp_t mpfr_get_emin_min () 
    mp_exp_t mpfr_get_emin_max () 
    mp_exp_t mpfr_get_emax_min () 
    mp_exp_t mpfr_get_emax_max () 
    int mpfr_check_range (mpfr_t x, int t, mp_rnd_t rnd) 
    int mpfr_subnormalize (mpfr_t x, int t, mp_rnd_t rnd) 
    void mpfr_clear_underflow () 
    void mpfr_clear_overflow () 
    void mpfr_clear_nanflag () 
    void mpfr_clear_inexflag () 
    void mpfr_clear_erangeflag () 
    void mpfr_set_underflow () 
    void mpfr_set_overflow () 
    void mpfr_set_nanflag () 
    void mpfr_set_inexflag () 
    void mpfr_set_erangeflag () 
    void mpfr_clear_flags () 
    bint mpfr_underflow_p () 
    bint mpfr_overflow_p () 
    bint mpfr_nanflag_p () 
    bint mpfr_inexflag_p () 
    bint mpfr_erangeflag_p () 

    # Advanced Functions
    MPFR_DECL_INIT (name, prec) 
    void mpfr_inits (mpfr_t x, ...) 
    void mpfr_inits2 (mp_prec_t prec, mpfr_t x, ...) 
    void mpfr_clears (mpfr_t x, ...) 

    # Compatibility With MPF
    void mpfr_set_prec_raw (mpfr_t x, mp_prec_t prec) 
    int mpfr_eq (mpfr_t op1, mpfr_t op2, unsigned long int op3) 
    void mpfr_reldiff (mpfr_t rop, mpfr_t op1, mpfr_t op2, mp_rnd_t rnd) 
    int mpfr_mul_2exp (mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd) 
    int mpfr_div_2exp (mpfr_t rop, mpfr_t op1, unsigned long int op2, mp_rnd_t rnd) 

    # Custom Interface
    size_t mpfr_custom_get_size (mp_prec_t prec) 
    void mpfr_custom_init (void *significand, mp_prec_t prec) 
    void mpfr_custom_init_set (mpfr_t x, int kind, mp_exp_t exp, mp_prec_t prec, void *significand) 
    int mpfr_custom_get_kind (mpfr_t x) 
    void * mpfr_custom_get_mantissa (mpfr_t x) 
    mp_exp_t mpfr_custom_get_exp (mpfr_t x) 
    void mpfr_custom_move (mpfr_t x, void *new_position) 

    # Internals
    int mpfr_can_round (mpfr_t b, mp_exp_t err, mp_rnd_t rnd1, mp_rnd_t rnd2, mp_prec_t prec) 
    double mpfr_get_d1 (mpfr_t op)