[Numpy-discussion] 2 bugs related to isinf and isfinite generate crazy warnings
Wed Jun 2 20:11:00 CDT 2010
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 :import numpy as np
Warning: invalid value encountered in isinf
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.
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:
#define npy_isfinite(x) !npy_isnan((x) + (-x))
#define npy_isfinite(x) isfinite((x))
#define npy_isinf(x) (!npy_isfinite(x) && !npy_isnan(x))
#define npy_isinf(x) isinf((x))
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.
More information about the NumPy-Discussion