pub struct Diagonalization<RingElement> { /* private fields */ }Implementations§
Source§impl<RingElement> Diagonalization<RingElement>
impl<RingElement> Diagonalization<RingElement>
Source§impl<RingElement> Diagonalization<RingElement>
impl<RingElement> Diagonalization<RingElement>
pub fn list_of_single_bar_basis_vector_index_ledgers( &self, ) -> &Vec<SingleBarBasisVectorIndexLedger>
pub fn bases_encoded_as_rows_of_invertible_matrices( &self, ) -> &Vec<VecOfVec<usize, RingElement>>
Source§impl<RingElement> Diagonalization<RingElement>
impl<RingElement> Diagonalization<RingElement>
Source§impl<RingElement> Diagonalization<RingElement>
impl<RingElement> Diagonalization<RingElement>
Sourcepub fn number_of_bars(&self) -> usize
pub fn number_of_bars(&self) -> usize
Number of bars in the diagonalization
Sourcepub fn basis_vector_index_for_bar_b_over_vertex_v(
&self,
b: usize,
v: usize,
) -> Option<usize>
pub fn basis_vector_index_for_bar_b_over_vertex_v( &self, b: usize, v: usize, ) -> Option<usize>
Returns the index of the basis vector over vertex v that intersects bar number `b``
Returns None if b ≥ {number of bars} or v lies outside the interval for bar b
Sourcepub fn basis_vector_for_bar_b_over_vertex_v(
&self,
b: usize,
v: usize,
) -> Option<&Vec<(usize, RingElement)>>
pub fn basis_vector_for_bar_b_over_vertex_v( &self, b: usize, v: usize, ) -> Option<&Vec<(usize, RingElement)>>
Returns the the basis vector over vertex v that intersects bar number `b``
Returns None if b ≥ {number of bars} or v lies outside the interval for bar b
Sourcepub fn bases(&self) -> &Vec<VecOfVec<usize, RingElement>>
pub fn bases(&self) -> &Vec<VecOfVec<usize, RingElement>>
The sequence of bases that diagonalize the representation
The sequence is formatted as a & Vec< VecOfVec< usize, RingElement > >
Sourcepub fn bar<'a>(&'a self, i: usize) -> Option<&SingleBarBasisVectorIndexLedger>
pub fn bar<'a>(&'a self, i: usize) -> Option<&SingleBarBasisVectorIndexLedger>
Retuns an object which records every basis vector intersected by bar number i
Returns None if the barcode contains i or fewer bars.
Sourcepub fn bars(&self) -> &Vec<SingleBarBasisVectorIndexLedger>
pub fn bars(&self) -> &Vec<SingleBarBasisVectorIndexLedger>
Returns a reference to the list of bars
Trait Implementations§
Source§impl<RingElement: Clone> Clone for Diagonalization<RingElement>
impl<RingElement: Clone> Clone for Diagonalization<RingElement>
Source§fn clone(&self) -> Diagonalization<RingElement>
fn clone(&self) -> Diagonalization<RingElement>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<RingElement: Debug> Debug for Diagonalization<RingElement>
impl<RingElement: Debug> Debug for Diagonalization<RingElement>
impl<RingElement: Eq> Eq for Diagonalization<RingElement>
Source§impl<RingElement: PartialEq> PartialEq for Diagonalization<RingElement>
impl<RingElement: PartialEq> PartialEq for Diagonalization<RingElement>
impl<RingElement: PartialEq> StructuralPartialEq for Diagonalization<RingElement>
Auto Trait Implementations§
impl<RingElement> Freeze for Diagonalization<RingElement>
impl<RingElement> RefUnwindSafe for Diagonalization<RingElement>where
RingElement: RefUnwindSafe,
impl<RingElement> Send for Diagonalization<RingElement>where
RingElement: Send,
impl<RingElement> Sync for Diagonalization<RingElement>where
RingElement: Sync,
impl<RingElement> Unpin for Diagonalization<RingElement>where
RingElement: Unpin,
impl<RingElement> UnsafeUnpin for Diagonalization<RingElement>
impl<RingElement> UnwindSafe for Diagonalization<RingElement>where
RingElement: 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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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 moreSource§impl<T> IntoReverseOrder for T
impl<T> IntoReverseOrder for T
Source§fn into_reverse_order(self) -> ReverseOrder<T>
fn into_reverse_order(self) -> ReverseOrder<T>
Returns an inverted order operator, consuming self
Source§impl<T> MultiVectorOperations for T
impl<T> MultiVectorOperations for T
Source§fn linearly_combine_scalar_vector_pairs_without_symplifying<RingOperator, OrderOperator, Vector, Index, RingElement>(
self,
ring_operator: RingOperator,
order_operator: OrderOperator,
) -> IteratorsMergedInSortedOrder<Scale<Vector::IntoIter, RingOperator>, OrderOperator> ⓘwhere
Self: Sized + IntoIterator<Item = (RingOperator::Element, Vector)>,
Vector: IntoIterator<IntoIter: Iterator<Item: KeyValSet<Key = Index, Val = RingElement>>>,
Index: PartialEq,
OrderOperator: JudgePartialOrder<Vector::Item>,
RingOperator: Clone + SemiringOperations<Element = RingElement>,
fn linearly_combine_scalar_vector_pairs_without_symplifying<RingOperator, OrderOperator, Vector, Index, RingElement>(
self,
ring_operator: RingOperator,
order_operator: OrderOperator,
) -> IteratorsMergedInSortedOrder<Scale<Vector::IntoIter, RingOperator>, OrderOperator> ⓘwhere
Self: Sized + IntoIterator<Item = (RingOperator::Element, Vector)>,
Vector: IntoIterator<IntoIter: Iterator<Item: KeyValSet<Key = Index, Val = RingElement>>>,
Index: PartialEq,
OrderOperator: JudgePartialOrder<Vector::Item>,
RingOperator: Clone + SemiringOperations<Element = RingElement>,
Returns a linear combination, without simplifying Read more
Source§fn linearly_combine_scalar_vector_pairs<RingOperator, OrderOperator, Vector, RingElement>(
self,
ring_operator: RingOperator,
order_operator: OrderOperator,
) -> Simplify<IteratorsMergedInSortedOrder<Scale<Vector::IntoIter, RingOperator>, OrderOperator>, RingOperator> ⓘwhere
Self: Sized + IntoIterator<Item = (RingElement, Vector)>,
Vector: IntoIterator,
Vector::Item: PartialEq + KeyValSet<Val = RingElement>,
<Vector::Item as KeyValGet>::Key: PartialEq,
OrderOperator: JudgePartialOrder<Vector::Item>,
RingOperator: Clone + SemiringOperations<Element = RingElement>,
fn linearly_combine_scalar_vector_pairs<RingOperator, OrderOperator, Vector, RingElement>(
self,
ring_operator: RingOperator,
order_operator: OrderOperator,
) -> Simplify<IteratorsMergedInSortedOrder<Scale<Vector::IntoIter, RingOperator>, OrderOperator>, RingOperator> ⓘwhere
Self: Sized + IntoIterator<Item = (RingElement, Vector)>,
Vector: IntoIterator,
Vector::Item: PartialEq + KeyValSet<Val = RingElement>,
<Vector::Item as KeyValGet>::Key: PartialEq,
OrderOperator: JudgePartialOrder<Vector::Item>,
RingOperator: Clone + SemiringOperations<Element = RingElement>,
Returns a simplified linear combination Read more
Source§fn sum_vectors_unsimplified<OrderOperator>(
self,
order_operator: OrderOperator,
) -> IteratorsMergedInSortedOrder<<Self::Item as IntoIterator>::IntoIter, OrderOperator> ⓘwhere
Self: Sized + IntoIterator,
Self::Item: IntoIterator,
OrderOperator: JudgePartialOrder<<<Self as IntoIterator>::Item as IntoIterator>::Item>,
fn sum_vectors_unsimplified<OrderOperator>(
self,
order_operator: OrderOperator,
) -> IteratorsMergedInSortedOrder<<Self::Item as IntoIterator>::IntoIter, OrderOperator> ⓘwhere
Self: Sized + IntoIterator,
Self::Item: IntoIterator,
OrderOperator: JudgePartialOrder<<<Self as IntoIterator>::Item as IntoIterator>::Item>,
Sum two or more vectors without simplifying Read more
Source§fn sum_vectors<RingOperator, OrderOperator, RingElement, Index>(
self,
ring_operator: RingOperator,
order_operator: OrderOperator,
) -> Simplify<IteratorsMergedInSortedOrder<<Self::Item as IntoIterator>::IntoIter, OrderOperator>, RingOperator> ⓘwhere
Self: Sized + IntoIterator,
Self::Item: IntoIterator,
<Self::Item as IntoIterator>::Item: PartialEq + KeyValSet<Key = Index, Val = RingElement>,
OrderOperator: JudgePartialOrder<<<Self as IntoIterator>::Item as IntoIterator>::Item>,
RingOperator: SemiringOperations<Element = RingElement>,
Index: PartialEq,
fn sum_vectors<RingOperator, OrderOperator, RingElement, Index>(
self,
ring_operator: RingOperator,
order_operator: OrderOperator,
) -> Simplify<IteratorsMergedInSortedOrder<<Self::Item as IntoIterator>::IntoIter, OrderOperator>, RingOperator> ⓘwhere
Self: Sized + IntoIterator,
Self::Item: IntoIterator,
<Self::Item as IntoIterator>::Item: PartialEq + KeyValSet<Key = Index, Val = RingElement>,
OrderOperator: JudgePartialOrder<<<Self as IntoIterator>::Item as IntoIterator>::Item>,
RingOperator: SemiringOperations<Element = RingElement>,
Index: PartialEq,
Sum a collection of vectors, and simplify Read more
Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§unsafe fn to_subset_unchecked(&self) -> SS
unsafe fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.Source§impl<T> TransformIter for T
impl<T> TransformIter for T
Source§fn require_strict_ascent<OrderOperator>(
self,
order_operator: OrderOperator,
) -> RequireStrictAscent<Self, OrderOperator> ⓘ
fn require_strict_ascent<OrderOperator>( self, order_operator: OrderOperator, ) -> RequireStrictAscent<Self, OrderOperator> ⓘ
Wraps
self in a struct that requires items to appear in strictly sorted order. Read moreSource§fn require_strict_ascent_with_panic<OrderOperator>(
self,
order_operator: OrderOperator,
) -> RequireStrictAscentWithPanic<Self, OrderOperator> ⓘ
fn require_strict_ascent_with_panic<OrderOperator>( self, order_operator: OrderOperator, ) -> RequireStrictAscentWithPanic<Self, OrderOperator> ⓘ
Wraps
self in a struct that requires items to appear in strictly sorted order. Read more