about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-09-15 17:24:23 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-09-15 17:24:23 +0000
commit694aabefd2eb3a0e2c5624d7feb1d7310b2bdd8b (patch)
treee53ee8681fc6863277423922a1832087a23c456d
parent828bf6828b048b1482e95f84ca92e5fe0edcdc0c (diff)
downloadglibc-694aabefd2eb3a0e2c5624d7feb1d7310b2bdd8b.tar.gz
glibc-694aabefd2eb3a0e2c5624d7feb1d7310b2bdd8b.tar.xz
glibc-694aabefd2eb3a0e2c5624d7feb1d7310b2bdd8b.zip
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.
-rw-r--r--ChangeLog4
-rw-r--r--NEWS12
-rw-r--r--sysdeps/ieee754/flt-32/e_hypotf.c12
3 files changed, 12 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 4d6f2bb313..f807e7cf17 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2015-09-15  Joseph Myers  <joseph@codesourcery.com>
 
+	[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 f782af359e..a09ba38f73 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 <regexp.h> has been removed.  Programs that require
   this header must be updated to use <regex.h> instead.
diff --git a/sysdeps/ieee754/flt-32/e_hypotf.c b/sysdeps/ieee754/flt-32/e_hypotf.c
index 8f499b5fde..717b82e42f 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)