mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-21 00:07:36 +08:00
Fix hypotf missing mask in hi+lo decomposition
Add the missing mask for the decomposition of hi+lo which caused some
errors of 1-2 ULP.
This change is taken over from FreeBSD:
95436ce20d
Additionally I've removed some variable assignments which were never
read before being overwritten again in the next 2 lines.
This commit is contained in:
parent
1895f91f95
commit
0c6275cc93
@ -29,7 +29,7 @@
|
||||
ha &= 0x7fffffffL;
|
||||
GET_FLOAT_WORD(hb,y);
|
||||
hb &= 0x7fffffffL;
|
||||
if(hb > ha) {a=y;b=x;j=ha; ha=hb;hb=j;} else {a=x;b=y;}
|
||||
if(hb > ha) { j = ha; ha = hb; hb = j; }
|
||||
SET_FLOAT_WORD(a,ha); /* a <- |a| */
|
||||
SET_FLOAT_WORD(b,hb); /* b <- |b| */
|
||||
if((ha-hb)>0xf000000L) {return a+b;} /* x/y > 2**30 */
|
||||
@ -72,7 +72,7 @@
|
||||
a = a+a;
|
||||
SET_FLOAT_WORD(y1,hb&0xfffff000L);
|
||||
y2 = b - y1;
|
||||
SET_FLOAT_WORD(t1,ha+0x00800000L);
|
||||
SET_FLOAT_WORD(t1,(ha+0x00800000L)&0xfffff000UL);
|
||||
t2 = a - t1;
|
||||
w = __ieee754_sqrtf(t1*y1-(w*(-w)-(t1*y2+t2*b)));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user