[Numpy-discussion] 2 bugs related to isinf and isfinite generate crazy warnings

Eric Firing efiring@hawaii....
Thu Jun 3 12:13:49 CDT 2010


On 06/02/2010 03:24 PM, Charles R Harris wrote:
>
>
> On Wed, Jun 2, 2010 at 7:11 PM, Eric Firing <efiring@hawaii.edu
> <mailto:efiring@hawaii.edu>> wrote:
>
>     http://www.mail-archive.com/numpy-discussion@scipy.org/msg23912.html
>
>     On some systems--but evidently not for most numpy users, or there would
>     have been a steady stream of screams--the appearance of np.inf in any
>     call to np.isfinite or np.isinf yields this:
>
>     In [1]:import numpy as np
>
>     In [2]:np.isinf(np.inf)
>     Warning: invalid value encountered in isinf
>     Out[2]:True
>
>
>     This generates streams of warnings if np.isinf or np.isfinite is applied
>     to an array with many inf values.
>
>     The problem is a combination of two bugs:
>
>     1) When building with setup.py, but perhaps not with scons (which I
>     haven't tried yet), NPY_HAVE_DECL_ISFINITE and friends are never
>     defined, even though they should be--this is all on ubuntu 10.4, in my
>     case, and isfinite and isinf most definitely are in math.h.  It looks to
>     me like the only mechanism for defining these is in SConstruct.

(Already fixed by David C.)

>
>     2) So, with no access to the built-in isinf etc., npy_math.h falls back
>     on the compact but slow macros that replace the much nicer ones that
>     were in numpy a year or so ago.  Here is the relevant part of
>     npy_math.h:
>
>     #ifndef NPY_HAVE_DECL_ISFINITE
>          #define npy_isfinite(x) !npy_isnan((x) + (-x))
>     #else
>          #define npy_isfinite(x) isfinite((x))
>     #endif
>
>     #ifndef NPY_HAVE_DECL_ISINF
>          #define npy_isinf(x) (!npy_isfinite(x) && !npy_isnan(x))
>     #else
>          #define npy_isinf(x) isinf((x))
>     #endif
>
>     isinf calls isfinite, and isfinite calls isnan(x-x).  If x is inf, this
>     generates a nan, so the return value is correct--but generating that nan
>     set the INVALID flag, hence the warning.
>
>     Sorry I don't have a patch to offer.
>
>
> Open a ticket. Since this looks fixable we should get it fixed for 1.5.

Done.

http://projects.scipy.org/numpy/ticket/1500

Eric

>
> Chuck
>
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion



More information about the NumPy-Discussion mailing list