-rw-r--r-- 633 ntruprime-20201007/Reference_Implementation/kem/sntrup761/subroutines/crypto_sort_uint32.c
#include "crypto_sort_uint32.h" static void minmax(uint32 *x,uint32 *y) { uint32 xi = *x; uint32 yi = *y; uint32 xy = xi ^ yi; uint32 c = yi - xi; c ^= xy & (c ^ yi ^ 0x80000000); c >>= 31; c = -c; c &= xy; *x = xi ^ c; *y = yi ^ c; } void crypto_sort_uint32(uint32 *x,int n) { int top,p,q,i; if (n < 2) return; top = 1; while (top < n - top) top += top; for (p = top;p > 0;p >>= 1) { for (i = 0;i < n - p;++i) if (!(i & p)) minmax(x + i,x + i + p); for (q = top;q > p;q >>= 1) for (i = 0;i < n - q;++i) if (!(i & p)) minmax(x + i + p,x + i + q); } }