pub struct DynamicPolynomialF<F: PrimeField> {
pub coeffs: Vec<F>,
}Expand description
Polynomials of dynamic degree. The implementation is tailored to work with random finite fields. To be used in UAIR and PIOP where ZIP+ degree bound is not observed anymore.
Note that operations involving dynamic polynomials
do not trim leading zeros meaning
one can end up with unequal objects of the type
DynamicPoly<F> that represent equal polynomials,
therefore trim has to be called before checking
equality.
Fields§
§coeffs: Vec<F>Implementations§
Source§impl<F: PrimeField> DynamicPolynomialF<F>
impl<F: PrimeField> DynamicPolynomialF<F>
Trait Implementations§
Source§impl<F: PrimeField> Add<&DynamicPolynomialF<F>> for DynamicPolynomialF<F>
impl<F: PrimeField> Add<&DynamicPolynomialF<F>> for DynamicPolynomialF<F>
Source§impl<F: PrimeField> Add for DynamicPolynomialF<F>
impl<F: PrimeField> Add for DynamicPolynomialF<F>
Source§impl<F: PrimeField> AddAssign<&DynamicPolynomialF<F>> for DynamicPolynomialF<F>
impl<F: PrimeField> AddAssign<&DynamicPolynomialF<F>> for DynamicPolynomialF<F>
Source§fn add_assign(&mut self, rhs: &Self)
fn add_assign(&mut self, rhs: &Self)
Performs the
+= operation. Read moreSource§impl<F: PrimeField> AddAssign for DynamicPolynomialF<F>
impl<F: PrimeField> AddAssign for DynamicPolynomialF<F>
Source§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
Performs the
+= operation. Read moreSource§impl<F: PrimeField> CheckedAdd for DynamicPolynomialF<F>
impl<F: PrimeField> CheckedAdd for DynamicPolynomialF<F>
Source§fn checked_add(&self, rhs: &Self) -> Option<Self>
fn checked_add(&self, rhs: &Self) -> Option<Self>
Adds two numbers, checking for overflow. If overflow happens,
None is
returned.Source§impl<F: PrimeField> CheckedMul for DynamicPolynomialF<F>
impl<F: PrimeField> CheckedMul for DynamicPolynomialF<F>
Source§fn checked_mul(&self, rhs: &Self) -> Option<Self>
fn checked_mul(&self, rhs: &Self) -> Option<Self>
Multiplies two numbers, checking for underflow or overflow. If underflow
or overflow happens,
None is returned.Source§impl<F: PrimeField> CheckedNeg for DynamicPolynomialF<F>
impl<F: PrimeField> CheckedNeg for DynamicPolynomialF<F>
Source§fn checked_neg(&self) -> Option<Self>
fn checked_neg(&self) -> Option<Self>
Negates a number, returning
None for results that can’t be represented, like signed MIN
values that can’t be positive, or non-zero unsigned values that can’t be negative. Read moreSource§impl<F: PrimeField> CheckedSub for DynamicPolynomialF<F>
impl<F: PrimeField> CheckedSub for DynamicPolynomialF<F>
Source§fn checked_sub(&self, rhs: &Self) -> Option<Self>
fn checked_sub(&self, rhs: &Self) -> Option<Self>
Subtracts two numbers, checking for underflow. If underflow happens,
None is returned.Source§impl<F: Clone + PrimeField> Clone for DynamicPolynomialF<F>
impl<F: Clone + PrimeField> Clone for DynamicPolynomialF<F>
Source§fn clone(&self) -> DynamicPolynomialF<F>
fn clone(&self) -> DynamicPolynomialF<F>
Returns a duplicate 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: PrimeField> ConstZero for DynamicPolynomialF<F>
impl<F: PrimeField> ConstZero for DynamicPolynomialF<F>
Source§impl<F: Debug + PrimeField> Debug for DynamicPolynomialF<F>
impl<F: Debug + PrimeField> Debug for DynamicPolynomialF<F>
Source§impl<F: PrimeField> Default for DynamicPolynomialF<F>
impl<F: PrimeField> Default for DynamicPolynomialF<F>
Source§impl<F: PrimeField> Display for DynamicPolynomialF<F>
impl<F: PrimeField> Display for DynamicPolynomialF<F>
Source§impl<F: PrimeField> Div for DynamicPolynomialF<F>
impl<F: PrimeField> Div for DynamicPolynomialF<F>
Source§impl<F: PrimeField> Euclid for DynamicPolynomialF<F>
impl<F: PrimeField> Euclid for DynamicPolynomialF<F>
Source§fn div_euclid(&self, v: &Self) -> Self
fn div_euclid(&self, v: &Self) -> Self
Calculates Euclidean division, the matching method for
rem_euclid. Read moreSource§fn rem_euclid(&self, v: &Self) -> Self
fn rem_euclid(&self, v: &Self) -> Self
Calculates the least nonnegative remainder of
self (mod v). Read moreSource§fn div_rem_euclid(&self, divisor: &Self) -> (Self, Self)
fn div_rem_euclid(&self, divisor: &Self) -> (Self, Self)
Returns both the quotient and remainder from Euclidean division. Read more
Source§impl<F: PrimeField> EvaluatablePolynomial<F, F> for DynamicPolynomialF<F>
impl<F: PrimeField> EvaluatablePolynomial<F, F> for DynamicPolynomialF<F>
Source§type EvaluationPoint = F
type EvaluationPoint = F
The type of points a polynomial can be evaluated on.
For univariate polynomials this typically is
Out,
for multivariate this is [Out].Source§fn evaluate_at_point(&self, point: &F) -> Result<F, EvaluationError>
fn evaluate_at_point(&self, point: &F) -> Result<F, EvaluationError>
Evaluates the polynomial at the given point.
Source§impl<F: PrimeField, const DEGFEE_PLUS_ONE: usize> From<DensePolynomial<F, DEGFEE_PLUS_ONE>> for DynamicPolynomialF<F>
impl<F: PrimeField, const DEGFEE_PLUS_ONE: usize> From<DensePolynomial<F, DEGFEE_PLUS_ONE>> for DynamicPolynomialF<F>
Source§fn from(dense_poly: DensePolynomial<F, DEGFEE_PLUS_ONE>) -> Self
fn from(dense_poly: DensePolynomial<F, DEGFEE_PLUS_ONE>) -> Self
Converts to this type from the input type.
Source§impl<F: PrimeField> From<Vec<F>> for DynamicPolynomialF<F>
impl<F: PrimeField> From<Vec<F>> for DynamicPolynomialF<F>
Source§impl<F: PrimeField> FromIterator<F> for DynamicPolynomialF<F>
impl<F: PrimeField> FromIterator<F> for DynamicPolynomialF<F>
Source§fn from_iter<T: IntoIterator<Item = F>>(iter: T) -> Self
fn from_iter<T: IntoIterator<Item = F>>(iter: T) -> Self
Creates a value from an iterator. Read more
Source§impl<F: Hash + PrimeField> Hash for DynamicPolynomialF<F>
impl<F: Hash + PrimeField> Hash for DynamicPolynomialF<F>
Source§impl<F: PrimeField> Mul<&DynamicPolynomialF<F>> for DynamicPolynomialF<F>
impl<F: PrimeField> Mul<&DynamicPolynomialF<F>> for DynamicPolynomialF<F>
Source§impl<'a, F: PrimeField> Mul for &'a DynamicPolynomialF<F>
impl<'a, F: PrimeField> Mul for &'a DynamicPolynomialF<F>
Source§impl<F: PrimeField> Mul for DynamicPolynomialF<F>
impl<F: PrimeField> Mul for DynamicPolynomialF<F>
Source§impl<F: PrimeField> MulAssign<&DynamicPolynomialF<F>> for DynamicPolynomialF<F>
impl<F: PrimeField> MulAssign<&DynamicPolynomialF<F>> for DynamicPolynomialF<F>
Source§fn mul_assign(&mut self, rhs: &Self)
fn mul_assign(&mut self, rhs: &Self)
Performs the
*= operation. Read moreSource§impl<F: PrimeField> MulAssign for DynamicPolynomialF<F>
impl<F: PrimeField> MulAssign for DynamicPolynomialF<F>
Source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
Performs the
*= operation. Read moreSource§impl<F: PrimeField> Neg for DynamicPolynomialF<F>
impl<F: PrimeField> Neg for DynamicPolynomialF<F>
Source§impl<F: PartialEq + PrimeField> PartialEq for DynamicPolynomialF<F>
impl<F: PartialEq + PrimeField> PartialEq for DynamicPolynomialF<F>
Source§impl<F: PrimeField> Polynomial<F> for DynamicPolynomialF<F>
impl<F: PrimeField> Polynomial<F> for DynamicPolynomialF<F>
const DEGREE_BOUND: usize = usize::MAX
Source§impl<F: PrimeField> Rem for DynamicPolynomialF<F>
impl<F: PrimeField> Rem for DynamicPolynomialF<F>
Source§impl<F: PrimeField> Sub<&DynamicPolynomialF<F>> for DynamicPolynomialF<F>
impl<F: PrimeField> Sub<&DynamicPolynomialF<F>> for DynamicPolynomialF<F>
Source§impl<F: PrimeField> Sub for DynamicPolynomialF<F>
impl<F: PrimeField> Sub for DynamicPolynomialF<F>
Source§impl<F: PrimeField> SubAssign<&DynamicPolynomialF<F>> for DynamicPolynomialF<F>
impl<F: PrimeField> SubAssign<&DynamicPolynomialF<F>> for DynamicPolynomialF<F>
Source§fn sub_assign(&mut self, rhs: &Self)
fn sub_assign(&mut self, rhs: &Self)
Performs the
-= operation. Read moreSource§impl<F: PrimeField> SubAssign for DynamicPolynomialF<F>
impl<F: PrimeField> SubAssign for DynamicPolynomialF<F>
Source§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
Performs the
-= operation. Read moreSource§impl<F: PrimeField> Zero for DynamicPolynomialF<F>
impl<F: PrimeField> Zero for DynamicPolynomialF<F>
impl<F: Eq + PrimeField> Eq for DynamicPolynomialF<F>
impl<F: PrimeField> Semiring for DynamicPolynomialF<F>
impl<F: PrimeField> StructuralPartialEq for DynamicPolynomialF<F>
Auto Trait Implementations§
impl<F> Freeze for DynamicPolynomialF<F>
impl<F> RefUnwindSafe for DynamicPolynomialF<F>where
F: RefUnwindSafe,
impl<F> Send for DynamicPolynomialF<F>
impl<F> Sync for DynamicPolynomialF<F>
impl<F> Unpin for DynamicPolynomialF<F>where
F: Unpin,
impl<F> UnsafeUnpin for DynamicPolynomialF<F>
impl<F> UnwindSafe for DynamicPolynomialF<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,
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