[Numpy-discussion] isinf raises in inf

Charles R Harris charlesr.harris at gmail.com
Thu Jul 15 22:15:59 EDT 2010


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20100715/5af21d26/attachment.html>


More information about the NumPy-Discussion mailing list