summaryrefslogtreecommitdiffstatshomepage
path: root/tests/float/complex1.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2017-09-04 14:16:27 +1000
committerDamien George <damien.p.george@gmail.com>2017-09-04 14:16:27 +1000
commitd4b75f6b6822885e331c69a74e56e23af40a6264 (patch)
treeab0d1c7d77cb366abc9379b00b22cee07aa9a9c1 /tests/float/complex1.py
parent9950865c39044e9fef295d0676af7c5fd55289ea (diff)
downloadmicropython-d4b75f6b6822885e331c69a74e56e23af40a6264.tar.gz
micropython-d4b75f6b6822885e331c69a74e56e23af40a6264.zip
py/obj: Fix comparison of float/complex NaN with itself.
IEEE floating point is specified such that a comparison of NaN with itself returns false, and Python respects these semantics. This patch makes uPy also have these semantics. The fix has a minor impact on the speed of the object-equality fast-path, but that seems to be unavoidable and it's much more important to have correct behaviour (especially in this case where the wrong answer for nan==nan is silently returned).
Diffstat (limited to 'tests/float/complex1.py')
-rw-r--r--tests/float/complex1.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/tests/float/complex1.py b/tests/float/complex1.py
index a6038de04a..7f0b317b35 100644
--- a/tests/float/complex1.py
+++ b/tests/float/complex1.py
@@ -37,6 +37,11 @@ ans = 1j ** 2.5j; print("%.5g %.5g" % (ans.real, ans.imag))
print(1j == 1)
print(1j == 1j)
+# comparison of nan is special
+nan = float('nan') * 1j
+print(nan == 1j)
+print(nan == nan)
+
# builtin abs
print(abs(1j))
print("%.5g" % abs(1j + 2))