On 20 April 2011 11:11, Aurelien Jarno <aurel...@aurel32.net> wrote: > @@ -624,10 +630,11 @@ static floatx80 commonNaNToFloatx80( commonNaNT a > STATUS_PARAM) > return z; > } > > - if (a.high) > - z.low = a.high; > - else > + if (a.high >> 1) { > + z.low = LIT64( 0x8000000000000000 ) | a.high >> 1; > + } else { > z.low = floatx80_default_nan_low; > + } > z.high = ( ( (uint16_t) a.sign )<<15 ) | 0x7FFF; > return z; > }
This is still retaining the sign bit from the input if it generates a default NaN because the mantissa would have been zero. This isn't consistent with the commonNaNToFloat64/32, which just return the float64/32_default_nan with whatever sign it has. -- PMM