There have been a number of discussions on this list, and at least one PEP,
about NaN (and other special values).

Let’s keep this thread about handling them in the statistics lib.

But briefly:

NaNs are weird on purpose, and Python should absolutely not deviate from
IEEE.

That’s (one reason) Python has None :-)

If you are that worried about performance, you should probably use numpy
anyway :-)

-CHB



On Thu, Aug 26, 2021 at 3:47 AM Marc-Andre Lemburg <m...@egenix.com> wrote:

> On 26.08.2021 12:15, Steven D'Aprano wrote:
> > On Thu, Aug 26, 2021 at 11:05:01AM +0200, Marc-Andre Lemburg wrote:
> >
> >> Oh, good point. I was under the impression that NAN is handled
> >> as a singleton.
> >
> > There are 4503599627370496 distinct quiet NANs (plus about the same
> > signalling NANs). So it would need to be 4-quadrillion-ton :-)
> >
> > (If anyone is concerned about the large number of NANs, it's less than
> > 0.05% of the total number of floats.)
> >
> > Back in the mid-80s, Apple's floating point library, SANE, distinguished
> > different classes of error with distinct NANs. Few systems have followed
> > that lead, but each NAN still has 51 bits available for a diagnostic
> > code, plus the sign bit. While Python itself only generates a single NAN
> > value, if you are receiving data from outside sources it could contain
> > NANs with distinct payloads.
> >
> > The IEEE-754 standard doesn't mandate that NANs preserve the payload,
> > but it does recommend it. We shouldn't gratuitously discard that
> > information. It could be meaningful to whoever is generating the data.
>
> Fair enough. Would it then make sense to at least have all possible
> NAN objects compare equal, treating the extra error information as an
> attribute value rather than a distinct value and perhaps exposing this
> as such ?
>
> I'm after the "practicality beats purity" here. The math.isnan() test
> doesn't work well in practice, since you'd have to iterate over all
> sequence members and call that test function, which is expensive when
> done in Python.
>
> --
> Marc-Andre Lemburg
> eGenix.com
>
> Professional Python Services directly from the Experts (#1, Aug 26 2021)
> >>> Python Projects, Coaching and Support ...    https://www.egenix.com/
> >>> Python Product Development ...        https://consulting.egenix.com/
> ________________________________________________________________________
>
> ::: We implement business ideas - efficiently in both time and costs :::
>
>    eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
>     D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
>            Registered at Amtsgericht Duesseldorf: HRB 46611
>                https://www.egenix.com/company/contact/
>                      https://www.malemburg.com/
>
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/GX7PAY5ZR76KBK5INWKV2Y67FKCCAK2Y/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-- 
Christopher Barker, PhD (Chris)

Python Language Consulting
  - Teaching
  - Scientific Software Development
  - Desktop GUI and Web Development
  - wxPython, numpy, scipy, Cython
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/OHHP7MMAGQQPXF2OMBOXYFDTPA67DMUP/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to