← Back

Module lib

<p>Joule Standard Library - Sparse Matrices Efficient sparse matrix storage and operations</p>

trait SparseMatrix

Sparse matrix trait

Source: lib.joule:17

fn nrows(&self) -> usize;

Number of rows

Source: lib.joule:19

fn ncols(&self) -> usize;

Number of columns

Source: lib.joule:22

fn nnz(&self) -> usize;

Number of non-zero elements

Source: lib.joule:25

fn get(&self, i: usize, j: usize) -> f64;

Get element at (i, j), returns 0 if not stored

Source: lib.joule:28

fn matvec(&self, x: &[f64]) -> Vec<f64>;

Matrix-vector product: y = A * x

Source: lib.joule:31

fn matvec_t(&self, x: &[f64]) -> Vec<f64>;

Transposed matrix-vector product: y = A^T * x

Source: lib.joule:34

struct CsrMatrix

Source: lib.joule:40

fn new(nrows: usize, ncols: usize) -> Self

Create empty CSR matrix

Source: lib.joule:55

fn from_triplets(

Source: lib.joule:67

fn from_dense(dense: &[Vec<f64>]) -> Self

Source: lib.joule:78

fn identity(n: usize) -> Self

Source: lib.joule:96

fn diagonal(diag: &[f64]) -> Self

Source: lib.joule:118

fn row(&self, i: usize) -> (&[usize], &[f64])

Get row slice

Source: lib.joule:140

fn diagonal_values(&self) -> Vec<f64>

Source: lib.joule:148

fn to_csc(&self) -> CscMatrix

Source: lib.joule:169

fn to_coo(&self) -> CooMatrix

Convert to COO format

Source: lib.joule:211

fn transpose(&self) -> CsrMatrix

Source: lib.joule:238

fn scale(&self, s: f64) -> CsrMatrix

Source: lib.joule:244

fn add(&self, other: &CsrMatrix) -> CsrMatrix

Source: lib.joule:256

fn matmul(&self, other: &CsrMatrix) -> CsrMatrix

Source: lib.joule:277

fn to_dense(&self) -> Vec<Vec<f64>>

Source: lib.joule:317

fn frobenius_norm(&self) -> f64

Source: lib.joule:334

fn nrows(&self) -> usize

Source: lib.joule:340

fn ncols(&self) -> usize

Source: lib.joule:344

fn nnz(&self) -> usize

Source: lib.joule:348

fn get(&self, i: usize, j: usize) -> f64

Source: lib.joule:352

fn matvec(&self, x: &[f64]) -> Vec<f64>

Source: lib.joule:366

fn matvec_t(&self, x: &[f64]) -> Vec<f64>

Source: lib.joule:384

struct CscMatrix

Source: lib.joule:405

fn from_triplets(

Source: lib.joule:419

fn col(&self, j: usize) -> (&[usize], &[f64])

Get column slice

Source: lib.joule:428

fn to_csr(&self) -> CsrMatrix

Source: lib.joule:436

fn transpose(&self) -> CsrMatrix

Transpose (returns CSR which is the transpose as CSC)

Source: lib.joule:475

fn nrows(&self) -> usize

Source: lib.joule:487

fn ncols(&self) -> usize

Source: lib.joule:491

fn nnz(&self) -> usize

Source: lib.joule:495

fn get(&self, i: usize, j: usize) -> f64

Source: lib.joule:499

fn matvec(&self, x: &[f64]) -> Vec<f64>

Source: lib.joule:512

fn matvec_t(&self, x: &[f64]) -> Vec<f64>

Source: lib.joule:529

struct CooMatrix

Source: lib.joule:550

fn new(nrows: usize, ncols: usize) -> Self

Create empty COO matrix

Source: lib.joule:563

fn from_triplets(

Source: lib.joule:575

fn push(&mut self, row: usize, col: usize, value: f64)

Add element

Source: lib.joule:614

fn to_csr(&self) -> CsrMatrix

Source: lib.joule:622

fn to_csc(&self) -> CscMatrix

Source: lib.joule:681

fn nrows(&self) -> usize

Source: lib.joule:739

fn ncols(&self) -> usize

Source: lib.joule:743

fn nnz(&self) -> usize

Source: lib.joule:747

fn get(&self, i: usize, j: usize) -> f64

Source: lib.joule:751

fn matvec(&self, x: &[f64]) -> Vec<f64>

Source: lib.joule:760

fn matvec_t(&self, x: &[f64]) -> Vec<f64>

Source: lib.joule:772

struct SparseBuilder

Builder for constructing sparse matrices incrementally

Source: lib.joule:790

fn new(nrows: usize, ncols: usize) -> Self

Create new builder

Source: lib.joule:798

fn add(&mut self, row: usize, col: usize, value: f64) -> &mut Self

Add element

Source: lib.joule:807

fn add_matrix(&mut self, other: &CsrMatrix, row_offset: usize, col_offset: usize) -> &mut Self

Add multiple elements from another matrix

Source: lib.joule:813

fn build_csr(&self) -> CsrMatrix

Build CSR matrix

Source: lib.joule:824

fn build_csc(&self) -> CscMatrix

Build CSC matrix

Source: lib.joule:829

fn tridiagonal(n: usize, lower: f64, diag: f64, upper: f64) -> CsrMatrix

Source: lib.joule:836

fn banded(n: usize, bands: &[(i32, f64)]) -> CsrMatrix

Source: lib.joule:854

fn laplacian_1d(n: usize) -> CsrMatrix

Source: lib.joule:871

fn laplacian_2d(nx: usize, ny: usize) -> CsrMatrix

Source: lib.joule:877

fn test_csr_matvec()

Source: lib.joule:914

fn test_csr_to_csc()

Source: lib.joule:928

fn test_identity()

Source: lib.joule:943