Skip to content

num::spmat

Defined in header <linear/sparse/sparse.hpp>

class spmat;

Sparse matrix in Compressed Sparse Row (CSR) format

Non-zero values for row i are stored in vals_[row_ptr_[i] .. row_ptr_[i+1]). Corresponding column indices are in col_idx_[row_ptr_[i] .. row_ptr_[i+1]).

Members

member description
spmat(idx n_rows, idx n_cols, array<real> vals, array<idx> col_idx, array<idx> row_ptr) Construct from raw CSR arrays (takes ownership)
static spmat from_triplets(idx n_rows, idx n_cols, const array<idx> &rows, const array<idx> &cols, const array<real> &vals) Build from coordinate (COO / triplet) lists Duplicate (row, col) entries are summed. Entries need not be sorted.
static spmat from_csc(idx n_rows, idx n_cols, const array<real> &vals, const array<idx> &row_indices, const array<idx> &col_ptrs) Build from zero-based compressed-column (CSC) arrays. The returned matrix is stored in Numerics' native CSR format. The payload arrays may contain a trailing unused entry, as produced by the Armadillo sparse serializer; only the first col_ptrs.back() entries are consumed. All indices and pointers are zero-based.
idx n_rows() const
idx n_cols() const
idx rows() const noexcept
idx cols() const noexcept
idx nnz() const
real operator()(idx i, idx j) const Element access A(i,j); returns 0 if outside stored pattern -- O(nnz/n)
const real *values() const
const idx *col_idx() const
const idx *row_ptr() const
template <class X = vec<real>, class Y = vec<real>> void apply(const X &x, Y &y) const Operator protocol application: y <- A * x