pub struct Ple<F> { /* private fields */ }Expand description
Prismalinear extension polynomial, in coefficient form.
Depends on implicit univariate skip parameter l_skip.
Length of coeffs is 2^{l_skip + n} where n is hypercube dimension.
Indexing is to decompose i = i_0 + 2^{l_skip} * (i_1 + 2 * i_2 .. + 2^{n-1} * i_n) and let
coeffs[i] be the coefficient of Z^{i_0} X_1^{i_1} .. X_n^{i_n}.
Implementations§
Source§impl<F: TwoAdicField> Ple<F>
impl<F: TwoAdicField> Ple<F>
Sourcepub fn from_evaluations(l_skip: usize, evals: &[F]) -> Self
pub fn from_evaluations(l_skip: usize, evals: &[F]) -> Self
Create PLE from evaluations on the hyperprism D x H_n for n >= 0.
Takes evaluations at 2^{l_skip + n} points and converts them to coefficient form for a polynomial in n+1 variables: degree < 2^l_skip in the first variable, degree < 2 (linear) in the other n variables.
The input evals should have length 2^{l_skip + n}.
The evaluation at index i corresponds to:
- bits 0 to l_skip-1: univariate point index
- bits l_skip to l_skip+n-1: multilinear variable assignments
pub fn eval_at_point<EF: ExtensionField<F>>( &self, l_skip: usize, z: EF, x: &[EF], ) -> EF
pub fn into_coeffs(self) -> Vec<F>
Auto Trait Implementations§
impl<F> Freeze for Ple<F>
impl<F> RefUnwindSafe for Ple<F>where
F: RefUnwindSafe,
impl<F> Send for Ple<F>where
F: Send,
impl<F> Sync for Ple<F>where
F: Sync,
impl<F> Unpin for Ple<F>where
F: Unpin,
impl<F> UnsafeUnpin for Ple<F>
impl<F> UnwindSafe for Ple<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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§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