From 34f8e69dc87f942725d07241d1ebf39b88e4b94e Mon Sep 17 00:00:00 2001 From: jgarcia Date: Sat, 11 Nov 2006 13:44:21 +0000 Subject: [PATCH] frexpf() takes a _float_ as input. When passed a double it can lead to FPE. --- src/c/num_co.d | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/c/num_co.d b/src/c/num_co.d index 5644ffa61..bf0ec9195 100644 --- a/src/c/num_co.d +++ b/src/c/num_co.d @@ -932,7 +932,6 @@ cl_decode_float(cl_object x) int e, s; cl_type tx = type_of(x); float f; - double d; AGAIN: switch (tx) { #ifdef ECL_SHORT_FLOAT @@ -943,21 +942,21 @@ cl_decode_float(cl_object x) case t_singlefloat: { f = sf(x); FLOAT: - if (d >= 0.0) + if (f >= 0.0) { s = 1; - else { - d = -d; + } else { + f = -f; s = 0; } - d = frexpf(d, &e); - x = make_singlefloat(d); + f = frexpf(f, &e); + x = make_singlefloat(f); break; } case t_doublefloat: { double d = df(x); - if (d >= 0.0) + if (d >= 0.0) { s = 1; - else { + } else { d = -d; s = 0; }