diff options
| author | Nathan Goldbaum <nathan.goldbaum@gmail.com> | 2023-05-02 15:17:03 -0600 |
|---|---|---|
| committer | Nathan Goldbaum <nathan.goldbaum@gmail.com> | 2023-05-02 15:17:03 -0600 |
| commit | da3ca6b3276ed669eac998360727d1719aa92157 (patch) | |
| tree | 15361587cba120e23b2a0467a36aa9e04f2969ff /numpy/core | |
| parent | 4a630dca297c72581599f05801b162ffc0046011 (diff) | |
| download | numpy-da3ca6b3276ed669eac998360727d1719aa92157.tar.gz | |
MAINT: refactor to use chunked casts
Diffstat (limited to 'numpy/core')
| -rw-r--r-- | numpy/core/src/multiarray/item_selection.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/numpy/core/src/multiarray/item_selection.c b/numpy/core/src/multiarray/item_selection.c index 1fe051789..9da1ce413 100644 --- a/numpy/core/src/multiarray/item_selection.c +++ b/numpy/core/src/multiarray/item_selection.c @@ -768,7 +768,7 @@ NPY_NO_EXPORT PyObject * PyArray_Repeat(PyArrayObject *aop, PyObject *op, int axis) { npy_intp *counts; - npy_intp n, n_outer, i, j, k, chunk; + npy_intp n, n_outer, i, j, k, chunk, elsize, nel; npy_intp total = 0; npy_bool broadcast = NPY_FALSE; PyArrayObject *repeats = NULL; @@ -839,10 +839,12 @@ PyArray_Repeat(PyArrayObject *aop, PyObject *op, int axis) new_data = PyArray_DATA(ret); old_data = PyArray_DATA(aop); - chunk = PyArray_DESCR(aop)->elsize; + nel = 1; + elsize = PyArray_DESCR(aop)->elsize; for(i = axis + 1; i < PyArray_NDIM(aop); i++) { - chunk *= PyArray_DIMS(aop)[i]; + nel *= PyArray_DIMS(aop)[i]; } + chunk = nel*elsize; n_outer = 1; for (i = 0; i < axis; i++) { @@ -851,7 +853,7 @@ PyArray_Repeat(PyArrayObject *aop, PyObject *op, int axis) if (needs_refcounting) { if (PyArray_GetDTypeTransferFunction( - 1, chunk, chunk, PyArray_DESCR(aop), PyArray_DESCR(aop), 0, + 1, elsize, elsize, PyArray_DESCR(aop), PyArray_DESCR(aop), 0, &cast_info, &flags) < 0) { goto fail; } @@ -866,10 +868,9 @@ PyArray_Repeat(PyArrayObject *aop, PyObject *op, int axis) } else { char *data[2] = {old_data, new_data}; - npy_intp strides[2] = {chunk, chunk}; - npy_intp one = 1; - if (cast_info.func(&cast_info.context, data, &one, strides, - cast_info.auxdata) < 0) { + npy_intp strides[2] = {elsize, elsize}; + if (cast_info.func(&cast_info.context, data, &nel, + strides, cast_info.auxdata) < 0) { goto fail; } } |
