#include <isl/hash.h>
#include <string.h>
#include <gmp.h>
+#include <isl_config.h>
#ifndef mp_get_memory_functions
void mp_get_memory_functions(
#define isl_int_get_gmp(i,g) mpz_set(g,i)
#define isl_int_fits_slong(r) mpz_fits_slong_p(r)
#define isl_int_get_si(r) mpz_get_si(r)
+#define isl_int_fits_ulong(r) mpz_fits_ulong_p(r)
#define isl_int_get_ui(r) mpz_get_ui(r)
#define isl_int_get_d(r) mpz_get_d(r)
#define isl_int_get_str(r) mpz_get_str(0, 10, r)
#define isl_int_sub(r,i,j) mpz_sub(r,i,j)
#define isl_int_mul(r,i,j) mpz_mul(r,i,j)
#define isl_int_mul_2exp(r,i,j) mpz_mul_2exp(r,i,j)
+#define isl_int_mul_si(r,i,j) mpz_mul_si(r,i,j)
#define isl_int_mul_ui(r,i,j) mpz_mul_ui(r,i,j)
#define isl_int_pow_ui(r,i,j) mpz_pow_ui(r,i,j)
#define isl_int_addmul(r,i,j) mpz_addmul(r,i,j)
+#define isl_int_addmul_ui(r,i,j) mpz_addmul_ui(r,i,j)
#define isl_int_submul(r,i,j) mpz_submul(r,i,j)
+#define isl_int_submul_ui(r,i,j) mpz_submul_ui(r,i,j)
#define isl_int_gcd(r,i,j) mpz_gcd(r,i,j)
+#ifdef GMP_NORMALIZE_GCDEXT
+void isl_gmp_gcdext(mpz_t G, mpz_t S, mpz_t T, mpz_t A, mpz_t B);
+#define isl_int_gcdext(g,x,y,i,j) isl_gmp_gcdext(g,x,y,i,j)
+#else
#define isl_int_gcdext(g,x,y,i,j) mpz_gcdext(g,x,y,i,j)
+#endif
#define isl_int_lcm(r,i,j) mpz_lcm(r,i,j)
#define isl_int_divexact(r,i,j) mpz_divexact(r,i,j)
#define isl_int_divexact_ui(r,i,j) mpz_divexact_ui(r,i,j)