[PATCH 04/20] Make proper use of <gmp-rename.h>

Richard Henderson rth at twiddle.net
Mon Mar 4 19:41:34 CET 2013


This lets us delete all of the defines cluttering the
human maintained source.

Note that __MPN gets to move to the implementation, and we had
a redundant definition of mpn_sqr.
---
 gmp-h.in   | 413 ++++++-------------------------------------------------------
 gmp-impl.h |   7 +-
 2 files changed, 45 insertions(+), 375 deletions(-)

diff --git a/gmp-h.in b/gmp-h.in
index 7e14b23..33a5d63 100644
--- a/gmp-h.in
+++ b/gmp-h.in
@@ -255,17 +255,23 @@ typedef __mpq_struct *mpq_ptr;
   __GMP_DECLSPEC TYPE API_NAME ARGS NT ATTRS
 #endif
 
-#define __GMP_PUBLIC_NT_A(TYPE, API_NAME, ARGS, ATTRS) \
-  __GMP_PUBLIC_FULL(TYPE, API_NAME, ARGS, __GMP_NOTHROW, ATTRS, API_NAME)
-#define __GMP_PUBLIC_A(TYPE, API_NAME, ARGS, ATTRS) \
-  __GMP_PUBLIC_FULL(TYPE, API_NAME, ARGS, , ATTRS, API_NAME)
-#define __GMP_PUBLIC_NT(TYPE, API_NAME, ARGS) \
-  __GMP_PUBLIC_FULL(TYPE, API_NAME, ARGS, __GMP_NOTHROW, , API_NAME)
-#define __GMP_PUBLIC(TYPE, API_NAME, ARGS) \
-  __GMP_PUBLIC_FULL(TYPE, API_NAME, ARGS, , , API_NAME)
-   
-#define __GMP_PUBLIC_DATA(TYPE, API_NAME) \
-  __GMP_DECLSPEC extern TYPE API_NAME
+#define __GMP_GLU1(X, Y)  X ## Y
+#define __GMP_GLUE(X, Y)  __GMP_GLU1(X, Y)
+
+#define __GMP_PUBLIC_NT_A(TYPE, API_NAME, ARGS, ATTRS)			\
+  __GMP_PUBLIC_FULL(TYPE, API_NAME, ARGS, __GMP_NOTHROW, ATTRS,		\
+		    __GMP_GLUE(__GMP_ABI_PREFIX, API_NAME))
+#define __GMP_PUBLIC_A(TYPE, API_NAME, ARGS, ATTRS)			\
+  __GMP_PUBLIC_FULL(TYPE, API_NAME, ARGS, , ATTRS,			\
+		    __GMP_GLUE(__GMP_ABI_PREFIX, API_NAME))
+#define __GMP_PUBLIC_NT(TYPE, API_NAME, ARGS)				\
+  __GMP_PUBLIC_NT_A(TYPE, API_NAME, ARGS, )
+#define __GMP_PUBLIC(TYPE, API_NAME, ARGS)				\
+  __GMP_PUBLIC_A(TYPE, API_NAME, ARGS, )
+
+#define __GMP_PUBLIC_DATA(TYPE, API_NAME)				\
+  __GMP_PUBLIC_FULL(extern TYPE, API_NAME, , , ,			\
+		    __GMP_GLUE(__GMP_ABI_PREFIX, API_NAME))
 
 /* When using GCC, we'll adjust the API symbol to point to the ABI symbol
    automatically.  Otherwise, we'll have generated and installed a set of
@@ -274,10 +280,6 @@ typedef __mpq_struct *mpq_ptr;
 # include <gmp-rename.h>
 #endif
 
-#ifndef __MPN
-#define __MPN(x) __gmpn_##x
-#endif
-
 /* For reference, "defined(EOF)" cannot be used here.  In g++ 2.95.4,
    <iostream> defines EOF but not FILE.  */
 #if defined (FILE)                                              \
@@ -507,120 +509,100 @@ extern "C" {
 using std::FILE;
 #endif
 
-#define mp_set_memory_functions __gmp_set_memory_functions
+/* For the following symbols we want mp_* -> __gmp_*.  */
+#undef __GMP_ABI_PREFIX
+#define __GMP_ABI_PREFIX  __g
+
 __GMP_PUBLIC_NT (void, mp_set_memory_functions,
 		 (void *(*) (size_t),
 		  void *(*) (void *, size_t, size_t),
 		  void (*) (void *, size_t)));
 
-#define mp_get_memory_functions __gmp_get_memory_functions
 __GMP_PUBLIC_NT (void, mp_get_memory_functions,
 		 (void *(**) (size_t),
 		  void *(**) (void *, size_t, size_t),
 		  void (**) (void *, size_t)));
 
-#define mp_bits_per_limb __gmp_bits_per_limb
 __GMP_PUBLIC_DATA (const int, mp_bits_per_limb);
 
-#define gmp_errno __gmp_errno
+/* For the following symbols we want gmp_* -> __gmp_*.  */
+#undef __GMP_ABI_PREFIX
+#define __GMP_ABI_PREFIX  __
+
 __GMP_PUBLIC_DATA (int, gmp_errno);
 
-#define gmp_version __gmp_version
 __GMP_PUBLIC_DATA (const char * const, gmp_version);
 
 
 /**************** Random number routines.  ****************/
 
 /* obsolete */
-#define gmp_randinit __gmp_randinit
 __GMP_PUBLIC (void, gmp_randinit, (gmp_randstate_t, gmp_randalg_t, ...));
 
-#define gmp_randinit_default __gmp_randinit_default
 __GMP_PUBLIC (void, gmp_randinit_default, (gmp_randstate_t));
 
-#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp
 __GMP_PUBLIC (void, gmp_randinit_lc_2exp,
 	      (gmp_randstate_t, mpz_srcptr, unsigned long int, mp_bitcnt_t));
 
-#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size
 __GMP_PUBLIC (int, gmp_randinit_lc_2exp_size, (gmp_randstate_t, mp_bitcnt_t));
 
-#define gmp_randinit_mt __gmp_randinit_mt
 __GMP_PUBLIC (void, gmp_randinit_mt, (gmp_randstate_t));
 
-#define gmp_randinit_set __gmp_randinit_set
 __GMP_PUBLIC (void, gmp_randinit_set,
 	      (gmp_randstate_t, const __gmp_randstate_struct *));
 
-#define gmp_randseed __gmp_randseed
 __GMP_PUBLIC (void, gmp_randseed, (gmp_randstate_t, mpz_srcptr));
 
-#define gmp_randseed_ui __gmp_randseed_ui
 __GMP_PUBLIC (void, gmp_randseed_ui, (gmp_randstate_t, unsigned long int));
 
-#define gmp_randclear __gmp_randclear
 __GMP_PUBLIC (void, gmp_randclear, (gmp_randstate_t));
 
-#define gmp_urandomb_ui __gmp_urandomb_ui
 __GMP_PUBLIC (unsigned long, gmp_urandomb_ui,
 	      (gmp_randstate_t, unsigned long));
 
-#define gmp_urandomm_ui __gmp_urandomm_ui
 __GMP_PUBLIC (unsigned long, gmp_urandomm_ui,
 	      (gmp_randstate_t, unsigned long));
 
 
 /**************** Formatted output routines.  ****************/
 
-#define gmp_asprintf __gmp_asprintf
 __GMP_PUBLIC (int, gmp_asprintf, (char **, const char *, ...));
 
-#define gmp_fprintf __gmp_fprintf
 #ifdef _GMP_H_HAVE_FILE
 __GMP_PUBLIC (int, gmp_fprintf, (FILE *, const char *, ...));
 #endif
 
-#define gmp_obstack_printf __gmp_obstack_printf
 #if defined (_GMP_H_HAVE_OBSTACK)
 __GMP_PUBLIC (int, gmp_obstack_printf, (struct obstack *, const char *, ...));
 #endif
 
-#define gmp_obstack_vprintf __gmp_obstack_vprintf
 #if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST)
 __GMP_PUBLIC (int, gmp_obstack_vprintf,
 	      (struct obstack *, const char *, va_list));
 #endif
 
-#define gmp_printf __gmp_printf
 __GMP_PUBLIC (int, gmp_printf, (const char *, ...));
 
-#define gmp_snprintf __gmp_snprintf
 __GMP_PUBLIC (int, gmp_snprintf, (char *, size_t, const char *, ...));
 
-#define gmp_sprintf __gmp_sprintf
 __GMP_PUBLIC (int, gmp_sprintf, (char *, const char *, ...));
 
-#define gmp_vasprintf __gmp_vasprintf
 #if defined (_GMP_H_HAVE_VA_LIST)
 __GMP_PUBLIC (int, gmp_vasprintf, (char **, const char *, va_list));
 #endif
 
-#define gmp_vfprintf __gmp_vfprintf
 #if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
 __GMP_PUBLIC (int, gmp_vfprintf, (FILE *, const char *, va_list));
 #endif
 
-#define gmp_vprintf __gmp_vprintf
 #if defined (_GMP_H_HAVE_VA_LIST)
 __GMP_PUBLIC (int, gmp_vprintf, (const char *, va_list));
 #endif
 
-#define gmp_vsnprintf __gmp_vsnprintf
 #if defined (_GMP_H_HAVE_VA_LIST)
 __GMP_PUBLIC (int, gmp_vsnprintf, (char *, size_t, const char *, va_list));
 #endif
 
-#define gmp_vsprintf __gmp_vsprintf
 #if defined (_GMP_H_HAVE_VA_LIST)
 __GMP_PUBLIC (int, gmp_vsprintf, (char *, const char *, va_list));
 #endif
@@ -628,28 +610,22 @@ __GMP_PUBLIC (int, gmp_vsprintf, (char *, const char *, va_list));
 
 /**************** Formatted input routines.  ****************/
 
-#define gmp_fscanf __gmp_fscanf
 #ifdef _GMP_H_HAVE_FILE
 __GMP_PUBLIC (int, gmp_fscanf, (FILE *, const char *, ...));
 #endif
 
-#define gmp_scanf __gmp_scanf
 __GMP_PUBLIC (int, gmp_scanf, (const char *, ...));
 
-#define gmp_sscanf __gmp_sscanf
 __GMP_PUBLIC (int, gmp_sscanf, (const char *, const char *, ...));
 
-#define gmp_vfscanf __gmp_vfscanf
 #if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
 __GMP_PUBLIC (int, gmp_vfscanf, (FILE *, const char *, va_list));
 #endif
 
-#define gmp_vscanf __gmp_vscanf
 #if defined (_GMP_H_HAVE_VA_LIST)
 __GMP_PUBLIC (int, gmp_vscanf, (const char *, va_list));
 #endif
 
-#define gmp_vsscanf __gmp_vsscanf
 #if defined (_GMP_H_HAVE_VA_LIST)
 __GMP_PUBLIC (int, gmp_vsscanf, (const char *, const char *, va_list));
 #endif
@@ -657,929 +633,669 @@ __GMP_PUBLIC (int, gmp_vsscanf, (const char *, const char *, va_list));
 
 /**************** Integer (i.e. Z) routines.  ****************/
 
-#define _mpz_realloc __gmpz_realloc
+/* For all following symbols we want mp?_* -> __gmp?_*.  */
+#undef __GMP_ABI_PREFIX
+#define __GMP_ABI_PREFIX  __g
+
 #define mpz_realloc __gmpz_realloc
-__GMP_PUBLIC (void *, _mpz_realloc, (mpz_ptr, mp_size_t));
+__GMP_PUBLIC_FULL (void *, _mpz_realloc, (mpz_ptr, mp_size_t),
+		   /* no nothrow */, /* no attrs */, __gmpz_realloc);
 
-#define mpz_abs __gmpz_abs
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs)
 __GMP_PUBLIC (void, mpz_abs, (mpz_ptr, mpz_srcptr));
 #endif
 
