On Sun, 3 Jul 2005, Tim Peters wrote: > [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.
Looks perfect. >>> 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. I guess you're right. What really threw me is that in all the other languages i know (which is not many, i admit), -1 is a literal -1, not a literal 1 plus a unary minus. >> 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. [...] 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. A reasonable presumption. I always got really wound up that the calculator i had at school had this behaviour too, *even in complex number mode*! Come to think of it, i don't think it could do roots of imaginary numbers at all. However, python is not a calculator. tom -- A military-industrial illusion of democracy -- http://mail.python.org/mailman/listinfo/python-list