63: if(hb > ha) {a=y;b=x;j=ha; ha=hb;hb=j;} else {a=x;b=y;}
64: SET_HIGH_WORD(a,ha); /* a <- |a| */
65: SET_HIGH_WORD(b,hb); /* b <- |b| */
66: if((ha-hb)>0x3c00000) {return a+b;} /* x/y > 2**60 */
79: ha -= 0x25800000; hb -= 0x25800000; k += 600;
80: SET_HIGH_WORD(a,ha);
81: SET_HIGH_WORD(b,hb);
82: }
88: t1=0;
89: SET_HIGH_WORD(t1,0x7fd00000); /* t1=2^1022 */
90: b *= t1;
96: k -= 600;
97: SET_HIGH_WORD(a,ha);
98: SET_HIGH_WORD(b,hb);
99: }
104: t1 = 0;
105: SET_HIGH_WORD(t1,ha);
106: t2 = a-t1;
110: yy1 = 0;
111: SET_HIGH_WORD(yy1,hb);
112: y2 = b - yy1;
113: t1 = 0;
114: SET_HIGH_WORD(t1,ha+0x00100000);
115: t2 = a - t1;
121: GET_HIGH_WORD(high,t1);
122: SET_HIGH_WORD(t1,high+(k<<20));
123: return t1*w;