DP_FBITS
if (xm >> (DP_FBITS + 1 + 3)) { /* carry out */
while ((xm >> (DP_FBITS + 3)) == 0) {
for (bm = DP_MBIT(DP_FBITS + 2); bm; bm >>= 1) {
while ((rm >> (DP_FBITS + 3)) == 0) {
xe = DP_FBITS;
while ((xm >> DP_FBITS) == 0) {
xe = DP_FBITS + 3;
if (xm >> (DP_FBITS + 1 + 3)) {
while (xm >> (DP_FBITS + 1 + 3)) {
while ((xm >> (DP_FBITS + 3)) == 0) {
xm << (DP_FBITS - SP_FBITS));
(u64) xm << (DP_FBITS - SP_FBITS));
xm <<= 64 - (DP_FBITS + 1);
ym <<= 64 - (DP_FBITS + 1);
xm <<= 64 - (DP_FBITS + 1);
ym <<= 64 - (DP_FBITS + 1);
rm = (rm >> (64 - (DP_FBITS + 1 + 3))) |
((rm << (DP_FBITS + 1 + 3)) != 0);
rm = (rm >> (64 - (DP_FBITS + 1 + 3 + 1))) |
((rm << (DP_FBITS + 1 + 3 + 1)) != 0);
if (xe >= DP_FBITS)
residue = xm << (64 - DP_FBITS + xe);
xm >>= DP_FBITS - xe;
if (xm >> (DP_FBITS + 1 + 3)) { /* carry out */
while ((xm >> (DP_FBITS + 3)) == 0) {
if (xe > DP_FBITS) {
xm <<= xe - DP_FBITS;
} else if (xe < DP_FBITS) {
residue = xm << (64 - DP_FBITS + xe);
xm >>= DP_FBITS - xe;
if (xe > DP_FBITS) {
xm <<= xe - DP_FBITS;
} else if (xe < DP_FBITS) {
residue <<= 63 - DP_FBITS;
xm >>= DP_FBITS - xe;
for (i = DP_FBITS - 1; i >= 0; i--)
for (i = DP_FBITS - 1; i >= 0; i--)
for (i = DP_FBITS - 1; i >= 0; i--)
ieee754dp_get_rounding(sn, xm) >> (DP_FBITS + 1 + 3))
if (xm >> (DP_FBITS + 3 + 1)) {
assert((xm >> (DP_FBITS + 1)) == 0); /* no excess */
assert((xm >> (DP_FBITS + 1)) == 0); /* no excess */
qbit = (DPMANT(x) & DP_MBIT(DP_FBITS - 1)) == DP_MBIT(DP_FBITS - 1);
DPMANT(r) |= DP_MBIT(DP_FBITS - 1);
DPMANT(r) &= ~DP_MBIT(DP_FBITS - 1);
DPMANT(r) |= DP_MBIT(DP_FBITS - 2);
assert((xm >> (DP_FBITS + 1 + 3)) == 0); /* no excess */
#define DP_HIDDEN_BIT DP_MBIT(DP_FBITS)
((rs > (DP_FBITS+3))?1:((v) >> (rs)) | ((v) << (64-(rs)) != 0))
while ((m >> DP_FBITS) == 0) { m <<= 1; e--; }
assert(((m) >> DP_FBITS) == 0);
else if (ieee754_csr.nan2008 ^ !(vm & DP_MBIT(DP_FBITS - 1))) \
xm >> (DP_FBITS - SP_FBITS));
rm = (xm >> (DP_FBITS - (SP_FBITS + 3))) |
((xm << (64 - (DP_FBITS - (SP_FBITS + 3)))) != 0);