|
numpy 2.0.0
|
#include "Python.h"#include "structmember.h"#include <numpy/ndarrayobject.h>#include <numpy/npy_3kcompat.h>#include "convert_datatype.h"#include "lowlevel_strided_loops.h"Go to the source code of this file.
Data Structures | |
| struct | NpyIter_InternalOnly |
| struct | NpyIter_BD |
| struct | NpyIter_AD |
Defines | |
| #define | PY_SSIZE_T_CLEAN |
| #define | NPY_NO_DEPRECATED_API |
| #define | _MULTIARRAYMODULE |
| #define | NPY_IT_CONSTRUCTION_TIMING 0 |
| #define | NPY_IT_TIME_POINT(var) |
| #define | NPY_IT_DBG_TRACING 0 |
| #define | NPY_IT_DBG_PRINT(s) |
| #define | NPY_IT_DBG_PRINT1(s, p1) |
| #define | NPY_IT_DBG_PRINT2(s, p1, p2) |
| #define | NPY_IT_DBG_PRINT3(s, p1, p2, p3) |
| #define | NPY_INTP_ALIGNED(size) ((size + 0x7)&(-0x8)) |
| #define | NPY_ITFLAG_IDENTPERM 0x0001 |
| #define | NPY_ITFLAG_NEGPERM 0x0002 |
| #define | NPY_ITFLAG_HASINDEX 0x0004 |
| #define | NPY_ITFLAG_HASMULTIINDEX 0x0008 |
| #define | NPY_ITFLAG_FORCEDORDER 0x0010 |
| #define | NPY_ITFLAG_EXLOOP 0x0020 |
| #define | NPY_ITFLAG_RANGE 0x0040 |
| #define | NPY_ITFLAG_BUFFER 0x0080 |
| #define | NPY_ITFLAG_GROWINNER 0x0100 |
| #define | NPY_ITFLAG_ONEITERATION 0x0200 |
| #define | NPY_ITFLAG_DELAYBUF 0x0400 |
| #define | NPY_ITFLAG_NEEDSAPI 0x0800 |
| #define | NPY_ITFLAG_REDUCE 0x1000 |
| #define | NPY_ITFLAG_REUSE_REDUCE_LOOPS 0x2000 |
| #define | NPY_OP_ITFLAG_WRITE 0x01 |
| #define | NPY_OP_ITFLAG_READ 0x02 |
| #define | NPY_OP_ITFLAG_CAST 0x04 |
| #define | NPY_OP_ITFLAG_BUFNEVER 0x08 |
| #define | NPY_OP_ITFLAG_ALIGNED 0x10 |
| #define | NPY_OP_ITFLAG_REDUCE 0x20 |
| #define | NPY_OP_ITFLAG_VIRTUAL 0x40 |
| #define | NPY_OP_ITFLAG_WRITEMASKED 0x80 |
| #define | NIT_PERM_SIZEOF(itflags, ndim, nop) NPY_INTP_ALIGNED(NPY_MAXDIMS) |
| #define | NIT_DTYPES_SIZEOF(itflags, ndim, nop) ((NPY_SIZEOF_INTP)*(nop)) |
| #define | NIT_RESETDATAPTR_SIZEOF(itflags, ndim, nop) ((NPY_SIZEOF_INTP)*(nop+1)) |
| #define | NIT_BASEOFFSETS_SIZEOF(itflags, ndim, nop) ((NPY_SIZEOF_INTP)*(nop+1)) |
| #define | NIT_OPERANDS_SIZEOF(itflags, ndim, nop) ((NPY_SIZEOF_INTP)*(nop)) |
| #define | NIT_OPITFLAGS_SIZEOF(itflags, ndim, nop) (NPY_INTP_ALIGNED(nop)) |
| #define | NIT_BUFFERDATA_SIZEOF(itflags, ndim, nop) ((itflags&NPY_ITFLAG_BUFFER) ? ((NPY_SIZEOF_INTP)*(6 + 9*nop)) : 0) |
| #define | NIT_PERM_OFFSET() (0) |
| #define | NIT_DTYPES_OFFSET(itflags, ndim, nop) |
| #define | NIT_RESETDATAPTR_OFFSET(itflags, ndim, nop) |
| #define | NIT_BASEOFFSETS_OFFSET(itflags, ndim, nop) |
| #define | NIT_OPERANDS_OFFSET(itflags, ndim, nop) |
| #define | NIT_OPITFLAGS_OFFSET(itflags, ndim, nop) |
| #define | NIT_BUFFERDATA_OFFSET(itflags, ndim, nop) |
| #define | NIT_AXISDATA_OFFSET(itflags, ndim, nop) |
| #define | NIT_ITFLAGS(iter) ((iter)->itflags) |
| #define | NIT_NDIM(iter) ((iter)->ndim) |
| #define | NIT_NOP(iter) ((iter)->nop) |
| #define | NIT_MASKOP(iter) ((iter)->maskop) |
| #define | NIT_ITERSIZE(iter) (iter->itersize) |
| #define | NIT_ITERSTART(iter) (iter->iterstart) |
| #define | NIT_ITEREND(iter) (iter->iterend) |
| #define | NIT_ITERINDEX(iter) (iter->iterindex) |
| #define | NIT_PERM(iter) |
| #define | NIT_DTYPES(iter) |
| #define | NIT_RESETDATAPTR(iter) |
| #define | NIT_BASEOFFSETS(iter) |
| #define | NIT_OPERANDS(iter) |
| #define | NIT_OPITFLAGS(iter) |
| #define | NIT_BUFFERDATA(iter) |
| #define | NIT_AXISDATA(iter) |
| #define | NBF_BUFFERSIZE(bufferdata) ((bufferdata)->buffersize) |
| #define | NBF_SIZE(bufferdata) ((bufferdata)->size) |
| #define | NBF_BUFITEREND(bufferdata) ((bufferdata)->bufiterend) |
| #define | NBF_REDUCE_POS(bufferdata) ((bufferdata)->reduce_pos) |
| #define | NBF_REDUCE_OUTERSIZE(bufferdata) ((bufferdata)->reduce_outersize) |
| #define | NBF_REDUCE_OUTERDIM(bufferdata) ((bufferdata)->reduce_outerdim) |
| #define | NBF_STRIDES(bufferdata) |
| #define | NBF_PTRS(bufferdata) |
| #define | NBF_REDUCE_OUTERSTRIDES(bufferdata) |
| #define | NBF_REDUCE_OUTERPTRS(bufferdata) |
| #define | NBF_READTRANSFERFN(bufferdata) |
| #define | NBF_READTRANSFERDATA(bufferdata) |
| #define | NBF_WRITETRANSFERFN(bufferdata) |
| #define | NBF_WRITETRANSFERDATA(bufferdata) |
| #define | NBF_BUFFERS(bufferdata) |
| #define | NAD_SHAPE(axisdata) ((axisdata)->shape) |
| #define | NAD_INDEX(axisdata) ((axisdata)->index) |
| #define | NAD_STRIDES(axisdata) |
| #define | NAD_PTRS(axisdata) |
| #define | NAD_NSTRIDES() ((nop) + ((itflags&NPY_ITFLAG_HASINDEX) ? 1 : 0)) |
| #define | NIT_AXISDATA_SIZEOF(itflags, ndim, nop) |
| #define | NIT_INDEX_AXISDATA(axisdata, index) |
| #define | NIT_ADVANCE_AXISDATA(axisdata, count) axisdata = NIT_INDEX_AXISDATA(axisdata, count) |
| #define | NIT_SIZEOF_ITERATOR(itflags, ndim, nop) |
Typedefs | |
| typedef struct NpyIter_AD | NpyIter_AxisData |
| typedef struct NpyIter_BD | NpyIter_BufferData |
Functions | |
| NPY_NO_EXPORT void | npyiter_coalesce_axes (NpyIter *iter) |
| NPY_NO_EXPORT int | npyiter_allocate_buffers (NpyIter *iter, char **errmsg) |
| NPY_NO_EXPORT void | npyiter_goto_iterindex (NpyIter *iter, npy_intp iterindex) |
| NPY_NO_EXPORT void | npyiter_copy_from_buffers (NpyIter *iter) |
| NPY_NO_EXPORT void | npyiter_copy_to_buffers (NpyIter *iter, char **prev_dataptrs) |
| #define _MULTIARRAYMODULE |
| #define NAD_INDEX | ( | axisdata | ) | ((axisdata)->index) |
Referenced by npyiter_coalesce_axes(), and npyiter_iternext_sizeone().
| #define NAD_NSTRIDES | ( | ) | ((nop) + ((itflags&NPY_ITFLAG_HASINDEX) ? 1 : 0)) |
| #define NAD_PTRS | ( | axisdata | ) |
((char **) \
&(axisdata)->ad_flexdata + 1*(nop+1))
| #define NAD_SHAPE | ( | axisdata | ) | ((axisdata)->shape) |
| #define NAD_STRIDES | ( | axisdata | ) |
( \
&(axisdata)->ad_flexdata + 0)
Referenced by npyiter_coalesce_axes().
| #define NBF_BUFFERS | ( | bufferdata | ) |
((char **) \
(&(bufferdata)->bd_flexdata + 8*(nop)))
Referenced by NpyIter_Copy().
| #define NBF_BUFFERSIZE | ( | bufferdata | ) | ((bufferdata)->buffersize) |
| #define NBF_BUFITEREND | ( | bufferdata | ) | ((bufferdata)->bufiterend) |
Referenced by NpyIter_EnableExternalLoop(), and NpyIter_GotoIndex().
| #define NBF_PTRS | ( | bufferdata | ) |
((char **) \
(&(bufferdata)->bd_flexdata + 1*(nop)))
Referenced by NpyIter_GetBufferSize(), and NpyIter_GotoIndex().
| #define NBF_READTRANSFERDATA | ( | bufferdata | ) |
((NpyAuxData **) \ (&(bufferdata)->bd_flexdata + 5*(nop)))
Referenced by NpyIter_Copy().
| #define NBF_READTRANSFERFN | ( | bufferdata | ) |
((PyArray_StridedTransferFn **) \ (&(bufferdata)->bd_flexdata + 4*(nop)))
| #define NBF_REDUCE_OUTERDIM | ( | bufferdata | ) | ((bufferdata)->reduce_outerdim) |
| #define NBF_REDUCE_OUTERPTRS | ( | bufferdata | ) |
((char **) \
(&(bufferdata)->bd_flexdata + 3*(nop)))
| #define NBF_REDUCE_OUTERSIZE | ( | bufferdata | ) | ((bufferdata)->reduce_outersize) |
Referenced by npyiter_coalesce_axes().
| #define NBF_REDUCE_OUTERSTRIDES | ( | bufferdata | ) |
( \
(&(bufferdata)->bd_flexdata + 2*(nop)))
| #define NBF_REDUCE_POS | ( | bufferdata | ) | ((bufferdata)->reduce_pos) |
| #define NBF_SIZE | ( | bufferdata | ) | ((bufferdata)->size) |
Referenced by npyiter_coalesce_axes(), NpyIter_EnableExternalLoop(), NpyIter_GetIndexPtr(), and NpyIter_GotoIndex().
| #define NBF_STRIDES | ( | bufferdata | ) |
( \
&(bufferdata)->bd_flexdata + 0)
Referenced by NpyIter_GotoIndex().
| #define NBF_WRITETRANSFERDATA | ( | bufferdata | ) |
((NpyAuxData **) \ (&(bufferdata)->bd_flexdata + 7*(nop)))
Referenced by NpyIter_Copy().
| #define NBF_WRITETRANSFERFN | ( | bufferdata | ) |
((PyArray_StridedTransferFn **) \ (&(bufferdata)->bd_flexdata + 6*(nop)))
| #define NIT_ADVANCE_AXISDATA | ( | axisdata, | |
| count | |||
| ) | axisdata = NIT_INDEX_AXISDATA(axisdata, count) |
Referenced by npyiter_flip_negative_strides().
| #define NIT_AXISDATA | ( | iter | ) |
((NpyIter_AxisData *)( \ &(iter)->iter_flexdata + NIT_AXISDATA_OFFSET(itflags, ndim, nop)))
Referenced by npyiter_flip_negative_strides(), and NpyIter_GetIndexPtr().
| #define NIT_AXISDATA_OFFSET | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) |
(NIT_BUFFERDATA_OFFSET(itflags, ndim, nop) + \ NIT_BUFFERDATA_SIZEOF(itflags, ndim, nop))
| #define NIT_AXISDATA_SIZEOF | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) |
(( \ \
1 + \ \
1 + \ \
2*((nop)+1) \
)*NPY_SIZEOF_INTP )
Referenced by npyiter_flip_negative_strides().
| #define NIT_BASEOFFSETS | ( | iter | ) |
((npy_intp *)( \ &(iter)->iter_flexdata + NIT_BASEOFFSETS_OFFSET(itflags, ndim, nop)))
Referenced by NpyIter_GetAxisStrideArray().
| #define NIT_BASEOFFSETS_OFFSET | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) |
(NIT_RESETDATAPTR_OFFSET(itflags, ndim, nop) + \ NIT_RESETDATAPTR_SIZEOF(itflags, ndim, nop))
| #define NIT_BASEOFFSETS_SIZEOF | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) | ((NPY_SIZEOF_INTP)*(nop+1)) |
| #define NIT_BUFFERDATA | ( | iter | ) |
((NpyIter_BufferData *)( \ &(iter)->iter_flexdata + NIT_BUFFERDATA_OFFSET(itflags, ndim, nop)))
Referenced by NpyIter_Copy(), NpyIter_EnableExternalLoop(), NpyIter_GetBufferSize(), NpyIter_GetIndexPtr(), and NpyIter_GotoIndex().
| #define NIT_BUFFERDATA_OFFSET | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) |
(NIT_OPITFLAGS_OFFSET(itflags, ndim, nop) + \ NIT_OPITFLAGS_SIZEOF(itflags, ndim, nop))
| #define NIT_BUFFERDATA_SIZEOF | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) | ((itflags&NPY_ITFLAG_BUFFER) ? ((NPY_SIZEOF_INTP)*(6 + 9*nop)) : 0) |
| #define NIT_DTYPES | ( | iter | ) |
((PyArray_Descr **)( \ &(iter)->iter_flexdata + NIT_DTYPES_OFFSET(itflags, ndim, nop)))
Referenced by NpyIter_Copy().
| #define NIT_DTYPES_OFFSET | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) |
(NIT_PERM_OFFSET() + \ NIT_PERM_SIZEOF(itflags, ndim, nop))
| #define NIT_DTYPES_SIZEOF | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) | ((NPY_SIZEOF_INTP)*(nop)) |
| #define NIT_INDEX_AXISDATA | ( | axisdata, | |
| index | |||
| ) |
((NpyIter_AxisData *) \ (((char *)(axisdata)) + (index)*sizeof_axisdata))
| #define NIT_ITEREND | ( | iter | ) | (iter->iterend) |
Referenced by NpyIter_EnableExternalLoop(), and NpyIter_HasDelayedBufAlloc().
| #define NIT_ITERINDEX | ( | iter | ) | (iter->iterindex) |
Referenced by NpyIter_EnableExternalLoop(), NpyIter_GotoIndex(), and NpyIter_New().
| #define NIT_ITERSIZE | ( | iter | ) | (iter->itersize) |
| #define NIT_ITERSTART | ( | iter | ) | (iter->iterstart) |
Referenced by NpyIter_EnableExternalLoop(), and NpyIter_HasDelayedBufAlloc().
| #define NIT_ITFLAGS | ( | iter | ) | ((iter)->itflags) |
Referenced by NpyIter_Copy(), NpyIter_EnableExternalLoop(), npyiter_flip_negative_strides(), NpyIter_GetIndexPtr(), NpyIter_GetIterIndex(), NpyIter_HasMultiIndex(), and NpyIter_IsGrowInner().
| #define NIT_MASKOP | ( | iter | ) | ((iter)->maskop) |
| #define NIT_NDIM | ( | iter | ) | ((iter)->ndim) |
Referenced by npyiter_flip_negative_strides(), and NpyIter_HasMultiIndex().
| #define NIT_NOP | ( | iter | ) | ((iter)->nop) |
| #define NIT_OPERANDS | ( | iter | ) |
((PyArrayObject **)( \ &(iter)->iter_flexdata + NIT_OPERANDS_OFFSET(itflags, ndim, nop)))
Referenced by NpyIter_Copy(), and NpyIter_GetShape().
| #define NIT_OPERANDS_OFFSET | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) |
(NIT_BASEOFFSETS_OFFSET(itflags, ndim, nop) + \ NIT_BASEOFFSETS_SIZEOF(itflags, ndim, nop))
| #define NIT_OPERANDS_SIZEOF | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) | ((NPY_SIZEOF_INTP)*(nop)) |
| #define NIT_OPITFLAGS | ( | iter | ) |
( \
&(iter)->iter_flexdata + NIT_OPITFLAGS_OFFSET(itflags, ndim, nop))
Referenced by NpyIter_GetDataPtrArray().
| #define NIT_OPITFLAGS_OFFSET | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) |
(NIT_OPERANDS_OFFSET(itflags, ndim, nop) + \ NIT_OPERANDS_SIZEOF(itflags, ndim, nop))
| #define NIT_OPITFLAGS_SIZEOF | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) | (NPY_INTP_ALIGNED(nop)) |
| #define NIT_PERM | ( | iter | ) |
((npy_int8 *)( \
&(iter)->iter_flexdata + NIT_PERM_OFFSET()))
Referenced by npyiter_flip_negative_strides().
| #define NIT_PERM_OFFSET | ( | ) | (0) |
| #define NIT_PERM_SIZEOF | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) | NPY_INTP_ALIGNED(NPY_MAXDIMS) |
| #define NIT_RESETDATAPTR | ( | iter | ) |
((char **)( \ &(iter)->iter_flexdata + NIT_RESETDATAPTR_OFFSET(itflags, ndim, nop)))
Referenced by NpyIter_GetIterIndexRange().
| #define NIT_RESETDATAPTR_OFFSET | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) |
(NIT_DTYPES_OFFSET(itflags, ndim, nop) + \ NIT_DTYPES_SIZEOF(itflags, ndim, nop))
| #define NIT_RESETDATAPTR_SIZEOF | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) | ((NPY_SIZEOF_INTP)*(nop+1)) |
| #define NIT_SIZEOF_ITERATOR | ( | itflags, | |
| ndim, | |||
| nop | |||
| ) |
( \
sizeof(struct NpyIter_InternalOnly) + \
NIT_AXISDATA_OFFSET(itflags, ndim, nop) + \
NIT_AXISDATA_SIZEOF(itflags, ndim, nop)*(ndim))
| #define NPY_INTP_ALIGNED | ( | size | ) | ((size + 0x7)&(-0x8)) |
| #define NPY_IT_CONSTRUCTION_TIMING 0 |
| #define NPY_IT_DBG_PRINT | ( | s | ) |
Referenced by npyiter_apply_forced_iteration_order().
| #define NPY_IT_DBG_PRINT1 | ( | s, | |
| p1 | |||
| ) |
Referenced by npyiter_coalesce_axes(), and npyiter_copy_to_buffers().
| #define NPY_IT_DBG_PRINT2 | ( | s, | |
| p1, | |||
| p2 | |||
| ) |
Referenced by npyiter_coalesce_axes().
| #define NPY_IT_DBG_PRINT3 | ( | s, | |
| p1, | |||
| p2, | |||
| p3 | |||
| ) |
Referenced by npyiter_flip_negative_strides().
| #define NPY_IT_DBG_TRACING 0 |
| #define NPY_IT_TIME_POINT | ( | var | ) |
| #define NPY_ITFLAG_BUFFER 0x0080 |
| #define NPY_ITFLAG_DELAYBUF 0x0400 |
| #define NPY_ITFLAG_EXLOOP 0x0020 |
| #define NPY_ITFLAG_FORCEDORDER 0x0010 |
| #define NPY_ITFLAG_GROWINNER 0x0100 |
| #define NPY_ITFLAG_HASINDEX 0x0004 |
| #define NPY_ITFLAG_HASMULTIINDEX 0x0008 |
| #define NPY_ITFLAG_IDENTPERM 0x0001 |
| #define NPY_ITFLAG_NEEDSAPI 0x0800 |
| #define NPY_ITFLAG_NEGPERM 0x0002 |
| #define NPY_ITFLAG_ONEITERATION 0x0200 |
| #define NPY_ITFLAG_RANGE 0x0040 |
| #define NPY_ITFLAG_REDUCE 0x1000 |
| #define NPY_ITFLAG_REUSE_REDUCE_LOOPS 0x2000 |
| #define NPY_NO_DEPRECATED_API |
| #define NPY_OP_ITFLAG_ALIGNED 0x10 |
| #define NPY_OP_ITFLAG_BUFNEVER 0x08 |
| #define NPY_OP_ITFLAG_CAST 0x04 |
| #define NPY_OP_ITFLAG_READ 0x02 |
| #define NPY_OP_ITFLAG_REDUCE 0x20 |
| #define NPY_OP_ITFLAG_VIRTUAL 0x40 |
| #define NPY_OP_ITFLAG_WRITE 0x01 |
Referenced by NpyIter_GetDataPtrArray().
| #define NPY_OP_ITFLAG_WRITEMASKED 0x80 |
| #define PY_SSIZE_T_CLEAN |
| typedef struct NpyIter_AD NpyIter_AxisData |
| typedef struct NpyIter_BD NpyIter_BufferData |
| NPY_NO_EXPORT int npyiter_allocate_buffers | ( | NpyIter * | iter, |
| char ** | errmsg | ||
| ) |
Referenced by NpyIter_EnableExternalLoop().
| NPY_NO_EXPORT void npyiter_coalesce_axes | ( | NpyIter * | iter | ) |
References NAD_INDEX, NAD_SHAPE, NAD_STRIDES, NBF_REDUCE_OUTERSIZE, NBF_SIZE, NPY_IT_DBG_PRINT1, NPY_IT_DBG_PRINT2, NPY_OP_ITFLAG_WRITEMASKED, and PyArray_TransferMaskedStridedToNDim().
| NPY_NO_EXPORT void npyiter_copy_from_buffers | ( | NpyIter * | iter | ) |
Referenced by NpyIter_EnableExternalLoop(), and NpyIter_GotoIndex().
| NPY_NO_EXPORT void npyiter_copy_to_buffers | ( | NpyIter * | iter, |
| char ** | prev_dataptrs | ||
| ) |
References _PyArray_Descr::elsize, and NPY_IT_DBG_PRINT1.
Referenced by NpyIter_EnableExternalLoop(), NpyIter_GotoIndex(), and NpyIter_New().
Referenced by NpyIter_EnableExternalLoop(), NpyIter_GotoIndex(), and NpyIter_New().