Double(Float.signalingNaN).isSignalingNaN
is false
.
Is this a bug?
extension Float {
var bits: String { String(self.bitPattern, radix: 2) + String(repeating: " ", count: 32) }
}
extension Double {
var bits: String { String(self.bitPattern, radix: 2) }
}
print("""
Value | Bit pattern | isNaN | isSignalingNaN
---------------------------|-----------------------------------------------------------------|-------|----------------
Double.nan | \(Double.nan.bits ) | \(Double.nan .isNaN) | \(Double.nan .isSignalingNaN) âś…
Double.signalingNaN | \(Double.signalingNaN.bits ) | \(Double.signalingNaN .isNaN) | \(Double.signalingNaN .isSignalingNaN) âś…
Float.nan | \( Float.nan.bits ) | \( Float.nan .isNaN) | \(Float.nan .isSignalingNaN) âś…
Float.signalingNaN | \( Float.signalingNaN.bits ) | \( Float.signalingNaN .isNaN) | \(Float.signalingNaN .isSignalingNaN) âś…
Double(Float.nan) | \(Double(Float.nan).bits ) | \(Double(Float.nan) .isNaN) | \(Double(Float.nan) .isSignalingNaN) âś…
Double(Float.signalingNaN) | \(Double(Float.signalingNaN).bits) | \(Double(Float.signalingNaN).isNaN) | \(Double(Float.signalingNaN).isSignalingNaN) âť“
^ Why is this bit set?
""")
Value | Bit pattern | isNaN | isSignalingNaN |
---|---|---|---|
Double.nan | 111111111111000000000000000000000000000000000000000000000000000 |
true | false |
Double.signalingNaN | 111111111110100000000000000000000000000000000000000000000000000 |
true | true |
Float.nan | 1111111110000000000000000000000 |
true | false |
Float.signalingNaN | 1111111101000000000000000000000 |
true | true |
Double(Float.nan) | 111111111111000000000000000000000000000000000000000000000000000 |
true | false |
Double(Float.signalingNaN) | 111111111111100000000000000000000000000000000000000000000000000 |
true | false |
-----------^ Why is this bit set? |