pub enum EvaluationOrder {
LowToHigh,
HighToLow,
}
Expand description
Sumcheck evaluation order.
While one can reasonably perform sumcheck over any permutation of the variables, ultimately only two evaluation orders make sense - low-to-high and high-to-low.
Each have pros and cons under little endian representation of multilinears:
- Low-to-high - good locality of access (especially for univariate skip), but needs deinterleaving which prevents byteslicing; computes partial low foldings.
- High-to-low - worse locality of access in univariate skip, but byteslicing friendly, has inplace multithreaded folding; computes partial high foldings.
Variants§
LowToHigh
Substituting lower indexed variables first.
HighToLow
Substituting higher indexed variables first.
Trait Implementations§
Source§impl Clone for EvaluationOrder
impl Clone for EvaluationOrder
Source§fn clone(&self) -> EvaluationOrder
fn clone(&self) -> EvaluationOrder
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 EvaluationOrder
impl Debug for EvaluationOrder
Source§impl PartialEq for EvaluationOrder
impl PartialEq for EvaluationOrder
impl Copy for EvaluationOrder
impl Eq for EvaluationOrder
impl StructuralPartialEq for EvaluationOrder
Auto Trait Implementations§
impl Freeze for EvaluationOrder
impl RefUnwindSafe for EvaluationOrder
impl Send for EvaluationOrder
impl Sync for EvaluationOrder
impl Unpin for EvaluationOrder
impl UnwindSafe for EvaluationOrder
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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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