pub struct MasterMainTable {
pub num_trace_randomizers: usize,
/* private fields */
}
Expand description
See MasterTable
.
Fields§
§num_trace_randomizers: usize
Implementations§
Source§impl MasterMainTable
impl MasterMainTable
pub fn new( aet: &AlgebraicExecutionTrace, quotient_domain: ArithmeticDomain, fri_domain: ArithmeticDomain, num_trace_randomizers: usize, trace_randomizer_seed: <StdRng as SeedableRng>::Seed, ) -> Self
Sourcepub fn pad(&mut self)
pub fn pad(&mut self)
Pad the trace to the next power of two using the various, table-specific padding rules. All tables must have the same height for reasons of verifier efficiency. Furthermore, that height must be a power of two for reasons of prover efficiency. Concretely, the Number Theory Transform (NTT) performed by the prover is particularly efficient over the used base field when the number of rows is a power of two.
Sourcepub fn extend(&self, challenges: &Challenges) -> MasterAuxTable
pub fn extend(&self, challenges: &Challenges) -> MasterAuxTable
Create a MasterAuxTable
from a MasterMainTable
by .extend()
ing each individual main
table. The .extend()
for each table is specific to that table, but always involves
adding some number of columns.
Sourcepub fn table(&self, table_id: TableId) -> ArrayView2<'_, BFieldElement>
pub fn table(&self, table_id: TableId) -> ArrayView2<'_, BFieldElement>
A view of the specified table, without any randomizers.
Sourcepub fn table_mut(
&mut self,
table_id: TableId,
) -> ArrayViewMut2<'_, BFieldElement>
pub fn table_mut( &mut self, table_id: TableId, ) -> ArrayViewMut2<'_, BFieldElement>
A mutable view of the specified table, without any randomizers.
Trait Implementations§
Source§impl Clone for MasterMainTable
impl Clone for MasterMainTable
Source§fn clone(&self) -> MasterMainTable
fn clone(&self) -> MasterMainTable
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for MasterMainTable
impl Debug for MasterMainTable
Source§impl MasterTable for MasterMainTable
impl MasterTable for MasterMainTable
const NUM_COLUMNS: usize = 379usize
type Field = BFieldElement
fn trace_domain(&self) -> ArithmeticDomain
fn randomized_trace_domain(&self) -> ArithmeticDomain
Source§fn quotient_domain(&self) -> ArithmeticDomain
fn quotient_domain(&self) -> ArithmeticDomain
The
ArithmeticDomain
just large enough to compute
all quotients.Source§fn fri_domain(&self) -> ArithmeticDomain
fn fri_domain(&self) -> ArithmeticDomain
The
ArithmeticDomain
large enough for FRI
.Source§fn trace_table(&self) -> ArrayView2<'_, BFieldElement>
fn trace_table(&self) -> ArrayView2<'_, BFieldElement>
Presents underlying trace data, excluding trace randomizers and randomizer polynomials.
Source§fn trace_table_mut(&mut self) -> ArrayViewMut2<'_, BFieldElement>
fn trace_table_mut(&mut self) -> ArrayViewMut2<'_, BFieldElement>
Mutably presents underlying trace data, excluding trace randomizers and randomizer
polynomials.
Source§fn quotient_domain_table(&self) -> Option<ArrayView2<'_, BFieldElement>>
fn quotient_domain_table(&self) -> Option<ArrayView2<'_, BFieldElement>>
The quotient-domain view of the cached low-degree-extended table, if Read more
Source§fn fri_domain_table(&self) -> Option<ArrayView2<'_, BFieldElement>>
fn fri_domain_table(&self) -> Option<ArrayView2<'_, BFieldElement>>
Return the FRI domain view of the cached low-degree-extended table, if any. Read more
fn trace_randomizer_seed(&self) -> <StdRng as SeedableRng>::Seed
fn num_trace_randomizers(&self) -> usize
Source§fn evaluation_domain(&self) -> ArithmeticDomain
fn evaluation_domain(&self) -> ArithmeticDomain
The
ArithmeticDomain
to low-degree extend into.
The larger of the quotient_domain
and the
fri_domain
.Source§fn maybe_low_degree_extend_all_columns(&mut self)
fn maybe_low_degree_extend_all_columns(&mut self)
Low-degree extend all columns of the trace table (including randomizers)
if it can be cached. In that case, the resulting low-degree extended
columns can be accessed using
quotient_domain_table
and
fri_domain_table
.Source§fn out_of_domain_row(
&self,
indeterminate: XFieldElement,
) -> Array1<XFieldElement>
fn out_of_domain_row( &self, indeterminate: XFieldElement, ) -> Array1<XFieldElement>
Get one row of the table at an arbitrary index. Notably, the index does not have to be in
any of the domains. In other words, can be used to compute out-of-domain rows.
Does not include randomizer polynomials.
fn randomized_column_interpolant( &self, idx: usize, ) -> Polynomial<'static, Self::Field>
Source§fn trace_randomizer_for_column(
&self,
idx: usize,
) -> Polynomial<'static, Self::Field>
fn trace_randomizer_for_column( &self, idx: usize, ) -> Polynomial<'static, Self::Field>
Uniquely enables the revelation of up to
num_trace_randomizers
entries in
the corresponding column without compromising zero-knowledge. Read moreSource§fn merkle_tree(&self) -> MerkleTree
fn merkle_tree(&self) -> MerkleTree
Compute a Merkle tree of the FRI domain table. Every row gives one leaf in the tree.
fn hash_all_fri_domain_rows(&self) -> Vec<Digest>
Source§fn weighted_sum_of_columns(
&self,
weights: Array1<XFieldElement>,
) -> Polynomial<'_, XFieldElement>
fn weighted_sum_of_columns( &self, weights: Array1<XFieldElement>, ) -> Polynomial<'_, XFieldElement>
The linear combination of the trace-randomized columns using the given
weights. Read more
Auto Trait Implementations§
impl Freeze for MasterMainTable
impl RefUnwindSafe for MasterMainTable
impl Send for MasterMainTable
impl Sync for MasterMainTable
impl Unpin for MasterMainTable
impl UnwindSafe for MasterMainTable
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more