pub struct SparseCsr {
pub values: Vec<f64>,
pub col_indices: Vec<usize>,
pub row_offsets: Vec<usize>,
pub nrows: usize,
pub ncols: usize,
}Expand description
Compressed Sparse Row (CSR) matrix representation.
Stores non-zero values in three arrays: values, col_indices, and
row_offsets (of length nrows + 1). This layout enables fast row-wise
access and sparse matrix-vector products.
Fields§
§values: Vec<f64>§col_indices: Vec<usize>§row_offsets: Vec<usize>§nrows: usize§ncols: usizeImplementations§
Source§impl SparseCsr
impl SparseCsr
Sourcepub fn get(&self, row: usize, col: usize) -> f64
pub fn get(&self, row: usize, col: usize) -> f64
Access element at (row, col). Returns 0.0 for zero entries.
Sourcepub fn matvec(&self, x: &[f64]) -> Result<Vec<f64>, RuntimeError>
pub fn matvec(&self, x: &[f64]) -> Result<Vec<f64>, RuntimeError>
Compute sparse matrix-vector multiplication: y = A * x.
Each row dot product uses kahan_sum_f64 for deterministic results.
§Errors
Returns RuntimeError::DimensionMismatch if x.len() != self.ncols.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for SparseCsr
impl RefUnwindSafe for SparseCsr
impl Send for SparseCsr
impl Sync for SparseCsr
impl Unpin for SparseCsr
impl UnsafeUnpin for SparseCsr
impl UnwindSafe for SparseCsr
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more