pub struct DynamicPolynomial<E> {
pub coeffs: Vec<E>,
}Expand description
Polynomials of dynamic degree over an arbitrary semiring (fixed like
Int, or dynamic like a random finite field). To be used in UAIR and
PIOP where ZIP+ degree bound is not observed anymore.
This is a dumb data holder: all operations are performed via
DynamicPolynomialConfig, obtainable from the coefficient config with
HasDynamicPolynomialConfig::dyn_poly_cfg.
Note that operations involving dynamic polynomials
do not trim leading zeros meaning
one can end up with unequal objects of the type
DynamicPolynomial<E> that represent equal polynomials,
therefore DynamicPolynomialConfig::trim has to be called before
checking equality.
Fields§
§coeffs: Vec<E>Implementations§
Source§impl<E> DynamicPolynomial<E>
impl<E> DynamicPolynomial<E>
pub const ZERO: Self
Trait Implementations§
Source§impl<E: Clone> Clone for DynamicPolynomial<E>
impl<E: Clone> Clone for DynamicPolynomial<E>
Source§fn clone(&self) -> DynamicPolynomial<E>
fn clone(&self) -> DynamicPolynomial<E>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<E: Debug> Debug for DynamicPolynomial<E>
impl<E: Debug> Debug for DynamicPolynomial<E>
Source§impl<E> Default for DynamicPolynomial<E>
impl<E> Default for DynamicPolynomial<E>
Source§impl<E: Display> Display for DynamicPolynomial<E>
impl<E: Display> Display for DynamicPolynomial<E>
Source§impl<const DEGREE_PLUS_ONE: usize> From<BinaryU64Poly<DEGREE_PLUS_ONE>> for DynamicPolynomial<Boolean>
impl<const DEGREE_PLUS_ONE: usize> From<BinaryU64Poly<DEGREE_PLUS_ONE>> for DynamicPolynomial<Boolean>
Source§fn from(binary_poly: BinaryPoly<DEGREE_PLUS_ONE>) -> Self
fn from(binary_poly: BinaryPoly<DEGREE_PLUS_ONE>) -> Self
Source§impl<E, const DEGREE_PLUS_ONE: usize> From<DensePolynomial<E, DEGREE_PLUS_ONE>> for DynamicPolynomial<E>
impl<E, const DEGREE_PLUS_ONE: usize> From<DensePolynomial<E, DEGREE_PLUS_ONE>> for DynamicPolynomial<E>
Source§fn from(dense_poly: DensePolynomial<E, DEGREE_PLUS_ONE>) -> Self
fn from(dense_poly: DensePolynomial<E, DEGREE_PLUS_ONE>) -> Self
Source§impl<E> From<Vec<E>> for DynamicPolynomial<E>
impl<E> From<Vec<E>> for DynamicPolynomial<E>
Source§impl<E> FromIterator<E> for DynamicPolynomial<E>
impl<E> FromIterator<E> for DynamicPolynomial<E>
Source§fn from_iter<T: IntoIterator<Item = E>>(iter: T) -> Self
fn from_iter<T: IntoIterator<Item = E>>(iter: T) -> Self
Source§impl<E: Hash> Hash for DynamicPolynomial<E>
impl<E: Hash> Hash for DynamicPolynomial<E>
Source§impl<E: PartialEq> PartialEq for DynamicPolynomial<E>
impl<E: PartialEq> PartialEq for DynamicPolynomial<E>
Source§fn eq(&self, other: &DynamicPolynomial<E>) -> bool
fn eq(&self, other: &DynamicPolynomial<E>) -> bool
self and other values to be equal, and is used by ==.Source§impl<E, C> ProjectableToField<C> for DynamicPolynomial<E>
Projection by evaluation: a dynamic polynomial over projectable
coefficients maps to the field element obtained by projecting the
coefficients and evaluating at the sampled point.
impl<E, C> ProjectableToField<C> for DynamicPolynomial<E>
Projection by evaluation: a dynamic polynomial over projectable coefficients maps to the field element obtained by projecting the coefficients and evaluating at the sampled point.
Source§fn prepare_projection(
cfg: &C,
sampled_value: &C::Element,
) -> impl Fn(&Self) -> C::Element
fn prepare_projection( cfg: &C, sampled_value: &C::Element, ) -> impl Fn(&Self) -> C::Element
impl<E: Eq> Eq for DynamicPolynomial<E>
impl<E> StructuralPartialEq for DynamicPolynomial<E>
Auto Trait Implementations§
impl<E> Freeze for DynamicPolynomial<E>
impl<E> RefUnwindSafe for DynamicPolynomial<E>where
E: RefUnwindSafe,
impl<E> Send for DynamicPolynomial<E>where
E: Send,
impl<E> Sync for DynamicPolynomial<E>where
E: Sync,
impl<E> Unpin for DynamicPolynomial<E>where
E: Unpin,
impl<E> UnsafeUnpin for DynamicPolynomial<E>
impl<E> UnwindSafe for DynamicPolynomial<E>where
E: 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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