[Numpy-discussion] isinf raises in inf

Pauli Virtanen pav at iki.fi
Fri Jul 16 04:02:30 EDT 2010


Testing with arithmetic can raise overflows and underflows.

I think the correct isinf is to compare to NPY_INFINITY and -NPY_INFINITY. Patch is attached to #1500

----- Alkuperäinen viesti -----
> On Thu, Jul 15, 2010 at 6:42 PM, John Hunter <jdh2358 at gmail.com> wrote:
> 
> > On Thu, Jul 15, 2010 at 7:27 PM, Charles R Harris
> > <charlesr.harris at gmail.com> wrote:
> > > 
> > > 
> > > On Thu, Jul 15, 2010 at 6:11 PM, John Hunter <jdh2358 at gmail.com>
> > > wrote:
> > > > 
> > > > On Thu, Jul 15, 2010 at 6:14 PM, Eric Firing <efiring at hawaii.edu>
> > wrote:
> > > > > Is it certain that the Solaris compiler lacks isinf?   Is it
> > > > > possible that it has it, but it is not being detected?
> > > > 
> > > > Just to clarify, I'm not using the sun compiler, but gcc-3.4.3 on
> > solaris
> > > > x86
> > > 
> > > Might be related to this thread.   What version of numpy are you
> > > using?
> > 
> > svn HEAD (2.0.0.dev8480)
> > 
> > After reading the thread you suggested, I tried forcing the
> > 
> > CFLAGS=-DNPY_HAVE_DECL_ISFINITE
> > 
> > flag to be set, but this is apparently a bad idea for my platform...
> > 
> > File
> > "/home/titan/johnh/dev/lib/python2.4/site-packages/numpy/core/__init__.py",
> > line 5, in ?
> > import multiarray
> > ImportError: ld.so.1: python: fatal: relocation error: file
> > /home/titan/johnh/dev/lib/python2.4/site-packages/numpy/core/multiarray.so:
> > symbol isfinite: referenced symbol not found
> > 
> > so while I think my bug is related to that thread, I don't see
> > anything in that thread to help me fix my problem.   Or am I missing
> > something?
> > __
> > 
> 
> Can you try out this patch without David's fixes?
> 
> diff --git a/numpy/core/include/numpy/npy_math.h
> b/numpy/core/include/numpy/npy_
> index d53900e..341fb58 100644
> --- a/numpy/core/include/numpy/npy_math.h
> +++ b/numpy/core/include/numpy/npy_math.h
> @@ -151,13 +151,13 @@ double npy_spacing(double x);
>   #endif
> 
>   #ifndef NPY_HAVE_DECL_ISFINITE
> -       #define npy_isfinite(x) !npy_isnan((x) + (-x))
> +       #define npy_isfinite(x) (((x) + (x)) != (x) && (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))
> +       #define npy_isinf(x) (((x) + (x)) == (x) && (x) != 0)
>   #else
>           #define npy_isinf(x) isinf((x))
>   #endif
> 
> 
> Chuck




More information about the NumPy-Discussion mailing list