Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
stdlib_bigfield_edge_cases< BigField > Class Template Reference
Inheritance diagram for stdlib_bigfield_edge_cases< BigField >:

Static Public Member Functions

static void test_larger_than_bigfield_allowed ()
 
static void test_reduction_check_works ()
 
static void test_reduction_works_on_limb_overflow ()
 
static void test_maximum_value_tracking_during_addition ()
 
static std::pair< fq_native, fq_ctget_random_witness (Builder *builder, bool reduce_input=false)
 
static void check_invariants (const fq_ct &field_element, const std::string &operation_name)
 
template<typename BinaryOp , typename NativeOp >
static void test_invariants_during_binary_operation (BinaryOp binary_op, NativeOp native_op, const std::string &operation_name, const bool skip_zero=false)
 
static void test_invariants_during_squaring ()
 
static void test_invariants_during_negation ()
 
static void test_assert_is_in_field ()
 
static void test_assert_is_in_field_fails ()
 
static void test_assert_less_than ()
 
static void test_assert_less_than_fails ()
 
static void test_reduce_mod_target_modulus ()
 
static void test_assert_equal_edge_case ()
 
static void test_divide_by_zero_fails ()
 

Static Public Attributes

static constexpr std::array< uint512_t, 5 > edge_case_values
 
static const std::array< uint512_t, 10 > values_larger_than_bigfield
 
static constexpr uint512_t reduction_upper_bound = uint512_t(1) << (fq_ct::modulus.get_msb() + 1)
 

Private Types

using Builder = builder_t< BigField >
 
using fr_ct = typename bb::stdlib::bn254< Builder >::ScalarField
 
using fq_native = bb::field< params_t< BigField > >
 
using fq_ct = BigField
 
using witness_ct = stdlib::witness_t< Builder >
 
using bool_ct = stdlib::bool_t< Builder >
 
using byte_array_ct = stdlib::byte_array< Builder >
 

Detailed Description

template<typename BigField>
class stdlib_bigfield_edge_cases< BigField >

Definition at line 62 of file bigfield_edge_cases.test.cpp.

Member Typedef Documentation

◆ bool_ct

template<typename BigField >
using stdlib_bigfield_edge_cases< BigField >::bool_ct = stdlib::bool_t<Builder>
private

Definition at line 69 of file bigfield_edge_cases.test.cpp.

◆ Builder

template<typename BigField >
using stdlib_bigfield_edge_cases< BigField >::Builder = builder_t<BigField>
private

Definition at line 64 of file bigfield_edge_cases.test.cpp.

◆ byte_array_ct

template<typename BigField >
using stdlib_bigfield_edge_cases< BigField >::byte_array_ct = stdlib::byte_array<Builder>
private

Definition at line 70 of file bigfield_edge_cases.test.cpp.

◆ fq_ct

template<typename BigField >
using stdlib_bigfield_edge_cases< BigField >::fq_ct = BigField
private

Definition at line 67 of file bigfield_edge_cases.test.cpp.

◆ fq_native

template<typename BigField >
using stdlib_bigfield_edge_cases< BigField >::fq_native = bb::field<params_t<BigField> >
private

Definition at line 66 of file bigfield_edge_cases.test.cpp.

◆ fr_ct

template<typename BigField >
using stdlib_bigfield_edge_cases< BigField >::fr_ct = typename bb::stdlib::bn254<Builder>::ScalarField
private

Definition at line 65 of file bigfield_edge_cases.test.cpp.

◆ witness_ct

template<typename BigField >
using stdlib_bigfield_edge_cases< BigField >::witness_ct = stdlib::witness_t<Builder>
private

Definition at line 68 of file bigfield_edge_cases.test.cpp.

Member Function Documentation

◆ check_invariants()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::check_invariants ( const fq_ct field_element,
const std::string &  operation_name 
)
inlinestatic

Definition at line 254 of file bigfield_edge_cases.test.cpp.

◆ get_random_witness()

template<typename BigField >
static std::pair< fq_native, fq_ct > stdlib_bigfield_edge_cases< BigField >::get_random_witness ( Builder builder,
bool  reduce_input = false 
)
inlinestatic

Definition at line 242 of file bigfield_edge_cases.test.cpp.

◆ test_assert_equal_edge_case()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_assert_equal_edge_case ( )
inlinestatic

Definition at line 495 of file bigfield_edge_cases.test.cpp.

