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); }