diff --git a/ChangeLog b/ChangeLog index af9aac0979..4109a7587b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-05-06 Joseph Myers + + [BZ #14064] + * math/libm-test.inc (check_float_internal): Correct ulp + calculation for subnormal expected results. + 2012-05-06 Andreas Jaeger * Makeconfig (+math-flags): New, set to -frounding-math. diff --git a/NEWS b/NEWS index 036d8d4c73..66b1041485 100644 --- a/NEWS +++ b/NEWS @@ -23,7 +23,7 @@ Version 2.16 13854, 13871, 13872, 13873, 13879, 13883, 13886, 13892, 13895, 13908, 13910, 13911, 13912, 13913, 13915, 13916, 13917, 13918, 13919, 13920, 13921, 13922, 13924, 13926, 13927, 13928, 13938, 13941, 13942, 13963, - 13967, 13970, 13973, 14027, 14033, 14034, 14040, 14049, 14055 + 13967, 13970, 13973, 14027, 14033, 14034, 14040, 14049, 14055, 14064 * ISO C11 support: diff --git a/math/libm-test.inc b/math/libm-test.inc index 59192ed0c5..d65c3e5844 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -503,8 +503,9 @@ check_float_internal (const char *test_name, FLOAT computed, FLOAT expected, 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))); + /* 1ulp for a subnormal value, shifted by MANT_DIG, is the + least normal value. */ + ulp = (FUNC(ldexp) (diff, MANT_DIG) / min_value); break; default: /* It should never happen. */