From 4a63c20755f0a5a187d21fe1b3ebd1c01b6e7a50 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Tue, 30 Oct 2007 01:13:09 -0700 Subject: [PATCH] float.c: handle round-up-to-denorm correctly. --- float.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/float.c b/float.c index bd2cd58..39bd357 100644 --- a/float.c +++ b/float.c @@ -724,20 +724,15 @@ static int to_float(const char *str, int s, uint8_t * result, exponent--; if (exponent >= 2 - expmax && exponent <= expmax) { type = FL_NORMAL; - } else if (exponent < 2 - expmax && - exponent >= 2 - expmax - fmt->mantissa) { - type = FL_DENORMAL; } else if (exponent > 0) { if (pass0 == 1) error(ERR_WARNING|ERR_WARN_FL_OVERFLOW, "overflow in floating-point constant"); type = FL_INFINITY; } else { - /* underflow */ - if (pass0 == 1) - error(ERR_WARNING|ERR_WARN_FL_UNDERFLOW, - "underflow in floating-point constant"); - type = FL_ZERO; + /* underflow or denormal; the denormal code handles + actual underflow. */ + type = FL_DENORMAL; } } else { /* Zero */ -- 2.7.4