pub struct CscMatrix<T: Scalar> { /* private fields */ }Expand description
Compressed Sparse Column matrix.
Efficient for:
- Column slicing
- Matrix-vector products with transpose (y = A^T * x)
- Column-wise traversal
- Direct solvers (LU, Cholesky)
Implementations§
Source§impl<T: Scalar + Clone> CscMatrix<T>
impl<T: Scalar + Clone> CscMatrix<T>
Sourcepub fn new(
nrows: usize,
ncols: usize,
col_ptrs: Vec<usize>,
row_indices: Vec<usize>,
values: Vec<T>,
) -> Result<Self, CscError>
pub fn new( nrows: usize, ncols: usize, col_ptrs: Vec<usize>, row_indices: Vec<usize>, values: Vec<T>, ) -> Result<Self, CscError>
Sourcepub unsafe fn new_unchecked(
nrows: usize,
ncols: usize,
col_ptrs: Vec<usize>,
row_indices: Vec<usize>,
values: Vec<T>,
) -> Self
pub unsafe fn new_unchecked( nrows: usize, ncols: usize, col_ptrs: Vec<usize>, row_indices: Vec<usize>, values: Vec<T>, ) -> Self
Creates a CSC matrix without validation (unsafe but faster).
§Safety
The caller must ensure:
col_ptrs.len() == ncols + 1values.len() == row_indices.len()col_ptrsis monotonically increasing- All row indices are < nrows
Sourcepub fn zeros(nrows: usize, ncols: usize) -> Self
pub fn zeros(nrows: usize, ncols: usize) -> Self
Creates an empty CSC matrix with given dimensions.
Sourcepub fn row_indices(&self) -> &[usize]
pub fn row_indices(&self) -> &[usize]
Returns a reference to the row indices.
Sourcepub fn values_mut(&mut self) -> &mut [T]
pub fn values_mut(&mut self) -> &mut [T]
Returns a mutable reference to the values.
Sourcepub fn get(&self, row: usize, col: usize) -> Option<&T>
pub fn get(&self, row: usize, col: usize) -> Option<&T>
Gets the value at (row, col), returning None if not present.
Sourcepub fn get_or_zero(&self, row: usize, col: usize) -> Twhere
T: Field,
pub fn get_or_zero(&self, row: usize, col: usize) -> Twhere
T: Field,
Gets the value at (row, col), returning zero if not present.
Sourcepub fn col_iter(&self, col: usize) -> impl Iterator<Item = (usize, &T)>
pub fn col_iter(&self, col: usize) -> impl Iterator<Item = (usize, &T)>
Returns an iterator over the non-zeros in a column.
Sourcepub fn iter(&self) -> impl Iterator<Item = (usize, usize, &T)>
pub fn iter(&self) -> impl Iterator<Item = (usize, usize, &T)>
Returns an iterator over all non-zeros as (row, col, value).
Sourcepub fn from_dense(dense: &MatRef<'_, T>) -> Selfwhere
T: Field,
pub fn from_dense(dense: &MatRef<'_, T>) -> Selfwhere
T: Field,
Creates a CSC matrix from a dense matrix.
Sourcepub fn is_structurally_symmetric(&self) -> bool
pub fn is_structurally_symmetric(&self) -> bool
Checks if the matrix is structurally symmetric.
Returns true if A[i,j] != 0 implies A[j,i] != 0.
Trait Implementations§
Auto Trait Implementations§
impl<T> Freeze for CscMatrix<T>
impl<T> RefUnwindSafe for CscMatrix<T>where
T: RefUnwindSafe,
impl<T> Send for CscMatrix<T>
impl<T> Sync for CscMatrix<T>
impl<T> Unpin for CscMatrix<T>where
T: Unpin,
impl<T> UnwindSafe for CscMatrix<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more