Added dependency-injected shuffle function
This commit is contained in:
+17
-7
@@ -1,17 +1,27 @@
|
||||
#include <stddef.h>
|
||||
|
||||
void keke_swap(void *a, void *b, size_t size) {
|
||||
char *aa = a;
|
||||
char *bb = b;
|
||||
for(size_t i = 0; i < size; i++) {
|
||||
if(a == b) return;
|
||||
size_t i = 0;
|
||||
int *ia = a;
|
||||
int *ib = b;
|
||||
for(i = 0; i < (size / sizeof(int)); ++i) {
|
||||
ia[i] ^= ib[i];
|
||||
ib[i] ^= ia[i];
|
||||
ia[i] ^= ib[i];
|
||||
}
|
||||
size %= sizeof(int);
|
||||
char *aa = a + (i * sizeof(int));
|
||||
char *bb = b + (i * sizeof(int));
|
||||
for(i = 0; i < size; i++) {
|
||||
aa[i] ^= bb[i];
|
||||
bb[i] ^= aa[i];
|
||||
aa[i] ^= bb[i];
|
||||
}
|
||||
}
|
||||
|
||||
size_t next_power_of_two(size_t s) {
|
||||
size_t t = 1;
|
||||
while(t < s) t <<= 1;
|
||||
return t;
|
||||
size_t bit_ceil(size_t s) {
|
||||
size_t t = 1;
|
||||
while(t < s) t <<= 1;
|
||||
return t;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user