[Numpy-discussion] 2 bugs related to isinf and isfinite generate crazy warnings
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 <firstname.lastname@example.org
> <mailto:email@example.com>> wrote:
> 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
> In :np.isinf(np.inf)
> 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.
(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
> #ifndef NPY_HAVE_DECL_ISFINITE
> #define npy_isfinite(x) !npy_isnan((x) + (-x))
> #define npy_isfinite(x) isfinite((x))
> #ifndef NPY_HAVE_DECL_ISINF
> #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.
> Open a ticket. Since this looks fixable we should get it fixed for 1.5.
> NumPy-Discussion mailing list
More information about the NumPy-Discussion