On Mon, Dec 30, 2019 at 2:58 AM Steven D'Aprano <st...@pearwood.info> wrote:

> Can you explain the scenario where somebody using median will want
> negative NANs to sort to the beginning, below -INF, and positive NANs to
> sort to the end, above +INF?
>

I can kinda-sorta provide a case.  But overall, despite my whimsical
inclusion of an `ieee_total_order()` option in my sample implementation, I
don't really think this is something we should care about.

def my_results(it):
    for x in it:
        x_1 = func1_with_asymptotes(x)
        x_2 = func2_with_asymptotes(x)
        result = x_1 / x_2
        yield result

median = statistics.median(my_results(my_iterator))

In concept, if some of my answers "fly off to  +inf" and others "fly off to
-inf", then maybe I want to balance those and look at the "sensible" stuff
in the middle.  But honestly, this feels more like an 'ignore' case.

I don't know whether 'inf/inf' is less than or greater than 42.  The
operation in the Real domain might have a determinate answer (or even just
had I used float128 instead, for example).  But as is, ignoring the nans is
the best I can do.

Moreover, it seems like Python does not preserve sign of the nans for these
operations. I would THINK that -inf/inf should be -nan.  But nope.
Operations that get nans in Python just don't seem to respect the
"sensible" sign of them.

>>> math.copysign(1, float('nan'))
1.0
>>> math.copysign(1, float('-nan'))
-1.0
>>> math.copysign(1, float('-inf'))
-1.0
>>> math.copysign(1, float('-inf') / float('-inf'))
-1.0
>>> math.copysign(1, float('-inf') / float('inf'))
-1.0
>>> math.copysign(1, float('inf') / float('inf'))
-1.0

-- 
Keeping medicines from the bloodstreams of the sick; food
from the bellies of the hungry; books from the hands of the
uneducated; technology from the underdeveloped; and putting
advocates of freedom in prisons.  Intellectual property is
to the 21st century what the slave trade was to the 16th.
_______________________________________________
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/JW3YEKKTEG66C6XV2DH7S62CDEJUY2UV/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to