◆ test_assert_is_in_field()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_assert_is_in_field ( )
inlinestatic

Definition at line 390 of file bigfield_edge_cases.test.cpp.

◆ test_assert_is_in_field_fails()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_assert_is_in_field_fails ( )
inlinestatic

Definition at line 404 of file bigfield_edge_cases.test.cpp.

◆ test_assert_less_than()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_assert_less_than ( )
inlinestatic

Definition at line 429 of file bigfield_edge_cases.test.cpp.

◆ test_assert_less_than_fails()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_assert_less_than_fails ( )
inlinestatic

Definition at line 447 of file bigfield_edge_cases.test.cpp.

◆ test_divide_by_zero_fails()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_divide_by_zero_fails ( )
inlinestatic

Definition at line 516 of file bigfield_edge_cases.test.cpp.

◆ test_invariants_during_binary_operation()

template<typename BigField >
template<typename BinaryOp , typename NativeOp >
static void stdlib_bigfield_edge_cases< BigField >::test_invariants_during_binary_operation ( BinaryOp  binary_op,
NativeOp  native_op,
const std::string &  operation_name,
const bool  skip_zero = false 
)
inlinestatic

Definition at line 289 of file bigfield_edge_cases.test.cpp.

◆ test_invariants_during_negation()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_invariants_during_negation ( )
inlinestatic

Definition at line 382 of file bigfield_edge_cases.test.cpp.

◆ test_invariants_during_squaring()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_invariants_during_squaring ( )
inlinestatic

Definition at line 374 of file bigfield_edge_cases.test.cpp.

◆ test_larger_than_bigfield_allowed()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_larger_than_bigfield_allowed ( )
inlinestatic

Definition at line 97 of file bigfield_edge_cases.test.cpp.

◆ test_maximum_value_tracking_during_addition()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_maximum_value_tracking_during_addition ( )
inlinestatic

Definition at line 194 of file bigfield_edge_cases.test.cpp.

◆ test_reduce_mod_target_modulus()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_reduce_mod_target_modulus ( )
inlinestatic

Definition at line 464 of file bigfield_edge_cases.test.cpp.

◆ test_reduction_check_works()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_reduction_check_works ( )
inlinestatic

Definition at line 108 of file bigfield_edge_cases.test.cpp.

◆ test_reduction_works_on_limb_overflow()

template<typename BigField >
static void stdlib_bigfield_edge_cases< BigField >::test_reduction_works_on_limb_overflow ( )
inlinestatic

Definition at line 154 of file bigfield_edge_cases.test.cpp.

Member Data Documentation

◆ edge_case_values

template<typename BigField >
constexpr std::array<uint512_t, 5> stdlib_bigfield_edge_cases< BigField >::edge_case_values
staticconstexpr
Initial value:
= {
uint512_t(uint256_t(0)),
uint512_t(uint256_t(1)),
uint512_t(fq_ct::modulus) - uint512_t(1),
}
uintx< uint256_t > uint512_t
Definition uintx.hpp:307
static constexpr uint256_t modulus

Definition at line 74 of file bigfield_edge_cases.test.cpp.

◆ reduction_upper_bound

template<typename BigField >
constexpr uint512_t stdlib_bigfield_edge_cases< BigField >::reduction_upper_bound = uint512_t(1) << (fq_ct::modulus.get_msb() + 1)
staticconstexpr

Definition at line 95 of file bigfield_edge_cases.test.cpp.

◆ values_larger_than_bigfield

template<typename BigField >
const std::array<uint512_t, 10> stdlib_bigfield_edge_cases< BigField >::values_larger_than_bigfield
inlinestatic
Initial value:
= {
uint512_t(fq_ct::modulus),
uint512_t(fq_ct::modulus) + uint512_t(1),
uint512_t(fq_ct::modulus) + uint512_t(fr::modulus),
(uint512_t(1) << 256) - 1,
(uint512_t(1) << 256),
(uint512_t(1) << 256) + 1,
uint512_t(fq_ct::get_maximum_unreduced_value()) - 1,
uint512_t(fq_ct::get_maximum_unreduced_value()),
uint512_t(fq_ct::get_maximum_unreduced_value()) + 1,
(uint512_t(1) << (stdlib::NUM_LIMB_BITS_IN_FIELD_SIMULATION * 4)) - 1,
}

Definition at line 82 of file bigfield_edge_cases.test.cpp.


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