(original) (raw)



On Mon, Mar 12, 2018, 3:25 PM Tim Peters <tim.peters@gmail.com> wrote:
\[David Mertz <mertz@gnosis.cx>\]
\> ...
\> I can see no sane reason why anyone would ever call float.is\_integer()
\> actually. That should always be spelled math.isclose(x, int(x)) because
\> IEEE-754\. Attractive nuisance is probably too generous, I'd simply call the
\> method a bug.

Sometimes it's necessary to know, and especially when \_implementing\_
754-conforming functions. For example, what negative infinity raised
to a power needs to return depends on whether the power is an integer
(specifically on whether it's an odd integer):

\>>> (-math.inf) \*\* 3.1
inf

Weird. I take it that's what IEEE-754 says. NaN would sure be more intuitive here since inf+inf-j is not in the domain of Reals. Well, technically neither is inf, but at least it's the limit of the domain. :-).

\>>> (-math.inf) \*\* 3.0 # NOTE THIS ONE
\-inf
\>>> (-math.inf) \*\* 2.9
inf

But, ya, for most people most of the time I agree is\_integer() is an
attractive nuisance. People implementing math functions are famous
for cheerfully enduring any amount of pain needed to get the job done
;-)