New submission from Mark Dickinson <dicki...@gmail.com>: I've just discovered that integer-to-complex comparisons are broken, in all versions of Python that I've tested. It looks as though the integer is first converted to a complex number, and then the two complex numbers are compared. That's not correct, and it's contrary to what happens for floats, where there's special handling in place to make sure that exact values are compared. This leads to loss of transitivity of equality:
>>> n = 2**53+1 [51529 refs] >>> float(n) == complex(n) # expect True True [51531 refs] >>> n == float(n) # expect False False [51531 refs] >>> n == complex(n) # expect False, but Python returns True True [51531 refs] Apparently the SAGE folks noticed this some time ago, but AFAICT didn't report it as a bug. See http://www.mail-archive.com/sage-de...@googlegroups.com/msg20891.html For a complex number z and an integer i, 'z == i' should be exactly equivalent to 'z.real == i and z.imag == 0.0'. ---------- assignee: mark.dickinson components: Interpreter Core messages: 105963 nosy: mark.dickinson priority: high severity: normal status: open title: integer-to-complex comparisons give incorrect results type: behavior versions: Python 2.6, Python 2.7, Python 3.1, Python 3.2 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue8748> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com