e.flt_exp = 0;
}
}
+#endif
+#ifndef IEEEFLOAT
+ if (sz == 4 && (e.flt_mantissa.flt_h_32 & 0x80)) {
+ /* rounding */
+ if ((e.flt_mantissa.flt_h_32 & 0xffffff00) == 0xffffff00) {
+ e.flt_exp++;
+ e.flt_mantissa.flt_h_32 = 0x80000000;
+ }
+ else {
+ e.flt_mantissa.flt_h_32 += 0x80;
+ }
+ }
+ if (sz == 8 && (e.flt_mantissa.flt_l_32 & 0x80)) {
+ /* rounding */
+ if ((e.flt_mantissa.flt_l_32 & 0xffffff00) == 0xffffff00) {
+ e.flt_mantissa.flt_l_32 = 0;
+ if (e.flt_mantissa.flt_h_32 == 0xffffffff) {
+ e.flt_exp++;
+ e.flt_mantissa.flt_h_32 = 0x80000000;
+ }
+ else e.flt_mantissa.flt_h_32++;
+ }
+ else {
+ e.flt_mantissa.flt_l_32 += 0x80;
+ }
+ }
+ if (e.flt_exp > 255) {
+ overflow = 1;
+ e.flt_exp = 255;
+ e.flt_mantissa.flt_h_32 = e.flt_mantissa.flt_l_32 = 0xffffffff;
+ }
#endif
buf[I0] = (e.flt_sign << 7) | (e.flt_exp >> 1);
buf[I1] = ((e.flt_exp&1) << 7) |
/* rounding */
if ((e.flt_mantissa.flt_l_32 & 0xfffff800) == 0xfffff800) {
e.flt_mantissa.flt_l_32 = 0;
- if ((e.flt_mantissa.flt_h_32 += 1) == 0) {
+ if (e.flt_mantissa.flt_h_32 == 0xffffffff) {
e.flt_exp++;
e.flt_mantissa.flt_h_32 = 0x80000000;
}
+ else e.flt_mantissa.flt_h_32++;
}
else {
e.flt_mantissa.flt_l_32 += 0x400;