diff options
author | bde <bde@FreeBSD.org> | 2008-03-30 17:17:42 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 2008-03-30 17:17:42 +0000 |
commit | 95436ce20dab5a34ba46373410b96411b1734578 (patch) | |
tree | 6dd503ec910e89069f61517975ad421f43eb1088 /lib/msun | |
parent | de4395b1131e039c6679d1f44e65452a689427e3 (diff) | |
download | FreeBSD-src-95436ce20dab5a34ba46373410b96411b1734578.zip FreeBSD-src-95436ce20dab5a34ba46373410b96411b1734578.tar.gz |
Fix a missing mask in a hi+lo decomposition. Thus bug made the extra
precision in software useless, so hypotf() had some errors in the 1-2
ulp range unless there is extra precision in hardware (as happens on
i386).
Diffstat (limited to 'lib/msun')
-rw-r--r-- | lib/msun/src/e_hypotf.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/msun/src/e_hypotf.c b/lib/msun/src/e_hypotf.c index b100b75..b760cc6 100644 --- a/lib/msun/src/e_hypotf.c +++ b/lib/msun/src/e_hypotf.c @@ -72,7 +72,7 @@ __ieee754_hypotf(float x, float y) a = a+a; SET_FLOAT_WORD(y1,hb&0xfffff000); y2 = b - y1; - SET_FLOAT_WORD(t1,ha+0x00800000); + SET_FLOAT_WORD(t1,(ha+0x00800000)&0xfffff000); t2 = a - t1; w = __ieee754_sqrtf(t1*y1-(w*(-w)-(t1*y2+t2*b))); } |