Enum kimchi::circuits::expr::PolishToken
source · pub enum PolishToken<F, Column, ChallengeTerm> {
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, ChallengeTerm: Copy> PolishToken<F, Column, ChallengeTerm>
impl<F: FftField, Column: Copy, ChallengeTerm: Copy> PolishToken<F, Column, ChallengeTerm>
sourcepub fn evaluate<Evaluations: ColumnEvaluations<F, Column = Column>>(
toks: &[PolishToken<F, Column, ChallengeTerm>],
d: D<F>,
pt: F,
evals: &Evaluations,
c: &Constants<F>,
chals: &dyn Index<ChallengeTerm, Output = F>
) -> Result<F, ExprError<Column>>
pub fn evaluate<Evaluations: ColumnEvaluations<F, Column = Column>>( toks: &[PolishToken<F, Column, ChallengeTerm>], d: D<F>, pt: F, evals: &Evaluations, c: &Constants<F>, chals: &dyn Index<ChallengeTerm, Output = F> ) -> Result<F, ExprError<Column>>
Evaluate an RPN expression to a field element.
Trait Implementations§
source§impl<F: Clone, Column: Clone, ChallengeTerm: Clone> Clone for PolishToken<F, Column, ChallengeTerm>
impl<F: Clone, Column: Clone, ChallengeTerm: Clone> Clone for PolishToken<F, Column, ChallengeTerm>
source§fn clone(&self) -> PolishToken<F, Column, ChallengeTerm>
fn clone(&self) -> PolishToken<F, Column, ChallengeTerm>
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<F: Debug, Column: Debug, ChallengeTerm: Debug> Debug for PolishToken<F, Column, ChallengeTerm>
impl<F: Debug, Column: Debug, ChallengeTerm: Debug> Debug for PolishToken<F, Column, ChallengeTerm>
source§impl<'de, F, Column, ChallengeTerm> Deserialize<'de> for PolishToken<F, Column, ChallengeTerm>where
F: Deserialize<'de>,
Column: Deserialize<'de>,
ChallengeTerm: Deserialize<'de>,
impl<'de, F, Column, ChallengeTerm> Deserialize<'de> for PolishToken<F, Column, ChallengeTerm>where F: Deserialize<'de>, Column: Deserialize<'de>, ChallengeTerm: 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, ChallengeTerm: PartialEq> PartialEq<PolishToken<F, Column, ChallengeTerm>> for PolishToken<F, Column, ChallengeTerm>
impl<F: PartialEq, Column: PartialEq, ChallengeTerm: PartialEq> PartialEq<PolishToken<F, Column, ChallengeTerm>> for PolishToken<F, Column, ChallengeTerm>
source§fn eq(&self, other: &PolishToken<F, Column, ChallengeTerm>) -> bool
fn eq(&self, other: &PolishToken<F, Column, ChallengeTerm>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl<F, Column, ChallengeTerm> Serialize for PolishToken<F, Column, ChallengeTerm>where
F: Serialize,
Column: Serialize,
ChallengeTerm: Serialize,
impl<F, Column, ChallengeTerm> Serialize for PolishToken<F, Column, ChallengeTerm>where F: Serialize, Column: Serialize, ChallengeTerm: Serialize,
impl<F: Eq, Column: Eq, ChallengeTerm: Eq> Eq for PolishToken<F, Column, ChallengeTerm>
impl<F, Column, ChallengeTerm> StructuralEq for PolishToken<F, Column, ChallengeTerm>
impl<F, Column, ChallengeTerm> StructuralPartialEq for PolishToken<F, Column, ChallengeTerm>
Auto Trait Implementations§
impl<F, Column, ChallengeTerm> RefUnwindSafe for PolishToken<F, Column, ChallengeTerm>where ChallengeTerm: RefUnwindSafe, Column: RefUnwindSafe, F: RefUnwindSafe,
impl<F, Column, ChallengeTerm> Send for PolishToken<F, Column, ChallengeTerm>where ChallengeTerm: Send, Column: Send, F: Send,
impl<F, Column, ChallengeTerm> Sync for PolishToken<F, Column, ChallengeTerm>where ChallengeTerm: Sync, Column: Sync, F: Sync,
impl<F, Column, ChallengeTerm> Unpin for PolishToken<F, Column, ChallengeTerm>where ChallengeTerm: Unpin, Column: Unpin, F: Unpin,
impl<F, Column, ChallengeTerm> UnwindSafe for PolishToken<F, Column, ChallengeTerm>where ChallengeTerm: UnwindSafe, 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
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more