Skip to main content

Polynom

Struct Polynom 

Source
pub struct Polynom<C: Coef> { /* private fields */ }
Expand description

Represents a polynomial. Contains additional data structures to allow for fast variable substitution.

Implementations§

Source§

impl<C: Coef> Polynom<C>

Source

pub fn new(m: Mod) -> Self

Source

pub fn with_max_mod() -> Self

Source

pub fn from_monoms(m: Mod, monoms: impl Iterator<Item = (C, Term)>) -> Self

Source

pub fn size(&self) -> usize

Source

pub fn is_zero(&self) -> bool

Source

pub fn get_mod(&self) -> Mod

Source

pub fn change_mod(&mut self, new_m: Mod)

Currently only allows for increating the mod coefficient!

Source

pub fn sorted_monom_vec(&self) -> Vec<(C, Term)>

Source

pub fn replace_var(&mut self, target: VarIndex, mons: &[(C, Term)])

Source

pub fn coef_sum(&self) -> C

The sum (modulo M) across all coefficient of the polynomial. Since we are in the digital domain this is the maximum value the polynomial could ever evaluate to.

Source

pub fn iter_vars(&self) -> impl Iterator<Item = VarIndex>

An iterator over all unique variables contained in this polynomial.

Source§

impl<C: Coef> Polynom<C>

Routines to replace specific gate types

Source

pub fn replace_and(&mut self, out: VarIndex, a: VarIndex, b: VarIndex)

Source

pub fn replace_or(&mut self, out: VarIndex, a: VarIndex, b: VarIndex)

Source

pub fn replace_xor(&mut self, out: VarIndex, a: VarIndex, b: VarIndex)

Source

pub fn replace_not(&mut self, out: VarIndex, a: VarIndex)

Source

pub fn replace_identity(&mut self, out: VarIndex, a: VarIndex)

Source

pub fn replace_true(&mut self, out: VarIndex)

Source

pub fn replace_false(&mut self, out: VarIndex)

Source§

impl<C: Coef> Polynom<C>

Algebra routines built on core functionality.

Source

pub fn add_assign(&mut self, other: &Self)

Adds the other polynomial to self.

Source

pub fn mul(&self, other: &Self) -> Self

Creates a new polynomial which is the product of self and other.

Source

pub fn scale(&mut self, coef: &C)

Scale all monomials with the given coefficient.

Trait Implementations§

Source§

impl<C: Clone + Coef> Clone for Polynom<C>

Source§

fn clone(&self) -> Polynom<C>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<C: Debug + Coef> Debug for Polynom<C>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<C: Coef + Display> Display for Polynom<C>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<C: Coef> From<PhaseOptPolynom<C>> for Polynom<C>

Source§

fn from(value: PhaseOptPolynom<C>) -> Self

Converts to this type from the input type.
Source§

impl<C: Coef> From<Polynom<C>> for PhaseOptPolynom<C>

Source§

fn from(inner: Polynom<C>) -> Self

Converts to this type from the input type.
Source§

impl<C: Coef> FromStr for Polynom<C>

Source§

type Err = ()

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more

Auto Trait Implementations§

§

impl<C> Freeze for Polynom<C>

§

impl<C> RefUnwindSafe for Polynom<C>
where C: RefUnwindSafe,

§

impl<C> Send for Polynom<C>
where C: Send,

§

impl<C> Sync for Polynom<C>
where C: Sync,

§

impl<C> Unpin for Polynom<C>
where C: Unpin,

§

impl<C> UnsafeUnpin for Polynom<C>

§

impl<C> UnwindSafe for Polynom<C>
where C: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.