Struct volute::sop::Sop

source ·
pub struct Sop { /* private fields */ }
Expand description

Sum of Products representation (Or of And)

This is the usual representation for 2-level logic optimization. Any boolean function can be represented this way, and the optimization can be done quite efficiently (with Espresso, for example).

Implementations§

source§

impl Sop

source

pub fn num_vars(&self) -> usize

Query the number of variables

source

pub fn zero(num_vars: usize) -> Sop

Return the constant zero Sop

source

pub fn one(num_vars: usize) -> Sop

Return the constant one Sop

source

pub fn num_cubes(&self) -> usize

Number of cubes in the Sop

source

pub fn num_lits(&self) -> usize

Number of literals in the Sop

source

pub fn is_zero(&self) -> bool

Returns whether the Sop is trivially constant zero

source

pub fn is_one(&self) -> bool

Returns whether the Sop is trivially constant one

source

pub fn nth_var(num_vars: usize, var: usize) -> Sop

Return the Sop representing the nth variable

source

pub fn nth_var_inv(num_vars: usize, var: usize) -> Sop

Return the Sop representing the nth variable, inverted

source

pub fn from_cubes(num_vars: usize, cubes: Vec<Cube>) -> Sop

Build an Sop from cubes

source

pub fn cubes(&self) -> &[Cube]

Returns the cubes in the Sop

source

pub fn value(&self, mask: usize) -> bool

Get the value of the Sop for these inputs (input bits packed in the mask)

Trait Implementations§

source§

impl BitAnd<&Sop> for &Sop

§

type Output = Sop

The resulting type after applying the & operator.
source§

fn bitand(self, rhs: &Sop) -> Self::Output

Performs the & operation. Read more
source§

impl BitAnd<&Sop> for Sop

§

type Output = Sop

The resulting type after applying the & operator.
source§

fn bitand(self, rhs: &Sop) -> Self::Output

Performs the & operation. Read more
source§

impl BitAnd<Sop> for &Sop

§

type Output = Sop

The resulting type after applying the & operator.
source§

fn bitand(self, rhs: Sop) -> Self::Output

Performs the & operation. Read more
source§

impl BitAnd for Sop

§

type Output = Sop

The resulting type after applying the & operator.
source§

fn bitand(self, rhs: Sop) -> Self::Output

Performs the & operation. Read more
source§

impl BitOr<&Sop> for &Sop

§

type Output = Sop

The resulting type after applying the | operator.
source§

fn bitor(self, rhs: &Sop) -> Self::Output

Performs the | operation. Read more
source§

impl BitOr<&Sop> for Sop

§

type Output = Sop

The resulting type after applying the | operator.
source§

fn bitor(self, rhs: &Sop) -> Self::Output

Performs the | operation. Read more
source§

impl BitOr<Sop> for &Sop

§

type Output = Sop

The resulting type after applying the | operator.
source§

fn bitor(self, rhs: Sop) -> Self::Output

Performs the | operation. Read more
source§

impl BitOr for Sop

§

type Output = Sop

The resulting type after applying the | operator.
source§

fn bitor(self, rhs: Sop) -> Self::Output

Performs the | operation. Read more
source§

impl Clone for Sop

source§

fn clone(&self) -> Sop

Returns a copy 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 Debug for Sop

source§

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

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

impl Display for Sop

source§

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

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

impl From<&Lut> for Sop

source§

fn from(value: &Lut) -> Self

Converts to this type from the input type.
source§

impl From<&Sop> for Lut

source§

fn from(value: &Sop) -> Self

Converts to this type from the input type.
source§

impl From<Lut> for Sop

source§

fn from(value: Lut) -> Self

Converts to this type from the input type.
source§

impl From<Sop> for Lut

source§

fn from(value: Sop) -> Self

Converts to this type from the input type.
source§

impl Hash for Sop

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Not for &Sop

§

type Output = Sop

The resulting type after applying the ! operator.
source§

fn not(self) -> Self::Output

Performs the unary ! operation. Read more
source§

impl Not for Sop

§

type Output = Sop

The resulting type after applying the ! operator.
source§

fn not(self) -> Self::Output

Performs the unary ! operation. Read more
source§

impl Ord for Sop

source§

fn cmp(&self, other: &Sop) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for Sop

source§

fn eq(&self, other: &Sop) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for Sop

source§

fn partial_cmp(&self, other: &Sop) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Eq for Sop

source§

impl StructuralEq for Sop

source§

impl StructuralPartialEq for Sop

Auto Trait Implementations§

§

impl RefUnwindSafe for Sop

§

impl Send for Sop

§

impl Sync for Sop

§

impl Unpin for Sop

§

impl UnwindSafe for Sop

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> 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,

§

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§

default 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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V