38 using cycle_scalar =
typename TestFixture::cycle_scalar;
39 using straus_scalar_slices =
typename TestFixture::straus_scalar_slices;
40 using ScalarField =
typename TestFixture::ScalarField;
44 auto scalar_val = ScalarField::random_element(&
engine);
45 auto scalar = cycle_scalar::from_witness(&
builder, scalar_val);
47 const size_t table_bits = 4;
48 straus_scalar_slices slices(&
builder, scalar, table_bits);
51 uint64_t max_slice_val = (1ULL << table_bits) - 1;
54 for (
const auto [
slice, slice_native] :
zip_view(slices.slices, slices.slices_native)) {
55 EXPECT_EQ(
slice.get_value(), slice_native);
56 EXPECT_LE(slice_native, max_slice_val);
57 reconstructed +=
static_cast<uint256_t>(slice_native) << (i * table_bits);
61 EXPECT_EQ(ScalarField(reconstructed), scalar_val);
62 check_circuit_and_gate_count(
builder, 51);