little refactor to maybe avoid manual digit misery

This commit is contained in:
Richard Thier 2021-03-11 22:19:29 +01:00
parent e076ab662b
commit c7fe2f0507

View File

@ -36,22 +36,11 @@ namespace MagyarSort {
static inline void calcOccurences(uint32_t arr[], size_t size, size_t *radicsOut) {
for(size_t i = 0; i < size; ++i) {
auto d0 = getDigit<0>(arr[i]);
auto d1 = getDigit<1>(arr[i]);
auto d2 = getDigit<2>(arr[i]);
auto d3 = getDigit<3>(arr[i]);
/* // DEBUG:
printf("d0:%u, arr[i]: %u\n", d0, arr[i]);
printf("d1:%u, arr[i]: %u\n", d1, arr[i]);
printf("d2:%u, arr[i]: %u\n", d2, arr[i]);
printf("d3:%u, arr[i]: %u\n", d3, arr[i]);
*/
++radicsOut[d0];
++radicsOut[d1 + DIGIT_RANGE * 1];
++radicsOut[d2 + DIGIT_RANGE * 2];
++radicsOut[d3 + DIGIT_RANGE * 3];
// TODO: manual digits!
++radicsOut[getDigit<0>(arr[i]) + DIGIT_RANGE * 0];
++radicsOut[getDigit<1>(arr[i]) + DIGIT_RANGE * 1];
++radicsOut[getDigit<2>(arr[i]) + DIGIT_RANGE * 2];
++radicsOut[getDigit<3>(arr[i]) + DIGIT_RANGE * 3];
}
}
@ -78,12 +67,14 @@ namespace MagyarSort {
// Calculate prefix sums
// TODO: Maybe should use better ILP here?
// but maybe this is more cache friendly?
// TODO: manual digits!
prefixSum<0>(radics);
prefixSum<1>(radics);
prefixSum<2>(radics);
prefixSum<3>(radics);
/* // DEBUG:
*/
for(size_t j = 0; j < DIGITS; ++j) {
printf("d%d: ", j);
for(size_t i = 0; i < DIGIT_RANGE; ++i) {
@ -91,7 +82,6 @@ namespace MagyarSort {
}
printf("\n\n");
}
*/
}
};