asuint64
uint64_t __u = asuint64(d); \
(hi) = asuint64(d) >> 32; \
(lo) = (uint32_t)asuint64(d); \
INSERT_WORDS(d, hi, (uint32_t)asuint64(d))
INSERT_WORDS(d, asuint64(d)>>32, lo)
ki = asuint64(kd) >> 16;
ki = asuint64(kd);
return asuint64(x) >> 52;
if (asuint64(x) == asuint64(-INFINITY))
if (asuint64(x) >> 63)
ki = asuint64(kd); /* k. */
return asuint64(x) >> 52;
if (asuint64(x) == asuint64(-INFINITY))
if (!(asuint64(x) >> 63))
else if (asuint64(x) >= asuint64(-1075.0))
if (2 * asuint64(x) > 2 * asuint64(928.0))
ki = asuint64(kd);
ki = asuint64(kd);
return asuint64(x) >> 48;
ix = asuint64(x);
#define LO asuint64(1.0 - 0x1p-4)
#define HI asuint64(1.0 + 0x1.09p-4)
if (WANT_ROUNDING && predict_false(ix == asuint64(1.0)))
if (ix == asuint64(INFINITY)) /* log(inf) == inf. */
ix = asuint64(x * 0x1p52);
rhi = asdouble(asuint64(r) & -1ULL << 32);
return asuint64(x) >> 48;
ix = asuint64(x);
#define LO asuint64(1.0 - 0x1.5b51p-5)
#define HI asuint64(1.0 + 0x1.6ab2p-5)
if (WANT_ROUNDING && predict_false(ix == asuint64(1.0)))
rhi = asdouble(asuint64(r) & -1ULL << 32);
if (ix == asuint64(INFINITY)) /* log(inf) == inf. */
ix = asuint64(x * 0x1p52);
uint32_t abstop = asuint64(x)>>32 & 0x7fffffff;
uint64_t sign = asuint64(x) & (1ULL << 63);
double_t toint = asdouble(asuint64(1/EPS) | sign);
if (asuint64(x) >> 63)
ki = asuint64(kd) >> 16;
ki = asuint64(kd);
return 2 * i - 1 >= 2 * asuint64(INFINITY) - 1;
ix = asuint64(x);
iy = asuint64(y);
if (ix == asuint64(1.0))
if (2 * ix > 2 * asuint64(INFINITY) ||
2 * iy > 2 * asuint64(INFINITY))
if (2 * ix == 2 * asuint64(1.0))
if ((2 * ix < 2 * asuint64(1.0)) == !(iy >> 63))
return asuint64(x) >> 52;
if (ix == asuint64(1.0))
return ix > asuint64(1.0) ? 1.0 + y :
return (ix > asuint64(1.0)) == (topy < 0x800) ?
ix = asuint64(x * 0x1p52);
double_t lhi = asdouble(asuint64(hi) & -1ULL << 27);
if (predict_false((asuint64(ylogx) >> 47 & 0xffff) >=
asuint64(126.0 * POWF_SCALE) >> 47)) {
ki = asuint64(kd);