MCPcopy Create free account
hub / github.com/numpy/numpy / npy_force_collapse

Function npy_force_collapse

numpy/core/src/npysort/timsort.cpp:2227–2268  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2225}
2226
2227static int
2228npy_force_collapse(char *arr, run *stack, npy_intp *stack_ptr,
2229 buffer_char *buffer, size_t len, PyArray_CompareFunc *cmp,
2230 PyArrayObject *py_arr)
2231{
2232 int ret;
2233 npy_intp top = *stack_ptr;
2234
2235 while (2 < top) {
2236 if (stack[top - 3].l <= stack[top - 1].l) {
2237 ret = npy_merge_at(arr, stack, top - 3, buffer, len, cmp, py_arr);
2238
2239 if (NPY_UNLIKELY(ret < 0)) {
2240 return ret;
2241 }
2242
2243 stack[top - 3].l += stack[top - 2].l;
2244 stack[top - 2] = stack[top - 1];
2245 --top;
2246 }
2247 else {
2248 ret = npy_merge_at(arr, stack, top - 2, buffer, len, cmp, py_arr);
2249
2250 if (NPY_UNLIKELY(ret < 0)) {
2251 return ret;
2252 }
2253
2254 stack[top - 2].l += stack[top - 1].l;
2255 --top;
2256 }
2257 }
2258
2259 if (1 < top) {
2260 ret = npy_merge_at(arr, stack, top - 2, buffer, len, cmp, py_arr);
2261
2262 if (NPY_UNLIKELY(ret < 0)) {
2263 return ret;
2264 }
2265 }
2266
2267 return 0;
2268}
2269
2270NPY_NO_EXPORT int
2271npy_timsort(void *start, npy_intp num, void *varr)

Callers 1

npy_timsortFunction · 0.85

Calls 1

npy_merge_atFunction · 0.85

Tested by

no test coverage detected