Struct lambdaworks_math::polynomial::Polynomial
source · pub struct Polynomial<FE> {
pub coefficients: Vec<FE>,
}
Expand description
Represents the polynomial c_0 + c_1 * X + c_2 * X^2 + … + c_n * X^n
as a vector of coefficients [c_0, c_1, ... , c_n]
Fields§
§coefficients: Vec<FE>
Implementations§
source§impl<E: IsField> Polynomial<FieldElement<E>>
impl<E: IsField> Polynomial<FieldElement<E>>
sourcepub fn evaluate_fft<F: IsFFTField + IsSubFieldOf<E>>(
poly: &Polynomial<FieldElement<E>>,
blowup_factor: usize,
domain_size: Option<usize>,
) -> Result<Vec<FieldElement<E>>, FFTError>
pub fn evaluate_fft<F: IsFFTField + IsSubFieldOf<E>>( poly: &Polynomial<FieldElement<E>>, blowup_factor: usize, domain_size: Option<usize>, ) -> Result<Vec<FieldElement<E>>, FFTError>
Returns N
evaluations of this polynomial using FFT over a domain in a subfield F of E (so the results
are P(w^i), with w being a primitive root of unity).
N = max(self.coeff_len(), domain_size).next_power_of_two() * blowup_factor
.
If domain_size
is None
, it defaults to 0.
sourcepub fn evaluate_offset_fft<F: IsFFTField + IsSubFieldOf<E>>(
poly: &Polynomial<FieldElement<E>>,
blowup_factor: usize,
domain_size: Option<usize>,
offset: &FieldElement<F>,
) -> Result<Vec<FieldElement<E>>, FFTError>
pub fn evaluate_offset_fft<F: IsFFTField + IsSubFieldOf<E>>( poly: &Polynomial<FieldElement<E>>, blowup_factor: usize, domain_size: Option<usize>, offset: &FieldElement<F>, ) -> Result<Vec<FieldElement<E>>, FFTError>
Returns N
evaluations with an offset of this polynomial using FFT over a domain in a subfield F of E
(so the results are P(w^i), with w being a primitive root of unity).
N = max(self.coeff_len(), domain_size).next_power_of_two() * blowup_factor
.
If domain_size
is None
, it defaults to 0.
sourcepub fn interpolate_fft<F: IsFFTField + IsSubFieldOf<E>>(
fft_evals: &[FieldElement<E>],
) -> Result<Self, FFTError>
pub fn interpolate_fft<F: IsFFTField + IsSubFieldOf<E>>( fft_evals: &[FieldElement<E>], ) -> Result<Self, FFTError>
Returns a new polynomial that interpolates (w^i, fft_evals[i])
, with w
being a
Nth primitive root of unity in a subfield F of E, and i in 0..N
, with N = fft_evals.len()
.
This is considered to be the inverse operation of Self::evaluate_fft().
sourcepub fn interpolate_offset_fft<F: IsFFTField + IsSubFieldOf<E>>(
fft_evals: &[FieldElement<E>],
offset: &FieldElement<F>,
) -> Result<Polynomial<FieldElement<E>>, FFTError>
pub fn interpolate_offset_fft<F: IsFFTField + IsSubFieldOf<E>>( fft_evals: &[FieldElement<E>], offset: &FieldElement<F>, ) -> Result<Polynomial<FieldElement<E>>, FFTError>
Returns a new polynomial that interpolates offset (w^i, fft_evals[i])
, with w
being a
Nth primitive root of unity in a subfield F of E, and i in 0..N
, with N = fft_evals.len()
.
This is considered to be the inverse operation of Self::evaluate_offset_fft().
source§impl<F: IsField> Polynomial<FieldElement<F>>
impl<F: IsField> Polynomial<FieldElement<F>>
sourcepub fn new(coefficients: &[FieldElement<F>]) -> Self
pub fn new(coefficients: &[FieldElement<F>]) -> Self
Creates a new polynomial with the given coefficients
pub fn new_monomial(coefficient: FieldElement<F>, degree: usize) -> Self
pub fn zero() -> Self
sourcepub fn interpolate(
xs: &[FieldElement<F>],
ys: &[FieldElement<F>],
) -> Result<Self, InterpolateError>
pub fn interpolate( xs: &[FieldElement<F>], ys: &[FieldElement<F>], ) -> Result<Self, InterpolateError>
Returns a polynomial that interpolates the points with x coordinates and y coordinates given by
xs
and ys
.
xs
and ys
must be the same length, and xs
values should be unique. If not, panics.
pub fn evaluate<E>(&self, x: &FieldElement<E>) -> FieldElement<E>where
E: IsField,
F: IsSubFieldOf<E>,
pub fn evaluate_slice(&self, input: &[FieldElement<F>]) -> Vec<FieldElement<F>>
pub fn degree(&self) -> usize
pub fn leading_coefficient(&self) -> FieldElement<F>
sourcepub fn coefficients(&self) -> &[FieldElement<F>]
pub fn coefficients(&self) -> &[FieldElement<F>]
Returns coefficients of the polynomial as an array [c_0, c_1, c_2, …, c_n] that represents the polynomial c_0 + c_1 * X + c_2 * X^2 + … + c_n * X^n
pub fn coeff_len(&self) -> usize
sourcepub fn ruffini_division_inplace(&mut self, b: &FieldElement<F>)
pub fn ruffini_division_inplace(&mut self, b: &FieldElement<F>)
Computes quotient with x - b
in place.
pub fn ruffini_division<L>(
&self,
b: &FieldElement<L>,
) -> Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
sourcepub fn long_division_with_remainder(self, dividend: &Self) -> (Self, Self)
pub fn long_division_with_remainder(self, dividend: &Self) -> (Self, Self)
Computes quotient and remainder of polynomial division.
Output: (quotient, remainder)
pub fn div_with_ref(self, dividend: &Self) -> Self
pub fn mul_with_ref(&self, factor: &Self) -> Self
pub fn scale<S: IsSubFieldOf<F>>(&self, factor: &FieldElement<S>) -> Self
pub fn scale_coeffs(&self, factor: &FieldElement<F>) -> Self
sourcepub fn break_in_parts(&self, number_of_parts: usize) -> Vec<Self>
pub fn break_in_parts(&self, number_of_parts: usize) -> Vec<Self>
Returns a vector of polynomials [p₀, p₁, …, p_{d-1}], where d is number_of_parts
, such that self
equals
p₀(Xᵈ) + Xp₁(Xᵈ) + … + X^(d-1)p_{d-1}(Xᵈ).
Example: if d = 2 and self
is 3 X^3 + X^2 + 2X + 1, then poly.break_in_parts(2)
returns a vector with two polynomials (p₀, p₁)
, where p₀ = X + 1 and p₁ = 3X + 2.
pub fn to_extension<L: IsField>(self) -> Polynomial<FieldElement<L>>where
F: IsSubFieldOf<L>,
Trait Implementations§
source§impl<F, L> Add<&FieldElement<F>> for &Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Add<&FieldElement<F>> for &Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
+
operator.source§fn add(self, other: &FieldElement<F>) -> Polynomial<FieldElement<L>>
fn add(self, other: &FieldElement<F>) -> Polynomial<FieldElement<L>>
+
operation. Read moresource§impl<F, L> Add<&FieldElement<F>> for Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Add<&FieldElement<F>> for Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
+
operator.source§fn add(self, other: &FieldElement<F>) -> Polynomial<FieldElement<L>>
fn add(self, other: &FieldElement<F>) -> Polynomial<FieldElement<L>>
+
operation. Read moresource§impl<F, L> Add<&Polynomial<FieldElement<L>>> for &FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Add<&Polynomial<FieldElement<L>>> for &FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
+
operator.source§fn add(self, other: &Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
fn add(self, other: &Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
+
operation. Read moresource§impl<F, L> Add<&Polynomial<FieldElement<L>>> for &Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Add<&Polynomial<FieldElement<L>>> for &Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
+
operator.source§fn add(self, a_polynomial: &Polynomial<FieldElement<L>>) -> Self::Output
fn add(self, a_polynomial: &Polynomial<FieldElement<L>>) -> Self::Output
+
operation. Read moresource§impl<F, L> Add<&Polynomial<FieldElement<L>>> for FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Add<&Polynomial<FieldElement<L>>> for FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
+
operator.source§fn add(self, other: &Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
fn add(self, other: &Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
+
operation. Read moresource§impl<F, L> Add<&Polynomial<FieldElement<L>>> for Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Add<&Polynomial<FieldElement<L>>> for Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
+
operator.source§fn add(
self,
a_polynomial: &Polynomial<FieldElement<L>>,
) -> Polynomial<FieldElement<L>>
fn add( self, a_polynomial: &Polynomial<FieldElement<L>>, ) -> Polynomial<FieldElement<L>>
+
operation. Read moresource§impl<F, L> Add<FieldElement<F>> for &Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Add<FieldElement<F>> for &Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
+
operator.source§fn add(self, other: FieldElement<F>) -> Polynomial<FieldElement<L>>
fn add(self, other: FieldElement<F>) -> Polynomial<FieldElement<L>>
+
operation. Read moresource§impl<F, L> Add<FieldElement<F>> for Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Add<FieldElement<F>> for Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
+
operator.source§fn add(self, other: FieldElement<F>) -> Polynomial<FieldElement<L>>
fn add(self, other: FieldElement<F>) -> Polynomial<FieldElement<L>>
+
operation. Read moresource§impl<F, L> Add<Polynomial<FieldElement<L>>> for &FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Add<Polynomial<FieldElement<L>>> for &FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
+
operator.source§fn add(self, other: Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
fn add(self, other: Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
+
operation. Read moresource§impl<F, L> Add<Polynomial<FieldElement<L>>> for &Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Add<Polynomial<FieldElement<L>>> for &Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
+
operator.source§fn add(
self,
a_polynomial: Polynomial<FieldElement<L>>,
) -> Polynomial<FieldElement<L>>
fn add( self, a_polynomial: Polynomial<FieldElement<L>>, ) -> Polynomial<FieldElement<L>>
+
operation. Read moresource§impl<F, L> Add<Polynomial<FieldElement<L>>> for FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Add<Polynomial<FieldElement<L>>> for FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
+
operator.source§fn add(self, other: Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
fn add(self, other: Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
+
operation. Read moresource§impl<F, L> Add<Polynomial<FieldElement<L>>> for Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Add<Polynomial<FieldElement<L>>> for Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
+
operator.source§fn add(
self,
a_polynomial: Polynomial<FieldElement<L>>,
) -> Polynomial<FieldElement<L>>
fn add( self, a_polynomial: Polynomial<FieldElement<L>>, ) -> Polynomial<FieldElement<L>>
+
operation. Read moresource§impl<FE: Clone> Clone for Polynomial<FE>
impl<FE: Clone> Clone for Polynomial<FE>
source§fn clone(&self) -> Polynomial<FE>
fn clone(&self) -> Polynomial<FE>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<FE: Debug> Debug for Polynomial<FE>
impl<FE: Debug> Debug for Polynomial<FE>
source§impl<F> Div for Polynomial<FieldElement<F>>where
F: IsField,
impl<F> Div for Polynomial<FieldElement<F>>where
F: IsField,
source§type Output = Polynomial<FieldElement<F>>
type Output = Polynomial<FieldElement<F>>
/
operator.source§fn div(
self,
dividend: Polynomial<FieldElement<F>>,
) -> Polynomial<FieldElement<F>>
fn div( self, dividend: Polynomial<FieldElement<F>>, ) -> Polynomial<FieldElement<F>>
/
operation. Read moresource§impl<F, L> Mul<&FieldElement<F>> for &Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Mul<&FieldElement<F>> for &Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
*
operator.source§fn mul(self, multiplicand: &FieldElement<F>) -> Polynomial<FieldElement<L>>
fn mul(self, multiplicand: &FieldElement<F>) -> Polynomial<FieldElement<L>>
*
operation. Read moresource§impl<F, L> Mul<&FieldElement<F>> for Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Mul<&FieldElement<F>> for Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
*
operator.source§fn mul(self, multiplicand: &FieldElement<F>) -> Polynomial<FieldElement<L>>
fn mul(self, multiplicand: &FieldElement<F>) -> Polynomial<FieldElement<L>>
*
operation. Read moresource§impl<F: IsField> Mul<&Polynomial<FieldElement<F>>> for &Polynomial<FieldElement<F>>
impl<F: IsField> Mul<&Polynomial<FieldElement<F>>> for &Polynomial<FieldElement<F>>
source§type Output = Polynomial<FieldElement<F>>
type Output = Polynomial<FieldElement<F>>
*
operator.source§fn mul(
self,
factor: &Polynomial<FieldElement<F>>,
) -> Polynomial<FieldElement<F>>
fn mul( self, factor: &Polynomial<FieldElement<F>>, ) -> Polynomial<FieldElement<F>>
*
operation. Read moresource§impl<F: IsField> Mul<&Polynomial<FieldElement<F>>> for Polynomial<FieldElement<F>>
impl<F: IsField> Mul<&Polynomial<FieldElement<F>>> for Polynomial<FieldElement<F>>
source§type Output = Polynomial<FieldElement<F>>
type Output = Polynomial<FieldElement<F>>
*
operator.source§fn mul(
self,
factor: &Polynomial<FieldElement<F>>,
) -> Polynomial<FieldElement<F>>
fn mul( self, factor: &Polynomial<FieldElement<F>>, ) -> Polynomial<FieldElement<F>>
*
operation. Read moresource§impl<F, L> Mul<&Polynomial<FieldElement<L>>> for &FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Mul<&Polynomial<FieldElement<L>>> for &FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
*
operator.source§fn mul(
self,
multiplicand: &Polynomial<FieldElement<L>>,
) -> Polynomial<FieldElement<L>>
fn mul( self, multiplicand: &Polynomial<FieldElement<L>>, ) -> Polynomial<FieldElement<L>>
*
operation. Read moresource§impl<F, L> Mul<&Polynomial<FieldElement<L>>> for FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Mul<&Polynomial<FieldElement<L>>> for FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
*
operator.source§fn mul(
self,
multiplicand: &Polynomial<FieldElement<L>>,
) -> Polynomial<FieldElement<L>>
fn mul( self, multiplicand: &Polynomial<FieldElement<L>>, ) -> Polynomial<FieldElement<L>>
*
operation. Read moresource§impl<F, L> Mul<FieldElement<F>> for &Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Mul<FieldElement<F>> for &Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
*
operator.source§fn mul(self, multiplicand: FieldElement<F>) -> Polynomial<FieldElement<L>>
fn mul(self, multiplicand: FieldElement<F>) -> Polynomial<FieldElement<L>>
*
operation. Read moresource§impl<F, L> Mul<FieldElement<F>> for Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Mul<FieldElement<F>> for Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
*
operator.source§fn mul(self, multiplicand: FieldElement<F>) -> Polynomial<FieldElement<L>>
fn mul(self, multiplicand: FieldElement<F>) -> Polynomial<FieldElement<L>>
*
operation. Read moresource§impl<F: IsField> Mul<Polynomial<FieldElement<F>>> for &Polynomial<FieldElement<F>>
impl<F: IsField> Mul<Polynomial<FieldElement<F>>> for &Polynomial<FieldElement<F>>
source§type Output = Polynomial<FieldElement<F>>
type Output = Polynomial<FieldElement<F>>
*
operator.source§fn mul(self, factor: Polynomial<FieldElement<F>>) -> Polynomial<FieldElement<F>>
fn mul(self, factor: Polynomial<FieldElement<F>>) -> Polynomial<FieldElement<F>>
*
operation. Read moresource§impl<F, L> Mul<Polynomial<FieldElement<L>>> for &FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Mul<Polynomial<FieldElement<L>>> for &FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
*
operator.source§fn mul(
self,
multiplicand: Polynomial<FieldElement<L>>,
) -> Polynomial<FieldElement<L>>
fn mul( self, multiplicand: Polynomial<FieldElement<L>>, ) -> Polynomial<FieldElement<L>>
*
operation. Read moresource§impl<F, L> Mul<Polynomial<FieldElement<L>>> for FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Mul<Polynomial<FieldElement<L>>> for FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
*
operator.source§fn mul(
self,
multiplicand: Polynomial<FieldElement<L>>,
) -> Polynomial<FieldElement<L>>
fn mul( self, multiplicand: Polynomial<FieldElement<L>>, ) -> Polynomial<FieldElement<L>>
*
operation. Read moresource§impl<F: IsField> Mul for Polynomial<FieldElement<F>>
impl<F: IsField> Mul for Polynomial<FieldElement<F>>
source§type Output = Polynomial<FieldElement<F>>
type Output = Polynomial<FieldElement<F>>
*
operator.source§fn mul(self, factor: Polynomial<FieldElement<F>>) -> Polynomial<FieldElement<F>>
fn mul(self, factor: Polynomial<FieldElement<F>>) -> Polynomial<FieldElement<F>>
*
operation. Read moresource§impl<F: IsField> Neg for &Polynomial<FieldElement<F>>
impl<F: IsField> Neg for &Polynomial<FieldElement<F>>
source§type Output = Polynomial<FieldElement<F>>
type Output = Polynomial<FieldElement<F>>
-
operator.source§fn neg(self) -> Polynomial<FieldElement<F>>
fn neg(self) -> Polynomial<FieldElement<F>>
-
operation. Read moresource§impl<F: IsField> Neg for Polynomial<FieldElement<F>>
impl<F: IsField> Neg for Polynomial<FieldElement<F>>
source§type Output = Polynomial<FieldElement<F>>
type Output = Polynomial<FieldElement<F>>
-
operator.source§fn neg(self) -> Polynomial<FieldElement<F>>
fn neg(self) -> Polynomial<FieldElement<F>>
-
operation. Read moresource§impl<FE: PartialEq> PartialEq for Polynomial<FE>
impl<FE: PartialEq> PartialEq for Polynomial<FE>
source§impl<F, L> Sub<&FieldElement<F>> for &Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Sub<&FieldElement<F>> for &Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
-
operator.source§fn sub(self, other: &FieldElement<F>) -> Polynomial<FieldElement<L>>
fn sub(self, other: &FieldElement<F>) -> Polynomial<FieldElement<L>>
-
operation. Read moresource§impl<F, L> Sub<&FieldElement<F>> for Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Sub<&FieldElement<F>> for Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
-
operator.source§fn sub(self, other: &FieldElement<F>) -> Polynomial<FieldElement<L>>
fn sub(self, other: &FieldElement<F>) -> Polynomial<FieldElement<L>>
-
operation. Read moresource§impl<F, L> Sub<&Polynomial<FieldElement<L>>> for &FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Sub<&Polynomial<FieldElement<L>>> for &FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
-
operator.source§fn sub(self, other: &Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
fn sub(self, other: &Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
-
operation. Read moresource§impl<F, L> Sub<&Polynomial<FieldElement<L>>> for &Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Sub<&Polynomial<FieldElement<L>>> for &Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
-
operator.source§fn sub(
self,
substrahend: &Polynomial<FieldElement<L>>,
) -> Polynomial<FieldElement<L>>
fn sub( self, substrahend: &Polynomial<FieldElement<L>>, ) -> Polynomial<FieldElement<L>>
-
operation. Read moresource§impl<F, L> Sub<&Polynomial<FieldElement<L>>> for FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Sub<&Polynomial<FieldElement<L>>> for FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
-
operator.source§fn sub(self, other: &Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
fn sub(self, other: &Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
-
operation. Read moresource§impl<F, L> Sub<&Polynomial<FieldElement<L>>> for Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Sub<&Polynomial<FieldElement<L>>> for Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
-
operator.source§fn sub(
self,
substrahend: &Polynomial<FieldElement<L>>,
) -> Polynomial<FieldElement<L>>
fn sub( self, substrahend: &Polynomial<FieldElement<L>>, ) -> Polynomial<FieldElement<L>>
-
operation. Read moresource§impl<F, L> Sub<FieldElement<F>> for &Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Sub<FieldElement<F>> for &Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
-
operator.source§fn sub(self, other: FieldElement<F>) -> Polynomial<FieldElement<L>>
fn sub(self, other: FieldElement<F>) -> Polynomial<FieldElement<L>>
-
operation. Read moresource§impl<F, L> Sub<FieldElement<F>> for Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Sub<FieldElement<F>> for Polynomial<FieldElement<L>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
-
operator.source§fn sub(self, other: FieldElement<F>) -> Polynomial<FieldElement<L>>
fn sub(self, other: FieldElement<F>) -> Polynomial<FieldElement<L>>
-
operation. Read moresource§impl<F, L> Sub<Polynomial<FieldElement<L>>> for &FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Sub<Polynomial<FieldElement<L>>> for &FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
-
operator.source§fn sub(self, other: Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
fn sub(self, other: Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
-
operation. Read moresource§impl<F, L> Sub<Polynomial<FieldElement<L>>> for &Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Sub<Polynomial<FieldElement<L>>> for &Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
-
operator.source§fn sub(
self,
substrahend: Polynomial<FieldElement<L>>,
) -> Polynomial<FieldElement<L>>
fn sub( self, substrahend: Polynomial<FieldElement<L>>, ) -> Polynomial<FieldElement<L>>
-
operation. Read moresource§impl<F, L> Sub<Polynomial<FieldElement<L>>> for FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Sub<Polynomial<FieldElement<L>>> for FieldElement<F>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
-
operator.source§fn sub(self, other: Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
fn sub(self, other: Polynomial<FieldElement<L>>) -> Polynomial<FieldElement<L>>
-
operation. Read moresource§impl<F, L> Sub<Polynomial<FieldElement<L>>> for Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
impl<F, L> Sub<Polynomial<FieldElement<L>>> for Polynomial<FieldElement<F>>where
L: IsField,
F: IsSubFieldOf<L>,
source§type Output = Polynomial<FieldElement<L>>
type Output = Polynomial<FieldElement<L>>
-
operator.source§fn sub(
self,
substrahend: Polynomial<FieldElement<L>>,
) -> Polynomial<FieldElement<L>>
fn sub( self, substrahend: Polynomial<FieldElement<L>>, ) -> Polynomial<FieldElement<L>>
-
operation. Read moreimpl<FE: Eq> Eq for Polynomial<FE>
impl<FE> StructuralPartialEq for Polynomial<FE>
Auto Trait Implementations§
impl<FE> Freeze for Polynomial<FE>
impl<FE> RefUnwindSafe for Polynomial<FE>where
FE: RefUnwindSafe,
impl<FE> Send for Polynomial<FE>where
FE: Send,
impl<FE> Sync for Polynomial<FE>where
FE: Sync,
impl<FE> Unpin for Polynomial<FE>where
FE: Unpin,
impl<FE> UnwindSafe for Polynomial<FE>where
FE: 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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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