pub struct LBLT<T: ComplexField, N: Dim>{ /* private fields */ }Expand description
Bunch–Kaufman LBL^H factorization of a Hermitian matrix with symmetric pivoting.
Implementations§
Source§impl<T: Copy + ComplexField, N: Dim> LBLT<T, N>
impl<T: Copy + ComplexField, N: Dim> LBLT<T, N>
Sourcepub fn new(matrix: OMatrix<T, N, N>) -> Self
pub fn new(matrix: OMatrix<T, N, N>) -> Self
Compute the factorization of a complex Hermitian matrix using the Bunch-Kaufman block-diagonal pivoting method:
P A P^T = L * B * L^H
where P is the permutation induced by the pivot sequence, L is unit lower triangular in the permuted basis, and B is Hermitian block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
This implementation follows the partial pivoting (Algorithm A) variant from
Bunch & Kaufman (1977), which is also the basis for LAPACK’s ?sytrf/?hetrf routines.
Sourcepub fn l_permuted(&self) -> OMatrix<T, N, N>
pub fn l_permuted(&self) -> OMatrix<T, N, N>
Returns the permutation-aware factor P^T L.
This factor can be combined directly with d() to reconstruct the original
matrix. In general P^T L is not lower triangular, even though L itself is
unit lower triangular in the permuted basis.
Sourcepub fn solve<M: Dim, S>(
&self,
b: &Matrix<T, N, M, S>,
) -> Option<OMatrix<T, N, M>>
pub fn solve<M: Dim, S>( &self, b: &Matrix<T, N, M, S>, ) -> Option<OMatrix<T, N, M>>
Solves the linear system A * x = b using this factorization.
Sourcepub fn solve_mut<M: Dim>(&self, b: &mut OMatrix<T, N, M>) -> boolwhere
DefaultAllocator: Allocator<N, M>,
pub fn solve_mut<M: Dim>(&self, b: &mut OMatrix<T, N, M>) -> boolwhere
DefaultAllocator: Allocator<N, M>,
Solves the linear system A * x = b in place, overwriting b with the solution.
Sourcepub fn determinant(&self) -> T::RealField
pub fn determinant(&self) -> T::RealField
Computes the determinant of the decomposed matrix.
Trait Implementations§
Auto Trait Implementations§
impl<T, N> !Freeze for LBLT<T, N>
impl<T, N> !RefUnwindSafe for LBLT<T, N>
impl<T, N> !Send for LBLT<T, N>
impl<T, N> !Sync for LBLT<T, N>
impl<T, N> !Unpin for LBLT<T, N>
impl<T, N> !UnsafeUnpin for LBLT<T, N>
impl<T, N> !UnwindSafe for LBLT<T, N>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity 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>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.