43 #ifdef Sudden_Underflow 44 static FPI fpi = {106, 1 - 1023, 2046 - 1023 - 106 + 1, 1, 1};
46 static FPI fpi = {106, 1 - 1023 - 53 + 1, 2046 - 1023 - 106 + 1, 1, 0};
58 rv =
strtodg(s, sp, &fpi, &exp, bits);
64 u->d[0] = u->d[1] = 0.;
68 u->L[_1] = (bits[1] >> 21 | bits[2] << 11) & 0xffffffffL;
70 bits[2] >> 21 | (bits[3] << 11 & 0xfffff) | (
unsigned)((exp + 0x3ff + 105) << 20);
72 if(bits[1] &= 0x1fffff)
88 bits[1] = bits[1] << i | bits[0] >> (32 - i);
89 bits[0] = bits[0] << i & 0xffffffffL;
108 bits[1] = bits[0] >> (32 - i);
109 bits[0] = bits[0] << i & 0xffffffffL;
113 bits[1] = bits[0] << (i - 32);
119 u->L[2] = u->L[3] = 0;
122 u->L[2 + _1] = bits[0];
123 u->L[2 + _0] = (bits[1] & 0xfffff) | (
unsigned)(exp << 20);
139 if(bits[1] & 0xffe00000)
146 u->L[2] = u->L[3] = 0;
154 u->L[_0] = ((bits[3] << i | bits[2] >> j) & 0xfffff) | (unsigned)((65 - i) << 20);
155 u->L[_1] = (bits[2] << i | bits[1] >> j) & 0xffffffffL;
156 u->L[2 + _0] = bits[1] & (1L << j) - 1;
157 u->L[2 + _1] = bits[0];
166 u->L[_0] = (bits[2] >> j & 0xfffff) | (
unsigned)((33 + j) << 20);
167 u->L[_1] = (bits[2] << i | bits[1] >> j) & 0xffffffffL;
168 u->L[2 + _0] = bits[1] & (1L << j) - 1;
169 u->L[2 + _1] = bits[0];
174 u->L[_0] = (bits[2] & 0xfffff) | 33 << 20;
177 u->L[2 + _1] = bits[0];
181 u->L[_0] = ((bits[2] << i | bits[1] >> j) & 0xfffff) | (unsigned)((j + 1) << 20);
182 u->L[_1] = (bits[1] << i | bits[0] >> j) & 0xffffffffL;
184 u->L[2 + _1] = bits[0] & (1L << j) - 1;
190 u->L[_0] = (bits[1] >> j & 0xfffff) | (
unsigned)((j + 1) << 20);
191 u->L[_1] = (bits[1] << i | bits[0] >> j) & 0xffffffffL;
193 u->L[2 + _1] = bits[0] & (1L << j) - 1;
197 u->L[_0] = u->L[2 + _0] = 0x7ff00000;
198 u->L[_1] = u->L[2 + _1] = 0;
202 u->L[0] = u->L[2] = d_QNAN0;
203 u->L[1] = u->L[3] = d_QNAN1;
207 u->L[_0] |= 0x80000000L;
208 u->L[2 + _0] |= 0x80000000L;
int strtodg(CONST char *s00, char **se, FPI *fpi, Long *exp, ULong *bits)