File tree Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Original file line number Diff line number Diff line change @@ -64,8 +64,7 @@ cdef int _from_input_shape_strides(
64
64
cdef int j
65
65
cdef bint all_incr = 1
66
66
cdef bint all_decr = 1
67
- cdef bint all_incr_modified = 0
68
- cdef bint all_decr_modified = 0
67
+ cdef bint strides_inspected = 0
69
68
cdef Py_ssize_t elem_count = 1
70
69
cdef Py_ssize_t min_shift = 0
71
70
cdef Py_ssize_t max_shift = 0
@@ -167,27 +166,33 @@ cdef int _from_input_shape_strides(
167
166
while (j < nd and shape_arr[j] == 1 ):
168
167
j = j + 1
169
168
if j < nd:
169
+ strides_inspected = 1
170
170
if all_incr:
171
- all_incr_modified = 1
172
171
all_incr = (
173
172
(strides_arr[i] > 0 ) and
174
173
(strides_arr[j] > 0 ) and
175
174
(strides_arr[i] <= strides_arr[j])
176
175
)
177
176
if all_decr:
178
- all_decr_modified = 1
179
177
all_decr = (
180
178
(strides_arr[i] > 0 ) and
181
179
(strides_arr[j] > 0 ) and
182
180
(strides_arr[i] >= strides_arr[j])
183
181
)
184
182
i = j
185
183
else :
184
+ if not strides_inspected:
185
+ # all dimensions have size 1 except
186
+ # dimension 'i'. Array is both C and F
187
+ # contiguous
188
+ strides_inspected = 1
189
+ all_incr = (strides_arr[i] == 1 )
190
+ all_decr = all_incr
186
191
break
187
192
# should only set contig flags on actually obtained
188
193
# values, rather than default values
189
- all_incr = all_incr and all_incr_modified
190
- all_decr = all_decr and all_decr_modified
194
+ all_incr = all_incr and strides_inspected
195
+ all_decr = all_decr and strides_inspected
191
196
if all_incr and all_decr:
192
197
contig[0 ] = (USM_ARRAY_C_CONTIGUOUS | USM_ARRAY_F_CONTIGUOUS)
193
198
elif all_incr:
You can’t perform that action at this time.
0 commit comments