/* Constant time version. */ static uint32_t single_sample_ct(uint64_t *in) { uint32_t index = 0, i; for (i = 0; i < 52; i++) { index = ct_select_u64(index, i, cmplt_ct(in, rlwe_table[i])); } return index; }
/* Constant time version. */ static uint32_t single_sample_ct(uint64_t *in) { uint32_t index = 0, i; for (i = 0; i < 52; i++) { uint32_t mask1, mask2; mask1 = cmplt_ct(in, rlwe_table[i]); mask1 = (uint32_t) (0 - (int32_t) mask1); mask2 = (~mask1); index = ((index & mask1) | (i & mask2)); } return index; }
static uint32_t single_sample(uint64_t *in) { uint32_t lower_index = 0, this_index = 32, upper_index = 64; int i; for (i = 0; i < 6; i++) { if (cmplt_ct(in, rlwe_table[this_index])) { upper_index = this_index; } else { lower_index = this_index; } this_index = (lower_index + upper_index) / 2; } return lower_index; }