/* * Raise the Invalid Operation IEEE 754 exception * and convert the signaling NaN supplied to a quiet NaN.
*/ union ieee754dp __cold ieee754dp_nanxcpt(union ieee754dp r)
{
assert(ieee754dp_issnan(r));
static u64 ieee754dp_get_rounding(int sn, u64 xm)
{ /* inexact must round of 3 bits
*/ if (xm & (DP_MBIT(3) - 1)) { switch (ieee754_csr.rm) { case FPU_CSR_RZ: break; case FPU_CSR_RN:
xm += 0x3 + ((xm >> 3) & 1); /* xm += (xm&0x8)?0x4:0x3 */ break; case FPU_CSR_RU: /* toward +Infinity */ if (!sn) /* ?? */
xm += 0x8; break; case FPU_CSR_RD: /* toward -Infinity */ if (sn) /* ?? */
xm += 0x8; break;
}
} return xm;
}
/* generate a normal/denormal number with over,under handling * sn is sign * xe is an unbiased exponent * xm is 3bit extended precision value.
*/ union ieee754dp ieee754dp_format(int sn, int xe, u64 xm)
{
assert(xm); /* we don't gen exact zeros (probably should) */
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.