able to commit 64 bits
This commit is contained in:
parent
7e108201b0
commit
5e4be93491
@ -362,6 +362,17 @@ Yap_gmp_exp_big_int(MP_INT *b, Int i)
|
|||||||
return MkBigAndClose(&new);
|
return MkBigAndClose(&new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Term
|
||||||
|
Yap_gmp_big_from_64bits(YAP_LONG_LONG i)
|
||||||
|
{
|
||||||
|
char s[64];
|
||||||
|
MP_INT new;
|
||||||
|
|
||||||
|
sprintf(s, "%lld", (long long int)i);
|
||||||
|
mpz_init_set_str (&new, s, 10);
|
||||||
|
return MkBigAndClose(&new);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -3904,7 +3904,7 @@ p_inform_gc(void)
|
|||||||
{
|
{
|
||||||
Term tn = MkIntegerTerm(TotGcTime);
|
Term tn = MkIntegerTerm(TotGcTime);
|
||||||
Term tt = MkIntegerTerm(GcCalls);
|
Term tt = MkIntegerTerm(GcCalls);
|
||||||
Term ts = MkIntegerTerm((TotGcRecovered*sizeof(CELL)));
|
Term ts = Yap_Mk64IntegerTerm((TotGcRecovered*sizeof(CELL)));
|
||||||
|
|
||||||
return(Yap_unify(tn, ARG2) && Yap_unify(tt, ARG1) && Yap_unify(ts, ARG3));
|
return(Yap_unify(tn, ARG2) && Yap_unify(tt, ARG1) && Yap_unify(ts, ARG3));
|
||||||
|
|
||||||
|
@ -431,8 +431,6 @@ IsPrimitiveTerm (Term t)
|
|||||||
|| (IsApplTerm (t) && IsBlobFunctor (FunctorOfTerm (t)))));
|
|| (IsApplTerm (t) && IsBlobFunctor (FunctorOfTerm (t)))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef TERM_EXTENSIONS
|
#ifdef TERM_EXTENSIONS
|
||||||
|
|
||||||
|
|
||||||
|
20
H/eval.h
20
H/eval.h
@ -225,10 +225,28 @@ Term STD_PROTO(Yap_gmp_mod_int_big,(Int, MP_INT *));
|
|||||||
Term STD_PROTO(Yap_gmp_exp_ints,(Int,Int));
|
Term STD_PROTO(Yap_gmp_exp_ints,(Int,Int));
|
||||||
Term STD_PROTO(Yap_gmp_exp_big_int,(MP_INT *,Int));
|
Term STD_PROTO(Yap_gmp_exp_big_int,(MP_INT *,Int));
|
||||||
|
|
||||||
|
Term STD_PROTO(Yap_gmp_big_from_64bits,(YAP_LONG_LONG));
|
||||||
|
|
||||||
Term STD_PROTO(Yap_gmp_add_float_big,(Float, MP_INT *));
|
Term STD_PROTO(Yap_gmp_add_float_big,(Float, MP_INT *));
|
||||||
Term STD_PROTO(Yap_gmp_sub_float_big,(Float, MP_INT *));
|
Term STD_PROTO(Yap_gmp_sub_float_big,(Float, MP_INT *));
|
||||||
Term STD_PROTO(Yap_gmp_sub_big_float,(MP_INT *, Float));
|
Term STD_PROTO(Yap_gmp_sub_big_float,(MP_INT *, Float));
|
||||||
Term STD_PROTO(Yap_gmp_mul_float_big,(Float, MP_INT *));
|
Term STD_PROTO(Yap_gmp_mul_float_big,(Float, MP_INT *));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
inline EXTERN Term Yap_Mk64IntegerTerm(YAP_LONG_LONG);
|
||||||
|
|
||||||
|
inline EXTERN Term
|
||||||
|
Yap_Mk64IntegerTerm(YAP_LONG_LONG i)
|
||||||
|
{
|
||||||
|
if (i <= Int_MAX || i >= Int_MIN) {
|
||||||
|
return MkIntegerTerm((Int)i);
|
||||||
|
} else {
|
||||||
|
#if USE_GMP
|
||||||
|
return Yap_gmp_big_from_64bits(i);
|
||||||
|
#else
|
||||||
|
return MkIntTerm(-1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user