[Numpy-discussion] ieeespecial

Todd Miller jmiller at stsci.edu
Sun Oct 10 17:43:34 CDT 2004


On Sun, 2004-10-10 at 16:53, Darren Dale wrote:
> On Sunday 10 October 2004 03:47 pm, Darren Dale wrote:
> > Hello,
> >
> > I am getting invalid numeric result exceptions when dividing a complex
> > array by zero. Is this the desired behavior?
> >
> > Also, while trying to find a way around the above problem, I ran
> > ieeespecial.test and got the following output. I am running numarray 1.1 on
> > python 2.3.3. Todd, this might be correlated with the numerix package in
> > matplotlib. I tried importing numarray and ieeespecial without matplotlib
> > and the ieeespecial.test was successful.
> >
> 
> On a related note, ieeespecial.getnan appears to be incompatible with complex 
> arrays, see below. 

Thanks for pointing this out.  It's an oversight in the implementation
of ieeespecial and I'll fix it.

> I didnt mention in my last email that I built numarray for 
> my existing blas/lapack libraries, will this change the behavior on my system 
> from the default?

Regarding ieeespecial and complex division by zero, I am pretty sure
blas/lapack linkage is irrelevant.  But... I very rarely link with an
external blas/lapack,  so if there is an issue, I'm unlikely to have
come across it myself.  Still, off the top of my head,  blas/lapack is
unrelated.

Regards,
Todd

> Thanks,
> Darren
> 
> >>> from numarray import *
> >>> from numarray.ieeespecial import *
> >>> b=arange(10,typecode=Complex64)
> >>> a=b/0
> Warning: Encountered invalid numeric result(s)  in divide
> >>> a
> array([              nan             +nanj,
>                      nan             +nanj,
>                      nan             +nanj,
>                      nan             +nanj,
>                      nan             +nanj,
>                      nan             +nanj,
>                      nan             +nanj,
>                      nan             +nanj,
>                      nan             +nanj,
>                      nan             +nanj])
> >>> getnan(a)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
>   File "/usr/lib/python2.3/site-packages/numarray/ieeespecial.py", line 117, 
> ingetnan
>     return _spec.index(a, _spec.NAN)
>   File "/usr/lib/python2.3/site-packages/numarray/ieeespecial.py", line 95, in 
> index
>     return _na.nonzero(mask(a, msk))
>   File "/usr/lib/python2.3/site-packages/numarray/ieeespecial.py", line 87, in 
> mask
>     f = _na.ieeemask(a, m)
>   File "/usr/lib/python2.3/site-packages/numarray/ufunc.py", line 883, in 
> _cache_miss2
>     mode, win1, win2, wout, cfunc, ufargs = \
>   File "/usr/lib/python2.3/site-packages/numarray/ufunc.py", line 929, in 
> _setup
>     convtype1, convtype2, outtype, ucfunc \
>   File "/usr/lib/python2.3/site-packages/numarray/ufunc.py", line 471, in 
> _typematch
>     newInputSignature = (self._typePromoter(intype, atypelist),)*2
>   File "/usr/lib/python2.3/site-packages/numarray/ufunc.py", line 498, in 
> _typePromoter
>     raise TypeError("unable to find type to promote to")
> TypeError: unable to find type to promote to
> 
> >>> getnan(a.real)
> (array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),)
> >>>  





More information about the Numpy-discussion mailing list