Enum kimchi::circuits::expr::PolishToken
source · pub enum PolishToken<F, Column> {
Show 14 variants
Constant(ConstantTerm<F>),
Challenge(ChallengeTerm),
Cell(Variable<Column>),
Dup,
Pow(u64),
Add,
Mul,
Sub,
VanishesOnZeroKnowledgeAndPreviousRows,
UnnormalizedLagrangeBasis(RowOffset),
Store,
Load(usize),
SkipIf(FeatureFlag, usize),
SkipIfNot(FeatureFlag, usize),
}
Expand description
For efficiency of evaluation, we compile expressions to reverse Polish notation expressions, which are vectors of the below tokens.
Variants§
Constant(ConstantTerm<F>)
Challenge(ChallengeTerm)
Cell(Variable<Column>)
Dup
Pow(u64)
Add
Mul
Sub
VanishesOnZeroKnowledgeAndPreviousRows
UnnormalizedLagrangeBasis(RowOffset)
Store
Load(usize)
SkipIf(FeatureFlag, usize)
Skip the given number of tokens if the feature is enabled.
SkipIfNot(FeatureFlag, usize)
Skip the given number of tokens if the feature is disabled.
Implementations§
source§impl<F: FftField, Column: Copy> PolishToken<F, Column>
impl<F: FftField, Column: Copy> PolishToken<F, Column>
sourcepub fn evaluate<Evaluations: ColumnEvaluations<F, Column = Column>>(
toks: &[PolishToken<F, Column>],
d: D<F>,
pt: F,
evals: &Evaluations,
c: &Constants<F>,
chals: &Challenges<F>
) -> Result<F, ExprError<Column>>
pub fn evaluate<Evaluations: ColumnEvaluations<F, Column = Column>>( toks: &[PolishToken<F, Column>], d: D<F>, pt: F, evals: &Evaluations, c: &Constants<F>, chals: &Challenges<F> ) -> Result<F, ExprError<Column>>
Evaluate an RPN expression to a field element.
Trait Implementations§
source§impl<F: Clone, Column: Clone> Clone for PolishToken<F, Column>
impl<F: Clone, Column: Clone> Clone for PolishToken<F, Column>
source§fn clone(&self) -> PolishToken<F, Column>
fn clone(&self) -> PolishToken<F, Column>
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<'de, F, Column> Deserialize<'de> for PolishToken<F, Column>where
F: Deserialize<'de>,
Column: Deserialize<'de>,
impl<'de, F, Column> Deserialize<'de> for PolishToken<F, Column>where F: Deserialize<'de>, Column: Deserialize<'de>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<F: PartialEq, Column: PartialEq> PartialEq<PolishToken<F, Column>> for PolishToken<F, Column>
impl<F: PartialEq, Column: PartialEq> PartialEq<PolishToken<F, Column>> for PolishToken<F, Column>
source§fn eq(&self, other: &PolishToken<F, Column>) -> bool
fn eq(&self, other: &PolishToken<F, Column>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl<F: Eq, Column: Eq> Eq for PolishToken<F, Column>
impl<F, Column> StructuralEq for PolishToken<F, Column>
impl<F, Column> StructuralPartialEq for PolishToken<F, Column>
Auto Trait Implementations§
impl<F, Column> RefUnwindSafe for PolishToken<F, Column>where Column: RefUnwindSafe, F: RefUnwindSafe,
impl<F, Column> Send for PolishToken<F, Column>where Column: Send, F: Send,
impl<F, Column> Sync for PolishToken<F, Column>where Column: Sync, F: Sync,
impl<F, Column> Unpin for PolishToken<F, Column>where Column: Unpin, F: Unpin,
impl<F, Column> UnwindSafe for PolishToken<F, Column>where Column: UnwindSafe, F: UnwindSafe,
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