sign = signF32UI( uiA );\r
exp = expF32UI( uiA );\r
sig = fracF32UI( uiA );\r
+ if ( ( exp == 0xFF ) && sig ) sign = 0;\r
if ( exp ) sig |= 0x00800000;\r
sig64 = (uint_fast64_t) sig<<32;\r
shiftCount = 0xAF - exp;\r
shiftCount = 0xBE - exp;\r
if ( shiftCount < 0 ) {\r
softfloat_raiseFlags( softfloat_flag_invalid );\r
- if ( ! sign ) {\r
+ if ( ! sign || ( ( exp == 0xFF ) && sig ) ) {\r
return INT64_C( 0x7FFFFFFFFFFFFFFF );\r
}\r
return - INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1;\r
sign = signF64UI( uiA );\r
exp = expF64UI( uiA );\r
sig = fracF64UI( uiA );\r
+ if ( ( exp == 0x7FF ) && sig ) sign = 0;\r
if ( exp ) sig |= UINT64_C( 0x0010000000000000 );\r
shiftCount = 0x42C - exp;\r
if ( 0 < shiftCount ) sig = softfloat_shift64RightJam( sig, shiftCount );\r
softfloat_raiseFlags( softfloat_flag_invalid );\r
return\r
! sign\r
+ || ( ( exp == 0x7FF )\r
+ && fracF64UI( uiA ) )\r
? INT64_C( 0x7FFFFFFFFFFFFFFF )\r
: - INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1;\r
}\r
/*----------------------------------------------------------------------------\r
| The pattern for a default generated single-precision NaN.\r
*----------------------------------------------------------------------------*/\r
-#define defaultNaNF32UI 0xFFFFFFFF\r
+#define defaultNaNF32UI 0x7FC00000\r
\r
/*----------------------------------------------------------------------------\r
| Returns 1 if the single-precision floating-point value `a' is a signaling\r
/*----------------------------------------------------------------------------\r
| The pattern for a default generated double-precision NaN.\r
*----------------------------------------------------------------------------*/\r
-#define defaultNaNF64UI UINT64_C(0xFFFFFFFFFFFFFFFF)\r
+#define defaultNaNF64UI UINT64_C(0x7FF8000000000000)\r
\r
/*----------------------------------------------------------------------------\r
*----------------------------------------------------------------------------*/\r