Module Name:    src
Committed By:   gson
Date:           Sun Jan 24 20:34:30 UTC 2016

Modified Files:
        src/lib/libm/src: e_hypotf.c

Log Message:
Fix incorrect magic numbers in scaling.  From FreeBSD commit 23397, by
way of Rin Okuyama.  Fixes PR lib/50698.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/lib/libm/src/e_hypotf.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libm/src/e_hypotf.c
diff -u src/lib/libm/src/e_hypotf.c:1.9 src/lib/libm/src/e_hypotf.c:1.10
--- src/lib/libm/src/e_hypotf.c:1.9	Fri Apr 25 22:21:53 2008
+++ src/lib/libm/src/e_hypotf.c	Sun Jan 24 20:34:30 2016
@@ -15,7 +15,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBM_SCCS) && !defined(lint)
-__RCSID("$NetBSD: e_hypotf.c,v 1.9 2008/04/25 22:21:53 christos Exp $");
+__RCSID("$NetBSD: e_hypotf.c,v 1.10 2016/01/24 20:34:30 gson Exp $");
 #endif
 
 #include "math.h"
@@ -43,22 +43,22 @@ __ieee754_hypotf(float x, float y)
 	       if(hb == 0x7f800000) w = b;
 	       return w;
 	   }
-	   /* scale a and b by 2**-60 */
-	   ha -= 0x5d800000; hb -= 0x5d800000;	k += 60;
+	   /* scale a and b by 2**-68 */
+	   ha -= 0x22000000; hb -= 0x22000000;	k += 68;
 	   SET_FLOAT_WORD(a,ha);
 	   SET_FLOAT_WORD(b,hb);
 	}
 	if(hb < 0x26800000) {	/* b < 2**-50 */
 	    if(hb <= 0x007fffff) {	/* subnormal b or 0 */
 	        if(hb==0) return a;
-		SET_FLOAT_WORD(t1,0x3f000000);	/* t1=2^126 */
+		SET_FLOAT_WORD(t1,0x7e800000);	/* t1=2^126 */
 		b *= t1;
 		a *= t1;
 		k -= 126;
-	    } else {		/* scale a and b by 2^60 */
-	        ha += 0x5d800000; 	/* a *= 2^60 */
-		hb += 0x5d800000;	/* b *= 2^60 */
-		k -= 60;
+	    } else {		/* scale a and b by 2^68 */
+	        ha += 0x22000000; 	/* a *= 2^68 */
+		hb += 0x22000000;	/* b *= 2^68 */
+		k -= 68;
 		SET_FLOAT_WORD(a,ha);
 		SET_FLOAT_WORD(b,hb);
 	    }

Reply via email to