Print this page
*** 98,120 ****
frac |= 1;
if (!frac)
return (x);
xx.i[LOWORD] = 0;
xx.i[HIWORD] &= ~(i - 1);
! if (rm == FE_UPWARD || (rm == FE_TONEAREST &&
! (frac > 0x80000000u || (frac == 0x80000000) &&
! (xx.i[HIWORD] & i))))
xx.i[HIWORD] += i;
} else {
i = 1 << j;
frac = (xx.i[LOWORD] << 1) << (31 - j);
if (!frac)
return (x);
xx.i[LOWORD] &= ~(i - 1);
! if (rm == FE_UPWARD || (rm == FE_TONEAREST &&
! (frac > 0x80000000u || (frac == 0x80000000) &&
! (xx.i[LOWORD] & i)))) {
xx.i[LOWORD] += i;
if (xx.i[LOWORD] == 0)
xx.i[HIWORD]++;
}
}
--- 98,120 ----
frac |= 1;
if (!frac)
return (x);
xx.i[LOWORD] = 0;
xx.i[HIWORD] &= ~(i - 1);
! if ((rm == FE_UPWARD) || ((rm == FE_TONEAREST) &&
! ((frac > 0x80000000u) || ((frac == 0x80000000) &&
! (xx.i[HIWORD] & i)))))
xx.i[HIWORD] += i;
} else {
i = 1 << j;
frac = (xx.i[LOWORD] << 1) << (31 - j);
if (!frac)
return (x);
xx.i[LOWORD] &= ~(i - 1);
! if ((rm == FE_UPWARD) || ((rm == FE_TONEAREST) &&
! (frac > 0x80000000u || ((frac == 0x80000000) &&
! (xx.i[LOWORD] & i))))) {
xx.i[LOWORD] += i;
if (xx.i[LOWORD] == 0)
xx.i[HIWORD]++;
}
}