diff --git a/C/arith2.c b/C/arith2.c index faea3ee2c..f0803beb8 100644 --- a/C/arith2.c +++ b/C/arith2.c @@ -228,6 +228,10 @@ p_mod(Term t1, Term t2 E_ARGS) RERROR(); } case double_e: +#if USE_GMP + if (bt2 == big_int_e) + mpz_clear(v2.big); +#endif Yap_Error(TYPE_ERROR_INTEGER, MkFloatTerm(v1.dbl), "mod/2"); P = (yamop *)FAILCODE; RERROR(); @@ -404,6 +408,10 @@ p_rem(Term t1, Term t2 E_ARGS) RERROR(); } case double_e: +#if USE_GMP + if (bt2 == big_int_e) + mpz_clear(v2.big); +#endif Yap_Error(TYPE_ERROR_INTEGER, MkFloatTerm(v1.dbl), "mod/2"); P = (yamop *)FAILCODE; RERROR(); @@ -795,6 +803,10 @@ p_xor(Term t1, Term t2 E_ARGS) RERROR(); } case double_e: +#if USE_GMP + if (bt2 == big_int_e) + mpz_clear(v2.big); +#endif Yap_Error(TYPE_ERROR_INTEGER, MkFloatTerm(v1.dbl), "#/2"); P = (yamop *)FAILCODE; RERROR(); @@ -1394,6 +1406,10 @@ p_gcd(Term t1, Term t2 E_ARGS) RERROR(); } case double_e: +#if USE_GMP + if (bt2 == big_int_e) + mpz_clear(v2.big); +#endif Yap_Error(TYPE_ERROR_INTEGER, MkFloatTerm(v1.dbl), "gcd/2"); P = (yamop *)FAILCODE; RERROR(); diff --git a/H/arith2.h b/H/arith2.h index ac889c11d..0d83c43ed 100644 --- a/H/arith2.h +++ b/H/arith2.h @@ -1214,9 +1214,9 @@ sll_ovflw(Int x,Int i) inline static E_FUNC do_sll(Int i, Int j E_ARGS) { +#if USE_GMP Int x = (8*sizeof(CELL)-2)-j; -#if USE_GMP if (x < 0|| sll_ovflw(x,i)) { MP_INT *new = TMP_BIG(); @@ -1226,11 +1226,7 @@ do_sll(Int i, Int j E_ARGS) RBIG(new); } #endif -#ifdef BEAM RINT(i << j); -#else - RINT(i << j); -#endif } /* @@ -1517,8 +1513,10 @@ p_slr(Term t1, Term t2 E_ARGS) RERROR(); } case double_e: +#if USE_GMP if (bt2 == big_int_e) mpz_clear(v2.big); +#endif Yap_Error(TYPE_ERROR_INTEGER, MkFloatTerm(v1.dbl), ">>/2"); P = (yamop *)FAILCODE; RERROR(); diff --git a/docs/yap.tex b/docs/yap.tex index 6db43acde..29010f81a 100644 --- a/docs/yap.tex +++ b/docs/yap.tex @@ -10738,6 +10738,7 @@ p_print_bignum(void) YAP_BigNumOfTerm(YAP_ARG1, mz); gmp_printf("Shows up as %Zd\n", mz); mpz_clear(mz); + return TRUE; } @end example