122 int32_t sign = (int32_t)0x80000000;
123 uint32_t r, t1, s1, ix1, q1;
124 int32_t ix0, s0, q, m, t, i;
129 if ((ix0 & 0x7FF00000) == 0x7FF00000)
140 if (((ix0 & (~sign)) | ix1) == 0)
164 for (i = 0; (ix0 & 0x00100000) == 0; i++)
170 ix0 |= (ix1 >> (32 - i));
175 ix0 = (ix0 & 0x000FFFFF) | 0x00100000;
179 ix0 += ix0 + ((ix1 & sign) >> 31);
187 ix0 += ix0 + ((ix1 & sign) >> 31);
189 q = q1 = s0 = s1 = 0;
201 ix0 += ix0 + ((ix1 & sign) >> 31);
211 if ((t < ix0) || ((t == ix0) && (t1 <= ix1)))
214 if (((t1 & sign) == (uint32_t)sign) && (s1 & sign) == 0)
227 ix0 += ix0 + ((ix1 & sign) >> 31);
233 if ((ix0 | ix1) != 0)
240 if (q1 == (uint32_t)0xFFFFFFFF)
247 if (q1 == (uint32_t)0xFFFFFFFE)
260 ix0 = (q >> 1) + 0x3FE00000;
double sqrt(double x)
Square root function.
#define INSERT_WORDS(d, ix0, ix1)
Set a double from two 32 bit ints.
#define EXTRACT_WORDS(ix0, ix1, d)
Get two 32 bit ints from a double.