summaryrefslogtreecommitdiff
path: root/gmp.h
diff options
context:
space:
mode:
authortege <tege@gmplib.org>1999-01-14 18:16:55 +0100
committertege <tege@gmplib.org>1999-01-14 18:16:55 +0100
commit6ba95ebc0d150e3e52c39ec26d8c6d152066f57e (patch)
treebce5457dddb693585621bfef6dfb4205a3576adf /gmp.h
parent5fd5e943b6ca72e8b42697d61dd0986b52f62b5f (diff)
downloadgmp-6ba95ebc0d150e3e52c39ec26d8c6d152066f57e.tar.gz
* (mpz_root): Declare.
* (mpz_perfect_power_p): Declare. * (mpz_remove): Declare. * (mpz_bin_ui): Declare. * (mpz_bin_uiui): Declare. * (mpz_fib_ui): Declare. * Get rid of GMP_SMALL stuff. * (mpf_ceil, mpf_floor, mpf_trunc): Add declarations. * (mpz_cmp_si): Cast argument before calling mpz_cmp_ui. * (__GNU_MP_VERSION_SNAP): New #define. (__GNU_MP_VERSION_MINOR): Now 1. * Change return type of mpz_tdiv_qr_ui, mpz_tdiv_r_ui, mpz_tdiv_q_ui. * (mpz_tdiv_ui): Declare. * (mpz_cmp_abs): Declare. * (mpz_cmp_abs_ui): Declare. * (mpz_swap): Declare.
Diffstat (limited to 'gmp.h')
-rw-r--r--gmp.h573
1 files changed, 203 insertions, 370 deletions
diff --git a/gmp.h b/gmp.h
index aba84b4d5..7efa4d330 100644
--- a/gmp.h
+++ b/gmp.h
@@ -80,19 +80,11 @@ typedef long int mp_exp_t;
typedef struct
{
-#if ! GMP_SMALL
int _mp_alloc; /* Number of *limbs* allocated and pointed
to by the _mp_d field. */
int _mp_size; /* abs(_mp_size) is the number of limbs the
last field points to. If _mp_size is
negative this is a negative number. */
-#else
- int _mp_alloc:16; /* Number of *limbs* allocated and pointed
- to by the _mp_d field. */
- __gmp_signed int _mp_size:16; /* abs(_mp_size) is the number of limbs the
- last field points to. If _mp_size is
- negative this is a negative number. */
-#endif
mp_limb_t *_mp_d; /* Pointer to the limbs. */
} __mpz_struct;
#endif /* __GNU_MP__ */
@@ -111,7 +103,6 @@ typedef __mpq_struct mpq_t[1];
typedef struct
{
-#if ! GMP_SMALL
int _mp_prec; /* Max precision, in number of `mp_limb_t's.
Set by mpf_init and modified by
mpf_set_prec. The area pointed to by the
@@ -120,16 +111,6 @@ typedef struct
last field points to. If _mp_size is
negative this is a negative number. */
mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */
-#else
- int _mp_prec:16; /* Max precision, in number of `mp_limb_t's.
- Set by mpf_init and modified by
- mpf_set_prec. The area pointed to by the
- _mp_d field contains `prec' + 1 limbs. */
- __gmp_signed int _mp_size:16; /* abs(_mp_size) is the number of limbs the
- last field points to. If _mp_size is
- negative this is a negative number. */
- __gmp_signed int _mp_exp:32; /* Exponent, in the base of `mp_limb_t'. */
-#endif
mp_limb_t *_mp_d; /* Pointer to the limbs. */
} __mpf_struct;
@@ -175,207 +156,115 @@ extern __gmp_const int mp_bits_per_limb;
/**************** Integer (i.e. Z) routines. ****************/
-#if GMP_SMALL
-#define _mpz_realloc __gmpzs_realloc
-#define mpz_realloc __gmpzs_realloc
-#define mpz_abs __gmpzs_abs
-#define mpz_add __gmpzs_add
-#define mpz_add_ui __gmpzs_add_ui
-#define mpz_addmul_ui __gmpzs_addmul_ui
-#define mpz_and __gmpzs_and
-#define mpz_array_init __gmpzs_array_init
-#define mpz_cdiv_q __gmpzs_cdiv_q
-#define mpz_cdiv_q_ui __gmpzs_cdiv_q_ui
-#define mpz_cdiv_qr __gmpzs_cdiv_qr
-#define mpz_cdiv_qr_ui __gmpzs_cdiv_qr_ui
-#define mpz_cdiv_r __gmpzs_cdiv_r
-#define mpz_cdiv_r_ui __gmpzs_cdiv_r_ui
-#define mpz_cdiv_ui __gmpzs_cdiv_ui
-#define mpz_clear __gmpzs_clear
-#define mpz_clrbit __gmpzs_clrbit
-#define mpz_cmp __gmpzs_cmp
-#define _mpz_cmp_si __gmpzs_cmp_si
-#define _mpz_cmp_ui __gmpzs_cmp_ui
-#define mpz_com __gmpzs_com
-#define mpz_divexact __gmpzs_divexact
-#define mpz_fac_ui __gmpzs_fac_ui
-#define mpz_fdiv_q __gmpzs_fdiv_q
-#define mpz_fdiv_q_2exp __gmpzs_fdiv_q_2exp
-#define mpz_fdiv_q_ui __gmpzs_fdiv_q_ui
-#define mpz_fdiv_qr __gmpzs_fdiv_qr
-#define mpz_fdiv_qr_ui __gmpzs_fdiv_qr_ui
-#define mpz_fdiv_r __gmpzs_fdiv_r
-#define mpz_fdiv_r_2exp __gmpzs_fdiv_r_2exp
-#define mpz_fdiv_r_ui __gmpzs_fdiv_r_ui
-#define mpz_fdiv_ui __gmpzs_fdiv_ui
-#define mpz_gcd __gmpzs_gcd
-#define mpz_gcd_ui __gmpzs_gcd_ui
-#define mpz_gcdext __gmpzs_gcdext
-#define mpz_get_d __gmpzs_get_d
-#define mpz_get_si __gmpzs_get_si
-#define mpz_get_str __gmpzs_get_str
-#define mpz_get_ui __gmpzs_get_ui
-#define mpz_getlimbn __gmpzs_getlimbn
-#define mpz_hamdist __gmpzs_hamdist
-#define mpz_init __gmpzs_init
-#define mpz_inp_binary __gmpzs_inp_binary
-#define mpz_inp_raw __gmpzs_inp_raw
-#define mpz_inp_str __gmpzs_inp_str
-#define mpz_init_set __gmpzs_init_set
-#define mpz_init_set_d __gmpzs_init_set_d
-#define mpz_init_set_si __gmpzs_init_set_si
-#define mpz_init_set_str __gmpzs_init_set_str
-#define mpz_init_set_ui __gmpzs_init_set_ui
-#define mpz_invert __gmpzs_invert
-#define mpz_ior __gmpzs_ior
-#define mpz_jacobi __gmpzs_jacobi
-#define mpz_lcm __gmpzs_lcm
-#define mpz_legendre __gmpzs_legendre
-#define mpz_mod __gmpzs_mod
-#define mpz_mul __gmpzs_mul
-#define mpz_mul_2exp __gmpzs_mul_2exp
-#define mpz_mul_ui __gmpzs_mul_ui
-#define mpz_neg __gmpzs_neg
-#define mpz_out_binary __gmpzs_out_binary
-#define mpz_out_raw __gmpzs_out_raw
-#define mpz_out_str __gmpzs_out_str
-#define mpz_perfect_square_p __gmpzs_perfect_square_p
-#define mpz_popcount __gmpzs_popcount
-#define mpz_pow_ui __gmpzs_pow_ui
-#define mpz_powm __gmpzs_powm
-#define mpz_powm_ui __gmpzs_powm_ui
-#define mpz_probab_prime_p __gmpzs_probab_prime_p
-#define mpz_random __gmpzs_random
-#define mpz_random2 __gmpzs_random2
-#define mpz_scan0 __gmpzs_scan0
-#define mpz_scan1 __gmpzs_scan1
-#define mpz_set __gmpzs_set
-#define mpz_set_d __gmpzs_set_d
-#define mpz_set_f __gmpzs_set_f
-#define mpz_set_q __gmpzs_set_q
-#define mpz_set_si __gmpzs_set_si
-#define mpz_set_str __gmpzs_set_str
-#define mpz_set_ui __gmpzs_set_ui
-#define mpz_setbit __gmpzs_setbit
-#define mpz_size __gmpzs_size
-#define mpz_sizeinbase __gmpzs_sizeinbase
-#define mpz_sqrt __gmpzs_sqrt
-#define mpz_sqrtrem __gmpzs_sqrtrem
-#define mpz_sub __gmpzs_sub
-#define mpz_sub_ui __gmpzs_sub_ui
-#define mpz_tdiv_q __gmpzs_tdiv_q
-#define mpz_tdiv_q_2exp __gmpzs_tdiv_q_2exp
-#define mpz_tdiv_q_ui __gmpzs_tdiv_q_ui
-#define mpz_tdiv_qr __gmpzs_tdiv_qr
-#define mpz_tdiv_qr_ui __gmpzs_tdiv_qr_ui
-#define mpz_tdiv_r __gmpzs_tdiv_r
-#define mpz_tdiv_r_2exp __gmpzs_tdiv_r_2exp
-#define mpz_tdiv_r_ui __gmpzs_tdiv_r_ui
-#define mpz_tstbit __gmpzs_tstbit
-#define mpz_ui_pow_ui __gmpzs_ui_pow_ui
-#define mpz_xor __gmpzs_xor
-#define mpz_eor __gmpzs_xor
-#else /* ! GMP_SMALL */
-#define _mpz_realloc __gmpzl_realloc
-#define mpz_realloc __gmpzl_realloc
-#define mpz_abs __gmpzl_abs
-#define mpz_add __gmpzl_add
-#define mpz_add_ui __gmpzl_add_ui
-#define mpz_addmul_ui __gmpzl_addmul_ui
-#define mpz_and __gmpzl_and
-#define mpz_array_init __gmpzl_array_init
-#define mpz_cdiv_q __gmpzl_cdiv_q
-#define mpz_cdiv_q_ui __gmpzl_cdiv_q_ui
-#define mpz_cdiv_qr __gmpzl_cdiv_qr
-#define mpz_cdiv_qr_ui __gmpzl_cdiv_qr_ui
-#define mpz_cdiv_r __gmpzl_cdiv_r
-#define mpz_cdiv_r_ui __gmpzl_cdiv_r_ui
-#define mpz_cdiv_ui __gmpzl_cdiv_ui
-#define mpz_clear __gmpzl_clear
-#define mpz_clrbit __gmpzl_clrbit
-#define mpz_cmp __gmpzl_cmp
-#define _mpz_cmp_si __gmpzl_cmp_si
-#define _mpz_cmp_ui __gmpzl_cmp_ui
-#define mpz_com __gmpzl_com
-#define mpz_divexact __gmpzl_divexact
-#define mpz_fac_ui __gmpzl_fac_ui
-#define mpz_fdiv_q __gmpzl_fdiv_q
-#define mpz_fdiv_q_2exp __gmpzl_fdiv_q_2exp
-#define mpz_fdiv_q_ui __gmpzl_fdiv_q_ui
-#define mpz_fdiv_qr __gmpzl_fdiv_qr
-#define mpz_fdiv_qr_ui __gmpzl_fdiv_qr_ui
-#define mpz_fdiv_r __gmpzl_fdiv_r
-#define mpz_fdiv_r_2exp __gmpzl_fdiv_r_2exp
-#define mpz_fdiv_r_ui __gmpzl_fdiv_r_ui
-#define mpz_fdiv_ui __gmpzl_fdiv_ui
-#define mpz_gcd __gmpzl_gcd
-#define mpz_gcd_ui __gmpzl_gcd_ui
-#define mpz_gcdext __gmpzl_gcdext
-#define mpz_get_d __gmpzl_get_d
-#define mpz_get_si __gmpzl_get_si
-#define mpz_get_str __gmpzl_get_str
-#define mpz_get_ui __gmpzl_get_ui
-#define mpz_getlimbn __gmpzl_getlimbn
-#define mpz_hamdist __gmpzl_hamdist
-#define mpz_init __gmpzl_init
-#define mpz_inp_binary __gmpzl_inp_binary
-#define mpz_inp_raw __gmpzl_inp_raw
-#define mpz_inp_str __gmpzl_inp_str
-#define mpz_init_set __gmpzl_init_set
-#define mpz_init_set_d __gmpzl_init_set_d
-#define mpz_init_set_si __gmpzl_init_set_si
-#define mpz_init_set_str __gmpzl_init_set_str
-#define mpz_init_set_ui __gmpzl_init_set_ui
-#define mpz_invert __gmpzl_invert
-#define mpz_ior __gmpzl_ior
-#define mpz_jacobi __gmpzl_jacobi
-#define mpz_lcm __gmpzl_lcm
-#define mpz_legendre __gmpzl_legendre
-#define mpz_mod __gmpzl_mod
-#define mpz_mul __gmpzl_mul
-#define mpz_mul_2exp __gmpzl_mul_2exp
-#define mpz_mul_ui __gmpzl_mul_ui
-#define mpz_neg __gmpzl_neg
-#define mpz_out_binary __gmpzl_out_binary
-#define mpz_out_raw __gmpzl_out_raw
-#define mpz_out_str __gmpzl_out_str
-#define mpz_perfect_square_p __gmpzl_perfect_square_p
-#define mpz_popcount __gmpzl_popcount
-#define mpz_pow_ui __gmpzl_pow_ui
-#define mpz_powm __gmpzl_powm
-#define mpz_powm_ui __gmpzl_powm_ui
-#define mpz_probab_prime_p __gmpzl_probab_prime_p
-#define mpz_random __gmpzl_random
-#define mpz_random2 __gmpzl_random2
-#define mpz_scan0 __gmpzl_scan0
-#define mpz_scan1 __gmpzl_scan1
-#define mpz_set __gmpzl_set
-#define mpz_set_d __gmpzl_set_d
-#define mpz_set_f __gmpzl_set_f
-#define mpz_set_q __gmpzl_set_q
-#define mpz_set_si __gmpzl_set_si
-#define mpz_set_str __gmpzl_set_str
-#define mpz_set_ui __gmpzl_set_ui
-#define mpz_setbit __gmpzl_setbit
-#define mpz_size __gmpzl_size
-#define mpz_sizeinbase __gmpzl_sizeinbase
-#define mpz_sqrt __gmpzl_sqrt
-#define mpz_sqrtrem __gmpzl_sqrtrem
-#define mpz_sub __gmpzl_sub
-#define mpz_sub_ui __gmpzl_sub_ui
-#define mpz_tdiv_q __gmpzl_tdiv_q
-#define mpz_tdiv_q_2exp __gmpzl_tdiv_q_2exp
-#define mpz_tdiv_q_ui __gmpzl_tdiv_q_ui
-#define mpz_tdiv_qr __gmpzl_tdiv_qr
-#define mpz_tdiv_qr_ui __gmpzl_tdiv_qr_ui
-#define mpz_tdiv_r __gmpzl_tdiv_r
-#define mpz_tdiv_r_2exp __gmpzl_tdiv_r_2exp
-#define mpz_tdiv_r_ui __gmpzl_tdiv_r_ui
-#define mpz_tstbit __gmpzl_tstbit
-#define mpz_ui_pow_ui __gmpzl_ui_pow_ui
-#define mpz_xor __gmpzl_xor
-#define mpz_eor __gmpzl_xor
-#endif /* GMP_SMALL */
+#define _mpz_realloc __gmpz_realloc
+#define mpz_realloc __gmpz_realloc
+#define mpz_abs __gmpz_abs
+#define mpz_add __gmpz_add
+#define mpz_add_ui __gmpz_add_ui
+#define mpz_addmul_ui __gmpz_addmul_ui
+#define mpz_and __gmpz_and
+#define mpz_array_init __gmpz_array_init
+#define mpz_bin_ui __gmpz_bin_ui
+#define mpz_bin_uiui __gmpz_bin_uiui
+#define mpz_cdiv_q __gmpz_cdiv_q
+#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui
+#define mpz_cdiv_qr __gmpz_cdiv_qr
+#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui
+#define mpz_cdiv_r __gmpz_cdiv_r
+#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui
+#define mpz_cdiv_ui __gmpz_cdiv_ui
+#define mpz_clear __gmpz_clear
+#define mpz_clrbit __gmpz_clrbit
+#define mpz_cmp __gmpz_cmp
+#define _mpz_cmp_si __gmpz_cmp_si
+#define _mpz_cmp_ui __gmpz_cmp_ui
+#define mpz_cmp_abs __gmpz_cmp_abs
+#define mpz_cmp_abs_ui __gmpz_cmp_abs_ui
+#define mpz_com __gmpz_com
+#define mpz_divexact __gmpz_divexact
+#define mpz_fac_ui __gmpz_fac_ui
+#define mpz_fdiv_q __gmpz_fdiv_q
+#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp
+#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui
+#define mpz_fdiv_qr __gmpz_fdiv_qr
+#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui
+#define mpz_fdiv_r __gmpz_fdiv_r
+#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp
+#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui
+#define mpz_fdiv_ui __gmpz_fdiv_ui
+#define mpz_fib_ui __gmpz_fib_ui
+#define mpz_gcd __gmpz_gcd
+#define mpz_gcd_ui __gmpz_gcd_ui
+#define mpz_gcdext __gmpz_gcdext
+#define mpz_get_d __gmpz_get_d
+#define mpz_get_si __gmpz_get_si
+#define mpz_get_str __gmpz_get_str
+#define mpz_get_ui __gmpz_get_ui
+#define mpz_getlimbn __gmpz_getlimbn
+#define mpz_hamdist __gmpz_hamdist
+#define mpz_init __gmpz_init
+#define mpz_inp_binary __gmpz_inp_binary
+#define mpz_inp_raw __gmpz_inp_raw
+#define mpz_inp_str __gmpz_inp_str
+#define mpz_init_set __gmpz_init_set
+#define mpz_init_set_d __gmpz_init_set_d
+#define mpz_init_set_si __gmpz_init_set_si
+#define mpz_init_set_str __gmpz_init_set_str
+#define mpz_init_set_ui __gmpz_init_set_ui
+#define mpz_invert __gmpz_invert
+#define mpz_ior __gmpz_ior
+#define mpz_jacobi __gmpz_jacobi
+#define mpz_lcm __gmpz_lcm
+#define mpz_legendre __gmpz_legendre
+#define mpz_mod __gmpz_mod
+#define mpz_mul __gmpz_mul
+#define mpz_mul_2exp __gmpz_mul_2exp
+#define mpz_mul_ui __gmpz_mul_ui
+#define mpz_neg __gmpz_neg
+#define mpz_out_binary __gmpz_out_binary
+#define mpz_out_raw __gmpz_out_raw
+#define mpz_out_str __gmpz_out_str
+#define mpz_perfect_power_p __gmpz_perfect_power_p
+#define mpz_perfect_square_p __gmpz_perfect_square_p
+#define mpz_popcount __gmpz_popcount
+#define mpz_pow_ui __gmpz_pow_ui
+#define mpz_powm __gmpz_powm
+#define mpz_powm_ui __gmpz_powm_ui
+#define mpz_probab_prime_p __gmpz_probab_prime_p
+#define mpz_random __gmpz_random
+#define mpz_random2 __gmpz_random2
+#define mpz_remove __gmpz_remove
+#define mpz_root __gmpz_root
+#define mpz_scan0 __gmpz_scan0
+#define mpz_scan1 __gmpz_scan1
+#define mpz_set __gmpz_set
+#define mpz_set_d __gmpz_set_d
+#define mpz_set_f __gmpz_set_f
+#define mpz_set_q __gmpz_set_q
+#define mpz_set_si __gmpz_set_si
+#define mpz_set_str __gmpz_set_str
+#define mpz_set_ui __gmpz_set_ui
+#define mpz_setbit __gmpz_setbit
+#define mpz_size __gmpz_size
+#define mpz_sizeinbase __gmpz_sizeinbase
+#define mpz_sqrt __gmpz_sqrt
+#define mpz_sqrtrem __gmpz_sqrtrem
+#define mpz_sub __gmpz_sub
+#define mpz_sub_ui __gmpz_sub_ui
+#define mpz_swap __gmpz_swap
+#define mpz_tdiv_ui __gmpz_tdiv_ui
+#define mpz_tdiv_q __gmpz_tdiv_q
+#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp
+#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui
+#define mpz_tdiv_qr __gmpz_tdiv_qr
+#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui
+#define mpz_tdiv_r __gmpz_tdiv_r
+#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp
+#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui
+#define mpz_tstbit __gmpz_tstbit
+#define mpz_ui_pow_ui __gmpz_ui_pow_ui
+#define mpz_xor __gmpz_xor
+#define mpz_eor __gmpz_xor
#if defined (__cplusplus)
extern "C" {
@@ -388,6 +277,8 @@ void mpz_add_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
void mpz_addmul_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
void mpz_and _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
void mpz_array_init _PROTO ((mpz_ptr, mp_size_t, mp_size_t));
+void mpz_bin_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
+void mpz_bin_uiui _PROTO ((mpz_ptr, unsigned long int, unsigned long int));
void mpz_cdiv_q _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
unsigned long int mpz_cdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
void mpz_cdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
@@ -400,6 +291,8 @@ void mpz_clrbit _PROTO ((mpz_ptr, unsigned long int));
int mpz_cmp _PROTO ((mpz_srcptr, mpz_srcptr));
int _mpz_cmp_si _PROTO ((mpz_srcptr, signed long int));
int _mpz_cmp_ui _PROTO ((mpz_srcptr, unsigned long int));
+int mpz_cmp_abs _PROTO ((mpz_srcptr, mpz_srcptr));
+int mpz_cmp_abs_ui _PROTO ((mpz_srcptr, unsigned long int));
void mpz_com _PROTO ((mpz_ptr, mpz_srcptr));
void mpz_divexact _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
void mpz_fac_ui _PROTO ((mpz_ptr, unsigned long int));
@@ -412,6 +305,7 @@ void mpz_fdiv_r _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
void mpz_fdiv_r_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
unsigned long int mpz_fdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
unsigned long int mpz_fdiv_ui _PROTO ((mpz_srcptr, unsigned long int));
+void mpz_fib_ui _PROTO ((mpz_ptr, unsigned long int));
void mpz_gcd _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
unsigned long int mpz_gcd_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
void mpz_gcdext _PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
@@ -447,6 +341,7 @@ size_t mpz_out_binary _PROTO ((FILE *, mpz_srcptr));
size_t mpz_out_raw _PROTO ((FILE *, mpz_srcptr));
size_t mpz_out_str _PROTO ((FILE *, int, mpz_srcptr));
#endif
+int mpz_perfect_power_p _PROTO ((mpz_srcptr));
int mpz_perfect_square_p _PROTO ((mpz_srcptr));
unsigned long int mpz_popcount _PROTO ((mpz_srcptr));
void mpz_pow_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
@@ -455,6 +350,8 @@ void mpz_powm_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr));
int mpz_probab_prime_p _PROTO ((mpz_srcptr, int));
void mpz_random _PROTO ((mpz_ptr, mp_size_t));
void mpz_random2 _PROTO ((mpz_ptr, mp_size_t));
+unsigned long int mpz_remove (mpz_ptr, mpz_srcptr, mpz_srcptr);
+int mpz_root (mpz_ptr, mpz_srcptr, unsigned long int);
unsigned long int mpz_scan0 _PROTO ((mpz_srcptr, unsigned long int));
unsigned long int mpz_scan1 _PROTO ((mpz_srcptr, unsigned long int));
void mpz_set _PROTO ((mpz_ptr, mpz_srcptr));
@@ -471,14 +368,16 @@ void mpz_sqrt _PROTO ((mpz_ptr, mpz_srcptr));
void mpz_sqrtrem _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr));
void mpz_sub _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
void mpz_sub_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
+void mpz_swap _PROTO ((mpz_ptr, mpz_ptr));
void mpz_tdiv_q _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
void mpz_tdiv_q_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_tdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
+unsigned long int mpz_tdiv_ui _PROTO ((mpz_srcptr, unsigned long int));
+unsigned long int mpz_tdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
void mpz_tdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_tdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
+unsigned long int mpz_tdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
void mpz_tdiv_r _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
void mpz_tdiv_r_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_tdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
+unsigned long int mpz_tdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
int mpz_tstbit _PROTO ((mpz_srcptr, unsigned long int));
void mpz_ui_pow_ui _PROTO ((mpz_ptr, unsigned long int, unsigned long int));
void mpz_xor _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
@@ -488,51 +387,27 @@ void mpz_xor _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
/**************** Rational (i.e. Q) routines. ****************/
-#if GMP_SMALL
-#define mpq_init __gmpqs_init
-#define mpq_clear __gmpqs_clear
-#define mpq_set __gmpqs_set
-#define mpq_set_ui __gmpqs_set_ui
-#define mpq_set_si __gmpqs_set_si
-#define mpq_set_z __gmpqs_set_z
-#define mpq_add __gmpqs_add
-#define mpq_sub __gmpqs_sub
-#define mpq_mul __gmpqs_mul
-#define mpq_div __gmpqs_div
-#define mpq_neg __gmpqs_neg
-#define mpq_cmp __gmpqs_cmp
-#define _mpq_cmp_ui __gmpqs_cmp_ui
-#define mpq_equal __gmpqs_equal
-#define mpq_inv __gmpqs_inv
-#define mpq_set_num __gmpqs_set_num
-#define mpq_set_den __gmpqs_set_den
-#define mpq_get_num __gmpqs_get_num
-#define mpq_get_den __gmpqs_get_den
-#define mpq_get_d __gmpqs_get_d
-#define mpq_canonicalize __gmpqs_canonicalize
-#else /* ! GMP_SMALL */
-#define mpq_init __gmpql_init
-#define mpq_clear __gmpql_clear
-#define mpq_set __gmpql_set
-#define mpq_set_ui __gmpql_set_ui
-#define mpq_set_si __gmpql_set_si
-#define mpq_set_z __gmpql_set_z
-#define mpq_add __gmpql_add
-#define mpq_sub __gmpql_sub
-#define mpq_mul __gmpql_mul
-#define mpq_div __gmpql_div
-#define mpq_neg __gmpql_neg
-#define mpq_cmp __gmpql_cmp
-#define _mpq_cmp_ui __gmpql_cmp_ui
-#define mpq_equal __gmpql_equal
-#define mpq_inv __gmpql_inv
-#define mpq_set_num __gmpql_set_num
-#define mpq_set_den __gmpql_set_den
-#define mpq_get_num __gmpql_get_num
-#define mpq_get_den __gmpql_get_den
-#define mpq_get_d __gmpql_get_d
-#define mpq_canonicalize __gmpql_canonicalize
-#endif /* GMP_SMALL */
+#define mpq_init __gmpq_init
+#define mpq_clear __gmpq_clear
+#define mpq_set __gmpq_set
+#define mpq_set_ui __gmpq_set_ui
+#define mpq_set_si __gmpq_set_si
+#define mpq_set_z __gmpq_set_z
+#define mpq_add __gmpq_add
+#define mpq_sub __gmpq_sub
+#define mpq_mul __gmpq_mul
+#define mpq_div __gmpq_div
+#define mpq_neg __gmpq_neg
+#define mpq_cmp __gmpq_cmp
+#define _mpq_cmp_ui __gmpq_cmp_ui
+#define mpq_equal __gmpq_equal
+#define mpq_inv __gmpq_inv
+#define mpq_set_num __gmpq_set_num
+#define mpq_set_den __gmpq_set_den
+#define mpq_get_num __gmpq_get_num
+#define mpq_get_den __gmpq_get_den
+#define mpq_get_d __gmpq_get_d
+#define mpq_canonicalize __gmpq_canonicalize
#if defined (__cplusplus)
extern "C" {
@@ -564,103 +439,56 @@ void mpq_canonicalize _PROTO ((mpq_ptr));
/**************** Float (i.e. F) routines. ****************/
-#if GMP_SMALL
-#define mpf_abs __gmpfs_abs
-#define mpf_add __gmpfs_add
-#define mpf_add_ui __gmpfs_add_ui
-#define mpf_clear __gmpfs_clear
-#define mpf_cmp __gmpfs_cmp
-#define mpf_cmp_si __gmpfs_cmp_si
-#define mpf_cmp_ui __gmpfs_cmp_ui
-#define mpf_div __gmpfs_div
-#define mpf_div_2exp __gmpfs_div_2exp
-#define mpf_div_ui __gmpfs_div_ui
-#define mpf_dump __gmpfs_dump
-#define mpf_eq __gmpfs_eq
-#define mpf_get_d __gmpfs_get_d
-#define mpf_get_prec __gmpfs_get_prec
-#define mpf_get_str __gmpfs_get_str
-#define mpf_init __gmpfs_init
-#define mpf_init2 __gmpfs_init2
-#define mpf_inp_str __gmpfs_inp_str
-#define mpf_init_set __gmpfs_init_set
-#define mpf_init_set_d __gmpfs_init_set_d
-#define mpf_init_set_si __gmpfs_init_set_si
-#define mpf_init_set_str __gmpfs_init_set_str
-#define mpf_init_set_ui __gmpfs_init_set_ui
-#define mpf_mul __gmpfs_mul
-#define mpf_mul_2exp __gmpfs_mul_2exp
-#define mpf_mul_ui __gmpfs_mul_ui
-#define mpf_neg __gmpfs_neg
-#define mpf_out_str __gmpfs_out_str
-#define mpf_random2 __gmpfs_random2
-#define mpf_reldiff __gmpfs_reldiff
-#define mpf_set __gmpfs_set
-#define mpf_set_d __gmpfs_set_d
-#define mpf_set_default_prec __gmpfs_set_default_prec
-#define mpf_set_prec __gmpfs_set_prec
-#define mpf_set_prec_raw __gmpfs_set_prec_raw
-#define mpf_set_q __gmpfs_set_q
-#define mpf_set_si __gmpfs_set_si
-#define mpf_set_str __gmpfs_set_str
-#define mpf_set_ui __gmpfs_set_ui
-#define mpf_set_z __gmpfs_set_z
-#define mpf_size __gmpfs_size
-#define mpf_sqrt __gmpfs_sqrt
-#define mpf_sqrt_ui __gmpfs_sqrt_ui
-#define mpf_sub __gmpfs_sub
-#define mpf_sub_ui __gmpfs_sub_ui
-#define mpf_ui_div __gmpfs_ui_div
-#define mpf_ui_sub __gmpfs_ui_sub
-#else /* ! GMP_SMALL */
-#define mpf_abs __gmpfl_abs
-#define mpf_add __gmpfl_add
-#define mpf_add_ui __gmpfl_add_ui
-#define mpf_clear __gmpfl_clear
-#define mpf_cmp __gmpfl_cmp
-#define mpf_cmp_si __gmpfl_cmp_si
-#define mpf_cmp_ui __gmpfl_cmp_ui
-#define mpf_div __gmpfl_div
-#define mpf_div_2exp __gmpfl_div_2exp
-#define mpf_div_ui __gmpfl_div_ui
-#define mpf_dump __gmpfl_dump
-#define mpf_eq __gmpfl_eq
-#define mpf_get_d __gmpfl_get_d
-#define mpf_get_prec __gmpfl_get_prec
-#define mpf_get_str __gmpfl_get_str
-#define mpf_init __gmpfl_init
-#define mpf_init2 __gmpfl_init2
-#define mpf_inp_str __gmpfl_inp_str
-#define mpf_init_set __gmpfl_init_set
-#define mpf_init_set_d __gmpfl_init_set_d
-#define mpf_init_set_si __gmpfl_init_set_si
-#define mpf_init_set_str __gmpfl_init_set_str
-#define mpf_init_set_ui __gmpfl_init_set_ui
-#define mpf_mul __gmpfl_mul
-#define mpf_mul_2exp __gmpfl_mul_2exp
-#define mpf_mul_ui __gmpfl_mul_ui
-#define mpf_neg __gmpfl_neg
-#define mpf_out_str __gmpfl_out_str
-#define mpf_random2 __gmpfl_random2
-#define mpf_reldiff __gmpfl_reldiff
-#define mpf_set __gmpfl_set
-#define mpf_set_d __gmpfl_set_d
-#define mpf_set_default_prec __gmpfl_set_default_prec
-#define mpf_set_prec __gmpfl_set_prec
-#define mpf_set_prec_raw __gmpfl_set_prec_raw
-#define mpf_set_q __gmpfl_set_q
-#define mpf_set_si __gmpfl_set_si
-#define mpf_set_str __gmpfl_set_str
-#define mpf_set_ui __gmpfl_set_ui
-#define mpf_set_z __gmpfl_set_z
-#define mpf_size __gmpfl_size
-#define mpf_sqrt __gmpfl_sqrt
-#define mpf_sqrt_ui __gmpfl_sqrt_ui
-#define mpf_sub __gmpfl_sub
-#define mpf_sub_ui __gmpfl_sub_ui
-#define mpf_ui_div __gmpfl_ui_div
-#define mpf_ui_sub __gmpfl_ui_sub
-#endif /* GMP_SMALL */
+#define mpf_abs __gmpf_abs
+#define mpf_add __gmpf_add
+#define mpf_add_ui __gmpf_add_ui
+#define mpf_ceil __gmpf_ceil
+#define mpf_clear __gmpf_clear
+#define mpf_cmp __gmpf_cmp
+#define mpf_cmp_si __gmpf_cmp_si
+#define mpf_cmp_ui __gmpf_cmp_ui
+#define mpf_div __gmpf_div
+#define mpf_div_2exp __gmpf_div_2exp
+#define mpf_div_ui __gmpf_div_ui
+#define mpf_dump __gmpf_dump
+#define mpf_floor __gmpf_floor
+#define mpf_eq __gmpf_eq
+#define mpf_get_d __gmpf_get_d
+#define mpf_get_prec __gmpf_get_prec
+#define mpf_get_str __gmpf_get_str
+#define mpf_init __gmpf_init
+#define mpf_init2 __gmpf_init2
+#define mpf_inp_str __gmpf_inp_str
+#define mpf_init_set __gmpf_init_set
+#define mpf_init_set_d __gmpf_init_set_d
+#define mpf_init_set_si __gmpf_init_set_si
+#define mpf_init_set_str __gmpf_init_set_str
+#define mpf_init_set_ui __gmpf_init_set_ui
+#define mpf_mul __gmpf_mul
+#define mpf_mul_2exp __gmpf_mul_2exp
+#define mpf_mul_ui __gmpf_mul_ui
+#define mpf_neg __gmpf_neg
+#define mpf_out_str __gmpf_out_str
+#define mpf_random2 __gmpf_random2
+#define mpf_reldiff __gmpf_reldiff
+#define mpf_set __gmpf_set
+#define mpf_set_d __gmpf_set_d
+#define mpf_set_default_prec __gmpf_set_default_prec
+#define mpf_set_prec __gmpf_set_prec
+#define mpf_set_prec_raw __gmpf_set_prec_raw
+#define mpf_set_q __gmpf_set_q
+#define mpf_set_si __gmpf_set_si
+#define mpf_set_str __gmpf_set_str
+#define mpf_set_ui __gmpf_set_ui
+#define mpf_set_z __gmpf_set_z
+#define mpf_size __gmpf_size
+#define mpf_sqrt __gmpf_sqrt
+#define mpf_sqrt_ui __gmpf_sqrt_ui
+#define mpf_sub __gmpf_sub
+#define mpf_sub_ui __gmpf_sub_ui
+#define mpf_trunc __gmpf_trunc
+#define mpf_ui_div __gmpf_ui_div
+#define mpf_ui_sub __gmpf_ui_sub
#if defined (__cplusplus)
extern "C" {
@@ -668,6 +496,7 @@ extern "C" {
void mpf_abs _PROTO ((mpf_ptr, mpf_srcptr));
void mpf_add _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
void mpf_add_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
+void mpf_ceil _PROTO ((mpf_ptr, mpf_srcptr));
void mpf_clear _PROTO ((mpf_ptr));
int mpf_cmp _PROTO ((mpf_srcptr, mpf_srcptr));
int mpf_cmp_si _PROTO ((mpf_srcptr, signed long int));
@@ -677,6 +506,7 @@ void mpf_div_2exp _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
void mpf_div_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
void mpf_dump _PROTO ((mpf_srcptr));
int mpf_eq _PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int));
+void mpf_floor _PROTO ((mpf_ptr, mpf_srcptr));
double mpf_get_d _PROTO ((mpf_srcptr));
unsigned long int mpf_get_prec _PROTO ((mpf_srcptr));
char *mpf_get_str _PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr));
@@ -714,6 +544,7 @@ void mpf_sqrt _PROTO ((mpf_ptr, mpf_srcptr));
void mpf_sqrt_ui _PROTO ((mpf_ptr, unsigned long int));
void mpf_sub _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
void mpf_sub_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
+void mpf_trunc _PROTO ((mpf_ptr, mpf_srcptr));
void mpf_ui_div _PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));
void mpf_ui_sub _PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));
#if defined (__cplusplus)
@@ -986,10 +817,11 @@ mpn_divrem (_gmp_qp, _gmp_qn, _gmp_np, _gmp_nn, _gmp_dp, _gmp_dn)
#define mpz_cmp_ui(Z,UI) \
(__builtin_constant_p (UI) && (UI) == 0 \
? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI))
-#define mpz_cmp_si(Z,UI) \
- (__builtin_constant_p (UI) && (UI) == 0 ? mpz_sgn (Z) \
- : __builtin_constant_p (UI) && (UI) > 0 ? _mpz_cmp_ui (Z,UI) \
- : _mpz_cmp_si (Z,UI))
+#define mpz_cmp_si(Z,SI) \
+ (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z) \
+ : __builtin_constant_p (SI) && (SI) > 0 \
+ ? _mpz_cmp_ui (Z, (unsigned long int) SI) \
+ : _mpz_cmp_si (Z,SI))
#define mpq_cmp_ui(Q,NUI,DUI) \
(__builtin_constant_p (NUI) && (NUI) == 0 \
? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI))
@@ -1028,6 +860,7 @@ mpn_divrem (_gmp_qp, _gmp_qn, _gmp_np, _gmp_nn, _gmp_dp, _gmp_dn)
#define mpz_mod_2exp mpz_fdiv_r_2exp
#define __GNU_MP_VERSION 2
-#define __GNU_MP_VERSION_MINOR 0
+#define __GNU_MP_VERSION_MINOR 1
+#define __GNU_MP_VERSION_PATCHLEVEL (-91)
#define __GMP_H__
#endif /* __GMP_H__ */