29: if(hb > ha) {a=y;b=x;j=ha; ha=hb;hb=j;} else {a=x;b=y;}
30: SET_FLOAT_WORD(a,ha); /* a <- |a| */
31: SET_FLOAT_WORD(b,hb); /* b <- |b| */
32: if((ha-hb)>0xf000000) {return a+b;} /* x/y > 2**30 */
42: ha -= 0x5d800000; hb -= 0x5d800000; k += 60;
43: SET_FLOAT_WORD(a,ha);
44: SET_FLOAT_WORD(b,hb);
45: }
48: if(hb==0) return a;
49: SET_FLOAT_WORD(t1,0x3f000000); /* t1=2^126 */
50: b *= t1;
56: k -= 60;
57: SET_FLOAT_WORD(a,ha);
58: SET_FLOAT_WORD(b,hb);
59: }
63: if (w>b) {
64: SET_FLOAT_WORD(t1,ha&0xfffff000);
65: t2 = a-t1;
68: a = a+a;
69: SET_FLOAT_WORD(yy1,hb&0xfffff000);
70: y2 = b - yy1;
71: SET_FLOAT_WORD(t1,ha+0x00800000);
72: t2 = a - t1;
75: if(k!=0) {
76: SET_FLOAT_WORD(t1,0x3f800000+(k<<23));
77: return t1*w;