/ lib / numpy / core / include / numpy / __multiarray_api.h
__multiarray_api.h
   1  
   2  #if defined(_MULTIARRAYMODULE) || defined(WITH_CPYCHECKER_STEALS_REFERENCE_TO_ARG_ATTRIBUTE)
   3  
   4  typedef struct {
   5          PyObject_HEAD
   6          npy_bool obval;
   7  } PyBoolScalarObject;
   8  
   9  extern NPY_NO_EXPORT PyTypeObject PyArrayMapIter_Type;
  10  extern NPY_NO_EXPORT PyTypeObject PyArrayNeighborhoodIter_Type;
  11  extern NPY_NO_EXPORT PyBoolScalarObject _PyArrayScalar_BoolValues[2];
  12  
  13  NPY_NO_EXPORT  unsigned int PyArray_GetNDArrayCVersion \
  14         (void);
  15  extern NPY_NO_EXPORT PyTypeObject PyBigArray_Type;
  16  
  17  extern NPY_NO_EXPORT PyTypeObject PyArray_Type;
  18  
  19  extern NPY_NO_EXPORT PyArray_DTypeMeta PyArrayDescr_TypeFull;
  20  #define PyArrayDescr_Type (*(PyTypeObject *)(&PyArrayDescr_TypeFull))
  21  
  22  extern NPY_NO_EXPORT PyTypeObject PyArrayFlags_Type;
  23  
  24  extern NPY_NO_EXPORT PyTypeObject PyArrayIter_Type;
  25  
  26  extern NPY_NO_EXPORT PyTypeObject PyArrayMultiIter_Type;
  27  
  28  extern NPY_NO_EXPORT int NPY_NUMUSERTYPES;
  29  
  30  extern NPY_NO_EXPORT PyTypeObject PyBoolArrType_Type;
  31  
  32  extern NPY_NO_EXPORT PyBoolScalarObject _PyArrayScalar_BoolValues[2];
  33  
  34  extern NPY_NO_EXPORT PyTypeObject PyGenericArrType_Type;
  35  
  36  extern NPY_NO_EXPORT PyTypeObject PyNumberArrType_Type;
  37  
  38  extern NPY_NO_EXPORT PyTypeObject PyIntegerArrType_Type;
  39  
  40  extern NPY_NO_EXPORT PyTypeObject PySignedIntegerArrType_Type;
  41  
  42  extern NPY_NO_EXPORT PyTypeObject PyUnsignedIntegerArrType_Type;
  43  
  44  extern NPY_NO_EXPORT PyTypeObject PyInexactArrType_Type;
  45  
  46  extern NPY_NO_EXPORT PyTypeObject PyFloatingArrType_Type;
  47  
  48  extern NPY_NO_EXPORT PyTypeObject PyComplexFloatingArrType_Type;
  49  
  50  extern NPY_NO_EXPORT PyTypeObject PyFlexibleArrType_Type;
  51  
  52  extern NPY_NO_EXPORT PyTypeObject PyCharacterArrType_Type;
  53  
  54  extern NPY_NO_EXPORT PyTypeObject PyByteArrType_Type;
  55  
  56  extern NPY_NO_EXPORT PyTypeObject PyShortArrType_Type;
  57  
  58  extern NPY_NO_EXPORT PyTypeObject PyIntArrType_Type;
  59  
  60  extern NPY_NO_EXPORT PyTypeObject PyLongArrType_Type;
  61  
  62  extern NPY_NO_EXPORT PyTypeObject PyLongLongArrType_Type;
  63  
  64  extern NPY_NO_EXPORT PyTypeObject PyUByteArrType_Type;
  65  
  66  extern NPY_NO_EXPORT PyTypeObject PyUShortArrType_Type;
  67  
  68  extern NPY_NO_EXPORT PyTypeObject PyUIntArrType_Type;
  69  
  70  extern NPY_NO_EXPORT PyTypeObject PyULongArrType_Type;
  71  
  72  extern NPY_NO_EXPORT PyTypeObject PyULongLongArrType_Type;
  73  
  74  extern NPY_NO_EXPORT PyTypeObject PyFloatArrType_Type;
  75  
  76  extern NPY_NO_EXPORT PyTypeObject PyDoubleArrType_Type;
  77  
  78  extern NPY_NO_EXPORT PyTypeObject PyLongDoubleArrType_Type;
  79  
  80  extern NPY_NO_EXPORT PyTypeObject PyCFloatArrType_Type;
  81  
  82  extern NPY_NO_EXPORT PyTypeObject PyCDoubleArrType_Type;
  83  
  84  extern NPY_NO_EXPORT PyTypeObject PyCLongDoubleArrType_Type;
  85  
  86  extern NPY_NO_EXPORT PyTypeObject PyObjectArrType_Type;
  87  
  88  extern NPY_NO_EXPORT PyTypeObject PyStringArrType_Type;
  89  
  90  extern NPY_NO_EXPORT PyTypeObject PyUnicodeArrType_Type;
  91  
  92  extern NPY_NO_EXPORT PyTypeObject PyVoidArrType_Type;
  93  
  94  NPY_NO_EXPORT  int PyArray_SetNumericOps \
  95         (PyObject *);
  96  NPY_NO_EXPORT  PyObject * PyArray_GetNumericOps \
  97         (void);
  98  NPY_NO_EXPORT  int PyArray_INCREF \
  99         (PyArrayObject *);
 100  NPY_NO_EXPORT  int PyArray_XDECREF \
 101         (PyArrayObject *);
 102  NPY_NO_EXPORT  void PyArray_SetStringFunction \
 103         (PyObject *, int);
 104  NPY_NO_EXPORT  PyArray_Descr * PyArray_DescrFromType \
 105         (int);
 106  NPY_NO_EXPORT  PyObject * PyArray_TypeObjectFromType \
 107         (int);
 108  NPY_NO_EXPORT  char * PyArray_Zero \
 109         (PyArrayObject *);
 110  NPY_NO_EXPORT  char * PyArray_One \
 111         (PyArrayObject *);
 112  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(2) PyObject * PyArray_CastToType \
 113         (PyArrayObject *, PyArray_Descr *, int);
 114  NPY_NO_EXPORT  int PyArray_CastTo \
 115         (PyArrayObject *, PyArrayObject *);
 116  NPY_NO_EXPORT  int PyArray_CastAnyTo \
 117         (PyArrayObject *, PyArrayObject *);
 118  NPY_NO_EXPORT  int PyArray_CanCastSafely \
 119         (int, int);
 120  NPY_NO_EXPORT  npy_bool PyArray_CanCastTo \
 121         (PyArray_Descr *, PyArray_Descr *);
 122  NPY_NO_EXPORT  int PyArray_ObjectType \
 123         (PyObject *, int);
 124  NPY_NO_EXPORT  PyArray_Descr * PyArray_DescrFromObject \
 125         (PyObject *, PyArray_Descr *);
 126  NPY_NO_EXPORT  PyArrayObject ** PyArray_ConvertToCommonType \
 127         (PyObject *, int *);
 128  NPY_NO_EXPORT  PyArray_Descr * PyArray_DescrFromScalar \
 129         (PyObject *);
 130  NPY_NO_EXPORT  PyArray_Descr * PyArray_DescrFromTypeObject \
 131         (PyObject *);
 132  NPY_NO_EXPORT  npy_intp PyArray_Size \
 133         (PyObject *);
 134  NPY_NO_EXPORT  PyObject * PyArray_Scalar \
 135         (void *, PyArray_Descr *, PyObject *);
 136  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(2) PyObject * PyArray_FromScalar \
 137         (PyObject *, PyArray_Descr *);
 138  NPY_NO_EXPORT  void PyArray_ScalarAsCtype \
 139         (PyObject *, void *);
 140  NPY_NO_EXPORT  int PyArray_CastScalarToCtype \
 141         (PyObject *, void *, PyArray_Descr *);
 142  NPY_NO_EXPORT  int PyArray_CastScalarDirect \
 143         (PyObject *, PyArray_Descr *, void *, int);
 144  NPY_NO_EXPORT  PyObject * PyArray_ScalarFromObject \
 145         (PyObject *);
 146  NPY_NO_EXPORT  PyArray_VectorUnaryFunc * PyArray_GetCastFunc \
 147         (PyArray_Descr *, int);
 148  NPY_NO_EXPORT  PyObject * PyArray_FromDims \
 149         (int NPY_UNUSED(nd), int *NPY_UNUSED(d), int NPY_UNUSED(type));
 150  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(3) PyObject * PyArray_FromDimsAndDataAndDescr \
 151         (int NPY_UNUSED(nd), int *NPY_UNUSED(d), PyArray_Descr *, char *NPY_UNUSED(data));
 152  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(2) PyObject * PyArray_FromAny \
 153         (PyObject *, PyArray_Descr *, int, int, int, PyObject *);
 154  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(1) PyObject * PyArray_EnsureArray \
 155         (PyObject *);
 156  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(1) PyObject * PyArray_EnsureAnyArray \
 157         (PyObject *);
 158  NPY_NO_EXPORT  PyObject * PyArray_FromFile \
 159         (FILE *, PyArray_Descr *, npy_intp, char *);
 160  NPY_NO_EXPORT  PyObject * PyArray_FromString \
 161         (char *, npy_intp, PyArray_Descr *, npy_intp, char *);
 162  NPY_NO_EXPORT  PyObject * PyArray_FromBuffer \
 163         (PyObject *, PyArray_Descr *, npy_intp, npy_intp);
 164  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(2) PyObject * PyArray_FromIter \
 165         (PyObject *, PyArray_Descr *, npy_intp);
 166  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(1) PyObject * PyArray_Return \
 167         (PyArrayObject *);
 168  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(2) PyObject * PyArray_GetField \
 169         (PyArrayObject *, PyArray_Descr *, int);
 170  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(2) int PyArray_SetField \
 171         (PyArrayObject *, PyArray_Descr *, int, PyObject *);
 172  NPY_NO_EXPORT  PyObject * PyArray_Byteswap \
 173         (PyArrayObject *, npy_bool);
 174  NPY_NO_EXPORT  PyObject * PyArray_Resize \
 175         (PyArrayObject *, PyArray_Dims *, int, NPY_ORDER NPY_UNUSED(order));
 176  NPY_NO_EXPORT  int PyArray_MoveInto \
 177         (PyArrayObject *, PyArrayObject *);
 178  NPY_NO_EXPORT  int PyArray_CopyInto \
 179         (PyArrayObject *, PyArrayObject *);
 180  NPY_NO_EXPORT  int PyArray_CopyAnyInto \
 181         (PyArrayObject *, PyArrayObject *);
 182  NPY_NO_EXPORT  int PyArray_CopyObject \
 183         (PyArrayObject *, PyObject *);
 184  NPY_NO_EXPORT  PyObject * PyArray_NewCopy \
 185         (PyArrayObject *, NPY_ORDER);
 186  NPY_NO_EXPORT  PyObject * PyArray_ToList \
 187         (PyArrayObject *);
 188  NPY_NO_EXPORT  PyObject * PyArray_ToString \
 189         (PyArrayObject *, NPY_ORDER);
 190  NPY_NO_EXPORT  int PyArray_ToFile \
 191         (PyArrayObject *, FILE *, char *, char *);
 192  NPY_NO_EXPORT  int PyArray_Dump \
 193         (PyObject *, PyObject *, int);
 194  NPY_NO_EXPORT  PyObject * PyArray_Dumps \
 195         (PyObject *, int);
 196  NPY_NO_EXPORT  int PyArray_ValidType \
 197         (int);
 198  NPY_NO_EXPORT  void PyArray_UpdateFlags \
 199         (PyArrayObject *, int);
 200  NPY_NO_EXPORT  PyObject * PyArray_New \
 201         (PyTypeObject *, int, npy_intp const *, int, npy_intp const *, void *, int, int, PyObject *);
 202  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(2) PyObject * PyArray_NewFromDescr \
 203         (PyTypeObject *, PyArray_Descr *, int, npy_intp const *, npy_intp const *, void *, int, PyObject *);
 204  NPY_NO_EXPORT  PyArray_Descr * PyArray_DescrNew \
 205         (PyArray_Descr *);
 206  NPY_NO_EXPORT  PyArray_Descr * PyArray_DescrNewFromType \
 207         (int);
 208  NPY_NO_EXPORT  double PyArray_GetPriority \
 209         (PyObject *, double);
 210  NPY_NO_EXPORT  PyObject * PyArray_IterNew \
 211         (PyObject *);
 212  NPY_NO_EXPORT  PyObject* PyArray_MultiIterNew \
 213         (int, ...);
 214  NPY_NO_EXPORT  int PyArray_PyIntAsInt \
 215         (PyObject *);
 216  NPY_NO_EXPORT  npy_intp PyArray_PyIntAsIntp \
 217         (PyObject *);
 218  NPY_NO_EXPORT  int PyArray_Broadcast \
 219         (PyArrayMultiIterObject *);
 220  NPY_NO_EXPORT  void PyArray_FillObjectArray \
 221         (PyArrayObject *, PyObject *);
 222  NPY_NO_EXPORT  int PyArray_FillWithScalar \
 223         (PyArrayObject *, PyObject *);
 224  NPY_NO_EXPORT  npy_bool PyArray_CheckStrides \
 225         (int, int, npy_intp, npy_intp, npy_intp const *, npy_intp const *);
 226  NPY_NO_EXPORT  PyArray_Descr * PyArray_DescrNewByteorder \
 227         (PyArray_Descr *, char);
 228  NPY_NO_EXPORT  PyObject * PyArray_IterAllButAxis \
 229         (PyObject *, int *);
 230  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(2) PyObject * PyArray_CheckFromAny \
 231         (PyObject *, PyArray_Descr *, int, int, int, PyObject *);
 232  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(2) PyObject * PyArray_FromArray \
 233         (PyArrayObject *, PyArray_Descr *, int);
 234  NPY_NO_EXPORT  PyObject * PyArray_FromInterface \
 235         (PyObject *);
 236  NPY_NO_EXPORT  PyObject * PyArray_FromStructInterface \
 237         (PyObject *);
 238  NPY_NO_EXPORT  PyObject * PyArray_FromArrayAttr \
 239         (PyObject *, PyArray_Descr *, PyObject *);
 240  NPY_NO_EXPORT  NPY_SCALARKIND PyArray_ScalarKind \
 241         (int, PyArrayObject **);
 242  NPY_NO_EXPORT  int PyArray_CanCoerceScalar \
 243         (int, int, NPY_SCALARKIND);
 244  NPY_NO_EXPORT  PyObject * PyArray_NewFlagsObject \
 245         (PyObject *);
 246  NPY_NO_EXPORT  npy_bool PyArray_CanCastScalar \
 247         (PyTypeObject *, PyTypeObject *);
 248  NPY_NO_EXPORT  int PyArray_CompareUCS4 \
 249         (npy_ucs4 const *, npy_ucs4 const *, size_t);
 250  NPY_NO_EXPORT  int PyArray_RemoveSmallest \
 251         (PyArrayMultiIterObject *);
 252  NPY_NO_EXPORT  int PyArray_ElementStrides \
 253         (PyObject *);
 254  NPY_NO_EXPORT  void PyArray_Item_INCREF \
 255         (char *, PyArray_Descr *);
 256  NPY_NO_EXPORT  void PyArray_Item_XDECREF \
 257         (char *, PyArray_Descr *);
 258  NPY_NO_EXPORT  PyObject * PyArray_FieldNames \
 259         (PyObject *);
 260  NPY_NO_EXPORT  PyObject * PyArray_Transpose \
 261         (PyArrayObject *, PyArray_Dims *);
 262  NPY_NO_EXPORT  PyObject * PyArray_TakeFrom \
 263         (PyArrayObject *, PyObject *, int, PyArrayObject *, NPY_CLIPMODE);
 264  NPY_NO_EXPORT  PyObject * PyArray_PutTo \
 265         (PyArrayObject *, PyObject*, PyObject *, NPY_CLIPMODE);
 266  NPY_NO_EXPORT  PyObject * PyArray_PutMask \
 267         (PyArrayObject *, PyObject*, PyObject*);
 268  NPY_NO_EXPORT  PyObject * PyArray_Repeat \
 269         (PyArrayObject *, PyObject *, int);
 270  NPY_NO_EXPORT  PyObject * PyArray_Choose \
 271         (PyArrayObject *, PyObject *, PyArrayObject *, NPY_CLIPMODE);
 272  NPY_NO_EXPORT  int PyArray_Sort \
 273         (PyArrayObject *, int, NPY_SORTKIND);
 274  NPY_NO_EXPORT  PyObject * PyArray_ArgSort \
 275         (PyArrayObject *, int, NPY_SORTKIND);
 276  NPY_NO_EXPORT  PyObject * PyArray_SearchSorted \
 277         (PyArrayObject *, PyObject *, NPY_SEARCHSIDE, PyObject *);
 278  NPY_NO_EXPORT  PyObject * PyArray_ArgMax \
 279         (PyArrayObject *, int, PyArrayObject *);
 280  NPY_NO_EXPORT  PyObject * PyArray_ArgMin \
 281         (PyArrayObject *, int, PyArrayObject *);
 282  NPY_NO_EXPORT  PyObject * PyArray_Reshape \
 283         (PyArrayObject *, PyObject *);
 284  NPY_NO_EXPORT  PyObject * PyArray_Newshape \
 285         (PyArrayObject *, PyArray_Dims *, NPY_ORDER);
 286  NPY_NO_EXPORT  PyObject * PyArray_Squeeze \
 287         (PyArrayObject *);
 288  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(2) PyObject * PyArray_View \
 289         (PyArrayObject *, PyArray_Descr *, PyTypeObject *);
 290  NPY_NO_EXPORT  PyObject * PyArray_SwapAxes \
 291         (PyArrayObject *, int, int);
 292  NPY_NO_EXPORT  PyObject * PyArray_Max \
 293         (PyArrayObject *, int, PyArrayObject *);
 294  NPY_NO_EXPORT  PyObject * PyArray_Min \
 295         (PyArrayObject *, int, PyArrayObject *);
 296  NPY_NO_EXPORT  PyObject * PyArray_Ptp \
 297         (PyArrayObject *, int, PyArrayObject *);
 298  NPY_NO_EXPORT  PyObject * PyArray_Mean \
 299         (PyArrayObject *, int, int, PyArrayObject *);
 300  NPY_NO_EXPORT  PyObject * PyArray_Trace \
 301         (PyArrayObject *, int, int, int, int, PyArrayObject *);
 302  NPY_NO_EXPORT  PyObject * PyArray_Diagonal \
 303         (PyArrayObject *, int, int, int);
 304  NPY_NO_EXPORT  PyObject * PyArray_Clip \
 305         (PyArrayObject *, PyObject *, PyObject *, PyArrayObject *);
 306  NPY_NO_EXPORT  PyObject * PyArray_Conjugate \
 307         (PyArrayObject *, PyArrayObject *);
 308  NPY_NO_EXPORT  PyObject * PyArray_Nonzero \
 309         (PyArrayObject *);
 310  NPY_NO_EXPORT  PyObject * PyArray_Std \
 311         (PyArrayObject *, int, int, PyArrayObject *, int);
 312  NPY_NO_EXPORT  PyObject * PyArray_Sum \
 313         (PyArrayObject *, int, int, PyArrayObject *);
 314  NPY_NO_EXPORT  PyObject * PyArray_CumSum \
 315         (PyArrayObject *, int, int, PyArrayObject *);
 316  NPY_NO_EXPORT  PyObject * PyArray_Prod \
 317         (PyArrayObject *, int, int, PyArrayObject *);
 318  NPY_NO_EXPORT  PyObject * PyArray_CumProd \
 319         (PyArrayObject *, int, int, PyArrayObject *);
 320  NPY_NO_EXPORT  PyObject * PyArray_All \
 321         (PyArrayObject *, int, PyArrayObject *);
 322  NPY_NO_EXPORT  PyObject * PyArray_Any \
 323         (PyArrayObject *, int, PyArrayObject *);
 324  NPY_NO_EXPORT  PyObject * PyArray_Compress \
 325         (PyArrayObject *, PyObject *, int, PyArrayObject *);
 326  NPY_NO_EXPORT  PyObject * PyArray_Flatten \
 327         (PyArrayObject *, NPY_ORDER);
 328  NPY_NO_EXPORT  PyObject * PyArray_Ravel \
 329         (PyArrayObject *, NPY_ORDER);
 330  NPY_NO_EXPORT  npy_intp PyArray_MultiplyList \
 331         (npy_intp const *, int);
 332  NPY_NO_EXPORT  int PyArray_MultiplyIntList \
 333         (int const *, int);
 334  NPY_NO_EXPORT  void * PyArray_GetPtr \
 335         (PyArrayObject *, npy_intp const*);
 336  NPY_NO_EXPORT  int PyArray_CompareLists \
 337         (npy_intp const *, npy_intp const *, int);
 338  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(5) int PyArray_AsCArray \
 339         (PyObject **, void *, npy_intp *, int, PyArray_Descr*);
 340  NPY_NO_EXPORT  int PyArray_As1D \
 341         (PyObject **NPY_UNUSED(op), char **NPY_UNUSED(ptr), int *NPY_UNUSED(d1), int NPY_UNUSED(typecode));
 342  NPY_NO_EXPORT  int PyArray_As2D \
 343         (PyObject **NPY_UNUSED(op), char ***NPY_UNUSED(ptr), int *NPY_UNUSED(d1), int *NPY_UNUSED(d2), int NPY_UNUSED(typecode));
 344  NPY_NO_EXPORT  int PyArray_Free \
 345         (PyObject *, void *);
 346  NPY_NO_EXPORT  int PyArray_Converter \
 347         (PyObject *, PyObject **);
 348  NPY_NO_EXPORT  int PyArray_IntpFromSequence \
 349         (PyObject *, npy_intp *, int);
 350  NPY_NO_EXPORT  PyObject * PyArray_Concatenate \
 351         (PyObject *, int);
 352  NPY_NO_EXPORT  PyObject * PyArray_InnerProduct \
 353         (PyObject *, PyObject *);
 354  NPY_NO_EXPORT  PyObject * PyArray_MatrixProduct \
 355         (PyObject *, PyObject *);
 356  NPY_NO_EXPORT  PyObject * PyArray_CopyAndTranspose \
 357         (PyObject *);
 358  NPY_NO_EXPORT  PyObject * PyArray_Correlate \
 359         (PyObject *, PyObject *, int);
 360  NPY_NO_EXPORT  int PyArray_TypestrConvert \
 361         (int, int);
 362  NPY_NO_EXPORT  int PyArray_DescrConverter \
 363         (PyObject *, PyArray_Descr **);
 364  NPY_NO_EXPORT  int PyArray_DescrConverter2 \
 365         (PyObject *, PyArray_Descr **);
 366  NPY_NO_EXPORT  int PyArray_IntpConverter \
 367         (PyObject *, PyArray_Dims *);
 368  NPY_NO_EXPORT  int PyArray_BufferConverter \
 369         (PyObject *, PyArray_Chunk *);
 370  NPY_NO_EXPORT  int PyArray_AxisConverter \
 371         (PyObject *, int *);
 372  NPY_NO_EXPORT  int PyArray_BoolConverter \
 373         (PyObject *, npy_bool *);
 374  NPY_NO_EXPORT  int PyArray_ByteorderConverter \
 375         (PyObject *, char *);
 376  NPY_NO_EXPORT  int PyArray_OrderConverter \
 377         (PyObject *, NPY_ORDER *);
 378  NPY_NO_EXPORT  unsigned char PyArray_EquivTypes \
 379         (PyArray_Descr *, PyArray_Descr *);
 380  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(3) PyObject * PyArray_Zeros \
 381         (int, npy_intp const *, PyArray_Descr *, int);
 382  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(3) PyObject * PyArray_Empty \
 383         (int, npy_intp const *, PyArray_Descr *, int);
 384  NPY_NO_EXPORT  PyObject * PyArray_Where \
 385         (PyObject *, PyObject *, PyObject *);
 386  NPY_NO_EXPORT  PyObject * PyArray_Arange \
 387         (double, double, double, int);
 388  NPY_NO_EXPORT  PyObject * PyArray_ArangeObj \
 389         (PyObject *, PyObject *, PyObject *, PyArray_Descr *);
 390  NPY_NO_EXPORT  int PyArray_SortkindConverter \
 391         (PyObject *, NPY_SORTKIND *);
 392  NPY_NO_EXPORT  PyObject * PyArray_LexSort \
 393         (PyObject *, int);
 394  NPY_NO_EXPORT  PyObject * PyArray_Round \
 395         (PyArrayObject *, int, PyArrayObject *);
 396  NPY_NO_EXPORT  unsigned char PyArray_EquivTypenums \
 397         (int, int);
 398  NPY_NO_EXPORT  int PyArray_RegisterDataType \
 399         (PyArray_Descr *);
 400  NPY_NO_EXPORT  int PyArray_RegisterCastFunc \
 401         (PyArray_Descr *, int, PyArray_VectorUnaryFunc *);
 402  NPY_NO_EXPORT  int PyArray_RegisterCanCast \
 403         (PyArray_Descr *, int, NPY_SCALARKIND);
 404  NPY_NO_EXPORT  void PyArray_InitArrFuncs \
 405         (PyArray_ArrFuncs *);
 406  NPY_NO_EXPORT  PyObject * PyArray_IntTupleFromIntp \
 407         (int, npy_intp const *);
 408  NPY_NO_EXPORT  int PyArray_TypeNumFromName \
 409         (char const *);
 410  NPY_NO_EXPORT  int PyArray_ClipmodeConverter \
 411         (PyObject *, NPY_CLIPMODE *);
 412  NPY_NO_EXPORT  int PyArray_OutputConverter \
 413         (PyObject *, PyArrayObject **);
 414  NPY_NO_EXPORT  PyObject * PyArray_BroadcastToShape \
 415         (PyObject *, npy_intp *, int);
 416  NPY_NO_EXPORT  void _PyArray_SigintHandler \
 417         (int);
 418  NPY_NO_EXPORT  void* _PyArray_GetSigintBuf \
 419         (void);
 420  NPY_NO_EXPORT  int PyArray_DescrAlignConverter \
 421         (PyObject *, PyArray_Descr **);
 422  NPY_NO_EXPORT  int PyArray_DescrAlignConverter2 \
 423         (PyObject *, PyArray_Descr **);
 424  NPY_NO_EXPORT  int PyArray_SearchsideConverter \
 425         (PyObject *, void *);
 426  NPY_NO_EXPORT  PyObject * PyArray_CheckAxis \
 427         (PyArrayObject *, int *, int);
 428  NPY_NO_EXPORT  npy_intp PyArray_OverflowMultiplyList \
 429         (npy_intp const *, int);
 430  NPY_NO_EXPORT  int PyArray_CompareString \
 431         (const char *, const char *, size_t);
 432  NPY_NO_EXPORT  PyObject* PyArray_MultiIterFromObjects \
 433         (PyObject **, int, int, ...);
 434  NPY_NO_EXPORT  int PyArray_GetEndianness \
 435         (void);
 436  NPY_NO_EXPORT  unsigned int PyArray_GetNDArrayCFeatureVersion \
 437         (void);
 438  NPY_NO_EXPORT  PyObject * PyArray_Correlate2 \
 439         (PyObject *, PyObject *, int);
 440  NPY_NO_EXPORT  PyObject* PyArray_NeighborhoodIterNew \
 441         (PyArrayIterObject *, const npy_intp *, int, PyArrayObject*);
 442  extern NPY_NO_EXPORT PyTypeObject PyTimeIntegerArrType_Type;
 443  
 444  extern NPY_NO_EXPORT PyTypeObject PyDatetimeArrType_Type;
 445  
 446  extern NPY_NO_EXPORT PyTypeObject PyTimedeltaArrType_Type;
 447  
 448  extern NPY_NO_EXPORT PyTypeObject PyHalfArrType_Type;
 449  
 450  extern NPY_NO_EXPORT PyTypeObject NpyIter_Type;
 451  
 452  NPY_NO_EXPORT  void PyArray_SetDatetimeParseFunction \
 453         (PyObject *NPY_UNUSED(op));
 454  NPY_NO_EXPORT  void PyArray_DatetimeToDatetimeStruct \
 455         (npy_datetime NPY_UNUSED(val), NPY_DATETIMEUNIT NPY_UNUSED(fr), npy_datetimestruct *);
 456  NPY_NO_EXPORT  void PyArray_TimedeltaToTimedeltaStruct \
 457         (npy_timedelta NPY_UNUSED(val), NPY_DATETIMEUNIT NPY_UNUSED(fr), npy_timedeltastruct *);
 458  NPY_NO_EXPORT  npy_datetime PyArray_DatetimeStructToDatetime \
 459         (NPY_DATETIMEUNIT NPY_UNUSED(fr), npy_datetimestruct *NPY_UNUSED(d));
 460  NPY_NO_EXPORT  npy_datetime PyArray_TimedeltaStructToTimedelta \
 461         (NPY_DATETIMEUNIT NPY_UNUSED(fr), npy_timedeltastruct *NPY_UNUSED(d));
 462  NPY_NO_EXPORT  NpyIter * NpyIter_New \
 463         (PyArrayObject *, npy_uint32, NPY_ORDER, NPY_CASTING, PyArray_Descr*);
 464  NPY_NO_EXPORT  NpyIter * NpyIter_MultiNew \
 465         (int, PyArrayObject **, npy_uint32, NPY_ORDER, NPY_CASTING, npy_uint32 *, PyArray_Descr **);
 466  NPY_NO_EXPORT  NpyIter * NpyIter_AdvancedNew \
 467         (int, PyArrayObject **, npy_uint32, NPY_ORDER, NPY_CASTING, npy_uint32 *, PyArray_Descr **, int, int **, npy_intp *, npy_intp);
 468  NPY_NO_EXPORT  NpyIter * NpyIter_Copy \
 469         (NpyIter *);
 470  NPY_NO_EXPORT  int NpyIter_Deallocate \
 471         (NpyIter *);
 472  NPY_NO_EXPORT  npy_bool NpyIter_HasDelayedBufAlloc \
 473         (NpyIter *);
 474  NPY_NO_EXPORT  npy_bool NpyIter_HasExternalLoop \
 475         (NpyIter *);
 476  NPY_NO_EXPORT  int NpyIter_EnableExternalLoop \
 477         (NpyIter *);
 478  NPY_NO_EXPORT  npy_intp * NpyIter_GetInnerStrideArray \
 479         (NpyIter *);
 480  NPY_NO_EXPORT  npy_intp * NpyIter_GetInnerLoopSizePtr \
 481         (NpyIter *);
 482  NPY_NO_EXPORT  int NpyIter_Reset \
 483         (NpyIter *, char **);
 484  NPY_NO_EXPORT  int NpyIter_ResetBasePointers \
 485         (NpyIter *, char **, char **);
 486  NPY_NO_EXPORT  int NpyIter_ResetToIterIndexRange \
 487         (NpyIter *, npy_intp, npy_intp, char **);
 488  NPY_NO_EXPORT  int NpyIter_GetNDim \
 489         (NpyIter *);
 490  NPY_NO_EXPORT  int NpyIter_GetNOp \
 491         (NpyIter *);
 492  NPY_NO_EXPORT  NpyIter_IterNextFunc * NpyIter_GetIterNext \
 493         (NpyIter *, char **);
 494  NPY_NO_EXPORT  npy_intp NpyIter_GetIterSize \
 495         (NpyIter *);
 496  NPY_NO_EXPORT  void NpyIter_GetIterIndexRange \
 497         (NpyIter *, npy_intp *, npy_intp *);
 498  NPY_NO_EXPORT  npy_intp NpyIter_GetIterIndex \
 499         (NpyIter *);
 500  NPY_NO_EXPORT  int NpyIter_GotoIterIndex \
 501         (NpyIter *, npy_intp);
 502  NPY_NO_EXPORT  npy_bool NpyIter_HasMultiIndex \
 503         (NpyIter *);
 504  NPY_NO_EXPORT  int NpyIter_GetShape \
 505         (NpyIter *, npy_intp *);
 506  NPY_NO_EXPORT  NpyIter_GetMultiIndexFunc * NpyIter_GetGetMultiIndex \
 507         (NpyIter *, char **);
 508  NPY_NO_EXPORT  int NpyIter_GotoMultiIndex \
 509         (NpyIter *, npy_intp const *);
 510  NPY_NO_EXPORT  int NpyIter_RemoveMultiIndex \
 511         (NpyIter *);
 512  NPY_NO_EXPORT  npy_bool NpyIter_HasIndex \
 513         (NpyIter *);
 514  NPY_NO_EXPORT  npy_bool NpyIter_IsBuffered \
 515         (NpyIter *);
 516  NPY_NO_EXPORT  npy_bool NpyIter_IsGrowInner \
 517         (NpyIter *);
 518  NPY_NO_EXPORT  npy_intp NpyIter_GetBufferSize \
 519         (NpyIter *);
 520  NPY_NO_EXPORT  npy_intp * NpyIter_GetIndexPtr \
 521         (NpyIter *);
 522  NPY_NO_EXPORT  int NpyIter_GotoIndex \
 523         (NpyIter *, npy_intp);
 524  NPY_NO_EXPORT  char ** NpyIter_GetDataPtrArray \
 525         (NpyIter *);
 526  NPY_NO_EXPORT  PyArray_Descr ** NpyIter_GetDescrArray \
 527         (NpyIter *);
 528  NPY_NO_EXPORT  PyArrayObject ** NpyIter_GetOperandArray \
 529         (NpyIter *);
 530  NPY_NO_EXPORT  PyArrayObject * NpyIter_GetIterView \
 531         (NpyIter *, npy_intp);
 532  NPY_NO_EXPORT  void NpyIter_GetReadFlags \
 533         (NpyIter *, char *);
 534  NPY_NO_EXPORT  void NpyIter_GetWriteFlags \
 535         (NpyIter *, char *);
 536  NPY_NO_EXPORT  void NpyIter_DebugPrint \
 537         (NpyIter *);
 538  NPY_NO_EXPORT  npy_bool NpyIter_IterationNeedsAPI \
 539         (NpyIter *);
 540  NPY_NO_EXPORT  void NpyIter_GetInnerFixedStrideArray \
 541         (NpyIter *, npy_intp *);
 542  NPY_NO_EXPORT  int NpyIter_RemoveAxis \
 543         (NpyIter *, int);
 544  NPY_NO_EXPORT  npy_intp * NpyIter_GetAxisStrideArray \
 545         (NpyIter *, int);
 546  NPY_NO_EXPORT  npy_bool NpyIter_RequiresBuffering \
 547         (NpyIter *);
 548  NPY_NO_EXPORT  char ** NpyIter_GetInitialDataPtrArray \
 549         (NpyIter *);
 550  NPY_NO_EXPORT  int NpyIter_CreateCompatibleStrides \
 551         (NpyIter *, npy_intp, npy_intp *);
 552  NPY_NO_EXPORT  int PyArray_CastingConverter \
 553         (PyObject *, NPY_CASTING *);
 554  NPY_NO_EXPORT  npy_intp PyArray_CountNonzero \
 555         (PyArrayObject *);
 556  NPY_NO_EXPORT  PyArray_Descr * PyArray_PromoteTypes \
 557         (PyArray_Descr *, PyArray_Descr *);
 558  NPY_NO_EXPORT  PyArray_Descr * PyArray_MinScalarType \
 559         (PyArrayObject *);
 560  NPY_NO_EXPORT  PyArray_Descr * PyArray_ResultType \
 561         (npy_intp, PyArrayObject *arrs[], npy_intp, PyArray_Descr *descrs[]);
 562  NPY_NO_EXPORT  npy_bool PyArray_CanCastArrayTo \
 563         (PyArrayObject *, PyArray_Descr *, NPY_CASTING);
 564  NPY_NO_EXPORT  npy_bool PyArray_CanCastTypeTo \
 565         (PyArray_Descr *, PyArray_Descr *, NPY_CASTING);
 566  NPY_NO_EXPORT  PyArrayObject * PyArray_EinsteinSum \
 567         (char *, npy_intp, PyArrayObject **, PyArray_Descr *, NPY_ORDER, NPY_CASTING, PyArrayObject *);
 568  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(3) PyObject * PyArray_NewLikeArray \
 569         (PyArrayObject *, NPY_ORDER, PyArray_Descr *, int);
 570  NPY_NO_EXPORT  int PyArray_GetArrayParamsFromObject \
 571         (PyObject *NPY_UNUSED(op), PyArray_Descr *NPY_UNUSED(requested_dtype), npy_bool NPY_UNUSED(writeable), PyArray_Descr **NPY_UNUSED(out_dtype), int *NPY_UNUSED(out_ndim), npy_intp *NPY_UNUSED(out_dims), PyArrayObject **NPY_UNUSED(out_arr), PyObject *NPY_UNUSED(context));
 572  NPY_NO_EXPORT  int PyArray_ConvertClipmodeSequence \
 573         (PyObject *, NPY_CLIPMODE *, int);
 574  NPY_NO_EXPORT  PyObject * PyArray_MatrixProduct2 \
 575         (PyObject *, PyObject *, PyArrayObject*);
 576  NPY_NO_EXPORT  npy_bool NpyIter_IsFirstVisit \
 577         (NpyIter *, int);
 578  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(2) int PyArray_SetBaseObject \
 579         (PyArrayObject *, PyObject *);
 580  NPY_NO_EXPORT  void PyArray_CreateSortedStridePerm \
 581         (int, npy_intp const *, npy_stride_sort_item *);
 582  NPY_NO_EXPORT  void PyArray_RemoveAxesInPlace \
 583         (PyArrayObject *, const npy_bool *);
 584  NPY_NO_EXPORT  void PyArray_DebugPrint \
 585         (PyArrayObject *);
 586  NPY_NO_EXPORT  int PyArray_FailUnlessWriteable \
 587         (PyArrayObject *, const char *);
 588  NPY_NO_EXPORT NPY_STEALS_REF_TO_ARG(2) int PyArray_SetUpdateIfCopyBase \
 589         (PyArrayObject *, PyArrayObject *);
 590  NPY_NO_EXPORT  void * PyDataMem_NEW \
 591         (size_t);
 592  NPY_NO_EXPORT  void PyDataMem_FREE \
 593         (void *);
 594  NPY_NO_EXPORT  void * PyDataMem_RENEW \
 595         (void *, size_t);
 596  NPY_NO_EXPORT  PyDataMem_EventHookFunc * PyDataMem_SetEventHook \
 597         (PyDataMem_EventHookFunc *, void *, void **);
 598  extern NPY_NO_EXPORT NPY_CASTING NPY_DEFAULT_ASSIGN_CASTING;
 599  
 600  NPY_NO_EXPORT  void PyArray_MapIterSwapAxes \
 601         (PyArrayMapIterObject *, PyArrayObject **, int);
 602  NPY_NO_EXPORT  PyObject * PyArray_MapIterArray \
 603         (PyArrayObject *, PyObject *);
 604  NPY_NO_EXPORT  void PyArray_MapIterNext \
 605         (PyArrayMapIterObject *);
 606  NPY_NO_EXPORT  int PyArray_Partition \
 607         (PyArrayObject *, PyArrayObject *, int, NPY_SELECTKIND);
 608  NPY_NO_EXPORT  PyObject * PyArray_ArgPartition \
 609         (PyArrayObject *, PyArrayObject *, int, NPY_SELECTKIND);
 610  NPY_NO_EXPORT  int PyArray_SelectkindConverter \
 611         (PyObject *, NPY_SELECTKIND *);
 612  NPY_NO_EXPORT  void * PyDataMem_NEW_ZEROED \
 613         (size_t, size_t);
 614  NPY_NO_EXPORT  int PyArray_CheckAnyScalarExact \
 615         (PyObject *);
 616  NPY_NO_EXPORT  PyObject * PyArray_MapIterArrayCopyIfOverlap \
 617         (PyArrayObject *, PyObject *, int, PyArrayObject *);
 618  NPY_NO_EXPORT  int PyArray_ResolveWritebackIfCopy \
 619         (PyArrayObject *);
 620  NPY_NO_EXPORT  int PyArray_SetWritebackIfCopyBase \
 621         (PyArrayObject *, PyArrayObject *);
 622  NPY_NO_EXPORT  PyObject * PyDataMem_SetHandler \
 623         (PyObject *);
 624  NPY_NO_EXPORT  PyObject * PyDataMem_GetHandler \
 625         (void);
 626  extern NPY_NO_EXPORT PyObject* PyDataMem_DefaultHandler;
 627  
 628  
 629  #else
 630  
 631  #if defined(PY_ARRAY_UNIQUE_SYMBOL)
 632  #define PyArray_API PY_ARRAY_UNIQUE_SYMBOL
 633  #endif
 634  
 635  #if defined(NO_IMPORT) || defined(NO_IMPORT_ARRAY)
 636  extern void **PyArray_API;
 637  #else
 638  #if defined(PY_ARRAY_UNIQUE_SYMBOL)
 639  void **PyArray_API;
 640  #else
 641  static void **PyArray_API=NULL;
 642  #endif
 643  #endif
 644  
 645  #define PyArray_GetNDArrayCVersion \
 646          (*(unsigned int (*)(void)) \
 647           PyArray_API[0])
 648  #define PyBigArray_Type (*(PyTypeObject *)PyArray_API[1])
 649  #define PyArray_Type (*(PyTypeObject *)PyArray_API[2])
 650  #define PyArrayDescr_Type (*(PyTypeObject *)PyArray_API[3])
 651  #define PyArrayFlags_Type (*(PyTypeObject *)PyArray_API[4])
 652  #define PyArrayIter_Type (*(PyTypeObject *)PyArray_API[5])
 653  #define PyArrayMultiIter_Type (*(PyTypeObject *)PyArray_API[6])
 654  #define NPY_NUMUSERTYPES (*(int *)PyArray_API[7])
 655  #define PyBoolArrType_Type (*(PyTypeObject *)PyArray_API[8])
 656  #define _PyArrayScalar_BoolValues ((PyBoolScalarObject *)PyArray_API[9])
 657  #define PyGenericArrType_Type (*(PyTypeObject *)PyArray_API[10])
 658  #define PyNumberArrType_Type (*(PyTypeObject *)PyArray_API[11])
 659  #define PyIntegerArrType_Type (*(PyTypeObject *)PyArray_API[12])
 660  #define PySignedIntegerArrType_Type (*(PyTypeObject *)PyArray_API[13])
 661  #define PyUnsignedIntegerArrType_Type (*(PyTypeObject *)PyArray_API[14])
 662  #define PyInexactArrType_Type (*(PyTypeObject *)PyArray_API[15])
 663  #define PyFloatingArrType_Type (*(PyTypeObject *)PyArray_API[16])
 664  #define PyComplexFloatingArrType_Type (*(PyTypeObject *)PyArray_API[17])
 665  #define PyFlexibleArrType_Type (*(PyTypeObject *)PyArray_API[18])
 666  #define PyCharacterArrType_Type (*(PyTypeObject *)PyArray_API[19])
 667  #define PyByteArrType_Type (*(PyTypeObject *)PyArray_API[20])
 668  #define PyShortArrType_Type (*(PyTypeObject *)PyArray_API[21])
 669  #define PyIntArrType_Type (*(PyTypeObject *)PyArray_API[22])
 670  #define PyLongArrType_Type (*(PyTypeObject *)PyArray_API[23])
 671  #define PyLongLongArrType_Type (*(PyTypeObject *)PyArray_API[24])
 672  #define PyUByteArrType_Type (*(PyTypeObject *)PyArray_API[25])
 673  #define PyUShortArrType_Type (*(PyTypeObject *)PyArray_API[26])
 674  #define PyUIntArrType_Type (*(PyTypeObject *)PyArray_API[27])
 675  #define PyULongArrType_Type (*(PyTypeObject *)PyArray_API[28])
 676  #define PyULongLongArrType_Type (*(PyTypeObject *)PyArray_API[29])
 677  #define PyFloatArrType_Type (*(PyTypeObject *)PyArray_API[30])
 678  #define PyDoubleArrType_Type (*(PyTypeObject *)PyArray_API[31])
 679  #define PyLongDoubleArrType_Type (*(PyTypeObject *)PyArray_API[32])
 680  #define PyCFloatArrType_Type (*(PyTypeObject *)PyArray_API[33])
 681  #define PyCDoubleArrType_Type (*(PyTypeObject *)PyArray_API[34])
 682  #define PyCLongDoubleArrType_Type (*(PyTypeObject *)PyArray_API[35])
 683  #define PyObjectArrType_Type (*(PyTypeObject *)PyArray_API[36])
 684  #define PyStringArrType_Type (*(PyTypeObject *)PyArray_API[37])
 685  #define PyUnicodeArrType_Type (*(PyTypeObject *)PyArray_API[38])
 686  #define PyVoidArrType_Type (*(PyTypeObject *)PyArray_API[39])
 687  #define PyArray_SetNumericOps \
 688          (*(int (*)(PyObject *)) \
 689           PyArray_API[40])
 690  #define PyArray_GetNumericOps \
 691          (*(PyObject * (*)(void)) \
 692           PyArray_API[41])
 693  #define PyArray_INCREF \
 694          (*(int (*)(PyArrayObject *)) \
 695           PyArray_API[42])
 696  #define PyArray_XDECREF \
 697          (*(int (*)(PyArrayObject *)) \
 698           PyArray_API[43])
 699  #define PyArray_SetStringFunction \
 700          (*(void (*)(PyObject *, int)) \
 701           PyArray_API[44])
 702  #define PyArray_DescrFromType \
 703          (*(PyArray_Descr * (*)(int)) \
 704           PyArray_API[45])
 705  #define PyArray_TypeObjectFromType \
 706          (*(PyObject * (*)(int)) \
 707           PyArray_API[46])
 708  #define PyArray_Zero \
 709          (*(char * (*)(PyArrayObject *)) \
 710           PyArray_API[47])
 711  #define PyArray_One \
 712          (*(char * (*)(PyArrayObject *)) \
 713           PyArray_API[48])
 714  #define PyArray_CastToType \
 715          (*(PyObject * (*)(PyArrayObject *, PyArray_Descr *, int)) \
 716           PyArray_API[49])
 717  #define PyArray_CastTo \
 718          (*(int (*)(PyArrayObject *, PyArrayObject *)) \
 719           PyArray_API[50])
 720  #define PyArray_CastAnyTo \
 721          (*(int (*)(PyArrayObject *, PyArrayObject *)) \
 722           PyArray_API[51])
 723  #define PyArray_CanCastSafely \
 724          (*(int (*)(int, int)) \
 725           PyArray_API[52])
 726  #define PyArray_CanCastTo \
 727          (*(npy_bool (*)(PyArray_Descr *, PyArray_Descr *)) \
 728           PyArray_API[53])
 729  #define PyArray_ObjectType \
 730          (*(int (*)(PyObject *, int)) \
 731           PyArray_API[54])
 732  #define PyArray_DescrFromObject \
 733          (*(PyArray_Descr * (*)(PyObject *, PyArray_Descr *)) \
 734           PyArray_API[55])
 735  #define PyArray_ConvertToCommonType \
 736          (*(PyArrayObject ** (*)(PyObject *, int *)) \
 737           PyArray_API[56])
 738  #define PyArray_DescrFromScalar \
 739          (*(PyArray_Descr * (*)(PyObject *)) \
 740           PyArray_API[57])
 741  #define PyArray_DescrFromTypeObject \
 742          (*(PyArray_Descr * (*)(PyObject *)) \
 743           PyArray_API[58])
 744  #define PyArray_Size \
 745          (*(npy_intp (*)(PyObject *)) \
 746           PyArray_API[59])
 747  #define PyArray_Scalar \
 748          (*(PyObject * (*)(void *, PyArray_Descr *, PyObject *)) \
 749           PyArray_API[60])
 750  #define PyArray_FromScalar \
 751          (*(PyObject * (*)(PyObject *, PyArray_Descr *)) \
 752           PyArray_API[61])
 753  #define PyArray_ScalarAsCtype \
 754          (*(void (*)(PyObject *, void *)) \
 755           PyArray_API[62])
 756  #define PyArray_CastScalarToCtype \
 757          (*(int (*)(PyObject *, void *, PyArray_Descr *)) \
 758           PyArray_API[63])
 759  #define PyArray_CastScalarDirect \
 760          (*(int (*)(PyObject *, PyArray_Descr *, void *, int)) \
 761           PyArray_API[64])
 762  #define PyArray_ScalarFromObject \
 763          (*(PyObject * (*)(PyObject *)) \
 764           PyArray_API[65])
 765  #define PyArray_GetCastFunc \
 766          (*(PyArray_VectorUnaryFunc * (*)(PyArray_Descr *, int)) \
 767           PyArray_API[66])
 768  #define PyArray_FromDims \
 769          (*(PyObject * (*)(int NPY_UNUSED(nd), int *NPY_UNUSED(d), int NPY_UNUSED(type))) \
 770           PyArray_API[67])
 771  #define PyArray_FromDimsAndDataAndDescr \
 772          (*(PyObject * (*)(int NPY_UNUSED(nd), int *NPY_UNUSED(d), PyArray_Descr *, char *NPY_UNUSED(data))) \
 773           PyArray_API[68])
 774  #define PyArray_FromAny \
 775          (*(PyObject * (*)(PyObject *, PyArray_Descr *, int, int, int, PyObject *)) \
 776           PyArray_API[69])
 777  #define PyArray_EnsureArray \
 778          (*(PyObject * (*)(PyObject *)) \
 779           PyArray_API[70])
 780  #define PyArray_EnsureAnyArray \
 781          (*(PyObject * (*)(PyObject *)) \
 782           PyArray_API[71])
 783  #define PyArray_FromFile \
 784          (*(PyObject * (*)(FILE *, PyArray_Descr *, npy_intp, char *)) \
 785           PyArray_API[72])
 786  #define PyArray_FromString \
 787          (*(PyObject * (*)(char *, npy_intp, PyArray_Descr *, npy_intp, char *)) \
 788           PyArray_API[73])
 789  #define PyArray_FromBuffer \
 790          (*(PyObject * (*)(PyObject *, PyArray_Descr *, npy_intp, npy_intp)) \
 791           PyArray_API[74])
 792  #define PyArray_FromIter \
 793          (*(PyObject * (*)(PyObject *, PyArray_Descr *, npy_intp)) \
 794           PyArray_API[75])
 795  #define PyArray_Return \
 796          (*(PyObject * (*)(PyArrayObject *)) \
 797           PyArray_API[76])
 798  #define PyArray_GetField \
 799          (*(PyObject * (*)(PyArrayObject *, PyArray_Descr *, int)) \
 800           PyArray_API[77])
 801  #define PyArray_SetField \
 802          (*(int (*)(PyArrayObject *, PyArray_Descr *, int, PyObject *)) \
 803           PyArray_API[78])
 804  #define PyArray_Byteswap \
 805          (*(PyObject * (*)(PyArrayObject *, npy_bool)) \
 806           PyArray_API[79])
 807  #define PyArray_Resize \
 808          (*(PyObject * (*)(PyArrayObject *, PyArray_Dims *, int, NPY_ORDER NPY_UNUSED(order))) \
 809           PyArray_API[80])
 810  #define PyArray_MoveInto \
 811          (*(int (*)(PyArrayObject *, PyArrayObject *)) \
 812           PyArray_API[81])
 813  #define PyArray_CopyInto \
 814          (*(int (*)(PyArrayObject *, PyArrayObject *)) \
 815           PyArray_API[82])
 816  #define PyArray_CopyAnyInto \
 817          (*(int (*)(PyArrayObject *, PyArrayObject *)) \
 818           PyArray_API[83])
 819  #define PyArray_CopyObject \
 820          (*(int (*)(PyArrayObject *, PyObject *)) \
 821           PyArray_API[84])
 822  #define PyArray_NewCopy \
 823          (*(PyObject * (*)(PyArrayObject *, NPY_ORDER)) \
 824           PyArray_API[85])
 825  #define PyArray_ToList \
 826          (*(PyObject * (*)(PyArrayObject *)) \
 827           PyArray_API[86])
 828  #define PyArray_ToString \
 829          (*(PyObject * (*)(PyArrayObject *, NPY_ORDER)) \
 830           PyArray_API[87])
 831  #define PyArray_ToFile \
 832          (*(int (*)(PyArrayObject *, FILE *, char *, char *)) \
 833           PyArray_API[88])
 834  #define PyArray_Dump \
 835          (*(int (*)(PyObject *, PyObject *, int)) \
 836           PyArray_API[89])
 837  #define PyArray_Dumps \
 838          (*(PyObject * (*)(PyObject *, int)) \
 839           PyArray_API[90])
 840  #define PyArray_ValidType \
 841          (*(int (*)(int)) \
 842           PyArray_API[91])
 843  #define PyArray_UpdateFlags \
 844          (*(void (*)(PyArrayObject *, int)) \
 845           PyArray_API[92])
 846  #define PyArray_New \
 847          (*(PyObject * (*)(PyTypeObject *, int, npy_intp const *, int, npy_intp const *, void *, int, int, PyObject *)) \
 848           PyArray_API[93])
 849  #define PyArray_NewFromDescr \
 850          (*(PyObject * (*)(PyTypeObject *, PyArray_Descr *, int, npy_intp const *, npy_intp const *, void *, int, PyObject *)) \
 851           PyArray_API[94])
 852  #define PyArray_DescrNew \
 853          (*(PyArray_Descr * (*)(PyArray_Descr *)) \
 854           PyArray_API[95])
 855  #define PyArray_DescrNewFromType \
 856          (*(PyArray_Descr * (*)(int)) \
 857           PyArray_API[96])
 858  #define PyArray_GetPriority \
 859          (*(double (*)(PyObject *, double)) \
 860           PyArray_API[97])
 861  #define PyArray_IterNew \
 862          (*(PyObject * (*)(PyObject *)) \
 863           PyArray_API[98])
 864  #define PyArray_MultiIterNew \
 865          (*(PyObject* (*)(int, ...)) \
 866           PyArray_API[99])
 867  #define PyArray_PyIntAsInt \
 868          (*(int (*)(PyObject *)) \
 869           PyArray_API[100])
 870  #define PyArray_PyIntAsIntp \
 871          (*(npy_intp (*)(PyObject *)) \
 872           PyArray_API[101])
 873  #define PyArray_Broadcast \
 874          (*(int (*)(PyArrayMultiIterObject *)) \
 875           PyArray_API[102])
 876  #define PyArray_FillObjectArray \
 877          (*(void (*)(PyArrayObject *, PyObject *)) \
 878           PyArray_API[103])
 879  #define PyArray_FillWithScalar \
 880          (*(int (*)(PyArrayObject *, PyObject *)) \
 881           PyArray_API[104])
 882  #define PyArray_CheckStrides \
 883          (*(npy_bool (*)(int, int, npy_intp, npy_intp, npy_intp const *, npy_intp const *)) \
 884           PyArray_API[105])
 885  #define PyArray_DescrNewByteorder \
 886          (*(PyArray_Descr * (*)(PyArray_Descr *, char)) \
 887           PyArray_API[106])
 888  #define PyArray_IterAllButAxis \
 889          (*(PyObject * (*)(PyObject *, int *)) \
 890           PyArray_API[107])
 891  #define PyArray_CheckFromAny \
 892          (*(PyObject * (*)(PyObject *, PyArray_Descr *, int, int, int, PyObject *)) \
 893           PyArray_API[108])
 894  #define PyArray_FromArray \
 895          (*(PyObject * (*)(PyArrayObject *, PyArray_Descr *, int)) \
 896           PyArray_API[109])
 897  #define PyArray_FromInterface \
 898          (*(PyObject * (*)(PyObject *)) \
 899           PyArray_API[110])
 900  #define PyArray_FromStructInterface \
 901          (*(PyObject * (*)(PyObject *)) \
 902           PyArray_API[111])
 903  #define PyArray_FromArrayAttr \
 904          (*(PyObject * (*)(PyObject *, PyArray_Descr *, PyObject *)) \
 905           PyArray_API[112])
 906  #define PyArray_ScalarKind \
 907          (*(NPY_SCALARKIND (*)(int, PyArrayObject **)) \
 908           PyArray_API[113])
 909  #define PyArray_CanCoerceScalar \
 910          (*(int (*)(int, int, NPY_SCALARKIND)) \
 911           PyArray_API[114])
 912  #define PyArray_NewFlagsObject \
 913          (*(PyObject * (*)(PyObject *)) \
 914           PyArray_API[115])
 915  #define PyArray_CanCastScalar \
 916          (*(npy_bool (*)(PyTypeObject *, PyTypeObject *)) \
 917           PyArray_API[116])
 918  #define PyArray_CompareUCS4 \
 919          (*(int (*)(npy_ucs4 const *, npy_ucs4 const *, size_t)) \
 920           PyArray_API[117])
 921  #define PyArray_RemoveSmallest \
 922          (*(int (*)(PyArrayMultiIterObject *)) \
 923           PyArray_API[118])
 924  #define PyArray_ElementStrides \
 925          (*(int (*)(PyObject *)) \
 926           PyArray_API[119])
 927  #define PyArray_Item_INCREF \
 928          (*(void (*)(char *, PyArray_Descr *)) \
 929           PyArray_API[120])
 930  #define PyArray_Item_XDECREF \
 931          (*(void (*)(char *, PyArray_Descr *)) \
 932           PyArray_API[121])
 933  #define PyArray_FieldNames \
 934          (*(PyObject * (*)(PyObject *)) \
 935           PyArray_API[122])
 936  #define PyArray_Transpose \
 937          (*(PyObject * (*)(PyArrayObject *, PyArray_Dims *)) \
 938           PyArray_API[123])
 939  #define PyArray_TakeFrom \
 940          (*(PyObject * (*)(PyArrayObject *, PyObject *, int, PyArrayObject *, NPY_CLIPMODE)) \
 941           PyArray_API[124])
 942  #define PyArray_PutTo \
 943          (*(PyObject * (*)(PyArrayObject *, PyObject*, PyObject *, NPY_CLIPMODE)) \
 944           PyArray_API[125])
 945  #define PyArray_PutMask \
 946          (*(PyObject * (*)(PyArrayObject *, PyObject*, PyObject*)) \
 947           PyArray_API[126])
 948  #define PyArray_Repeat \
 949          (*(PyObject * (*)(PyArrayObject *, PyObject *, int)) \
 950           PyArray_API[127])
 951  #define PyArray_Choose \
 952          (*(PyObject * (*)(PyArrayObject *, PyObject *, PyArrayObject *, NPY_CLIPMODE)) \
 953           PyArray_API[128])
 954  #define PyArray_Sort \
 955          (*(int (*)(PyArrayObject *, int, NPY_SORTKIND)) \
 956           PyArray_API[129])
 957  #define PyArray_ArgSort \
 958          (*(PyObject * (*)(PyArrayObject *, int, NPY_SORTKIND)) \
 959           PyArray_API[130])
 960  #define PyArray_SearchSorted \
 961          (*(PyObject * (*)(PyArrayObject *, PyObject *, NPY_SEARCHSIDE, PyObject *)) \
 962           PyArray_API[131])
 963  #define PyArray_ArgMax \
 964          (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \
 965           PyArray_API[132])
 966  #define PyArray_ArgMin \
 967          (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \
 968           PyArray_API[133])
 969  #define PyArray_Reshape \
 970          (*(PyObject * (*)(PyArrayObject *, PyObject *)) \
 971           PyArray_API[134])
 972  #define PyArray_Newshape \
 973          (*(PyObject * (*)(PyArrayObject *, PyArray_Dims *, NPY_ORDER)) \
 974           PyArray_API[135])
 975  #define PyArray_Squeeze \
 976          (*(PyObject * (*)(PyArrayObject *)) \
 977           PyArray_API[136])
 978  #define PyArray_View \
 979          (*(PyObject * (*)(PyArrayObject *, PyArray_Descr *, PyTypeObject *)) \
 980           PyArray_API[137])
 981  #define PyArray_SwapAxes \
 982          (*(PyObject * (*)(PyArrayObject *, int, int)) \
 983           PyArray_API[138])
 984  #define PyArray_Max \
 985          (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \
 986           PyArray_API[139])
 987  #define PyArray_Min \
 988          (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \
 989           PyArray_API[140])
 990  #define PyArray_Ptp \
 991          (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \
 992           PyArray_API[141])
 993  #define PyArray_Mean \
 994          (*(PyObject * (*)(PyArrayObject *, int, int, PyArrayObject *)) \
 995           PyArray_API[142])
 996  #define PyArray_Trace \
 997          (*(PyObject * (*)(PyArrayObject *, int, int, int, int, PyArrayObject *)) \
 998           PyArray_API[143])
 999  #define PyArray_Diagonal \
