Should numpy.sqrt(-1) return 1j rather than nan?

Stefan van der Walt stefan at
Wed Oct 11 18:07:05 CDT 2006

On Wed, Oct 11, 2006 at 03:37:34PM -0600, Fernando Perez wrote:
> On 10/11/06, Travis Oliphant <oliphant at> wrote:
> > pearu at wrote:
> > >Could sqrt(-1) made to return 1j again?
> > >
> > Not in NumPy.  But, in scipy it could.
> Without taking sides on which way to go, I'd like to -1 the idea of a
> difference in behavior between numpy and scipy.
> IMHO, scipy should be within reason a strict superset of numpy.
> Gratuitious differences in behavior like this one are going to drive
> us all mad.
> There are people who import scipy for everything, others distinguish
> between numpy and scipy, others use numpy alone and at some point in
> their life's code they do
> import numpy as N -> import scipy as N
> because they start needing stuff not in plain numpy.  Having different
> APIs and behaviors appear there is, I think, a Seriously Bad Idea
> (TM).

I agree with Fernando on this one.

Further, if I understand correctly, changing sqrt and power to give
the right answer by default will slow things down somewhat.  But is it
worth sacrificing intuitive usage for speed?

N.power(2,-2) == 0


N.sqrt(-1) == nan

just doesn't feel right.  Why not then have

N.power(2,-2) == 0.24
N.sqrt(-1) == 1j

and write a special function that does fast calculation of
square-roots for positive values?


Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo

More information about the Numpy-discussion mailing list