ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin23] hex input for correct single NaN: ["7fc00000", "7f c0 00 00"] - single nan payload normalized to 1.0..2.0: ["3f c0 00 00", 1.5] correct double_bytes, nan: ["7f f8 00 00 00 00 00 00", NaN] - correct double NaN payload normalized to 1.0..2.0: [1.5] - double NaN payload normalized to 1.0..2.0, via pack('G'): [1.5] unpacked_single [unpack('g')].pack('G') output always quiet: [NaN, "7f f8 00 00 00 00 00 00"] for once, correct single NaN: [unpack('g')].pack('g'): [NaN, "7f c0 00 00"] hex input for correct single NaN: ["7fffe000", "7f ff e0 00"] - single nan payload normalized to 1.0..2.0: ["3f ff e0 00", 1.9990234375] correct double_bytes, nan: ["7f ff fc 00 00 00 00 00", NaN] - correct double NaN payload normalized to 1.0..2.0: [1.9990234375] - double NaN payload normalized to 1.0..2.0, via pack('G'): [1.9990234375] unpacked_single [unpack('g')].pack('G') output always quiet: [NaN, "7f ff fc 00 00 00 00 00"] *** the lost NaN -- output always the same: [unpack('g')].pack('g'): [NaN, "7f c0 00 00"] hex input for correct single NaN: ["7fbfe000", "7f bf e0 00"] - single nan payload normalized to 1.0..2.0: ["3f bf e0 00", 1.4990234375] correct double_bytes, nan: ["7f f7 fc 00 00 00 00 00", NaN] - correct double NaN payload normalized to 1.0..2.0: [1.4990234375] - double NaN payload normalized to 1.0..2.0, via pack('G'): [1.4990234375] unpacked_single [unpack('g')].pack('G') output always quiet: [NaN, "7f ff fc 00 00 00 00 00"] - *** quieted value differs: ["7f ff fc 00 00 00 00 00", "7f f7 fc 00 00 00 00 00"] *** the lost NaN -- output always the same: [unpack('g')].pack('g'): [NaN, "7f c0 00 00"] hex input for correct single NaN: ["7ffff000", "7f ff f0 00"] - single nan payload normalized to 1.0..2.0: ["3f ff f0 00", 1.99951171875] correct double_bytes, nan: ["7f ff fe 00 00 00 00 00", NaN] - correct double NaN payload normalized to 1.0..2.0: [1.99951171875] - double NaN payload normalized to 1.0..2.0, via pack('G'): [1.99951171875] unpacked_single [unpack('g')].pack('G') output always quiet: [NaN, "7f ff fe 00 00 00 00 00"] *** the lost NaN -- output always the same: [unpack('g')].pack('g'): [NaN, "7f c0 00 00"] hex input for correct single NaN: ["7fbff000", "7f bf f0 00"] - single nan payload normalized to 1.0..2.0: ["3f bf f0 00", 1.49951171875] correct double_bytes, nan: ["7f f7 fe 00 00 00 00 00", NaN] - correct double NaN payload normalized to 1.0..2.0: [1.49951171875] - double NaN payload normalized to 1.0..2.0, via pack('G'): [1.49951171875] unpacked_single [unpack('g')].pack('G') output always quiet: [NaN, "7f ff fe 00 00 00 00 00"] - *** quieted value differs: ["7f ff fe 00 00 00 00 00", "7f f7 fe 00 00 00 00 00"] *** the lost NaN -- output always the same: [unpack('g')].pack('g'): [NaN, "7f c0 00 00"] hex input for correct single NaN: ["ffc00000", "ff c0 00 00"] - single nan payload normalized to 1.0..2.0: ["bf c0 00 00", -1.5] correct double_bytes, nan: ["ff f8 00 00 00 00 00 00", NaN] - correct double NaN payload normalized to 1.0..2.0: [-1.5] - double NaN payload normalized to 1.0..2.0, via pack('G'): [-1.5] unpacked_single [unpack('g')].pack('G') output always quiet: [NaN, "ff f8 00 00 00 00 00 00"] *** the lost NaN -- output always the same: [unpack('g')].pack('g'): [NaN, "7f c0 00 00"] hex input for correct single NaN: ["ffffe000", "ff ff e0 00"] - single nan payload normalized to 1.0..2.0: ["bf ff e0 00", -1.9990234375] correct double_bytes, nan: ["ff ff fc 00 00 00 00 00", NaN] - correct double NaN payload normalized to 1.0..2.0: [-1.9990234375] - double NaN payload normalized to 1.0..2.0, via pack('G'): [-1.9990234375] unpacked_single [unpack('g')].pack('G') output always quiet: [NaN, "ff ff fc 00 00 00 00 00"] *** the lost NaN -- output always the same: [unpack('g')].pack('g'): [NaN, "7f c0 00 00"] hex input for correct single NaN: ["ffbfe000", "ff bf e0 00"] - single nan payload normalized to 1.0..2.0: ["bf bf e0 00", -1.4990234375] correct double_bytes, nan: ["ff f7 fc 00 00 00 00 00", NaN] - correct double NaN payload normalized to 1.0..2.0: [-1.4990234375] - double NaN payload normalized to 1.0..2.0, via pack('G'): [-1.4990234375] unpacked_single [unpack('g')].pack('G') output always quiet: [NaN, "ff ff fc 00 00 00 00 00"] - *** quieted value differs: ["ff ff fc 00 00 00 00 00", "ff f7 fc 00 00 00 00 00"] *** the lost NaN -- output always the same: [unpack('g')].pack('g'): [NaN, "7f c0 00 00"] hex input for correct single NaN: ["fffff000", "ff ff f0 00"] - single nan payload normalized to 1.0..2.0: ["bf ff f0 00", -1.99951171875] correct double_bytes, nan: ["ff ff fe 00 00 00 00 00", NaN] - correct double NaN payload normalized to 1.0..2.0: [-1.99951171875] - double NaN payload normalized to 1.0..2.0, via pack('G'): [-1.99951171875] unpacked_single [unpack('g')].pack('G') output always quiet: [NaN, "ff ff fe 00 00 00 00 00"] *** the lost NaN -- output always the same: [unpack('g')].pack('g'): [NaN, "7f c0 00 00"] hex input for correct single NaN: ["ffbff000", "ff bf f0 00"] - single nan payload normalized to 1.0..2.0: ["bf bf f0 00", -1.49951171875] correct double_bytes, nan: ["ff f7 fe 00 00 00 00 00", NaN] - correct double NaN payload normalized to 1.0..2.0: [-1.49951171875] - double NaN payload normalized to 1.0..2.0, via pack('G'): [-1.49951171875] unpacked_single [unpack('g')].pack('G') output always quiet: [NaN, "ff ff fe 00 00 00 00 00"] - *** quieted value differs: ["ff ff fe 00 00 00 00 00", "ff f7 fe 00 00 00 00 00"] *** the lost NaN -- output always the same: [unpack('g')].pack('g'): [NaN, "7f c0 00 00"]