From: Joseph Myers Date: Tue, 15 Sep 2015 17:24:23 +0000 (+0000) Subject: Simplify hypotf infinity handling (bug 15918). X-Git-Tag: glibc-2.23~488 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=694aabefd2eb3a0e2c5624d7feb1d7310b2bdd8b;p=thirdparty%2Fglibc.git Simplify hypotf infinity handling (bug 15918). Bug 15918 points out that the handling of infinities in hypotf can be simplified: it's enough to return the absolute value of the infinite argument without first comparing it to the other argument and possibly returning that other argument's absolute value. This patch makes that cleanup (which should not change how hypotf behaves on any input). Tested for x86_64. [BZ #15918] * sysdeps/ieee754/flt-32/e_hypotf.c (__ieee754_hypotf): Simplify handling of cases where one argument is an infinity. --- diff --git a/ChangeLog b/ChangeLog index 4d6f2bb3136..f807e7cf176 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2015-09-15 Joseph Myers + [BZ #15918] + * sysdeps/ieee754/flt-32/e_hypotf.c (__ieee754_hypotf): Simplify + handling of cases where one argument is an infinity. + [BZ #18875] [BZ #18966] * sysdeps/i386/fpu/e_exp10.S (dbl_min): New object. diff --git a/NEWS b/NEWS index f782af359ee..a09ba38f738 100644 --- a/NEWS +++ b/NEWS @@ -9,12 +9,12 @@ Version 2.23 * The following bugs are resolved with this release: - 2542, 2543, 2558, 2898, 14341, 14912, 15786, 16141, 16517, 16519, 16520, - 16521, 16734, 16973, 16985, 17787, 17905, 18084, 18086, 18240, 18265, - 18370, 18421, 18480, 18525, 18610, 18618, 18647, 18661, 18674, 18675, - 18681, 18757, 18778, 18781, 18787, 18789, 18790, 18795, 18796, 18820, - 18823, 18824, 18863, 18870, 18873, 18875, 18887, 18921, 18952, 18961, - 18966. + 2542, 2543, 2558, 2898, 14341, 14912, 15786, 15918, 16141, 16517, 16519, + 16520, 16521, 16734, 16973, 16985, 17787, 17905, 18084, 18086, 18240, + 18265, 18370, 18421, 18480, 18525, 18610, 18618, 18647, 18661, 18674, + 18675, 18681, 18757, 18778, 18781, 18787, 18789, 18790, 18795, 18796, + 18820, 18823, 18824, 18863, 18870, 18873, 18875, 18887, 18921, 18952, + 18961, 18966. * The obsolete header has been removed. Programs that require this header must be updated to use instead. diff --git a/sysdeps/ieee754/flt-32/e_hypotf.c b/sysdeps/ieee754/flt-32/e_hypotf.c index 8f499b5fdeb..717b82e42f0 100644 --- a/sysdeps/ieee754/flt-32/e_hypotf.c +++ b/sysdeps/ieee754/flt-32/e_hypotf.c @@ -27,17 +27,9 @@ __ieee754_hypotf(float x, float y) GET_FLOAT_WORD(hb,y); hb &= 0x7fffffff; if (ha == 0x7f800000) - { - if (x == y) - return fabsf(y); - return fabsf(x); - } + return fabsf(x); else if (hb == 0x7f800000) - { - if (x == y) - return fabsf(x); - return fabsf(y); - } + return fabsf(y); else if (ha > 0x7f800000 || hb > 0x7f800000) return fabsf(x) * fabsf(y); else if (ha == 0)