diff options
Diffstat (limited to 'sysdeps/ieee754/flt-32/e_jnf.c')
-rw-r--r-- | sysdeps/ieee754/flt-32/e_jnf.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sysdeps/ieee754/flt-32/e_jnf.c b/sysdeps/ieee754/flt-32/e_jnf.c index 44a3761adb..4e634778d3 100644 --- a/sysdeps/ieee754/flt-32/e_jnf.c +++ b/sysdeps/ieee754/flt-32/e_jnf.c @@ -167,13 +167,15 @@ __ieee754_jnf(int n, float x) } } if(sgn==1) ret = -b; else ret = b; + ret = math_narrow_eval (ret); } if (ret == 0) - ret = __copysignf (FLT_MIN, ret) * FLT_MIN; - else if (fabsf (ret) < FLT_MIN) { - float force_underflow = ret * ret; - math_force_eval (force_underflow); - } + { + ret = math_narrow_eval (__copysignf (FLT_MIN, ret) * FLT_MIN); + __set_errno (ERANGE); + } + else + math_check_force_underflow (ret); return ret; } strong_alias (__ieee754_jnf, __jnf_finite) |