1000          (*(PyObject * (*)(PyArrayObject *, int, int, int)) \
1001           PyArray_API[144])
1002  #define PyArray_Clip \
1003          (*(PyObject * (*)(PyArrayObject *, PyObject *, PyObject *, PyArrayObject *)) \
1004           PyArray_API[145])
1005  #define PyArray_Conjugate \
1006          (*(PyObject * (*)(PyArrayObject *, PyArrayObject *)) \
1007           PyArray_API[146])
1008  #define PyArray_Nonzero \
1009          (*(PyObject * (*)(PyArrayObject *)) \
1010           PyArray_API[147])
1011  #define PyArray_Std \
1012          (*(PyObject * (*)(PyArrayObject *, int, int, PyArrayObject *, int)) \
1013           PyArray_API[148])
1014  #define PyArray_Sum \
1015          (*(PyObject * (*)(PyArrayObject *, int, int, PyArrayObject *)) \
1016           PyArray_API[149])
1017  #define PyArray_CumSum \
1018          (*(PyObject * (*)(PyArrayObject *, int, int, PyArrayObject *)) \
1019           PyArray_API[150])
1020  #define PyArray_Prod \
1021          (*(PyObject * (*)(PyArrayObject *, int, int, PyArrayObject *)) \
1022           PyArray_API[151])
1023  #define PyArray_CumProd \
1024          (*(PyObject * (*)(PyArrayObject *, int, int, PyArrayObject *)) \
1025           PyArray_API[152])
1026  #define PyArray_All \
1027          (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \
1028           PyArray_API[153])
1029  #define PyArray_Any \
1030          (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \
1031           PyArray_API[154])
1032  #define PyArray_Compress \
1033          (*(PyObject * (*)(PyArrayObject *, PyObject *, int, PyArrayObject *)) \
1034           PyArray_API[155])
1035  #define PyArray_Flatten \
1036          (*(PyObject * (*)(PyArrayObject *, NPY_ORDER)) \
1037           PyArray_API[156])
1038  #define PyArray_Ravel \
1039          (*(PyObject * (*)(PyArrayObject *, NPY_ORDER)) \
1040           PyArray_API[157])
1041  #define PyArray_MultiplyList \
1042          (*(npy_intp (*)(npy_intp const *, int)) \
1043           PyArray_API[158])
1044  #define PyArray_MultiplyIntList \
1045          (*(int (*)(int const *, int)) \
1046           PyArray_API[159])
1047  #define PyArray_GetPtr \
1048          (*(void * (*)(PyArrayObject *, npy_intp const*)) \
1049           PyArray_API[160])
1050  #define PyArray_CompareLists \
1051          (*(int (*)(npy_intp const *, npy_intp const *, int)) \
1052           PyArray_API[161])
1053  #define PyArray_AsCArray \
1054          (*(int (*)(PyObject **, void *, npy_intp *, int, PyArray_Descr*)) \
1055           PyArray_API[162])
1056  #define PyArray_As1D \
1057          (*(int (*)(PyObject **NPY_UNUSED(op), char **NPY_UNUSED(ptr), int *NPY_UNUSED(d1), int NPY_UNUSED(typecode))) \
1058           PyArray_API[163])
1059  #define PyArray_As2D \
1060          (*(int (*)(PyObject **NPY_UNUSED(op), char ***NPY_UNUSED(ptr), int *NPY_UNUSED(d1), int *NPY_UNUSED(d2), int NPY_UNUSED(typecode))) \
1061           PyArray_API[164])
1062  #define PyArray_Free \
1063          (*(int (*)(PyObject *, void *)) \
1064           PyArray_API[165])
1065  #define PyArray_Converter \
1066          (*(int (*)(PyObject *, PyObject **)) \
1067           PyArray_API[166])
1068  #define PyArray_IntpFromSequence \
1069          (*(int (*)(PyObject *, npy_intp *, int)) \
1070           PyArray_API[167])
1071  #define PyArray_Concatenate \
1072          (*(PyObject * (*)(PyObject *, int)) \
1073           PyArray_API[168])
1074  #define PyArray_InnerProduct \
1075          (*(PyObject * (*)(PyObject *, PyObject *)) \
1076           PyArray_API[169])
1077  #define PyArray_MatrixProduct \
1078          (*(PyObject * (*)(PyObject *, PyObject *)) \
1079           PyArray_API[170])
1080  #define PyArray_CopyAndTranspose \
1081          (*(PyObject * (*)(PyObject *)) \
1082           PyArray_API[171])
1083  #define PyArray_Correlate \
1084          (*(PyObject * (*)(PyObject *, PyObject *, int)) \
1085           PyArray_API[172])
1086  #define PyArray_TypestrConvert \
1087          (*(int (*)(int, int)) \
1088           PyArray_API[173])
1089  #define PyArray_DescrConverter \
1090          (*(int (*)(PyObject *, PyArray_Descr **)) \
1091           PyArray_API[174])
1092  #define PyArray_DescrConverter2 \
1093          (*(int (*)(PyObject *, PyArray_Descr **)) \
1094           PyArray_API[175])
1095  #define PyArray_IntpConverter \
1096          (*(int (*)(PyObject *, PyArray_Dims *)) \
1097           PyArray_API[176])
1098  #define PyArray_BufferConverter \
1099          (*(int (*)(PyObject *, PyArray_Chunk *)) \
1100           PyArray_API[177])
1101  #define PyArray_AxisConverter \
1102          (*(int (*)(PyObject *, int *)) \
1103           PyArray_API[178])
1104  #define PyArray_BoolConverter \
1105          (*(int (*)(PyObject *, npy_bool *)) \
1106           PyArray_API[179])
1107  #define PyArray_ByteorderConverter \
1108          (*(int (*)(PyObject *, char *)) \
1109           PyArray_API[180])
1110  #define PyArray_OrderConverter \
1111          (*(int (*)(PyObject *, NPY_ORDER *)) \
1112           PyArray_API[181])
1113  #define PyArray_EquivTypes \
1114          (*(unsigned char (*)(PyArray_Descr *, PyArray_Descr *)) \
1115           PyArray_API[182])
1116  #define PyArray_Zeros \
1117          (*(PyObject * (*)(int, npy_intp const *, PyArray_Descr *, int)) \
1118           PyArray_API[183])
1119  #define PyArray_Empty \
1120          (*(PyObject * (*)(int, npy_intp const *, PyArray_Descr *, int)) \
1121           PyArray_API[184])
1122  #define PyArray_Where \
1123          (*(PyObject * (*)(PyObject *, PyObject *, PyObject *)) \
1124           PyArray_API[185])
1125  #define PyArray_Arange \
1126          (*(PyObject * (*)(double, double, double, int)) \
1127           PyArray_API[186])
1128  #define PyArray_ArangeObj \
1129          (*(PyObject * (*)(PyObject *, PyObject *, PyObject *, PyArray_Descr *)) \
1130           PyArray_API[187])
1131  #define PyArray_SortkindConverter \
1132          (*(int (*)(PyObject *, NPY_SORTKIND *)) \
1133           PyArray_API[188])
1134  #define PyArray_LexSort \
1135          (*(PyObject * (*)(PyObject *, int)) \
1136           PyArray_API[189])
1137  #define PyArray_Round \
1138          (*(PyObject * (*)(PyArrayObject *, int, PyArrayObject *)) \
1139           PyArray_API[190])
1140  #define PyArray_EquivTypenums \
1141          (*(unsigned char (*)(int, int)) \
1142           PyArray_API[191])
1143  #define PyArray_RegisterDataType \
1144          (*(int (*)(PyArray_Descr *)) \
1145           PyArray_API[192])
1146  #define PyArray_RegisterCastFunc \
1147          (*(int (*)(PyArray_Descr *, int, PyArray_VectorUnaryFunc *)) \
1148           PyArray_API[193])
1149  #define PyArray_RegisterCanCast \
1150          (*(int (*)(PyArray_Descr *, int, NPY_SCALARKIND)) \
1151           PyArray_API[194])
1152  #define PyArray_InitArrFuncs \
1153          (*(void (*)(PyArray_ArrFuncs *)) \
1154           PyArray_API[195])
1155  #define PyArray_IntTupleFromIntp \
1156          (*(PyObject * (*)(int, npy_intp const *)) \
1157           PyArray_API[196])
1158  #define PyArray_TypeNumFromName \
1159          (*(int (*)(char const *)) \
1160           PyArray_API[197])
1161  #define PyArray_ClipmodeConverter \
1162          (*(int (*)(PyObject *, NPY_CLIPMODE *)) \
1163           PyArray_API[198])
1164  #define PyArray_OutputConverter \
1165          (*(int (*)(PyObject *, PyArrayObject **)) \
1166           PyArray_API[199])
1167  #define PyArray_BroadcastToShape \
1168          (*(PyObject * (*)(PyObject *, npy_intp *, int)) \
1169           PyArray_API[200])
1170  #define _PyArray_SigintHandler \
1171          (*(void (*)(int)) \
1172           PyArray_API[201])
1173  #define _PyArray_GetSigintBuf \
1174          (*(void* (*)(void)) \
1175           PyArray_API[202])
1176  #define PyArray_DescrAlignConverter \
1177          (*(int (*)(PyObject *, PyArray_Descr **)) \
1178           PyArray_API[203])
1179  #define PyArray_DescrAlignConverter2 \
1180          (*(int (*)(PyObject *, PyArray_Descr **)) \
1181           PyArray_API[204])
1182  #define PyArray_SearchsideConverter \
1183          (*(int (*)(PyObject *, void *)) \
1184           PyArray_API[205])
1185  #define PyArray_CheckAxis \
1186          (*(PyObject * (*)(PyArrayObject *, int *, int)) \
1187           PyArray_API[206])
1188  #define PyArray_OverflowMultiplyList \
1189          (*(npy_intp (*)(npy_intp const *, int)) \
1190           PyArray_API[207])
1191  #define PyArray_CompareString \
1192          (*(int (*)(const char *, const char *, size_t)) \
1193           PyArray_API[208])
1194  #define PyArray_MultiIterFromObjects \
1195          (*(PyObject* (*)(PyObject **, int, int, ...)) \
1196           PyArray_API[209])
1197  #define PyArray_GetEndianness \
1198          (*(int (*)(void)) \
1199           PyArray_API[210])
1200  #define PyArray_GetNDArrayCFeatureVersion \
1201          (*(unsigned int (*)(void)) \
1202           PyArray_API[211])
1203  #define PyArray_Correlate2 \
1204          (*(PyObject * (*)(PyObject *, PyObject *, int)) \
1205           PyArray_API[212])
1206  #define PyArray_NeighborhoodIterNew \
1207          (*(PyObject* (*)(PyArrayIterObject *, const npy_intp *, int, PyArrayObject*)) \
1208           PyArray_API[213])
1209  #define PyTimeIntegerArrType_Type (*(PyTypeObject *)PyArray_API[214])
1210  #define PyDatetimeArrType_Type (*(PyTypeObject *)PyArray_API[215])
1211  #define PyTimedeltaArrType_Type (*(PyTypeObject *)PyArray_API[216])
1212  #define PyHalfArrType_Type (*(PyTypeObject *)PyArray_API[217])
1213  #define NpyIter_Type (*(PyTypeObject *)PyArray_API[218])
1214  #define PyArray_SetDatetimeParseFunction \
1215          (*(void (*)(PyObject *NPY_UNUSED(op))) \
1216           PyArray_API[219])
1217  #define PyArray_DatetimeToDatetimeStruct \
1218          (*(void (*)(npy_datetime NPY_UNUSED(val), NPY_DATETIMEUNIT NPY_UNUSED(fr), npy_datetimestruct *)) \
1219           PyArray_API[220])
1220  #define PyArray_TimedeltaToTimedeltaStruct \
1221          (*(void (*)(npy_timedelta NPY_UNUSED(val), NPY_DATETIMEUNIT NPY_UNUSED(fr), npy_timedeltastruct *)) \
1222           PyArray_API[221])
1223  #define PyArray_DatetimeStructToDatetime \
1224          (*(npy_datetime (*)(NPY_DATETIMEUNIT NPY_UNUSED(fr), npy_datetimestruct *NPY_UNUSED(d))) \
1225           PyArray_API[222])
1226  #define PyArray_TimedeltaStructToTimedelta \
1227          (*(npy_datetime (*)(NPY_DATETIMEUNIT NPY_UNUSED(fr), npy_timedeltastruct *NPY_UNUSED(d))) \
1228           PyArray_API[223])
1229  #define NpyIter_New \
1230          (*(NpyIter * (*)(PyArrayObject *, npy_uint32, NPY_ORDER, NPY_CASTING, PyArray_Descr*)) \
1231           PyArray_API[224])
1232  #define NpyIter_MultiNew \
1233          (*(NpyIter * (*)(int, PyArrayObject **, npy_uint32, NPY_ORDER, NPY_CASTING, npy_uint32 *, PyArray_Descr **)) \
1234           PyArray_API[225])
1235  #define NpyIter_AdvancedNew \
1236          (*(NpyIter * (*)(int, PyArrayObject **, npy_uint32, NPY_ORDER, NPY_CASTING, npy_uint32 *, PyArray_Descr **, int, int **, npy_intp *, npy_intp)) \
1237           PyArray_API[226])
1238  #define NpyIter_Copy \
1239          (*(NpyIter * (*)(NpyIter *)) \
1240           PyArray_API[227])
1241  #define NpyIter_Deallocate \
1242          (*(int (*)(NpyIter *)) \
1243           PyArray_API[228])
1244  #define NpyIter_HasDelayedBufAlloc \
1245          (*(npy_bool (*)(NpyIter *)) \
1246           PyArray_API[229])
1247  #define NpyIter_HasExternalLoop \
1248          (*(npy_bool (*)(NpyIter *)) \
1249           PyArray_API[230])
1250  #define NpyIter_EnableExternalLoop \
1251          (*(int (*)(NpyIter *)) \
1252           PyArray_API[231])
1253  #define NpyIter_GetInnerStrideArray \
1254          (*(npy_intp * (*)(NpyIter *)) \
1255           PyArray_API[232])
1256  #define NpyIter_GetInnerLoopSizePtr \
1257          (*(npy_intp * (*)(NpyIter *)) \
1258           PyArray_API[233])
1259  #define NpyIter_Reset \
1260          (*(int (*)(NpyIter *, char **)) \
1261           PyArray_API[234])
1262  #define NpyIter_ResetBasePointers \
1263          (*(int (*)(NpyIter *, char **, char **)) \
1264           PyArray_API[235])
1265  #define NpyIter_ResetToIterIndexRange \
1266          (*(int (*)(NpyIter *, npy_intp, npy_intp, char **)) \
1267           PyArray_API[236])
1268  #define NpyIter_GetNDim \
1269          (*(int (*)(NpyIter *)) \
1270           PyArray_API[237])
1271  #define NpyIter_GetNOp \
1272          (*(int (*)(NpyIter *)) \
1273           PyArray_API[238])
1274  #define NpyIter_GetIterNext \
1275          (*(NpyIter_IterNextFunc * (*)(NpyIter *, char **)) \
1276           PyArray_API[239])
1277  #define NpyIter_GetIterSize \
1278          (*(npy_intp (*)(NpyIter *)) \
1279           PyArray_API[240])
1280  #define NpyIter_GetIterIndexRange \
1281          (*(void (*)(NpyIter *, npy_intp *, npy_intp *)) \
1282           PyArray_API[241])
1283  #define NpyIter_GetIterIndex \
1284          (*(npy_intp (*)(NpyIter *)) \
1285           PyArray_API[242])
1286  #define NpyIter_GotoIterIndex \
1287          (*(int (*)(NpyIter *, npy_intp)) \
1288           PyArray_API[243])
1289  #define NpyIter_HasMultiIndex \
1290          (*(npy_bool (*)(NpyIter *)) \
1291           PyArray_API[244])
1292  #define NpyIter_GetShape \
1293          (*(int (*)(NpyIter *, npy_intp *)) \
1294           PyArray_API[245])
1295  #define NpyIter_GetGetMultiIndex \
1296          (*(NpyIter_GetMultiIndexFunc * (*)(NpyIter *, char **)) \
1297           PyArray_API[246])
1298  #define NpyIter_GotoMultiIndex \
1299          (*(int (*)(NpyIter *, npy_intp const *)) \
1300           PyArray_API[247])
1301  #define NpyIter_RemoveMultiIndex \
1302          (*(int (*)(NpyIter *)) \
1303           PyArray_API[248])
1304  #define NpyIter_HasIndex \
1305          (*(npy_bool (*)(NpyIter *)) \
1306           PyArray_API[249])
1307  #define NpyIter_IsBuffered \
1308          (*(npy_bool (*)(NpyIter *)) \
1309           PyArray_API[250])
1310  #define NpyIter_IsGrowInner \
1311          (*(npy_bool (*)(NpyIter *)) \
1312           PyArray_API[251])
1313  #define NpyIter_GetBufferSize \
1314          (*(npy_intp (*)(NpyIter *)) \
1315           PyArray_API[252])
1316  #define NpyIter_GetIndexPtr \
1317          (*(npy_intp * (*)(NpyIter *)) \
1318           PyArray_API[253])
1319  #define NpyIter_GotoIndex \
1320          (*(int (*)(NpyIter *, npy_intp)) \
1321           PyArray_API[254])
1322  #define NpyIter_GetDataPtrArray \
1323          (*(char ** (*)(NpyIter *)) \
1324           PyArray_API[255])
1325  #define NpyIter_GetDescrArray \
1326          (*(PyArray_Descr ** (*)(NpyIter *)) \
1327           PyArray_API[256])
1328  #define NpyIter_GetOperandArray \
1329          (*(PyArrayObject ** (*)(NpyIter *)) \
1330           PyArray_API[257])
1331  #define NpyIter_GetIterView \
1332          (*(PyArrayObject * (*)(NpyIter *, npy_intp)) \
1333           PyArray_API[258])
1334  #define NpyIter_GetReadFlags \
1335          (*(void (*)(NpyIter *, char *)) \
1336           PyArray_API[259])
1337  #define NpyIter_GetWriteFlags \
1338          (*(void (*)(NpyIter *, char *)) \
1339           PyArray_API[260])
1340  #define NpyIter_DebugPrint \
1341          (*(void (*)(NpyIter *)) \
1342           PyArray_API[261])
1343  #define NpyIter_IterationNeedsAPI \
1344          (*(npy_bool (*)(NpyIter *)) \
1345           PyArray_API[262])
1346  #define NpyIter_GetInnerFixedStrideArray \
1347          (*(void (*)(NpyIter *, npy_intp *)) \
1348           PyArray_API[263])
1349  #define NpyIter_RemoveAxis \
1350          (*(int (*)(NpyIter *, int)) \
1351           PyArray_API[264])
1352  #define NpyIter_GetAxisStrideArray \
1353          (*(npy_intp * (*)(NpyIter *, int)) \
1354           PyArray_API[265])
1355  #define NpyIter_RequiresBuffering \
1356          (*(npy_bool (*)(NpyIter *)) \
1357           PyArray_API[266])
1358  #define NpyIter_GetInitialDataPtrArray \
1359          (*(char ** (*)(NpyIter *)) \
1360           PyArray_API[267])
1361  #define NpyIter_CreateCompatibleStrides \
1362          (*(int (*)(NpyIter *, npy_intp, npy_intp *)) \
1363           PyArray_API[268])
1364  #define PyArray_CastingConverter \
1365          (*(int (*)(PyObject *, NPY_CASTING *)) \
1366           PyArray_API[269])
1367  #define PyArray_CountNonzero \
1368          (*(npy_intp (*)(PyArrayObject *)) \
1369           PyArray_API[270])
1370  #define PyArray_PromoteTypes \
1371          (*(PyArray_Descr * (*)(PyArray_Descr *, PyArray_Descr *)) \
1372           PyArray_API[271])
1373  #define PyArray_MinScalarType \
1374          (*(PyArray_Descr * (*)(PyArrayObject *)) \
1375           PyArray_API[272])
1376  #define PyArray_ResultType \
1377          (*(PyArray_Descr * (*)(npy_intp, PyArrayObject *arrs[], npy_intp, PyArray_Descr *descrs[])) \
1378           PyArray_API[273])
1379  #define PyArray_CanCastArrayTo \
1380          (*(npy_bool (*)(PyArrayObject *, PyArray_Descr *, NPY_CASTING)) \
1381           PyArray_API[274])
1382  #define PyArray_CanCastTypeTo \
1383          (*(npy_bool (*)(PyArray_Descr *, PyArray_Descr *, NPY_CASTING)) \
1384           PyArray_API[275])
1385  #define PyArray_EinsteinSum \
1386          (*(PyArrayObject * (*)(char *, npy_intp, PyArrayObject **, PyArray_Descr *, NPY_ORDER, NPY_CASTING, PyArrayObject *)) \
1387           PyArray_API[276])
1388  #define PyArray_NewLikeArray \
1389          (*(PyObject * (*)(PyArrayObject *, NPY_ORDER, PyArray_Descr *, int)) \
1390           PyArray_API[277])
1391  #define PyArray_GetArrayParamsFromObject \
1392          (*(int (*)(PyObject *NPY_UNUSED(op), PyArray_Descr *NPY_UNUSED(requested_dtype), npy_bool NPY_UNUSED(writeable), PyArray_Descr **NPY_UNUSED(out_dtype), int *NPY_UNUSED(out_ndim), npy_intp *NPY_UNUSED(out_dims), PyArrayObject **NPY_UNUSED(out_arr), PyObject *NPY_UNUSED(context))) \
1393           PyArray_API[278])
1394  #define PyArray_ConvertClipmodeSequence \
1395          (*(int (*)(PyObject *, NPY_CLIPMODE *, int)) \
1396           PyArray_API[279])
1397  #define PyArray_MatrixProduct2 \
1398          (*(PyObject * (*)(PyObject *, PyObject *, PyArrayObject*)) \
1399           PyArray_API[280])
1400  #define NpyIter_IsFirstVisit \
1401          (*(npy_bool (*)(NpyIter *, int)) \
1402           PyArray_API[281])
1403  #define PyArray_SetBaseObject \
1404          (*(int (*)(PyArrayObject *, PyObject *)) \
1405           PyArray_API[282])
1406  #define PyArray_CreateSortedStridePerm \
1407          (*(void (*)(int, npy_intp const *, npy_stride_sort_item *)) \
1408           PyArray_API[283])
1409  #define PyArray_RemoveAxesInPlace \
1410          (*(void (*)(PyArrayObject *, const npy_bool *)) \
1411           PyArray_API[284])
1412  #define PyArray_DebugPrint \
1413          (*(void (*)(PyArrayObject *)) \
1414           PyArray_API[285])
1415  #define PyArray_FailUnlessWriteable \
1416          (*(int (*)(PyArrayObject *, const char *)) \
1417           PyArray_API[286])
1418  #define PyArray_SetUpdateIfCopyBase \
1419          (*(int (*)(PyArrayObject *, PyArrayObject *)) \
1420           PyArray_API[287])
1421  #define PyDataMem_NEW \
1422          (*(void * (*)(size_t)) \
1423           PyArray_API[288])
1424  #define PyDataMem_FREE \
1425          (*(void (*)(void *)) \
1426           PyArray_API[289])
1427  #define PyDataMem_RENEW \
1428          (*(void * (*)(void *, size_t)) \
1429           PyArray_API[290])
1430  #define PyDataMem_SetEventHook \
1431          (*(PyDataMem_EventHookFunc * (*)(PyDataMem_EventHookFunc *, void *, void **)) \
1432           PyArray_API[291])
1433  #define NPY_DEFAULT_ASSIGN_CASTING (*(NPY_CASTING *)PyArray_API[292])
1434  #define PyArray_MapIterSwapAxes \
1435          (*(void (*)(PyArrayMapIterObject *, PyArrayObject **, int)) \
1436           PyArray_API[293])
1437  #define PyArray_MapIterArray \
1438          (*(PyObject * (*)(PyArrayObject *, PyObject *)) \
1439           PyArray_API[294])
1440  #define PyArray_MapIterNext \
1441          (*(void (*)(PyArrayMapIterObject *)) \
1442           PyArray_API[295])
1443  #define PyArray_Partition \
1444          (*(int (*)(PyArrayObject *, PyArrayObject *, int, NPY_SELECTKIND)) \
1445           PyArray_API[296])
1446  #define PyArray_ArgPartition \
1447          (*(PyObject * (*)(PyArrayObject *, PyArrayObject *, int, NPY_SELECTKIND)) \
1448           PyArray_API[297])
1449  #define PyArray_SelectkindConverter \
1450          (*(int (*)(PyObject *, NPY_SELECTKIND *)) \
1451           PyArray_API[298])
1452  #define PyDataMem_NEW_ZEROED \
1453          (*(void * (*)(size_t, size_t)) \
1454           PyArray_API[299])
1455  #define PyArray_CheckAnyScalarExact \
1456          (*(int (*)(PyObject *)) \
1457           PyArray_API[300])
1458  #define PyArray_MapIterArrayCopyIfOverlap \
1459          (*(PyObject * (*)(PyArrayObject *, PyObject *, int, PyArrayObject *)) \
1460           PyArray_API[301])
1461  #define PyArray_ResolveWritebackIfCopy \
1462          (*(int (*)(PyArrayObject *)) \
1463           PyArray_API[302])
1464  #define PyArray_SetWritebackIfCopyBase \
1465          (*(int (*)(PyArrayObject *, PyArrayObject *)) \
1466           PyArray_API[303])
1467  #define PyDataMem_SetHandler \
1468          (*(PyObject * (*)(PyObject *)) \
1469           PyArray_API[304])
1470  #define PyDataMem_GetHandler \
1471          (*(PyObject * (*)(void)) \
1472           PyArray_API[305])
1473  #define PyDataMem_DefaultHandler (*(PyObject* *)PyArray_API[306])
1474  
1475  #if !defined(NO_IMPORT_ARRAY) && !defined(NO_IMPORT)
1476  static int
1477  _import_array(void)
1478  {
1479    int st;
1480    PyObject *numpy = PyImport_ImportModule("numpy.core._multiarray_umath");
1481    PyObject *c_api = NULL;
1482  
1483    if (numpy == NULL) {
1484        return -1;
1485    }
1486    c_api = PyObject_GetAttrString(numpy, "_ARRAY_API");
1487    Py_DECREF(numpy);
1488    if (c_api == NULL) {
1489        PyErr_SetString(PyExc_AttributeError, "_ARRAY_API not found");
1490        return -1;
1491    }
1492  
1493    if (!PyCapsule_CheckExact(c_api)) {
1494        PyErr_SetString(PyExc_RuntimeError, "_ARRAY_API is not PyCapsule object");
1495        Py_DECREF(c_api);
1496        return -1;
1497    }
1498    PyArray_API = (void **)PyCapsule_GetPointer(c_api, NULL);
1499    Py_DECREF(c_api);
1500    if (PyArray_API == NULL) {
1501        PyErr_SetString(PyExc_RuntimeError, "_ARRAY_API is NULL pointer");
1502        return -1;
1503    }
1504  
1505    /* Perform runtime check of C API version */
1506    if (NPY_VERSION != PyArray_GetNDArrayCVersion()) {
1507        PyErr_Format(PyExc_RuntimeError, "module compiled against "\
1508               "ABI version 0x%x but this version of numpy is 0x%x", \
1509               (int) NPY_VERSION, (int) PyArray_GetNDArrayCVersion());
1510        return -1;
1511    }
1512    if (NPY_FEATURE_VERSION > PyArray_GetNDArrayCFeatureVersion()) {
1513        PyErr_Format(PyExc_RuntimeError, "module compiled against "\
1514               "API version 0x%x but this version of numpy is 0x%x . "\
1515               "Check the section C-API incompatibility at the "\
1516               "Troubleshooting ImportError section at "\
1517               "https://numpy.org/devdocs/user/troubleshooting-importerror.html"\
1518               "#c-api-incompatibility "\
1519                "for indications on how to solve this problem .", \
1520               (int) NPY_FEATURE_VERSION, (int) PyArray_GetNDArrayCFeatureVersion());
1521        return -1;
1522    }
1523  
1524    /*
1525     * Perform runtime check of endianness and check it matches the one set by
1526     * the headers (npy_endian.h) as a safeguard
1527     */
1528    st = PyArray_GetEndianness();
1529    if (st == NPY_CPU_UNKNOWN_ENDIAN) {
1530        PyErr_SetString(PyExc_RuntimeError,
1531                        "FATAL: module compiled as unknown endian");
1532        return -1;
1533    }
1534  #if NPY_BYTE_ORDER == NPY_BIG_ENDIAN
1535    if (st != NPY_CPU_BIG) {
1536        PyErr_SetString(PyExc_RuntimeError,
1537                        "FATAL: module compiled as big endian, but "
1538                        "detected different endianness at runtime");
1539        return -1;
1540    }
1541  #elif NPY_BYTE_ORDER == NPY_LITTLE_ENDIAN
1542    if (st != NPY_CPU_LITTLE) {
1543        PyErr_SetString(PyExc_RuntimeError,
1544                        "FATAL: module compiled as little endian, but "
1545                        "detected different endianness at runtime");
1546        return -1;
1547    }
1548  #endif
1549  
1550    return 0;
1551  }
1552  
1553  #define import_array() {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return NULL; } }
1554  
1555  #define import_array1(ret) {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return ret; } }
1556  
1557  #define import_array2(msg, ret) {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, msg); return ret; } }
1558  
1559  #endif
1560  
1561  #endif