( Title: PFE bindings for the GNU Multiple Precision library, GNU GMP 5.0.1 File: libgmp-pfe.fs Test file: gmpr-test.fs Author: David N. Williams License: LGPL 3 Version: 0.9.0 Started: May 1, 2011 Revised: December 10, 2019 Any part of this file not derived from the GMP library is ) \ Copyright (C) 2012 by David N. Williams ( This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or at your option any later version. This library is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. ) s" bindlib.fs" included LIBRARY libgmp-pfe MODULE gmp "gmp bindings" WITH-MODULE floating-ext c{ /* License: LGPL */ #define _P4_SOURCE 1 #include #include #include // either of these... // #include //...works with OS X #include #define slong long #define ulong unsigned long }c N-RET-TYPE slong U-RET-TYPE ulong N-RET-TYPE intmax_t U-RET-TYPE uintmax_t U-RET-TYPE char* U-RET-TYPE void* DF-RET-TYPE float U-RET-TYPE size_t U-RET-TYPE mp_bitcnt_t U-RET-TYPE mp_limb_t U-RET-TYPE mpz_ptr \ 3.8 Useful Macros and Constants \ c-func mp_bits_per_limb int __gmp_bits_per_limb (void); \ c-func gmp_version char* __gmp_version (void); c-wrap-val mp_bits_per_limb int __gmp_bits_per_limb; c-wrap-val gmp_version char* __gmp_version; c-val GMP_VERSION_MAJOR __GNU_MP_VERSION ; c-val GMP_VERSION_MINOR __GNU_MP_VERSION_MINOR ; c-val GMP_VERSION_PATCHLEVEL __GNU_MP_VERSION_PATCHLEVEL ; \ 5.1 Initialization c-func mpz_init void mpz_init (mpz_ptr); c-func mpz_init2 void mpz_init2 (mpz_ptr, mp_bitcnt_t); c-func mpz_clear void mpz_clear (mpz_ptr); \ void mpz_clears (mpz_ptr, ...); c-func mpz_realloc2 void mpz_realloc2 (mpz_ptr, mp_bitcnt_t); \ 5.2 Assignment c-func mpz_set void mpz_set (mpz_ptr, mpz_ptr); c-func mpz_set_ui void mpz_set_ui (mpz_ptr, ulong); c-func mpz_set_si void mpz_set_si (mpz_ptr, slong); c-func mpz_set_d void mpz_set_d (mpz_ptr, double); c-func mpz_set_q void mpz_set_q (mpz_ptr, mpq_ptr); c-func mpz_set_f void mpz_set_f (mpz_ptr, mpf_ptr); c-func mpz_set_str int mpz_set_str (mpz_ptr, char *, int); c-func mpz_swap void mpz_swap (mpz_ptr, mpz_ptr); \ 5.3 Combined initialization and assignment c-func mpz_init_set void mpz_init_set (mpz_ptr, mpz_ptr); c-func mpz_init_set_ui void mpz_init_set_ui (mpz_ptr, ulong); c-func mpz_init_set_si void mpz_init_set_si (mpz_ptr, slong); c-func mpz_init_set_d void mpz_init_set_d (mpz_ptr, double); c-func mpz_init_set_str int mpz_init_set_str (mpz_ptr, char *, int); \ 5.4 Conversion c-func mpz_get_ui int mpz_get_ui (mpz_ptr); c-func mpz_get_si int mpz_get_si (mpz_ptr); c-func mpz_get_d double mpz_get_d (mpz_ptr); c-func mpz_get_d_2exp double mpz_get_d_2exp (slong *, mpz_ptr); c-func mpz_get_str int mpz_get_str (char *, int, mpz_ptr); \ 5.5 Arithmetic c-func mpz_add void mpz_add (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_add_ui void mpz_add_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_sub void mpz_sub (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_sub_ui void mpz_sub_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_ui_sub void mpz_ui_sub (mpz_ptr, ulong, mpz_ptr); c-func mpz_mul void mpz_mul (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_mul_si void mpz_mul_si (mpz_ptr, mpz_ptr, int); c-func mpz_mul_ui void mpz_mul_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_addmul void mpz_addmul (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_addmul_ui void mpz_addmul_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_submul void mpz_submul (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_submul_ui void mpz_submul_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_mul_2exp void mpz_mul_2exp (mpz_ptr, mpz_ptr, mp_bitcnt_t); c-func mpz_neg void mpz_neg (mpz_ptr, mpz_ptr); c-func mpz_abs void mpz_abs (mpz_ptr, mpz_ptr); \ 5.6 Division c-func mpz_cdiv_q void mpz_cdiv_q (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_cdiv_r void mpz_cdiv_r (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_cdiv_qr void mpz_cdiv_qr (mpz_ptr, mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_cdiv_q_ui ulong mpz_cdiv_q_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_cdiv_r_ui ulong mpz_cdiv_r_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_cdiv_qr_ui ulong mpz_cdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_ptr, ulong); c-func mpz_cdiv_ui ulong mpz_cdiv_ui (mpz_ptr, ulong); c-func mpz_cdiv_q_2exp void mpz_cdiv_q_2exp (mpz_ptr, mpz_ptr, mp_bitcnt_t); c-func mpz_cdiv_r_2exp void mpz_cdiv_r_2exp (mpz_ptr, mpz_ptr, mp_bitcnt_t); c-func mpz_fdiv_q void mpz_fdiv_q (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_fdiv_r void mpz_fdiv_r (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_fdiv_qr void mpz_fdiv_qr (mpz_ptr, mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_fdiv_q_ui ulong mpz_fdiv_q_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_fdiv_r_ui ulong mpz_fdiv_r_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_fdiv_qr_ui ulong mpz_fdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_ptr, ulong); c-func mpz_fdiv_ui ulong mpz_fdiv_ui (mpz_ptr, ulong); c-func mpz_fdiv_q_2exp void mpz_fdiv_q_2exp (mpz_ptr, mpz_ptr, mp_bitcnt_t); c-func mpz_fdiv_r_2exp void mpz_fdiv_r_2exp (mpz_ptr, mpz_ptr, mp_bitcnt_t); c-func mpz_tdiv_q void mpz_tdiv_q (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_tdiv_r void mpz_tdiv_r (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_tdiv_qr void mpz_tdiv_qr (mpz_ptr, mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_tdiv_q_ui ulong mpz_tdiv_q_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_tdiv_r_ui ulong mpz_tdiv_r_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_tdiv_qr_ui ulong mpz_tdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_ptr, ulong); c-func mpz_tdiv_ui ulong mpz_tdiv_ui (mpz_ptr, ulong); c-func mpz_tdiv_q_2exp void mpz_tdiv_q_2exp (mpz_ptr, mpz_ptr, mp_bitcnt_t); c-func mpz_tdiv_r_2exp void mpz_tdiv_r_2exp (mpz_ptr, mpz_ptr, mp_bitcnt_t); c-func mpz_mod void mpz_mod (mpz_ptr, mpz_ptr, mpz_ptr); \ c-func mpz_mod_ui ulong mpz_mod_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_mod_ui ulong mpz_fdiv_r_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_divexact void mpz_divexact (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_divexact_ui void mpz_divexact_ui (mpz_ptr, mpz_ptr, int); c-func mpz_divisible_p int mpz_divisible_p (mpz_ptr, mpz_ptr); c-func mpz_divisible_ui_p int mpz_divisible_ui_p (mpz_ptr, ulong); c-func mpz_divisible_2exp_p int mpz_divisible_2exp_p (mpz_ptr, mp_bitcnt_t); c-func mpz_congruent_p int mpz_congruent_p (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_congruent_ui_p int mpz_congruent_ui_p (mpz_ptr, ulong, ulong); c-func mpz_congruent_2exp_p int mpz_congruent_2exp_p (mpz_ptr, mpz_ptr, mp_bitcnt_t); \ 5.7 Exponentiation c-func mpz_powm void mpz_powm (mpz_ptr, mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_powm_ui void mpz_powm_ui (mpz_ptr, mpz_ptr, ulong, mpz_ptr); c-func mpz_powm_sec void mpz_powm_sec (mpz_ptr, mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_pow_ui void mpz_pow_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_ui_pow_ui void mpz_ui_pow_ui (mpz_ptr, ulong, ulong); \ 5.8 Root extraction c-func mpz_root int mpz_root (mpz_ptr, mpz_ptr, ulong); c-func mpz_rootrem void mpz_rootrem (mpz_ptr, mpz_ptr, mpz_ptr, ulong); c-func mpz_sqrt void mpz_sqrt (mpz_ptr, mpz_ptr); c-func mpz_sqrtrem void mpz_sqrtrem (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_perfect_power_p int mpz_perfect_power_p (mpz_ptr); c-func mpz_perfect_square_p int mpz_perfect_square_p (mpz_ptr); \ 5.9 Number theoretics c-func mpz_probab_prime_p int mpz_probab_prime_p (mpz_ptr, int); c-func mpz_nextprime void mpz_nextprime (mpz_ptr, mpz_ptr); c-func mpz_gcd void mpz_gcd (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_gcd_ui ulong mpz_gcd_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_gcdext void mpz_gcdext (mpz_ptr, mpz_ptr, mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_lcm void mpz_lcm (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_lcm_ui void mpz_lcm_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_invert int mpz_invert (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_jacobi int mpz_jacobi (mpz_ptr, mpz_ptr); c-func mpz_legendre int mpz_jacobi (mpz_ptr, mpz_ptr); c-func mpz_kronecker int mpz_jacobi (mpz_ptr, mpz_ptr); c-func mpz_kronecker_si int mpz_kronecker_si (mpz_ptr, slong); c-func mpz_kronecker_ui int mpz_kronecker_ui (mpz_ptr, ulong); c-func mpz_si_kronecker int mpz_si_kronecker (slong, mpz_ptr); c-func mpz_ui_kronecker int mpz_ui_kronecker (ulong, mpz_ptr); c-func mpz_remove mp_bitcnt_t mpz_remove (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_fac_ui void mpz_fac_ui (mpz_ptr, ulong); c-func mpz_bin_ui void mpz_bin_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_bin_uiui void mpz_bin_uiui (mpz_ptr, ulong, ulong); c-func mpz_fib_ui void mpz_fib_ui (mpz_ptr, ulong); c-func mpz_fib2_ui void mpz_fib2_ui (mpz_ptr, mpz_ptr, ulong); c-func mpz_lucnum_ui void mpz_lucnum_ui (mpz_ptr, ulong); c-func mpz_lucnum2_ui void mpz_lucnum2_ui (mpz_ptr, mpz_ptr, ulong); \ 5.10 Comparison c-func mpz_cmp int mpz_cmp (mpz_ptr, mpz_ptr); c-func mpz_cmp_d int mpz_cmp_d (mpz_ptr, double); c-func mpz_cmp_si int mpz_cmp_si (mpz_ptr, slong); c-func mpz_cmp_ui int mpz_cmp_ui (mpz_ptr, ulong); c-func mpz_cmpabs int mpz_cmpabs (mpz_ptr, mpz_ptr); c-func mpz_cmpabs_d int mpz_cmpabs_d (mpz_ptr, double); c-func mpz_cmpabs_ui int mpz_cmpabs_ui (mpz_ptr, ulong); c-func mpz_sgn int mpz_sgn (mpz_ptr); \ 5.11 Logic and bit manipulation c-func mpz_and void mpz_and (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_ior void mpz_ior (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_xor void mpz_xor (mpz_ptr, mpz_ptr, mpz_ptr); c-func mpz_com void mpz_com (mpz_ptr, mpz_ptr); c-func mpz_popcount mp_bitcnt_t mpz_popcount (mpz_ptr); c-func mpz_hamdist mp_bitcnt_t mpz_hamdist (mpz_ptr, mpz_ptr); c-func mpz_scan0 mp_bitcnt_t mpz_scan0 (mpz_ptr, mp_bitcnt_t); c-func mpz_scan1 mp_bitcnt_t mpz_scan1 (mpz_ptr, mp_bitcnt_t); c-func mpz_setbit void mpz_setbit (mpz_ptr, mp_bitcnt_t); c-func mpz_clrbit void mpz_clrbit (mpz_ptr, mp_bitcnt_t); c-func mpz_combit void mpz_combit (mpz_ptr, mp_bitcnt_t); c-func mpz_tstbit int mpz_tstbit (mpz_ptr, mp_bitcnt_t); \ 5.12 Input and output c-func mpz_out_str size_t mpz_out_str (FILE *, int, mpz_ptr); c-func mpz_inp_str size_t mpz_inp_str (mpz_ptr, FILE *, int); c-func mpz_out_raw size_t mpz_out_raw (FILE *, mpz_ptr); c-func mpz_inp_raw size_t mpz_inp_raw (mpz_ptr, FILE *); \ 5.13 Random numbers \ c-func mpz_urandomb void mpz_urandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t); \ c-func mpz_urandomm void mpz_urandomm (mpz_ptr, gmp_randstate_t, mpz_ptr); \ c-func mpz_rrandomb void mpz_rrandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t); c-func mpz_urandomb void mpz_urandomb (mpz_ptr, void*, mp_bitcnt_t); c-func mpz_urandomm void mpz_urandomm (mpz_ptr, void*, mpz_ptr); c-func mpz_rrandomb void mpz_rrandomb (mpz_ptr, void*, mp_bitcnt_t); \ void mpz_random (mpz_ptr, mp_size_t); \ obsolete \ mpz_random2 void mpz_random2 (mpz_ptr, mp_size_t); \ obsolete \ 5.14 Integer export and import c-func mpz_import void mpz_import (mpz_ptr, size_t, int, size_t, int, size_t, const void *); \ c-func mpz_export void* mpz_export (void *, size_t *, int, size_t, \ int, size_t, mpz_ptr); c-func mpz_export int mpz_export (void *, size_t *, int, size_t, int, size_t, mpz_ptr); \ 5.15 Miscellaneous c-func mpz_fits_ulong_p int mpz_fits_ulong_p (mpz_ptr); c-func mpz_fits_slong_p int mpz_fits_slong_p (mpz_ptr); c-func mpz_fits_uint_p int mpz_fits_uint_p (mpz_ptr); c-func mpz_fits_sint_p int mpz_fits_sint_p (mpz_ptr); c-func mpz_fits_ushort_p int mpz_fits_ushort_p (mpz_ptr); c-func mpz_fits_sshort_p int mpz_fits_sshort_p (mpz_ptr); c-func mpz_odd_p int mpz_odd_p (mpz_ptr); c-func mpz_even_p int mpz_even_p (mpz_ptr); c-func mpz_sizeinbase size_t mpz_sizeinbase (mpz_ptr, int); \ 5.16 Special c-func mpz_array_init void mpz_array_init (mpz_ptr, mp_size_t, mp_size_t); c-func _mpz_realloc void* mpz_realloc (mpz_ptr, mp_size_t); c-func mpz_getlimbn mp_limb_t mpz_getlimbn (mpz_ptr, mp_size_t); c-func mpz_size size_t mpz_size (mpz_ptr); \ 6 Rationals c-func mpq_canonicalize void mpq_canonicalize (mpq_ptr); \ 6.1 Initialization and assignment c-func mpq_init void mpq_init (mpq_ptr); \ void mpq_inits (mpq_ptr, ...); c-func mpq_clear void mpq_clear (mpq_ptr); \ void mpq_clears (mpq_ptr, ...); c-func mpq_set void mpq_set (mpq_ptr, mpq_ptr); c-func mpq_set_z void mpq_set_z (mpq_ptr, mpz_ptr); c-func mpq_set_ui void mpq_set_ui (mpq_ptr, ulong, ulong); c-func mpq_set_si void mpq_set_si (mpq_ptr, slong, ulong); c-func mpq_set_str int mpq_set_str (mpq_ptr, char *, int); c-func mpq_swap void mpq_swap (mpq_ptr, mpq_ptr); \ 6.2 Conversion c-func mpq_get_d double mpq_get_d (mpq_ptr); c-func mpq_set_d void mpq_set_d (mpq_ptr, double); c-func mpq_set_f void mpq_set_f (mpq_ptr, mpf_ptr); c-func mpq_get_str char* mpq_get_str (char *, int, mpq_ptr); \ 6.3 Arithmetic c-func mpq_add void mpq_add (mpq_ptr, mpq_ptr, mpq_ptr); c-func mpq_sub void mpq_sub (mpq_ptr, mpq_ptr, mpq_ptr); c-func mpq_mul void mpq_mul (mpq_ptr, mpq_ptr, mpq_ptr); c-func mpq_mul_2exp void mpq_mul_2exp (mpq_ptr, mpq_ptr, mp_bitcnt_t); c-func mpq_div void mpq_div (mpq_ptr, mpq_ptr, mpq_ptr); c-func mpq_div_2exp void mpq_div_2exp (mpq_ptr, mpq_ptr, mp_bitcnt_t); c-func mpq_neg void mpq_neg (mpq_ptr, mpq_ptr); c-func mpq_abs void mpq_abs (mpq_ptr, mpq_ptr); c-func mpq_inv void mpq_inv (mpq_ptr, mpq_ptr); \ 6.4 Comparison c-func mpq_cmp int mpq_cmp (mpq_ptr, mpq_ptr); c-func mpq_cmp_ui int mpq_cmp_ui (mpq_ptr, ulong, ulong); c-func mpq_cmp_si int mpq_cmp_si (mpq_ptr, slong, ulong); c-func mpq_sgn int mpq_sgn (mpq_ptr); c-func mpq_equal int mpq_equal (mpq_ptr, mpq_ptr); \ 6.5 Integer functions c-func mpq_numref mpz_ptr mpq_numref (mpq_ptr); c-func mpq_denref mpz_ptr mpq_denref (mpq_ptr); c-func mpq_get_num void mpq_get_num (mpz_ptr, mpq_ptr); c-func mpq_get_den void mpq_get_den (mpz_ptr, mpq_ptr); c-func mpq_set_num void mpq_set_num (mpq_ptr, mpz_ptr); c-func mpq_set_den void mpq_set_den (mpq_ptr, mpz_ptr); \ 6.6 Input and output c-func mpq_out_str size_t mpq_out_str (FILE *, int, mpq_ptr); c-func mpq_inp_str size_t mpq_inp_str (mpq_ptr, FILE *, int); \ 7 Floating point \ 7.1 Initialization c-func mpf_set_default_prec void mpf_set_default_prec (mp_bitcnt_t); c-func mpf_get_default_prec mp_bitcnt_t mpf_get_default_prec (void); c-func mpf_init void mpf_init (mpf_ptr); c-func mpf_init2 void mpf_init2 (mpf_ptr, mp_bitcnt_t); \ void mpf_inits (mpf_ptr, ...); c-func mpf_clear void mpf_clear (mpf_ptr); \ void mpf_clears (mpf_ptr, ...); c-func mpf_get_prec mp_bitcnt_t mpf_get_prec (mpf_ptr); c-func mpf_set_prec void mpf_set_prec (mpf_ptr, mp_bitcnt_t); c-func mpf_set_prec_raw void mpf_set_prec_raw (mpf_ptr, mp_bitcnt_t); \ 7.2 Assignment c-func mpf_set void mpf_set (mpf_ptr, mpf_ptr); c-func mpf_set_ui void mpf_set_ui (mpf_ptr, ulong); c-func mpf_set_si void mpf_set_si (mpf_ptr, slong); c-func mpf_set_d void mpf_set_d (mpf_ptr, double); c-func mpf_set_z void mpf_set_z (mpf_ptr, mpz_ptr); c-func mpf_set_q void mpf_set_q (mpf_ptr, mpq_ptr); c-func mpf_set_str int mpf_set_str (mpf_ptr, char *, int); c-func mpf_swap void mpf_swap (mpf_ptr, mpf_ptr); \ 7.3 Combined initialization and assignment c-func mpf_init_set void mpf_init_set (mpf_ptr, mpf_ptr); c-func mpf_init_set_ui void mpf_init_set_ui (mpf_ptr, ulong); c-func mpf_init_set_si void mpf_init_set_si (mpf_ptr, slong); c-func mpf_init_set_d void mpf_init_set_d (mpf_ptr, double); c-func mpf_init_set_str int mpf_init_set_str (mpf_ptr, char *, int); \ 7.4 Conversion c-func mpf_get_d double mpf_get_d (mpf_ptr); c-func mpf_get_d_2exp double mpf_get_d_2exp (slong *, mpf_ptr); c-func mpf_get_si slong mpf_get_si (mpf_ptr); c-func mpf_get_ui ulong mpf_get_ui (mpf_ptr); c-func mpf_get_str char* mpf_get_str (char *, mp_exp_t *, int, size_t, mpf_ptr); \ 7.5 Arithmetic c-func mpf_add void mpf_add (mpf_ptr, mpf_ptr, mpf_ptr); c-func mpf_add_ui void mpf_add_ui (mpf_ptr, mpf_ptr, ulong); c-func mpf_sub void mpf_sub (mpf_ptr, mpf_ptr, mpf_ptr); c-func mpf_ui_sub void mpf_ui_sub (mpf_ptr, ulong, mpf_ptr); c-func mpf_sub_ui void mpf_sub_ui (mpf_ptr, mpf_ptr, ulong); c-func mpf_mul void mpf_mul (mpf_ptr, mpf_ptr, mpf_ptr); c-func mpf_mul_ui void mpf_mul_ui (mpf_ptr, mpf_ptr, ulong); c-func mpf_div void mpf_div (mpf_ptr, mpf_ptr, mpf_ptr); c-func mpf_ui_div void mpf_ui_div (mpf_ptr, ulong, mpf_ptr); c-func mpf_div_ui void mpf_div_ui (mpf_ptr, mpf_ptr, ulong); c-func mpf_sqrt void mpf_sqrt (mpf_ptr, mpf_ptr); c-func mpf_sqrt_ui void mpf_sqrt_ui (mpf_ptr, ulong); c-func mpf_pow_ui void mpf_pow_ui (mpf_ptr, mpf_ptr, ulong); c-func mpf_neg void mpf_neg (mpf_ptr, mpf_ptr); c-func mpf_abs void mpf_abs (mpf_ptr, mpf_ptr); c-func mpf_mul_2exp void mpf_mul_2exp (mpf_ptr, mpf_ptr, mp_bitcnt_t); c-func mpf_div_2exp void mpf_div_2exp (mpf_ptr, mpf_ptr, mp_bitcnt_t); \ 7.6 Comparison c-func mpf_cmp int mpf_cmp (mpf_ptr, mpf_ptr); c-func mpf_cmp_d int mpf_cmp_d (mpf_ptr, double); c-func mpf_cmp_ui int mpf_cmp_ui (mpf_ptr, ulong); c-func mpf_cmp_si int mpf_cmp_si (mpf_ptr, slong); c-func mpf_eq int mpf_eq (mpf_ptr, mpf_ptr, mp_bitcnt_t); c-func mpf_reldiff void mpf_reldiff (mpf_ptr, mpf_ptr, mpf_ptr); c-func mpf_sgn int mpf_sgn (mpf_ptr); \ 7.7 Input and output c-func mpf_out_str size_t mpf_out_str (FILE *, int, size_t, mpf_ptr); c-func mpf_inp_str size_t mpf_inp_str (mpf_ptr, FILE *, int); \ 7.8 Miscellaneous c-func mpf_ceil void mpf_ceil (mpf_ptr, mpf_ptr); c-func mpf_floor void mpf_floor (mpf_ptr, mpf_ptr); c-func mpf_trunc void mpf_trunc (mpf_ptr, mpf_ptr); c-func mpf_integer_p int mpf_integer_p (mpf_ptr); c-func mpf_fits_ulong_p int mpf_fits_ulong_p (mpf_ptr); c-func mpf_fits_slong_p int mpf_fits_slong_p (mpf_ptr); c-func mpf_fits_uint_p int mpf_fits_uint_p (mpf_ptr); c-func mpf_fits_sint_p int mpf_fits_sint_p (mpf_ptr); c-func mpf_fits_ushort_p int mpf_fits_ushort_p (mpf_ptr); c-func mpf_fits_sshort_p int mpf_fits_sshort_p (mpf_ptr); \ c-func mpf_urandomb void mpf_urandomb (mpf_ptr, gmp_randstate_t, mp_bitcnt_t); c-func mpf_urandomb void mpf_urandomb (mpf_ptr, void*, mp_bitcnt_t); c-func mpf_random2 void mpf_random2 (mpf_ptr, mp_size_t, mp_exp_t); \ 8 Low level \ OMITTED \ 9 Random number state \ 9.1 Initialization 0 [IF] c-func gmp_randinit_default void gmp_randinit_default (gmp_randstate_t); c-func gmp_randinit_mt void gmp_randinit_mt (gmp_randstate_t); c-func gmp_randinit_lc_2exp void gmp_randinit_lc_2exp (gmp_randstate_t, mpz_ptr, ulong, mp_bitcnt_t); c-func gmp_randinit_lc_2exp_size int gmp_randinit_lc_2exp_size (gmp_randstate_t, mp_bitcnt_t); c-func gmp_randinit_set void gmp_randinit_set (gmp_randstate_t, gmp_randstate_t); \ void gmp_randinit (gmp_randstate_t, gmp_randalg_t, ... ); \ obsolete c-func gmp_randclear void gmp_randclear (gmp_randstate_t); [THEN] c-func gmp_randinit_default void __gmp_randinit_default (void*); c-func gmp_randinit_mt void __gmp_randinit_mt (void*); c-func gmp_randinit_lc_2exp void __gmp_randinit_lc_2exp (void*, mpz_ptr, ulong, mp_bitcnt_t); c-func gmp_randinit_lc_2exp_size int __gmp_randinit_lc_2exp_size (void*, mp_bitcnt_t); c-func gmp_randinit_set void __gmp_randinit_set (void*, void*); \ void gmp_randinit (gmp_randstate_t, gmp_randalg_t, ... ); \ obsolete c-func gmp_randclear void __gmp_randclear (void*); \ 9.2 Seeding \ c-func gmp_randseed void gmp_randseed (gmp_randstate_t, mpz_ptr); \ c-func gmp_randseed_ui void gmp_randseed_ui (gmp_randstate_t, ulong); c-func gmp_randseed void __gmp_randseed (void*, mpz_ptr); c-func gmp_randseed_ui void __gmp_randseed_ui (void*, ulong); \ 9.3 Miscellaneous \ c-func gmp_urandomb_ui ulong gmp_urandomb_ui (gmp_randstate_t, ulong); \ c-func gmp_urandomm_ui ulong gmp_urandomm_ui (gmp_randstate_t, ulong); c-func gmp_urandomb_ui ulong __gmp_urandomb_ui (void*, ulong); c-func gmp_urandomm_ui ulong __gmp_urandomm_ui (void*, ulong); \ 10 Formatted output \ 10.1 Format strings \ 10.2 Functions 0 [IF] int gmp_printf (const char *, ... ); int gmp_vprintf (const char *, va list); int gmp_fprintf (FILE *fp, const char *, ... ); int gmp_vfprintf (FILE *fp, const char *, va list); int gmp_sprintf (char *buf, const char *, ... ); int gmp_vsprintf (char *buf, const char *, va list); int gmp_snprintf (char *buf, size_t size, const char *, ... ); int gmp_vsnprintf (char *buf, size_t size, const char *, va list); int gmp_asprintf (char **pp, const char *, ... ); int gmp_vasprintf (char **pp, const char *, va list); int gmp_obstack_printf (struct obstack *ob, const char *, ... ); int gmp_obstack_vprintf (struct obstack *ob, const char *, va list); [THEN] \ 11 Formatted input \ 11.1 Format strings \ 11.2 Functions 0 [IF] int gmp_scanf (const char *, ... ); int gmp_vscanf (const char *, va list); int gmp_fscanf (FILE *fp, const char *, ... ); int gmp_vfscanf (FILE *fp, const char *, va list); int gmp_sscanf (const char *s, const char *, ... ); int gmp_vsscanf (const char *s, const char *, va list); [THEN] \ Constants c-val /MPZ sizeof (mpz_t); c-val /MPQ sizeof (mpq_t); c-val /MPF sizeof (mpf_t); c-val /GMP-RANDSTATE sizeof (gmp_randstate_t); END-LIBRARY