...

[Tom Anderson]
> So, is there a way of generating and testing for infinities and NaNs
> that's portable across platforms and versions of python?

Not that I know of, and certainly no simple way.

> If not, could we perhaps have some constants in the math module for them?

See PEP 754 for this.

...

>> Read the manual for the precedence rules.  -x**y groups as -(x**y). -1.0
>> is the correct answer.  If you intended (-x)**y, then you need to insert
>> parentheses to force that order.

> So i see. Any idea why that precedence order was chosen? It goes against
> conventional mathematical notation, as well as established practice in
> other languages.

Eh?  For example, Fortran and Macsyma also give exponentiation higher
precedence than unary minus.  From my POV, Python's choice here was
thoroughly conventional.

> Also, would it be a good idea for (-1.0) ** 0.5 to evaluate to 1.0j? It
> seems a shame to have complex numbers in the language and then miss this
> opportunity to use them!

It's generally true in Python that complex numbers are output only if
complex numbers are input or you explicitly use a function from the
cmath module.  For example,

>>> import math, cmath
>>> math.sqrt(-1)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
ValueError: math domain error
>>> cmath.sqrt(-1)
1j

The presumption is that a complex result is more likely the result of
program error than intent for most applications.  The relative handful
of programmers who expect complex results can get them easily, though.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to