Struct scuttlebutt::field::polynomial::Polynomial
source · pub struct Polynomial<FE: FiniteField> {
pub constant: FE,
pub coefficients: SmallVec<[FE; 3]>,
}
Expand description
A polynomial over some given finite field, represented as the coefficient vector.
Fields§
§constant: FE
The coefficient for $x^0
$
coefficients: SmallVec<[FE; 3]>
The coefficients for $x^1, ..., x^n
$
coefficients[i]
is the coefficient for $x^{i+1}
$
Implementations§
source§impl<FE: FiniteField> Polynomial<FE>
impl<FE: FiniteField> Polynomial<FE>
sourcepub fn random(rng: &mut (impl RngCore + ?Sized), degree: usize) -> Self
pub fn random(rng: &mut (impl RngCore + ?Sized), degree: usize) -> Self
Construct a random polynomial of the given degree.
sourcepub fn divmod(&self, divisor: &Self) -> (Self, Self)
pub fn divmod(&self, divisor: &Self) -> (Self, Self)
Return (self / divisor, self % divisor)
sourcepub fn interpolate(points: &[(FE, FE)]) -> Self
pub fn interpolate(points: &[(FE, FE)]) -> Self
Interpolate a polynomial from the given (x,y)
points
§Panics
This function will panic if points
is empty, or if any x
values collide.
Trait Implementations§
source§impl<'a, FE: FiniteField> AddAssign<&'a Polynomial<FE>> for Polynomial<FE>
impl<'a, FE: FiniteField> AddAssign<&'a Polynomial<FE>> for Polynomial<FE>
source§fn add_assign(&mut self, rhs: &'a Polynomial<FE>)
fn add_assign(&mut self, rhs: &'a Polynomial<FE>)
Performs the
+=
operation. Read moresource§impl<FE: Clone + FiniteField> Clone for Polynomial<FE>
impl<FE: Clone + FiniteField> Clone for Polynomial<FE>
source§fn clone(&self) -> Polynomial<FE>
fn clone(&self) -> Polynomial<FE>
Returns a copy 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<FE: FiniteField> ConstantTimeEq for Polynomial<FE>
impl<FE: FiniteField> ConstantTimeEq for Polynomial<FE>
source§impl<FE: FiniteField> Debug for Polynomial<FE>
impl<FE: FiniteField> Debug for Polynomial<FE>
source§impl<FE: FiniteField> From<&[FE]> for Polynomial<FE>
impl<FE: FiniteField> From<&[FE]> for Polynomial<FE>
source§impl<FE: FiniteField> Index<usize> for Polynomial<FE>
impl<FE: FiniteField> Index<usize> for Polynomial<FE>
Index into the Polynomial where 0 is the constant term.
source§impl<FE: FiniteField> IndexMut<usize> for Polynomial<FE>
impl<FE: FiniteField> IndexMut<usize> for Polynomial<FE>
Index into the Polynomial where 0 is the constant term.
source§impl<'a, FE: FiniteField> MulAssign<&'a Polynomial<FE>> for Polynomial<FE>
impl<'a, FE: FiniteField> MulAssign<&'a Polynomial<FE>> for Polynomial<FE>
source§fn mul_assign(&mut self, rhs: &'a Polynomial<FE>)
fn mul_assign(&mut self, rhs: &'a Polynomial<FE>)
Performs the
*=
operation. Read moresource§impl<FE: FiniteField> MulAssign<FE> for Polynomial<FE>
impl<FE: FiniteField> MulAssign<FE> for Polynomial<FE>
source§fn mul_assign(&mut self, rhs: FE)
fn mul_assign(&mut self, rhs: FE)
Performs the
*=
operation. Read moresource§impl<FE: FiniteField> PartialEq for Polynomial<FE>
impl<FE: FiniteField> PartialEq for Polynomial<FE>
source§impl<'a, FE: FiniteField> SubAssign<&'a Polynomial<FE>> for Polynomial<FE>
impl<'a, FE: FiniteField> SubAssign<&'a Polynomial<FE>> for Polynomial<FE>
source§fn sub_assign(&mut self, rhs: &'a Polynomial<FE>)
fn sub_assign(&mut self, rhs: &'a Polynomial<FE>)
Performs the
-=
operation. Read moreimpl<FE: Eq + FiniteField> Eq for Polynomial<FE>
Auto Trait Implementations§
impl<FE> Freeze for Polynomial<FE>where
FE: Freeze,
impl<FE> RefUnwindSafe for Polynomial<FE>where
FE: RefUnwindSafe,
impl<FE> Send for Polynomial<FE>
impl<FE> Sync for Polynomial<FE>
impl<FE> Unpin for Polynomial<FE>where
FE: Unpin,
impl<FE> UnwindSafe for Polynomial<FE>where
FE: UnwindSafe + RefUnwindSafe,
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