Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
straus_scalar_slice.test.cpp
Go to the documentation of this file.
7#include <gtest/gtest.h>
8
9using namespace bb;
10
11namespace {
13}
14
15template <class Builder> class StrausScalarSliceTest : public ::testing::Test {
16 public:
21 using Curve = typename Builder::EmbeddedCurve;
23};
24
25using CircuitTypes = ::testing::Types<bb::UltraCircuitBuilder, bb::MegaCircuitBuilder>;
27
29
31
35TYPED_TEST(StrausScalarSliceTest, TestSliceReadAndReconstruction)
36{
37 using Builder = TypeParam;
38 using cycle_scalar = typename TestFixture::cycle_scalar;
39 using straus_scalar_slices = typename TestFixture::straus_scalar_slices;
40 using ScalarField = typename TestFixture::ScalarField;
41
43
44 auto scalar_val = ScalarField::random_element(&engine);
45 auto scalar = cycle_scalar::from_witness(&builder, scalar_val);
46
47 const size_t table_bits = 4;
48 straus_scalar_slices slices(&builder, scalar, table_bits);
49
50 // Read all slices and verify reconstruction
51 uint64_t max_slice_val = (1ULL << table_bits) - 1;
52 uint256_t reconstructed = 0;
53 size_t i = 0;
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);
58 i++;
59 }
60
61 EXPECT_EQ(ScalarField(reconstructed), scalar_val);
62 check_circuit_and_gate_count(builder, 51);
63}
typename Curve::ScalarField ScalarField
typename Builder::EmbeddedCurve Curve
bb::fr ScalarField
Definition bn254.hpp:18
Represents a member of the Grumpkin curve scalar field (i.e. BN254 base field).
straus_scalar_slices decomposes an input scalar into bit-slices of size table_bits....
AluTraceBuilder builder
Definition alu.test.cpp:123
testing::Types< bb::UltraCircuitBuilder, bb::MegaCircuitBuilder > CircuitTypes
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
Definition engine.cpp:190
void check_circuit_and_gate_count(Builder &builder, uint32_t expected_gates_without_base)
Utility function for gate count checking and circuit verification.
Entry point for Barretenberg command-line interface.
TYPED_TEST_SUITE(ShpleminiTest, TestSettings)
C slice(C const &container, size_t start)
Definition container.hpp:9
TYPED_TEST(ShpleminiTest, CorrectnessOfMultivariateClaimBatching)
#define STANDARD_TESTING_TAGS