Struct Mat
#[repr(C)]pub struct Mat<E>where
E: Entity,{
inner: MatOwnImpl<E>,
row_capacity: usize,
col_capacity: usize,
__marker: PhantomData<E>,
}
Expand description
Heap allocated resizable matrix, similar to a 2D Vec
.
§Note
The memory layout of Mat
is guaranteed to be column-major, meaning that it has a row stride
of 1
, and an unspecified column stride that can be queried with Mat::col_stride
.
This implies that while each individual column is stored contiguously in memory, the matrix as a whole may not necessarily be contiguous. The implementation may add padding at the end of each column when overaligning each column can provide a performance gain.
Let us consider a 3×4 matrix
0 │ 3 │ 6 │ 9
───┼───┼───┼───
1 │ 4 │ 7 │ 10
───┼───┼───┼───
2 │ 5 │ 8 │ 11
The memory representation of the data held by such a matrix could look like the following:
0 1 2 X 3 4 5 X 6 7 8 X 9 10 11 X
where X represents padding elements.
Fields§
§inner: MatOwnImpl<E>
§row_capacity: usize
§col_capacity: usize
§__marker: PhantomData<E>
Implementations§
§impl<E> Mat<E>
impl<E> Mat<E>
pub fn solve_lower_triangular_in_place(
&self,
rhs: impl ColBatchMut<<E as Conjugate>::Canonical>,
)
pub fn solve_lower_triangular_in_place( &self, rhs: impl ColBatchMut<<E as Conjugate>::Canonical>, )
Assuming self
is a lower triangular matrix, solves the equation self * X = rhs
, and
stores the result in rhs
.
pub fn solve_upper_triangular_in_place(
&self,
rhs: impl ColBatchMut<<E as Conjugate>::Canonical>,
)
pub fn solve_upper_triangular_in_place( &self, rhs: impl ColBatchMut<<E as Conjugate>::Canonical>, )
Assuming self
is an upper triangular matrix, solves the equation self * X = rhs
, and
stores the result in rhs
.
pub fn solve_unit_lower_triangular_in_place(
&self,
rhs: impl ColBatchMut<<E as Conjugate>::Canonical>,
)
pub fn solve_unit_lower_triangular_in_place( &self, rhs: impl ColBatchMut<<E as Conjugate>::Canonical>, )
Assuming self
is a unit lower triangular matrix, solves the equation self * X = rhs
,
and stores the result in rhs
.
The diagonal of the matrix is not accessed.
pub fn solve_unit_upper_triangular_in_place(
&self,
rhs: impl ColBatchMut<<E as Conjugate>::Canonical>,
)
pub fn solve_unit_upper_triangular_in_place( &self, rhs: impl ColBatchMut<<E as Conjugate>::Canonical>, )
Assuming self
is a unit upper triangular matrix, solves the equation self * X = rhs
,
and stores the result in rhs
The diagonal of the matrix is not accessed.
pub fn solve_lower_triangular<ViewE, B>(
&self,
rhs: B,
) -> <B as ColBatch<ViewE>>::Owned
pub fn solve_lower_triangular<ViewE, B>( &self, rhs: B, ) -> <B as ColBatch<ViewE>>::Owned
Assuming self
is a lower triangular matrix, solves the equation self * X = rhs
, and
returns the result.
pub fn solve_upper_triangular<ViewE, B>(
&self,
rhs: B,
) -> <B as ColBatch<ViewE>>::Owned
pub fn solve_upper_triangular<ViewE, B>( &self, rhs: B, ) -> <B as ColBatch<ViewE>>::Owned
Assuming self
is an upper triangular matrix, solves the equation self * X = rhs
, and
returns the result.
pub fn solve_unit_lower_triangular<ViewE, B>(
&self,
rhs: B,
) -> <B as ColBatch<ViewE>>::Owned
pub fn solve_unit_lower_triangular<ViewE, B>( &self, rhs: B, ) -> <B as ColBatch<ViewE>>::Owned
Assuming self
is a unit lower triangular matrix, solves the equation self * X = rhs
, and
returns the result.
The diagonal of the matrix is not accessed.
pub fn solve_unit_upper_triangular<ViewE, B>(
&self,
rhs: B,
) -> <B as ColBatch<ViewE>>::Owned
pub fn solve_unit_upper_triangular<ViewE, B>( &self, rhs: B, ) -> <B as ColBatch<ViewE>>::Owned
Assuming self
is a unit upper triangular matrix, solves the equation self * X = rhs
, and
returns the result.
The diagonal of the matrix is not accessed.
pub fn cholesky(
&self,
side: Side,
) -> Result<Cholesky<<E as Conjugate>::Canonical>, CholeskyError>
pub fn cholesky( &self, side: Side, ) -> Result<Cholesky<<E as Conjugate>::Canonical>, CholeskyError>
Returns the Cholesky decomposition of self
. Only the provided side is accessed.
pub fn lblt(&self, side: Side) -> Lblt<<E as Conjugate>::Canonical>
pub fn lblt(&self, side: Side) -> Lblt<<E as Conjugate>::Canonical>
Returns the Bunch-Kaufman decomposition of self
. Only the provided side is accessed.
pub fn partial_piv_lu(&self) -> PartialPivLu<<E as Conjugate>::Canonical>
pub fn partial_piv_lu(&self) -> PartialPivLu<<E as Conjugate>::Canonical>
Returns the LU decomposition of self
with partial (row) pivoting.
pub fn full_piv_lu(&self) -> FullPivLu<<E as Conjugate>::Canonical>
pub fn full_piv_lu(&self) -> FullPivLu<<E as Conjugate>::Canonical>
Returns the LU decomposition of self
with full pivoting.
pub fn col_piv_qr(&self) -> ColPivQr<<E as Conjugate>::Canonical>
pub fn col_piv_qr(&self) -> ColPivQr<<E as Conjugate>::Canonical>
Returns the QR decomposition of self
with column pivoting.
pub fn selfadjoint_eigendecomposition(
&self,
side: Side,
) -> SelfAdjointEigendecomposition<<E as Conjugate>::Canonical>
pub fn selfadjoint_eigendecomposition( &self, side: Side, ) -> SelfAdjointEigendecomposition<<E as Conjugate>::Canonical>
Returns the eigendecomposition of self
, assuming it is self-adjoint. Only the provided
side is accessed.
pub fn eigendecomposition<ComplexE>(&self) -> Eigendecomposition<ComplexE>
pub fn eigendecomposition<ComplexE>(&self) -> Eigendecomposition<ComplexE>
Returns the eigendecomposition of self
, as a complex matrix.
pub fn complex_eigendecomposition(
&self,
) -> Eigendecomposition<<E as Conjugate>::Canonical>
pub fn complex_eigendecomposition( &self, ) -> Eigendecomposition<<E as Conjugate>::Canonical>
Returns the eigendecomposition of self
, when E
is in the complex domain.
pub fn determinant(&self) -> <E as Conjugate>::Canonical
pub fn determinant(&self) -> <E as Conjugate>::Canonical
Returns the determinant of self
.
pub fn selfadjoint_eigenvalues(
&self,
side: Side,
) -> Vec<<<E as Conjugate>::Canonical as ComplexField>::Real>
pub fn selfadjoint_eigenvalues( &self, side: Side, ) -> Vec<<<E as Conjugate>::Canonical as ComplexField>::Real>
Returns the eigenvalues of self
, assuming it is self-adjoint. Only the provided
side is accessed. The order of the eigenvalues is currently unspecified.
pub fn singular_values(
&self,
) -> Vec<<<E as Conjugate>::Canonical as ComplexField>::Real>
pub fn singular_values( &self, ) -> Vec<<<E as Conjugate>::Canonical as ComplexField>::Real>
Returns the singular values of self
, in nonincreasing order.
pub fn eigenvalues<ComplexE>(&self) -> Vec<ComplexE>
pub fn eigenvalues<ComplexE>(&self) -> Vec<ComplexE>
Returns the eigenvalues of self
, as complex values. The order of the eigenvalues is
currently unspecified.
pub fn complex_eigenvalues(&self) -> Vec<<E as Conjugate>::Canonical>
pub fn complex_eigenvalues(&self) -> Vec<<E as Conjugate>::Canonical>
Returns the eigenvalues of self
, when E
is in the complex domain. The order of the
eigenvalues is currently unspecified.
§impl<E> Mat<E>where
E: Entity,
impl<E> Mat<E>where
E: Entity,
pub fn with_capacity(row_capacity: usize, col_capacity: usize) -> Mat<E>
pub fn with_capacity(row_capacity: usize, col_capacity: usize) -> Mat<E>
Returns a new matrix with dimensions (0, 0)
, with enough capacity to hold a maximum of
row_capacity
rows and col_capacity
columns without reallocating. If either is 0
,
the matrix will not allocate.
§Panics
The function panics if the total capacity in bytes exceeds isize::MAX
.
pub fn from_fn(
nrows: usize,
ncols: usize,
f: impl FnMut(usize, usize) -> E,
) -> Mat<E>
pub fn from_fn( nrows: usize, ncols: usize, f: impl FnMut(usize, usize) -> E, ) -> Mat<E>
Returns a new matrix with dimensions (nrows, ncols)
, filled with the provided function.
§Panics
The function panics if the total capacity in bytes exceeds isize::MAX
.
pub fn zeros(nrows: usize, ncols: usize) -> Mat<E>
pub fn zeros(nrows: usize, ncols: usize) -> Mat<E>
Returns a new matrix with dimensions (nrows, ncols)
, filled with zeros.
§Panics
The function panics if the total capacity in bytes exceeds isize::MAX
.
pub fn ones(nrows: usize, ncols: usize) -> Mat<E>where
E: ComplexField,
pub fn ones(nrows: usize, ncols: usize) -> Mat<E>where
E: ComplexField,
Returns a new matrix with dimensions (nrows, ncols)
, filled with ones.
§Panics
The function panics if the total capacity in bytes exceeds isize::MAX
.
pub fn full(nrows: usize, ncols: usize, constant: E) -> Mat<E>where
E: ComplexField,
pub fn full(nrows: usize, ncols: usize, constant: E) -> Mat<E>where
E: ComplexField,
Returns a new matrix with dimensions (nrows, ncols)
, filled with a constant value.
§Panics
The function panics if the total capacity in bytes exceeds isize::MAX
.
pub fn identity(nrows: usize, ncols: usize) -> Mat<E>where
E: ComplexField,
pub fn identity(nrows: usize, ncols: usize) -> Mat<E>where
E: ComplexField,
Returns a new matrix with dimensions (nrows, ncols)
, filled with zeros, except the main
diagonal which is filled with ones.
§Panics
The function panics if the total capacity in bytes exceeds isize::MAX
.
pub unsafe fn set_dims(&mut self, nrows: usize, ncols: usize)
pub unsafe fn set_dims(&mut self, nrows: usize, ncols: usize)
Set the dimensions of the matrix.
§Safety
The behavior is undefined if any of the following conditions are violated:
nrows < self.row_capacity()
.ncols < self.col_capacity()
.- The elements that were previously out of bounds but are now in bounds must be initialized.
pub fn as_ptr(
&self,
) -> <<E as Entity>::Group as ForType>::FaerOf<*const <E as Entity>::Unit>
pub fn as_ptr( &self, ) -> <<E as Entity>::Group as ForType>::FaerOf<*const <E as Entity>::Unit>
Returns a pointer to the data of the matrix.
pub fn as_ptr_mut(
&mut self,
) -> <<E as Entity>::Group as ForType>::FaerOf<*mut <E as Entity>::Unit>
pub fn as_ptr_mut( &mut self, ) -> <<E as Entity>::Group as ForType>::FaerOf<*mut <E as Entity>::Unit>
Returns a mutable pointer to the data of the matrix.
pub fn row_capacity(&self) -> usize
pub fn row_capacity(&self) -> usize
Returns the row capacity, that is, the number of rows that the matrix is able to hold without needing to reallocate, excluding column insertions.
pub fn col_capacity(&self) -> usize
pub fn col_capacity(&self) -> usize
Returns the column capacity, that is, the number of columns that the matrix is able to hold without needing to reallocate, excluding row insertions.
pub fn row_stride(&self) -> isize
pub fn row_stride(&self) -> isize
Returns the offset between the first elements of two successive rows in the matrix.
Always returns 1
since the matrix is column major.
pub fn col_stride(&self) -> isize
pub fn col_stride(&self) -> isize
Returns the offset between the first elements of two successive columns in the matrix.
pub fn ptr_at(
&self,
row: usize,
col: usize,
) -> <<E as Entity>::Group as ForType>::FaerOf<*const <E as Entity>::Unit>
pub fn ptr_at( &self, row: usize, col: usize, ) -> <<E as Entity>::Group as ForType>::FaerOf<*const <E as Entity>::Unit>
Returns raw pointers to the element at the given indices.
pub fn ptr_at_mut(
&mut self,
row: usize,
col: usize,
) -> <<E as Entity>::Group as ForType>::FaerOf<*mut <E as Entity>::Unit>
pub fn ptr_at_mut( &mut self, row: usize, col: usize, ) -> <<E as Entity>::Group as ForType>::FaerOf<*mut <E as Entity>::Unit>
Returns raw pointers to the element at the given indices.
pub unsafe fn ptr_inbounds_at(
&self,
row: usize,
col: usize,
) -> <<E as Entity>::Group as ForType>::FaerOf<*const <E as Entity>::Unit>
pub unsafe fn ptr_inbounds_at( &self, row: usize, col: usize, ) -> <<E as Entity>::Group as ForType>::FaerOf<*const <E as Entity>::Unit>
Returns raw pointers to the element at the given indices, assuming the provided indices are within the matrix dimensions.
§Safety
The behavior is undefined if any of the following conditions are violated:
row < self.nrows()
.col < self.ncols()
.
pub unsafe fn ptr_inbounds_at_mut(
&mut self,
row: usize,
col: usize,
) -> <<E as Entity>::Group as ForType>::FaerOf<*mut <E as Entity>::Unit>
pub unsafe fn ptr_inbounds_at_mut( &mut self, row: usize, col: usize, ) -> <<E as Entity>::Group as ForType>::FaerOf<*mut <E as Entity>::Unit>
Returns raw pointers to the element at the given indices, assuming the provided indices are within the matrix dimensions.
§Safety
The behavior is undefined if any of the following conditions are violated:
row < self.nrows()
.col < self.ncols()
.
pub fn reserve_exact(&mut self, row_capacity: usize, col_capacity: usize)
pub fn reserve_exact(&mut self, row_capacity: usize, col_capacity: usize)
Reserves the minimum capacity for row_capacity
rows and col_capacity
columns without reallocating. Does nothing if the capacity is already sufficient.
§Panics
The function panics if the new total capacity in bytes exceeds isize::MAX
.
pub fn resize_with(
&mut self,
new_nrows: usize,
new_ncols: usize,
f: impl FnMut(usize, usize) -> E,
)
pub fn resize_with( &mut self, new_nrows: usize, new_ncols: usize, f: impl FnMut(usize, usize) -> E, )
Resizes the matrix in-place so that the new dimensions are (new_nrows, new_ncols)
.
New elements are created with the given function f
, so that elements at indices (i, j)
are created by calling f(i, j)
.
pub fn truncate(&mut self, new_nrows: usize, new_ncols: usize)
pub fn truncate(&mut self, new_nrows: usize, new_ncols: usize)
Truncates the matrix so that its new dimensions are new_nrows
and new_ncols
.
Both of the new dimensions must be smaller than or equal to the current dimensions.
§Panics
- Panics if
new_nrows > self.nrows()
. - Panics if
new_ncols > self.ncols()
.
pub fn col_as_slice(
&self,
col: usize,
) -> <<E as Entity>::Group as ForType>::FaerOf<&[<E as Entity>::Unit]>
pub fn col_as_slice( &self, col: usize, ) -> <<E as Entity>::Group as ForType>::FaerOf<&[<E as Entity>::Unit]>
Returns a reference to a slice over the column at the given index.
pub fn col_as_slice_mut(
&mut self,
col: usize,
) -> <<E as Entity>::Group as ForType>::FaerOf<&mut [<E as Entity>::Unit]>
pub fn col_as_slice_mut( &mut self, col: usize, ) -> <<E as Entity>::Group as ForType>::FaerOf<&mut [<E as Entity>::Unit]>
Returns a mutable reference to a slice over the column at the given index.
pub fn split_first_col(&self) -> Option<(ColRef<'_, E>, MatRef<'_, E>)>
pub fn split_first_col(&self) -> Option<(ColRef<'_, E>, MatRef<'_, E>)>
Returns a reference to the first column and a view over the remaining ones if the matrix has
at least one column, otherwise None
.
pub fn split_last_col(&self) -> Option<(ColRef<'_, E>, MatRef<'_, E>)>
pub fn split_last_col(&self) -> Option<(ColRef<'_, E>, MatRef<'_, E>)>
Returns a reference to the last column and a view over the remaining ones if the matrix has
at least one column, otherwise None
.
pub fn split_first_row(&self) -> Option<(RowRef<'_, E>, MatRef<'_, E>)>
pub fn split_first_row(&self) -> Option<(RowRef<'_, E>, MatRef<'_, E>)>
Returns a reference to the first row and a view over the remaining ones if the matrix has
at least one row, otherwise None
.
pub fn split_last_row(&self) -> Option<(RowRef<'_, E>, MatRef<'_, E>)>
pub fn split_last_row(&self) -> Option<(RowRef<'_, E>, MatRef<'_, E>)>
Returns a reference to the last row and a view over the remaining ones if the matrix has
at least one row, otherwise None
.
pub fn split_first_col_mut(&mut self) -> Option<(ColMut<'_, E>, MatMut<'_, E>)>
pub fn split_first_col_mut(&mut self) -> Option<(ColMut<'_, E>, MatMut<'_, E>)>
Returns a reference to the first column and a view over the remaining ones if the matrix has
at least one column, otherwise None
.
pub fn split_last_col_mut(&mut self) -> Option<(ColMut<'_, E>, MatMut<'_, E>)>
pub fn split_last_col_mut(&mut self) -> Option<(ColMut<'_, E>, MatMut<'_, E>)>
Returns a reference to the last column and a view over the remaining ones if the matrix has
at least one column, otherwise None
.
pub fn split_first_row_mut(&mut self) -> Option<(RowMut<'_, E>, MatMut<'_, E>)>
pub fn split_first_row_mut(&mut self) -> Option<(RowMut<'_, E>, MatMut<'_, E>)>
Returns a reference to the first row and a view over the remaining ones if the matrix has
at least one row, otherwise None
.
pub fn split_last_row_mut(&mut self) -> Option<(RowMut<'_, E>, MatMut<'_, E>)>
pub fn split_last_row_mut(&mut self) -> Option<(RowMut<'_, E>, MatMut<'_, E>)>
Returns a reference to the last row and a view over the remaining ones if the matrix has
at least one row, otherwise None
.
pub fn col_iter(&self) -> ColIter<'_, E>
pub fn col_iter(&self) -> ColIter<'_, E>
Returns an iterator over the columns of the matrix.
pub fn row_iter(&self) -> RowIter<'_, E>
pub fn row_iter(&self) -> RowIter<'_, E>
Returns an iterator over the rows of the matrix.
pub fn col_iter_mut(&mut self) -> ColIterMut<'_, E>
pub fn col_iter_mut(&mut self) -> ColIterMut<'_, E>
Returns an iterator over the columns of the matrix.
pub fn row_iter_mut(&mut self) -> RowIterMut<'_, E>
pub fn row_iter_mut(&mut self) -> RowIterMut<'_, E>
Returns an iterator over the rows of the matrix.
pub unsafe fn split_at_unchecked(
&self,
row: usize,
col: usize,
) -> (MatRef<'_, E>, MatRef<'_, E>, MatRef<'_, E>, MatRef<'_, E>)
pub unsafe fn split_at_unchecked( &self, row: usize, col: usize, ) -> (MatRef<'_, E>, MatRef<'_, E>, MatRef<'_, E>, MatRef<'_, E>)
Splits the matrix horizontally and vertically at the given indices into four corners and returns an array of each submatrix, in the following order:
- top left.
- top right.
- bottom left.
- bottom right.
§Safety
The behavior is undefined if any of the following conditions are violated:
row <= self.nrows()
.col <= self.ncols()
.
pub fn split_at(
&self,
row: usize,
col: usize,
) -> (MatRef<'_, E>, MatRef<'_, E>, MatRef<'_, E>, MatRef<'_, E>)
pub fn split_at( &self, row: usize, col: usize, ) -> (MatRef<'_, E>, MatRef<'_, E>, MatRef<'_, E>, MatRef<'_, E>)
Splits the matrix horizontally and vertically at the given indices into four corners and returns an array of each submatrix, in the following order:
- top left.
- top right.
- bottom left.
- bottom right.
§Panics
The function panics if any of the following conditions are violated:
row <= self.nrows()
.col <= self.ncols()
.
pub unsafe fn split_at_mut_unchecked(
&mut self,
row: usize,
col: usize,
) -> (MatMut<'_, E>, MatMut<'_, E>, MatMut<'_, E>, MatMut<'_, E>)
pub unsafe fn split_at_mut_unchecked( &mut self, row: usize, col: usize, ) -> (MatMut<'_, E>, MatMut<'_, E>, MatMut<'_, E>, MatMut<'_, E>)
Splits the matrix horizontally and vertically at the given indices into four corners and returns an array of each submatrix, in the following order:
- top left.
- top right.
- bottom left.
- bottom right.
§Safety
The behavior is undefined if any of the following conditions are violated:
row <= self.nrows()
.col <= self.ncols()
.
pub fn split_at_mut(
&mut self,
row: usize,
col: usize,
) -> (MatMut<'_, E>, MatMut<'_, E>, MatMut<'_, E>, MatMut<'_, E>)
pub fn split_at_mut( &mut self, row: usize, col: usize, ) -> (MatMut<'_, E>, MatMut<'_, E>, MatMut<'_, E>, MatMut<'_, E>)
Splits the matrix horizontally and vertically at the given indices into four corners and returns an array of each submatrix, in the following order:
- top left.
- top right.
- bottom left.
- bottom right.
§Panics
The function panics if any of the following conditions are violated:
row <= self.nrows()
.col <= self.ncols()
.
pub unsafe fn split_at_row_unchecked(
&self,
row: usize,
) -> (MatRef<'_, E>, MatRef<'_, E>)
pub unsafe fn split_at_row_unchecked( &self, row: usize, ) -> (MatRef<'_, E>, MatRef<'_, E>)
Splits the matrix horizontally at the given row into two parts and returns an array of each submatrix, in the following order:
- top.
- bottom.
§Safety
The behavior is undefined if the following condition is violated:
row <= self.nrows()
.
pub fn split_at_row(&self, row: usize) -> (MatRef<'_, E>, MatRef<'_, E>)
pub fn split_at_row(&self, row: usize) -> (MatRef<'_, E>, MatRef<'_, E>)
Splits the matrix horizontally at the given row into two parts and returns an array of each submatrix, in the following order:
- top.
- bottom.
§Panics
The function panics if the following condition is violated:
row <= self.nrows()
.
pub unsafe fn split_at_row_mut_unchecked(
&mut self,
row: usize,
) -> (MatMut<'_, E>, MatMut<'_, E>)
pub unsafe fn split_at_row_mut_unchecked( &mut self, row: usize, ) -> (MatMut<'_, E>, MatMut<'_, E>)
Splits the matrix horizontally at the given row into two parts and returns an array of each submatrix, in the following order:
- top.
- bottom.
§Safety
The behavior is undefined if the following condition is violated:
row <= self.nrows()
.
pub fn split_at_row_mut(&mut self, row: usize) -> (MatMut<'_, E>, MatMut<'_, E>)
pub fn split_at_row_mut(&mut self, row: usize) -> (MatMut<'_, E>, MatMut<'_, E>)
Splits the matrix horizontally at the given row into two parts and returns an array of each submatrix, in the following order:
- top.
- bottom.
§Panics
The function panics if the following condition is violated:
row <= self.nrows()
.
pub unsafe fn split_at_col_unchecked(
&self,
col: usize,
) -> (MatRef<'_, E>, MatRef<'_, E>)
pub unsafe fn split_at_col_unchecked( &self, col: usize, ) -> (MatRef<'_, E>, MatRef<'_, E>)
Splits the matrix vertically at the given row into two parts and returns an array of each submatrix, in the following order:
- left.
- right.
§Safety
The behavior is undefined if the following condition is violated:
col <= self.ncols()
.
pub fn split_at_col(&self, col: usize) -> (MatRef<'_, E>, MatRef<'_, E>)
pub fn split_at_col(&self, col: usize) -> (MatRef<'_, E>, MatRef<'_, E>)
Splits the matrix vertically at the given row into two parts and returns an array of each submatrix, in the following order:
- left.
- right.
§Panics
The function panics if the following condition is violated:
col <= self.ncols()
.
pub unsafe fn split_at_col_mut_unchecked(
&mut self,
col: usize,
) -> (MatMut<'_, E>, MatMut<'_, E>)
pub unsafe fn split_at_col_mut_unchecked( &mut self, col: usize, ) -> (MatMut<'_, E>, MatMut<'_, E>)
Splits the matrix vertically at the given row into two parts and returns an array of each submatrix, in the following order:
- left.
- right.
§Safety
The behavior is undefined if the following condition is violated:
col <= self.ncols()
.
pub fn split_at_col_mut(&mut self, col: usize) -> (MatMut<'_, E>, MatMut<'_, E>)
pub fn split_at_col_mut(&mut self, col: usize) -> (MatMut<'_, E>, MatMut<'_, E>)
Splits the matrix vertically at the given row into two parts and returns an array of each submatrix, in the following order:
- left.
- right.
§Panics
The function panics if the following condition is violated:
col <= self.ncols()
.
pub unsafe fn get_unchecked<RowRange, ColRange>(
&self,
row: RowRange,
col: ColRange,
) -> <MatRef<'_, E> as MatIndex<RowRange, ColRange>>::Target
pub unsafe fn get_unchecked<RowRange, ColRange>( &self, row: RowRange, col: ColRange, ) -> <MatRef<'_, E> as MatIndex<RowRange, ColRange>>::Target
Returns references to the element at the given indices, or submatrices if either row
or
col
is a range.
§Note
The values pointed to by the references are expected to be initialized, even if the pointed-to value is not read, otherwise the behavior is undefined.
§Safety
The behavior is undefined if any of the following conditions are violated:
row
must be contained in[0, self.nrows())
.col
must be contained in[0, self.ncols())
.
pub fn get<RowRange, ColRange>(
&self,
row: RowRange,
col: ColRange,
) -> <MatRef<'_, E> as MatIndex<RowRange, ColRange>>::Target
pub fn get<RowRange, ColRange>( &self, row: RowRange, col: ColRange, ) -> <MatRef<'_, E> as MatIndex<RowRange, ColRange>>::Target
Returns references to the element at the given indices, or submatrices if either row
or
col
is a range, with bound checks.
§Note
The values pointed to by the references are expected to be initialized, even if the pointed-to value is not read, otherwise the behavior is undefined.
§Panics
The function panics if any of the following conditions are violated:
row
must be contained in[0, self.nrows())
.col
must be contained in[0, self.ncols())
.
pub unsafe fn get_mut_unchecked<RowRange, ColRange>(
&mut self,
row: RowRange,
col: ColRange,
) -> <MatMut<'_, E> as MatIndex<RowRange, ColRange>>::Target
pub unsafe fn get_mut_unchecked<RowRange, ColRange>( &mut self, row: RowRange, col: ColRange, ) -> <MatMut<'_, E> as MatIndex<RowRange, ColRange>>::Target
Returns mutable references to the element at the given indices, or submatrices if either
row
or col
is a range.
§Note
The values pointed to by the references are expected to be initialized, even if the pointed-to value is not read, otherwise the behavior is undefined.
§Safety
The behavior is undefined if any of the following conditions are violated:
row
must be contained in[0, self.nrows())
.col
must be contained in[0, self.ncols())
.
pub fn get_mut<RowRange, ColRange>(
&mut self,
row: RowRange,
col: ColRange,
) -> <MatMut<'_, E> as MatIndex<RowRange, ColRange>>::Target
pub fn get_mut<RowRange, ColRange>( &mut self, row: RowRange, col: ColRange, ) -> <MatMut<'_, E> as MatIndex<RowRange, ColRange>>::Target
Returns mutable references to the element at the given indices, or submatrices if either
row
or col
is a range, with bound checks.
§Note
The values pointed to by the references are expected to be initialized, even if the pointed-to value is not read, otherwise the behavior is undefined.
§Panics
The function panics if any of the following conditions are violated:
row
must be contained in[0, self.nrows())
.col
must be contained in[0, self.ncols())
.
pub unsafe fn read_unchecked(&self, row: usize, col: usize) -> E
pub unsafe fn read_unchecked(&self, row: usize, col: usize) -> E
Reads the value of the element at the given indices.
§Safety
The behavior is undefined if any of the following conditions are violated:
row < self.nrows()
.col < self.ncols()
.
pub fn read(&self, row: usize, col: usize) -> E
pub fn read(&self, row: usize, col: usize) -> E
Reads the value of the element at the given indices, with bound checks.
§Panics
The function panics if any of the following conditions are violated:
row < self.nrows()
.col < self.ncols()
.
pub unsafe fn write_unchecked(&mut self, row: usize, col: usize, value: E)
pub unsafe fn write_unchecked(&mut self, row: usize, col: usize, value: E)
Writes the value to the element at the given indices.
§Safety
The behavior is undefined if any of the following conditions are violated:
row < self.nrows()
.col < self.ncols()
.
pub fn write(&mut self, row: usize, col: usize, value: E)
pub fn write(&mut self, row: usize, col: usize, value: E)
Writes the value to the element at the given indices, with bound checks.
§Panics
The function panics if any of the following conditions are violated:
row < self.nrows()
.col < self.ncols()
.
pub fn copy_from_triangular_lower<ViewE>(&mut self, other: impl AsMatRef<ViewE>)where
ViewE: Conjugate<Canonical = E>,
pub fn copy_from_triangular_lower<ViewE>(&mut self, other: impl AsMatRef<ViewE>)where
ViewE: Conjugate<Canonical = E>,
Copies the values from the lower triangular part of other
into the lower triangular
part of self
. The diagonal part is included.
§Panics
The function panics if any of the following conditions are violated:
self.nrows() == other.nrows()
.self.ncols() == other.ncols()
.self.nrows() == self.ncols()
.
pub fn copy_from_strict_triangular_lower<ViewE>(
&mut self,
other: impl AsMatRef<ViewE>,
)where
ViewE: Conjugate<Canonical = E>,
pub fn copy_from_strict_triangular_lower<ViewE>(
&mut self,
other: impl AsMatRef<ViewE>,
)where
ViewE: Conjugate<Canonical = E>,
Copies the values from the lower triangular part of other
into the lower triangular
part of self
. The diagonal part is excluded.
§Panics
The function panics if any of the following conditions are violated:
self.nrows() == other.nrows()
.self.ncols() == other.ncols()
.self.nrows() == self.ncols()
.
pub fn copy_from_triangular_upper<ViewE>(&mut self, other: impl AsMatRef<ViewE>)where
ViewE: Conjugate<Canonical = E>,
pub fn copy_from_triangular_upper<ViewE>(&mut self, other: impl AsMatRef<ViewE>)where
ViewE: Conjugate<Canonical = E>,
Copies the values from the upper triangular part of other
into the upper triangular
part of self
. The diagonal part is included.
§Panics
The function panics if any of the following conditions are violated:
self.nrows() == other.nrows()
.self.ncols() == other.ncols()
.self.nrows() == self.ncols()
.
pub fn copy_from_strict_triangular_upper<ViewE>(
&mut self,
other: impl AsMatRef<ViewE>,
)where
ViewE: Conjugate<Canonical = E>,
pub fn copy_from_strict_triangular_upper<ViewE>(
&mut self,
other: impl AsMatRef<ViewE>,
)where
ViewE: Conjugate<Canonical = E>,
Copies the values from the upper triangular part of other
into the upper triangular
part of self
. The diagonal part is excluded.
§Panics
The function panics if any of the following conditions are violated:
self.nrows() == other.nrows()
.self.ncols() == other.ncols()
.self.nrows() == self.ncols()
.
pub fn copy_from<ViewE>(&mut self, other: impl AsMatRef<ViewE>)where
ViewE: Conjugate<Canonical = E>,
pub fn copy_from<ViewE>(&mut self, other: impl AsMatRef<ViewE>)where
ViewE: Conjugate<Canonical = E>,
Copies the values from other
into self
.
pub fn fill_zero(&mut self)where
E: ComplexField,
pub fn fill_zero(&mut self)where
E: ComplexField,
Fills the elements of self
with zeros.
pub fn fill(&mut self, constant: E)
pub fn fill(&mut self, constant: E)
Fills the elements of self
with copies of constant
.
pub fn transpose_mut(&mut self) -> MatMut<'_, E>
pub fn transpose_mut(&mut self) -> MatMut<'_, E>
Returns a view over the transpose of self
.
pub fn conjugate(&self) -> MatRef<'_, <E as Conjugate>::Conj>where
E: Conjugate,
pub fn conjugate(&self) -> MatRef<'_, <E as Conjugate>::Conj>where
E: Conjugate,
Returns a view over the conjugate of self
.
pub fn conjugate_mut(&mut self) -> MatMut<'_, <E as Conjugate>::Conj>where
E: Conjugate,
pub fn conjugate_mut(&mut self) -> MatMut<'_, <E as Conjugate>::Conj>where
E: Conjugate,
Returns a view over the conjugate of self
.
pub fn adjoint(&self) -> MatRef<'_, <E as Conjugate>::Conj>where
E: Conjugate,
pub fn adjoint(&self) -> MatRef<'_, <E as Conjugate>::Conj>where
E: Conjugate,
Returns a view over the conjugate transpose of self
.
pub fn adjoint_mut(&mut self) -> MatMut<'_, <E as Conjugate>::Conj>where
E: Conjugate,
pub fn adjoint_mut(&mut self) -> MatMut<'_, <E as Conjugate>::Conj>where
E: Conjugate,
Returns a view over the conjugate transpose of self
.
pub fn canonicalize(&self) -> (MatRef<'_, <E as Conjugate>::Canonical>, Conj)where
E: Conjugate,
pub fn canonicalize(&self) -> (MatRef<'_, <E as Conjugate>::Canonical>, Conj)where
E: Conjugate,
Returns a view over the canonical representation of self
, as well as a flag declaring
whether self
is implicitly conjugated or not.
pub fn canonicalize_mut(
&mut self,
) -> (MatMut<'_, <E as Conjugate>::Canonical>, Conj)where
E: Conjugate,
pub fn canonicalize_mut(
&mut self,
) -> (MatMut<'_, <E as Conjugate>::Canonical>, Conj)where
E: Conjugate,
Returns a view over the canonical representation of self
, as well as a flag declaring
whether self
is implicitly conjugated or not.
pub fn reverse_rows(&self) -> MatRef<'_, E>
pub fn reverse_rows(&self) -> MatRef<'_, E>
Returns a view over the self
, with the rows in reversed order.
§Example
use faer::mat;
let matrix = mat![[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]];
let view = matrix.as_ref();
let reversed_rows = view.reverse_rows();
let expected = mat![[4.0, 5.0, 6.0], [1.0, 2.0, 3.0]];
assert_eq!(expected.as_ref(), reversed_rows);
pub fn reverse_rows_mut(&mut self) -> MatMut<'_, E>
pub fn reverse_rows_mut(&mut self) -> MatMut<'_, E>
Returns a view over the self
, with the rows in reversed order.
§Example
use faer::mat;
let mut matrix = mat![[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]];
let view = matrix.as_mut();
let reversed_rows = view.reverse_rows_mut();
let mut expected = mat![[4.0, 5.0, 6.0], [1.0, 2.0, 3.0]];
assert_eq!(expected.as_mut(), reversed_rows);
pub fn reverse_cols(&self) -> MatRef<'_, E>
pub fn reverse_cols(&self) -> MatRef<'_, E>
Returns a view over the self
, with the columns in reversed order.
§Example
use faer::mat;
let matrix = mat![[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]];
let view = matrix.as_ref();
let reversed_cols = view.reverse_cols();
let expected = mat![[3.0, 2.0, 1.0], [6.0, 5.0, 4.0]];
assert_eq!(expected.as_ref(), reversed_cols);
pub fn reverse_cols_mut(&mut self) -> MatMut<'_, E>
pub fn reverse_cols_mut(&mut self) -> MatMut<'_, E>
Returns a view over the self
, with the columns in reversed order.
§Example
use faer::mat;
let mut matrix = mat![[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]];
let view = matrix.as_mut();
let reversed_cols = view.reverse_cols_mut();
let mut expected = mat![[3.0, 2.0, 1.0], [6.0, 5.0, 4.0]];
assert_eq!(expected.as_mut(), reversed_cols);
pub fn reverse_rows_and_cols(&self) -> MatRef<'_, E>
pub fn reverse_rows_and_cols(&self) -> MatRef<'_, E>
Returns a view over the self
, with the rows and the columns in reversed order.
§Example
use faer::mat;
let matrix = mat![[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]];
let view = matrix.as_ref();
let reversed = view.reverse_rows_and_cols();
let expected = mat![[6.0, 5.0, 4.0], [3.0, 2.0, 1.0]];
assert_eq!(expected.as_ref(), reversed);
pub fn reverse_rows_and_cols_mut(&mut self) -> MatMut<'_, E>
pub fn reverse_rows_and_cols_mut(&mut self) -> MatMut<'_, E>
Returns a view over the self
, with the rows and the columns in reversed order.
§Example
use faer::mat;
let mut matrix = mat![[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]];
let view = matrix.as_mut();
let reversed = view.reverse_rows_and_cols_mut();
let mut expected = mat![[6.0, 5.0, 4.0], [3.0, 2.0, 1.0]];
assert_eq!(expected.as_mut(), reversed);
pub unsafe fn submatrix_unchecked(
&self,
row_start: usize,
col_start: usize,
nrows: usize,
ncols: usize,
) -> MatRef<'_, E>
pub unsafe fn submatrix_unchecked( &self, row_start: usize, col_start: usize, nrows: usize, ncols: usize, ) -> MatRef<'_, E>
Returns a view over the submatrix starting at indices (row_start, col_start)
, and with
dimensions (nrows, ncols)
.
§Safety
The behavior is undefined if any of the following conditions are violated:
row_start <= self.nrows()
.col_start <= self.ncols()
.nrows <= self.nrows() - row_start
.ncols <= self.ncols() - col_start
.
pub unsafe fn submatrix_mut_unchecked(
&mut self,
row_start: usize,
col_start: usize,
nrows: usize,
ncols: usize,
) -> MatMut<'_, E>
pub unsafe fn submatrix_mut_unchecked( &mut self, row_start: usize, col_start: usize, nrows: usize, ncols: usize, ) -> MatMut<'_, E>
Returns a view over the submatrix starting at indices (row_start, col_start)
, and with
dimensions (nrows, ncols)
.
§Safety
The behavior is undefined if any of the following conditions are violated:
row_start <= self.nrows()
.col_start <= self.ncols()
.nrows <= self.nrows() - row_start
.ncols <= self.ncols() - col_start
.
pub fn submatrix(
&self,
row_start: usize,
col_start: usize,
nrows: usize,
ncols: usize,
) -> MatRef<'_, E>
pub fn submatrix( &self, row_start: usize, col_start: usize, nrows: usize, ncols: usize, ) -> MatRef<'_, E>
Returns a view over the submatrix starting at indices (row_start, col_start)
, and with
dimensions (nrows, ncols)
.
§Panics
The function panics if any of the following conditions are violated:
row_start <= self.nrows()
.col_start <= self.ncols()
.nrows <= self.nrows() - row_start
.ncols <= self.ncols() - col_start
.
§Example
use faer::mat;
let matrix = mat![
[1.0, 5.0, 9.0],
[2.0, 6.0, 10.0],
[3.0, 7.0, 11.0],
[4.0, 8.0, 12.0f64],
];
let view = matrix.as_ref();
let submatrix = view.submatrix(2, 1, 2, 2);
let expected = mat![[7.0, 11.0], [8.0, 12.0f64]];
assert_eq!(expected.as_ref(), submatrix);
pub fn submatrix_mut(
&mut self,
row_start: usize,
col_start: usize,
nrows: usize,
ncols: usize,
) -> MatMut<'_, E>
pub fn submatrix_mut( &mut self, row_start: usize, col_start: usize, nrows: usize, ncols: usize, ) -> MatMut<'_, E>
Returns a view over the submatrix starting at indices (row_start, col_start)
, and with
dimensions (nrows, ncols)
.
§Panics
The function panics if any of the following conditions are violated:
row_start <= self.nrows()
.col_start <= self.ncols()
.nrows <= self.nrows() - row_start
.ncols <= self.ncols() - col_start
.
§Example
use faer::mat;
let mut matrix = mat![
[1.0, 5.0, 9.0],
[2.0, 6.0, 10.0],
[3.0, 7.0, 11.0],
[4.0, 8.0, 12.0f64],
];
let view = matrix.as_mut();
let submatrix = view.submatrix_mut(2, 1, 2, 2);
let mut expected = mat![[7.0, 11.0], [8.0, 12.0f64]];
assert_eq!(expected.as_mut(), submatrix);
pub unsafe fn subrows_unchecked(
&self,
row_start: usize,
nrows: usize,
) -> MatRef<'_, E>
pub unsafe fn subrows_unchecked( &self, row_start: usize, nrows: usize, ) -> MatRef<'_, E>
Returns a view over the submatrix starting at row row_start
, and with number of rows
nrows
.
§Safety
The behavior is undefined if any of the following conditions are violated:
row_start <= self.nrows()
.nrows <= self.nrows() - row_start
.
pub unsafe fn subrows_mut_unchecked(
&mut self,
row_start: usize,
nrows: usize,
) -> MatMut<'_, E>
pub unsafe fn subrows_mut_unchecked( &mut self, row_start: usize, nrows: usize, ) -> MatMut<'_, E>
Returns a view over the submatrix starting at row row_start
, and with number of rows
nrows
.
§Safety
The behavior is undefined if any of the following conditions are violated:
row_start <= self.nrows()
.nrows <= self.nrows() - row_start
.
pub fn subrows(&self, row_start: usize, nrows: usize) -> MatRef<'_, E>
pub fn subrows(&self, row_start: usize, nrows: usize) -> MatRef<'_, E>
Returns a view over the submatrix starting at row row_start
, and with number of rows
nrows
.
§Panics
The function panics if any of the following conditions are violated:
row_start <= self.nrows()
.nrows <= self.nrows() - row_start
.
§Example
use faer::mat;
let matrix = mat![
[1.0, 5.0, 9.0],
[2.0, 6.0, 10.0],
[3.0, 7.0, 11.0],
[4.0, 8.0, 12.0f64],
];
let view = matrix.as_ref();
let subrows = view.subrows(1, 2);
let expected = mat![[2.0, 6.0, 10.0], [3.0, 7.0, 11.0],];
assert_eq!(expected.as_ref(), subrows);
pub fn subrows_mut(&mut self, row_start: usize, nrows: usize) -> MatMut<'_, E>
pub fn subrows_mut(&mut self, row_start: usize, nrows: usize) -> MatMut<'_, E>
Returns a view over the submatrix starting at row row_start
, and with number of rows
nrows
.
§Panics
The function panics if any of the following conditions are violated:
row_start <= self.nrows()
.nrows <= self.nrows() - row_start
.
§Example
use faer::mat;
let mut matrix = mat![
[1.0, 5.0, 9.0],
[2.0, 6.0, 10.0],
[3.0, 7.0, 11.0],
[4.0, 8.0, 12.0f64],
];
let view = matrix.as_mut();
let subrows = view.subrows_mut(1, 2);
let mut expected = mat![[2.0, 6.0, 10.0], [3.0, 7.0, 11.0],];
assert_eq!(expected.as_mut(), subrows);
pub unsafe fn subcols_unchecked(
&self,
col_start: usize,
ncols: usize,
) -> MatRef<'_, E>
pub unsafe fn subcols_unchecked( &self, col_start: usize, ncols: usize, ) -> MatRef<'_, E>
Returns a view over the submatrix starting at column col_start
, and with number of
columns ncols
.
§Safety
The behavior is undefined if any of the following conditions are violated:
col_start <= self.ncols()
.ncols <= self.ncols() - col_start
.
pub unsafe fn subcols_mut_unchecked(
&mut self,
col_start: usize,
ncols: usize,
) -> MatMut<'_, E>
pub unsafe fn subcols_mut_unchecked( &mut self, col_start: usize, ncols: usize, ) -> MatMut<'_, E>
Returns a view over the submatrix starting at column col_start
, and with number of
columns ncols
.
§Safety
The behavior is undefined if any of the following conditions are violated:
col_start <= self.ncols()
.ncols <= self.ncols() - col_start
.
pub fn subcols(&self, col_start: usize, ncols: usize) -> MatRef<'_, E>
pub fn subcols(&self, col_start: usize, ncols: usize) -> MatRef<'_, E>
Returns a view over the submatrix starting at column col_start
, and with number of
columns ncols
.
§Panics
The function panics if any of the following conditions are violated:
col_start <= self.ncols()
.ncols <= self.ncols() - col_start
.
§Example
use faer::mat;
let matrix = mat![
[1.0, 5.0, 9.0],
[2.0, 6.0, 10.0],
[3.0, 7.0, 11.0],
[4.0, 8.0, 12.0f64],
];
let view = matrix.as_ref();
let subcols = view.subcols(2, 1);
let expected = mat![[9.0], [10.0], [11.0], [12.0f64]];
assert_eq!(expected.as_ref(), subcols);
pub fn subcols_mut(&mut self, col_start: usize, ncols: usize) -> MatMut<'_, E>
pub fn subcols_mut(&mut self, col_start: usize, ncols: usize) -> MatMut<'_, E>
Returns a view over the submatrix starting at column col_start
, and with number of
columns ncols
.
§Panics
The function panics if any of the following conditions are violated:
col_start <= self.ncols()
.ncols <= self.ncols() - col_start
.
§Example
use faer::mat;
let mut matrix = mat![
[1.0, 5.0, 9.0],
[2.0, 6.0, 10.0],
[3.0, 7.0, 11.0],
[4.0, 8.0, 12.0f64],
];
let view = matrix.as_mut();
let subcols = view.subcols_mut(2, 1);
let mut expected = mat![[9.0], [10.0], [11.0], [12.0f64]];
assert_eq!(expected.as_mut(), subcols);
pub unsafe fn row_unchecked(&self, row_idx: usize) -> RowRef<'_, E>
pub unsafe fn row_unchecked(&self, row_idx: usize) -> RowRef<'_, E>
Returns a view over the row at the given index.
§Safety
The function panics if any of the following conditions are violated:
row_idx < self.nrows()
.
pub unsafe fn row_mut_unchecked(&mut self, row_idx: usize) -> RowMut<'_, E>
pub unsafe fn row_mut_unchecked(&mut self, row_idx: usize) -> RowMut<'_, E>
Returns a view over the row at the given index.
§Safety
The function panics if any of the following conditions are violated:
row_idx < self.nrows()
.
pub fn row(&self, row_idx: usize) -> RowRef<'_, E>
pub fn row(&self, row_idx: usize) -> RowRef<'_, E>
Returns a view over the row at the given index.
§Panics
The function panics if any of the following conditions are violated:
row_idx < self.nrows()
.
pub fn row_mut(&mut self, row_idx: usize) -> RowMut<'_, E>
pub fn row_mut(&mut self, row_idx: usize) -> RowMut<'_, E>
Returns a view over the row at the given index.
§Panics
The function panics if any of the following conditions are violated:
row_idx < self.nrows()
.
pub fn two_rows_mut(
&mut self,
row_idx0: usize,
row_idx1: usize,
) -> (RowMut<'_, E>, RowMut<'_, E>)
pub fn two_rows_mut( &mut self, row_idx0: usize, row_idx1: usize, ) -> (RowMut<'_, E>, RowMut<'_, E>)
Returns views over the rows at the given indices.
§Panics
The function panics if any of the following conditions are violated:
row_idx0 < self.nrows()
.row_idx1 < self.nrows()
.row_idx0 == row_idx1
.
pub unsafe fn col_unchecked(&self, col_idx: usize) -> ColRef<'_, E>
pub unsafe fn col_unchecked(&self, col_idx: usize) -> ColRef<'_, E>
Returns a view over the column at the given index.
§Safety
The behavior is undefined if any of the following conditions are violated:
col_idx < self.ncols()
.
pub unsafe fn col_mut_unchecked(&mut self, col_idx: usize) -> ColMut<'_, E>
pub unsafe fn col_mut_unchecked(&mut self, col_idx: usize) -> ColMut<'_, E>
Returns a view over the column at the given index.
§Safety
The behavior is undefined if any of the following conditions are violated:
col_idx < self.ncols()
.
pub fn col(&self, col_idx: usize) -> ColRef<'_, E>
pub fn col(&self, col_idx: usize) -> ColRef<'_, E>
Returns a view over the column at the given index.
§Panics
The function panics if any of the following conditions are violated:
col_idx < self.ncols()
.
pub fn col_mut(&mut self, col_idx: usize) -> ColMut<'_, E>
pub fn col_mut(&mut self, col_idx: usize) -> ColMut<'_, E>
Returns a view over the column at the given index.
§Panics
The function panics if any of the following conditions are violated:
col_idx < self.ncols()
.
pub fn two_cols_mut(
&mut self,
col_idx0: usize,
col_idx1: usize,
) -> (ColMut<'_, E>, ColMut<'_, E>)
pub fn two_cols_mut( &mut self, col_idx0: usize, col_idx1: usize, ) -> (ColMut<'_, E>, ColMut<'_, E>)
Returns views over the columns at the given indices.
§Panics
The function panics if any of the following conditions are violated:
col_idx0 < self.ncols()
.col_idx1 < self.ncols()
.col_idx0 == col_idx1
.
pub fn column_vector_as_diagonal(&self) -> DiagRef<'_, E>
pub fn column_vector_as_diagonal(&self) -> DiagRef<'_, E>
Given a matrix with a single column, returns an object that interprets the column as a diagonal matrix, whose diagonal elements are values in the column.
pub fn column_vector_as_diagonal_mut(&mut self) -> DiagMut<'_, E>
pub fn column_vector_as_diagonal_mut(&mut self) -> DiagMut<'_, E>
Given a matrix with a single column, returns an object that interprets the column as a diagonal matrix, whose diagonal elements are values in the column.
pub fn diagonal_mut(&mut self) -> DiagMut<'_, E>
pub fn diagonal_mut(&mut self) -> DiagMut<'_, E>
Returns a view over the diagonal of the matrix.
pub fn to_owned(&self) -> Mat<<E as Conjugate>::Canonical>where
E: Conjugate,
pub fn to_owned(&self) -> Mat<<E as Conjugate>::Canonical>where
E: Conjugate,
Returns an owning Mat
of the data
pub fn has_nan(&self) -> boolwhere
E: ComplexField,
pub fn has_nan(&self) -> boolwhere
E: ComplexField,
Returns true
if any of the elements is NaN, otherwise returns false
.
pub fn is_all_finite(&self) -> boolwhere
E: ComplexField,
pub fn is_all_finite(&self) -> boolwhere
E: ComplexField,
Returns true
if all of the elements are finite, otherwise returns false
.
pub fn norm_max(&self) -> <E as ComplexField>::Realwhere
E: ComplexField,
pub fn norm_max(&self) -> <E as ComplexField>::Realwhere
E: ComplexField,
Returns the maximum norm of self
.
pub fn norm_l1(&self) -> <E as ComplexField>::Realwhere
E: ComplexField,
pub fn norm_l1(&self) -> <E as ComplexField>::Realwhere
E: ComplexField,
Returns the L1 norm of self
.
pub fn norm_l2(&self) -> <E as ComplexField>::Realwhere
E: ComplexField,
pub fn norm_l2(&self) -> <E as ComplexField>::Realwhere
E: ComplexField,
Returns the L2 norm of self
.
pub fn squared_norm_l2(&self) -> <E as ComplexField>::Realwhere
E: ComplexField,
pub fn squared_norm_l2(&self) -> <E as ComplexField>::Realwhere
E: ComplexField,
Returns the squared L2 norm of self
.
pub fn sum(&self) -> Ewhere
E: ComplexField,
pub fn sum(&self) -> Ewhere
E: ComplexField,
Returns the sum of self
.
pub fn kron(&self, rhs: impl As2D<E>) -> Mat<E>where
E: ComplexField,
pub fn kron(&self, rhs: impl As2D<E>) -> Mat<E>where
E: ComplexField,
Kronecker product of self
and rhs
.
This is an allocating operation; see faer::linalg::kron
for the
allocation-free version or more info in general.
pub fn col_chunks(&self, chunk_size: usize) -> ColChunks<'_, E>
pub fn col_chunks(&self, chunk_size: usize) -> ColChunks<'_, E>
Returns an iterator that provides successive chunks of the columns of this matrix, with
each having at most chunk_size
columns.
If the number of columns is a multiple of chunk_size
, then all chunks have
chunk_size
columns.
pub fn col_partition(&self, count: usize) -> ColPartition<'_, E>
pub fn col_partition(&self, count: usize) -> ColPartition<'_, E>
Returns an iterator that provides exactly count
successive chunks of the columns of this
matrix.
§Panics
Panics if count == 0
.
pub fn row_chunks(&self, chunk_size: usize) -> RowChunks<'_, E>
pub fn row_chunks(&self, chunk_size: usize) -> RowChunks<'_, E>
Returns an iterator that provides successive chunks of the rows of this matrix, with
each having at most chunk_size
rows.
If the number of rows is a multiple of chunk_size
, then all chunks have chunk_size
rows.
pub fn row_partition(&self, count: usize) -> RowPartition<'_, E>
pub fn row_partition(&self, count: usize) -> RowPartition<'_, E>
Returns an iterator that provides exactly count
successive chunks of the rows of this
matrix.
§Panics
Panics if count == 0
.
pub fn col_chunks_mut(&mut self, chunk_size: usize) -> ColChunksMut<'_, E>
pub fn col_chunks_mut(&mut self, chunk_size: usize) -> ColChunksMut<'_, E>
Returns an iterator that provides successive chunks of the columns of this matrix, with
each having at most chunk_size
columns.
If the number of columns is a multiple of chunk_size
, then all chunks have
chunk_size
columns.
pub fn col_partition_mut(&mut self, count: usize) -> ColPartitionMut<'_, E>
pub fn col_partition_mut(&mut self, count: usize) -> ColPartitionMut<'_, E>
Returns an iterator that provides exactly count
successive chunks of the columns of this
matrix.
§Panics
Panics if count == 0
.
pub fn row_chunks_mut(&mut self, chunk_size: usize) -> RowChunksMut<'_, E>
pub fn row_chunks_mut(&mut self, chunk_size: usize) -> RowChunksMut<'_, E>
Returns an iterator that provides successive chunks of the rows of this matrix, with
each having at most chunk_size
rows.
If the number of rows is a multiple of chunk_size
, then all chunks have chunk_size
rows.
pub fn row_partition_mut(&mut self, count: usize) -> RowPartitionMut<'_, E>
pub fn row_partition_mut(&mut self, count: usize) -> RowPartitionMut<'_, E>
Returns an iterator that provides exactly count
successive chunks of the rows of this
matrix.
§Panics
Panics if count == 0
.
pub fn par_col_chunks(&self, chunk_size: usize) -> impl IndexedParallelIterator
pub fn par_col_chunks(&self, chunk_size: usize) -> impl IndexedParallelIterator
Returns a parallel iterator that provides successive chunks of the columns of a view over
this matrix, with each having at most chunk_size
columns.
If the number of columns is a multiple of chunk_size
, then all chunks have chunk_size
columns.
Only available with the rayon
feature.
pub fn par_col_partition(&self, count: usize) -> impl IndexedParallelIterator
pub fn par_col_partition(&self, count: usize) -> impl IndexedParallelIterator
Returns a parallel iterator that provides exactly count
successive chunks of the columns
of this matrix.
Only available with the rayon
feature.
pub fn par_col_chunks_mut(
&mut self,
chunk_size: usize,
) -> impl IndexedParallelIterator
pub fn par_col_chunks_mut( &mut self, chunk_size: usize, ) -> impl IndexedParallelIterator
Returns a parallel iterator that provides successive chunks of the columns of a mutable view
over this matrix, with each having at most chunk_size
columns.
If the number of columns is a multiple of chunk_size
, then all chunks have chunk_size
columns.
Only available with the rayon
feature.
pub fn par_col_partition_mut(
&mut self,
count: usize,
) -> impl IndexedParallelIterator
pub fn par_col_partition_mut( &mut self, count: usize, ) -> impl IndexedParallelIterator
Returns a parallel iterator that provides exactly count
successive chunks of the columns
of this matrix.
Only available with the rayon
feature.
pub fn par_row_chunks(&self, chunk_size: usize) -> impl IndexedParallelIterator
pub fn par_row_chunks(&self, chunk_size: usize) -> impl IndexedParallelIterator
Returns a parallel iterator that provides successive chunks of the rows of a view over this
matrix, with each having at most chunk_size
rows.
If the number of rows is a multiple of chunk_size
, then all chunks have chunk_size
rows.
Only available with the rayon
feature.
pub fn par_row_partition(&self, count: usize) -> impl IndexedParallelIterator
pub fn par_row_partition(&self, count: usize) -> impl IndexedParallelIterator
Returns a parallel iterator that provides exactly count
successive chunks of the rows
of this matrix.
Only available with the rayon
feature.
pub fn par_row_chunks_mut(
&mut self,
chunk_size: usize,
) -> impl IndexedParallelIterator
pub fn par_row_chunks_mut( &mut self, chunk_size: usize, ) -> impl IndexedParallelIterator
Returns a parallel iterator that provides successive chunks of the rows of a mutable view
over this matrix, with each having at most chunk_size
rows.
If the number of rows is a multiple of chunk_size
, then all chunks have chunk_size
rows.
Only available with the rayon
feature.
pub fn par_row_partition_mut(
&mut self,
count: usize,
) -> impl IndexedParallelIterator
pub fn par_row_partition_mut( &mut self, count: usize, ) -> impl IndexedParallelIterator
Returns a parallel iterator that provides exactly count
successive chunks of the rows
of this matrix.
Only available with the rayon
feature.
Trait Implementations§
§impl<LhsE, RhsE> AddAssign<&Mat<RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> AddAssign<&Mat<RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn add_assign(&mut self, other: &Mat<RhsE>)
fn add_assign(&mut self, other: &Mat<RhsE>)
+=
operation. Read more§impl<LhsE, RhsE> AddAssign<&Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> AddAssign<&Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn add_assign(&mut self, other: &Mat<RhsE>)
fn add_assign(&mut self, other: &Mat<RhsE>)
+=
operation. Read more§impl<LhsE, RhsE> AddAssign<&MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> AddAssign<&MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn add_assign(&mut self, other: &MatMut<'_, RhsE>)
fn add_assign(&mut self, other: &MatMut<'_, RhsE>)
+=
operation. Read more§impl<LhsE, RhsE> AddAssign<&MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> AddAssign<&MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn add_assign(&mut self, other: &MatRef<'_, RhsE>)
fn add_assign(&mut self, other: &MatRef<'_, RhsE>)
+=
operation. Read more§impl<LhsE, RhsE> AddAssign<Mat<RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> AddAssign<Mat<RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn add_assign(&mut self, other: Mat<RhsE>)
fn add_assign(&mut self, other: Mat<RhsE>)
+=
operation. Read more§impl<LhsE, RhsE> AddAssign<Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> AddAssign<Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn add_assign(&mut self, other: Mat<RhsE>)
fn add_assign(&mut self, other: Mat<RhsE>)
+=
operation. Read more§impl<LhsE, RhsE> AddAssign<MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> AddAssign<MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn add_assign(&mut self, other: MatMut<'_, RhsE>)
fn add_assign(&mut self, other: MatMut<'_, RhsE>)
+=
operation. Read more§impl<LhsE, RhsE> AddAssign<MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> AddAssign<MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn add_assign(&mut self, other: MatRef<'_, RhsE>)
fn add_assign(&mut self, other: MatRef<'_, RhsE>)
+=
operation. Read more§impl<E> AsMatMut<E> for Mat<E>where
E: Entity,
impl<E> AsMatMut<E> for Mat<E>where
E: Entity,
§fn as_mat_mut(&mut self) -> MatMut<'_, E>
fn as_mat_mut(&mut self) -> MatMut<'_, E>
§impl<E> AsMatRef<E> for Mat<E>where
E: Entity,
impl<E> AsMatRef<E> for Mat<E>where
E: Entity,
§fn as_mat_ref(&self) -> MatRef<'_, E>
fn as_mat_ref(&self) -> MatRef<'_, E>
§impl<E> ColBatch<E> for Mat<E>where
E: Conjugate,
impl<E> ColBatch<E> for Mat<E>where
E: Conjugate,
§impl<E> DenseAccess<E> for Mat<E>where
E: Entity,
impl<E> DenseAccess<E> for Mat<E>where
E: Entity,
fn fetch_single(&self, row: usize, col: usize) -> E
§impl<'a, E> Deserialize<'a> for Mat<E>where
E: Entity + Deserialize<'a>,
impl<'a, E> Deserialize<'a> for Mat<E>where
E: Entity + Deserialize<'a>,
§fn deserialize<D>(d: D) -> Result<Mat<E>, <D as Deserializer<'a>>::Error>where
D: Deserializer<'a>,
fn deserialize<D>(d: D) -> Result<Mat<E>, <D as Deserializer<'a>>::Error>where
D: Deserializer<'a>,
§impl<E> Distribution<Mat<E>> for NormalMat<E>
impl<E> Distribution<Mat<E>> for NormalMat<E>
§impl<E> Distribution<Mat<E>> for StandardMat
impl<E> Distribution<Mat<E>> for StandardMat
§impl<E> Distribution<Mat<E>> for StandardNormalMat
impl<E> Distribution<Mat<E>> for StandardNormalMat
§impl<E> Distribution<Mat<E>> for UnitaryMat
impl<E> Distribution<Mat<E>> for UnitaryMat
§impl<LhsE, RhsE> DivAssign<Scale<RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> DivAssign<Scale<RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn div_assign(&mut self, other: Scale<RhsE>)
fn div_assign(&mut self, other: Scale<RhsE>)
/=
operation. Read more§impl<LhsE> DivAssign<f32> for Mat<LhsE>where
LhsE: ComplexField,
impl<LhsE> DivAssign<f32> for Mat<LhsE>where
LhsE: ComplexField,
§fn div_assign(&mut self, other: f32)
fn div_assign(&mut self, other: f32)
/=
operation. Read more§impl<LhsE> DivAssign<f64> for Mat<LhsE>where
LhsE: ComplexField,
impl<LhsE> DivAssign<f64> for Mat<LhsE>where
LhsE: ComplexField,
§fn div_assign(&mut self, other: f64)
fn div_assign(&mut self, other: f64)
/=
operation. Read moreSource§impl From<Mat<f64>> for RMatrix<f64>
impl From<Mat<f64>> for RMatrix<f64>
Convert a faer::Mat<f64>
into an RMatrix<f64>
which is not NA aware.
§impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for &SparseColMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for &SparseColMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for &SparseColMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for &SparseColMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for &SparseColMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for &SparseColMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for &SparseRowMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for &SparseRowMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for &SparseRowMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for &SparseRowMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for &SparseRowMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for &SparseRowMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for SparseColMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for SparseColMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for SparseColMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for SparseColMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for SparseColMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for SparseColMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for SparseRowMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for SparseRowMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for SparseRowMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for SparseRowMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for SparseRowMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&Mat<RhsE>> for SparseRowMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&SparseColMat<I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&SparseColMat<I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&SparseColMat<I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&SparseColMat<I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&SparseColMatMut<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&SparseColMatMut<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&SparseColMatMut<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&SparseColMatMut<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&SparseColMatRef<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&SparseColMatRef<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&SparseColMatRef<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&SparseColMatRef<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&SparseRowMat<I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&SparseRowMat<I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&SparseRowMat<I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&SparseRowMat<I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&SparseRowMatMut<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&SparseRowMatMut<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&SparseRowMatMut<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&SparseRowMatMut<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&SparseRowMatRef<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&SparseRowMatRef<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<&SparseRowMatRef<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<&SparseRowMatRef<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for &SparseColMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for &SparseColMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for &SparseColMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for &SparseColMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for &SparseColMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for &SparseColMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for &SparseRowMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for &SparseRowMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for &SparseRowMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for &SparseRowMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for &SparseRowMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for &SparseRowMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for SparseColMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for SparseColMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for SparseColMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for SparseColMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for SparseColMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for SparseColMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for SparseRowMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for SparseRowMat<I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for SparseRowMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for SparseRowMatMut<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for SparseRowMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<Mat<RhsE>> for SparseRowMatRef<'_, I, LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<SparseColMat<I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<SparseColMat<I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<SparseColMat<I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<SparseColMat<I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<SparseColMatMut<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<SparseColMatMut<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<SparseColMatMut<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<SparseColMatMut<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<SparseColMatRef<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<SparseColMatRef<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<SparseColMatRef<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<SparseColMatRef<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<SparseRowMat<I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<SparseRowMat<I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<SparseRowMat<I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<SparseRowMat<I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<SparseRowMatMut<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<SparseRowMatMut<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<SparseRowMatMut<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<SparseRowMatMut<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<SparseRowMatRef<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<SparseRowMatRef<'_, I, RhsE>> for &Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<I, E, LhsE, RhsE> Mul<SparseRowMatRef<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
impl<I, E, LhsE, RhsE> Mul<SparseRowMatRef<'_, I, RhsE>> for Mat<LhsE>where
I: Index,
E: ComplexField,
LhsE: Conjugate<Canonical = E>,
RhsE: Conjugate<Canonical = E>,
<E as Conjugate>::Canonical: ComplexField,
§impl<LhsE, RhsE> MulAssign<Scale<RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> MulAssign<Scale<RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn mul_assign(&mut self, other: Scale<RhsE>)
fn mul_assign(&mut self, other: Scale<RhsE>)
*=
operation. Read more§impl<LhsE> MulAssign<f32> for Mat<LhsE>where
LhsE: ComplexField,
impl<LhsE> MulAssign<f32> for Mat<LhsE>where
LhsE: ComplexField,
§fn mul_assign(&mut self, other: f32)
fn mul_assign(&mut self, other: f32)
*=
operation. Read more§impl<LhsE> MulAssign<f64> for Mat<LhsE>where
LhsE: ComplexField,
impl<LhsE> MulAssign<f64> for Mat<LhsE>where
LhsE: ComplexField,
§fn mul_assign(&mut self, other: f64)
fn mul_assign(&mut self, other: f64)
*=
operation. Read more§impl<E> RowBatch<E> for Mat<E>where
E: Conjugate,
impl<E> RowBatch<E> for Mat<E>where
E: Conjugate,
§impl<E> Serialize for Mat<E>
impl<E> Serialize for Mat<E>
§fn serialize<S>(
&self,
s: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
s: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
§impl<LhsE, RhsE> SubAssign<&Mat<RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> SubAssign<&Mat<RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn sub_assign(&mut self, other: &Mat<RhsE>)
fn sub_assign(&mut self, other: &Mat<RhsE>)
-=
operation. Read more§impl<LhsE, RhsE> SubAssign<&Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> SubAssign<&Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn sub_assign(&mut self, other: &Mat<RhsE>)
fn sub_assign(&mut self, other: &Mat<RhsE>)
-=
operation. Read more§impl<LhsE, RhsE> SubAssign<&MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> SubAssign<&MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn sub_assign(&mut self, other: &MatMut<'_, RhsE>)
fn sub_assign(&mut self, other: &MatMut<'_, RhsE>)
-=
operation. Read more§impl<LhsE, RhsE> SubAssign<&MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> SubAssign<&MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn sub_assign(&mut self, other: &MatRef<'_, RhsE>)
fn sub_assign(&mut self, other: &MatRef<'_, RhsE>)
-=
operation. Read more§impl<LhsE, RhsE> SubAssign<Mat<RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> SubAssign<Mat<RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn sub_assign(&mut self, other: Mat<RhsE>)
fn sub_assign(&mut self, other: Mat<RhsE>)
-=
operation. Read more§impl<LhsE, RhsE> SubAssign<Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> SubAssign<Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn sub_assign(&mut self, other: Mat<RhsE>)
fn sub_assign(&mut self, other: Mat<RhsE>)
-=
operation. Read more§impl<LhsE, RhsE> SubAssign<MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> SubAssign<MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn sub_assign(&mut self, other: MatMut<'_, RhsE>)
fn sub_assign(&mut self, other: MatMut<'_, RhsE>)
-=
operation. Read more§impl<LhsE, RhsE> SubAssign<MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
impl<LhsE, RhsE> SubAssign<MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE: ComplexField,
RhsE: Conjugate<Canonical = LhsE>,
§fn sub_assign(&mut self, other: MatRef<'_, RhsE>)
fn sub_assign(&mut self, other: MatRef<'_, RhsE>)
-=
operation. Read moreimpl<E> ColBatchMut<E> for Mat<E>where
E: Conjugate,
impl<E> RowBatchMut<E> for Mat<E>where
E: Conjugate,
Auto Trait Implementations§
impl<E> Freeze for Mat<E>
impl<E> RefUnwindSafe for Mat<E>where
<<E as Entity>::Group as ForCopyType>::FaerOfCopy<NonNull<<E as Entity>::Unit>>: RefUnwindSafe,
E: RefUnwindSafe,
impl<E> Send for Mat<E>
impl<E> Sync for Mat<E>
impl<E> Unpin for Mat<E>
impl<E> UnwindSafe for Mat<E>where
<<E as Entity>::Group as ForCopyType>::FaerOfCopy<NonNull<<E as Entity>::Unit>>: UnwindSafe,
E: 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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> ⓘ
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> ⓘ
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