/* * Refresh: replace all used lit by a new literal * - lit[2i] and lit[2i+1] are refreshed in pairs */ static void refresh_random(uint32_t n) { uint32_t i; assert(2 <= n && n < MAX_SAMPLE); for (i=2; i<n; i += 2) { if (used[i] || used[i+1]) { lit[i] = fresh_lit(); lit[i+1] = not(lit[i]); used[i] = false; used[i+1] = false; } } }
/* * All constant shifts: 6bits */ static void all_shift_test6(void (*f)(uint32_t, literal_t *, literal_t *)) { literal_t a[6]; literal_t b[6]; uint32_t i, y; for (y=0; y<64; y++) { uint32_to_litarray(y, 6, b); for (i=0; i<6; i++) { a[i] = fresh_lit(); } f(6, a, b); } }
/* * All constant shifts: 4bits */ static void all_shift_test4(void (*f)(uint32_t, literal_t *, literal_t *)) { literal_t a[4]; literal_t b[4]; uint32_t i, y; for (y=0; y<16; y++) { uint32_to_litarray(y, 4, b); for (i=0; i<4; i++) { a[i] = fresh_lit(); } f(4, a, b); } }
/* * Create n distinct literals and store them in lit */ static void init_random(uint32_t n) { uint32_t i; assert(2 <= n && n < MAX_SAMPLE); lit[0] = true_literal; lit[1] = false_literal; for (i=2; i<n; i += 2) { lit[i] = fresh_lit(); lit[i+1] = not(lit[i]); } for (i=0; i<n; i++) { used[i] = false; } }
/* * Basic tests: one 4-bit input */ static void base_test4(void (*f)(uint32_t, literal_t *)) { literal_t a[4]; literal_t x; uint32_t i; printf("Size 4\n"); for (i=0; i<4; i++) { a[i] = false_literal; } f(4, a); for (i=0; i<4; i++) { a[i] = true_literal; } f(4, a); x = fresh_lit(); for (i=0; i<4; i++) { a[i] = x; } f(4, a); printf("\n"); }
/* * Basic test: two 4-bit input */ static void base_test4(void (*f)(uint32_t, literal_t *, literal_t *)) { literal_t a[4]; literal_t b[4]; uint32_t i; for (i=0; i<4; i++) { a[i] = false_literal; b[i] = fresh_lit(); } f(4, a, b); for (i=0; i<4; i++) { a[i] = fresh_lit(); b[i] = false_literal; } f(4, a, b); for (i=0; i<4; i++) { a[i] = true_literal; b[i] = fresh_lit(); } f(4, a, b); for (i=0; i<4; i++) { a[i] = fresh_lit(); b[i] = true_literal; } f(4, a, b); for (i=0; i<4; i++) { a[i] = fresh_lit(); b[i] = a[i]; } f(4, a, b); for (i=0; i<4; i++) { a[i] = false_literal; b[i] = fresh_lit(); } a[0] = true_literal; f(4, a, b); for (i=0; i<4; i++) { a[i] = fresh_lit(); b[i] = false_literal; } b[0] = true_literal; f(4, a, b); for (i=0; i<4; i++) { a[i] = false_literal; b[i] = fresh_lit(); } a[1] = true_literal; f(4, a, b); for (i=0; i<4; i++) { a[i] = fresh_lit(); b[i] = false_literal; } b[1] = true_literal; f(4, a, b); for (i=0; i<4; i++) { a[i] = false_literal; b[i] = fresh_lit(); } a[2] = true_literal; f(4, a, b); for (i=0; i<4; i++) { a[i] = fresh_lit(); b[i] = false_literal; } b[2] = true_literal; f(4, a, b); for (i=0; i<4; i++) { a[i] = false_literal; b[i] = fresh_lit(); } a[3] = true_literal; f(4, a, b); for (i=0; i<4; i++) { a[i] = fresh_lit(); b[i] = false_literal; } b[3] = true_literal; f(4, a, b); }