#[repr(C)]pub struct Mat<E: Entity> { /* private fields */ }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.
Implementations§
source§impl<E: Entity> Mat<E>
impl<E: Entity> Mat<E>
pub fn new() -> Self
sourcepub fn with_capacity(row_capacity: usize, col_capacity: usize) -> Self
pub fn with_capacity(row_capacity: usize, col_capacity: usize) -> Self
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.
sourcepub fn with_dims(
nrows: usize,
ncols: usize,
f: impl FnMut(usize, usize) -> E
) -> Self
pub fn with_dims( nrows: usize, ncols: usize, f: impl FnMut(usize, usize) -> E ) -> Self
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.
sourcepub fn zeros(nrows: usize, ncols: usize) -> Selfwhere
E: ComplexField,
pub fn zeros(nrows: usize, ncols: usize) -> Selfwhere E: ComplexField,
Returns a new matrix with dimensions (nrows, ncols), filled with zeros.
Panics
The function panics if the total capacity in bytes exceeds isize::MAX.
sourcepub 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.
sourcepub fn as_mut_ptr(&mut self) -> E::Group<*mut E::Unit>
pub fn as_mut_ptr(&mut self) -> E::Group<*mut E::Unit>
Returns a mutable pointer to the data of the matrix.
sourcepub 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.
sourcepub 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.
sourcepub 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.
sourcepub 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.
sourcepub 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.
sourcepub 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).
Elements that are now out of bounds are dropped, while new elements are created with the
given function f, so that elements at indices (i, j) are created by calling f(i, j).
sourcepub fn col_ref(&self, col: usize) -> E::Group<&[E::Unit]>
pub fn col_ref(&self, col: usize) -> E::Group<&[E::Unit]>
Returns a reference to a slice over the column at the given index.
sourcepub fn col_mut(&mut self, col: usize) -> E::Group<&mut [E::Unit]>
pub fn col_mut(&mut self, col: usize) -> E::Group<&mut [E::Unit]>
Returns a mutable reference to a slice over the column at the given index.
sourcepub 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().
sourcepub 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().
sourcepub 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().
sourcepub 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().
sourcepub fn conjugate(&self) -> MatRef<'_, E::Conj>where
E: Conjugate,
pub fn conjugate(&self) -> MatRef<'_, E::Conj>where E: Conjugate,
Returns a view over the conjugate of self.
sourcepub fn adjoint(&self) -> MatRef<'_, E::Conj>where
E: Conjugate,
pub fn adjoint(&self) -> MatRef<'_, E::Conj>where E: Conjugate,
Returns a view over the conjugate transpose of self.
sourcepub fn to_owned(&self) -> Mat<E::Canonical>where
E: Conjugate,
pub fn to_owned(&self) -> Mat<E::Canonical>where E: Conjugate,
Returns an owning Mat of the data
pub fn has_nan(&self) -> boolwhere E: ComplexField,
pub fn is_all_finite(&self) -> boolwhere E: ComplexField,
Trait Implementations§
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&Mat<RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&Mat<RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&Mat<RhsE>> for &MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&Mat<RhsE>> for &MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&Mat<RhsE>> for &MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&Mat<RhsE>> for &MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&Mat<RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&Mat<RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&Mat<RhsE>> for MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&Mat<RhsE>> for MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&Mat<RhsE>> for MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&MatMut<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&MatMut<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&MatMut<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&MatRef<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&MatRef<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<&MatRef<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<Mat<RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<Mat<RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<Mat<RhsE>> for &MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<Mat<RhsE>> for &MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<Mat<RhsE>> for &MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<Mat<RhsE>> for &MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<Mat<RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<Mat<RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<Mat<RhsE>> for MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<Mat<RhsE>> for MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<Mat<RhsE>> for MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<MatMut<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<MatMut<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<MatMut<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<MatRef<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<MatRef<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Add<MatRef<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<&Mat<RhsE>> for Mat<LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<&Mat<RhsE>> for Mat<LhsE>
source§fn add_assign(&mut self, rhs: &Mat<RhsE>)
fn add_assign(&mut self, rhs: &Mat<RhsE>)
+= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<&Mat<RhsE>> for MatMut<'_, LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<&Mat<RhsE>> for MatMut<'_, LhsE>
source§fn add_assign(&mut self, rhs: &Mat<RhsE>)
fn add_assign(&mut self, rhs: &Mat<RhsE>)
+= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<&MatMut<'_, RhsE>> for Mat<LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<&MatMut<'_, RhsE>> for Mat<LhsE>
source§fn add_assign(&mut self, rhs: &MatMut<'_, RhsE>)
fn add_assign(&mut self, rhs: &MatMut<'_, RhsE>)
+= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<&MatRef<'_, RhsE>> for Mat<LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<&MatRef<'_, RhsE>> for Mat<LhsE>
source§fn add_assign(&mut self, rhs: &MatRef<'_, RhsE>)
fn add_assign(&mut self, rhs: &MatRef<'_, RhsE>)
+= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<Mat<RhsE>> for Mat<LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<Mat<RhsE>> for Mat<LhsE>
source§fn add_assign(&mut self, rhs: Mat<RhsE>)
fn add_assign(&mut self, rhs: Mat<RhsE>)
+= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<Mat<RhsE>> for MatMut<'_, LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<Mat<RhsE>> for MatMut<'_, LhsE>
source§fn add_assign(&mut self, rhs: Mat<RhsE>)
fn add_assign(&mut self, rhs: Mat<RhsE>)
+= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<MatMut<'_, RhsE>> for Mat<LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<MatMut<'_, RhsE>> for Mat<LhsE>
source§fn add_assign(&mut self, rhs: MatMut<'_, RhsE>)
fn add_assign(&mut self, rhs: MatMut<'_, RhsE>)
+= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<MatRef<'_, RhsE>> for Mat<LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> AddAssign<MatRef<'_, RhsE>> for Mat<LhsE>
source§fn add_assign(&mut self, rhs: MatRef<'_, RhsE>)
fn add_assign(&mut self, rhs: MatRef<'_, RhsE>)
+= operation. Read moresource§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&Mat<RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&Mat<RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&Mat<RhsE>> for &MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&Mat<RhsE>> for &MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&Mat<RhsE>> for &MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&Mat<RhsE>> for &MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&Mat<RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&Mat<RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&Mat<RhsE>> for MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&Mat<RhsE>> for MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&Mat<RhsE>> for MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&MatMut<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&MatMut<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&MatMut<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&MatRef<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&MatRef<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<&MatRef<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<Mat<RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<Mat<RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<Mat<RhsE>> for &MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<Mat<RhsE>> for &MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<Mat<RhsE>> for &MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<Mat<RhsE>> for &MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<Mat<RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<Mat<RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<Mat<RhsE>> for MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<Mat<RhsE>> for MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<Mat<RhsE>> for MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<MatMut<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<MatMut<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<MatMut<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<MatRef<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<MatRef<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Mul<MatRef<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<E: ComplexField> MulAssign<Scale<E>> for Mat<E>
impl<E: ComplexField> MulAssign<Scale<E>> for Mat<E>
source§fn mul_assign(&mut self, rhs: Scale<E>)
fn mul_assign(&mut self, rhs: Scale<E>)
*= operation. Read moresource§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<&Mat<RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<&Mat<RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<&Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<&Mat<RhsE>> for MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<&Mat<RhsE>> for MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<&Mat<RhsE>> for MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<&MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<&MatMut<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<&MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<&MatRef<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<Mat<RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<Mat<RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<Mat<RhsE>> for &MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<Mat<RhsE>> for &MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<Mat<RhsE>> for &MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<Mat<RhsE>> for &MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<Mat<RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<Mat<RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<Mat<RhsE>> for MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<Mat<RhsE>> for MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<Mat<RhsE>> for MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<MatMut<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<MatMut<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<MatMut<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<MatRef<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<MatRef<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> PartialEq<MatRef<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&Mat<RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&Mat<RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&Mat<RhsE>> for &MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&Mat<RhsE>> for &MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&Mat<RhsE>> for &MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&Mat<RhsE>> for &MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&Mat<RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&Mat<RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&Mat<RhsE>> for MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&Mat<RhsE>> for MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&Mat<RhsE>> for MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&MatMut<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&MatMut<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&MatMut<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&MatRef<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&MatRef<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<&MatRef<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<Mat<RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<Mat<RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<Mat<RhsE>> for &MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<Mat<RhsE>> for &MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<Mat<RhsE>> for &MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<Mat<RhsE>> for &MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<Mat<RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<Mat<RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<Mat<RhsE>> for MatMut<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<Mat<RhsE>> for MatMut<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<Mat<RhsE>> for MatRef<'_, LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<Mat<RhsE>> for MatRef<'_, LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<MatMut<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<MatMut<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<MatMut<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<MatMut<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<MatRef<'_, RhsE>> for &Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<MatRef<'_, RhsE>> for &Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<MatRef<'_, RhsE>> for Mat<LhsE>where
LhsE::Canonical: ComplexField,
impl<LhsE: Conjugate, RhsE: Conjugate<Canonical = LhsE::Canonical>> Sub<MatRef<'_, RhsE>> for Mat<LhsE>where LhsE::Canonical: ComplexField,
source§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<&Mat<RhsE>> for Mat<LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<&Mat<RhsE>> for Mat<LhsE>
source§fn sub_assign(&mut self, rhs: &Mat<RhsE>)
fn sub_assign(&mut self, rhs: &Mat<RhsE>)
-= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<&Mat<RhsE>> for MatMut<'_, LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<&Mat<RhsE>> for MatMut<'_, LhsE>
source§fn sub_assign(&mut self, rhs: &Mat<RhsE>)
fn sub_assign(&mut self, rhs: &Mat<RhsE>)
-= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<&MatMut<'_, RhsE>> for Mat<LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<&MatMut<'_, RhsE>> for Mat<LhsE>
source§fn sub_assign(&mut self, rhs: &MatMut<'_, RhsE>)
fn sub_assign(&mut self, rhs: &MatMut<'_, RhsE>)
-= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<&MatRef<'_, RhsE>> for Mat<LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<&MatRef<'_, RhsE>> for Mat<LhsE>
source§fn sub_assign(&mut self, rhs: &MatRef<'_, RhsE>)
fn sub_assign(&mut self, rhs: &MatRef<'_, RhsE>)
-= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<Mat<RhsE>> for Mat<LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<Mat<RhsE>> for Mat<LhsE>
source§fn sub_assign(&mut self, rhs: Mat<RhsE>)
fn sub_assign(&mut self, rhs: Mat<RhsE>)
-= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<Mat<RhsE>> for MatMut<'_, LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<Mat<RhsE>> for MatMut<'_, LhsE>
source§fn sub_assign(&mut self, rhs: Mat<RhsE>)
fn sub_assign(&mut self, rhs: Mat<RhsE>)
-= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<MatMut<'_, RhsE>> for Mat<LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<MatMut<'_, RhsE>> for Mat<LhsE>
source§fn sub_assign(&mut self, rhs: MatMut<'_, RhsE>)
fn sub_assign(&mut self, rhs: MatMut<'_, RhsE>)
-= operation. Read moresource§impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<MatRef<'_, RhsE>> for Mat<LhsE>
impl<LhsE: ComplexField, RhsE: Conjugate<Canonical = LhsE>> SubAssign<MatRef<'_, RhsE>> for Mat<LhsE>
source§fn sub_assign(&mut self, rhs: MatRef<'_, RhsE>)
fn sub_assign(&mut self, rhs: MatRef<'_, RhsE>)
-= operation. Read more