2006-04-14  H.J. Lu  <hongjiu.lu@intel.com>
	[BZ #2549]
	* math/libm-test.inc (check_float_internal): Support
	denormalized return.
This commit is contained in:
Ulrich Drepper 2007-10-28 01:14:40 +00:00
parent ad3371fbac
commit e6b29af8a3
2 changed files with 24 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2006-04-14 H.J. Lu <hongjiu.lu@intel.com>
[BZ #2549]
* math/libm-test.inc (check_float_internal): Support
denormalized return.
2007-10-23 Andreas Jaeger <aj@suse.de>
[BZ #5208]

View File

@ -487,11 +487,24 @@ check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
else
{
diff = FUNC(fabs) (computed - expected);
/* ilogb (0) isn't allowed. */
if (expected == 0.0)
ulp = diff / FUNC(ldexp) (1.0, - MANT_DIG);
else
ulp = diff / FUNC(ldexp) (1.0, FUNC(ilogb) (expected) - MANT_DIG);
switch (fpclassify (expected))
{
case FP_ZERO:
/* ilogb (0) isn't allowed. */
ulp = diff / FUNC(ldexp) (1.0, - MANT_DIG);
break;
case FP_NORMAL:
ulp = diff / FUNC(ldexp) (1.0, FUNC(ilogb) (expected) - MANT_DIG);
break;
case FP_SUBNORMAL:
ulp = (FUNC(ldexp) (diff, MANT_DIG)
/ FUNC(ldexp) (1.0, FUNC(ilogb) (expected)));
break;
default:
/* It should never happen. */
abort ();
break;
}
set_max_error (ulp, curr_max_error);
print_diff = 1;
if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0