19 static const float atanhi[] = {
26 static const float atanlo[] = {
33 static const float aT[] = {
62 if(hx>0)
return atanhi[3]+atanlo[3];
63 else return -atanhi[3]-atanlo[3];
64 }
if (ix < 0x3ee00000) {
65 if (ix < 0x31000000) {
66 if(huge+x>
one)
return x;
71 if (ix < 0x3f980000) {
72 if (ix < 0x3f300000) {
73 id = 0; x = ((float)2.0*x-
one)/((float)2.0+x);
75 id = 1; x = (x-
one)/(x+
one);
78 if (ix < 0x401c0000) {
79 id = 2; x = (x-(float)1.5)/(
one+(float)1.5*x);
81 id = 3; x = -(float)1.0/x;
88 s1 = z*(aT[0]+w*(aT[2]+w*(aT[4]+w*(aT[6]+w*(aT[8]+w*aT[10])))));
89 s2 = w*(aT[1]+w*(aT[3]+w*(aT[5]+w*(aT[7]+w*aT[9]))));
90 if (
id<0)
return x - x*(s1+s2);
92 z = atanhi[id] - ((x*(s1+s2) - atanlo[
id]) - x);
#define GET_FLOAT_WORD(i, d)