[Python-ideas] Fwd: Make `float('inf') //1 == float('inf')`
Steven D'Aprano
steve at pearwood.info
Thu Sep 18 18:17:36 CEST 2014
On Thu, Sep 18, 2014 at 05:59:02PM +0200, Petr Viktorin wrote:
[...]
> > 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.
>
> There is even no *real* number that is the same as infinity.
Correct. Once we start talking about a value representing infinity,
we're being impure and mathematically dubious, regardless of whether we
have ints or floats.
But more than that, an IEEE-754 infinity doesn't just represent
mathematical infinity, but also finite numbers which overflowed. Hence:
py> 1.7976931348623157e+308 * 1.1
inf
I don't think it is clear what inf//1 should return, which suggests to
me that returning a NAN is perhaps less wrong than returning inf. (If we
really don't know how to interpret inf//1, then a NAN, or an exception,
is the right answer.)
[...]
> What I do care about is that Python and Numpy should give the same
> result. It would be nice to see this changed in either Python or
> Numpy, whatever the "correct" result is.
That is reasonable.
--
Steven
More information about the Python-ideas
mailing list