[Numpy-svn] r8212 - in trunk/numpy/numarray: . include include/numpy numpy
numpy-svn at scipy.org
numpy-svn at scipy.org
Sat Feb 20 21:50:19 EST 2010
Author: ptvirtan
Date: 2010-02-20 20:50:19 -0600 (Sat, 20 Feb 2010)
New Revision: 8212
Added:
trunk/numpy/numarray/include/
trunk/numpy/numarray/include/numpy/
trunk/numpy/numarray/include/numpy/arraybase.h
trunk/numpy/numarray/include/numpy/cfunc.h
trunk/numpy/numarray/include/numpy/ieeespecial.h
trunk/numpy/numarray/include/numpy/libnumarray.h
trunk/numpy/numarray/include/numpy/numcomplex.h
trunk/numpy/numarray/include/numpy/nummacro.h
Removed:
trunk/numpy/numarray/numpy/arraybase.h
trunk/numpy/numarray/numpy/cfunc.h
trunk/numpy/numarray/numpy/ieeespecial.h
trunk/numpy/numarray/numpy/libnumarray.h
trunk/numpy/numarray/numpy/numcomplex.h
trunk/numpy/numarray/numpy/nummacro.h
Modified:
trunk/numpy/numarray/setup.py
trunk/numpy/numarray/setupscons.py
trunk/numpy/numarray/util.py
Log:
3K: ENH: move numarray includes under numarray/include so that the 'numpy' directory does not confuse 2to3's relative import conversion
Copied: trunk/numpy/numarray/include/numpy/arraybase.h (from rev 8211, trunk/numpy/numarray/numpy/arraybase.h)
===================================================================
--- trunk/numpy/numarray/include/numpy/arraybase.h (rev 0)
+++ trunk/numpy/numarray/include/numpy/arraybase.h 2010-02-21 02:50:19 UTC (rev 8212)
@@ -0,0 +1,71 @@
+#if !defined(__arraybase_h)
+#define _arraybase_h 1
+
+#define SZ_BUF 79
+#define MAXDIM NPY_MAXDIMS
+#define MAXARGS 18
+
+typedef npy_intp maybelong;
+typedef npy_bool Bool;
+typedef npy_int8 Int8;
+typedef npy_uint8 UInt8;
+typedef npy_int16 Int16;
+typedef npy_uint16 UInt16;
+typedef npy_int32 Int32;
+typedef npy_uint32 UInt32;
+typedef npy_int64 Int64;
+typedef npy_uint64 UInt64;
+typedef npy_float32 Float32;
+typedef npy_float64 Float64;
+
+typedef enum
+{
+ tAny=-1,
+ tBool=PyArray_BOOL,
+ tInt8=PyArray_INT8,
+ tUInt8=PyArray_UINT8,
+ tInt16=PyArray_INT16,
+ tUInt16=PyArray_UINT16,
+ tInt32=PyArray_INT32,
+ tUInt32=PyArray_UINT32,
+ tInt64=PyArray_INT64,
+ tUInt64=PyArray_UINT64,
+ tFloat32=PyArray_FLOAT32,
+ tFloat64=PyArray_FLOAT64,
+ tComplex32=PyArray_COMPLEX64,
+ tComplex64=PyArray_COMPLEX128,
+ tObject=PyArray_OBJECT, /* placeholder... does nothing */
+ tMaxType=PyArray_NTYPES,
+ tDefault = tFloat64,
+#if NPY_BITSOF_LONG == 64
+ tLong = tInt64,
+#else
+ tLong = tInt32,
+#endif
+} NumarrayType;
+
+#define nNumarrayType PyArray_NTYPES
+
+#define HAS_UINT64 1
+
+typedef enum
+{
+ NUM_LITTLE_ENDIAN=0,
+ NUM_BIG_ENDIAN = 1
+} NumarrayByteOrder;
+
+typedef struct { Float32 r, i; } Complex32;
+typedef struct { Float64 r, i; } Complex64;
+
+#define WRITABLE NPY_WRITEABLE
+#define CHECKOVERFLOW 0x800
+#define UPDATEDICT 0x1000
+#define FORTRAN_CONTIGUOUS NPY_FORTRAN
+#define IS_CARRAY (NPY_CONTIGUOUS | NPY_ALIGNED)
+
+#define PyArray(m) ((PyArrayObject *)(m))
+#define PyArray_ISFORTRAN_CONTIGUOUS(m) (((PyArray(m))->flags & FORTRAN_CONTIGUOUS) != 0)
+#define PyArray_ISWRITABLE PyArray_ISWRITEABLE
+
+
+#endif
Property changes on: trunk/numpy/numarray/include/numpy/arraybase.h
___________________________________________________________________
Name: svn:keywords
+ Id Author
Name: svn:eol-style
+ native
Copied: trunk/numpy/numarray/include/numpy/cfunc.h (from rev 8211, trunk/numpy/numarray/numpy/cfunc.h)
===================================================================
--- trunk/numpy/numarray/include/numpy/cfunc.h (rev 0)
+++ trunk/numpy/numarray/include/numpy/cfunc.h 2010-02-21 02:50:19 UTC (rev 8212)
@@ -0,0 +1,78 @@
+#if !defined(__cfunc__)
+#define __cfunc__ 1
+
+typedef PyObject *(*CFUNCasPyValue)(void *);
+typedef int (*UFUNC)(long, long, long, void **, long*);
+/* typedef void (*CFUNC_2ARG)(long, void *, void *); */
+/* typedef void (*CFUNC_3ARG)(long, void *, void *, void *); */
+typedef int (*CFUNCfromPyValue)(PyObject *, void *);
+typedef int (*CFUNC_STRIDE_CONV_FUNC)(long, long, maybelong *,
+ void *, long, maybelong*, void *, long, maybelong *);
+
+typedef int (*CFUNC_STRIDED_FUNC)(PyObject *, long, PyArrayObject **,
+ char **data);
+
+#define MAXARRAYS 16
+
+typedef enum {
+ CFUNC_UFUNC,
+ CFUNC_STRIDING,
+ CFUNC_NSTRIDING,
+ CFUNC_AS_PY_VALUE,
+ CFUNC_FROM_PY_VALUE
+} eCfuncType;
+
+typedef struct {
+ char *name;
+ void *fptr; /* Pointer to "un-wrapped" c function */
+ eCfuncType type; /* UFUNC, STRIDING, AsPyValue, FromPyValue */
+ Bool chkself; /* CFUNC does own alignment/bounds checking */
+ Bool align; /* CFUNC requires aligned buffer pointers */
+ Int8 wantIn, wantOut; /* required input/output arg counts. */
+ Int8 sizes[MAXARRAYS]; /* array of align/itemsizes. */
+ Int8 iters[MAXARRAYS]; /* array of element counts. 0 --> niter. */
+} CfuncDescriptor;
+
+typedef struct {
+ PyObject_HEAD
+ CfuncDescriptor descr;
+} CfuncObject;
+
+#define SELF_CHECKED_CFUNC_DESCR(name, type) \
+ static CfuncDescriptor name##_descr = { #name, (void *) name, type, 1 }
+
+#define CHECK_ALIGN 1
+
+#define CFUNC_DESCR(name, type, align, iargs, oargs, s1, s2, s3, i1, i2, i3) \
+ static CfuncDescriptor name##_descr = \
+ { #name, (void *)name, type, 0, align, iargs, oargs, {s1, s2, s3}, {i1, i2, i3} }
+
+#define UFUNC_DESCR1(name, s1) \
+ CFUNC_DESCR(name, CFUNC_UFUNC, CHECK_ALIGN, 0, 1, s1, 0, 0, 0, 0, 0)
+
+#define UFUNC_DESCR2(name, s1, s2) \
+ CFUNC_DESCR(name, CFUNC_UFUNC, CHECK_ALIGN, 1, 1, s1, s2, 0, 0, 0, 0)
+
+#define UFUNC_DESCR3(name, s1, s2, s3) \
+ CFUNC_DESCR(name, CFUNC_UFUNC, CHECK_ALIGN, 2, 1, s1, s2, s3, 0, 0, 0)
+
+#define UFUNC_DESCR3sv(name, s1, s2, s3) \
+ CFUNC_DESCR(name, CFUNC_UFUNC, CHECK_ALIGN, 2, 1, s1, s2, s3, 1, 0, 0)
+
+#define UFUNC_DESCR3vs(name, s1, s2, s3) \
+ CFUNC_DESCR(name, CFUNC_UFUNC, CHECK_ALIGN, 2, 1, s1, s2, s3, 0, 1, 0)
+
+#define STRIDING_DESCR2(name, align, s1, s2) \
+ CFUNC_DESCR(name, CFUNC_STRIDING, align, 1, 1, s1, s2, 0, 0, 0, 0)
+
+#define NSTRIDING_DESCR1(name) \
+ CFUNC_DESCR(name, CFUNC_NSTRIDING, 0, 0, 1, 0, 0, 0, 0, 0, 0)
+
+#define NSTRIDING_DESCR2(name) \
+ CFUNC_DESCR(name, CFUNC_NSTRIDING, 0, 1, 1, 0, 0, 0, 0, 0, 0)
+
+#define NSTRIDING_DESCR3(name) \
+ CFUNC_DESCR(name, CFUNC_NSTRIDING, 0, 2, 1, 0, 0, 0, 0, 0, 0)
+
+#endif
+
Property changes on: trunk/numpy/numarray/include/numpy/cfunc.h
___________________________________________________________________
Name: svn:keywords
+ Id Author
Name: svn:eol-style
+ native
Copied: trunk/numpy/numarray/include/numpy/ieeespecial.h (from rev 8211, trunk/numpy/numarray/numpy/ieeespecial.h)
===================================================================
--- trunk/numpy/numarray/include/numpy/ieeespecial.h (rev 0)
+++ trunk/numpy/numarray/include/numpy/ieeespecial.h 2010-02-21 02:50:19 UTC (rev 8212)
@@ -0,0 +1,124 @@
+/* 32-bit special value ranges */
+
+#if defined(_MSC_VER)
+#define MKINT(x) (x##UL)
+#define MKINT64(x) (x##Ui64)
+#define BIT(x) (1Ui64 << (x))
+#else
+#define MKINT(x) (x##U)
+#define MKINT64(x) (x##ULL)
+#define BIT(x) (1ULL << (x))
+#endif
+
+
+#define NEG_QUIET_NAN_MIN32 MKINT(0xFFC00001)
+#define NEG_QUIET_NAN_MAX32 MKINT(0xFFFFFFFF)
+
+#define INDETERMINATE_MIN32 MKINT(0xFFC00000)
+#define INDETERMINATE_MAX32 MKINT(0xFFC00000)
+
+#define NEG_SIGNAL_NAN_MIN32 MKINT(0xFF800001)
+#define NEG_SIGNAL_NAN_MAX32 MKINT(0xFFBFFFFF)
+
+#define NEG_INFINITY_MIN32 MKINT(0xFF800000)
+
+#define NEG_NORMALIZED_MIN32 MKINT(0x80800000)
+#define NEG_NORMALIZED_MAX32 MKINT(0xFF7FFFFF)
+
+#define NEG_DENORMALIZED_MIN32 MKINT(0x80000001)
+#define NEG_DENORMALIZED_MAX32 MKINT(0x807FFFFF)
+
+#define NEG_ZERO_MIN32 MKINT(0x80000000)
+#define NEG_ZERO_MAX32 MKINT(0x80000000)
+
+#define POS_ZERO_MIN32 MKINT(0x00000000)
+#define POS_ZERO_MAX32 MKINT(0x00000000)
+
+#define POS_DENORMALIZED_MIN32 MKINT(0x00000001)
+#define POS_DENORMALIZED_MAX32 MKINT(0x007FFFFF)
+
+#define POS_NORMALIZED_MIN32 MKINT(0x00800000)
+#define POS_NORMALIZED_MAX32 MKINT(0x7F7FFFFF)
+
+#define POS_INFINITY_MIN32 MKINT(0x7F800000)
+#define POS_INFINITY_MAX32 MKINT(0x7F800000)
+
+#define POS_SIGNAL_NAN_MIN32 MKINT(0x7F800001)
+#define POS_SIGNAL_NAN_MAX32 MKINT(0x7FBFFFFF)
+
+#define POS_QUIET_NAN_MIN32 MKINT(0x7FC00000)
+#define POS_QUIET_NAN_MAX32 MKINT(0x7FFFFFFF)
+
+/* 64-bit special value ranges */
+
+#define NEG_QUIET_NAN_MIN64 MKINT64(0xFFF8000000000001)
+#define NEG_QUIET_NAN_MAX64 MKINT64(0xFFFFFFFFFFFFFFFF)
+
+#define INDETERMINATE_MIN64 MKINT64(0xFFF8000000000000)
+#define INDETERMINATE_MAX64 MKINT64(0xFFF8000000000000)
+
+#define NEG_SIGNAL_NAN_MIN64 MKINT64(0xFFF7FFFFFFFFFFFF)
+#define NEG_SIGNAL_NAN_MAX64 MKINT64(0xFFF0000000000001)
+
+#define NEG_INFINITY_MIN64 MKINT64(0xFFF0000000000000)
+
+#define NEG_NORMALIZED_MIN64 MKINT64(0xFFEFFFFFFFFFFFFF)
+#define NEG_NORMALIZED_MAX64 MKINT64(0x8010000000000000)
+
+#define NEG_DENORMALIZED_MIN64 MKINT64(0x800FFFFFFFFFFFFF)
+#define NEG_DENORMALIZED_MAX64 MKINT64(0x8000000000000001)
+
+#define NEG_ZERO_MIN64 MKINT64(0x8000000000000000)
+#define NEG_ZERO_MAX64 MKINT64(0x8000000000000000)
+
+#define POS_ZERO_MIN64 MKINT64(0x0000000000000000)
+#define POS_ZERO_MAX64 MKINT64(0x0000000000000000)
+
+#define POS_DENORMALIZED_MIN64 MKINT64(0x0000000000000001)
+#define POS_DENORMALIZED_MAX64 MKINT64(0x000FFFFFFFFFFFFF)
+
+#define POS_NORMALIZED_MIN64 MKINT64(0x0010000000000000)
+#define POS_NORMALIZED_MAX64 MKINT64(0x7FEFFFFFFFFFFFFF)
+
+#define POS_INFINITY_MIN64 MKINT64(0x7FF0000000000000)
+#define POS_INFINITY_MAX64 MKINT64(0x7FF0000000000000)
+
+#define POS_SIGNAL_NAN_MIN64 MKINT64(0x7FF0000000000001)
+#define POS_SIGNAL_NAN_MAX64 MKINT64(0x7FF7FFFFFFFFFFFF)
+
+#define POS_QUIET_NAN_MIN64 MKINT64(0x7FF8000000000000)
+#define POS_QUIET_NAN_MAX64 MKINT64(0x7FFFFFFFFFFFFFFF)
+
+typedef enum
+{
+ POS_QNAN_BIT,
+ NEG_QNAN_BIT,
+ POS_SNAN_BIT,
+ NEG_SNAN_BIT,
+ POS_INF_BIT,
+ NEG_INF_BIT,
+ POS_DEN_BIT,
+ NEG_DEN_BIT,
+ POS_NOR_BIT,
+ NEG_NOR_BIT,
+ POS_ZERO_BIT,
+ NEG_ZERO_BIT,
+ INDETERM_BIT,
+ BUG_BIT
+} ieee_selects;
+
+#define MSK_POS_QNAN BIT(POS_QNAN_BIT)
+#define MSK_POS_SNAN BIT(POS_SNAN_BIT)
+#define MSK_POS_INF BIT(POS_INF_BIT)
+#define MSK_POS_DEN BIT(POS_DEN_BIT)
+#define MSK_POS_NOR BIT(POS_NOR_BIT)
+#define MSK_POS_ZERO BIT(POS_ZERO_BIT)
+#define MSK_NEG_QNAN BIT(NEG_QNAN_BIT)
+#define MSK_NEG_SNAN BIT(NEG_SNAN_BIT)
+#define MSK_NEG_INF BIT(NEG_INF_BIT)
+#define MSK_NEG_DEN BIT(NEG_DEN_BIT)
+#define MSK_NEG_NOR BIT(NEG_NOR_BIT)
+#define MSK_NEG_ZERO BIT(NEG_ZERO_BIT)
+#define MSK_INDETERM BIT(INDETERM_BIT)
+#define MSK_BUG BIT(BUG_BIT)
+
Property changes on: trunk/numpy/numarray/include/numpy/ieeespecial.h
___________________________________________________________________
Name: svn:keywords
+ Id Author
Name: svn:eol-style
+ native
Copied: trunk/numpy/numarray/include/numpy/libnumarray.h (from rev 8211, trunk/numpy/numarray/numpy/libnumarray.h)
===================================================================
--- trunk/numpy/numarray/include/numpy/libnumarray.h (rev 0)
+++ trunk/numpy/numarray/include/numpy/libnumarray.h 2010-02-21 02:50:19 UTC (rev 8212)
@@ -0,0 +1,611 @@
+/* Compatibility with numarray. Do not use in new code.
+ */
+
+#ifndef NUMPY_LIBNUMARRAY_H
+#define NUMPY_LIBNUMARRAY_H
+
+#include "numpy/arrayobject.h"
+#include "arraybase.h"
+#include "nummacro.h"
+#include "numcomplex.h"
+#include "ieeespecial.h"
+#include "cfunc.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Header file for libnumarray */
+
+#if !defined(_libnumarray_MODULE)
+
+/*
+Extensions constructed from seperate compilation units can access the
+C-API defined here by defining "libnumarray_UNIQUE_SYMBOL" to a global
+name unique to the extension. Doing this circumvents the requirement
+to import libnumarray into each compilation unit, but is nevertheless
+mildly discouraged as "outside the Python norm" and potentially
+leading to problems. Looking around at "existing Python art", most
+extension modules are monolithic C files, and likely for good reason.
+*/
+
+/* C API address pointer */
+#if defined(NO_IMPORT) || defined(NO_IMPORT_ARRAY)
+extern void **libnumarray_API;
+#else
+#if defined(libnumarray_UNIQUE_SYMBOL)
+void **libnumarray_API;
+#else
+static void **libnumarray_API;
+#endif
+#endif
+
+#define _import_libnumarray() \
+ { \
+ PyObject *module = PyImport_ImportModule("numpy.numarray._capi"); \
+ if (module != NULL) { \
+ PyObject *module_dict = PyModule_GetDict(module); \
+ PyObject *c_api_object = \
+ PyDict_GetItemString(module_dict, "_C_API"); \
+ if (c_api_object && PyCObject_Check(c_api_object)) { \
+ libnumarray_API = (void **)PyCObject_AsVoidPtr(c_api_object); \
+ } else { \
+ PyErr_Format(PyExc_ImportError, \
+ "Can't get API for module 'numpy.numarray._capi'"); \
+ } \
+ } \
+ }
+
+#define import_libnumarray() _import_libnumarray(); if (PyErr_Occurred()) { PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.numarray._capi failed to import.\n"); return; }
+
+#endif
+
+
+#define libnumarray_FatalApiError (Py_FatalError("Call to API function without first calling import_libnumarray() in " __FILE__), NULL)
+
+
+/* Macros defining components of function prototypes */
+
+#ifdef _libnumarray_MODULE
+ /* This section is used when compiling libnumarray */
+
+static PyObject *_Error;
+
+static PyObject* getBuffer (PyObject*o);
+
+static int isBuffer (PyObject*o);
+
+static int getWriteBufferDataPtr (PyObject*o,void**p);
+
+static int isBufferWriteable (PyObject*o);
+
+static int getReadBufferDataPtr (PyObject*o,void**p);
+
+static int getBufferSize (PyObject*o);
+
+static double num_log (double x);
+
+static double num_log10 (double x);
+
+static double num_pow (double x, double y);
+
+static double num_acosh (double x);
+
+static double num_asinh (double x);
+
+static double num_atanh (double x);
+
+static double num_round (double x);
+
+static int int_dividebyzero_error (long value, long unused);
+
+static int int_overflow_error (Float64 value);
+
+static int umult64_overflow (UInt64 a, UInt64 b);
+
+static int smult64_overflow (Int64 a0, Int64 b0);
+
+static void NA_Done (void);
+
+static PyArrayObject* NA_NewAll (int ndim, maybelong* shape, NumarrayType type, void* buffer, maybelong byteoffset, maybelong bytestride, int byteorder, int aligned, int writeable);
+
+static PyArrayObject* NA_NewAllStrides (int ndim, maybelong* shape, maybelong* strides, NumarrayType type, void* buffer, maybelong byteoffset, int byteorder, int aligned, int writeable);
+
+static PyArrayObject* NA_New (void* buffer, NumarrayType type, int ndim,...);
+
+static PyArrayObject* NA_Empty (int ndim, maybelong* shape, NumarrayType type);
+
+static PyArrayObject* NA_NewArray (void* buffer, NumarrayType type, int ndim, ...);
+
+static PyArrayObject* NA_vNewArray (void* buffer, NumarrayType type, int ndim, maybelong *shape);
+
+static PyObject* NA_ReturnOutput (PyObject*,PyArrayObject*);
+
+static long NA_getBufferPtrAndSize (PyObject*,int,void**);
+
+static int NA_checkIo (char*,int,int,int,int);
+
+static int NA_checkOneCBuffer (char*,long,void*,long,size_t);
+
+static int NA_checkNCBuffers (char*,int,long,void**,long*,Int8*,Int8*);
+
+static int NA_checkOneStriding (char*,long,maybelong*,long,maybelong*,long,long,int);
+
+static PyObject* NA_new_cfunc (CfuncDescriptor*);
+
+static int NA_add_cfunc (PyObject*,char*,CfuncDescriptor*);
+
+static PyArrayObject* NA_InputArray (PyObject*,NumarrayType,int);
+
+static PyArrayObject* NA_OutputArray (PyObject*,NumarrayType,int);
+
+static PyArrayObject* NA_IoArray (PyObject*,NumarrayType,int);
+
+static PyArrayObject* NA_OptionalOutputArray (PyObject*,NumarrayType,int,PyArrayObject*);
+
+static long NA_get_offset (PyArrayObject*,int,...);
+
+static Float64 NA_get_Float64 (PyArrayObject*,long);
+
+static void NA_set_Float64 (PyArrayObject*,long,Float64);
+
+static Complex64 NA_get_Complex64 (PyArrayObject*,long);
+
+static void NA_set_Complex64 (PyArrayObject*,long,Complex64);
+
+static Int64 NA_get_Int64 (PyArrayObject*,long);
+
+static void NA_set_Int64 (PyArrayObject*,long,Int64);
+
+static Float64 NA_get1_Float64 (PyArrayObject*,long);
+
+static Float64 NA_get2_Float64 (PyArrayObject*,long,long);
+
+static Float64 NA_get3_Float64 (PyArrayObject*,long,long,long);
+
+static void NA_set1_Float64 (PyArrayObject*,long,Float64);
+
+static void NA_set2_Float64 (PyArrayObject*,long,long,Float64);
+
+static void NA_set3_Float64 (PyArrayObject*,long,long,long,Float64);
+
+static Complex64 NA_get1_Complex64 (PyArrayObject*,long);
+
+static Complex64 NA_get2_Complex64 (PyArrayObject*,long,long);
+
+static Complex64 NA_get3_Complex64 (PyArrayObject*,long,long,long);
+
+static void NA_set1_Complex64 (PyArrayObject*,long,Complex64);
+
+static void NA_set2_Complex64 (PyArrayObject*,long,long,Complex64);
+
+static void NA_set3_Complex64 (PyArrayObject*,long,long,long,Complex64);
+
+static Int64 NA_get1_Int64 (PyArrayObject*,long);
+
+static Int64 NA_get2_Int64 (PyArrayObject*,long,long);
+
+static Int64 NA_get3_Int64 (PyArrayObject*,long,long,long);
+
+static void NA_set1_Int64 (PyArrayObject*,long,Int64);
+
+static void NA_set2_Int64 (PyArrayObject*,long,long,Int64);
+
+static void NA_set3_Int64 (PyArrayObject*,long,long,long,Int64);
+
+static int NA_get1D_Float64 (PyArrayObject*,long,int,Float64*);
+
+static int NA_set1D_Float64 (PyArrayObject*,long,int,Float64*);
+
+static int NA_get1D_Int64 (PyArrayObject*,long,int,Int64*);
+
+static int NA_set1D_Int64 (PyArrayObject*,long,int,Int64*);
+
+static int NA_get1D_Complex64 (PyArrayObject*,long,int,Complex64*);
+
+static int NA_set1D_Complex64 (PyArrayObject*,long,int,Complex64*);
+
+static int NA_ShapeEqual (PyArrayObject*,PyArrayObject*);
+
+static int NA_ShapeLessThan (PyArrayObject*,PyArrayObject*);
+
+static int NA_ByteOrder (void);
+
+static Bool NA_IeeeSpecial32 (Float32*,Int32*);
+
+static Bool NA_IeeeSpecial64 (Float64*,Int32*);
+
+static PyArrayObject* NA_updateDataPtr (PyArrayObject*);
+
+static char* NA_typeNoToName (int);
+
+static int NA_nameToTypeNo (char*);
+
+static PyObject* NA_typeNoToTypeObject (int);
+
+static PyObject* NA_intTupleFromMaybeLongs (int,maybelong*);
+
+static long NA_maybeLongsFromIntTuple (int,maybelong*,PyObject*);
+
+static int NA_intTupleProduct (PyObject *obj, long *product);
+
+static long NA_isIntegerSequence (PyObject*);
+
+static PyObject* NA_setArrayFromSequence (PyArrayObject*,PyObject*);
+
+static int NA_maxType (PyObject*);
+
+static int NA_isPythonScalar (PyObject *obj);
+
+static PyObject* NA_getPythonScalar (PyArrayObject*,long);
+
+static int NA_setFromPythonScalar (PyArrayObject*,long,PyObject*);
+
+static int NA_NDArrayCheck (PyObject*);
+
+static int NA_NumArrayCheck (PyObject*);
+
+static int NA_ComplexArrayCheck (PyObject*);
+
+static unsigned long NA_elements (PyArrayObject*);
+
+static int NA_typeObjectToTypeNo (PyObject*);
+
+static int NA_copyArray (PyArrayObject* to, const PyArrayObject* from);
+
+static PyArrayObject* NA_copy (PyArrayObject*);
+
+static PyObject* NA_getType (PyObject *typeobj_or_name);
+
+static PyObject * NA_callCUFuncCore (PyObject *cfunc, long niter, long ninargs, long noutargs, PyObject **BufferObj, long *offset);
+
+static PyObject * NA_callStrideConvCFuncCore (PyObject *cfunc, int nshape, maybelong *shape, PyObject *inbuffObj, long inboffset, int nstrides0, maybelong *inbstrides, PyObject *outbuffObj, long outboffset, int nstrides1, maybelong *outbstrides, long nbytes);
+
+static void NA_stridesFromShape (int nshape, maybelong *shape, maybelong bytestride, maybelong *strides);
+
+static int NA_OperatorCheck (PyObject *obj);
+
+static int NA_ConverterCheck (PyObject *obj);
+
+static int NA_UfuncCheck (PyObject *obj);
+
+static int NA_CfuncCheck (PyObject *obj);
+
+static int NA_getByteOffset (PyArrayObject *array, int nindices, maybelong *indices, long *offset);
+
+static int NA_swapAxes (PyArrayObject *array, int x, int y);
+
+static PyObject * NA_initModuleGlobal (char *module, char *global);
+
+static NumarrayType NA_NumarrayType (PyObject *seq);
+
+static PyArrayObject * NA_NewAllFromBuffer (int ndim, maybelong *shape, NumarrayType type, PyObject *bufferObject, maybelong byteoffset, maybelong bytestride, int byteorder, int aligned, int writeable);
+
+static Float64 * NA_alloc1D_Float64 (PyArrayObject *a, long offset, int cnt);
+
+static Int64 * NA_alloc1D_Int64 (PyArrayObject *a, long offset, int cnt);
+
+static void NA_updateAlignment (PyArrayObject *self);
+
+static void NA_updateContiguous (PyArrayObject *self);
+
+static void NA_updateStatus (PyArrayObject *self);
+
+static int NA_NumArrayCheckExact (PyObject *op);
+
+static int NA_NDArrayCheckExact (PyObject *op);
+
+static int NA_OperatorCheckExact (PyObject *op);
+
+static int NA_ConverterCheckExact (PyObject *op);
+
+static int NA_UfuncCheckExact (PyObject *op);
+
+static int NA_CfuncCheckExact (PyObject *op);
+
+static char * NA_getArrayData (PyArrayObject *ap);
+
+static void NA_updateByteswap (PyArrayObject *ap);
+
+static PyArray_Descr * NA_DescrFromType (int type);
+
+static PyObject * NA_Cast (PyArrayObject *a, int type);
+
+static int NA_checkFPErrors (void);
+
+static void NA_clearFPErrors (void);
+
+static int NA_checkAndReportFPErrors (char *name);
+
+static Bool NA_IeeeMask32 (Float32,Int32);
+
+static Bool NA_IeeeMask64 (Float64,Int32);
+
+static int _NA_callStridingHelper (PyObject *aux, long dim, long nnumarray, PyArrayObject *numarray[], char *data[], CFUNC_STRIDED_FUNC f);
+
+static PyArrayObject * NA_FromDimsStridesDescrAndData (int nd, maybelong *dims, maybelong *strides, PyArray_Descr *descr, char *data);
+
+static PyArrayObject * NA_FromDimsTypeAndData (int nd, maybelong *dims, int type, char *data);
+
+static PyArrayObject * NA_FromDimsStridesTypeAndData (int nd, maybelong *dims, maybelong *strides, int type, char *data);
+
+static int NA_scipy_typestr (NumarrayType t, int byteorder, char *typestr);
+
+static PyArrayObject * NA_FromArrayStruct (PyObject *a);
+
+
+#else
+ /* This section is used in modules that use libnumarray */
+
+#define getBuffer (libnumarray_API ? (*(PyObject* (*) (PyObject*o) ) libnumarray_API[ 0 ]) : (*(PyObject* (*) (PyObject*o) ) libnumarray_FatalApiError))
+
+#define isBuffer (libnumarray_API ? (*(int (*) (PyObject*o) ) libnumarray_API[ 1 ]) : (*(int (*) (PyObject*o) ) libnumarray_FatalApiError))
+
+#define getWriteBufferDataPtr (libnumarray_API ? (*(int (*) (PyObject*o,void**p) ) libnumarray_API[ 2 ]) : (*(int (*) (PyObject*o,void**p) ) libnumarray_FatalApiError))
+
+#define isBufferWriteable (libnumarray_API ? (*(int (*) (PyObject*o) ) libnumarray_API[ 3 ]) : (*(int (*) (PyObject*o) ) libnumarray_FatalApiError))
+
+#define getReadBufferDataPtr (libnumarray_API ? (*(int (*) (PyObject*o,void**p) ) libnumarray_API[ 4 ]) : (*(int (*) (PyObject*o,void**p) ) libnumarray_FatalApiError))
+
+#define getBufferSize (libnumarray_API ? (*(int (*) (PyObject*o) ) libnumarray_API[ 5 ]) : (*(int (*) (PyObject*o) ) libnumarray_FatalApiError))
+
+#define num_log (libnumarray_API ? (*(double (*) (double x) ) libnumarray_API[ 6 ]) : (*(double (*) (double x) ) libnumarray_FatalApiError))
+
+#define num_log10 (libnumarray_API ? (*(double (*) (double x) ) libnumarray_API[ 7 ]) : (*(double (*) (double x) ) libnumarray_FatalApiError))
+
+#define num_pow (libnumarray_API ? (*(double (*) (double x, double y) ) libnumarray_API[ 8 ]) : (*(double (*) (double x, double y) ) libnumarray_FatalApiError))
+
+#define num_acosh (libnumarray_API ? (*(double (*) (double x) ) libnumarray_API[ 9 ]) : (*(double (*) (double x) ) libnumarray_FatalApiError))
+
+#define num_asinh (libnumarray_API ? (*(double (*) (double x) ) libnumarray_API[ 10 ]) : (*(double (*) (double x) ) libnumarray_FatalApiError))
+
+#define num_atanh (libnumarray_API ? (*(double (*) (double x) ) libnumarray_API[ 11 ]) : (*(double (*) (double x) ) libnumarray_FatalApiError))
+
+#define num_round (libnumarray_API ? (*(double (*) (double x) ) libnumarray_API[ 12 ]) : (*(double (*) (double x) ) libnumarray_FatalApiError))
+
+#define int_dividebyzero_error (libnumarray_API ? (*(int (*) (long value, long unused) ) libnumarray_API[ 13 ]) : (*(int (*) (long value, long unused) ) libnumarray_FatalApiError))
+
+#define int_overflow_error (libnumarray_API ? (*(int (*) (Float64 value) ) libnumarray_API[ 14 ]) : (*(int (*) (Float64 value) ) libnumarray_FatalApiError))
+
+#define umult64_overflow (libnumarray_API ? (*(int (*) (UInt64 a, UInt64 b) ) libnumarray_API[ 15 ]) : (*(int (*) (UInt64 a, UInt64 b) ) libnumarray_FatalApiError))
+
+#define smult64_overflow (libnumarray_API ? (*(int (*) (Int64 a0, Int64 b0) ) libnumarray_API[ 16 ]) : (*(int (*) (Int64 a0, Int64 b0) ) libnumarray_FatalApiError))
+
+#define NA_Done (libnumarray_API ? (*(void (*) (void) ) libnumarray_API[ 17 ]) : (*(void (*) (void) ) libnumarray_FatalApiError))
+
+#define NA_NewAll (libnumarray_API ? (*(PyArrayObject* (*) (int ndim, maybelong* shape, NumarrayType type, void* buffer, maybelong byteoffset, maybelong bytestride, int byteorder, int aligned, int writeable) ) libnumarray_API[ 18 ]) : (*(PyArrayObject* (*) (int ndim, maybelong* shape, NumarrayType type, void* buffer, maybelong byteoffset, maybelong bytestride, int byteorder, int aligned, int writeable) ) libnumarray_FatalApiError))
+
+#define NA_NewAllStrides (libnumarray_API ? (*(PyArrayObject* (*) (int ndim, maybelong* shape, maybelong* strides, NumarrayType type, void* buffer, maybelong byteoffset, int byteorder, int aligned, int writeable) ) libnumarray_API[ 19 ]) : (*(PyArrayObject* (*) (int ndim, maybelong* shape, maybelong* strides, NumarrayType type, void* buffer, maybelong byteoffset, int byteorder, int aligned, int writeable) ) libnumarray_FatalApiError))
+
+#define NA_New (libnumarray_API ? (*(PyArrayObject* (*) (void* buffer, NumarrayType type, int ndim,...) ) libnumarray_API[ 20 ]) : (*(PyArrayObject* (*) (void* buffer, NumarrayType type, int ndim,...) ) libnumarray_FatalApiError))
+
+#define NA_Empty (libnumarray_API ? (*(PyArrayObject* (*) (int ndim, maybelong* shape, NumarrayType type) ) libnumarray_API[ 21 ]) : (*(PyArrayObject* (*) (int ndim, maybelong* shape, NumarrayType type) ) libnumarray_FatalApiError))
+
+#define NA_NewArray (libnumarray_API ? (*(PyArrayObject* (*) (void* buffer, NumarrayType type, int ndim, ...) ) libnumarray_API[ 22 ]) : (*(PyArrayObject* (*) (void* buffer, NumarrayType type, int ndim, ...) ) libnumarray_FatalApiError))
+
+#define NA_vNewArray (libnumarray_API ? (*(PyArrayObject* (*) (void* buffer, NumarrayType type, int ndim, maybelong *shape) ) libnumarray_API[ 23 ]) : (*(PyArrayObject* (*) (void* buffer, NumarrayType type, int ndim, maybelong *shape) ) libnumarray_FatalApiError))
+
+#define NA_ReturnOutput (libnumarray_API ? (*(PyObject* (*) (PyObject*,PyArrayObject*) ) libnumarray_API[ 24 ]) : (*(PyObject* (*) (PyObject*,PyArrayObject*) ) libnumarray_FatalApiError))
+
+#define NA_getBufferPtrAndSize (libnumarray_API ? (*(long (*) (PyObject*,int,void**) ) libnumarray_API[ 25 ]) : (*(long (*) (PyObject*,int,void**) ) libnumarray_FatalApiError))
+
+#define NA_checkIo (libnumarray_API ? (*(int (*) (char*,int,int,int,int) ) libnumarray_API[ 26 ]) : (*(int (*) (char*,int,int,int,int) ) libnumarray_FatalApiError))
+
+#define NA_checkOneCBuffer (libnumarray_API ? (*(int (*) (char*,long,void*,long,size_t) ) libnumarray_API[ 27 ]) : (*(int (*) (char*,long,void*,long,size_t) ) libnumarray_FatalApiError))
+
+#define NA_checkNCBuffers (libnumarray_API ? (*(int (*) (char*,int,long,void**,long*,Int8*,Int8*) ) libnumarray_API[ 28 ]) : (*(int (*) (char*,int,long,void**,long*,Int8*,Int8*) ) libnumarray_FatalApiError))
+
+#define NA_checkOneStriding (libnumarray_API ? (*(int (*) (char*,long,maybelong*,long,maybelong*,long,long,int) ) libnumarray_API[ 29 ]) : (*(int (*) (char*,long,maybelong*,long,maybelong*,long,long,int) ) libnumarray_FatalApiError))
+
+#define NA_new_cfunc (libnumarray_API ? (*(PyObject* (*) (CfuncDescriptor*) ) libnumarray_API[ 30 ]) : (*(PyObject* (*) (CfuncDescriptor*) ) libnumarray_FatalApiError))
+
+#define NA_add_cfunc (libnumarray_API ? (*(int (*) (PyObject*,char*,CfuncDescriptor*) ) libnumarray_API[ 31 ]) : (*(int (*) (PyObject*,char*,CfuncDescriptor*) ) libnumarray_FatalApiError))
+
+#define NA_InputArray (libnumarray_API ? (*(PyArrayObject* (*) (PyObject*,NumarrayType,int) ) libnumarray_API[ 32 ]) : (*(PyArrayObject* (*) (PyObject*,NumarrayType,int) ) libnumarray_FatalApiError))
+
+#define NA_OutputArray (libnumarray_API ? (*(PyArrayObject* (*) (PyObject*,NumarrayType,int) ) libnumarray_API[ 33 ]) : (*(PyArrayObject* (*) (PyObject*,NumarrayType,int) ) libnumarray_FatalApiError))
+
+#define NA_IoArray (libnumarray_API ? (*(PyArrayObject* (*) (PyObject*,NumarrayType,int) ) libnumarray_API[ 34 ]) : (*(PyArrayObject* (*) (PyObject*,NumarrayType,int) ) libnumarray_FatalApiError))
+
+#define NA_OptionalOutputArray (libnumarray_API ? (*(PyArrayObject* (*) (PyObject*,NumarrayType,int,PyArrayObject*) ) libnumarray_API[ 35 ]) : (*(PyArrayObject* (*) (PyObject*,NumarrayType,int,PyArrayObject*) ) libnumarray_FatalApiError))
+
+#define NA_get_offset (libnumarray_API ? (*(long (*) (PyArrayObject*,int,...) ) libnumarray_API[ 36 ]) : (*(long (*) (PyArrayObject*,int,...) ) libnumarray_FatalApiError))
+
+#define NA_get_Float64 (libnumarray_API ? (*(Float64 (*) (PyArrayObject*,long) ) libnumarray_API[ 37 ]) : (*(Float64 (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
+
+#define NA_set_Float64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,Float64) ) libnumarray_API[ 38 ]) : (*(void (*) (PyArrayObject*,long,Float64) ) libnumarray_FatalApiError))
+
+#define NA_get_Complex64 (libnumarray_API ? (*(Complex64 (*) (PyArrayObject*,long) ) libnumarray_API[ 39 ]) : (*(Complex64 (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
+
+#define NA_set_Complex64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,Complex64) ) libnumarray_API[ 40 ]) : (*(void (*) (PyArrayObject*,long,Complex64) ) libnumarray_FatalApiError))
+
+#define NA_get_Int64 (libnumarray_API ? (*(Int64 (*) (PyArrayObject*,long) ) libnumarray_API[ 41 ]) : (*(Int64 (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
+
+#define NA_set_Int64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,Int64) ) libnumarray_API[ 42 ]) : (*(void (*) (PyArrayObject*,long,Int64) ) libnumarray_FatalApiError))
+
+#define NA_get1_Float64 (libnumarray_API ? (*(Float64 (*) (PyArrayObject*,long) ) libnumarray_API[ 43 ]) : (*(Float64 (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
+
+#define NA_get2_Float64 (libnumarray_API ? (*(Float64 (*) (PyArrayObject*,long,long) ) libnumarray_API[ 44 ]) : (*(Float64 (*) (PyArrayObject*,long,long) ) libnumarray_FatalApiError))
+
+#define NA_get3_Float64 (libnumarray_API ? (*(Float64 (*) (PyArrayObject*,long,long,long) ) libnumarray_API[ 45 ]) : (*(Float64 (*) (PyArrayObject*,long,long,long) ) libnumarray_FatalApiError))
+
+#define NA_set1_Float64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,Float64) ) libnumarray_API[ 46 ]) : (*(void (*) (PyArrayObject*,long,Float64) ) libnumarray_FatalApiError))
+
+#define NA_set2_Float64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,long,Float64) ) libnumarray_API[ 47 ]) : (*(void (*) (PyArrayObject*,long,long,Float64) ) libnumarray_FatalApiError))
+
+#define NA_set3_Float64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,long,long,Float64) ) libnumarray_API[ 48 ]) : (*(void (*) (PyArrayObject*,long,long,long,Float64) ) libnumarray_FatalApiError))
+
+#define NA_get1_Complex64 (libnumarray_API ? (*(Complex64 (*) (PyArrayObject*,long) ) libnumarray_API[ 49 ]) : (*(Complex64 (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
+
+#define NA_get2_Complex64 (libnumarray_API ? (*(Complex64 (*) (PyArrayObject*,long,long) ) libnumarray_API[ 50 ]) : (*(Complex64 (*) (PyArrayObject*,long,long) ) libnumarray_FatalApiError))
+
+#define NA_get3_Complex64 (libnumarray_API ? (*(Complex64 (*) (PyArrayObject*,long,long,long) ) libnumarray_API[ 51 ]) : (*(Complex64 (*) (PyArrayObject*,long,long,long) ) libnumarray_FatalApiError))
+
+#define NA_set1_Complex64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,Complex64) ) libnumarray_API[ 52 ]) : (*(void (*) (PyArrayObject*,long,Complex64) ) libnumarray_FatalApiError))
+
+#define NA_set2_Complex64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,long,Complex64) ) libnumarray_API[ 53 ]) : (*(void (*) (PyArrayObject*,long,long,Complex64) ) libnumarray_FatalApiError))
+
+#define NA_set3_Complex64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,long,long,Complex64) ) libnumarray_API[ 54 ]) : (*(void (*) (PyArrayObject*,long,long,long,Complex64) ) libnumarray_FatalApiError))
+
+#define NA_get1_Int64 (libnumarray_API ? (*(Int64 (*) (PyArrayObject*,long) ) libnumarray_API[ 55 ]) : (*(Int64 (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
+
+#define NA_get2_Int64 (libnumarray_API ? (*(Int64 (*) (PyArrayObject*,long,long) ) libnumarray_API[ 56 ]) : (*(Int64 (*) (PyArrayObject*,long,long) ) libnumarray_FatalApiError))
+
+#define NA_get3_Int64 (libnumarray_API ? (*(Int64 (*) (PyArrayObject*,long,long,long) ) libnumarray_API[ 57 ]) : (*(Int64 (*) (PyArrayObject*,long,long,long) ) libnumarray_FatalApiError))
+
+#define NA_set1_Int64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,Int64) ) libnumarray_API[ 58 ]) : (*(void (*) (PyArrayObject*,long,Int64) ) libnumarray_FatalApiError))
+
+#define NA_set2_Int64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,long,Int64) ) libnumarray_API[ 59 ]) : (*(void (*) (PyArrayObject*,long,long,Int64) ) libnumarray_FatalApiError))
+
+#define NA_set3_Int64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,long,long,Int64) ) libnumarray_API[ 60 ]) : (*(void (*) (PyArrayObject*,long,long,long,Int64) ) libnumarray_FatalApiError))
+
+#define NA_get1D_Float64 (libnumarray_API ? (*(int (*) (PyArrayObject*,long,int,Float64*) ) libnumarray_API[ 61 ]) : (*(int (*) (PyArrayObject*,long,int,Float64*) ) libnumarray_FatalApiError))
+
+#define NA_set1D_Float64 (libnumarray_API ? (*(int (*) (PyArrayObject*,long,int,Float64*) ) libnumarray_API[ 62 ]) : (*(int (*) (PyArrayObject*,long,int,Float64*) ) libnumarray_FatalApiError))
+
+#define NA_get1D_Int64 (libnumarray_API ? (*(int (*) (PyArrayObject*,long,int,Int64*) ) libnumarray_API[ 63 ]) : (*(int (*) (PyArrayObject*,long,int,Int64*) ) libnumarray_FatalApiError))
+
+#define NA_set1D_Int64 (libnumarray_API ? (*(int (*) (PyArrayObject*,long,int,Int64*) ) libnumarray_API[ 64 ]) : (*(int (*) (PyArrayObject*,long,int,Int64*) ) libnumarray_FatalApiError))
+
+#define NA_get1D_Complex64 (libnumarray_API ? (*(int (*) (PyArrayObject*,long,int,Complex64*) ) libnumarray_API[ 65 ]) : (*(int (*) (PyArrayObject*,long,int,Complex64*) ) libnumarray_FatalApiError))
+
+#define NA_set1D_Complex64 (libnumarray_API ? (*(int (*) (PyArrayObject*,long,int,Complex64*) ) libnumarray_API[ 66 ]) : (*(int (*) (PyArrayObject*,long,int,Complex64*) ) libnumarray_FatalApiError))
+
+#define NA_ShapeEqual (libnumarray_API ? (*(int (*) (PyArrayObject*,PyArrayObject*) ) libnumarray_API[ 67 ]) : (*(int (*) (PyArrayObject*,PyArrayObject*) ) libnumarray_FatalApiError))
+
+#define NA_ShapeLessThan (libnumarray_API ? (*(int (*) (PyArrayObject*,PyArrayObject*) ) libnumarray_API[ 68 ]) : (*(int (*) (PyArrayObject*,PyArrayObject*) ) libnumarray_FatalApiError))
+
+#define NA_ByteOrder (libnumarray_API ? (*(int (*) (void) ) libnumarray_API[ 69 ]) : (*(int (*) (void) ) libnumarray_FatalApiError))
+
+#define NA_IeeeSpecial32 (libnumarray_API ? (*(Bool (*) (Float32*,Int32*) ) libnumarray_API[ 70 ]) : (*(Bool (*) (Float32*,Int32*) ) libnumarray_FatalApiError))
+
+#define NA_IeeeSpecial64 (libnumarray_API ? (*(Bool (*) (Float64*,Int32*) ) libnumarray_API[ 71 ]) : (*(Bool (*) (Float64*,Int32*) ) libnumarray_FatalApiError))
+
+#define NA_updateDataPtr (libnumarray_API ? (*(PyArrayObject* (*) (PyArrayObject*) ) libnumarray_API[ 72 ]) : (*(PyArrayObject* (*) (PyArrayObject*) ) libnumarray_FatalApiError))
+
+#define NA_typeNoToName (libnumarray_API ? (*(char* (*) (int) ) libnumarray_API[ 73 ]) : (*(char* (*) (int) ) libnumarray_FatalApiError))
+
+#define NA_nameToTypeNo (libnumarray_API ? (*(int (*) (char*) ) libnumarray_API[ 74 ]) : (*(int (*) (char*) ) libnumarray_FatalApiError))
+
+#define NA_typeNoToTypeObject (libnumarray_API ? (*(PyObject* (*) (int) ) libnumarray_API[ 75 ]) : (*(PyObject* (*) (int) ) libnumarray_FatalApiError))
+
+#define NA_intTupleFromMaybeLongs (libnumarray_API ? (*(PyObject* (*) (int,maybelong*) ) libnumarray_API[ 76 ]) : (*(PyObject* (*) (int,maybelong*) ) libnumarray_FatalApiError))
+
+#define NA_maybeLongsFromIntTuple (libnumarray_API ? (*(long (*) (int,maybelong*,PyObject*) ) libnumarray_API[ 77 ]) : (*(long (*) (int,maybelong*,PyObject*) ) libnumarray_FatalApiError))
+
+#define NA_intTupleProduct (libnumarray_API ? (*(int (*) (PyObject *obj, long *product) ) libnumarray_API[ 78 ]) : (*(int (*) (PyObject *obj, long *product) ) libnumarray_FatalApiError))
+
+#define NA_isIntegerSequence (libnumarray_API ? (*(long (*) (PyObject*) ) libnumarray_API[ 79 ]) : (*(long (*) (PyObject*) ) libnumarray_FatalApiError))
+
+#define NA_setArrayFromSequence (libnumarray_API ? (*(PyObject* (*) (PyArrayObject*,PyObject*) ) libnumarray_API[ 80 ]) : (*(PyObject* (*) (PyArrayObject*,PyObject*) ) libnumarray_FatalApiError))
+
+#define NA_maxType (libnumarray_API ? (*(int (*) (PyObject*) ) libnumarray_API[ 81 ]) : (*(int (*) (PyObject*) ) libnumarray_FatalApiError))
+
+#define NA_isPythonScalar (libnumarray_API ? (*(int (*) (PyObject *obj) ) libnumarray_API[ 82 ]) : (*(int (*) (PyObject *obj) ) libnumarray_FatalApiError))
+
+#define NA_getPythonScalar (libnumarray_API ? (*(PyObject* (*) (PyArrayObject*,long) ) libnumarray_API[ 83 ]) : (*(PyObject* (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
+
+#define NA_setFromPythonScalar (libnumarray_API ? (*(int (*) (PyArrayObject*,long,PyObject*) ) libnumarray_API[ 84 ]) : (*(int (*) (PyArrayObject*,long,PyObject*) ) libnumarray_FatalApiError))
+
+#define NA_NDArrayCheck (libnumarray_API ? (*(int (*) (PyObject*) ) libnumarray_API[ 85 ]) : (*(int (*) (PyObject*) ) libnumarray_FatalApiError))
+
+#define NA_NumArrayCheck (libnumarray_API ? (*(int (*) (PyObject*) ) libnumarray_API[ 86 ]) : (*(int (*) (PyObject*) ) libnumarray_FatalApiError))
+
+#define NA_ComplexArrayCheck (libnumarray_API ? (*(int (*) (PyObject*) ) libnumarray_API[ 87 ]) : (*(int (*) (PyObject*) ) libnumarray_FatalApiError))
+
+#define NA_elements (libnumarray_API ? (*(unsigned long (*) (PyArrayObject*) ) libnumarray_API[ 88 ]) : (*(unsigned long (*) (PyArrayObject*) ) libnumarray_FatalApiError))
+
+#define NA_typeObjectToTypeNo (libnumarray_API ? (*(int (*) (PyObject*) ) libnumarray_API[ 89 ]) : (*(int (*) (PyObject*) ) libnumarray_FatalApiError))
+
+#define NA_copyArray (libnumarray_API ? (*(int (*) (PyArrayObject* to, const PyArrayObject* from) ) libnumarray_API[ 90 ]) : (*(int (*) (PyArrayObject* to, const PyArrayObject* from) ) libnumarray_FatalApiError))
+
+#define NA_copy (libnumarray_API ? (*(PyArrayObject* (*) (PyArrayObject*) ) libnumarray_API[ 91 ]) : (*(PyArrayObject* (*) (PyArrayObject*) ) libnumarray_FatalApiError))
+
+#define NA_getType (libnumarray_API ? (*(PyObject* (*) (PyObject *typeobj_or_name) ) libnumarray_API[ 92 ]) : (*(PyObject* (*) (PyObject *typeobj_or_name) ) libnumarray_FatalApiError))
+
+#define NA_callCUFuncCore (libnumarray_API ? (*(PyObject * (*) (PyObject *cfunc, long niter, long ninargs, long noutargs, PyObject **BufferObj, long *offset) ) libnumarray_API[ 93 ]) : (*(PyObject * (*) (PyObject *cfunc, long niter, long ninargs, long noutargs, PyObject **BufferObj, long *offset) ) libnumarray_FatalApiError))
+
+#define NA_callStrideConvCFuncCore (libnumarray_API ? (*(PyObject * (*) (PyObject *cfunc, int nshape, maybelong *shape, PyObject *inbuffObj, long inboffset, int nstrides0, maybelong *inbstrides, PyObject *outbuffObj, long outboffset, int nstrides1, maybelong *outbstrides, long nbytes) ) libnumarray_API[ 94 ]) : (*(PyObject * (*) (PyObject *cfunc, int nshape, maybelong *shape, PyObject *inbuffObj, long inboffset, int nstrides0, maybelong *inbstrides, PyObject *outbuffObj, long outboffset, int nstrides1, maybelong *outbstrides, long nbytes) ) libnumarray_FatalApiError))
+
+#define NA_stridesFromShape (libnumarray_API ? (*(void (*) (int nshape, maybelong *shape, maybelong bytestride, maybelong *strides) ) libnumarray_API[ 95 ]) : (*(void (*) (int nshape, maybelong *shape, maybelong bytestride, maybelong *strides) ) libnumarray_FatalApiError))
+
+#define NA_OperatorCheck (libnumarray_API ? (*(int (*) (PyObject *obj) ) libnumarray_API[ 96 ]) : (*(int (*) (PyObject *obj) ) libnumarray_FatalApiError))
+
+#define NA_ConverterCheck (libnumarray_API ? (*(int (*) (PyObject *obj) ) libnumarray_API[ 97 ]) : (*(int (*) (PyObject *obj) ) libnumarray_FatalApiError))
+
+#define NA_UfuncCheck (libnumarray_API ? (*(int (*) (PyObject *obj) ) libnumarray_API[ 98 ]) : (*(int (*) (PyObject *obj) ) libnumarray_FatalApiError))
+
+#define NA_CfuncCheck (libnumarray_API ? (*(int (*) (PyObject *obj) ) libnumarray_API[ 99 ]) : (*(int (*) (PyObject *obj) ) libnumarray_FatalApiError))
+
+#define NA_getByteOffset (libnumarray_API ? (*(int (*) (PyArrayObject *array, int nindices, maybelong *indices, long *offset) ) libnumarray_API[ 100 ]) : (*(int (*) (PyArrayObject *array, int nindices, maybelong *indices, long *offset) ) libnumarray_FatalApiError))
+
+#define NA_swapAxes (libnumarray_API ? (*(int (*) (PyArrayObject *array, int x, int y) ) libnumarray_API[ 101 ]) : (*(int (*) (PyArrayObject *array, int x, int y) ) libnumarray_FatalApiError))
+
+#define NA_initModuleGlobal (libnumarray_API ? (*(PyObject * (*) (char *module, char *global) ) libnumarray_API[ 102 ]) : (*(PyObject * (*) (char *module, char *global) ) libnumarray_FatalApiError))
+
+#define NA_NumarrayType (libnumarray_API ? (*(NumarrayType (*) (PyObject *seq) ) libnumarray_API[ 103 ]) : (*(NumarrayType (*) (PyObject *seq) ) libnumarray_FatalApiError))
+
+#define NA_NewAllFromBuffer (libnumarray_API ? (*(PyArrayObject * (*) (int ndim, maybelong *shape, NumarrayType type, PyObject *bufferObject, maybelong byteoffset, maybelong bytestride, int byteorder, int aligned, int writeable) ) libnumarray_API[ 104 ]) : (*(PyArrayObject * (*) (int ndim, maybelong *shape, NumarrayType type, PyObject *bufferObject, maybelong byteoffset, maybelong bytestride, int byteorder, int aligned, int writeable) ) libnumarray_FatalApiError))
+
+#define NA_alloc1D_Float64 (libnumarray_API ? (*(Float64 * (*) (PyArrayObject *a, long offset, int cnt) ) libnumarray_API[ 105 ]) : (*(Float64 * (*) (PyArrayObject *a, long offset, int cnt) ) libnumarray_FatalApiError))
+
+#define NA_alloc1D_Int64 (libnumarray_API ? (*(Int64 * (*) (PyArrayObject *a, long offset, int cnt) ) libnumarray_API[ 106 ]) : (*(Int64 * (*) (PyArrayObject *a, long offset, int cnt) ) libnumarray_FatalApiError))
+
+#define NA_updateAlignment (libnumarray_API ? (*(void (*) (PyArrayObject *self) ) libnumarray_API[ 107 ]) : (*(void (*) (PyArrayObject *self) ) libnumarray_FatalApiError))
+
+#define NA_updateContiguous (libnumarray_API ? (*(void (*) (PyArrayObject *self) ) libnumarray_API[ 108 ]) : (*(void (*) (PyArrayObject *self) ) libnumarray_FatalApiError))
+
+#define NA_updateStatus (libnumarray_API ? (*(void (*) (PyArrayObject *self) ) libnumarray_API[ 109 ]) : (*(void (*) (PyArrayObject *self) ) libnumarray_FatalApiError))
+
+#define NA_NumArrayCheckExact (libnumarray_API ? (*(int (*) (PyObject *op) ) libnumarray_API[ 110 ]) : (*(int (*) (PyObject *op) ) libnumarray_FatalApiError))
+
+#define NA_NDArrayCheckExact (libnumarray_API ? (*(int (*) (PyObject *op) ) libnumarray_API[ 111 ]) : (*(int (*) (PyObject *op) ) libnumarray_FatalApiError))
+
+#define NA_OperatorCheckExact (libnumarray_API ? (*(int (*) (PyObject *op) ) libnumarray_API[ 112 ]) : (*(int (*) (PyObject *op) ) libnumarray_FatalApiError))
+
+#define NA_ConverterCheckExact (libnumarray_API ? (*(int (*) (PyObject *op) ) libnumarray_API[ 113 ]) : (*(int (*) (PyObject *op) ) libnumarray_FatalApiError))
+
+#define NA_UfuncCheckExact (libnumarray_API ? (*(int (*) (PyObject *op) ) libnumarray_API[ 114 ]) : (*(int (*) (PyObject *op) ) libnumarray_FatalApiError))
+
+#define NA_CfuncCheckExact (libnumarray_API ? (*(int (*) (PyObject *op) ) libnumarray_API[ 115 ]) : (*(int (*) (PyObject *op) ) libnumarray_FatalApiError))
+
+#define NA_getArrayData (libnumarray_API ? (*(char * (*) (PyArrayObject *ap) ) libnumarray_API[ 116 ]) : (*(char * (*) (PyArrayObject *ap) ) libnumarray_FatalApiError))
+
+#define NA_updateByteswap (libnumarray_API ? (*(void (*) (PyArrayObject *ap) ) libnumarray_API[ 117 ]) : (*(void (*) (PyArrayObject *ap) ) libnumarray_FatalApiError))
+
+#define NA_DescrFromType (libnumarray_API ? (*(PyArray_Descr * (*) (int type) ) libnumarray_API[ 118 ]) : (*(PyArray_Descr * (*) (int type) ) libnumarray_FatalApiError))
+
+#define NA_Cast (libnumarray_API ? (*(PyObject * (*) (PyArrayObject *a, int type) ) libnumarray_API[ 119 ]) : (*(PyObject * (*) (PyArrayObject *a, int type) ) libnumarray_FatalApiError))
+
+#define NA_checkFPErrors (libnumarray_API ? (*(int (*) (void) ) libnumarray_API[ 120 ]) : (*(int (*) (void) ) libnumarray_FatalApiError))
+
+#define NA_clearFPErrors (libnumarray_API ? (*(void (*) (void) ) libnumarray_API[ 121 ]) : (*(void (*) (void) ) libnumarray_FatalApiError))
+
+#define NA_checkAndReportFPErrors (libnumarray_API ? (*(int (*) (char *name) ) libnumarray_API[ 122 ]) : (*(int (*) (char *name) ) libnumarray_FatalApiError))
+
+#define NA_IeeeMask32 (libnumarray_API ? (*(Bool (*) (Float32,Int32) ) libnumarray_API[ 123 ]) : (*(Bool (*) (Float32,Int32) ) libnumarray_FatalApiError))
+
+#define NA_IeeeMask64 (libnumarray_API ? (*(Bool (*) (Float64,Int32) ) libnumarray_API[ 124 ]) : (*(Bool (*) (Float64,Int32) ) libnumarray_FatalApiError))
+
+#define _NA_callStridingHelper (libnumarray_API ? (*(int (*) (PyObject *aux, long dim, long nnumarray, PyArrayObject *numarray[], char *data[], CFUNC_STRIDED_FUNC f) ) libnumarray_API[ 125 ]) : (*(int (*) (PyObject *aux, long dim, long nnumarray, PyArrayObject *numarray[], char *data[], CFUNC_STRIDED_FUNC f) ) libnumarray_FatalApiError))
+
+#define NA_FromDimsStridesDescrAndData (libnumarray_API ? (*(PyArrayObject * (*) (int nd, maybelong *dims, maybelong *strides, PyArray_Descr *descr, char *data) ) libnumarray_API[ 126 ]) : (*(PyArrayObject * (*) (int nd, maybelong *dims, maybelong *strides, PyArray_Descr *descr, char *data) ) libnumarray_FatalApiError))
+
+#define NA_FromDimsTypeAndData (libnumarray_API ? (*(PyArrayObject * (*) (int nd, maybelong *dims, int type, char *data) ) libnumarray_API[ 127 ]) : (*(PyArrayObject * (*) (int nd, maybelong *dims, int type, char *data) ) libnumarray_FatalApiError))
+
+#define NA_FromDimsStridesTypeAndData (libnumarray_API ? (*(PyArrayObject * (*) (int nd, maybelong *dims, maybelong *strides, int type, char *data) ) libnumarray_API[ 128 ]) : (*(PyArrayObject * (*) (int nd, maybelong *dims, maybelong *strides, int type, char *data) ) libnumarray_FatalApiError))
+
+#define NA_scipy_typestr (libnumarray_API ? (*(int (*) (NumarrayType t, int byteorder, char *typestr) ) libnumarray_API[ 129 ]) : (*(int (*) (NumarrayType t, int byteorder, char *typestr) ) libnumarray_FatalApiError))
+
+#define NA_FromArrayStruct (libnumarray_API ? (*(PyArrayObject * (*) (PyObject *a) ) libnumarray_API[ 130 ]) : (*(PyArrayObject * (*) (PyObject *a) ) libnumarray_FatalApiError))
+
+#endif
+
+ /* Total number of C API pointers */
+#define libnumarray_API_pointers 131
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NUMPY_LIBNUMARRAY_H */
Property changes on: trunk/numpy/numarray/include/numpy/libnumarray.h
___________________________________________________________________
Name: svn:keywords
+ Id Author
Name: svn:eol-style
+ native
Copied: trunk/numpy/numarray/include/numpy/numcomplex.h (from rev 8211, trunk/numpy/numarray/numpy/numcomplex.h)
===================================================================
--- trunk/numpy/numarray/include/numpy/numcomplex.h (rev 0)
+++ trunk/numpy/numarray/include/numpy/numcomplex.h 2010-02-21 02:50:19 UTC (rev 8212)
@@ -0,0 +1,252 @@
+/* See numarray.h for Complex32, Complex64:
+
+typedef struct { Float32 r, i; } Complex32;
+typedef struct { Float64 r, i; } Complex64;
+
+*/
+typedef struct { Float32 a, theta; } PolarComplex32;
+typedef struct { Float64 a, theta; } PolarComplex64;
+
+#define NUM_SQ(x) ((x)*(x))
+
+#define NUM_CABSSQ(p) (NUM_SQ((p).r) + NUM_SQ((p).i))
+
+#define NUM_CABS(p) sqrt(NUM_CABSSQ(p))
+
+#define NUM_C_TO_P(c, p) (p).a = NUM_CABS(c); \
+ (p).theta = atan2((c).i, (c).r);
+
+#define NUM_P_TO_C(p, c) (c).r = (p).a*cos((p).theta); \
+ (c).i = (p).a*sin((p).theta);
+
+#define NUM_CASS(p, q) (q).r = (p).r, (q).i = (p).i
+
+#define NUM_CADD(p, q, s) (s).r = (p).r + (q).r, \
+ (s).i = (p).i + (q).i
+
+#define NUM_CSUB(p, q, s) (s).r = (p).r - (q).r, \
+ (s).i = (p).i - (q).i
+
+#define NUM_CMUL(p, q, s) \
+ { Float64 rp = (p).r; \
+ Float64 rq = (q).r; \
+ (s).r = rp*rq - (p).i*(q).i; \
+ (s).i = rp*(q).i + rq*(p).i; \
+ }
+
+#define NUM_CDIV(p, q, s) \
+ { \
+ Float64 rp = (p).r; \
+ Float64 ip = (p).i; \
+ Float64 rq = (q).r; \
+ if ((q).i != 0) { \
+ Float64 temp = NUM_CABSSQ(q); \
+ (s).r = (rp*rq+(p).i*(q).i)/temp; \
+ (s).i = (rq*(p).i-(q).i*rp)/temp; \
+ } else { \
+ (s).r = rp/rq; \
+ (s).i = ip/rq; \
+ } \
+ }
+
+#define NUM_CREM(p, q, s) \
+ { Complex64 r; \
+ NUM_CDIV(p, q, r); \
+ r.r = floor(r.r); \
+ r.i = 0; \
+ NUM_CMUL(r, q, r); \
+ NUM_CSUB(p, r, s); \
+ }
+
+#define NUM_CMINUS(p, s) (s).r = -(p).r; (s).i = -(p).i;
+#define NUM_CNEG NUM_CMINUS
+
+#define NUM_CEQ(p, q) (((p).r == (q).r) && ((p).i == (q).i))
+#define NUM_CNE(p, q) (((p).r != (q).r) || ((p).i != (q).i))
+#define NUM_CLT(p, q) ((p).r < (q).r)
+#define NUM_CGT(p, q) ((p).r > (q).r)
+#define NUM_CLE(p, q) ((p).r <= (q).r)
+#define NUM_CGE(p, q) ((p).r >= (q).r)
+
+/* e**z = e**x * (cos(y)+ i*sin(y)) where z = x + i*y
+ so e**z = e**x * cos(y) + i * e**x * sin(y)
+*/
+#define NUM_CEXP(p, s) \
+ { Float64 ex = exp((p).r); \
+ (s).r = ex * cos((p).i); \
+ (s).i = ex * sin((p).i); \
+ }
+
+/* e**w = z; w = u + i*v; z = r * e**(i*theta);
+
+e**u * e**(i*v) = r * e**(i*theta);
+
+log(z) = w; log(z) = log(r) + i*theta;
+ */
+#define NUM_CLOG(p, s) \
+ { PolarComplex64 temp; NUM_C_TO_P(p, temp); \
+ (s).r = num_log(temp.a); \
+ (s).i = temp.theta; \
+ }
+
+#define NUM_LOG10_E 0.43429448190325182
+
+#define NUM_CLOG10(p, s) \
+ { NUM_CLOG(p, s); \
+ (s).r *= NUM_LOG10_E; \
+ (s).i *= NUM_LOG10_E; \
+ }
+
+/* s = p ** q */
+#define NUM_CPOW(p, q, s) { if (NUM_CABSSQ(p) == 0) { \
+ if ((q).r == 0 && (q).i == 0) { \
+ (s).r = (s).i = 1; \
+ } else { \
+ (s).r = (s).i = 0; \
+ } \
+ } else { \
+ NUM_CLOG(p, s); \
+ NUM_CMUL(s, q, s); \
+ NUM_CEXP(s, s); \
+ } \
+ }
+
+#define NUM_CSQRT(p, s) { Complex64 temp; temp.r = 0.5; temp.i=0; \
+ NUM_CPOW(p, temp, s); \
+ }
+
+#define NUM_CSQR(p, s) { Complex64 temp; temp.r = 2.0; temp.i=0; \
+ NUM_CPOW(p, temp, s); \
+ }
+
+#define NUM_CSIN(p, s) { Float64 sp = sin((p).r); \
+ Float64 cp = cos((p).r); \
+ (s).r = cosh((p).i) * sp; \
+ (s).i = sinh((p).i) * cp; \
+ }
+
+#define NUM_CCOS(p, s) { Float64 sp = sin((p).r); \
+ Float64 cp = cos((p).r); \
+ (s).r = cosh((p).i) * cp; \
+ (s).i = -sinh((p).i) * sp; \
+ }
+
+#define NUM_CTAN(p, s) { Complex64 ss, cs; \
+ NUM_CSIN(p, ss); \
+ NUM_CCOS(p, cs); \
+ NUM_CDIV(ss, cs, s); \
+ }
+
+#define NUM_CSINH(p, s) { Float64 sp = sin((p).i); \
+ Float64 cp = cos((p).i); \
+ (s).r = sinh((p).r) * cp; \
+ (s).i = cosh((p).r) * sp; \
+ }
+
+#define NUM_CCOSH(p, s) { Float64 sp = sin((p).i); \
+ Float64 cp = cos((p).i); \
+ (s).r = cosh((p).r) * cp; \
+ (s).i = sinh((p).r) * sp; \
+ }
+
+#define NUM_CTANH(p, s) { Complex64 ss, cs; \
+ NUM_CSINH(p, ss); \
+ NUM_CCOSH(p, cs); \
+ NUM_CDIV(ss, cs, s); \
+ }
+
+#define NUM_CRPOW(p, v, s) { Complex64 cr; cr.r = v; cr.i = 0; \
+ NUM_CPOW(p,cr,s); \
+ }
+
+#define NUM_CRMUL(p, v, s) (s).r = (p).r * v; (s).i = (p).i * v;
+
+#define NUM_CIMUL(p, s) { Float64 temp = (s).r; \
+ (s).r = -(p).i; (s).i = temp; \
+ }
+
+/* asin(z) = -i * log(i*z + (1 - z**2)**0.5) */
+#define NUM_CASIN(p, s) { Complex64 p1; NUM_CASS(p, p1); \
+ NUM_CIMUL(p, p1); \
+ NUM_CMUL(p, p, s); \
+ NUM_CNEG(s, s); \
+ (s).r += 1; \
+ NUM_CRPOW(s, 0.5, s); \
+ NUM_CADD(p1, s, s); \
+ NUM_CLOG(s, s); \
+ NUM_CIMUL(s, s); \
+ NUM_CNEG(s, s); \
+ }
+
+/* acos(z) = -i * log(z + i*(1 - z**2)**0.5) */
+#define NUM_CACOS(p, s) { Complex64 p1; NUM_CASS(p, p1); \
+ NUM_CMUL(p, p, s); \
+ NUM_CNEG(s, s); \
+ (s).r += 1; \
+ NUM_CRPOW(s, 0.5, s); \
+ NUM_CIMUL(s, s); \
+ NUM_CADD(p1, s, s); \
+ NUM_CLOG(s, s); \
+ NUM_CIMUL(s, s); \
+ NUM_CNEG(s, s); \
+ }
+
+/* atan(z) = i/2 * log( (i+z) / (i - z) ) */
+#define NUM_CATAN(p, s) { Complex64 p1, p2; \
+ NUM_CASS(p, p1); NUM_CNEG(p, p2); \
+ p1.i += 1; \
+ p2.i += 1; \
+ NUM_CDIV(p1, p2, s); \
+ NUM_CLOG(s, s); \
+ NUM_CIMUL(s, s); \
+ NUM_CRMUL(s, 0.5, s); \
+ }
+
+/* asinh(z) = log( z + (z**2 + 1)**0.5 ) */
+#define NUM_CASINH(p, s) { Complex64 p1; NUM_CASS(p, p1); \
+ NUM_CMUL(p, p, s); \
+ (s).r += 1; \
+ NUM_CRPOW(s, 0.5, s); \
+ NUM_CADD(p1, s, s); \
+ NUM_CLOG(s, s); \
+ }
+
+/* acosh(z) = log( z + (z**2 - 1)**0.5 ) */
+#define NUM_CACOSH(p, s) { Complex64 p1; NUM_CASS(p, p1); \
+ NUM_CMUL(p, p, s); \
+ (s).r -= 1; \
+ NUM_CRPOW(s, 0.5, s); \
+ NUM_CADD(p1, s, s); \
+ NUM_CLOG(s, s); \
+ }
+
+/* atanh(z) = 1/2 * log( (1+z)/(1-z) ) */
+#define NUM_CATANH(p, s) { Complex64 p1, p2; \
+ NUM_CASS(p, p1); NUM_CNEG(p, p2); \
+ p1.r += 1; \
+ p2.r += 1; \
+ NUM_CDIV(p1, p2, s); \
+ NUM_CLOG(s, s); \
+ NUM_CRMUL(s, 0.5, s); \
+ }
+
+
+#define NUM_CMIN(p, q) (NUM_CLE(p, q) ? p : q)
+#define NUM_CMAX(p, q) (NUM_CGE(p, q) ? p : q)
+
+#define NUM_CNZ(p) (((p).r != 0) || ((p).i != 0))
+#define NUM_CLAND(p, q) (NUM_CNZ(p) & NUM_CNZ(q))
+#define NUM_CLOR(p, q) (NUM_CNZ(p) | NUM_CNZ(q))
+#define NUM_CLXOR(p, q) (NUM_CNZ(p) ^ NUM_CNZ(q))
+#define NUM_CLNOT(p) (!NUM_CNZ(p))
+
+#define NUM_CFLOOR(p, s) (s).r = floor((p).r); (s).i = floor((p).i);
+#define NUM_CCEIL(p, s) (s).r = ceil((p).r); (s).i = ceil((p).i);
+
+#define NUM_CFABS(p, s) (s).r = fabs((p).r); (s).i = fabs((p).i);
+#define NUM_CROUND(p, s) (s).r = num_round((p).r); (s).i = num_round((p).i);
+#define NUM_CHYPOT(p, q, s) { Complex64 t; \
+ NUM_CSQR(p, s); NUM_CSQR(q, t); \
+ NUM_CADD(s, t, s); \
+ NUM_CSQRT(s, s); \
+ }
Property changes on: trunk/numpy/numarray/include/numpy/numcomplex.h
___________________________________________________________________
Name: svn:keywords
+ Id Author
Name: svn:eol-style
+ native
Copied: trunk/numpy/numarray/include/numpy/nummacro.h (from rev 8211, trunk/numpy/numarray/numpy/nummacro.h)
===================================================================
--- trunk/numpy/numarray/include/numpy/nummacro.h (rev 0)
+++ trunk/numpy/numarray/include/numpy/nummacro.h 2010-02-21 02:50:19 UTC (rev 8212)
@@ -0,0 +1,447 @@
+/* Primarily for compatibility with numarray C-API */
+
+#if !defined(_ndarraymacro)
+#define _ndarraymacro
+
+/* The structs defined here are private implementation details of numarray
+which are subject to change w/o notice.
+*/
+
+#define PY_BOOL_CHAR "b"
+#define PY_INT8_CHAR "b"
+#define PY_INT16_CHAR "h"
+#define PY_INT32_CHAR "i"
+#define PY_FLOAT32_CHAR "f"
+#define PY_FLOAT64_CHAR "d"
+#define PY_UINT8_CHAR "h"
+#define PY_UINT16_CHAR "i"
+#define PY_UINT32_CHAR "i" /* Unless longer int available */
+#define PY_COMPLEX64_CHAR "D"
+#define PY_COMPLEX128_CHAR "D"
+
+#define PY_LONG_CHAR "l"
+#define PY_LONG_LONG_CHAR "L"
+
+#define pyFPE_DIVIDE_BY_ZERO 1
+#define pyFPE_OVERFLOW 2
+#define pyFPE_UNDERFLOW 4
+#define pyFPE_INVALID 8
+
+#define isNonZERO(x) (x != 0) /* to convert values to boolean 1's or 0's */
+
+typedef enum
+{
+ NUM_CONTIGUOUS=1,
+ NUM_NOTSWAPPED=0x0200,
+ NUM_ALIGNED=0x0100,
+ NUM_WRITABLE=0x0400,
+ NUM_COPY=0x0020,
+
+ NUM_C_ARRAY = (NUM_CONTIGUOUS | NUM_ALIGNED | NUM_NOTSWAPPED),
+ NUM_UNCONVERTED = 0
+} NumRequirements;
+
+#define UNCONVERTED 0
+#define C_ARRAY (NUM_CONTIGUOUS | NUM_NOTSWAPPED | NUM_ALIGNED)
+
+#define MUST_BE_COMPUTED 2
+
+#define NUM_FLOORDIVIDE(a,b,out) (out) = floor((a)/(b))
+
+#define NA_Begin() Py_Initialize(); import_libnumarray();
+#define NA_End() NA_Done(); Py_Finalize();
+
+#define NA_OFFSETDATA(num) ((void *) PyArray_DATA(num))
+
+/* unaligned NA_COPY functions */
+#define NA_COPY1(i, o) (*(o) = *(i))
+#define NA_COPY2(i, o) NA_COPY1(i, o), NA_COPY1(i+1, o+1)
+#define NA_COPY4(i, o) NA_COPY2(i, o), NA_COPY2(i+2, o+2)
+#define NA_COPY8(i, o) NA_COPY4(i, o), NA_COPY4(i+4, o+4)
+#define NA_COPY16(i, o) NA_COPY8(i, o), NA_COPY8(i+8, o+8)
+
+/* byteswapping macros: these fail if i==o */
+#define NA_SWAP1(i, o) NA_COPY1(i, o)
+#define NA_SWAP2(i, o) NA_SWAP1(i, o+1), NA_SWAP1(i+1, o)
+#define NA_SWAP4(i, o) NA_SWAP2(i, o+2), NA_SWAP2(i+2, o)
+#define NA_SWAP8(i, o) NA_SWAP4(i, o+4), NA_SWAP4(i+4, o)
+#define NA_SWAP16(i, o) NA_SWAP8(i, o+8), NA_SWAP8(i+8, o)
+
+/* complex byteswaps must swap each part (real, imag) independently */
+#define NA_COMPLEX_SWAP8(i, o) NA_SWAP4(i, o), NA_SWAP4(i+4, o+4)
+#define NA_COMPLEX_SWAP16(i, o) NA_SWAP8(i, o), NA_SWAP8(i+8, o+8)
+
+/* byteswapping macros: these work even if i == o */
+#define NA_TSWAP1(i, o, t) NA_COPY1(i, t), NA_SWAP1(t, o)
+#define NA_TSWAP2(i, o, t) NA_COPY2(i, t), NA_SWAP2(t, o)
+#define NA_TSWAP4(i, o, t) NA_COPY4(i, t), NA_SWAP4(t, o)
+#define NA_TSWAP8(i, o, t) NA_COPY8(i, t), NA_SWAP8(t, o)
+
+/* fast copy functions for %N aligned i and o */
+#define NA_ACOPY1(i, o) (((Int8 *)o)[0] = ((Int8 *)i)[0])
+#define NA_ACOPY2(i, o) (((Int16 *)o)[0] = ((Int16 *)i)[0])
+#define NA_ACOPY4(i, o) (((Int32 *)o)[0] = ((Int32 *)i)[0])
+#define NA_ACOPY8(i, o) (((Float64 *)o)[0] = ((Float64 *)i)[0])
+#define NA_ACOPY16(i, o) (((Complex64 *)o)[0] = ((Complex64 *)i)[0])
+
+/* from here down, type("ai") is NDInfo* */
+
+#define NA_PTR(ai) ((char *) NA_OFFSETDATA((ai)))
+#define NA_PTR1(ai, i) (NA_PTR(ai) + \
+ (i)*(ai)->strides[0])
+#define NA_PTR2(ai, i, j) (NA_PTR(ai) + \
+ (i)*(ai)->strides[0] + \
+ (j)*(ai)->strides[1])
+#define NA_PTR3(ai, i, j, k) (NA_PTR(ai) + \
+ (i)*(ai)->strides[0] + \
+ (j)*(ai)->strides[1] + \
+ (k)*(ai)->strides[2])
+
+#define NA_SET_TEMP(ai, type, v) (((type *) &__temp__)[0] = v)
+
+#define NA_SWAPComplex64 NA_COMPLEX_SWAP16
+#define NA_SWAPComplex32 NA_COMPLEX_SWAP8
+#define NA_SWAPFloat64 NA_SWAP8
+#define NA_SWAPFloat32 NA_SWAP4
+#define NA_SWAPInt64 NA_SWAP8
+#define NA_SWAPUInt64 NA_SWAP8
+#define NA_SWAPInt32 NA_SWAP4
+#define NA_SWAPUInt32 NA_SWAP4
+#define NA_SWAPInt16 NA_SWAP2
+#define NA_SWAPUInt16 NA_SWAP2
+#define NA_SWAPInt8 NA_SWAP1
+#define NA_SWAPUInt8 NA_SWAP1
+#define NA_SWAPBool NA_SWAP1
+
+#define NA_COPYComplex64 NA_COPY16
+#define NA_COPYComplex32 NA_COPY8
+#define NA_COPYFloat64 NA_COPY8
+#define NA_COPYFloat32 NA_COPY4
+#define NA_COPYInt64 NA_COPY8
+#define NA_COPYUInt64 NA_COPY8
+#define NA_COPYInt32 NA_COPY4
+#define NA_COPYUInt32 NA_COPY4
+#define NA_COPYInt16 NA_COPY2
+#define NA_COPYUInt16 NA_COPY2
+#define NA_COPYInt8 NA_COPY1
+#define NA_COPYUInt8 NA_COPY1
+#define NA_COPYBool NA_COPY1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define _makeGetPb(type) \
+static type _NA_GETPb_##type(char *ptr) \
+{ \
+ type temp; \
+ NA_SWAP##type(ptr, (char *)&temp); \
+ return temp; \
+}
+
+#define _makeGetPa(type) \
+static type _NA_GETPa_##type(char *ptr) \
+{ \
+ type temp; \
+ NA_COPY##type(ptr, (char *)&temp); \
+ return temp; \
+}
+
+_makeGetPb(Complex64)
+_makeGetPb(Complex32)
+_makeGetPb(Float64)
+_makeGetPb(Float32)
+_makeGetPb(Int64)
+_makeGetPb(UInt64)
+_makeGetPb(Int32)
+_makeGetPb(UInt32)
+_makeGetPb(Int16)
+_makeGetPb(UInt16)
+_makeGetPb(Int8)
+_makeGetPb(UInt8)
+_makeGetPb(Bool)
+
+_makeGetPa(Complex64)
+_makeGetPa(Complex32)
+_makeGetPa(Float64)
+_makeGetPa(Float32)
+_makeGetPa(Int64)
+_makeGetPa(UInt64)
+_makeGetPa(Int32)
+_makeGetPa(UInt32)
+_makeGetPa(Int16)
+_makeGetPa(UInt16)
+_makeGetPa(Int8)
+_makeGetPa(UInt8)
+_makeGetPa(Bool)
+
+#undef _makeGetPb
+#undef _makeGetPa
+
+#define _makeSetPb(type) \
+static void _NA_SETPb_##type(char *ptr, type v) \
+{ \
+ NA_SWAP##type(((char *)&v), ptr); \
+ return; \
+}
+
+#define _makeSetPa(type) \
+static void _NA_SETPa_##type(char *ptr, type v) \
+{ \
+ NA_COPY##type(((char *)&v), ptr); \
+ return; \
+}
+
+_makeSetPb(Complex64)
+_makeSetPb(Complex32)
+_makeSetPb(Float64)
+_makeSetPb(Float32)
+_makeSetPb(Int64)
+_makeSetPb(UInt64)
+_makeSetPb(Int32)
+_makeSetPb(UInt32)
+_makeSetPb(Int16)
+_makeSetPb(UInt16)
+_makeSetPb(Int8)
+_makeSetPb(UInt8)
+_makeSetPb(Bool)
+
+_makeSetPa(Complex64)
+_makeSetPa(Complex32)
+_makeSetPa(Float64)
+_makeSetPa(Float32)
+_makeSetPa(Int64)
+_makeSetPa(UInt64)
+_makeSetPa(Int32)
+_makeSetPa(UInt32)
+_makeSetPa(Int16)
+_makeSetPa(UInt16)
+_makeSetPa(Int8)
+_makeSetPa(UInt8)
+_makeSetPa(Bool)
+
+#undef _makeSetPb
+#undef _makeSetPa
+
+#ifdef __cplusplus
+ }
+#endif
+
+/* ========================== ptr get/set ================================ */
+
+/* byteswapping */
+#define NA_GETPb(ai, type, ptr) _NA_GETPb_##type(ptr)
+
+/* aligning */
+#define NA_GETPa(ai, type, ptr) _NA_GETPa_##type(ptr)
+
+/* fast (aligned, !byteswapped) */
+#define NA_GETPf(ai, type, ptr) (*((type *) (ptr)))
+
+#define NA_GETP(ai, type, ptr) \
+ (PyArray_ISCARRAY(ai) ? NA_GETPf(ai, type, ptr) \
+ : (PyArray_ISBYTESWAPPED(ai) ? \
+ NA_GETPb(ai, type, ptr) \
+ : NA_GETPa(ai, type, ptr)))
+
+/* NOTE: NA_SET* macros cannot be used as values. */
+
+/* byteswapping */
+#define NA_SETPb(ai, type, ptr, v) _NA_SETPb_##type(ptr, v)
+
+/* aligning */
+#define NA_SETPa(ai, type, ptr, v) _NA_SETPa_##type(ptr, v)
+
+/* fast (aligned, !byteswapped) */
+#define NA_SETPf(ai, type, ptr, v) ((*((type *) ptr)) = (v))
+
+#define NA_SETP(ai, type, ptr, v) \
+ if (PyArray_ISCARRAY(ai)) { \
+ NA_SETPf((ai), type, (ptr), (v)); \
+ } else if (PyArray_ISBYTESWAPPED(ai)) { \
+ NA_SETPb((ai), type, (ptr), (v)); \
+ } else \
+ NA_SETPa((ai), type, (ptr), (v))
+
+/* ========================== 1 index get/set ============================ */
+
+/* byteswapping */
+#define NA_GET1b(ai, type, i) NA_GETPb(ai, type, NA_PTR1(ai, i))
+/* aligning */
+#define NA_GET1a(ai, type, i) NA_GETPa(ai, type, NA_PTR1(ai, i))
+/* fast (aligned, !byteswapped) */
+#define NA_GET1f(ai, type, i) NA_GETPf(ai, type, NA_PTR1(ai, i))
+/* testing */
+#define NA_GET1(ai, type, i) NA_GETP(ai, type, NA_PTR1(ai, i))
+
+/* byteswapping */
+#define NA_SET1b(ai, type, i, v) NA_SETPb(ai, type, NA_PTR1(ai, i), v)
+/* aligning */
+#define NA_SET1a(ai, type, i, v) NA_SETPa(ai, type, NA_PTR1(ai, i), v)
+/* fast (aligned, !byteswapped) */
+#define NA_SET1f(ai, type, i, v) NA_SETPf(ai, type, NA_PTR1(ai, i), v)
+/* testing */
+#define NA_SET1(ai, type, i, v) NA_SETP(ai, type, NA_PTR1(ai, i), v)
+
+/* ========================== 2 index get/set ============================= */
+
+/* byteswapping */
+#define NA_GET2b(ai, type, i, j) NA_GETPb(ai, type, NA_PTR2(ai, i, j))
+/* aligning */
+#define NA_GET2a(ai, type, i, j) NA_GETPa(ai, type, NA_PTR2(ai, i, j))
+/* fast (aligned, !byteswapped) */
+#define NA_GET2f(ai, type, i, j) NA_GETPf(ai, type, NA_PTR2(ai, i, j))
+/* testing */
+#define NA_GET2(ai, type, i, j) NA_GETP(ai, type, NA_PTR2(ai, i, j))
+
+/* byteswapping */
+#define NA_SET2b(ai, type, i, j, v) NA_SETPb(ai, type, NA_PTR2(ai, i, j), v)
+/* aligning */
+#define NA_SET2a(ai, type, i, j, v) NA_SETPa(ai, type, NA_PTR2(ai, i, j), v)
+/* fast (aligned, !byteswapped) */
+#define NA_SET2f(ai, type, i, j, v) NA_SETPf(ai, type, NA_PTR2(ai, i, j), v)
+
+#define NA_SET2(ai, type, i, j, v) NA_SETP(ai, type, NA_PTR2(ai, i, j), v)
+
+/* ========================== 3 index get/set ============================= */
+
+/* byteswapping */
+#define NA_GET3b(ai, type, i, j, k) NA_GETPb(ai, type, NA_PTR3(ai, i, j, k))
+/* aligning */
+#define NA_GET3a(ai, type, i, j, k) NA_GETPa(ai, type, NA_PTR3(ai, i, j, k))
+/* fast (aligned, !byteswapped) */
+#define NA_GET3f(ai, type, i, j, k) NA_GETPf(ai, type, NA_PTR3(ai, i, j, k))
+/* testing */
+#define NA_GET3(ai, type, i, j, k) NA_GETP(ai, type, NA_PTR3(ai, i, j, k))
+
+/* byteswapping */
+#define NA_SET3b(ai, type, i, j, k, v) \
+ NA_SETPb(ai, type, NA_PTR3(ai, i, j, k), v)
+/* aligning */
+#define NA_SET3a(ai, type, i, j, k, v) \
+ NA_SETPa(ai, type, NA_PTR3(ai, i, j, k), v)
+/* fast (aligned, !byteswapped) */
+#define NA_SET3f(ai, type, i, j, k, v) \
+ NA_SETPf(ai, type, NA_PTR3(ai, i, j, k), v)
+#define NA_SET3(ai, type, i, j, k, v) \
+ NA_SETP(ai, type, NA_PTR3(ai, i, j, k), v)
+
+/* ========================== 1D get/set ================================== */
+
+#define NA_GET1Db(ai, type, base, cnt, out) \
+ { int i, stride = ai->strides[ai->nd-1]; \
+ for(i=0; i<cnt; i++) { \
+ out[i] = NA_GETPb(ai, type, base); \
+ base += stride; \
+ } \
+ }
+
+#define NA_GET1Da(ai, type, base, cnt, out) \
+ { int i, stride = ai->strides[ai->nd-1]; \
+ for(i=0; i<cnt; i++) { \
+ out[i] = NA_GETPa(ai, type, base); \
+ base += stride; \
+ } \
+ }
+
+#define NA_GET1Df(ai, type, base, cnt, out) \
+ { int i, stride = ai->strides[ai->nd-1]; \
+ for(i=0; i<cnt; i++) { \
+ out[i] = NA_GETPf(ai, type, base); \
+ base += stride; \
+ } \
+ }
+
+#define NA_GET1D(ai, type, base, cnt, out) \
+ if (PyArray_ISCARRAY(ai)) { \
+ NA_GET1Df(ai, type, base, cnt, out); \
+ } else if (PyArray_ISBYTESWAPPED(ai)) { \
+ NA_GET1Db(ai, type, base, cnt, out); \
+ } else { \
+ NA_GET1Da(ai, type, base, cnt, out); \
+ }
+
+#define NA_SET1Db(ai, type, base, cnt, in) \
+ { int i, stride = ai->strides[ai->nd-1]; \
+ for(i=0; i<cnt; i++) { \
+ NA_SETPb(ai, type, base, in[i]); \
+ base += stride; \
+ } \
+ }
+
+#define NA_SET1Da(ai, type, base, cnt, in) \
+ { int i, stride = ai->strides[ai->nd-1]; \
+ for(i=0; i<cnt; i++) { \
+ NA_SETPa(ai, type, base, in[i]); \
+ base += stride; \
+ } \
+ }
+
+#define NA_SET1Df(ai, type, base, cnt, in) \
+ { int i, stride = ai->strides[ai->nd-1]; \
+ for(i=0; i<cnt; i++) { \
+ NA_SETPf(ai, type, base, in[i]); \
+ base += stride; \
+ } \
+ }
+
+#define NA_SET1D(ai, type, base, cnt, out) \
+ if (PyArray_ISCARRAY(ai)) { \
+ NA_SET1Df(ai, type, base, cnt, out); \
+ } else if (PyArray_ISBYTESWAPPED(ai)) { \
+ NA_SET1Db(ai, type, base, cnt, out); \
+ } else { \
+ NA_SET1Da(ai, type, base, cnt, out); \
+ }
+
+/* ========================== utilities ================================== */
+
+#if !defined(MIN)
+#define MIN(x,y) (((x)<=(y)) ? (x) : (y))
+#endif
+
+#if !defined(MAX)
+#define MAX(x,y) (((x)>=(y)) ? (x) : (y))
+#endif
+
+#if !defined(ABS)
+#define ABS(x) (((x) >= 0) ? (x) : -(x))
+#endif
+
+#define ELEM(x) (sizeof(x)/sizeof(x[0]))
+
+#define BOOLEAN_BITWISE_NOT(x) ((x) ^ 1)
+
+#define NA_NBYTES(a) (a->descr->elsize * NA_elements(a))
+
+#if defined(NA_SMP)
+#define BEGIN_THREADS Py_BEGIN_ALLOW_THREADS
+#define END_THREADS Py_END_ALLOW_THREADS
+#else
+#define BEGIN_THREADS
+#define END_THREADS
+#endif
+
+#if !defined(NA_isnan)
+
+#define U32(u) (* (Int32 *) &(u) )
+#define U64(u) (* (Int64 *) &(u) )
+
+#define NA_isnan32(u) \
+ ( (( U32(u) & 0x7f800000) == 0x7f800000) && ((U32(u) & 0x007fffff) != 0)) ? 1:0
+
+#if !defined(_MSC_VER)
+#define NA_isnan64(u) \
+ ( (( U64(u) & 0x7ff0000000000000LL) == 0x7ff0000000000000LL) && ((U64(u) & 0x000fffffffffffffLL) != 0)) ? 1:0
+#else
+#define NA_isnan64(u) \
+ ( (( U64(u) & 0x7ff0000000000000i64) == 0x7ff0000000000000i64) && ((U64(u) & 0x000fffffffffffffi64) != 0)) ? 1:0
+#endif
+
+#define NA_isnanC32(u) (NA_isnan32(((Complex32 *)&(u))->r) || NA_isnan32(((Complex32 *)&(u))->i))
+#define NA_isnanC64(u) (NA_isnan64(((Complex64 *)&(u))->r) || NA_isnan64(((Complex64 *)&(u))->i))
+
+#endif /* NA_isnan */
+
+
+#endif /* _ndarraymacro */
Property changes on: trunk/numpy/numarray/include/numpy/nummacro.h
___________________________________________________________________
Name: svn:keywords
+ Id Author
Name: svn:eol-style
+ native
Deleted: trunk/numpy/numarray/numpy/arraybase.h
===================================================================
--- trunk/numpy/numarray/numpy/arraybase.h 2010-02-21 02:49:39 UTC (rev 8211)
+++ trunk/numpy/numarray/numpy/arraybase.h 2010-02-21 02:50:19 UTC (rev 8212)
@@ -1,71 +0,0 @@
-#if !defined(__arraybase_h)
-#define _arraybase_h 1
-
-#define SZ_BUF 79
-#define MAXDIM NPY_MAXDIMS
-#define MAXARGS 18
-
-typedef npy_intp maybelong;
-typedef npy_bool Bool;
-typedef npy_int8 Int8;
-typedef npy_uint8 UInt8;
-typedef npy_int16 Int16;
-typedef npy_uint16 UInt16;
-typedef npy_int32 Int32;
-typedef npy_uint32 UInt32;
-typedef npy_int64 Int64;
-typedef npy_uint64 UInt64;
-typedef npy_float32 Float32;
-typedef npy_float64 Float64;
-
-typedef enum
-{
- tAny=-1,
- tBool=PyArray_BOOL,
- tInt8=PyArray_INT8,
- tUInt8=PyArray_UINT8,
- tInt16=PyArray_INT16,
- tUInt16=PyArray_UINT16,
- tInt32=PyArray_INT32,
- tUInt32=PyArray_UINT32,
- tInt64=PyArray_INT64,
- tUInt64=PyArray_UINT64,
- tFloat32=PyArray_FLOAT32,
- tFloat64=PyArray_FLOAT64,
- tComplex32=PyArray_COMPLEX64,
- tComplex64=PyArray_COMPLEX128,
- tObject=PyArray_OBJECT, /* placeholder... does nothing */
- tMaxType=PyArray_NTYPES,
- tDefault = tFloat64,
-#if NPY_BITSOF_LONG == 64
- tLong = tInt64,
-#else
- tLong = tInt32,
-#endif
-} NumarrayType;
-
-#define nNumarrayType PyArray_NTYPES
-
-#define HAS_UINT64 1
-
-typedef enum
-{
- NUM_LITTLE_ENDIAN=0,
- NUM_BIG_ENDIAN = 1
-} NumarrayByteOrder;
-
-typedef struct { Float32 r, i; } Complex32;
-typedef struct { Float64 r, i; } Complex64;
-
-#define WRITABLE NPY_WRITEABLE
-#define CHECKOVERFLOW 0x800
-#define UPDATEDICT 0x1000
-#define FORTRAN_CONTIGUOUS NPY_FORTRAN
-#define IS_CARRAY (NPY_CONTIGUOUS | NPY_ALIGNED)
-
-#define PyArray(m) ((PyArrayObject *)(m))
-#define PyArray_ISFORTRAN_CONTIGUOUS(m) (((PyArray(m))->flags & FORTRAN_CONTIGUOUS) != 0)
-#define PyArray_ISWRITABLE PyArray_ISWRITEABLE
-
-
-#endif
Deleted: trunk/numpy/numarray/numpy/cfunc.h
===================================================================
--- trunk/numpy/numarray/numpy/cfunc.h 2010-02-21 02:49:39 UTC (rev 8211)
+++ trunk/numpy/numarray/numpy/cfunc.h 2010-02-21 02:50:19 UTC (rev 8212)
@@ -1,78 +0,0 @@
-#if !defined(__cfunc__)
-#define __cfunc__ 1
-
-typedef PyObject *(*CFUNCasPyValue)(void *);
-typedef int (*UFUNC)(long, long, long, void **, long*);
-/* typedef void (*CFUNC_2ARG)(long, void *, void *); */
-/* typedef void (*CFUNC_3ARG)(long, void *, void *, void *); */
-typedef int (*CFUNCfromPyValue)(PyObject *, void *);
-typedef int (*CFUNC_STRIDE_CONV_FUNC)(long, long, maybelong *,
- void *, long, maybelong*, void *, long, maybelong *);
-
-typedef int (*CFUNC_STRIDED_FUNC)(PyObject *, long, PyArrayObject **,
- char **data);
-
-#define MAXARRAYS 16
-
-typedef enum {
- CFUNC_UFUNC,
- CFUNC_STRIDING,
- CFUNC_NSTRIDING,
- CFUNC_AS_PY_VALUE,
- CFUNC_FROM_PY_VALUE
-} eCfuncType;
-
-typedef struct {
- char *name;
- void *fptr; /* Pointer to "un-wrapped" c function */
- eCfuncType type; /* UFUNC, STRIDING, AsPyValue, FromPyValue */
- Bool chkself; /* CFUNC does own alignment/bounds checking */
- Bool align; /* CFUNC requires aligned buffer pointers */
- Int8 wantIn, wantOut; /* required input/output arg counts. */
- Int8 sizes[MAXARRAYS]; /* array of align/itemsizes. */
- Int8 iters[MAXARRAYS]; /* array of element counts. 0 --> niter. */
-} CfuncDescriptor;
-
-typedef struct {
- PyObject_HEAD
- CfuncDescriptor descr;
-} CfuncObject;
-
-#define SELF_CHECKED_CFUNC_DESCR(name, type) \
- static CfuncDescriptor name##_descr = { #name, (void *) name, type, 1 }
-
-#define CHECK_ALIGN 1
-
-#define CFUNC_DESCR(name, type, align, iargs, oargs, s1, s2, s3, i1, i2, i3) \
- static CfuncDescriptor name##_descr = \
- { #name, (void *)name, type, 0, align, iargs, oargs, {s1, s2, s3}, {i1, i2, i3} }
-
-#define UFUNC_DESCR1(name, s1) \
- CFUNC_DESCR(name, CFUNC_UFUNC, CHECK_ALIGN, 0, 1, s1, 0, 0, 0, 0, 0)
-
-#define UFUNC_DESCR2(name, s1, s2) \
- CFUNC_DESCR(name, CFUNC_UFUNC, CHECK_ALIGN, 1, 1, s1, s2, 0, 0, 0, 0)
-
-#define UFUNC_DESCR3(name, s1, s2, s3) \
- CFUNC_DESCR(name, CFUNC_UFUNC, CHECK_ALIGN, 2, 1, s1, s2, s3, 0, 0, 0)
-
-#define UFUNC_DESCR3sv(name, s1, s2, s3) \
- CFUNC_DESCR(name, CFUNC_UFUNC, CHECK_ALIGN, 2, 1, s1, s2, s3, 1, 0, 0)
-
-#define UFUNC_DESCR3vs(name, s1, s2, s3) \
- CFUNC_DESCR(name, CFUNC_UFUNC, CHECK_ALIGN, 2, 1, s1, s2, s3, 0, 1, 0)
-
-#define STRIDING_DESCR2(name, align, s1, s2) \
- CFUNC_DESCR(name, CFUNC_STRIDING, align, 1, 1, s1, s2, 0, 0, 0, 0)
-
-#define NSTRIDING_DESCR1(name) \
- CFUNC_DESCR(name, CFUNC_NSTRIDING, 0, 0, 1, 0, 0, 0, 0, 0, 0)
-
-#define NSTRIDING_DESCR2(name) \
- CFUNC_DESCR(name, CFUNC_NSTRIDING, 0, 1, 1, 0, 0, 0, 0, 0, 0)
-
-#define NSTRIDING_DESCR3(name) \
- CFUNC_DESCR(name, CFUNC_NSTRIDING, 0, 2, 1, 0, 0, 0, 0, 0, 0)
-
-#endif
-
Deleted: trunk/numpy/numarray/numpy/ieeespecial.h
===================================================================
--- trunk/numpy/numarray/numpy/ieeespecial.h 2010-02-21 02:49:39 UTC (rev 8211)
+++ trunk/numpy/numarray/numpy/ieeespecial.h 2010-02-21 02:50:19 UTC (rev 8212)
@@ -1,124 +0,0 @@
-/* 32-bit special value ranges */
-
-#if defined(_MSC_VER)
-#define MKINT(x) (x##UL)
-#define MKINT64(x) (x##Ui64)
-#define BIT(x) (1Ui64 << (x))
-#else
-#define MKINT(x) (x##U)
-#define MKINT64(x) (x##ULL)
-#define BIT(x) (1ULL << (x))
-#endif
-
-
-#define NEG_QUIET_NAN_MIN32 MKINT(0xFFC00001)
-#define NEG_QUIET_NAN_MAX32 MKINT(0xFFFFFFFF)
-
-#define INDETERMINATE_MIN32 MKINT(0xFFC00000)
-#define INDETERMINATE_MAX32 MKINT(0xFFC00000)
-
-#define NEG_SIGNAL_NAN_MIN32 MKINT(0xFF800001)
-#define NEG_SIGNAL_NAN_MAX32 MKINT(0xFFBFFFFF)
-
-#define NEG_INFINITY_MIN32 MKINT(0xFF800000)
-
-#define NEG_NORMALIZED_MIN32 MKINT(0x80800000)
-#define NEG_NORMALIZED_MAX32 MKINT(0xFF7FFFFF)
-
-#define NEG_DENORMALIZED_MIN32 MKINT(0x80000001)
-#define NEG_DENORMALIZED_MAX32 MKINT(0x807FFFFF)
-
-#define NEG_ZERO_MIN32 MKINT(0x80000000)
-#define NEG_ZERO_MAX32 MKINT(0x80000000)
-
-#define POS_ZERO_MIN32 MKINT(0x00000000)
-#define POS_ZERO_MAX32 MKINT(0x00000000)
-
-#define POS_DENORMALIZED_MIN32 MKINT(0x00000001)
-#define POS_DENORMALIZED_MAX32 MKINT(0x007FFFFF)
-
-#define POS_NORMALIZED_MIN32 MKINT(0x00800000)
-#define POS_NORMALIZED_MAX32 MKINT(0x7F7FFFFF)
-
-#define POS_INFINITY_MIN32 MKINT(0x7F800000)
-#define POS_INFINITY_MAX32 MKINT(0x7F800000)
-
-#define POS_SIGNAL_NAN_MIN32 MKINT(0x7F800001)
-#define POS_SIGNAL_NAN_MAX32 MKINT(0x7FBFFFFF)
-
-#define POS_QUIET_NAN_MIN32 MKINT(0x7FC00000)
-#define POS_QUIET_NAN_MAX32 MKINT(0x7FFFFFFF)
-
-/* 64-bit special value ranges */
-
-#define NEG_QUIET_NAN_MIN64 MKINT64(0xFFF8000000000001)
-#define NEG_QUIET_NAN_MAX64 MKINT64(0xFFFFFFFFFFFFFFFF)
-
-#define INDETERMINATE_MIN64 MKINT64(0xFFF8000000000000)
-#define INDETERMINATE_MAX64 MKINT64(0xFFF8000000000000)
-
-#define NEG_SIGNAL_NAN_MIN64 MKINT64(0xFFF7FFFFFFFFFFFF)
-#define NEG_SIGNAL_NAN_MAX64 MKINT64(0xFFF0000000000001)
-
-#define NEG_INFINITY_MIN64 MKINT64(0xFFF0000000000000)
-
-#define NEG_NORMALIZED_MIN64 MKINT64(0xFFEFFFFFFFFFFFFF)
-#define NEG_NORMALIZED_MAX64 MKINT64(0x8010000000000000)
-
-#define NEG_DENORMALIZED_MIN64 MKINT64(0x800FFFFFFFFFFFFF)
-#define NEG_DENORMALIZED_MAX64 MKINT64(0x8000000000000001)
-
-#define NEG_ZERO_MIN64 MKINT64(0x8000000000000000)
-#define NEG_ZERO_MAX64 MKINT64(0x8000000000000000)
-
-#define POS_ZERO_MIN64 MKINT64(0x0000000000000000)
-#define POS_ZERO_MAX64 MKINT64(0x0000000000000000)
-
-#define POS_DENORMALIZED_MIN64 MKINT64(0x0000000000000001)
-#define POS_DENORMALIZED_MAX64 MKINT64(0x000FFFFFFFFFFFFF)
-
-#define POS_NORMALIZED_MIN64 MKINT64(0x0010000000000000)
-#define POS_NORMALIZED_MAX64 MKINT64(0x7FEFFFFFFFFFFFFF)
-
-#define POS_INFINITY_MIN64 MKINT64(0x7FF0000000000000)
-#define POS_INFINITY_MAX64 MKINT64(0x7FF0000000000000)
-
-#define POS_SIGNAL_NAN_MIN64 MKINT64(0x7FF0000000000001)
-#define POS_SIGNAL_NAN_MAX64 MKINT64(0x7FF7FFFFFFFFFFFF)
-
-#define POS_QUIET_NAN_MIN64 MKINT64(0x7FF8000000000000)
-#define POS_QUIET_NAN_MAX64 MKINT64(0x7FFFFFFFFFFFFFFF)
-
-typedef enum
-{
- POS_QNAN_BIT,
- NEG_QNAN_BIT,
- POS_SNAN_BIT,
- NEG_SNAN_BIT,
- POS_INF_BIT,
- NEG_INF_BIT,
- POS_DEN_BIT,
- NEG_DEN_BIT,
- POS_NOR_BIT,
- NEG_NOR_BIT,
- POS_ZERO_BIT,
- NEG_ZERO_BIT,
- INDETERM_BIT,
- BUG_BIT
-} ieee_selects;
-
-#define MSK_POS_QNAN BIT(POS_QNAN_BIT)
-#define MSK_POS_SNAN BIT(POS_SNAN_BIT)
-#define MSK_POS_INF BIT(POS_INF_BIT)
-#define MSK_POS_DEN BIT(POS_DEN_BIT)
-#define MSK_POS_NOR BIT(POS_NOR_BIT)
-#define MSK_POS_ZERO BIT(POS_ZERO_BIT)
-#define MSK_NEG_QNAN BIT(NEG_QNAN_BIT)
-#define MSK_NEG_SNAN BIT(NEG_SNAN_BIT)
-#define MSK_NEG_INF BIT(NEG_INF_BIT)
-#define MSK_NEG_DEN BIT(NEG_DEN_BIT)
-#define MSK_NEG_NOR BIT(NEG_NOR_BIT)
-#define MSK_NEG_ZERO BIT(NEG_ZERO_BIT)
-#define MSK_INDETERM BIT(INDETERM_BIT)
-#define MSK_BUG BIT(BUG_BIT)
-
Deleted: trunk/numpy/numarray/numpy/libnumarray.h
===================================================================
--- trunk/numpy/numarray/numpy/libnumarray.h 2010-02-21 02:49:39 UTC (rev 8211)
+++ trunk/numpy/numarray/numpy/libnumarray.h 2010-02-21 02:50:19 UTC (rev 8212)
@@ -1,611 +0,0 @@
-/* Compatibility with numarray. Do not use in new code.
- */
-
-#ifndef NUMPY_LIBNUMARRAY_H
-#define NUMPY_LIBNUMARRAY_H
-
-#include "numpy/arrayobject.h"
-#include "arraybase.h"
-#include "nummacro.h"
-#include "numcomplex.h"
-#include "ieeespecial.h"
-#include "cfunc.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Header file for libnumarray */
-
-#if !defined(_libnumarray_MODULE)
-
-/*
-Extensions constructed from seperate compilation units can access the
-C-API defined here by defining "libnumarray_UNIQUE_SYMBOL" to a global
-name unique to the extension. Doing this circumvents the requirement
-to import libnumarray into each compilation unit, but is nevertheless
-mildly discouraged as "outside the Python norm" and potentially
-leading to problems. Looking around at "existing Python art", most
-extension modules are monolithic C files, and likely for good reason.
-*/
-
-/* C API address pointer */
-#if defined(NO_IMPORT) || defined(NO_IMPORT_ARRAY)
-extern void **libnumarray_API;
-#else
-#if defined(libnumarray_UNIQUE_SYMBOL)
-void **libnumarray_API;
-#else
-static void **libnumarray_API;
-#endif
-#endif
-
-#define _import_libnumarray() \
- { \
- PyObject *module = PyImport_ImportModule("numpy.numarray._capi"); \
- if (module != NULL) { \
- PyObject *module_dict = PyModule_GetDict(module); \
- PyObject *c_api_object = \
- PyDict_GetItemString(module_dict, "_C_API"); \
- if (c_api_object && PyCObject_Check(c_api_object)) { \
- libnumarray_API = (void **)PyCObject_AsVoidPtr(c_api_object); \
- } else { \
- PyErr_Format(PyExc_ImportError, \
- "Can't get API for module 'numpy.numarray._capi'"); \
- } \
- } \
- }
-
-#define import_libnumarray() _import_libnumarray(); if (PyErr_Occurred()) { PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.numarray._capi failed to import.\n"); return; }
-
-#endif
-
-
-#define libnumarray_FatalApiError (Py_FatalError("Call to API function without first calling import_libnumarray() in " __FILE__), NULL)
-
-
-/* Macros defining components of function prototypes */
-
-#ifdef _libnumarray_MODULE
- /* This section is used when compiling libnumarray */
-
-static PyObject *_Error;
-
-static PyObject* getBuffer (PyObject*o);
-
-static int isBuffer (PyObject*o);
-
-static int getWriteBufferDataPtr (PyObject*o,void**p);
-
-static int isBufferWriteable (PyObject*o);
-
-static int getReadBufferDataPtr (PyObject*o,void**p);
-
-static int getBufferSize (PyObject*o);
-
-static double num_log (double x);
-
-static double num_log10 (double x);
-
-static double num_pow (double x, double y);
-
-static double num_acosh (double x);
-
-static double num_asinh (double x);
-
-static double num_atanh (double x);
-
-static double num_round (double x);
-
-static int int_dividebyzero_error (long value, long unused);
-
-static int int_overflow_error (Float64 value);
-
-static int umult64_overflow (UInt64 a, UInt64 b);
-
-static int smult64_overflow (Int64 a0, Int64 b0);
-
-static void NA_Done (void);
-
-static PyArrayObject* NA_NewAll (int ndim, maybelong* shape, NumarrayType type, void* buffer, maybelong byteoffset, maybelong bytestride, int byteorder, int aligned, int writeable);
-
-static PyArrayObject* NA_NewAllStrides (int ndim, maybelong* shape, maybelong* strides, NumarrayType type, void* buffer, maybelong byteoffset, int byteorder, int aligned, int writeable);
-
-static PyArrayObject* NA_New (void* buffer, NumarrayType type, int ndim,...);
-
-static PyArrayObject* NA_Empty (int ndim, maybelong* shape, NumarrayType type);
-
-static PyArrayObject* NA_NewArray (void* buffer, NumarrayType type, int ndim, ...);
-
-static PyArrayObject* NA_vNewArray (void* buffer, NumarrayType type, int ndim, maybelong *shape);
-
-static PyObject* NA_ReturnOutput (PyObject*,PyArrayObject*);
-
-static long NA_getBufferPtrAndSize (PyObject*,int,void**);
-
-static int NA_checkIo (char*,int,int,int,int);
-
-static int NA_checkOneCBuffer (char*,long,void*,long,size_t);
-
-static int NA_checkNCBuffers (char*,int,long,void**,long*,Int8*,Int8*);
-
-static int NA_checkOneStriding (char*,long,maybelong*,long,maybelong*,long,long,int);
-
-static PyObject* NA_new_cfunc (CfuncDescriptor*);
-
-static int NA_add_cfunc (PyObject*,char*,CfuncDescriptor*);
-
-static PyArrayObject* NA_InputArray (PyObject*,NumarrayType,int);
-
-static PyArrayObject* NA_OutputArray (PyObject*,NumarrayType,int);
-
-static PyArrayObject* NA_IoArray (PyObject*,NumarrayType,int);
-
-static PyArrayObject* NA_OptionalOutputArray (PyObject*,NumarrayType,int,PyArrayObject*);
-
-static long NA_get_offset (PyArrayObject*,int,...);
-
-static Float64 NA_get_Float64 (PyArrayObject*,long);
-
-static void NA_set_Float64 (PyArrayObject*,long,Float64);
-
-static Complex64 NA_get_Complex64 (PyArrayObject*,long);
-
-static void NA_set_Complex64 (PyArrayObject*,long,Complex64);
-
-static Int64 NA_get_Int64 (PyArrayObject*,long);
-
-static void NA_set_Int64 (PyArrayObject*,long,Int64);
-
-static Float64 NA_get1_Float64 (PyArrayObject*,long);
-
-static Float64 NA_get2_Float64 (PyArrayObject*,long,long);
-
-static Float64 NA_get3_Float64 (PyArrayObject*,long,long,long);
-
-static void NA_set1_Float64 (PyArrayObject*,long,Float64);
-
-static void NA_set2_Float64 (PyArrayObject*,long,long,Float64);
-
-static void NA_set3_Float64 (PyArrayObject*,long,long,long,Float64);
-
-static Complex64 NA_get1_Complex64 (PyArrayObject*,long);
-
-static Complex64 NA_get2_Complex64 (PyArrayObject*,long,long);
-
-static Complex64 NA_get3_Complex64 (PyArrayObject*,long,long,long);
-
-static void NA_set1_Complex64 (PyArrayObject*,long,Complex64);
-
-static void NA_set2_Complex64 (PyArrayObject*,long,long,Complex64);
-
-static void NA_set3_Complex64 (PyArrayObject*,long,long,long,Complex64);
-
-static Int64 NA_get1_Int64 (PyArrayObject*,long);
-
-static Int64 NA_get2_Int64 (PyArrayObject*,long,long);
-
-static Int64 NA_get3_Int64 (PyArrayObject*,long,long,long);
-
-static void NA_set1_Int64 (PyArrayObject*,long,Int64);
-
-static void NA_set2_Int64 (PyArrayObject*,long,long,Int64);
-
-static void NA_set3_Int64 (PyArrayObject*,long,long,long,Int64);
-
-static int NA_get1D_Float64 (PyArrayObject*,long,int,Float64*);
-
-static int NA_set1D_Float64 (PyArrayObject*,long,int,Float64*);
-
-static int NA_get1D_Int64 (PyArrayObject*,long,int,Int64*);
-
-static int NA_set1D_Int64 (PyArrayObject*,long,int,Int64*);
-
-static int NA_get1D_Complex64 (PyArrayObject*,long,int,Complex64*);
-
-static int NA_set1D_Complex64 (PyArrayObject*,long,int,Complex64*);
-
-static int NA_ShapeEqual (PyArrayObject*,PyArrayObject*);
-
-static int NA_ShapeLessThan (PyArrayObject*,PyArrayObject*);
-
-static int NA_ByteOrder (void);
-
-static Bool NA_IeeeSpecial32 (Float32*,Int32*);
-
-static Bool NA_IeeeSpecial64 (Float64*,Int32*);
-
-static PyArrayObject* NA_updateDataPtr (PyArrayObject*);
-
-static char* NA_typeNoToName (int);
-
-static int NA_nameToTypeNo (char*);
-
-static PyObject* NA_typeNoToTypeObject (int);
-
-static PyObject* NA_intTupleFromMaybeLongs (int,maybelong*);
-
-static long NA_maybeLongsFromIntTuple (int,maybelong*,PyObject*);
-
-static int NA_intTupleProduct (PyObject *obj, long *product);
-
-static long NA_isIntegerSequence (PyObject*);
-
-static PyObject* NA_setArrayFromSequence (PyArrayObject*,PyObject*);
-
-static int NA_maxType (PyObject*);
-
-static int NA_isPythonScalar (PyObject *obj);
-
-static PyObject* NA_getPythonScalar (PyArrayObject*,long);
-
-static int NA_setFromPythonScalar (PyArrayObject*,long,PyObject*);
-
-static int NA_NDArrayCheck (PyObject*);
-
-static int NA_NumArrayCheck (PyObject*);
-
-static int NA_ComplexArrayCheck (PyObject*);
-
-static unsigned long NA_elements (PyArrayObject*);
-
-static int NA_typeObjectToTypeNo (PyObject*);
-
-static int NA_copyArray (PyArrayObject* to, const PyArrayObject* from);
-
-static PyArrayObject* NA_copy (PyArrayObject*);
-
-static PyObject* NA_getType (PyObject *typeobj_or_name);
-
-static PyObject * NA_callCUFuncCore (PyObject *cfunc, long niter, long ninargs, long noutargs, PyObject **BufferObj, long *offset);
-
-static PyObject * NA_callStrideConvCFuncCore (PyObject *cfunc, int nshape, maybelong *shape, PyObject *inbuffObj, long inboffset, int nstrides0, maybelong *inbstrides, PyObject *outbuffObj, long outboffset, int nstrides1, maybelong *outbstrides, long nbytes);
-
-static void NA_stridesFromShape (int nshape, maybelong *shape, maybelong bytestride, maybelong *strides);
-
-static int NA_OperatorCheck (PyObject *obj);
-
-static int NA_ConverterCheck (PyObject *obj);
-
-static int NA_UfuncCheck (PyObject *obj);
-
-static int NA_CfuncCheck (PyObject *obj);
-
-static int NA_getByteOffset (PyArrayObject *array, int nindices, maybelong *indices, long *offset);
-
-static int NA_swapAxes (PyArrayObject *array, int x, int y);
-
-static PyObject * NA_initModuleGlobal (char *module, char *global);
-
-static NumarrayType NA_NumarrayType (PyObject *seq);
-
-static PyArrayObject * NA_NewAllFromBuffer (int ndim, maybelong *shape, NumarrayType type, PyObject *bufferObject, maybelong byteoffset, maybelong bytestride, int byteorder, int aligned, int writeable);
-
-static Float64 * NA_alloc1D_Float64 (PyArrayObject *a, long offset, int cnt);
-
-static Int64 * NA_alloc1D_Int64 (PyArrayObject *a, long offset, int cnt);
-
-static void NA_updateAlignment (PyArrayObject *self);
-
-static void NA_updateContiguous (PyArrayObject *self);
-
-static void NA_updateStatus (PyArrayObject *self);
-
-static int NA_NumArrayCheckExact (PyObject *op);
-
-static int NA_NDArrayCheckExact (PyObject *op);
-
-static int NA_OperatorCheckExact (PyObject *op);
-
-static int NA_ConverterCheckExact (PyObject *op);
-
-static int NA_UfuncCheckExact (PyObject *op);
-
-static int NA_CfuncCheckExact (PyObject *op);
-
-static char * NA_getArrayData (PyArrayObject *ap);
-
-static void NA_updateByteswap (PyArrayObject *ap);
-
-static PyArray_Descr * NA_DescrFromType (int type);
-
-static PyObject * NA_Cast (PyArrayObject *a, int type);
-
-static int NA_checkFPErrors (void);
-
-static void NA_clearFPErrors (void);
-
-static int NA_checkAndReportFPErrors (char *name);
-
-static Bool NA_IeeeMask32 (Float32,Int32);
-
-static Bool NA_IeeeMask64 (Float64,Int32);
-
-static int _NA_callStridingHelper (PyObject *aux, long dim, long nnumarray, PyArrayObject *numarray[], char *data[], CFUNC_STRIDED_FUNC f);
-
-static PyArrayObject * NA_FromDimsStridesDescrAndData (int nd, maybelong *dims, maybelong *strides, PyArray_Descr *descr, char *data);
-
-static PyArrayObject * NA_FromDimsTypeAndData (int nd, maybelong *dims, int type, char *data);
-
-static PyArrayObject * NA_FromDimsStridesTypeAndData (int nd, maybelong *dims, maybelong *strides, int type, char *data);
-
-static int NA_scipy_typestr (NumarrayType t, int byteorder, char *typestr);
-
-static PyArrayObject * NA_FromArrayStruct (PyObject *a);
-
-
-#else
- /* This section is used in modules that use libnumarray */
-
-#define getBuffer (libnumarray_API ? (*(PyObject* (*) (PyObject*o) ) libnumarray_API[ 0 ]) : (*(PyObject* (*) (PyObject*o) ) libnumarray_FatalApiError))
-
-#define isBuffer (libnumarray_API ? (*(int (*) (PyObject*o) ) libnumarray_API[ 1 ]) : (*(int (*) (PyObject*o) ) libnumarray_FatalApiError))
-
-#define getWriteBufferDataPtr (libnumarray_API ? (*(int (*) (PyObject*o,void**p) ) libnumarray_API[ 2 ]) : (*(int (*) (PyObject*o,void**p) ) libnumarray_FatalApiError))
-
-#define isBufferWriteable (libnumarray_API ? (*(int (*) (PyObject*o) ) libnumarray_API[ 3 ]) : (*(int (*) (PyObject*o) ) libnumarray_FatalApiError))
-
-#define getReadBufferDataPtr (libnumarray_API ? (*(int (*) (PyObject*o,void**p) ) libnumarray_API[ 4 ]) : (*(int (*) (PyObject*o,void**p) ) libnumarray_FatalApiError))
-
-#define getBufferSize (libnumarray_API ? (*(int (*) (PyObject*o) ) libnumarray_API[ 5 ]) : (*(int (*) (PyObject*o) ) libnumarray_FatalApiError))
-
-#define num_log (libnumarray_API ? (*(double (*) (double x) ) libnumarray_API[ 6 ]) : (*(double (*) (double x) ) libnumarray_FatalApiError))
-
-#define num_log10 (libnumarray_API ? (*(double (*) (double x) ) libnumarray_API[ 7 ]) : (*(double (*) (double x) ) libnumarray_FatalApiError))
-
-#define num_pow (libnumarray_API ? (*(double (*) (double x, double y) ) libnumarray_API[ 8 ]) : (*(double (*) (double x, double y) ) libnumarray_FatalApiError))
-
-#define num_acosh (libnumarray_API ? (*(double (*) (double x) ) libnumarray_API[ 9 ]) : (*(double (*) (double x) ) libnumarray_FatalApiError))
-
-#define num_asinh (libnumarray_API ? (*(double (*) (double x) ) libnumarray_API[ 10 ]) : (*(double (*) (double x) ) libnumarray_FatalApiError))
-
-#define num_atanh (libnumarray_API ? (*(double (*) (double x) ) libnumarray_API[ 11 ]) : (*(double (*) (double x) ) libnumarray_FatalApiError))
-
-#define num_round (libnumarray_API ? (*(double (*) (double x) ) libnumarray_API[ 12 ]) : (*(double (*) (double x) ) libnumarray_FatalApiError))
-
-#define int_dividebyzero_error (libnumarray_API ? (*(int (*) (long value, long unused) ) libnumarray_API[ 13 ]) : (*(int (*) (long value, long unused) ) libnumarray_FatalApiError))
-
-#define int_overflow_error (libnumarray_API ? (*(int (*) (Float64 value) ) libnumarray_API[ 14 ]) : (*(int (*) (Float64 value) ) libnumarray_FatalApiError))
-
-#define umult64_overflow (libnumarray_API ? (*(int (*) (UInt64 a, UInt64 b) ) libnumarray_API[ 15 ]) : (*(int (*) (UInt64 a, UInt64 b) ) libnumarray_FatalApiError))
-
-#define smult64_overflow (libnumarray_API ? (*(int (*) (Int64 a0, Int64 b0) ) libnumarray_API[ 16 ]) : (*(int (*) (Int64 a0, Int64 b0) ) libnumarray_FatalApiError))
-
-#define NA_Done (libnumarray_API ? (*(void (*) (void) ) libnumarray_API[ 17 ]) : (*(void (*) (void) ) libnumarray_FatalApiError))
-
-#define NA_NewAll (libnumarray_API ? (*(PyArrayObject* (*) (int ndim, maybelong* shape, NumarrayType type, void* buffer, maybelong byteoffset, maybelong bytestride, int byteorder, int aligned, int writeable) ) libnumarray_API[ 18 ]) : (*(PyArrayObject* (*) (int ndim, maybelong* shape, NumarrayType type, void* buffer, maybelong byteoffset, maybelong bytestride, int byteorder, int aligned, int writeable) ) libnumarray_FatalApiError))
-
-#define NA_NewAllStrides (libnumarray_API ? (*(PyArrayObject* (*) (int ndim, maybelong* shape, maybelong* strides, NumarrayType type, void* buffer, maybelong byteoffset, int byteorder, int aligned, int writeable) ) libnumarray_API[ 19 ]) : (*(PyArrayObject* (*) (int ndim, maybelong* shape, maybelong* strides, NumarrayType type, void* buffer, maybelong byteoffset, int byteorder, int aligned, int writeable) ) libnumarray_FatalApiError))
-
-#define NA_New (libnumarray_API ? (*(PyArrayObject* (*) (void* buffer, NumarrayType type, int ndim,...) ) libnumarray_API[ 20 ]) : (*(PyArrayObject* (*) (void* buffer, NumarrayType type, int ndim,...) ) libnumarray_FatalApiError))
-
-#define NA_Empty (libnumarray_API ? (*(PyArrayObject* (*) (int ndim, maybelong* shape, NumarrayType type) ) libnumarray_API[ 21 ]) : (*(PyArrayObject* (*) (int ndim, maybelong* shape, NumarrayType type) ) libnumarray_FatalApiError))
-
-#define NA_NewArray (libnumarray_API ? (*(PyArrayObject* (*) (void* buffer, NumarrayType type, int ndim, ...) ) libnumarray_API[ 22 ]) : (*(PyArrayObject* (*) (void* buffer, NumarrayType type, int ndim, ...) ) libnumarray_FatalApiError))
-
-#define NA_vNewArray (libnumarray_API ? (*(PyArrayObject* (*) (void* buffer, NumarrayType type, int ndim, maybelong *shape) ) libnumarray_API[ 23 ]) : (*(PyArrayObject* (*) (void* buffer, NumarrayType type, int ndim, maybelong *shape) ) libnumarray_FatalApiError))
-
-#define NA_ReturnOutput (libnumarray_API ? (*(PyObject* (*) (PyObject*,PyArrayObject*) ) libnumarray_API[ 24 ]) : (*(PyObject* (*) (PyObject*,PyArrayObject*) ) libnumarray_FatalApiError))
-
-#define NA_getBufferPtrAndSize (libnumarray_API ? (*(long (*) (PyObject*,int,void**) ) libnumarray_API[ 25 ]) : (*(long (*) (PyObject*,int,void**) ) libnumarray_FatalApiError))
-
-#define NA_checkIo (libnumarray_API ? (*(int (*) (char*,int,int,int,int) ) libnumarray_API[ 26 ]) : (*(int (*) (char*,int,int,int,int) ) libnumarray_FatalApiError))
-
-#define NA_checkOneCBuffer (libnumarray_API ? (*(int (*) (char*,long,void*,long,size_t) ) libnumarray_API[ 27 ]) : (*(int (*) (char*,long,void*,long,size_t) ) libnumarray_FatalApiError))
-
-#define NA_checkNCBuffers (libnumarray_API ? (*(int (*) (char*,int,long,void**,long*,Int8*,Int8*) ) libnumarray_API[ 28 ]) : (*(int (*) (char*,int,long,void**,long*,Int8*,Int8*) ) libnumarray_FatalApiError))
-
-#define NA_checkOneStriding (libnumarray_API ? (*(int (*) (char*,long,maybelong*,long,maybelong*,long,long,int) ) libnumarray_API[ 29 ]) : (*(int (*) (char*,long,maybelong*,long,maybelong*,long,long,int) ) libnumarray_FatalApiError))
-
-#define NA_new_cfunc (libnumarray_API ? (*(PyObject* (*) (CfuncDescriptor*) ) libnumarray_API[ 30 ]) : (*(PyObject* (*) (CfuncDescriptor*) ) libnumarray_FatalApiError))
-
-#define NA_add_cfunc (libnumarray_API ? (*(int (*) (PyObject*,char*,CfuncDescriptor*) ) libnumarray_API[ 31 ]) : (*(int (*) (PyObject*,char*,CfuncDescriptor*) ) libnumarray_FatalApiError))
-
-#define NA_InputArray (libnumarray_API ? (*(PyArrayObject* (*) (PyObject*,NumarrayType,int) ) libnumarray_API[ 32 ]) : (*(PyArrayObject* (*) (PyObject*,NumarrayType,int) ) libnumarray_FatalApiError))
-
-#define NA_OutputArray (libnumarray_API ? (*(PyArrayObject* (*) (PyObject*,NumarrayType,int) ) libnumarray_API[ 33 ]) : (*(PyArrayObject* (*) (PyObject*,NumarrayType,int) ) libnumarray_FatalApiError))
-
-#define NA_IoArray (libnumarray_API ? (*(PyArrayObject* (*) (PyObject*,NumarrayType,int) ) libnumarray_API[ 34 ]) : (*(PyArrayObject* (*) (PyObject*,NumarrayType,int) ) libnumarray_FatalApiError))
-
-#define NA_OptionalOutputArray (libnumarray_API ? (*(PyArrayObject* (*) (PyObject*,NumarrayType,int,PyArrayObject*) ) libnumarray_API[ 35 ]) : (*(PyArrayObject* (*) (PyObject*,NumarrayType,int,PyArrayObject*) ) libnumarray_FatalApiError))
-
-#define NA_get_offset (libnumarray_API ? (*(long (*) (PyArrayObject*,int,...) ) libnumarray_API[ 36 ]) : (*(long (*) (PyArrayObject*,int,...) ) libnumarray_FatalApiError))
-
-#define NA_get_Float64 (libnumarray_API ? (*(Float64 (*) (PyArrayObject*,long) ) libnumarray_API[ 37 ]) : (*(Float64 (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
-
-#define NA_set_Float64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,Float64) ) libnumarray_API[ 38 ]) : (*(void (*) (PyArrayObject*,long,Float64) ) libnumarray_FatalApiError))
-
-#define NA_get_Complex64 (libnumarray_API ? (*(Complex64 (*) (PyArrayObject*,long) ) libnumarray_API[ 39 ]) : (*(Complex64 (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
-
-#define NA_set_Complex64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,Complex64) ) libnumarray_API[ 40 ]) : (*(void (*) (PyArrayObject*,long,Complex64) ) libnumarray_FatalApiError))
-
-#define NA_get_Int64 (libnumarray_API ? (*(Int64 (*) (PyArrayObject*,long) ) libnumarray_API[ 41 ]) : (*(Int64 (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
-
-#define NA_set_Int64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,Int64) ) libnumarray_API[ 42 ]) : (*(void (*) (PyArrayObject*,long,Int64) ) libnumarray_FatalApiError))
-
-#define NA_get1_Float64 (libnumarray_API ? (*(Float64 (*) (PyArrayObject*,long) ) libnumarray_API[ 43 ]) : (*(Float64 (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
-
-#define NA_get2_Float64 (libnumarray_API ? (*(Float64 (*) (PyArrayObject*,long,long) ) libnumarray_API[ 44 ]) : (*(Float64 (*) (PyArrayObject*,long,long) ) libnumarray_FatalApiError))
-
-#define NA_get3_Float64 (libnumarray_API ? (*(Float64 (*) (PyArrayObject*,long,long,long) ) libnumarray_API[ 45 ]) : (*(Float64 (*) (PyArrayObject*,long,long,long) ) libnumarray_FatalApiError))
-
-#define NA_set1_Float64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,Float64) ) libnumarray_API[ 46 ]) : (*(void (*) (PyArrayObject*,long,Float64) ) libnumarray_FatalApiError))
-
-#define NA_set2_Float64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,long,Float64) ) libnumarray_API[ 47 ]) : (*(void (*) (PyArrayObject*,long,long,Float64) ) libnumarray_FatalApiError))
-
-#define NA_set3_Float64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,long,long,Float64) ) libnumarray_API[ 48 ]) : (*(void (*) (PyArrayObject*,long,long,long,Float64) ) libnumarray_FatalApiError))
-
-#define NA_get1_Complex64 (libnumarray_API ? (*(Complex64 (*) (PyArrayObject*,long) ) libnumarray_API[ 49 ]) : (*(Complex64 (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
-
-#define NA_get2_Complex64 (libnumarray_API ? (*(Complex64 (*) (PyArrayObject*,long,long) ) libnumarray_API[ 50 ]) : (*(Complex64 (*) (PyArrayObject*,long,long) ) libnumarray_FatalApiError))
-
-#define NA_get3_Complex64 (libnumarray_API ? (*(Complex64 (*) (PyArrayObject*,long,long,long) ) libnumarray_API[ 51 ]) : (*(Complex64 (*) (PyArrayObject*,long,long,long) ) libnumarray_FatalApiError))
-
-#define NA_set1_Complex64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,Complex64) ) libnumarray_API[ 52 ]) : (*(void (*) (PyArrayObject*,long,Complex64) ) libnumarray_FatalApiError))
-
-#define NA_set2_Complex64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,long,Complex64) ) libnumarray_API[ 53 ]) : (*(void (*) (PyArrayObject*,long,long,Complex64) ) libnumarray_FatalApiError))
-
-#define NA_set3_Complex64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,long,long,Complex64) ) libnumarray_API[ 54 ]) : (*(void (*) (PyArrayObject*,long,long,long,Complex64) ) libnumarray_FatalApiError))
-
-#define NA_get1_Int64 (libnumarray_API ? (*(Int64 (*) (PyArrayObject*,long) ) libnumarray_API[ 55 ]) : (*(Int64 (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
-
-#define NA_get2_Int64 (libnumarray_API ? (*(Int64 (*) (PyArrayObject*,long,long) ) libnumarray_API[ 56 ]) : (*(Int64 (*) (PyArrayObject*,long,long) ) libnumarray_FatalApiError))
-
-#define NA_get3_Int64 (libnumarray_API ? (*(Int64 (*) (PyArrayObject*,long,long,long) ) libnumarray_API[ 57 ]) : (*(Int64 (*) (PyArrayObject*,long,long,long) ) libnumarray_FatalApiError))
-
-#define NA_set1_Int64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,Int64) ) libnumarray_API[ 58 ]) : (*(void (*) (PyArrayObject*,long,Int64) ) libnumarray_FatalApiError))
-
-#define NA_set2_Int64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,long,Int64) ) libnumarray_API[ 59 ]) : (*(void (*) (PyArrayObject*,long,long,Int64) ) libnumarray_FatalApiError))
-
-#define NA_set3_Int64 (libnumarray_API ? (*(void (*) (PyArrayObject*,long,long,long,Int64) ) libnumarray_API[ 60 ]) : (*(void (*) (PyArrayObject*,long,long,long,Int64) ) libnumarray_FatalApiError))
-
-#define NA_get1D_Float64 (libnumarray_API ? (*(int (*) (PyArrayObject*,long,int,Float64*) ) libnumarray_API[ 61 ]) : (*(int (*) (PyArrayObject*,long,int,Float64*) ) libnumarray_FatalApiError))
-
-#define NA_set1D_Float64 (libnumarray_API ? (*(int (*) (PyArrayObject*,long,int,Float64*) ) libnumarray_API[ 62 ]) : (*(int (*) (PyArrayObject*,long,int,Float64*) ) libnumarray_FatalApiError))
-
-#define NA_get1D_Int64 (libnumarray_API ? (*(int (*) (PyArrayObject*,long,int,Int64*) ) libnumarray_API[ 63 ]) : (*(int (*) (PyArrayObject*,long,int,Int64*) ) libnumarray_FatalApiError))
-
-#define NA_set1D_Int64 (libnumarray_API ? (*(int (*) (PyArrayObject*,long,int,Int64*) ) libnumarray_API[ 64 ]) : (*(int (*) (PyArrayObject*,long,int,Int64*) ) libnumarray_FatalApiError))
-
-#define NA_get1D_Complex64 (libnumarray_API ? (*(int (*) (PyArrayObject*,long,int,Complex64*) ) libnumarray_API[ 65 ]) : (*(int (*) (PyArrayObject*,long,int,Complex64*) ) libnumarray_FatalApiError))
-
-#define NA_set1D_Complex64 (libnumarray_API ? (*(int (*) (PyArrayObject*,long,int,Complex64*) ) libnumarray_API[ 66 ]) : (*(int (*) (PyArrayObject*,long,int,Complex64*) ) libnumarray_FatalApiError))
-
-#define NA_ShapeEqual (libnumarray_API ? (*(int (*) (PyArrayObject*,PyArrayObject*) ) libnumarray_API[ 67 ]) : (*(int (*) (PyArrayObject*,PyArrayObject*) ) libnumarray_FatalApiError))
-
-#define NA_ShapeLessThan (libnumarray_API ? (*(int (*) (PyArrayObject*,PyArrayObject*) ) libnumarray_API[ 68 ]) : (*(int (*) (PyArrayObject*,PyArrayObject*) ) libnumarray_FatalApiError))
-
-#define NA_ByteOrder (libnumarray_API ? (*(int (*) (void) ) libnumarray_API[ 69 ]) : (*(int (*) (void) ) libnumarray_FatalApiError))
-
-#define NA_IeeeSpecial32 (libnumarray_API ? (*(Bool (*) (Float32*,Int32*) ) libnumarray_API[ 70 ]) : (*(Bool (*) (Float32*,Int32*) ) libnumarray_FatalApiError))
-
-#define NA_IeeeSpecial64 (libnumarray_API ? (*(Bool (*) (Float64*,Int32*) ) libnumarray_API[ 71 ]) : (*(Bool (*) (Float64*,Int32*) ) libnumarray_FatalApiError))
-
-#define NA_updateDataPtr (libnumarray_API ? (*(PyArrayObject* (*) (PyArrayObject*) ) libnumarray_API[ 72 ]) : (*(PyArrayObject* (*) (PyArrayObject*) ) libnumarray_FatalApiError))
-
-#define NA_typeNoToName (libnumarray_API ? (*(char* (*) (int) ) libnumarray_API[ 73 ]) : (*(char* (*) (int) ) libnumarray_FatalApiError))
-
-#define NA_nameToTypeNo (libnumarray_API ? (*(int (*) (char*) ) libnumarray_API[ 74 ]) : (*(int (*) (char*) ) libnumarray_FatalApiError))
-
-#define NA_typeNoToTypeObject (libnumarray_API ? (*(PyObject* (*) (int) ) libnumarray_API[ 75 ]) : (*(PyObject* (*) (int) ) libnumarray_FatalApiError))
-
-#define NA_intTupleFromMaybeLongs (libnumarray_API ? (*(PyObject* (*) (int,maybelong*) ) libnumarray_API[ 76 ]) : (*(PyObject* (*) (int,maybelong*) ) libnumarray_FatalApiError))
-
-#define NA_maybeLongsFromIntTuple (libnumarray_API ? (*(long (*) (int,maybelong*,PyObject*) ) libnumarray_API[ 77 ]) : (*(long (*) (int,maybelong*,PyObject*) ) libnumarray_FatalApiError))
-
-#define NA_intTupleProduct (libnumarray_API ? (*(int (*) (PyObject *obj, long *product) ) libnumarray_API[ 78 ]) : (*(int (*) (PyObject *obj, long *product) ) libnumarray_FatalApiError))
-
-#define NA_isIntegerSequence (libnumarray_API ? (*(long (*) (PyObject*) ) libnumarray_API[ 79 ]) : (*(long (*) (PyObject*) ) libnumarray_FatalApiError))
-
-#define NA_setArrayFromSequence (libnumarray_API ? (*(PyObject* (*) (PyArrayObject*,PyObject*) ) libnumarray_API[ 80 ]) : (*(PyObject* (*) (PyArrayObject*,PyObject*) ) libnumarray_FatalApiError))
-
-#define NA_maxType (libnumarray_API ? (*(int (*) (PyObject*) ) libnumarray_API[ 81 ]) : (*(int (*) (PyObject*) ) libnumarray_FatalApiError))
-
-#define NA_isPythonScalar (libnumarray_API ? (*(int (*) (PyObject *obj) ) libnumarray_API[ 82 ]) : (*(int (*) (PyObject *obj) ) libnumarray_FatalApiError))
-
-#define NA_getPythonScalar (libnumarray_API ? (*(PyObject* (*) (PyArrayObject*,long) ) libnumarray_API[ 83 ]) : (*(PyObject* (*) (PyArrayObject*,long) ) libnumarray_FatalApiError))
-
-#define NA_setFromPythonScalar (libnumarray_API ? (*(int (*) (PyArrayObject*,long,PyObject*) ) libnumarray_API[ 84 ]) : (*(int (*) (PyArrayObject*,long,PyObject*) ) libnumarray_FatalApiError))
-
-#define NA_NDArrayCheck (libnumarray_API ? (*(int (*) (PyObject*) ) libnumarray_API[ 85 ]) : (*(int (*) (PyObject*) ) libnumarray_FatalApiError))
-
-#define NA_NumArrayCheck (libnumarray_API ? (*(int (*) (PyObject*) ) libnumarray_API[ 86 ]) : (*(int (*) (PyObject*) ) libnumarray_FatalApiError))
-
-#define NA_ComplexArrayCheck (libnumarray_API ? (*(int (*) (PyObject*) ) libnumarray_API[ 87 ]) : (*(int (*) (PyObject*) ) libnumarray_FatalApiError))
-
-#define NA_elements (libnumarray_API ? (*(unsigned long (*) (PyArrayObject*) ) libnumarray_API[ 88 ]) : (*(unsigned long (*) (PyArrayObject*) ) libnumarray_FatalApiError))
-
-#define NA_typeObjectToTypeNo (libnumarray_API ? (*(int (*) (PyObject*) ) libnumarray_API[ 89 ]) : (*(int (*) (PyObject*) ) libnumarray_FatalApiError))
-
-#define NA_copyArray (libnumarray_API ? (*(int (*) (PyArrayObject* to, const PyArrayObject* from) ) libnumarray_API[ 90 ]) : (*(int (*) (PyArrayObject* to, const PyArrayObject* from) ) libnumarray_FatalApiError))
-
-#define NA_copy (libnumarray_API ? (*(PyArrayObject* (*) (PyArrayObject*) ) libnumarray_API[ 91 ]) : (*(PyArrayObject* (*) (PyArrayObject*) ) libnumarray_FatalApiError))
-
-#define NA_getType (libnumarray_API ? (*(PyObject* (*) (PyObject *typeobj_or_name) ) libnumarray_API[ 92 ]) : (*(PyObject* (*) (PyObject *typeobj_or_name) ) libnumarray_FatalApiError))
-
-#define NA_callCUFuncCore (libnumarray_API ? (*(PyObject * (*) (PyObject *cfunc, long niter, long ninargs, long noutargs, PyObject **BufferObj, long *offset) ) libnumarray_API[ 93 ]) : (*(PyObject * (*) (PyObject *cfunc, long niter, long ninargs, long noutargs, PyObject **BufferObj, long *offset) ) libnumarray_FatalApiError))
-
-#define NA_callStrideConvCFuncCore (libnumarray_API ? (*(PyObject * (*) (PyObject *cfunc, int nshape, maybelong *shape, PyObject *inbuffObj, long inboffset, int nstrides0, maybelong *inbstrides, PyObject *outbuffObj, long outboffset, int nstrides1, maybelong *outbstrides, long nbytes) ) libnumarray_API[ 94 ]) : (*(PyObject * (*) (PyObject *cfunc, int nshape, maybelong *shape, PyObject *inbuffObj, long inboffset, int nstrides0, maybelong *inbstrides, PyObject *outbuffObj, long outboffset, int nstrides1, maybelong *outbstrides, long nbytes) ) libnumarray_FatalApiError))
-
-#define NA_stridesFromShape (libnumarray_API ? (*(void (*) (int nshape, maybelong *shape, maybelong bytestride, maybelong *strides) ) libnumarray_API[ 95 ]) : (*(void (*) (int nshape, maybelong *shape, maybelong bytestride, maybelong *strides) ) libnumarray_FatalApiError))
-
-#define NA_OperatorCheck (libnumarray_API ? (*(int (*) (PyObject *obj) ) libnumarray_API[ 96 ]) : (*(int (*) (PyObject *obj) ) libnumarray_FatalApiError))
-
-#define NA_ConverterCheck (libnumarray_API ? (*(int (*) (PyObject *obj) ) libnumarray_API[ 97 ]) : (*(int (*) (PyObject *obj) ) libnumarray_FatalApiError))
-
-#define NA_UfuncCheck (libnumarray_API ? (*(int (*) (PyObject *obj) ) libnumarray_API[ 98 ]) : (*(int (*) (PyObject *obj) ) libnumarray_FatalApiError))
-
-#define NA_CfuncCheck (libnumarray_API ? (*(int (*) (PyObject *obj) ) libnumarray_API[ 99 ]) : (*(int (*) (PyObject *obj) ) libnumarray_FatalApiError))
-
-#define NA_getByteOffset (libnumarray_API ? (*(int (*) (PyArrayObject *array, int nindices, maybelong *indices, long *offset) ) libnumarray_API[ 100 ]) : (*(int (*) (PyArrayObject *array, int nindices, maybelong *indices, long *offset) ) libnumarray_FatalApiError))
-
-#define NA_swapAxes (libnumarray_API ? (*(int (*) (PyArrayObject *array, int x, int y) ) libnumarray_API[ 101 ]) : (*(int (*) (PyArrayObject *array, int x, int y) ) libnumarray_FatalApiError))
-
-#define NA_initModuleGlobal (libnumarray_API ? (*(PyObject * (*) (char *module, char *global) ) libnumarray_API[ 102 ]) : (*(PyObject * (*) (char *module, char *global) ) libnumarray_FatalApiError))
-
-#define NA_NumarrayType (libnumarray_API ? (*(NumarrayType (*) (PyObject *seq) ) libnumarray_API[ 103 ]) : (*(NumarrayType (*) (PyObject *seq) ) libnumarray_FatalApiError))
-
-#define NA_NewAllFromBuffer (libnumarray_API ? (*(PyArrayObject * (*) (int ndim, maybelong *shape, NumarrayType type, PyObject *bufferObject, maybelong byteoffset, maybelong bytestride, int byteorder, int aligned, int writeable) ) libnumarray_API[ 104 ]) : (*(PyArrayObject * (*) (int ndim, maybelong *shape, NumarrayType type, PyObject *bufferObject, maybelong byteoffset, maybelong bytestride, int byteorder, int aligned, int writeable) ) libnumarray_FatalApiError))
-
-#define NA_alloc1D_Float64 (libnumarray_API ? (*(Float64 * (*) (PyArrayObject *a, long offset, int cnt) ) libnumarray_API[ 105 ]) : (*(Float64 * (*) (PyArrayObject *a, long offset, int cnt) ) libnumarray_FatalApiError))
-
-#define NA_alloc1D_Int64 (libnumarray_API ? (*(Int64 * (*) (PyArrayObject *a, long offset, int cnt) ) libnumarray_API[ 106 ]) : (*(Int64 * (*) (PyArrayObject *a, long offset, int cnt) ) libnumarray_FatalApiError))
-
-#define NA_updateAlignment (libnumarray_API ? (*(void (*) (PyArrayObject *self) ) libnumarray_API[ 107 ]) : (*(void (*) (PyArrayObject *self) ) libnumarray_FatalApiError))
-
-#define NA_updateContiguous (libnumarray_API ? (*(void (*) (PyArrayObject *self) ) libnumarray_API[ 108 ]) : (*(void (*) (PyArrayObject *self) ) libnumarray_FatalApiError))
-
-#define NA_updateStatus (libnumarray_API ? (*(void (*) (PyArrayObject *self) ) libnumarray_API[ 109 ]) : (*(void (*) (PyArrayObject *self) ) libnumarray_FatalApiError))
-
-#define NA_NumArrayCheckExact (libnumarray_API ? (*(int (*) (PyObject *op) ) libnumarray_API[ 110 ]) : (*(int (*) (PyObject *op) ) libnumarray_FatalApiError))
-
-#define NA_NDArrayCheckExact (libnumarray_API ? (*(int (*) (PyObject *op) ) libnumarray_API[ 111 ]) : (*(int (*) (PyObject *op) ) libnumarray_FatalApiError))
-
-#define NA_OperatorCheckExact (libnumarray_API ? (*(int (*) (PyObject *op) ) libnumarray_API[ 112 ]) : (*(int (*) (PyObject *op) ) libnumarray_FatalApiError))
-
-#define NA_ConverterCheckExact (libnumarray_API ? (*(int (*) (PyObject *op) ) libnumarray_API[ 113 ]) : (*(int (*) (PyObject *op) ) libnumarray_FatalApiError))
-
-#define NA_UfuncCheckExact (libnumarray_API ? (*(int (*) (PyObject *op) ) libnumarray_API[ 114 ]) : (*(int (*) (PyObject *op) ) libnumarray_FatalApiError))
-
-#define NA_CfuncCheckExact (libnumarray_API ? (*(int (*) (PyObject *op) ) libnumarray_API[ 115 ]) : (*(int (*) (PyObject *op) ) libnumarray_FatalApiError))
-
-#define NA_getArrayData (libnumarray_API ? (*(char * (*) (PyArrayObject *ap) ) libnumarray_API[ 116 ]) : (*(char * (*) (PyArrayObject *ap) ) libnumarray_FatalApiError))
-
-#define NA_updateByteswap (libnumarray_API ? (*(void (*) (PyArrayObject *ap) ) libnumarray_API[ 117 ]) : (*(void (*) (PyArrayObject *ap) ) libnumarray_FatalApiError))
-
-#define NA_DescrFromType (libnumarray_API ? (*(PyArray_Descr * (*) (int type) ) libnumarray_API[ 118 ]) : (*(PyArray_Descr * (*) (int type) ) libnumarray_FatalApiError))
-
-#define NA_Cast (libnumarray_API ? (*(PyObject * (*) (PyArrayObject *a, int type) ) libnumarray_API[ 119 ]) : (*(PyObject * (*) (PyArrayObject *a, int type) ) libnumarray_FatalApiError))
-
-#define NA_checkFPErrors (libnumarray_API ? (*(int (*) (void) ) libnumarray_API[ 120 ]) : (*(int (*) (void) ) libnumarray_FatalApiError))
-
-#define NA_clearFPErrors (libnumarray_API ? (*(void (*) (void) ) libnumarray_API[ 121 ]) : (*(void (*) (void) ) libnumarray_FatalApiError))
-
-#define NA_checkAndReportFPErrors (libnumarray_API ? (*(int (*) (char *name) ) libnumarray_API[ 122 ]) : (*(int (*) (char *name) ) libnumarray_FatalApiError))
-
-#define NA_IeeeMask32 (libnumarray_API ? (*(Bool (*) (Float32,Int32) ) libnumarray_API[ 123 ]) : (*(Bool (*) (Float32,Int32) ) libnumarray_FatalApiError))
-
-#define NA_IeeeMask64 (libnumarray_API ? (*(Bool (*) (Float64,Int32) ) libnumarray_API[ 124 ]) : (*(Bool (*) (Float64,Int32) ) libnumarray_FatalApiError))
-
-#define _NA_callStridingHelper (libnumarray_API ? (*(int (*) (PyObject *aux, long dim, long nnumarray, PyArrayObject *numarray[], char *data[], CFUNC_STRIDED_FUNC f) ) libnumarray_API[ 125 ]) : (*(int (*) (PyObject *aux, long dim, long nnumarray, PyArrayObject *numarray[], char *data[], CFUNC_STRIDED_FUNC f) ) libnumarray_FatalApiError))
-
-#define NA_FromDimsStridesDescrAndData (libnumarray_API ? (*(PyArrayObject * (*) (int nd, maybelong *dims, maybelong *strides, PyArray_Descr *descr, char *data) ) libnumarray_API[ 126 ]) : (*(PyArrayObject * (*) (int nd, maybelong *dims, maybelong *strides, PyArray_Descr *descr, char *data) ) libnumarray_FatalApiError))
-
-#define NA_FromDimsTypeAndData (libnumarray_API ? (*(PyArrayObject * (*) (int nd, maybelong *dims, int type, char *data) ) libnumarray_API[ 127 ]) : (*(PyArrayObject * (*) (int nd, maybelong *dims, int type, char *data) ) libnumarray_FatalApiError))
-
-#define NA_FromDimsStridesTypeAndData (libnumarray_API ? (*(PyArrayObject * (*) (int nd, maybelong *dims, maybelong *strides, int type, char *data) ) libnumarray_API[ 128 ]) : (*(PyArrayObject * (*) (int nd, maybelong *dims, maybelong *strides, int type, char *data) ) libnumarray_FatalApiError))
-
-#define NA_scipy_typestr (libnumarray_API ? (*(int (*) (NumarrayType t, int byteorder, char *typestr) ) libnumarray_API[ 129 ]) : (*(int (*) (NumarrayType t, int byteorder, char *typestr) ) libnumarray_FatalApiError))
-
-#define NA_FromArrayStruct (libnumarray_API ? (*(PyArrayObject * (*) (PyObject *a) ) libnumarray_API[ 130 ]) : (*(PyArrayObject * (*) (PyObject *a) ) libnumarray_FatalApiError))
-
-#endif
-
- /* Total number of C API pointers */
-#define libnumarray_API_pointers 131
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* NUMPY_LIBNUMARRAY_H */
Deleted: trunk/numpy/numarray/numpy/numcomplex.h
===================================================================
--- trunk/numpy/numarray/numpy/numcomplex.h 2010-02-21 02:49:39 UTC (rev 8211)
+++ trunk/numpy/numarray/numpy/numcomplex.h 2010-02-21 02:50:19 UTC (rev 8212)
@@ -1,252 +0,0 @@
-/* See numarray.h for Complex32, Complex64:
-
-typedef struct { Float32 r, i; } Complex32;
-typedef struct { Float64 r, i; } Complex64;
-
-*/
-typedef struct { Float32 a, theta; } PolarComplex32;
-typedef struct { Float64 a, theta; } PolarComplex64;
-
-#define NUM_SQ(x) ((x)*(x))
-
-#define NUM_CABSSQ(p) (NUM_SQ((p).r) + NUM_SQ((p).i))
-
-#define NUM_CABS(p) sqrt(NUM_CABSSQ(p))
-
-#define NUM_C_TO_P(c, p) (p).a = NUM_CABS(c); \
- (p).theta = atan2((c).i, (c).r);
-
-#define NUM_P_TO_C(p, c) (c).r = (p).a*cos((p).theta); \
- (c).i = (p).a*sin((p).theta);
-
-#define NUM_CASS(p, q) (q).r = (p).r, (q).i = (p).i
-
-#define NUM_CADD(p, q, s) (s).r = (p).r + (q).r, \
- (s).i = (p).i + (q).i
-
-#define NUM_CSUB(p, q, s) (s).r = (p).r - (q).r, \
- (s).i = (p).i - (q).i
-
-#define NUM_CMUL(p, q, s) \
- { Float64 rp = (p).r; \
- Float64 rq = (q).r; \
- (s).r = rp*rq - (p).i*(q).i; \
- (s).i = rp*(q).i + rq*(p).i; \
- }
-
-#define NUM_CDIV(p, q, s) \
- { \
- Float64 rp = (p).r; \
- Float64 ip = (p).i; \
- Float64 rq = (q).r; \
- if ((q).i != 0) { \
- Float64 temp = NUM_CABSSQ(q); \
- (s).r = (rp*rq+(p).i*(q).i)/temp; \
- (s).i = (rq*(p).i-(q).i*rp)/temp; \
- } else { \
- (s).r = rp/rq; \
- (s).i = ip/rq; \
- } \
- }
-
-#define NUM_CREM(p, q, s) \
- { Complex64 r; \
- NUM_CDIV(p, q, r); \
- r.r = floor(r.r); \
- r.i = 0; \
- NUM_CMUL(r, q, r); \
- NUM_CSUB(p, r, s); \
- }
-
-#define NUM_CMINUS(p, s) (s).r = -(p).r; (s).i = -(p).i;
-#define NUM_CNEG NUM_CMINUS
-
-#define NUM_CEQ(p, q) (((p).r == (q).r) && ((p).i == (q).i))
-#define NUM_CNE(p, q) (((p).r != (q).r) || ((p).i != (q).i))
-#define NUM_CLT(p, q) ((p).r < (q).r)
-#define NUM_CGT(p, q) ((p).r > (q).r)
-#define NUM_CLE(p, q) ((p).r <= (q).r)
-#define NUM_CGE(p, q) ((p).r >= (q).r)
-
-/* e**z = e**x * (cos(y)+ i*sin(y)) where z = x + i*y
- so e**z = e**x * cos(y) + i * e**x * sin(y)
-*/
-#define NUM_CEXP(p, s) \
- { Float64 ex = exp((p).r); \
- (s).r = ex * cos((p).i); \
- (s).i = ex * sin((p).i); \
- }
-
-/* e**w = z; w = u + i*v; z = r * e**(i*theta);
-
-e**u * e**(i*v) = r * e**(i*theta);
-
-log(z) = w; log(z) = log(r) + i*theta;
- */
-#define NUM_CLOG(p, s) \
- { PolarComplex64 temp; NUM_C_TO_P(p, temp); \
- (s).r = num_log(temp.a); \
- (s).i = temp.theta; \
- }
-
-#define NUM_LOG10_E 0.43429448190325182
-
-#define NUM_CLOG10(p, s) \
- { NUM_CLOG(p, s); \
- (s).r *= NUM_LOG10_E; \
- (s).i *= NUM_LOG10_E; \
- }
-
-/* s = p ** q */
-#define NUM_CPOW(p, q, s) { if (NUM_CABSSQ(p) == 0) { \
- if ((q).r == 0 && (q).i == 0) { \
- (s).r = (s).i = 1; \
- } else { \
- (s).r = (s).i = 0; \
- } \
- } else { \
- NUM_CLOG(p, s); \
- NUM_CMUL(s, q, s); \
- NUM_CEXP(s, s); \
- } \
- }
-
-#define NUM_CSQRT(p, s) { Complex64 temp; temp.r = 0.5; temp.i=0; \
- NUM_CPOW(p, temp, s); \
- }
-
-#define NUM_CSQR(p, s) { Complex64 temp; temp.r = 2.0; temp.i=0; \
- NUM_CPOW(p, temp, s); \
- }
-
-#define NUM_CSIN(p, s) { Float64 sp = sin((p).r); \
- Float64 cp = cos((p).r); \
- (s).r = cosh((p).i) * sp; \
- (s).i = sinh((p).i) * cp; \
- }
-
-#define NUM_CCOS(p, s) { Float64 sp = sin((p).r); \
- Float64 cp = cos((p).r); \
- (s).r = cosh((p).i) * cp; \
- (s).i = -sinh((p).i) * sp; \
- }
-
-#define NUM_CTAN(p, s) { Complex64 ss, cs; \
- NUM_CSIN(p, ss); \
- NUM_CCOS(p, cs); \
- NUM_CDIV(ss, cs, s); \
- }
-
-#define NUM_CSINH(p, s) { Float64 sp = sin((p).i); \
- Float64 cp = cos((p).i); \
- (s).r = sinh((p).r) * cp; \
- (s).i = cosh((p).r) * sp; \
- }
-
-#define NUM_CCOSH(p, s) { Float64 sp = sin((p).i); \
- Float64 cp = cos((p).i); \
- (s).r = cosh((p).r) * cp; \
- (s).i = sinh((p).r) * sp; \
- }
-
-#define NUM_CTANH(p, s) { Complex64 ss, cs; \
- NUM_CSINH(p, ss); \
- NUM_CCOSH(p, cs); \
- NUM_CDIV(ss, cs, s); \
- }
-
-#define NUM_CRPOW(p, v, s) { Complex64 cr; cr.r = v; cr.i = 0; \
- NUM_CPOW(p,cr,s); \
- }
-
-#define NUM_CRMUL(p, v, s) (s).r = (p).r * v; (s).i = (p).i * v;
-
-#define NUM_CIMUL(p, s) { Float64 temp = (s).r; \
- (s).r = -(p).i; (s).i = temp; \
- }
-
-/* asin(z) = -i * log(i*z + (1 - z**2)**0.5) */
-#define NUM_CASIN(p, s) { Complex64 p1; NUM_CASS(p, p1); \
- NUM_CIMUL(p, p1); \
- NUM_CMUL(p, p, s); \
- NUM_CNEG(s, s); \
- (s).r += 1; \
- NUM_CRPOW(s, 0.5, s); \
- NUM_CADD(p1, s, s); \
- NUM_CLOG(s, s); \
- NUM_CIMUL(s, s); \
- NUM_CNEG(s, s); \
- }
-
-/* acos(z) = -i * log(z + i*(1 - z**2)**0.5) */
-#define NUM_CACOS(p, s) { Complex64 p1; NUM_CASS(p, p1); \
- NUM_CMUL(p, p, s); \
- NUM_CNEG(s, s); \
- (s).r += 1; \
- NUM_CRPOW(s, 0.5, s); \
- NUM_CIMUL(s, s); \
- NUM_CADD(p1, s, s); \
- NUM_CLOG(s, s); \
- NUM_CIMUL(s, s); \
- NUM_CNEG(s, s); \
- }
-
-/* atan(z) = i/2 * log( (i+z) / (i - z) ) */
-#define NUM_CATAN(p, s) { Complex64 p1, p2; \
- NUM_CASS(p, p1); NUM_CNEG(p, p2); \
- p1.i += 1; \
- p2.i += 1; \
- NUM_CDIV(p1, p2, s); \
- NUM_CLOG(s, s); \
- NUM_CIMUL(s, s); \
- NUM_CRMUL(s, 0.5, s); \
- }
-
-/* asinh(z) = log( z + (z**2 + 1)**0.5 ) */
-#define NUM_CASINH(p, s) { Complex64 p1; NUM_CASS(p, p1); \
- NUM_CMUL(p, p, s); \
- (s).r += 1; \
- NUM_CRPOW(s, 0.5, s); \
- NUM_CADD(p1, s, s); \
- NUM_CLOG(s, s); \
- }
-
-/* acosh(z) = log( z + (z**2 - 1)**0.5 ) */
-#define NUM_CACOSH(p, s) { Complex64 p1; NUM_CASS(p, p1); \
- NUM_CMUL(p, p, s); \
- (s).r -= 1; \
- NUM_CRPOW(s, 0.5, s); \
- NUM_CADD(p1, s, s); \
- NUM_CLOG(s, s); \
- }
-
-/* atanh(z) = 1/2 * log( (1+z)/(1-z) ) */
-#define NUM_CATANH(p, s) { Complex64 p1, p2; \
- NUM_CASS(p, p1); NUM_CNEG(p, p2); \
- p1.r += 1; \
- p2.r += 1; \
- NUM_CDIV(p1, p2, s); \
- NUM_CLOG(s, s); \
- NUM_CRMUL(s, 0.5, s); \
- }
-
-
-#define NUM_CMIN(p, q) (NUM_CLE(p, q) ? p : q)
-#define NUM_CMAX(p, q) (NUM_CGE(p, q) ? p : q)
-
-#define NUM_CNZ(p) (((p).r != 0) || ((p).i != 0))
-#define NUM_CLAND(p, q) (NUM_CNZ(p) & NUM_CNZ(q))
-#define NUM_CLOR(p, q) (NUM_CNZ(p) | NUM_CNZ(q))
-#define NUM_CLXOR(p, q) (NUM_CNZ(p) ^ NUM_CNZ(q))
-#define NUM_CLNOT(p) (!NUM_CNZ(p))
-
-#define NUM_CFLOOR(p, s) (s).r = floor((p).r); (s).i = floor((p).i);
-#define NUM_CCEIL(p, s) (s).r = ceil((p).r); (s).i = ceil((p).i);
-
-#define NUM_CFABS(p, s) (s).r = fabs((p).r); (s).i = fabs((p).i);
-#define NUM_CROUND(p, s) (s).r = num_round((p).r); (s).i = num_round((p).i);
-#define NUM_CHYPOT(p, q, s) { Complex64 t; \
- NUM_CSQR(p, s); NUM_CSQR(q, t); \
- NUM_CADD(s, t, s); \
- NUM_CSQRT(s, s); \
- }
Deleted: trunk/numpy/numarray/numpy/nummacro.h
===================================================================
--- trunk/numpy/numarray/numpy/nummacro.h 2010-02-21 02:49:39 UTC (rev 8211)
+++ trunk/numpy/numarray/numpy/nummacro.h 2010-02-21 02:50:19 UTC (rev 8212)
@@ -1,447 +0,0 @@
-/* Primarily for compatibility with numarray C-API */
-
-#if !defined(_ndarraymacro)
-#define _ndarraymacro
-
-/* The structs defined here are private implementation details of numarray
-which are subject to change w/o notice.
-*/
-
-#define PY_BOOL_CHAR "b"
-#define PY_INT8_CHAR "b"
-#define PY_INT16_CHAR "h"
-#define PY_INT32_CHAR "i"
-#define PY_FLOAT32_CHAR "f"
-#define PY_FLOAT64_CHAR "d"
-#define PY_UINT8_CHAR "h"
-#define PY_UINT16_CHAR "i"
-#define PY_UINT32_CHAR "i" /* Unless longer int available */
-#define PY_COMPLEX64_CHAR "D"
-#define PY_COMPLEX128_CHAR "D"
-
-#define PY_LONG_CHAR "l"
-#define PY_LONG_LONG_CHAR "L"
-
-#define pyFPE_DIVIDE_BY_ZERO 1
-#define pyFPE_OVERFLOW 2
-#define pyFPE_UNDERFLOW 4
-#define pyFPE_INVALID 8
-
-#define isNonZERO(x) (x != 0) /* to convert values to boolean 1's or 0's */
-
-typedef enum
-{
- NUM_CONTIGUOUS=1,
- NUM_NOTSWAPPED=0x0200,
- NUM_ALIGNED=0x0100,
- NUM_WRITABLE=0x0400,
- NUM_COPY=0x0020,
-
- NUM_C_ARRAY = (NUM_CONTIGUOUS | NUM_ALIGNED | NUM_NOTSWAPPED),
- NUM_UNCONVERTED = 0
-} NumRequirements;
-
-#define UNCONVERTED 0
-#define C_ARRAY (NUM_CONTIGUOUS | NUM_NOTSWAPPED | NUM_ALIGNED)
-
-#define MUST_BE_COMPUTED 2
-
-#define NUM_FLOORDIVIDE(a,b,out) (out) = floor((a)/(b))
-
-#define NA_Begin() Py_Initialize(); import_libnumarray();
-#define NA_End() NA_Done(); Py_Finalize();
-
-#define NA_OFFSETDATA(num) ((void *) PyArray_DATA(num))
-
-/* unaligned NA_COPY functions */
-#define NA_COPY1(i, o) (*(o) = *(i))
-#define NA_COPY2(i, o) NA_COPY1(i, o), NA_COPY1(i+1, o+1)
-#define NA_COPY4(i, o) NA_COPY2(i, o), NA_COPY2(i+2, o+2)
-#define NA_COPY8(i, o) NA_COPY4(i, o), NA_COPY4(i+4, o+4)
-#define NA_COPY16(i, o) NA_COPY8(i, o), NA_COPY8(i+8, o+8)
-
-/* byteswapping macros: these fail if i==o */
-#define NA_SWAP1(i, o) NA_COPY1(i, o)
-#define NA_SWAP2(i, o) NA_SWAP1(i, o+1), NA_SWAP1(i+1, o)
-#define NA_SWAP4(i, o) NA_SWAP2(i, o+2), NA_SWAP2(i+2, o)
-#define NA_SWAP8(i, o) NA_SWAP4(i, o+4), NA_SWAP4(i+4, o)
-#define NA_SWAP16(i, o) NA_SWAP8(i, o+8), NA_SWAP8(i+8, o)
-
-/* complex byteswaps must swap each part (real, imag) independently */
-#define NA_COMPLEX_SWAP8(i, o) NA_SWAP4(i, o), NA_SWAP4(i+4, o+4)
-#define NA_COMPLEX_SWAP16(i, o) NA_SWAP8(i, o), NA_SWAP8(i+8, o+8)
-
-/* byteswapping macros: these work even if i == o */
-#define NA_TSWAP1(i, o, t) NA_COPY1(i, t), NA_SWAP1(t, o)
-#define NA_TSWAP2(i, o, t) NA_COPY2(i, t), NA_SWAP2(t, o)
-#define NA_TSWAP4(i, o, t) NA_COPY4(i, t), NA_SWAP4(t, o)
-#define NA_TSWAP8(i, o, t) NA_COPY8(i, t), NA_SWAP8(t, o)
-
-/* fast copy functions for %N aligned i and o */
-#define NA_ACOPY1(i, o) (((Int8 *)o)[0] = ((Int8 *)i)[0])
-#define NA_ACOPY2(i, o) (((Int16 *)o)[0] = ((Int16 *)i)[0])
-#define NA_ACOPY4(i, o) (((Int32 *)o)[0] = ((Int32 *)i)[0])
-#define NA_ACOPY8(i, o) (((Float64 *)o)[0] = ((Float64 *)i)[0])
-#define NA_ACOPY16(i, o) (((Complex64 *)o)[0] = ((Complex64 *)i)[0])
-
-/* from here down, type("ai") is NDInfo* */
-
-#define NA_PTR(ai) ((char *) NA_OFFSETDATA((ai)))
-#define NA_PTR1(ai, i) (NA_PTR(ai) + \
- (i)*(ai)->strides[0])
-#define NA_PTR2(ai, i, j) (NA_PTR(ai) + \
- (i)*(ai)->strides[0] + \
- (j)*(ai)->strides[1])
-#define NA_PTR3(ai, i, j, k) (NA_PTR(ai) + \
- (i)*(ai)->strides[0] + \
- (j)*(ai)->strides[1] + \
- (k)*(ai)->strides[2])
-
-#define NA_SET_TEMP(ai, type, v) (((type *) &__temp__)[0] = v)
-
-#define NA_SWAPComplex64 NA_COMPLEX_SWAP16
-#define NA_SWAPComplex32 NA_COMPLEX_SWAP8
-#define NA_SWAPFloat64 NA_SWAP8
-#define NA_SWAPFloat32 NA_SWAP4
-#define NA_SWAPInt64 NA_SWAP8
-#define NA_SWAPUInt64 NA_SWAP8
-#define NA_SWAPInt32 NA_SWAP4
-#define NA_SWAPUInt32 NA_SWAP4
-#define NA_SWAPInt16 NA_SWAP2
-#define NA_SWAPUInt16 NA_SWAP2
-#define NA_SWAPInt8 NA_SWAP1
-#define NA_SWAPUInt8 NA_SWAP1
-#define NA_SWAPBool NA_SWAP1
-
-#define NA_COPYComplex64 NA_COPY16
-#define NA_COPYComplex32 NA_COPY8
-#define NA_COPYFloat64 NA_COPY8
-#define NA_COPYFloat32 NA_COPY4
-#define NA_COPYInt64 NA_COPY8
-#define NA_COPYUInt64 NA_COPY8
-#define NA_COPYInt32 NA_COPY4
-#define NA_COPYUInt32 NA_COPY4
-#define NA_COPYInt16 NA_COPY2
-#define NA_COPYUInt16 NA_COPY2
-#define NA_COPYInt8 NA_COPY1
-#define NA_COPYUInt8 NA_COPY1
-#define NA_COPYBool NA_COPY1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define _makeGetPb(type) \
-static type _NA_GETPb_##type(char *ptr) \
-{ \
- type temp; \
- NA_SWAP##type(ptr, (char *)&temp); \
- return temp; \
-}
-
-#define _makeGetPa(type) \
-static type _NA_GETPa_##type(char *ptr) \
-{ \
- type temp; \
- NA_COPY##type(ptr, (char *)&temp); \
- return temp; \
-}
-
-_makeGetPb(Complex64)
-_makeGetPb(Complex32)
-_makeGetPb(Float64)
-_makeGetPb(Float32)
-_makeGetPb(Int64)
-_makeGetPb(UInt64)
-_makeGetPb(Int32)
-_makeGetPb(UInt32)
-_makeGetPb(Int16)
-_makeGetPb(UInt16)
-_makeGetPb(Int8)
-_makeGetPb(UInt8)
-_makeGetPb(Bool)
-
-_makeGetPa(Complex64)
-_makeGetPa(Complex32)
-_makeGetPa(Float64)
-_makeGetPa(Float32)
-_makeGetPa(Int64)
-_makeGetPa(UInt64)
-_makeGetPa(Int32)
-_makeGetPa(UInt32)
-_makeGetPa(Int16)
-_makeGetPa(UInt16)
-_makeGetPa(Int8)
-_makeGetPa(UInt8)
-_makeGetPa(Bool)
-
-#undef _makeGetPb
-#undef _makeGetPa
-
-#define _makeSetPb(type) \
-static void _NA_SETPb_##type(char *ptr, type v) \
-{ \
- NA_SWAP##type(((char *)&v), ptr); \
- return; \
-}
-
-#define _makeSetPa(type) \
-static void _NA_SETPa_##type(char *ptr, type v) \
-{ \
- NA_COPY##type(((char *)&v), ptr); \
- return; \
-}
-
-_makeSetPb(Complex64)
-_makeSetPb(Complex32)
-_makeSetPb(Float64)
-_makeSetPb(Float32)
-_makeSetPb(Int64)
-_makeSetPb(UInt64)
-_makeSetPb(Int32)
-_makeSetPb(UInt32)
-_makeSetPb(Int16)
-_makeSetPb(UInt16)
-_makeSetPb(Int8)
-_makeSetPb(UInt8)
-_makeSetPb(Bool)
-
-_makeSetPa(Complex64)
-_makeSetPa(Complex32)
-_makeSetPa(Float64)
-_makeSetPa(Float32)
-_makeSetPa(Int64)
-_makeSetPa(UInt64)
-_makeSetPa(Int32)
-_makeSetPa(UInt32)
-_makeSetPa(Int16)
-_makeSetPa(UInt16)
-_makeSetPa(Int8)
-_makeSetPa(UInt8)
-_makeSetPa(Bool)
-
-#undef _makeSetPb
-#undef _makeSetPa
-
-#ifdef __cplusplus
- }
-#endif
-
-/* ========================== ptr get/set ================================ */
-
-/* byteswapping */
-#define NA_GETPb(ai, type, ptr) _NA_GETPb_##type(ptr)
-
-/* aligning */
-#define NA_GETPa(ai, type, ptr) _NA_GETPa_##type(ptr)
-
-/* fast (aligned, !byteswapped) */
-#define NA_GETPf(ai, type, ptr) (*((type *) (ptr)))
-
-#define NA_GETP(ai, type, ptr) \
- (PyArray_ISCARRAY(ai) ? NA_GETPf(ai, type, ptr) \
- : (PyArray_ISBYTESWAPPED(ai) ? \
- NA_GETPb(ai, type, ptr) \
- : NA_GETPa(ai, type, ptr)))
-
-/* NOTE: NA_SET* macros cannot be used as values. */
-
-/* byteswapping */
-#define NA_SETPb(ai, type, ptr, v) _NA_SETPb_##type(ptr, v)
-
-/* aligning */
-#define NA_SETPa(ai, type, ptr, v) _NA_SETPa_##type(ptr, v)
-
-/* fast (aligned, !byteswapped) */
-#define NA_SETPf(ai, type, ptr, v) ((*((type *) ptr)) = (v))
-
-#define NA_SETP(ai, type, ptr, v) \
- if (PyArray_ISCARRAY(ai)) { \
- NA_SETPf((ai), type, (ptr), (v)); \
- } else if (PyArray_ISBYTESWAPPED(ai)) { \
- NA_SETPb((ai), type, (ptr), (v)); \
- } else \
- NA_SETPa((ai), type, (ptr), (v))
-
-/* ========================== 1 index get/set ============================ */
-
-/* byteswapping */
-#define NA_GET1b(ai, type, i) NA_GETPb(ai, type, NA_PTR1(ai, i))
-/* aligning */
-#define NA_GET1a(ai, type, i) NA_GETPa(ai, type, NA_PTR1(ai, i))
-/* fast (aligned, !byteswapped) */
-#define NA_GET1f(ai, type, i) NA_GETPf(ai, type, NA_PTR1(ai, i))
-/* testing */
-#define NA_GET1(ai, type, i) NA_GETP(ai, type, NA_PTR1(ai, i))
-
-/* byteswapping */
-#define NA_SET1b(ai, type, i, v) NA_SETPb(ai, type, NA_PTR1(ai, i), v)
-/* aligning */
-#define NA_SET1a(ai, type, i, v) NA_SETPa(ai, type, NA_PTR1(ai, i), v)
-/* fast (aligned, !byteswapped) */
-#define NA_SET1f(ai, type, i, v) NA_SETPf(ai, type, NA_PTR1(ai, i), v)
-/* testing */
-#define NA_SET1(ai, type, i, v) NA_SETP(ai, type, NA_PTR1(ai, i), v)
-
-/* ========================== 2 index get/set ============================= */
-
-/* byteswapping */
-#define NA_GET2b(ai, type, i, j) NA_GETPb(ai, type, NA_PTR2(ai, i, j))
-/* aligning */
-#define NA_GET2a(ai, type, i, j) NA_GETPa(ai, type, NA_PTR2(ai, i, j))
-/* fast (aligned, !byteswapped) */
-#define NA_GET2f(ai, type, i, j) NA_GETPf(ai, type, NA_PTR2(ai, i, j))
-/* testing */
-#define NA_GET2(ai, type, i, j) NA_GETP(ai, type, NA_PTR2(ai, i, j))
-
-/* byteswapping */
-#define NA_SET2b(ai, type, i, j, v) NA_SETPb(ai, type, NA_PTR2(ai, i, j), v)
-/* aligning */
-#define NA_SET2a(ai, type, i, j, v) NA_SETPa(ai, type, NA_PTR2(ai, i, j), v)
-/* fast (aligned, !byteswapped) */
-#define NA_SET2f(ai, type, i, j, v) NA_SETPf(ai, type, NA_PTR2(ai, i, j), v)
-
-#define NA_SET2(ai, type, i, j, v) NA_SETP(ai, type, NA_PTR2(ai, i, j), v)
-
-/* ========================== 3 index get/set ============================= */
-
-/* byteswapping */
-#define NA_GET3b(ai, type, i, j, k) NA_GETPb(ai, type, NA_PTR3(ai, i, j, k))
-/* aligning */
-#define NA_GET3a(ai, type, i, j, k) NA_GETPa(ai, type, NA_PTR3(ai, i, j, k))
-/* fast (aligned, !byteswapped) */
-#define NA_GET3f(ai, type, i, j, k) NA_GETPf(ai, type, NA_PTR3(ai, i, j, k))
-/* testing */
-#define NA_GET3(ai, type, i, j, k) NA_GETP(ai, type, NA_PTR3(ai, i, j, k))
-
-/* byteswapping */
-#define NA_SET3b(ai, type, i, j, k, v) \
- NA_SETPb(ai, type, NA_PTR3(ai, i, j, k), v)
-/* aligning */
-#define NA_SET3a(ai, type, i, j, k, v) \
- NA_SETPa(ai, type, NA_PTR3(ai, i, j, k), v)
-/* fast (aligned, !byteswapped) */
-#define NA_SET3f(ai, type, i, j, k, v) \
- NA_SETPf(ai, type, NA_PTR3(ai, i, j, k), v)
-#define NA_SET3(ai, type, i, j, k, v) \
- NA_SETP(ai, type, NA_PTR3(ai, i, j, k), v)
-
-/* ========================== 1D get/set ================================== */
-
-#define NA_GET1Db(ai, type, base, cnt, out) \
- { int i, stride = ai->strides[ai->nd-1]; \
- for(i=0; i<cnt; i++) { \
- out[i] = NA_GETPb(ai, type, base); \
- base += stride; \
- } \
- }
-
-#define NA_GET1Da(ai, type, base, cnt, out) \
- { int i, stride = ai->strides[ai->nd-1]; \
- for(i=0; i<cnt; i++) { \
- out[i] = NA_GETPa(ai, type, base); \
- base += stride; \
- } \
- }
-
-#define NA_GET1Df(ai, type, base, cnt, out) \
- { int i, stride = ai->strides[ai->nd-1]; \
- for(i=0; i<cnt; i++) { \
- out[i] = NA_GETPf(ai, type, base); \
- base += stride; \
- } \
- }
-
-#define NA_GET1D(ai, type, base, cnt, out) \
- if (PyArray_ISCARRAY(ai)) { \
- NA_GET1Df(ai, type, base, cnt, out); \
- } else if (PyArray_ISBYTESWAPPED(ai)) { \
- NA_GET1Db(ai, type, base, cnt, out); \
- } else { \
- NA_GET1Da(ai, type, base, cnt, out); \
- }
-
-#define NA_SET1Db(ai, type, base, cnt, in) \
- { int i, stride = ai->strides[ai->nd-1]; \
- for(i=0; i<cnt; i++) { \
- NA_SETPb(ai, type, base, in[i]); \
- base += stride; \
- } \
- }
-
-#define NA_SET1Da(ai, type, base, cnt, in) \
- { int i, stride = ai->strides[ai->nd-1]; \
- for(i=0; i<cnt; i++) { \
- NA_SETPa(ai, type, base, in[i]); \
- base += stride; \
- } \
- }
-
-#define NA_SET1Df(ai, type, base, cnt, in) \
- { int i, stride = ai->strides[ai->nd-1]; \
- for(i=0; i<cnt; i++) { \
- NA_SETPf(ai, type, base, in[i]); \
- base += stride; \
- } \
- }
-
-#define NA_SET1D(ai, type, base, cnt, out) \
- if (PyArray_ISCARRAY(ai)) { \
- NA_SET1Df(ai, type, base, cnt, out); \
- } else if (PyArray_ISBYTESWAPPED(ai)) { \
- NA_SET1Db(ai, type, base, cnt, out); \
- } else { \
- NA_SET1Da(ai, type, base, cnt, out); \
- }
-
-/* ========================== utilities ================================== */
-
-#if !defined(MIN)
-#define MIN(x,y) (((x)<=(y)) ? (x) : (y))
-#endif
-
-#if !defined(MAX)
-#define MAX(x,y) (((x)>=(y)) ? (x) : (y))
-#endif
-
-#if !defined(ABS)
-#define ABS(x) (((x) >= 0) ? (x) : -(x))
-#endif
-
-#define ELEM(x) (sizeof(x)/sizeof(x[0]))
-
-#define BOOLEAN_BITWISE_NOT(x) ((x) ^ 1)
-
-#define NA_NBYTES(a) (a->descr->elsize * NA_elements(a))
-
-#if defined(NA_SMP)
-#define BEGIN_THREADS Py_BEGIN_ALLOW_THREADS
-#define END_THREADS Py_END_ALLOW_THREADS
-#else
-#define BEGIN_THREADS
-#define END_THREADS
-#endif
-
-#if !defined(NA_isnan)
-
-#define U32(u) (* (Int32 *) &(u) )
-#define U64(u) (* (Int64 *) &(u) )
-
-#define NA_isnan32(u) \
- ( (( U32(u) & 0x7f800000) == 0x7f800000) && ((U32(u) & 0x007fffff) != 0)) ? 1:0
-
-#if !defined(_MSC_VER)
-#define NA_isnan64(u) \
- ( (( U64(u) & 0x7ff0000000000000LL) == 0x7ff0000000000000LL) && ((U64(u) & 0x000fffffffffffffLL) != 0)) ? 1:0
-#else
-#define NA_isnan64(u) \
- ( (( U64(u) & 0x7ff0000000000000i64) == 0x7ff0000000000000i64) && ((U64(u) & 0x000fffffffffffffi64) != 0)) ? 1:0
-#endif
-
-#define NA_isnanC32(u) (NA_isnan32(((Complex32 *)&(u))->r) || NA_isnan32(((Complex32 *)&(u))->i))
-#define NA_isnanC64(u) (NA_isnan64(((Complex64 *)&(u))->r) || NA_isnan64(((Complex64 *)&(u))->i))
-
-#endif /* NA_isnan */
-
-
-#endif /* _ndarraymacro */
Modified: trunk/numpy/numarray/setup.py
===================================================================
--- trunk/numpy/numarray/setup.py 2010-02-21 02:49:39 UTC (rev 8211)
+++ trunk/numpy/numarray/setup.py 2010-02-21 02:50:19 UTC (rev 8212)
@@ -4,7 +4,7 @@
from numpy.distutils.misc_util import Configuration
config = Configuration('numarray',parent_package,top_path)
- config.add_data_files('numpy/*')
+ config.add_data_files('include/numpy/*')
config.add_extension('_capi',
sources=['_capi.c'],
Modified: trunk/numpy/numarray/setupscons.py
===================================================================
--- trunk/numpy/numarray/setupscons.py 2010-02-21 02:49:39 UTC (rev 8211)
+++ trunk/numpy/numarray/setupscons.py 2010-02-21 02:50:19 UTC (rev 8212)
@@ -4,7 +4,7 @@
from numpy.distutils.misc_util import Configuration
config = Configuration('numarray',parent_package,top_path)
- config.add_data_files('numpy/')
+ config.add_data_files('include/numpy/')
config.add_sconscript('SConstruct', source_files = ['_capi.c'])
return config
Modified: trunk/numpy/numarray/util.py
===================================================================
--- trunk/numpy/numarray/util.py 2010-02-21 02:49:39 UTC (rev 8211)
+++ trunk/numpy/numarray/util.py 2010-02-21 02:50:19 UTC (rev 8212)
@@ -35,5 +35,5 @@
def get_numarray_include_dirs():
base = os.path.dirname(numpy.__file__)
- newdirs = [os.path.join(base, 'numarray')]
+ newdirs = [os.path.join(base, 'numarray', 'include')]
return newdirs
More information about the Numpy-svn
mailing list