Struct BinMulOutput
pub struct BinMulOutput<F> {
pub eval_point: Vec<F>,
pub a_lo_evals: [F; 64],
pub a_hi_evals: [F; 64],
pub b_lo_evals: [F; 64],
pub b_hi_evals: [F; 64],
pub c_lo_evals: [F; 64],
pub c_hi_evals: [F; 64],
}Expand description
Output of the BinMul reduction.
The reduction proves the constraint $\widetilde{A}(x) \cdot \widetilde{B}(x) =
\widetilde{C}(x)$ for every $x$ on the boolean hypercube $\mathbb{B}\ell$, where each
$\mathbb{F}{2^{128}}$ element is carried by a (lo, hi) pair of 64-bit words. It reduces the
constraint to per-bit evaluation claims on the six word columns at a common evaluation point
eval_point ($r_x \in K^\ell$).
Each *_evals array holds Word::BITS per-bit evaluation claims $\widetilde{z}(r_x, i)$ for
$i \in {0, \ldots, 63}$.
Fields§
§eval_point: Vec<F>§a_lo_evals: [F; 64]§a_hi_evals: [F; 64]§b_lo_evals: [F; 64]§b_hi_evals: [F; 64]§c_lo_evals: [F; 64]§c_hi_evals: [F; 64]Implementations§
§impl<F> BinMulOutput<F>
impl<F> BinMulOutput<F>
pub fn operand_claims(&self) -> OperandClaims<'_, F>
pub fn operand_claims(&self) -> OperandClaims<'_, F>
The operand claims, in the shift operand order [a_lo, a_hi, b_lo, b_hi, c_lo, c_hi].
Trait Implementations§
§impl<F> Clone for BinMulOutput<F>where
F: Clone,
impl<F> Clone for BinMulOutput<F>where
F: Clone,
§fn clone(&self) -> BinMulOutput<F>
fn clone(&self) -> BinMulOutput<F>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read more§impl<F> Debug for BinMulOutput<F>where
F: Debug,
impl<F> Debug for BinMulOutput<F>where
F: Debug,
impl<F> Eq for BinMulOutput<F>where
F: Eq,
§impl<F> PartialEq for BinMulOutput<F>where
F: PartialEq,
impl<F> PartialEq for BinMulOutput<F>where
F: PartialEq,
impl<F> StructuralPartialEq for BinMulOutput<F>where
F: PartialEq,
Auto Trait Implementations§
impl<F> Freeze for BinMulOutput<F>where
F: Freeze,
impl<F> RefUnwindSafe for BinMulOutput<F>where
F: RefUnwindSafe,
impl<F> Send for BinMulOutput<F>where
F: Send,
impl<F> Sync for BinMulOutput<F>where
F: Sync,
impl<F> Unpin for BinMulOutput<F>where
F: Unpin,
impl<F> UnsafeUnpin for BinMulOutput<F>where
F: UnsafeUnpin,
impl<F> UnwindSafe for BinMulOutput<F>where
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
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