Serhiy Storchaka added the comment: There are several different NaNs.
>>> x = struct.unpack('d', b'\x00\x00\x00\x00\x00\x00\xf8\x7f')[0] >>> x nan >>> x == x False >>> struct.pack('d', x) b'\x00\x00\x00\x00\x00\x00\xf8\x7f' >>> x = struct.unpack('d', b'\x00\x00\x00\x00\x00\x00\xf9\x7f')[0] >>> x nan >>> x == x False >>> struct.pack('d', x) b'\x00\x00\x00\x00\x00\x00\xf9\x7f' Interesting, but 0*inf and inf-inf return values with the same representation as float('-nan'), not float('nan'). >>> inf = float("inf") >>> struct.pack('d', 0*inf) b'\x00\x00\x00\x00\x00\x00\xf8\xff' >>> struct.pack('d', inf-inf) b'\x00\x00\x00\x00\x00\x00\xf8\xff' >>> struct.pack('d', float('nan')) b'\x00\x00\x00\x00\x00\x00\xf8\x7f' >>> struct.pack('d', float('-nan')) b'\x00\x00\x00\x00\x00\x00\xf8\xff' ---------- nosy: +serhiy.storchaka _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue23185> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com