Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
UltraCircuitBuilderNonNative Class Reference

Test suite for UltraCircuitBuilder non-native field methods. More...

Inheritance diagram for UltraCircuitBuilderNonNative:

Classes

struct  AddSubData
 

Protected Types

using scaled_witness = std::pair< uint32_t, fr >
 
using add_simple = std::tuple< scaled_witness, scaled_witness, fr >
 

Static Protected Member Functions

static std::array< fr, 4 > random_limbs ()
 
static std::array< fr, 4 > split_into_limbs (const uint512_t &input)
 
static std::array< uint32_t, 4 > get_limb_witness_indices (UltraCircuitBuilder &builder, const std::array< fr, 4 > &limbs)
 
static std::array< uint32_t, 2 > create_non_native_multiplication (UltraCircuitBuilder &builder, const uint256_t &a, const uint256_t &b, const uint256_t &q, const uint256_t &r, const uint256_t &modulus)
 
static std::pair< uint256_t, uint256_tcompute_quotient_remainder (const uint256_t &a, const uint256_t &b, const uint256_t &modulus)
 
static AddSubData create_random_add_sub_data ()
 
static std::tuple< add_simple, add_simple, add_simple, add_simple, std::tuple< uint32_t, uint32_t, fr > > create_add_sub_inputs (UltraCircuitBuilder &builder, const AddSubData &data)
 
static std::array< uint32_t, 2 > create_and_queue_partial_multiplication (UltraCircuitBuilder &builder, const std::array< fr, 4 > &a_limbs, const std::array< fr, 4 > &b_limbs)
 
static std::pair< fr, frcompute_expected_partial_products (const std::array< fr, 4 > &a, const std::array< fr, 4 > &b)
 

Static Protected Attributes

static constexpr size_t LIMB_BITS = UltraCircuitBuilder::DEFAULT_NON_NATIVE_FIELD_LIMB_BITS
 
static const uint512_t BINARY_BASIS_MODULUS = uint512_t(1) << (LIMB_BITS * 4)
 
static constexpr size_t NNF_GATES_PER_PARTIAL_MUL = 4
 
static constexpr size_t NNF_ENSURE_NONZERO_PADDING = 2
 

Detailed Description

Test suite for UltraCircuitBuilder non-native field methods.

Methods under test:

evaluate_non_native_field_multiplication (full a*b = q*p + r computation) evaluate_non_native_field_addition (add two non-native field elements) evaluate_non_native_field_subtraction (subtract two non-native field elements) queue_partial_non_native_field_multiplication (partial multiplication with caching/deduplication) process_non_native_field_multiplications (finalization: process cached multiplications)

Definition at line 20 of file ultra_circuit_builder_nonnative.test.cpp.

Member Typedef Documentation

◆ add_simple

◆ scaled_witness

using UltraCircuitBuilderNonNative::scaled_witness = std::pair<uint32_t, fr>
protected

Definition at line 101 of file ultra_circuit_builder_nonnative.test.cpp.

Member Function Documentation

◆ compute_expected_partial_products()

static std::pair< fr, fr > UltraCircuitBuilderNonNative::compute_expected_partial_products ( const std::array< fr, 4 > &  a,
const std::array< fr, 4 > &  b 
)
inlinestaticprotected

Definition at line 182 of file ultra_circuit_builder_nonnative.test.cpp.

◆ compute_quotient_remainder()

static std::pair< uint256_t, uint256_t > UltraCircuitBuilderNonNative::compute_quotient_remainder ( const uint256_t a,
const uint256_t b,
const uint256_t modulus 
)
inlinestaticprotected

Definition at line 86 of file ultra_circuit_builder_nonnative.test.cpp.

◆ create_add_sub_inputs()

static std::tuple< add_simple, add_simple, add_simple, add_simple, std::tuple< uint32_t, uint32_t, fr > > UltraCircuitBuilderNonNative::create_add_sub_inputs ( UltraCircuitBuilder builder,
const AddSubData data 
)
inlinestaticprotected

Definition at line 133 of file ultra_circuit_builder_nonnative.test.cpp.

◆ create_and_queue_partial_multiplication()

static std::array< uint32_t, 2 > UltraCircuitBuilderNonNative::create_and_queue_partial_multiplication ( UltraCircuitBuilder builder,
const std::array< fr, 4 > &  a_limbs,
const std::array< fr, 4 > &  b_limbs 
)
inlinestaticprotected

Definition at line 155 of file ultra_circuit_builder_nonnative.test.cpp.

◆ create_non_native_multiplication()

static std::array< uint32_t, 2 > UltraCircuitBuilderNonNative::create_non_native_multiplication ( UltraCircuitBuilder builder,
const uint256_t a,
const uint256_t b,
const uint256_t q,
const uint256_t r,
const uint256_t modulus 
)
inlinestaticprotected

Definition at line 60 of file ultra_circuit_builder_nonnative.test.cpp.

◆ create_random_add_sub_data()

static AddSubData UltraCircuitBuilderNonNative::create_random_add_sub_data ( )
inlinestaticprotected

Definition at line 117 of file ultra_circuit_builder_nonnative.test.cpp.

◆ get_limb_witness_indices()

static std::array< uint32_t, 4 > UltraCircuitBuilderNonNative::get_limb_witness_indices ( UltraCircuitBuilder builder,
const std::array< fr, 4 > &  limbs 
)
inlinestaticprotected

Definition at line 48 of file ultra_circuit_builder_nonnative.test.cpp.

◆ random_limbs()

static std::array< fr, 4 > UltraCircuitBuilderNonNative::random_limbs ( )
inlinestaticprotected

Definition at line 31 of file ultra_circuit_builder_nonnative.test.cpp.

◆ split_into_limbs()

static std::array< fr, 4 > UltraCircuitBuilderNonNative::split_into_limbs ( const uint512_t input)
inlinestaticprotected

Definition at line 37 of file ultra_circuit_builder_nonnative.test.cpp.

Member Data Documentation

◆ BINARY_BASIS_MODULUS

const uint512_t UltraCircuitBuilderNonNative::BINARY_BASIS_MODULUS = uint512_t(1) << (LIMB_BITS * 4)
inlinestaticprotected

Definition at line 23 of file ultra_circuit_builder_nonnative.test.cpp.

◆ LIMB_BITS

constexpr size_t UltraCircuitBuilderNonNative::LIMB_BITS = UltraCircuitBuilder::DEFAULT_NON_NATIVE_FIELD_LIMB_BITS
staticconstexprprotected

Definition at line 22 of file ultra_circuit_builder_nonnative.test.cpp.

◆ NNF_ENSURE_NONZERO_PADDING

constexpr size_t UltraCircuitBuilderNonNative::NNF_ENSURE_NONZERO_PADDING = 2
staticconstexprprotected

Definition at line 28 of file ultra_circuit_builder_nonnative.test.cpp.

◆ NNF_GATES_PER_PARTIAL_MUL

constexpr size_t UltraCircuitBuilderNonNative::NNF_GATES_PER_PARTIAL_MUL = 4
staticconstexprprotected

Definition at line 26 of file ultra_circuit_builder_nonnative.test.cpp.


The documentation for this class was generated from the following file: