pub struct MatrixStructure<RS: SetSignature, RSB: BorrowedStructure<RS>> { /* private fields */ }Implementations§
Source§impl<FS: ComplexConjugateSignature, FSB: BorrowedStructure<FS>> MatrixStructure<FS, FSB>
impl<FS: ComplexConjugateSignature, FSB: BorrowedStructure<FS>> MatrixStructure<FS, FSB>
Source§impl<FS: ComplexConjugateSignature + RingSignature, FSB: BorrowedStructure<FS>> MatrixStructure<FS, FSB>
impl<FS: ComplexConjugateSignature + RingSignature, FSB: BorrowedStructure<FS>> MatrixStructure<FS, FSB>
Source§impl<FS: ComplexConjugateSignature + FieldSignature, FSB: BorrowedStructure<FS>> MatrixStructure<FS, FSB>
impl<FS: ComplexConjugateSignature + FieldSignature, FSB: BorrowedStructure<FS>> MatrixStructure<FS, FSB>
pub fn gram_schmidt_row_orthogonalization_algorithm( &self, mat: Matrix<FS::Set>, ) -> (Matrix<FS::Set>, Matrix<FS::Set>)
pub fn gram_schmidt_col_orthogonalization_algorithm( &self, mat: Matrix<FS::Set>, ) -> (Matrix<FS::Set>, Matrix<FS::Set>)
pub fn gram_schmidt_row_orthogonalization( &self, mat: Matrix<FS::Set>, ) -> Matrix<FS::Set>
pub fn gram_schmidt_col_orthogonalization( &self, mat: Matrix<FS::Set>, ) -> Matrix<FS::Set>
Source§impl<FS: ComplexConjugateSignature + PositiveRealNthRootSignature + FieldSignature, FSB: BorrowedStructure<FS>> MatrixStructure<FS, FSB>
impl<FS: ComplexConjugateSignature + PositiveRealNthRootSignature + FieldSignature, FSB: BorrowedStructure<FS>> MatrixStructure<FS, FSB>
pub fn lq_decomposition_algorithm( &self, mat: Matrix<FS::Set>, ) -> (Matrix<FS::Set>, Matrix<FS::Set>)
pub fn qr_decomposition_algorithm( &self, mat: Matrix<FS::Set>, ) -> (Matrix<FS::Set>, Matrix<FS::Set>)
pub fn gram_schmidt_row_orthonormalization( &self, mat: Matrix<FS::Set>, ) -> Matrix<FS::Set>
pub fn gram_schmidt_col_orthonormalization( &self, mat: Matrix<FS::Set>, ) -> Matrix<FS::Set>
Source§impl<Ring: HermiteAlgorithmSignature, RingB: BorrowedStructure<Ring>> MatrixStructure<Ring, RingB>
impl<Ring: HermiteAlgorithmSignature, RingB: BorrowedStructure<Ring>> MatrixStructure<Ring, RingB>
Sourcepub fn row_hermite_algorithm(
&self,
m: Matrix<Ring::Set>,
) -> (Matrix<Ring::Set>, Matrix<Ring::Set>, Ring::Set, Vec<usize>)
pub fn row_hermite_algorithm( &self, m: Matrix<Ring::Set>, ) -> (Matrix<Ring::Set>, Matrix<Ring::Set>, Ring::Set, Vec<usize>)
Return (H, U, u_det, pivots) such that
- H is in row hermite normal form, meaning
- U is invertible
- UM=H
- u_det is the determinant of u
- pivots[r] is the column of the rth pivot
pub fn col_hermite_algorithm( &self, a: Matrix<Ring::Set>, ) -> (Matrix<Ring::Set>, Matrix<Ring::Set>, Ring::Set, Vec<usize>)
pub fn det(&self, a: Matrix<Ring::Set>) -> Result<Ring::Set, MatOppErr>
pub fn rank(&self, a: Matrix<Ring::Set>) -> usize
Source§impl<Ring: ReducedHermiteAlgorithmSignature, RingB: BorrowedStructure<Ring>> MatrixStructure<Ring, RingB>
impl<Ring: ReducedHermiteAlgorithmSignature, RingB: BorrowedStructure<Ring>> MatrixStructure<Ring, RingB>
Sourcepub fn row_reduced_hermite_algorithm(
&self,
m: Matrix<Ring::Set>,
) -> (Matrix<Ring::Set>, Matrix<Ring::Set>, Ring::Set, Vec<usize>)
pub fn row_reduced_hermite_algorithm( &self, m: Matrix<Ring::Set>, ) -> (Matrix<Ring::Set>, Matrix<Ring::Set>, Ring::Set, Vec<usize>)
Returns (H, U, u_det, pivots) such that
- H is in row reduced hermite normal form, meaning entries above pivots have euclidean norm strictly less than the pivot
- U is invertible
- UM=H
- pivots[r] is the column of the rth pivot and pivots.len() == rank(A)
pub fn row_reduced_hermite_normal_form( &self, m: Matrix<Ring::Set>, ) -> Matrix<Ring::Set>
pub fn col_reduced_hermite_algorithm( &self, m: Matrix<Ring::Set>, ) -> (Matrix<Ring::Set>, Matrix<Ring::Set>, Ring::Set, Vec<usize>)
pub fn col_reduced_hermite_normal_form( &self, m: Matrix<Ring::Set>, ) -> Matrix<Ring::Set>
pub fn inv(&self, a: Matrix<Ring::Set>) -> Result<Matrix<Ring::Set>, MatOppErr>
pub fn row_span( &self, matrix: Matrix<Ring::Set>, ) -> FinitelyFreeSubmodule<Ring::Set>
pub fn col_span( &self, matrix: Matrix<Ring::Set>, ) -> FinitelyFreeSubmodule<Ring::Set>
pub fn row_kernel( &self, matrix: Matrix<Ring::Set>, ) -> FinitelyFreeSubmodule<Ring::Set>
pub fn col_kernel( &self, matrix: Matrix<Ring::Set>, ) -> FinitelyFreeSubmodule<Ring::Set>
pub fn row_preimage( &self, matrix: &Matrix<Ring::Set>, space: &FinitelyFreeSubmodule<Ring::Set>, ) -> FinitelyFreeSubmodule<Ring::Set>
pub fn col_preimage( &self, matrix: &Matrix<Ring::Set>, space: &FinitelyFreeSubmodule<Ring::Set>, ) -> FinitelyFreeSubmodule<Ring::Set>
pub fn row_affine_span( &self, matrix: Matrix<Ring::Set>, ) -> FinitelyFreeSubmoduleAffineSubset<Ring::Set>
pub fn col_affine_span( &self, matrix: Matrix<Ring::Set>, ) -> FinitelyFreeSubmoduleAffineSubset<Ring::Set>
pub fn row_solve( &self, matrix: Matrix<Ring::Set>, y: &Vec<Ring::Set>, ) -> Option<Vec<Ring::Set>>
pub fn col_solve( &self, matrix: Matrix<Ring::Set>, y: &Vec<Ring::Set>, ) -> Option<Vec<Ring::Set>>
pub fn row_solution_set( &self, matrix: Matrix<Ring::Set>, y: &Vec<Ring::Set>, ) -> FinitelyFreeSubmoduleAffineSubset<Ring::Set>
pub fn col_solution_set( &self, matrix: Matrix<Ring::Set>, y: &Vec<Ring::Set>, ) -> FinitelyFreeSubmoduleAffineSubset<Ring::Set>
Source§impl<FS: AlgebraicClosureSignature, FSB: BorrowedStructure<FS>> MatrixStructure<FS, FSB>where
PolynomialStructure<FS::BFS, FS::BFS>: FactoringMonoidSignature<FactoredExponent = NaturalCanonicalStructure> + SetSignature<Set = Polynomial<<FS::BFS as SetSignature>::Set>>,
impl<FS: AlgebraicClosureSignature, FSB: BorrowedStructure<FS>> MatrixStructure<FS, FSB>where
PolynomialStructure<FS::BFS, FS::BFS>: FactoringMonoidSignature<FactoredExponent = NaturalCanonicalStructure> + SetSignature<Set = Polynomial<<FS::BFS as SetSignature>::Set>>,
pub fn eigenvalues_list( &self, mat: Matrix<<FS::BFS as SetSignature>::Set>, ) -> Vec<FS::Set>
pub fn eigenvalues_unique( &self, mat: Matrix<<FS::BFS as SetSignature>::Set>, ) -> Vec<FS::Set>
pub fn eigenvalues_powers( &self, mat: Matrix<<FS::BFS as SetSignature>::Set>, ) -> Vec<(FS::Set, usize)>
pub fn generalized_col_eigenspace( &self, mat: &Matrix<<FS::BFS as SetSignature>::Set>, eigenvalue: &FS::Set, k: usize, ) -> FinitelyFreeSubmodule<FS::Set>
pub fn generalized_row_eigenspace( &self, mat: &Matrix<<FS::BFS as SetSignature>::Set>, eigenvalue: &FS::Set, k: usize, ) -> FinitelyFreeSubmodule<FS::Set>
pub fn col_eigenspace( &self, mat: &Matrix<<FS::BFS as SetSignature>::Set>, eigenvalue: &FS::Set, ) -> FinitelyFreeSubmodule<FS::Set>
pub fn row_eigenspace( &self, mat: &Matrix<<FS::BFS as SetSignature>::Set>, eigenvalue: &FS::Set, ) -> FinitelyFreeSubmodule<FS::Set>
pub fn jordan_algorithm( &self, mat: &Matrix<<FS::BFS as SetSignature>::Set>, ) -> (JordanNormalForm<FS>, Matrix<FS::Set>)
pub fn jordan_normal_form( &self, mat: &Matrix<<FS::BFS as SetSignature>::Set>, ) -> Matrix<FS::Set>
Source§impl<RS: SetSignature, RSB: BorrowedStructure<RS>> MatrixStructure<RS, RSB>
impl<RS: SetSignature, RSB: BorrowedStructure<RS>> MatrixStructure<RS, RSB>
Source§impl<RS: EqSignature, RSB: BorrowedStructure<RS>> MatrixStructure<RS, RSB>
impl<RS: EqSignature, RSB: BorrowedStructure<RS>> MatrixStructure<RS, RSB>
Source§impl<RS: ToStringSignature, RSB: BorrowedStructure<RS>> MatrixStructure<RS, RSB>
impl<RS: ToStringSignature, RSB: BorrowedStructure<RS>> MatrixStructure<RS, RSB>
Source§impl<RS: RingSignature, RSB: BorrowedStructure<RS>> MatrixStructure<RS, RSB>
impl<RS: RingSignature, RSB: BorrowedStructure<RS>> MatrixStructure<RS, RSB>
pub fn zero(&self, rows: usize, cols: usize) -> Matrix<RS::Set>
pub fn ident(&self, n: usize) -> Matrix<RS::Set>
pub fn diag(&self, diag: &[RS::Set]) -> Matrix<RS::Set>
pub fn join_diag<MatT: Borrow<Matrix<RS::Set>>>( &self, mats: Vec<MatT>, ) -> Matrix<RS::Set>
pub fn dot(&self, a: &Matrix<RS::Set>, b: &Matrix<RS::Set>) -> RS::Set
pub fn add_mut( &self, a: &mut Matrix<RS::Set>, b: &Matrix<RS::Set>, ) -> Result<(), MatOppErr>
pub fn add( &self, a: &Matrix<RS::Set>, b: &Matrix<RS::Set>, ) -> Result<Matrix<RS::Set>, MatOppErr>
pub fn neg_mut(&self, a: &mut Matrix<RS::Set>)
pub fn neg(&self, a: Matrix<RS::Set>) -> Matrix<RS::Set>
pub fn mul( &self, a: &Matrix<RS::Set>, b: &Matrix<RS::Set>, ) -> Result<Matrix<RS::Set>, MatOppErr>
pub fn apply_row(&self, mat: &Matrix<RS::Set>, row: &[RS::Set]) -> Vec<RS::Set>
pub fn apply_col(&self, mat: &Matrix<RS::Set>, col: &[RS::Set]) -> Vec<RS::Set>
pub fn mul_scalar( &self, a: Matrix<RS::Set>, scalar: &RS::Set, ) -> Matrix<RS::Set>
pub fn mul_scalar_ref( &self, a: &Matrix<RS::Set>, scalar: &RS::Set, ) -> Matrix<RS::Set>
pub fn det_naive(&self, a: &Matrix<RS::Set>) -> Result<RS::Set, MatOppErr>
pub fn trace(&self, a: &Matrix<RS::Set>) -> Result<RS::Set, MatOppErr>
pub fn nat_pow( &self, a: &Matrix<RS::Set>, k: &Natural, ) -> Result<Matrix<RS::Set>, MatOppErr>
Source§impl<FS: FieldSignature, FSB: BorrowedStructure<FS>> MatrixStructure<FS, FSB>
impl<FS: FieldSignature, FSB: BorrowedStructure<FS>> MatrixStructure<FS, FSB>
pub fn presentation_matrix( &self, m: Matrix<FS::Set>, ) -> Result<Matrix<Polynomial<FS::Set>>, MatOppErr>
pub fn minimal_polynomial( &self, m: Matrix<FS::Set>, ) -> Result<Polynomial<FS::Set>, MatOppErr>
pub fn characteristic_polynomial( &self, m: Matrix<FS::Set>, ) -> Result<Polynomial<FS::Set>, MatOppErr>
Source§impl<RS: GreatestCommonDivisorSignature, RSB: BorrowedStructure<RS>> MatrixStructure<RS, RSB>
impl<RS: GreatestCommonDivisorSignature, RSB: BorrowedStructure<RS>> MatrixStructure<RS, RSB>
Source§impl<RS: BezoutDomainSignature, RSB: BorrowedStructure<RS>> MatrixStructure<RS, RSB>
impl<RS: BezoutDomainSignature, RSB: BorrowedStructure<RS>> MatrixStructure<RS, RSB>
Trait Implementations§
Source§impl<RS: Clone + SetSignature, RSB: Clone + BorrowedStructure<RS>> Clone for MatrixStructure<RS, RSB>
impl<RS: Clone + SetSignature, RSB: Clone + BorrowedStructure<RS>> Clone for MatrixStructure<RS, RSB>
Source§fn clone(&self) -> MatrixStructure<RS, RSB>
fn clone(&self) -> MatrixStructure<RS, RSB>
Returns a duplicate 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<RS: Debug + SetSignature, RSB: Debug + BorrowedStructure<RS>> Debug for MatrixStructure<RS, RSB>
impl<RS: Debug + SetSignature, RSB: Debug + BorrowedStructure<RS>> Debug for MatrixStructure<RS, RSB>
Source§impl<RS: PartialEq + SetSignature, RSB: PartialEq + BorrowedStructure<RS>> PartialEq for MatrixStructure<RS, RSB>
impl<RS: PartialEq + SetSignature, RSB: PartialEq + BorrowedStructure<RS>> PartialEq for MatrixStructure<RS, RSB>
Source§impl<RS: SetSignature, RSB: BorrowedStructure<RS>> SetSignature for MatrixStructure<RS, RSB>
impl<RS: SetSignature, RSB: BorrowedStructure<RS>> SetSignature for MatrixStructure<RS, RSB>
impl<RS: Eq + SetSignature, RSB: Eq + BorrowedStructure<RS>> Eq for MatrixStructure<RS, RSB>
impl<RS: SetSignature, RSB: BorrowedStructure<RS>> Signature for MatrixStructure<RS, RSB>
impl<RS: SetSignature, RSB: BorrowedStructure<RS>> StructuralPartialEq for MatrixStructure<RS, RSB>
Auto Trait Implementations§
impl<RS, RSB> Freeze for MatrixStructure<RS, RSB>where
RSB: Freeze,
impl<RS, RSB> RefUnwindSafe for MatrixStructure<RS, RSB>where
RSB: RefUnwindSafe,
RS: RefUnwindSafe,
impl<RS, RSB> Send for MatrixStructure<RS, RSB>
impl<RS, RSB> Sync for MatrixStructure<RS, RSB>
impl<RS, RSB> Unpin for MatrixStructure<RS, RSB>
impl<RS, RSB> UnwindSafe for MatrixStructure<RS, RSB>where
RSB: UnwindSafe,
RS: 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.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 more