Skip to content

Commit bbe51bd

Browse files
authored
Merge pull request numpy#20364 from seberg/issue-19806
BUG: Relax unary ufunc (sqrt, etc.) stride assert
2 parents 20a2a70 + 10ac749 commit bbe51bd

File tree

3 files changed

+4
-4
lines changed

3 files changed

+4
-4
lines changed

numpy/core/src/umath/loops_trigonometric.dispatch.c.src

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_@func@)
209209
const npy_intp ssrc = steps[0] / lsize;
210210
const npy_intp sdst = steps[1] / lsize;
211211
npy_intp len = dimensions[0];
212-
assert(steps[0] % lsize == 0 && steps[1] % lsize == 0);
212+
assert(len <= 1 || (steps[0] % lsize == 0 && steps[1] % lsize == 0));
213213
#if NPY_SIMD_FMA3
214214
if (is_mem_overlap(src, steps[0], dst, steps[1], len) ||
215215
!npyv_loadable_stride_f32(ssrc) || !npyv_storable_stride_f32(sdst)

numpy/core/src/umath/loops_umath_fp.dispatch.c.src

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(@TYPE@_@func@)
9696
const npy_intp ssrc = steps[0] / lsize;
9797
const npy_intp sdst = steps[1] / lsize;
9898
const npy_intp len = dimensions[0];
99-
assert(steps[0] % lsize == 0 && steps[1] % lsize == 0);
99+
assert(len <= 1 || (steps[0] % lsize == 0 && steps[1] % lsize == 0));
100100
if (!is_mem_overlap(src, steps[0], dst, steps[1], len) &&
101101
npyv_loadable_stride_@sfx@(ssrc) &&
102102
npyv_storable_stride_@sfx@(sdst)) {
@@ -125,7 +125,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_@func@)
125125
const npy_intp ssrc = steps[0] / lsize;
126126
const npy_intp sdst = steps[1] / lsize;
127127
const npy_intp len = dimensions[0];
128-
assert(steps[0] % lsize == 0 && steps[1] % lsize == 0);
128+
assert(len <= 1 || (steps[0] % lsize == 0 && steps[1] % lsize == 0));
129129
if (!is_mem_overlap(src, steps[0], dst, steps[1], len) &&
130130
npyv_loadable_stride_f64(ssrc) &&
131131
npyv_storable_stride_f64(sdst)) {

numpy/core/src/umath/loops_unary_fp.dispatch.c.src

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(@TYPE@_@kind@)
263263
npy_intp len = dimensions[0];
264264
#if @VCHK@
265265
const int lsize = sizeof(npyv_lanetype_@sfx@);
266-
assert(src_step % lsize == 0 && dst_step % lsize == 0);
266+
assert(len <= 1 || (src_step % lsize == 0 && dst_step % lsize == 0));
267267
if (is_mem_overlap(src, src_step, dst, dst_step, len)) {
268268
goto no_unroll;
269269
}

0 commit comments

Comments
 (0)