-#define mpz_add __gmpz_add
 __GMP_PUBLIC (void, mpz_add, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_add_ui __gmpz_add_ui
 __GMP_PUBLIC (void, mpz_add_ui, (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_addmul __gmpz_addmul
 __GMP_PUBLIC (void, mpz_addmul, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_addmul_ui __gmpz_addmul_ui
 __GMP_PUBLIC (void, mpz_addmul_ui, (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_and __gmpz_and
 __GMP_PUBLIC (void, mpz_and, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_array_init __gmpz_array_init
 __GMP_PUBLIC (void, mpz_array_init, (mpz_ptr, mp_size_t, mp_size_t));
 
-#define mpz_bin_ui __gmpz_bin_ui
 __GMP_PUBLIC (void, mpz_bin_ui, (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_bin_uiui __gmpz_bin_uiui
 __GMP_PUBLIC (void, mpz_bin_uiui,
 	      (mpz_ptr, unsigned long int, unsigned long int));
 
-#define mpz_cdiv_q __gmpz_cdiv_q
 __GMP_PUBLIC (void, mpz_cdiv_q, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp
 __GMP_PUBLIC (void, mpz_cdiv_q_2exp, (mpz_ptr, mpz_srcptr, mp_bitcnt_t));
 
-#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui
 __GMP_PUBLIC (unsigned long int, mpz_cdiv_q_ui,
 	      (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_cdiv_qr __gmpz_cdiv_qr
 __GMP_PUBLIC (void, mpz_cdiv_qr, (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui
 __GMP_PUBLIC (unsigned long int, mpz_cdiv_qr_ui,
 	      (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_cdiv_r __gmpz_cdiv_r
 __GMP_PUBLIC (void, mpz_cdiv_r, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp
 __GMP_PUBLIC (void, mpz_cdiv_r_2exp, (mpz_ptr, mpz_srcptr, mp_bitcnt_t));
 
-#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui
 __GMP_PUBLIC (unsigned long int, mpz_cdiv_r_ui,
 	      (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_cdiv_ui __gmpz_cdiv_ui
 __GMP_PUBLIC_A (unsigned long int, mpz_cdiv_ui,
 		(mpz_srcptr, unsigned long int), __GMP_ATTRIBUTE_PURE);
 
-#define mpz_clear __gmpz_clear
 __GMP_PUBLIC (void, mpz_clear, (mpz_ptr));
 
-#define mpz_clears __gmpz_clears
 __GMP_PUBLIC (void, mpz_clears, (mpz_ptr, ...));
 
-#define mpz_clrbit __gmpz_clrbit
 __GMP_PUBLIC (void, mpz_clrbit, (mpz_ptr, mp_bitcnt_t));
 
-#define mpz_cmp __gmpz_cmp
 __GMP_PUBLIC_NT_A (int, mpz_cmp, (mpz_srcptr, mpz_srcptr),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpz_cmp_d __gmpz_cmp_d
 __GMP_PUBLIC_A (int, mpz_cmp_d, (mpz_srcptr, double), __GMP_ATTRIBUTE_PURE);
 
-#define _mpz_cmp_si __gmpz_cmp_si
-__GMP_PUBLIC_NT_A (int, _mpz_cmp_si, (mpz_srcptr, signed long int),
-		   __GMP_ATTRIBUTE_PURE);
+__GMP_PUBLIC_FULL (int, _mpz_cmp_si, (mpz_srcptr, signed long int),
+		   /* no nothrow */, __GMP_ATTRIBUTE_PURE, __gmpz_cmp_si);
 
-#define _mpz_cmp_ui __gmpz_cmp_ui
-__GMP_PUBLIC_NT_A (int, _mpz_cmp_ui, (mpz_srcptr, unsigned long int),
-		   __GMP_ATTRIBUTE_PURE);
+__GMP_PUBLIC_FULL (int, _mpz_cmp_ui, (mpz_srcptr, unsigned long int),
+		   /* no nothrow */, __GMP_ATTRIBUTE_PURE, __gmpz_cmp_ui);
 
-#define mpz_cmpabs __gmpz_cmpabs
 __GMP_PUBLIC_NT_A (int, mpz_cmpabs, (mpz_srcptr, mpz_srcptr),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpz_cmpabs_d __gmpz_cmpabs_d
 __GMP_PUBLIC_A (int, mpz_cmpabs_d, (mpz_srcptr, double), __GMP_ATTRIBUTE_PURE);
 
-#define mpz_cmpabs_ui __gmpz_cmpabs_ui
 __GMP_PUBLIC_NT_A (int, mpz_cmpabs_ui, (mpz_srcptr, unsigned long int),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpz_com __gmpz_com
 __GMP_PUBLIC (void, mpz_com, (mpz_ptr, mpz_srcptr));
 
-#define mpz_combit __gmpz_combit
 __GMP_PUBLIC (void, mpz_combit, (mpz_ptr, mp_bitcnt_t));
 
-#define mpz_congruent_p __gmpz_congruent_p
 __GMP_PUBLIC_A (int, mpz_congruent_p, (mpz_srcptr, mpz_srcptr, mpz_srcptr),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p
 __GMP_PUBLIC_NT_A (int, mpz_congruent_2exp_p,
 		   (mpz_srcptr, mpz_srcptr, mp_bitcnt_t),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpz_congruent_ui_p __gmpz_congruent_ui_p
 __GMP_PUBLIC_A (int, mpz_congruent_ui_p,
 	        (mpz_srcptr, unsigned long, unsigned long),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpz_divexact __gmpz_divexact
 __GMP_PUBLIC (void, mpz_divexact, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_divexact_ui __gmpz_divexact_ui
 __GMP_PUBLIC (void, mpz_divexact_ui, (mpz_ptr, mpz_srcptr, unsigned long));
 
-#define mpz_divisible_p __gmpz_divisible_p
 __GMP_PUBLIC_A (int, mpz_divisible_p, (mpz_srcptr, mpz_srcptr),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpz_divisible_ui_p __gmpz_divisible_ui_p
 __GMP_PUBLIC_A (int, mpz_divisible_ui_p, (mpz_srcptr, unsigned long),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p
 __GMP_PUBLIC_NT_A (int, mpz_divisible_2exp_p, (mpz_srcptr, mp_bitcnt_t),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpz_dump __gmpz_dump
 __GMP_PUBLIC (void, mpz_dump, (mpz_srcptr));
 
-#define mpz_export __gmpz_export
 __GMP_PUBLIC (void *, mpz_export,
 	      (void *, size_t *, int, size_t, int, size_t, mpz_srcptr));
 
-#define mpz_fac_ui __gmpz_fac_ui
 __GMP_PUBLIC (void, mpz_fac_ui, (mpz_ptr, unsigned long int));
 
-#define mpz_2fac_ui __gmpz_2fac_ui
 __GMP_PUBLIC (void, mpz_2fac_ui, (mpz_ptr, unsigned long int));
 
-#define mpz_mfac_uiui __gmpz_mfac_uiui
 __GMP_PUBLIC (void, mpz_mfac_uiui,
 	      (mpz_ptr, unsigned long int, unsigned long int));
 
-#define mpz_primorial_ui __gmpz_primorial_ui
 __GMP_PUBLIC (void, mpz_primorial_ui, (mpz_ptr, unsigned long int));
 
-#define mpz_fdiv_q __gmpz_fdiv_q
 __GMP_PUBLIC (void, mpz_fdiv_q, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp
 __GMP_PUBLIC (void, mpz_fdiv_q_2exp, (mpz_ptr, mpz_srcptr, mp_bitcnt_t));
 
-#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui
 __GMP_PUBLIC (unsigned long int, mpz_fdiv_q_ui,
 	      (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_fdiv_qr __gmpz_fdiv_qr
 __GMP_PUBLIC (void, mpz_fdiv_qr, (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui
 __GMP_PUBLIC (unsigned long int, mpz_fdiv_qr_ui,
 	      (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_fdiv_r __gmpz_fdiv_r
 __GMP_PUBLIC (void, mpz_fdiv_r, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp
 __GMP_PUBLIC (void, mpz_fdiv_r_2exp, (mpz_ptr, mpz_srcptr, mp_bitcnt_t));
 
-#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui
 __GMP_PUBLIC (unsigned long int, mpz_fdiv_r_ui,
 	      (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_fdiv_ui __gmpz_fdiv_ui
 __GMP_PUBLIC_A (unsigned long int, mpz_fdiv_ui,
 		(mpz_srcptr, unsigned long int),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpz_fib_ui __gmpz_fib_ui
 __GMP_PUBLIC (void, mpz_fib_ui, (mpz_ptr, unsigned long int));
 
-#define mpz_fib2_ui __gmpz_fib2_ui
 __GMP_PUBLIC (void, mpz_fib2_ui, (mpz_ptr, mpz_ptr, unsigned long int));
 
-#define mpz_fits_sint_p __gmpz_fits_sint_p
 __GMP_PUBLIC_NT_A (int, mpz_fits_sint_p, (mpz_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpz_fits_slong_p __gmpz_fits_slong_p
 __GMP_PUBLIC_NT_A (int, mpz_fits_slong_p, (mpz_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpz_fits_sshort_p __gmpz_fits_sshort_p
 __GMP_PUBLIC_NT_A (int, mpz_fits_sshort_p, (mpz_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpz_fits_uint_p __gmpz_fits_uint_p
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p)
 __GMP_PUBLIC_NT_A (int, mpz_fits_uint_p, (mpz_srcptr), __GMP_ATTRIBUTE_PURE);
 #endif
 
-#define mpz_fits_ulong_p __gmpz_fits_ulong_p
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p)
 __GMP_PUBLIC_NT_A (int, mpz_fits_ulong_p, (mpz_srcptr), __GMP_ATTRIBUTE_PURE);
 #endif
 
-#define mpz_fits_ushort_p __gmpz_fits_ushort_p
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p)
 __GMP_PUBLIC_NT_A (int, mpz_fits_ushort_p, (mpz_srcptr), __GMP_ATTRIBUTE_PURE);
 #endif
 
-#define mpz_gcd __gmpz_gcd
 __GMP_PUBLIC (void, mpz_gcd, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_gcd_ui __gmpz_gcd_ui
 __GMP_PUBLIC (unsigned long int, mpz_gcd_ui,
 	      (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_gcdext __gmpz_gcdext
 __GMP_PUBLIC (void, mpz_gcdext,
 	      (mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_get_d __gmpz_get_d
 __GMP_PUBLIC_A (double, mpz_get_d, (mpz_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpz_get_d_2exp __gmpz_get_d_2exp
 __GMP_PUBLIC (double, mpz_get_d_2exp, (signed long int *, mpz_srcptr));
 
-#define mpz_get_si __gmpz_get_si
 __GMP_PUBLIC_NT_A (signed long int, mpz_get_si, (mpz_srcptr),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpz_get_str __gmpz_get_str
 __GMP_PUBLIC (char *, mpz_get_str, (char *, int, mpz_srcptr));
 
-#define mpz_get_ui __gmpz_get_ui
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui)
 __GMP_PUBLIC_NT_A (unsigned long int, mpz_get_ui, (mpz_srcptr),
 		   __GMP_ATTRIBUTE_PURE);
 #endif
 
-#define mpz_getlimbn __gmpz_getlimbn
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn)
 __GMP_PUBLIC_NT_A (mp_limb_t, mpz_getlimbn, (mpz_srcptr, mp_size_t),
 		   __GMP_ATTRIBUTE_PURE);
 #endif
 
-#define mpz_hamdist __gmpz_hamdist
 __GMP_PUBLIC_NT_A (mp_bitcnt_t, mpz_hamdist, (mpz_srcptr, mpz_srcptr),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpz_import __gmpz_import
 __GMP_PUBLIC (void, mpz_import,
 	      (mpz_ptr, size_t, int, size_t, int, size_t, const void *));
 
-#define mpz_init __gmpz_init
 __GMP_PUBLIC (void, mpz_init, (mpz_ptr));
 
-#define mpz_init2 __gmpz_init2
 __GMP_PUBLIC (void, mpz_init2, (mpz_ptr, mp_bitcnt_t));
 
-#define mpz_inits __gmpz_inits
 __GMP_PUBLIC (void, mpz_inits, (mpz_ptr, ...));
 
-#define mpz_init_set __gmpz_init_set
 __GMP_PUBLIC (void, mpz_init_set, (mpz_ptr, mpz_srcptr));
 
-#define mpz_init_set_d __gmpz_init_set_d
 __GMP_PUBLIC (void, mpz_init_set_d, (mpz_ptr, double));
 
-#define mpz_init_set_si __gmpz_init_set_si
 __GMP_PUBLIC (void, mpz_init_set_si, (mpz_ptr, signed long int));
 
-#define mpz_init_set_str __gmpz_init_set_str
 __GMP_PUBLIC (int, mpz_init_set_str, (mpz_ptr, const char *, int));
 
-#define mpz_init_set_ui __gmpz_init_set_ui
 __GMP_PUBLIC (void, mpz_init_set_ui, (mpz_ptr, unsigned long int));
 
-#define mpz_inp_raw __gmpz_inp_raw
 #ifdef _GMP_H_HAVE_FILE
 __GMP_PUBLIC (size_t, mpz_inp_raw, (mpz_ptr, FILE *));
 #endif
 
-#define mpz_inp_str __gmpz_inp_str
 #ifdef _GMP_H_HAVE_FILE
 __GMP_PUBLIC (size_t, mpz_inp_str, (mpz_ptr, FILE *, int));
 #endif
 
-#define mpz_invert __gmpz_invert
 __GMP_PUBLIC (int, mpz_invert, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_ior __gmpz_ior
 __GMP_PUBLIC (void, mpz_ior, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_jacobi __gmpz_jacobi
 __GMP_PUBLIC_A (int, mpz_jacobi, (mpz_srcptr, mpz_srcptr),
 		__GMP_ATTRIBUTE_PURE);
 
 #define mpz_kronecker mpz_jacobi  /* alias */
 
-#define mpz_kronecker_si __gmpz_kronecker_si
 __GMP_PUBLIC_A (int, mpz_kronecker_si, (mpz_srcptr, long),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpz_kronecker_ui __gmpz_kronecker_ui
 __GMP_PUBLIC_A (int, mpz_kronecker_ui, (mpz_srcptr, unsigned long),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpz_si_kronecker __gmpz_si_kronecker
 __GMP_PUBLIC_A (int, mpz_si_kronecker, (long, mpz_srcptr),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpz_ui_kronecker __gmpz_ui_kronecker
 __GMP_PUBLIC_A (int, mpz_ui_kronecker, (unsigned long, mpz_srcptr),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpz_lcm __gmpz_lcm
 __GMP_PUBLIC (void, mpz_lcm, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_lcm_ui __gmpz_lcm_ui
 __GMP_PUBLIC (void, mpz_lcm_ui, (mpz_ptr, mpz_srcptr, unsigned long));
 
 #define mpz_legendre mpz_jacobi  /* alias */
 
-#define mpz_lucnum_ui __gmpz_lucnum_ui
 __GMP_PUBLIC (void, mpz_lucnum_ui, (mpz_ptr, unsigned long int));
 
-#define mpz_lucnum2_ui __gmpz_lucnum2_ui
 __GMP_PUBLIC (void, mpz_lucnum2_ui, (mpz_ptr, mpz_ptr, unsigned long int));
 
-#define mpz_millerrabin __gmpz_millerrabin
 __GMP_PUBLIC_A (int, mpz_millerrabin, (mpz_srcptr, int), __GMP_ATTRIBUTE_PURE);
 
-#define mpz_mod __gmpz_mod
 __GMP_PUBLIC (void, mpz_mod, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
 #define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */
 
-#define mpz_mul __gmpz_mul
 __GMP_PUBLIC (void, mpz_mul, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_mul_2exp __gmpz_mul_2exp
 __GMP_PUBLIC (void, mpz_mul_2exp, (mpz_ptr, mpz_srcptr, mp_bitcnt_t));
 
-#define mpz_mul_si __gmpz_mul_si
 __GMP_PUBLIC (void, mpz_mul_si, (mpz_ptr, mpz_srcptr, long int));
 
-#define mpz_mul_ui __gmpz_mul_ui
 __GMP_PUBLIC (void, mpz_mul_ui, (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_neg __gmpz_neg
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg)
 __GMP_PUBLIC (void, mpz_neg, (mpz_ptr, mpz_srcptr));
 #endif
 
-#define mpz_nextprime __gmpz_nextprime
 __GMP_PUBLIC (void, mpz_nextprime, (mpz_ptr, mpz_srcptr));
 
-#define mpz_out_raw __gmpz_out_raw
 #ifdef _GMP_H_HAVE_FILE
 __GMP_PUBLIC (size_t, mpz_out_raw, (FILE *, mpz_srcptr));
 #endif
 
-#define mpz_out_str __gmpz_out_str
 #ifdef _GMP_H_HAVE_FILE
 __GMP_PUBLIC (size_t, mpz_out_str, (FILE *, int, mpz_srcptr));
 #endif
 
-#define mpz_perfect_power_p __gmpz_perfect_power_p
 __GMP_PUBLIC_A (int, mpz_perfect_power_p, (mpz_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpz_perfect_square_p __gmpz_perfect_square_p
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p)
 __GMP_PUBLIC_A (int, mpz_perfect_square_p, (mpz_srcptr), __GMP_ATTRIBUTE_PURE);
 #endif
 
-#define mpz_popcount __gmpz_popcount
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount)
 __GMP_PUBLIC_NT_A (mp_bitcnt_t, mpz_popcount, (mpz_srcptr),
 		   __GMP_ATTRIBUTE_PURE);
 #endif
 
-#define mpz_pow_ui __gmpz_pow_ui
 __GMP_PUBLIC (void, mpz_pow_ui, (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_powm __gmpz_powm
 __GMP_PUBLIC (void, mpz_powm, (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_powm_sec __gmpz_powm_sec
 __GMP_PUBLIC (void, mpz_powm_sec,
 	      (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_powm_ui __gmpz_powm_ui
 __GMP_PUBLIC (void, mpz_powm_ui,
 	      (mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr));
 
-#define mpz_probab_prime_p __gmpz_probab_prime_p
 __GMP_PUBLIC_A (int, mpz_probab_prime_p, (mpz_srcptr, int),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpz_random __gmpz_random
 __GMP_PUBLIC (void, mpz_random, (mpz_ptr, mp_size_t));
 
-#define mpz_random2 __gmpz_random2
 __GMP_PUBLIC (void, mpz_random2, (mpz_ptr, mp_size_t));
 
-#define mpz_realloc2 __gmpz_realloc2
 __GMP_PUBLIC (void, mpz_realloc2, (mpz_ptr, mp_bitcnt_t));
 
-#define mpz_remove __gmpz_remove
 __GMP_PUBLIC (mp_bitcnt_t, mpz_remove, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_root __gmpz_root
 __GMP_PUBLIC (int, mpz_root, (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_rootrem __gmpz_rootrem
 __GMP_PUBLIC (void, mpz_rootrem,
 	      (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_rrandomb __gmpz_rrandomb
 __GMP_PUBLIC (void, mpz_rrandomb, (mpz_ptr, gmp_randstate_t, mp_bitcnt_t));
 
-#define mpz_scan0 __gmpz_scan0
 __GMP_PUBLIC_NT_A (mp_bitcnt_t, mpz_scan0, (mpz_srcptr, mp_bitcnt_t),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpz_scan1 __gmpz_scan1
 __GMP_PUBLIC_NT_A (mp_bitcnt_t, mpz_scan1, (mpz_srcptr, mp_bitcnt_t),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpz_set __gmpz_set
 __GMP_PUBLIC (void, mpz_set, (mpz_ptr, mpz_srcptr));
 
-#define mpz_set_d __gmpz_set_d
 __GMP_PUBLIC (void, mpz_set_d, (mpz_ptr, double));
 
-#define mpz_set_f __gmpz_set_f
 __GMP_PUBLIC (void, mpz_set_f, (mpz_ptr, mpf_srcptr));
 
-#define mpz_set_q __gmpz_set_q
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q)
 __GMP_PUBLIC (void, mpz_set_q, (mpz_ptr, mpq_srcptr));
 #endif
 
-#define mpz_set_si __gmpz_set_si
 __GMP_PUBLIC (void, mpz_set_si, (mpz_ptr, signed long int));
 
-#define mpz_set_str __gmpz_set_str
 __GMP_PUBLIC (int, mpz_set_str, (mpz_ptr, const char *, int));
 
-#define mpz_set_ui __gmpz_set_ui
 __GMP_PUBLIC (void, mpz_set_ui, (mpz_ptr, unsigned long int));
 
-#define mpz_setbit __gmpz_setbit
 __GMP_PUBLIC (void, mpz_setbit, (mpz_ptr, mp_bitcnt_t));
 
-#define mpz_size __gmpz_size
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size)
 __GMP_PUBLIC_NT_A (size_t, mpz_size, (mpz_srcptr), __GMP_ATTRIBUTE_PURE);
 #endif
 
-#define mpz_sizeinbase __gmpz_sizeinbase
 __GMP_PUBLIC_NT_A (size_t, mpz_sizeinbase, (mpz_srcptr, int),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpz_sqrt __gmpz_sqrt
 __GMP_PUBLIC (void, mpz_sqrt, (mpz_ptr, mpz_srcptr));
 
-#define mpz_sqrtrem __gmpz_sqrtrem
 __GMP_PUBLIC (void, mpz_sqrtrem, (mpz_ptr, mpz_ptr, mpz_srcptr));
 
-#define mpz_sub __gmpz_sub
 __GMP_PUBLIC (void, mpz_sub, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_sub_ui __gmpz_sub_ui
 __GMP_PUBLIC (void, mpz_sub_ui, (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_ui_sub __gmpz_ui_sub
 __GMP_PUBLIC (void, mpz_ui_sub, (mpz_ptr, unsigned long int, mpz_srcptr));
 
-#define mpz_submul __gmpz_submul
 __GMP_PUBLIC (void, mpz_submul, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_submul_ui __gmpz_submul_ui
 __GMP_PUBLIC (void, mpz_submul_ui, (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_swap __gmpz_swap
 __GMP_PUBLIC_NT (void, mpz_swap, (mpz_ptr, mpz_ptr));
 
-#define mpz_tdiv_ui __gmpz_tdiv_ui
 __GMP_PUBLIC_A (unsigned long int, mpz_tdiv_ui,
 		(mpz_srcptr, unsigned long int),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpz_tdiv_q __gmpz_tdiv_q
 __GMP_PUBLIC (void, mpz_tdiv_q, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp
 __GMP_PUBLIC (void, mpz_tdiv_q_2exp, (mpz_ptr, mpz_srcptr, mp_bitcnt_t));
 
-#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui
 __GMP_PUBLIC (unsigned long int, mpz_tdiv_q_ui,
 	      (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_tdiv_qr __gmpz_tdiv_qr
 __GMP_PUBLIC (void, mpz_tdiv_qr, (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui
 __GMP_PUBLIC (unsigned long int, mpz_tdiv_qr_ui,
 	      (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_tdiv_r __gmpz_tdiv_r
 __GMP_PUBLIC (void, mpz_tdiv_r, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp
 __GMP_PUBLIC (void, mpz_tdiv_r_2exp, (mpz_ptr, mpz_srcptr, mp_bitcnt_t));
 
-#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui
 __GMP_PUBLIC (unsigned long int, mpz_tdiv_r_ui,
 	      (mpz_ptr, mpz_srcptr, unsigned long int));
 
-#define mpz_tstbit __gmpz_tstbit
 __GMP_PUBLIC_NT_A (int, mpz_tstbit, (mpz_srcptr, mp_bitcnt_t),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpz_ui_pow_ui __gmpz_ui_pow_ui
 __GMP_PUBLIC (void, mpz_ui_pow_ui,
 	      (mpz_ptr, unsigned long int, unsigned long int));
 
-#define mpz_urandomb __gmpz_urandomb
 __GMP_PUBLIC (void, mpz_urandomb, (mpz_ptr, gmp_randstate_t, mp_bitcnt_t));
 
-#define mpz_urandomm __gmpz_urandomm
 __GMP_PUBLIC (void, mpz_urandomm, (mpz_ptr, gmp_randstate_t, mpz_srcptr));
 
-#define mpz_xor __gmpz_xor
 #define mpz_eor __gmpz_xor
 __GMP_PUBLIC (void, mpz_xor, (mpz_ptr, mpz_srcptr, mpz_srcptr));
 
-#define mpz_limbs_read __gmpz_limbs_read
 __GMP_PUBLIC (mp_srcptr, mpz_limbs_read, (mpz_srcptr));
 
-#define mpz_limbs_write __gmpz_limbs_write
 __GMP_PUBLIC (mp_ptr, mpz_limbs_write, (mpz_ptr, mp_size_t));
 
-#define mpz_limbs_modify __gmpz_limbs_modify
 __GMP_PUBLIC (mp_ptr, mpz_limbs_modify, (mpz_ptr, mp_size_t));
 
-#define mpz_limbs_finish __gmpz_limbs_finish
 __GMP_PUBLIC (void, mpz_limbs_finish, (mpz_ptr, mp_size_t));
 
-#define mpz_roinit_n __gmpz_roinit_n
 __GMP_PUBLIC (mpz_srcptr, mpz_roinit_n, (mpz_ptr, mp_srcptr, mp_size_t));
 
 #define MPZ_ROINIT_N(xp, xs) {{0, (xs),(xp) }}
 
 /**************** Rational (i.e. Q) routines.  ****************/
 
-#define mpq_abs __gmpq_abs
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs)
 __GMP_PUBLIC (void, mpq_abs, (mpq_ptr, mpq_srcptr));
 #endif
 
-#define mpq_add __gmpq_add
 __GMP_PUBLIC (void, mpq_add, (mpq_ptr, mpq_srcptr, mpq_srcptr));
 
-#define mpq_canonicalize __gmpq_canonicalize
 __GMP_PUBLIC (void, mpq_canonicalize, (mpq_ptr));
 
-#define mpq_clear __gmpq_clear
 __GMP_PUBLIC (void, mpq_clear, (mpq_ptr));
 
-#define mpq_clears __gmpq_clears
 __GMP_PUBLIC (void, mpq_clears, (mpq_ptr, ...));
 
-#define mpq_cmp __gmpq_cmp
 __GMP_PUBLIC_A (int, mpq_cmp, (mpq_srcptr, mpq_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define _mpq_cmp_si __gmpq_cmp_si
-__GMP_PUBLIC_A (int, _mpq_cmp_si, (mpq_srcptr, long, unsigned long),
-		__GMP_ATTRIBUTE_PURE);
+__GMP_PUBLIC_FULL (int, _mpq_cmp_si, (mpq_srcptr, long, unsigned long),
+		   /* no nothrow */, __GMP_ATTRIBUTE_PURE, __gmpq_cmp_si);
 
-#define _mpq_cmp_ui __gmpq_cmp_ui
-__GMP_PUBLIC_A (int, _mpq_cmp_ui,
-		(mpq_srcptr, unsigned long int, unsigned long int),
-		__GMP_ATTRIBUTE_PURE);
+__GMP_PUBLIC_FULL (int, _mpq_cmp_ui,
+		   (mpq_srcptr, unsigned long int, unsigned long int),
+		   /* no nothrow */, __GMP_ATTRIBUTE_PURE, __gmpq_cmp_ui);
 
-#define mpq_div __gmpq_div
 __GMP_PUBLIC (void, mpq_div, (mpq_ptr, mpq_srcptr, mpq_srcptr));
 
-#define mpq_div_2exp __gmpq_div_2exp
 __GMP_PUBLIC (void, mpq_div_2exp, (mpq_ptr, mpq_srcptr, mp_bitcnt_t));
 
-#define mpq_equal __gmpq_equal
 __GMP_PUBLIC_NT_A (int, mpq_equal, (mpq_srcptr, mpq_srcptr),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpq_get_num __gmpq_get_num
 __GMP_PUBLIC (void, mpq_get_num, (mpz_ptr, mpq_srcptr));
 
-#define mpq_get_den __gmpq_get_den
 __GMP_PUBLIC (void, mpq_get_den, (mpz_ptr, mpq_srcptr));
 
-#define mpq_get_d __gmpq_get_d
 __GMP_PUBLIC_A (double, mpq_get_d, (mpq_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpq_get_str __gmpq_get_str
 __GMP_PUBLIC (char *, mpq_get_str, (char *, int, mpq_srcptr));
 
-#define mpq_init __gmpq_init
 __GMP_PUBLIC (void, mpq_init, (mpq_ptr));
 
-#define mpq_inits __gmpq_inits
 __GMP_PUBLIC (void, mpq_inits, (mpq_ptr, ...));
 
-#define mpq_inp_str __gmpq_inp_str
 #ifdef _GMP_H_HAVE_FILE
 __GMP_PUBLIC (size_t, mpq_inp_str, (mpq_ptr, FILE *, int));
 #endif
 
-#define mpq_inv __gmpq_inv
 __GMP_PUBLIC (void, mpq_inv, (mpq_ptr, mpq_srcptr));
 
-#define mpq_mul __gmpq_mul
 __GMP_PUBLIC (void, mpq_mul, (mpq_ptr, mpq_srcptr, mpq_srcptr));
 
-#define mpq_mul_2exp __gmpq_mul_2exp
 __GMP_PUBLIC (void, mpq_mul_2exp, (mpq_ptr, mpq_srcptr, mp_bitcnt_t));
 
-#define mpq_neg __gmpq_neg
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg)
 __GMP_PUBLIC (void, mpq_neg, (mpq_ptr, mpq_srcptr));
 #endif
 
-#define mpq_out_str __gmpq_out_str
 #ifdef _GMP_H_HAVE_FILE
 __GMP_PUBLIC (size_t, mpq_out_str, (FILE *, int, mpq_srcptr));
 #endif
 
-#define mpq_set __gmpq_set
 __GMP_PUBLIC (void, mpq_set, (mpq_ptr, mpq_srcptr));
 
-#define mpq_set_d __gmpq_set_d
 __GMP_PUBLIC (void, mpq_set_d, (mpq_ptr, double));
 
-#define mpq_set_den __gmpq_set_den
 __GMP_PUBLIC (void, mpq_set_den, (mpq_ptr, mpz_srcptr));
 
-#define mpq_set_f __gmpq_set_f
 __GMP_PUBLIC (void, mpq_set_f, (mpq_ptr, mpf_srcptr));
 
-#define mpq_set_num __gmpq_set_num
 __GMP_PUBLIC (void, mpq_set_num, (mpq_ptr, mpz_srcptr));
 
-#define mpq_set_si __gmpq_set_si
 __GMP_PUBLIC (void, mpq_set_si, (mpq_ptr, signed long int, unsigned long int));
 
-#define mpq_set_str __gmpq_set_str
 __GMP_PUBLIC (int, mpq_set_str, (mpq_ptr, const char *, int));
 
-#define mpq_set_ui __gmpq_set_ui
 __GMP_PUBLIC (void, mpq_set_ui,
 	      (mpq_ptr, unsigned long int, unsigned long int));
 
-#define mpq_set_z __gmpq_set_z
 __GMP_PUBLIC (void, mpq_set_z, (mpq_ptr, mpz_srcptr));
 
-#define mpq_sub __gmpq_sub
 __GMP_PUBLIC (void, mpq_sub, (mpq_ptr, mpq_srcptr, mpq_srcptr));
 
-#define mpq_swap __gmpq_swap
 __GMP_PUBLIC_NT (void, mpq_swap, (mpq_ptr, mpq_ptr));
 
 
 /**************** Float (i.e. F) routines.  ****************/
 
-#define mpf_abs __gmpf_abs
 __GMP_PUBLIC (void, mpf_abs, (mpf_ptr, mpf_srcptr));
 
-#define mpf_add __gmpf_add
 __GMP_PUBLIC (void, mpf_add, (mpf_ptr, mpf_srcptr, mpf_srcptr));
 
-#define mpf_add_ui __gmpf_add_ui
 __GMP_PUBLIC (void, mpf_add_ui, (mpf_ptr, mpf_srcptr, unsigned long int));
-#define mpf_ceil __gmpf_ceil
+
 __GMP_PUBLIC (void, mpf_ceil, (mpf_ptr, mpf_srcptr));
 
-#define mpf_clear __gmpf_clear
 __GMP_PUBLIC (void, mpf_clear, (mpf_ptr));
 
-#define mpf_clears __gmpf_clears
 __GMP_PUBLIC (void, mpf_clears, (mpf_ptr, ...));
 
-#define mpf_cmp __gmpf_cmp
 __GMP_PUBLIC_NT_A (int, mpf_cmp, (mpf_srcptr, mpf_srcptr),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpf_cmp_d __gmpf_cmp_d
 __GMP_PUBLIC_A (int, mpf_cmp_d, (mpf_srcptr, double), __GMP_ATTRIBUTE_PURE);
 
-#define mpf_cmp_si __gmpf_cmp_si
 __GMP_PUBLIC_NT_A (int, mpf_cmp_si, (mpf_srcptr, signed long int),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpf_cmp_ui __gmpf_cmp_ui
 __GMP_PUBLIC_NT_A (int, mpf_cmp_ui, (mpf_srcptr, unsigned long int),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpf_div __gmpf_div
 __GMP_PUBLIC (void, mpf_div, (mpf_ptr, mpf_srcptr, mpf_srcptr));
 
-#define mpf_div_2exp __gmpf_div_2exp
 __GMP_PUBLIC (void, mpf_div_2exp, (mpf_ptr, mpf_srcptr, mp_bitcnt_t));
 
-#define mpf_div_ui __gmpf_div_ui
 __GMP_PUBLIC (void, mpf_div_ui, (mpf_ptr, mpf_srcptr, unsigned long int));
 
-#define mpf_dump __gmpf_dump
 __GMP_PUBLIC (void, mpf_dump, (mpf_srcptr));
 
-#define mpf_eq __gmpf_eq
 __GMP_PUBLIC_A (int, mpf_eq, (mpf_srcptr, mpf_srcptr, mp_bitcnt_t),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpf_fits_sint_p __gmpf_fits_sint_p
 __GMP_PUBLIC_NT_A (int, mpf_fits_sint_p, (mpf_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpf_fits_slong_p __gmpf_fits_slong_p
 __GMP_PUBLIC_NT_A (int, mpf_fits_slong_p, (mpf_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpf_fits_sshort_p __gmpf_fits_sshort_p
 __GMP_PUBLIC_NT_A (int, mpf_fits_sshort_p, (mpf_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpf_fits_uint_p __gmpf_fits_uint_p
 __GMP_PUBLIC_NT_A (int, mpf_fits_uint_p, (mpf_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpf_fits_ulong_p __gmpf_fits_ulong_p
 __GMP_PUBLIC_NT_A (int, mpf_fits_ulong_p, (mpf_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpf_fits_ushort_p __gmpf_fits_ushort_p
 __GMP_PUBLIC_NT_A (int, mpf_fits_ushort_p, (mpf_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpf_floor __gmpf_floor
 __GMP_PUBLIC (void, mpf_floor, (mpf_ptr, mpf_srcptr));
 
-#define mpf_get_d __gmpf_get_d
 __GMP_PUBLIC_A (double, mpf_get_d, (mpf_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpf_get_d_2exp __gmpf_get_d_2exp
 __GMP_PUBLIC (double, mpf_get_d_2exp, (signed long int *, mpf_srcptr));
 
-#define mpf_get_default_prec __gmpf_get_default_prec
 __GMP_PUBLIC_NT_A (mp_bitcnt_t, mpf_get_default_prec, (void),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpf_get_prec __gmpf_get_prec
 __GMP_PUBLIC_NT_A (mp_bitcnt_t, mpf_get_prec, (mpf_srcptr),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpf_get_si __gmpf_get_si
 __GMP_PUBLIC_NT_A (long, mpf_get_si, (mpf_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpf_get_str __gmpf_get_str
 __GMP_PUBLIC (char *, mpf_get_str,
 	      (char *, mp_exp_t *, int, size_t, mpf_srcptr));
 
-#define mpf_get_ui __gmpf_get_ui
 __GMP_PUBLIC_NT_A (unsigned long, mpf_get_ui, (mpf_srcptr),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpf_init __gmpf_init
 __GMP_PUBLIC (void, mpf_init, (mpf_ptr));
 
-#define mpf_init2 __gmpf_init2
 __GMP_PUBLIC (void, mpf_init2, (mpf_ptr, mp_bitcnt_t));
 
-#define mpf_inits __gmpf_inits
 __GMP_PUBLIC (void, mpf_inits, (mpf_ptr, ...));
 
-#define mpf_init_set __gmpf_init_set
 __GMP_PUBLIC (void, mpf_init_set, (mpf_ptr, mpf_srcptr));
 
-#define mpf_init_set_d __gmpf_init_set_d
 __GMP_PUBLIC (void, mpf_init_set_d, (mpf_ptr, double));
 
-#define mpf_init_set_si __gmpf_init_set_si
 __GMP_PUBLIC (void, mpf_init_set_si, (mpf_ptr, signed long int));
 
-#define mpf_init_set_str __gmpf_init_set_str
 __GMP_PUBLIC (int, mpf_init_set_str, (mpf_ptr, const char *, int));
 
-#define mpf_init_set_ui __gmpf_init_set_ui
 __GMP_PUBLIC (void, mpf_init_set_ui, (mpf_ptr, unsigned long int));
 
-#define mpf_inp_str __gmpf_inp_str
 #ifdef _GMP_H_HAVE_FILE
 __GMP_PUBLIC (size_t, mpf_inp_str, (mpf_ptr, FILE *, int));
 #endif
 
-#define mpf_integer_p __gmpf_integer_p
 __GMP_PUBLIC_NT_A (int, mpf_integer_p, (mpf_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpf_mul __gmpf_mul
 __GMP_PUBLIC (void, mpf_mul, (mpf_ptr, mpf_srcptr, mpf_srcptr));
 
-#define mpf_mul_2exp __gmpf_mul_2exp
 __GMP_PUBLIC (void, mpf_mul_2exp, (mpf_ptr, mpf_srcptr, mp_bitcnt_t));
 
-#define mpf_mul_ui __gmpf_mul_ui
 __GMP_PUBLIC (void, mpf_mul_ui, (mpf_ptr, mpf_srcptr, unsigned long int));
 
-#define mpf_neg __gmpf_neg
 __GMP_PUBLIC (void, mpf_neg, (mpf_ptr, mpf_srcptr));
 
-#define mpf_out_str __gmpf_out_str
 #ifdef _GMP_H_HAVE_FILE
 __GMP_PUBLIC (size_t, mpf_out_str, (FILE *, int, size_t, mpf_srcptr));
 #endif
 
-#define mpf_pow_ui __gmpf_pow_ui
 __GMP_PUBLIC (void, mpf_pow_ui, (mpf_ptr, mpf_srcptr, unsigned long int));
 
-#define mpf_random2 __gmpf_random2
 __GMP_PUBLIC (void, mpf_random2, (mpf_ptr, mp_size_t, mp_exp_t));
 
-#define mpf_reldiff __gmpf_reldiff
 __GMP_PUBLIC (void, mpf_reldiff, (mpf_ptr, mpf_srcptr, mpf_srcptr));
 
-#define mpf_set __gmpf_set
 __GMP_PUBLIC (void, mpf_set, (mpf_ptr, mpf_srcptr));
 
-#define mpf_set_d __gmpf_set_d
 __GMP_PUBLIC (void, mpf_set_d, (mpf_ptr, double));
 
-#define mpf_set_default_prec __gmpf_set_default_prec
 __GMP_PUBLIC_NT (void, mpf_set_default_prec, (mp_bitcnt_t));
 
-#define mpf_set_prec __gmpf_set_prec
 __GMP_PUBLIC (void, mpf_set_prec, (mpf_ptr, mp_bitcnt_t));
 
-#define mpf_set_prec_raw __gmpf_set_prec_raw
 __GMP_PUBLIC_NT (void, mpf_set_prec_raw, (mpf_ptr, mp_bitcnt_t));
 
-#define mpf_set_q __gmpf_set_q
 __GMP_PUBLIC (void, mpf_set_q, (mpf_ptr, mpq_srcptr));
 
-#define mpf_set_si __gmpf_set_si
 __GMP_PUBLIC (void, mpf_set_si, (mpf_ptr, signed long int));
 
-#define mpf_set_str __gmpf_set_str
 __GMP_PUBLIC (int, mpf_set_str, (mpf_ptr, const char *, int));
 
-#define mpf_set_ui __gmpf_set_ui
 __GMP_PUBLIC (void, mpf_set_ui, (mpf_ptr, unsigned long int));
 
-#define mpf_set_z __gmpf_set_z
 __GMP_PUBLIC (void, mpf_set_z, (mpf_ptr, mpz_srcptr));
 
-#define mpf_size __gmpf_size
 __GMP_PUBLIC_NT_A (size_t, mpf_size, (mpf_srcptr), __GMP_ATTRIBUTE_PURE);
 
-#define mpf_sqrt __gmpf_sqrt
 __GMP_PUBLIC (void, mpf_sqrt, (mpf_ptr, mpf_srcptr));
 
-#define mpf_sqrt_ui __gmpf_sqrt_ui
 __GMP_PUBLIC (void, mpf_sqrt_ui, (mpf_ptr, unsigned long int));
 
-#define mpf_sub __gmpf_sub
 __GMP_PUBLIC (void, mpf_sub, (mpf_ptr, mpf_srcptr, mpf_srcptr));
 
-#define mpf_sub_ui __gmpf_sub_ui
 __GMP_PUBLIC (void, mpf_sub_ui, (mpf_ptr, mpf_srcptr, unsigned long int));
 
-#define mpf_swap __gmpf_swap
 __GMP_PUBLIC_NT (void, mpf_swap, (mpf_ptr, mpf_ptr));
 
-#define mpf_trunc __gmpf_trunc
 __GMP_PUBLIC (void, mpf_trunc, (mpf_ptr, mpf_srcptr));
 
-#define mpf_ui_div __gmpf_ui_div
 __GMP_PUBLIC (void, mpf_ui_div, (mpf_ptr, unsigned long int, mpf_srcptr));
 
-#define mpf_ui_sub __gmpf_ui_sub
 __GMP_PUBLIC (void, mpf_ui_sub, (mpf_ptr, unsigned long int, mpf_srcptr));
 
-#define mpf_urandomb __gmpf_urandomb
 __GMP_PUBLIC (void, mpf_urandomb, (mpf_t, gmp_randstate_t, mp_bitcnt_t));
 
 
 /************ Low level positive-integer (i.e. N) routines.  ************/
 
-/* This is ugly, but we need to make user calls reach the prefixed function. */
-
-#define mpn_add __MPN(add)
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add)
 __GMP_PUBLIC (mp_limb_t, mpn_add,
 	      (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));
 #endif
 
-#define mpn_add_1 __MPN(add_1)
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1)
 __GMP_PUBLIC_NT (mp_limb_t, mpn_add_1,
 		 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
 #endif
 
-#define mpn_add_n __MPN(add_n)
 __GMP_PUBLIC (mp_limb_t, mpn_add_n, (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
 
-#define mpn_addmul_1 __MPN(addmul_1)
 __GMP_PUBLIC (mp_limb_t, mpn_addmul_1,
 	      (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
 
-#define mpn_cmp __MPN(cmp)
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp)
 __GMP_PUBLIC_NT_A (int, mpn_cmp, (mp_srcptr, mp_srcptr, mp_size_t),
 		   __GMP_ATTRIBUTE_PURE);
@@ -1588,177 +1304,130 @@ __GMP_PUBLIC_NT_A (int, mpn_cmp, (mp_srcptr, mp_srcptr, mp_size_t),
 #define mpn_divexact_by3(dst,src,size) \
   mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0))
 
-#define mpn_divexact_by3c __MPN(divexact_by3c)
 __GMP_PUBLIC (mp_limb_t, mpn_divexact_by3c,
 	      (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
 
 #define mpn_divmod_1(qp,np,nsize,dlimb) \
   mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb)
 
-#define mpn_divrem __MPN(divrem)
 __GMP_PUBLIC (mp_limb_t, mpn_divrem,
 	      (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t));
 
-#define mpn_divrem_1 __MPN(divrem_1)
 __GMP_PUBLIC (mp_limb_t, mpn_divrem_1,
 	      (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t));
 
-#define mpn_divrem_2 __MPN(divrem_2)
 __GMP_PUBLIC (mp_limb_t, mpn_divrem_2,
 	      (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr));
 
-#define mpn_div_qr_2 __MPN(div_qr_2)
 __GMP_PUBLIC (mp_limb_t, mpn_div_qr_2,
 	      (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr));
 
-#define mpn_gcd __MPN(gcd)
 __GMP_PUBLIC (mp_size_t, mpn_gcd,
 	      (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t));
 
-#define mpn_gcd_1 __MPN(gcd_1)
 __GMP_PUBLIC_A (mp_limb_t, mpn_gcd_1, (mp_srcptr, mp_size_t, mp_limb_t),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpn_gcdext_1 __MPN(gcdext_1)
 __GMP_PUBLIC (mp_limb_t, mpn_gcdext_1,
 	      (mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t));
 
-#define mpn_gcdext __MPN(gcdext)
 __GMP_PUBLIC (mp_size_t, mpn_gcdext,
 	      (mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t,
 	       mp_ptr, mp_size_t));
 
-#define mpn_get_str __MPN(get_str)
 __GMP_PUBLIC (size_t, mpn_get_str, (unsigned char *, int, mp_ptr, mp_size_t));
 
-#define mpn_hamdist __MPN(hamdist)
 __GMP_PUBLIC_NT_A (mp_bitcnt_t, mpn_hamdist, (mp_srcptr, mp_srcptr, mp_size_t),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpn_lshift __MPN(lshift)
 __GMP_PUBLIC (mp_limb_t, mpn_lshift,
 	      (mp_ptr, mp_srcptr, mp_size_t, unsigned int));
 
-#define mpn_mod_1 __MPN(mod_1)
 __GMP_PUBLIC_A (mp_limb_t, mpn_mod_1, (mp_srcptr, mp_size_t, mp_limb_t),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpn_mul __MPN(mul)
 __GMP_PUBLIC (mp_limb_t, mpn_mul,
 	      (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));
 
-#define mpn_mul_1 __MPN(mul_1)
 __GMP_PUBLIC (mp_limb_t, mpn_mul_1, (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
 
-#define mpn_mul_n __MPN(mul_n)
 __GMP_PUBLIC (void, mpn_mul_n, (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
 
-#define mpn_sqr __MPN(sqr)
 __GMP_PUBLIC (void, mpn_sqr, (mp_ptr, mp_srcptr, mp_size_t));
 
-#define mpn_neg __MPN(neg)
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_neg)
 __GMP_PUBLIC (mp_limb_t, mpn_neg, (mp_ptr, mp_srcptr, mp_size_t));
 #endif
 
-#define mpn_com __MPN(com)
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_com)
 __GMP_PUBLIC (void, mpn_com, (mp_ptr, mp_srcptr, mp_size_t));
 #endif
 
-#define mpn_perfect_square_p __MPN(perfect_square_p)
 __GMP_PUBLIC_A (int, mpn_perfect_square_p, (mp_srcptr, mp_size_t),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpn_perfect_power_p __MPN(perfect_power_p)
 __GMP_PUBLIC_A (int, mpn_perfect_power_p, (mp_srcptr, mp_size_t),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpn_popcount __MPN(popcount)
 __GMP_PUBLIC_NT_A (mp_bitcnt_t, mpn_popcount, (mp_srcptr, mp_size_t),
 		   __GMP_ATTRIBUTE_PURE);
 
-#define mpn_pow_1 __MPN(pow_1)
 __GMP_PUBLIC (mp_size_t, mpn_pow_1,
 	      (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr));
 
 /* undocumented now, but retained here for upward compatibility */
-#define mpn_preinv_mod_1 __MPN(preinv_mod_1)
 __GMP_PUBLIC_A (mp_limb_t, mpn_preinv_mod_1,
 	        (mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpn_random __MPN(random)
 __GMP_PUBLIC (void, mpn_random, (mp_ptr, mp_size_t));
 
-#define mpn_random2 __MPN(random2)
 __GMP_PUBLIC (void, mpn_random2, (mp_ptr, mp_size_t));
 
-#define mpn_rshift __MPN(rshift)
 __GMP_PUBLIC (mp_limb_t, mpn_rshift,
 	      (mp_ptr, mp_srcptr, mp_size_t, unsigned int));
 
-#define mpn_scan0 __MPN(scan0)
 __GMP_PUBLIC_A (mp_bitcnt_t, mpn_scan0, (mp_srcptr, mp_bitcnt_t),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpn_scan1 __MPN(scan1)
 __GMP_PUBLIC_A (mp_bitcnt_t, mpn_scan1, (mp_srcptr, mp_bitcnt_t),
 		__GMP_ATTRIBUTE_PURE);
 
-#define mpn_set_str __MPN(set_str)
 __GMP_PUBLIC (mp_size_t, mpn_set_str,
 	      (mp_ptr, const unsigned char *, size_t, int));
 
-#define mpn_sqrtrem __MPN(sqrtrem)
 __GMP_PUBLIC (mp_size_t, mpn_sqrtrem, (mp_ptr, mp_ptr, mp_srcptr, mp_size_t));
 
-#define mpn_sub __MPN(sub)
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub)
 __GMP_PUBLIC (mp_limb_t, mpn_sub,
 	      (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));
 #endif
 
-#define mpn_sub_1 __MPN(sub_1)
 #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1)
 __GMP_PUBLIC_NT (mp_limb_t, mpn_sub_1,
 		 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
 #endif
 
-#define mpn_sub_n __MPN(sub_n)
 __GMP_PUBLIC (mp_limb_t, mpn_sub_n, (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
 
-#define mpn_submul_1 __MPN(submul_1)
 __GMP_PUBLIC (mp_limb_t, mpn_submul_1,
 	      (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
 
-#define mpn_tdiv_qr __MPN(tdiv_qr)
 __GMP_PUBLIC (void, mpn_tdiv_qr,
 	      (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t,
 	       mp_srcptr, mp_size_t));
 
-#define mpn_and_n __MPN(and_n)
 __GMP_PUBLIC (void, mpn_and_n, (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_andn_n __MPN(andn_n)
 __GMP_PUBLIC (void, mpn_andn_n, (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_nand_n __MPN(nand_n)
 __GMP_PUBLIC (void, mpn_nand_n, (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_ior_n __MPN(ior_n)
 __GMP_PUBLIC (void, mpn_ior_n, (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_iorn_n __MPN(iorn_n)
 __GMP_PUBLIC (void, mpn_iorn_n, (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_nior_n __MPN(nior_n)
 __GMP_PUBLIC (void, mpn_nior_n, (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_xor_n __MPN(xor_n)
 __GMP_PUBLIC (void, mpn_xor_n, (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_xnor_n __MPN(xnor_n)
 __GMP_PUBLIC (void, mpn_xnor_n, (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
 
-#define mpn_copyi __MPN(copyi)
 __GMP_PUBLIC (void, mpn_copyi, (mp_ptr, mp_srcptr, mp_size_t));
-#define mpn_copyd __MPN(copyd)
 __GMP_PUBLIC (void, mpn_copyd, (mp_ptr, mp_srcptr, mp_size_t));
-#define mpn_zero __MPN(zero)
 __GMP_PUBLIC (void, mpn_zero, (mp_ptr, mp_size_t));
 
 /**************** mpz inlines ****************/
diff --git a/gmp-impl.h b/gmp-impl.h
index 5a1cdea..21462e0 100644
--- a/gmp-impl.h
+++ b/gmp-impl.h
@@ -52,6 +52,10 @@ along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.  */
 #include <limits.h>
 #endif
 
+#ifndef __MPN
+#define __MPN(x) __gmpn_##x
+#endif
+
 /* For fat.h and other fat binary stuff.
    No need for __GMP_ATTRIBUTE_PURE or __GMP_NOTHROW, since functions
    declared this way are only used to set function pointers in __gmpn_cpuvec,
@@ -1091,9 +1095,6 @@ __GMP_DECLSPEC void mpn_mullo_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
 __GMP_DECLSPEC void mpn_mullo_basecase (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
 #endif
 
-#define mpn_sqr __MPN(sqr)
-__GMP_DECLSPEC void mpn_sqr (mp_ptr, mp_srcptr, mp_size_t);
-
 #ifndef mpn_sqr_basecase  /* if not done with cpuvec in a fat binary */
 #define mpn_sqr_basecase __MPN(sqr_basecase)
 __GMP_DECLSPEC void mpn_sqr_basecase (mp_ptr, mp_srcptr, mp_size_t);
-- 
1.8.1.2



More information about the gmp-devel mailing list