[Numpy-discussion] Re: sqrt and divide

Robert Kern robert.kern at gmail.com
Tue Apr 11 23:16:03 CDT 2006


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 at 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





More information about the Numpy-discussion mailing list