aSig = extractFloatx80Frac(a);
aExp = extractFloatx80Exp(a);
- if ( aExp == 0x7FFF && (uint64_t) ( aSig<<1 ) ) {
- return propagateFloatx80NaNOneArg( a, status );
+ if ( aExp == 0x7FFF ) {
+ if ( (uint64_t) ( aSig<<1 ) )
+ return propagateFloatx80NaNOneArg( a, status );
+ return packFloatx80( 0, 0x7FFF, floatx80_default_infinity_low );
}
if ( aExp == 0 ) {
aExp = extractFloatx80Exp(a);
aSign = extractFloatx80Sign(a);
- if ( aExp == 0x7FFF && (uint64_t) ( aSig<<1 ) ) {
- return propagateFloatx80NaNOneArg( a, status );
+ if ( aExp == 0x7FFF ) {
+ if ( (uint64_t) ( aSig<<1 ) )
+ return propagateFloatx80NaNOneArg( a, status );
+ return packFloatx80 ( !aSign, 0x7FFF, floatx80_default_infinity_low );
}
- aSign = !aSign;
-
- if ( aExp == 0 ) {
+ aSign = !aSign;
+
+ if ( aExp == 0 ) {
if ( aSig == 0 ) return packFloatx80( aSign, 0, 0 );
normalizeFloatx80Subnormal( aSig, &aExp, &aSig );
}