From 7b78832aa791271b6f1ca071ad497aa41cde15f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Thu, 22 Mar 2012 21:38:22 +0000 Subject: [PATCH] avoid strict float checking when building arrays.w --- C/c_interface.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/C/c_interface.c b/C/c_interface.c index bd3b83d4d..308df397d 100644 --- a/C/c_interface.c +++ b/C/c_interface.c @@ -3612,9 +3612,20 @@ YAP_ListToFloats(Term t, double *dblp, size_t sz) if (!IsPairTerm(t)) return -1; hd = HeadOfTerm(t); - if (!IsFloatTerm(hd)) - return -1; - dblp[i++] = FloatOfTerm(hd); + if (IsFloatTerm(hd)) { + dblp[i++] = FloatOfTerm(hd); + } else { + extern double Yap_gmp_to_float(Term hd); + + if (IsIntTerm(hd)) + dblp[i++] = IntOfTerm(hd); + else if (IsLongIntTerm(hd)) + dblp[i++] = LongIntOfTerm(hd); + else if (IsBigIntTerm(hd)) + dblp[i++] = Yap_gmp_to_float(hd); + else + return -1; + } if (i == sz) return sz; t = TailOfTerm(t);