diff --git a/ypsu.cpp b/ypsu.cpp index 312b728..0f778d7 100644 --- a/ypsu.cpp +++ b/ypsu.cpp @@ -150,7 +150,7 @@ static inline uint32_t morgrab(uint32_t elem) noexcept { } template static inline void mormord_sort_impl(uint32_t *a, int n) noexcept { - // Early-exit the edge-case + /* Edge-case */ if(n == 0) return; /* Preparation */ @@ -187,16 +187,13 @@ static inline void mormord_sort_impl(uint32_t *a, int n) noexcept { uint32_t reali = 0; #pragma GCC unroll 16 for(int i = 0; i < 256; ++i) { + radics[i] += prev; if(radics[i] != 0) { - radics[i] += prev; real_radics[reali] = prev; real_radics[reali + 1] = radics[i]; - prev = radics[i]; reali += 2; - } else { - radics[i] += prev; - prev = radics[i]; } + prev = radics[i]; }