Greg Willden wrote: > On 10/11/06, *Travis Oliphant* <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>> wrote: > > Stefan van der Walt wrote: > >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? > > > For NumPy, yes. > > This is one reason that NumPy by itself is not a MATLAB replacement. > > > This is not about being a Matlab replacement. > This is about correctness. > Numpy purports to handle complex numbers. > Mathematically, sqrt(-1) is a complex number. That's vastly oversimplified. If you are working with the reals, then sqrt(-1) is undefined (AKA nan). If you are working in the complex plane, then sqrt(-1) is indeed *a* complex number; of course you don't know *which* complex number it is unless you also specify the branch. > Therefore Numpy *must* return a complex number. No I don't think that it must. I've found it a very useful tool for the past decade plus without it returning complex numbers from sqrt. > Speed should not take precedence over correctness. The current behavior is not incorrect. > > If Numpy doesn't return a complex number then it shouldn't pretend to > support complex numbers. Please relax.
Personally I think that the default error mode should be tightened up. Then people would only see these sort of things if they really care about them. Using Python 2.5 and the errstate class I posted earlier: # This is what I like for the default error state numpy.seterr(invalid='raise', divide='raise', over='raise', under='ignore') a = -numpy.arange(10) with errstate(invalid='ignore'): print numpy.sqrt(a) # This happily returns a bunch of NANs; and one zero. print numpy.sqrt(a.astype(complex)) # This returns a bunch of complex values print numpy.sqrt(a) # This raise a floating point error. No silent NANs returned This same error state make the vagaries of dividing by zero less surprising as well. -tim ------------------------------------------------------------------------- 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 http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Numpy-discussion mailing list Numpy-discussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/numpy-discussion