115 template <AxisIndex axis,
size_t window_
idx>
122 template <AxisIndex axis>
#define BB_ASSERT_LT(left, right,...)
element class. Implements ecc group arithmetic using Jacobian coordinates See https://hyperelliptic....
group class. Represents an elliptic curve group element. Group is parametrised by Fq and Fr
group_elements::affine_element< Fq, Fr, Params > affine_element
group_elements::element< Fq, Fr, Params > element
Per-window plookup tables for the secp256r1 fixed-base scalar multiplication.
G1::affine_element AffineElement
static std::array< bb::fr, 2 > get_values(std::array< uint64_t, 2 > key)
Native lookup callback used by BasicTable::get_values_from_key. axis_window_packed encodes the window...
static std::array< bb::fr, 2 > extract_axis(const AffineElement &point, AxisIndex axis)
Split an affine point into the (limb_a, limb_b) pair for the requested axis. Used by the BasicTable g...
static std::once_flag init_flag
static MultiTable get_multitable(MultiTableId id, AxisIndex axis, bool is_lo)
Construct one of the 10 MultiTables described in the file-header docstring. is_lo = true chains windo...
static AffineElement cached_total_offset
static void init_tables()
Precompute the 32 × 256 native points (idempotent, thread-safe). The (limb_a, limb_b) pairs for each ...
static AffineElement total_offset()
Sum of all per-window offsets (2^0 + 2^1 + ... + 2^31) · H. Subtracted from the chain-add result of t...
static BasicTable generate_basic_table_runtime(BasicTableId id, size_t window_idx, size_t table_index)
Runtime dispatch helper used by plookup_tables.cpp::create_basic_table. Selects table contents using ...
static const AffineElement & get_entry(size_t window_idx, size_t k)
Access a precomputed entry. The biggroup caller uses this to compute proving-time hint values (val_a,...
static constexpr BasicTableId axis_start_id(AxisIndex axis)
Maps a per-axis BasicTableId range start to its AxisIndex; used by the create_basic_table dispatch.
static BasicTable generate_basic_table(BasicTableId id, size_t table_index)
Construct one BasicTable instance for (axis, window_idx). id is the BasicTableId assigned by the call...
static std::array< std::array< AffineElement, TABLE_SIZE_BIG >, NUM_WINDOWS > native_table
@ SECP256R1_FIXED_BASE_YLO_0
@ SECP256R1_FIXED_BASE_XLO_0
@ SECP256R1_FIXED_BASE_XHI_0
@ SECP256R1_FIXED_BASE_YHI_0
group< fq, fr, G1Params > g1
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
A basic table from which we can perform lookups (for example, an xor table)
Container for managing multiple BasicTables plus the data needed to combine basic table outputs (e....
Layout parameters for the secp256r1 fixed-base plookup decomposition.
static constexpr size_t table_size(size_t w)
static constexpr size_t NUM_WINDOWS