Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::UltraCircuitBuilder_< ExecutionTrace_ >::cached_partial_non_native_field_multiplication Struct Reference

Used to store instructions to create partial_non_native_field_multiplication gates. We want to cache these (and remove duplicates) as the stdlib code can end up multiplying the same inputs repeatedly. More...

#include <ultra_circuit_builder.hpp>

Classes

struct  Hash
 

Public Member Functions

bool operator== (const cached_partial_non_native_field_multiplication &other) const
 
bool operator< (const cached_partial_non_native_field_multiplication &other) const
 

Static Public Member Functions

static void deduplicate (std::vector< cached_partial_non_native_field_multiplication > &vec, UltraCircuitBuilder_< ExecutionTrace > *circuit_builder)
 Dedupilcate cache entries which represent multiplication of the same witnesses.
 

Public Attributes

std::array< uint32_t, 4 > a
 
std::array< uint32_t, 4 > b
 
uint32_t lo_0
 
uint32_t hi_0
 
uint32_t hi_1
 

Detailed Description

template<typename ExecutionTrace_>
struct bb::UltraCircuitBuilder_< ExecutionTrace_ >::cached_partial_non_native_field_multiplication

Used to store instructions to create partial_non_native_field_multiplication gates. We want to cache these (and remove duplicates) as the stdlib code can end up multiplying the same inputs repeatedly.

Definition at line 105 of file ultra_circuit_builder.hpp.

Member Function Documentation

◆ deduplicate()

template<typename ExecutionTrace_ >
static void bb::UltraCircuitBuilder_< ExecutionTrace_ >::cached_partial_non_native_field_multiplication::deduplicate ( std::vector< cached_partial_non_native_field_multiplication > &  vec,
UltraCircuitBuilder_< ExecutionTrace > *  circuit_builder 
)
inlinestatic

Dedupilcate cache entries which represent multiplication of the same witnesses.

While a and b witness vectors are the same, lo_0, hi_0 and hi_1 can vary, so we have to connect them or there is a vulnerability

Parameters
vec
circuit_builder

Definition at line 131 of file ultra_circuit_builder.hpp.

◆ operator<()

template<typename ExecutionTrace_ >
bool bb::UltraCircuitBuilder_< ExecutionTrace_ >::cached_partial_non_native_field_multiplication::operator< ( const cached_partial_non_native_field_multiplication other) const
inline

Definition at line 154 of file ultra_circuit_builder.hpp.

◆ operator==()

template<typename ExecutionTrace_ >
bool bb::UltraCircuitBuilder_< ExecutionTrace_ >::cached_partial_non_native_field_multiplication::operator== ( const cached_partial_non_native_field_multiplication other) const
inline

Definition at line 112 of file ultra_circuit_builder.hpp.

Member Data Documentation

◆ a

template<typename ExecutionTrace_ >
std::array<uint32_t, 4> bb::UltraCircuitBuilder_< ExecutionTrace_ >::cached_partial_non_native_field_multiplication::a

Definition at line 106 of file ultra_circuit_builder.hpp.

◆ b

template<typename ExecutionTrace_ >
std::array<uint32_t, 4> bb::UltraCircuitBuilder_< ExecutionTrace_ >::cached_partial_non_native_field_multiplication::b

Definition at line 107 of file ultra_circuit_builder.hpp.

◆ hi_0

template<typename ExecutionTrace_ >
uint32_t bb::UltraCircuitBuilder_< ExecutionTrace_ >::cached_partial_non_native_field_multiplication::hi_0

Definition at line 109 of file ultra_circuit_builder.hpp.

◆ hi_1

template<typename ExecutionTrace_ >
uint32_t bb::UltraCircuitBuilder_< ExecutionTrace_ >::cached_partial_non_native_field_multiplication::hi_1

Definition at line 110 of file ultra_circuit_builder.hpp.

◆ lo_0

template<typename ExecutionTrace_ >
uint32_t bb::UltraCircuitBuilder_< ExecutionTrace_ >::cached_partial_non_native_field_multiplication::lo_0

Definition at line 108 of file ultra_circuit_builder.hpp.


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