[Numpy-discussion] How to include numpy headers in C across versions 1.1, 1.2, and 1.3

Charles R Harris charlesr.harris at gmail.com
Mon May 11 20:11:30 EDT 2009


On Mon, May 11, 2009 at 4:49 PM, Peter Wang <pwang at enthought.com> wrote:

> Hey guys,
>
> I've got a small C extension that uses isnan() and (in numpy 1.1) had
> been importing it from ufuncobject.h.  I see that it has now moved
> into npy_math.h in 1.3.
>
> What is the best way to ensure that I can reliably include this
> function across versions 1.1, 1.2, and 1.3?  (Checking
> NPY_FEATURE_VERSION won't work, since it did not change from 1.2 to
> 1.3, although the location of the function definition did.)
>
> My best idea right now is to simply do a numpy version check in my
> setup.py, and hard-code some macros at the top of my C extension to
> #include the appropriate headers for each version.
>
> Any help or suggestions would be appreciated!
>

Oops, looks like we broke the ABI ;) For numpy itself we should fix things
by including npy_math in ufuncobject.h. Looks like a fixup release might be
in offing here. Otherwise there might be a workaround that would work.
<looks>  In 1.1.x it looks like isnan is defined in ufuncobject iff it is
compiled on windows. Try

#include ufuncobject.h
#ifdef _MSC_VER
#ifndef  isnan
#define isnan(x) ((x) != (x))
#endif
#endif

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20090511/92585fce/attachment.html>


More information about the NumPy-Discussion mailing list