From ca2fa2841f8e3ce5213a0e8c0abc1d0fdc7d386b Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Fri, 14 Sep 2018 11:05:38 -0700 Subject: [PATCH] closes bpo-28955: Clarified comparisons between NaN and number in reference documentation (GH-5982) Co-authored-by: Benjamin Peterson (cherry picked from commit ad8a0004206ba7aec5a8a60fce413da718080db2) Co-authored-by: Tony Flury --- Doc/reference/expressions.rst | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst index ad00a837b68..4bacac33ae7 100644 --- a/Doc/reference/expressions.rst +++ b/Doc/reference/expressions.rst @@ -1341,12 +1341,11 @@ built-in types. involved, they compare mathematically (algorithmically) correct without loss of precision. - The not-a-number values :const:`float('NaN')` and :const:`Decimal('NaN')` - are special. They are identical to themselves (``x is x`` is true) but - are not equal to themselves (``x == x`` is false). Additionally, - comparing any number to a not-a-number value - will return ``False``. For example, both ``3 < float('NaN')`` and - ``float('NaN') < 3`` will return ``False``. + The not-a-number values ``float('NaN')`` and ``decimal.Decimal('NaN')`` are + special. Any ordered comparison of a number to a not-a-number value is false. + A counter-intuitive implication is that not-a-number values are not equal to + themselves. For example, if ``x = float('NaN')``, ``3 < x``, ``x < 3``, ``x + == x``, ``x != x`` are all false. This behavior is compliant with IEEE 754. * Binary sequences (instances of :class:`bytes` or :class:`bytearray`) can be compared within and across their types. They compare lexicographically using