pub struct DynamicPolynomialFS<R: FixedSemiring> {
pub coeffs: Vec<R>,
}Expand description
Polynomials of dynamic degree. The implementation
is tailored to work with FixedSemirings. 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<R> that represent equal polynomials,
therefore trim has to be called before checking
equality.
Fields§
§coeffs: Vec<R>Implementations§
Trait Implementations§
Source§impl<R: FixedSemiring> Add<&DynamicPolynomialFS<R>> for DynamicPolynomialFS<R>
impl<R: FixedSemiring> Add<&DynamicPolynomialFS<R>> for DynamicPolynomialFS<R>
Source§impl<R: FixedSemiring> Add for DynamicPolynomialFS<R>
impl<R: FixedSemiring> Add for DynamicPolynomialFS<R>
Source§impl<R: FixedSemiring> AddAssign<&DynamicPolynomialFS<R>> for DynamicPolynomialFS<R>
impl<R: FixedSemiring> AddAssign<&DynamicPolynomialFS<R>> for DynamicPolynomialFS<R>
Source§fn add_assign(&mut self, rhs: &Self)
fn add_assign(&mut self, rhs: &Self)
Performs the
+= operation. Read moreSource§impl<R: FixedSemiring> AddAssign for DynamicPolynomialFS<R>
impl<R: FixedSemiring> AddAssign for DynamicPolynomialFS<R>
Source§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
Performs the
+= operation. Read moreSource§impl<R: FixedSemiring> CheckedAdd for DynamicPolynomialFS<R>
impl<R: FixedSemiring> CheckedAdd for DynamicPolynomialFS<R>
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<R: FixedSemiring> CheckedMul for DynamicPolynomialFS<R>
impl<R: FixedSemiring> CheckedMul for DynamicPolynomialFS<R>
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<R: FixedSemiring + Ring> CheckedNeg for DynamicPolynomialFS<R>
impl<R: FixedSemiring + Ring> CheckedNeg for DynamicPolynomialFS<R>
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<R: FixedSemiring> CheckedSub for DynamicPolynomialFS<R>
impl<R: FixedSemiring> CheckedSub for DynamicPolynomialFS<R>
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<R: Clone + FixedSemiring> Clone for DynamicPolynomialFS<R>
impl<R: Clone + FixedSemiring> Clone for DynamicPolynomialFS<R>
Source§fn clone(&self) -> DynamicPolynomialFS<R>
fn clone(&self) -> DynamicPolynomialFS<R>
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<R: FixedSemiring> ConstZero for DynamicPolynomialFS<R>
impl<R: FixedSemiring> ConstZero for DynamicPolynomialFS<R>
Source§impl<R: Debug + FixedSemiring> Debug for DynamicPolynomialFS<R>
impl<R: Debug + FixedSemiring> Debug for DynamicPolynomialFS<R>
Source§impl<R: Default + FixedSemiring> Default for DynamicPolynomialFS<R>
impl<R: Default + FixedSemiring> Default for DynamicPolynomialFS<R>
Source§fn default() -> DynamicPolynomialFS<R>
fn default() -> DynamicPolynomialFS<R>
Returns the “default value” for a type. Read more
Source§impl<R: FixedSemiring> Display for DynamicPolynomialFS<R>
impl<R: FixedSemiring> Display for DynamicPolynomialFS<R>
Source§impl<R: FixedSemiring> EvaluatablePolynomial<R, R> for DynamicPolynomialFS<R>
impl<R: FixedSemiring> EvaluatablePolynomial<R, R> for DynamicPolynomialFS<R>
Source§type EvaluationPoint = R
type EvaluationPoint = R
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: &R) -> Result<R, EvaluationError>
fn evaluate_at_point(&self, point: &R) -> Result<R, EvaluationError>
Evaluates the polynomial at the given point.
Source§impl<const DEGREE_PLUS_ONE: usize> From<BinaryU64Poly<DEGREE_PLUS_ONE>> for DynamicPolynomialFS<Boolean>
impl<const DEGREE_PLUS_ONE: usize> From<BinaryU64Poly<DEGREE_PLUS_ONE>> for DynamicPolynomialFS<Boolean>
Source§fn from(binary_poly: BinaryPoly<DEGREE_PLUS_ONE>) -> Self
fn from(binary_poly: BinaryPoly<DEGREE_PLUS_ONE>) -> Self
Converts to this type from the input type.
Source§impl<R: FixedSemiring, const DEGREE_PLUS_ONE: usize> From<DensePolynomial<R, DEGREE_PLUS_ONE>> for DynamicPolynomialFS<R>
impl<R: FixedSemiring, const DEGREE_PLUS_ONE: usize> From<DensePolynomial<R, DEGREE_PLUS_ONE>> for DynamicPolynomialFS<R>
Source§fn from(dense_poly: DensePolynomial<R, DEGREE_PLUS_ONE>) -> Self
fn from(dense_poly: DensePolynomial<R, DEGREE_PLUS_ONE>) -> Self
Converts to this type from the input type.
Source§impl<R: FixedSemiring> From<Vec<R>> for DynamicPolynomialFS<R>
impl<R: FixedSemiring> From<Vec<R>> for DynamicPolynomialFS<R>
Source§impl<R: Hash + FixedSemiring> Hash for DynamicPolynomialFS<R>
impl<R: Hash + FixedSemiring> Hash for DynamicPolynomialFS<R>
Source§impl<R: FixedSemiring> Mul<&DynamicPolynomialFS<R>> for DynamicPolynomialFS<R>
impl<R: FixedSemiring> Mul<&DynamicPolynomialFS<R>> for DynamicPolynomialFS<R>
Source§impl<'a, R: FixedSemiring> Mul for &'a DynamicPolynomialFS<R>
impl<'a, R: FixedSemiring> Mul for &'a DynamicPolynomialFS<R>
Source§impl<R: FixedSemiring> Mul for DynamicPolynomialFS<R>
impl<R: FixedSemiring> Mul for DynamicPolynomialFS<R>
Source§impl<R: FixedSemiring> MulAssign<&DynamicPolynomialFS<R>> for DynamicPolynomialFS<R>
impl<R: FixedSemiring> MulAssign<&DynamicPolynomialFS<R>> for DynamicPolynomialFS<R>
Source§fn mul_assign(&mut self, rhs: &Self)
fn mul_assign(&mut self, rhs: &Self)
Performs the
*= operation. Read moreSource§impl<R: FixedSemiring> MulAssign for DynamicPolynomialFS<R>
impl<R: FixedSemiring> MulAssign for DynamicPolynomialFS<R>
Source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
Performs the
*= operation. Read moreSource§impl<R: FixedSemiring + Ring> Neg for DynamicPolynomialFS<R>
impl<R: FixedSemiring + Ring> Neg for DynamicPolynomialFS<R>
Source§impl<R: FixedSemiring> One for DynamicPolynomialFS<R>
impl<R: FixedSemiring> One for DynamicPolynomialFS<R>
Source§impl<R: PartialEq + FixedSemiring> PartialEq for DynamicPolynomialFS<R>
impl<R: PartialEq + FixedSemiring> PartialEq for DynamicPolynomialFS<R>
Source§impl<R: FixedSemiring> Polynomial<R> for DynamicPolynomialFS<R>
impl<R: FixedSemiring> Polynomial<R> for DynamicPolynomialFS<R>
const DEGREE_BOUND: usize = usize::MAX
Source§impl<R, F> ProjectableToField<F> for DynamicPolynomialFS<R>where
R: FixedSemiring,
F: PrimeField + for<'a> FromWithConfig<&'a R> + for<'a> MulByScalar<&'a F> + 'static,
impl<R, F> ProjectableToField<F> for DynamicPolynomialFS<R>where
R: FixedSemiring,
F: PrimeField + for<'a> FromWithConfig<&'a R> + for<'a> MulByScalar<&'a F> + 'static,
Source§fn prepare_projection(
sampled_value: &F,
) -> impl Fn(&DynamicPolynomialFS<R>) -> F + Send + Sync + 'static
fn prepare_projection( sampled_value: &F, ) -> impl Fn(&DynamicPolynomialFS<R>) -> F + Send + Sync + 'static
Prepare a projection function that will project the current type
to a prime field using the given sampled value.
Source§impl<R: FixedSemiring> Sub<&DynamicPolynomialFS<R>> for DynamicPolynomialFS<R>
impl<R: FixedSemiring> Sub<&DynamicPolynomialFS<R>> for DynamicPolynomialFS<R>
Source§impl<R: FixedSemiring> Sub for DynamicPolynomialFS<R>
impl<R: FixedSemiring> Sub for DynamicPolynomialFS<R>
Source§impl<R: FixedSemiring> SubAssign<&DynamicPolynomialFS<R>> for DynamicPolynomialFS<R>
impl<R: FixedSemiring> SubAssign<&DynamicPolynomialFS<R>> for DynamicPolynomialFS<R>
Source§fn sub_assign(&mut self, rhs: &Self)
fn sub_assign(&mut self, rhs: &Self)
Performs the
-= operation. Read moreSource§impl<R: FixedSemiring> SubAssign for DynamicPolynomialFS<R>
impl<R: FixedSemiring> SubAssign for DynamicPolynomialFS<R>
Source§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
Performs the
-= operation. Read moreSource§impl<R: FixedSemiring> Zero for DynamicPolynomialFS<R>
impl<R: FixedSemiring> Zero for DynamicPolynomialFS<R>
impl<R: Eq + FixedSemiring> Eq for DynamicPolynomialFS<R>
impl<R: FixedSemiring + Ring> Ring for DynamicPolynomialFS<R>
impl<R: FixedSemiring> Semiring for DynamicPolynomialFS<R>
impl<R: FixedSemiring> StructuralPartialEq for DynamicPolynomialFS<R>
Auto Trait Implementations§
impl<R> Freeze for DynamicPolynomialFS<R>
impl<R> RefUnwindSafe for DynamicPolynomialFS<R>where
R: RefUnwindSafe,
impl<R> Send for DynamicPolynomialFS<R>
impl<R> Sync for DynamicPolynomialFS<R>
impl<R> Unpin for DynamicPolynomialFS<R>where
R: Unpin,
impl<R> UnsafeUnpin for DynamicPolynomialFS<R>
impl<R> UnwindSafe for DynamicPolynomialFS<R>where
R: 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