schwab: some buggy idea that segfaults - might simplify a lot instead

This commit is contained in:
Richard Thier 2025-05-08 23:09:37 +02:00
parent 6d8802f479
commit 6fcf79bee3

View File

@ -127,9 +127,30 @@ static inline void schwab_sort(
int r0 = schwab_pick_pivot(state, (high + 1) - low) + low;
int r1 = schwab_pick_pivot(state, (high + 1) - low) + low;
int plo = (r0 < r1) ? r0 : r1;
int phi = (r0 < r1) ? r1 : r0;
int pmid = schwab_pick_pivot(state, (phi + 1) - plo) + plo;
uint32_t k0 = array[r0];
uint32_t k1 = array[r1];
int plo = r0;
int phi = r1;
if(k0 > k1) {
plo = r1;
phi = r0;
uint32_t tmp = k0;
k0 = k1;
k1 = tmp;
}
int r2 = schwab_pick_pivot(state, (phi + 1) - plo) + plo;
uint32_t k2 = array[r2];
int pmid = r2;
if(k2 < k0) {
int tmp = plo;
plo = pmid;
pmid = tmp;
} else if(k2 > k1) {
int tmp = phi;
phi = pmid;
pmid = tmp;
}
schwab_partition(array, low, high, &plo, &pmid, &phi);