Stefan van der Walt wrote:
Hi all
Two quick questions regarding unintuitive numpy behaviour:
Why is the square root of -1 not equal to the square root of -1+0j?
In [5]: N.sqrt(-1.) Out[5]: nan
In [6]: N.sqrt(-1.+0j) Out[6]: 1j
It is frequently the case that the argument being passed to sqrt() is expected to be non-negative and all of their code strictly deals with numbers in the real domain. If the argument happens to be negative, then it is a sign of a bug earlier in the code or a floating point instability. Returning nan gives the programmer the opportunity for sqrt() to complain loudly and expose bugs instead of silently upcasting to a complex type. Programmers who *do* want to work in the complex domain can easily perform the cast explicitly.
Is there an easier way of dividing two scalars than using divide?
In [9]: N.divide(1.,0) Out[9]: inf
x/y ?
(also
In [8]: N.divide(1,0) Out[8]: 0
should probably ruturn inf / nan?)
inf and nan are floating point values. The definition of int division used when both arguments to divide() are ints also yields ints, not floats. -- Robert Kern robert.kern@gmail.com "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco