UsingColBasisIndex

Struct UsingColBasisIndex 

Source
pub struct UsingColBasisIndex<M: MatrixOracle + HasColBasis> { /* private fields */ }
Expand description

Trait Implementations§

Source§

impl<M: Clone + MatrixOracle + HasColBasis> Clone for UsingColBasisIndex<M>

Source§

fn clone(&self) -> UsingColBasisIndex<M>

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<M: Debug + MatrixOracle + HasColBasis> Debug for UsingColBasisIndex<M>

Source§

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

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

impl<M> HasRowFiltration for UsingColBasisIndex<M>

Source§

type FiltrationT = <M as HasRowFiltration>::FiltrationT

The type that the filtration function is valued in.
Source§

fn filtration_value(&self, row: Self::RowT) -> Self::FiltrationT

Implementing the filtration function on the row basis.
Source§

fn column_with_filtration( &self, col: Self::ColT, ) -> impl Iterator<Item = ColumnEntry<Self::FiltrationT, Self::RowT, Self::CoefficientField>>

Uses MatrixOracle::column and HasRowFiltration::filtration_value to provide an iterator over non-zero column entries, enriches with the row filtration value. Read more
Source§

fn empty_bhcol( &self, ) -> BHCol<Self::FiltrationT, Self::RowT, Self::CoefficientField>

Initialise an empty binary heap that can accept entries from this matrix. Mostly an implementation detail of build_bhcol.
Source§

fn build_bhcol( &self, col: Self::ColT, ) -> BHCol<Self::FiltrationT, Self::RowT, Self::CoefficientField>

Builds a binary heap out of the non-zero entries in this column, sorted according to the filtration value and then the default ordering on RowT. Popping top entries off this binary heap will allow access to the column pivot. Read more
Source§

impl<M> MatrixOracle for UsingColBasisIndex<M>

Source§

type CoefficientField = <M as MatrixOracle>::CoefficientField

Represents the non-zero elements in the field over which we are doing linear algebra.
Source§

type ColT = usize

Represents elements in the domain basis.
Source§

type RowT = <M as MatrixOracle>::RowT

Represents elements in the target basis.
Source§

fn column( &self, col: Self::ColT, ) -> impl Iterator<Item = (Self::CoefficientField, Self::RowT)>

Given an element col in the domain basis, express the image of col under the linear transformation as a linear combination of elements in the target basis. You should provide this combination is an iterator of (coeff, row) tuples where each row is an element of the target basis. If coeff is 0 then omit this term from the linear combination. Read more
Source§

fn eq_on_col<M2>(&self, other: &M2, col: Self::ColT) -> bool
where Self: Sized, M2: MatrixOracle<CoefficientField = Self::CoefficientField, ColT = Self::ColT, RowT = Self::RowT>,

Checks that the matricies are equal on the specified col, ignoring ordering due to filtration values
Source§

fn with_trivial_filtration(self) -> WithTrivialFiltration<Self>
where Self: Sized,

Endows self with a filtration in which all rows have the same filtration value: ().
Source§

fn with_filtration<FT: FiltrationValue, F: Fn(Self::RowT) -> FT>( self, filtration_function: F, ) -> WithFuncFiltration<Self, FT, F>
where Self: Sized,

Endows self with the filtration given by the provided filtration_function.
Source§

fn with_basis<B>(self, basis: B) -> MatrixWithBasis<Self, B>
where Self: Sized, B: ColBasis<ElemT = Self::ColT>,

Endows self with the basis basis.
Source§

fn reverse(self) -> ReverseMatrix<Self>
where Self: Sized,

Reverse the order on both the rows and columns. Both the indices and the filtration values are now the Reverse of their previous type.
Source§

fn unreverse<ColT, RowT>(self) -> UnreverseMatrix<Self>
where Self: Sized + MatrixOracle<RowT = Reverse<RowT>, ColT = Reverse<ColT>>,

Reverse the order on both the rows and columns. Can only be called when the indices are of the form Reverse<ColT> and Reverse<RowT> Returns a matrix indexed by ColT and RowT. Additionally, the filtration value can be ‘unreversed’. Can be useful when self was obtained by reducing a reversed matrix.
Source§

fn consolidate(self) -> Consolidator<Self>
where Self: Sized,

When accessing a column of the consolidated matrix, the corresponding column of self will be requested and stored into a binary heap. An iterator through this binary heap is then returned. Read more
Source§

fn cache_cols(self) -> WithCachedCols<Self>
where Self: Sized,

Returns a wrapper around self which caches any calls to column in an internal HashMap. Read more
Source§

impl<M: Copy + MatrixOracle + HasColBasis> Copy for UsingColBasisIndex<M>

Auto Trait Implementations§

§

impl<M> Freeze for UsingColBasisIndex<M>
where M: Freeze,

§

impl<M> RefUnwindSafe for UsingColBasisIndex<M>
where M: RefUnwindSafe,

§

impl<M> Send for UsingColBasisIndex<M>
where M: Send,

§

impl<M> Sync for UsingColBasisIndex<M>
where M: Sync,

§

impl<M> Unpin for UsingColBasisIndex<M>
where M: Unpin,

§

impl<M> UnwindSafe for UsingColBasisIndex<M>
where M: 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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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