11 #define sarray_permute_ PREFIXED_NAME(sarray_permute_)
12 #define sarray_permute_buf_ PREFIXED_NAME(sarray_permute_buf_)
16 char *
const ar =
A, *
const item =
work;
21 if(pi<0) { fperm[
i] = -pi-1;
continue; }
22 else if((
uint)pi==
i)
continue;
24 char *dst = ar+i*size, *src = ar+pi*size;
25 memcpy(item, dst, size);
28 memcpy(dst, src, size);
30 ppi=fperm[pi], fperm[pi]=-ppi-1, pi=ppi;
31 if((
uint)pi==i)
break;
34 memcpy(dst, item, size);
#define sarray_permute_buf_
#define buffer_reserve(b, max)
static size_t align_as_(size_t a, size_t n)
static double work[TNR *NS]
establishes some macros to establish naming conventions