[Python-ideas] Fwd: Make `float('inf') //1 == float('inf')`

Ian Cordasco graffatcolmingov at gmail.com
Thu Sep 18 17:20:19 CEST 2014


On Thu, Sep 18, 2014 at 9:09 AM, Petr Viktorin <encukou at gmail.com> wrote:
> On Thu, Sep 18, 2014 at 3:38 PM, Ian Cordasco
> <graffatcolmingov at gmail.com> wrote:
>>
>> On Sep 18, 2014 2:31 AM, "Petr Viktorin" <encukou at gmail.com> wrote:
>>>
>>> For the record, this gives inf in Numpy.
>>>
>>> >>> import numpy
>>> >>> numpy.array(float('inf')) // 1
>>> inf
>>>
>>> AFAIK this and http://bugs.python.org/issue22198 are the only
>>> differences from Python floats, at least on my machine.
>>
>> That's an interesting bug report and it's significantly different
>> (mathematically speaking) from the discussion here. That aside, I have to
>> wonder if numpy has its own way of representing infinity and how that
>> behaves. I still maintain that it's least surprising for float('inf') // 1
>> to be NaN. You're trying to satisfy float('inf') = mod + 1 * y and in this
>> case mod and y are both indeterminate (because this is basically a
>> nonsensical equation).
>
> Well, in `x = y // a`, as y tends towards infinity, x will also tend
> towards infinity, though in discrete steps. Yes, you get an
> indeterminate value, but one that's larger than any real number.

Sorry? If you've studied mathematics you'd know there's no discrete
value that is the same as infinity. I'm not even sure how anyone could
begin define floor(infinity). Infinity is not present in any discrete
set. Yes float('inf') / 1 should be float('inf'), no one is arguing
that. That's easily shown through limits. floor(float('inf') / 1) has
no intrinsic meaning. Discrete sets such as the naturals, integers,
and rationals are all "countably infinite" but there's no bijective
mapping between them and the real numbers (and therefore, no such
mapping to the complex numbers) because the are uncountably infinite
real numbers.

I understand that intuitively float('inf') // 1 being equal to
infinity is nice, but it is inherently undefined. We don't really have
the concept of undefined so NaN seems most acceptable.

> Are any Numpy developers around? Is there a reason it has different
> behavior from Python?

I expect because of np.array semantics it is different. I'm not sure
if it's intentional or if it's a bug, but I'm curious as well.


More information about the Python-ideas mailing list