union ieee754sp ieee754sp_fdp(union ieee754dp x)
{ union ieee754sp y;
u32 rm;
COMPXDP;
COMPYSP;
EXPLODEXDP;
ieee754_clearcx();
FLUSHXDP;
switch (xc) { case IEEE754_CLASS_SNAN:
x = ieee754dp_nanxcpt(x);
EXPLODEXDP;
fallthrough; case IEEE754_CLASS_QNAN:
y = ieee754sp_nan_fdp(xs, xm); if (!ieee754_csr.nan2008) {
EXPLODEYSP; if (!ieee754_class_nan(yc))
y = ieee754sp_indef();
} return y;
case IEEE754_CLASS_INF: return ieee754sp_inf(xs);
case IEEE754_CLASS_ZERO: return ieee754sp_zero(xs);
case IEEE754_CLASS_DNORM: /* can't possibly be sp representable */
ieee754_setcx(IEEE754_UNDERFLOW);
ieee754_setcx(IEEE754_INEXACT); if ((ieee754_csr.rm == FPU_CSR_RU && !xs) ||
(ieee754_csr.rm == FPU_CSR_RD && xs)) return ieee754sp_mind(xs); return ieee754sp_zero(xs);
case IEEE754_CLASS_NORM: break;
}
/* * Convert from DP_FBITS to SP_FBITS+3 with sticky right shift.
*/
rm = (xm >> (DP_FBITS - (SP_FBITS + 3))) |
((xm << (64 - (DP_FBITS - (SP_FBITS + 3)))) != 0);
return ieee754sp_format(xs, xe, rm);
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet)
¤
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.