2#ifndef LMMC_SPARSE_STORAGE_H
3#define LMMC_SPARSE_STORAGE_H
230 size_t rows,
size_t cols,
size_t capacity,
double lmmc_real_t
Public and internal LMMC real type.
lmmc_status_t lmmc_sparse_coo_add_entry(lmmc_sparse_coo_t *coo, size_t row, size_t col, lmmc_real_t value)
向 COO 追加一项非零元,达到容量时返回错误。
lmmc_status_t lmmc_sparse_sym_csr_from_csr(const lmmc_sparse_mat_t *full, lmmc_sparse_sym_half_t half, lmmc_sparse_sym_csr_t *out)
从完整 CSR 矩阵提取对称半存储。
lmmc_status_t lmmc_sparse_create_csc(size_t rows, size_t cols, size_t nnz, lmmc_sparse_mat_t *out_sparse)
为指定 nnz 的 CSC 矩阵分配数组。
lmmc_status_t lmmc_sparse_builder_build(lmmc_sparse_builder_t *builder, lmmc_sparse_format_t format, lmmc_sparse_mat_t *out_sparse)
将构造器条目转换为指定压缩格式的稀疏矩阵。
lmmc_status_t lmmc_sparse_transpose(const lmmc_sparse_mat_t *sparse, lmmc_sparse_mat_t *out_transposed)
计算稀疏矩阵转置,保持原存储格式。
lmmc_status_t lmmc_sparse_wrap_csc(size_t rows, size_t cols, size_t nnz, size_t *col_ptr, size_t *row_idx, lmmc_real_t *values, lmmc_sparse_mat_t *out_sparse)
将调用方缓冲区包装为 CSC 视图。
lmmc_status_t lmmc_sparse_coo_to_csr(const lmmc_sparse_coo_t *coo, lmmc_sparse_mat_t *out_csr)
将 COO 排序为 CSR,重复坐标按插入顺序累加,保留显式零。 要求非零维度、nnz<=capacity、有效条目数组和范围内坐标。 输入保持不变;非法描述符返回 INVALID_ARGUMENT,输...
void lmmc_sparse_builder_destroy(lmmc_sparse_builder_t *builder)
销毁稀疏构造器,释放动态数组与句柄。
void lmmc_sparse_bsr_destroy(lmmc_sparse_bsr_t *bsr)
销毁 BSR 矩阵,按所有权释放底层缓冲区。
lmmc_status_t lmmc_sparse_builder_create(size_t rows, size_t cols, size_t initial_capacity, lmmc_sparse_builder_t **out_builder)
创建稀疏矩阵增量构造器。
lmmc_status_t lmmc_sparse_coo_create(size_t rows, size_t cols, size_t capacity, lmmc_sparse_coo_t *out_coo)
创建容量为 capacity 的空 COO 矩阵。
lmmc_status_t lmmc_sparse_to_csc(const lmmc_sparse_mat_t *src, lmmc_sparse_mat_t *dst)
转换为 CSC,src 已为 CSC 时执行深拷贝。
void lmmc_sparse_sym_csr_destroy(lmmc_sparse_sym_csr_t *s)
销毁对称半存储 CSR 矩阵,按所有权释放底层缓冲区。
lmmc_status_t lmmc_sparse_to_csr(const lmmc_sparse_mat_t *src, lmmc_sparse_mat_t *dst)
转换为 CSR,src 已为 CSR 时执行深拷贝。
lmmc_status_t lmmc_sparse_bsr_create(size_t rows, size_t cols, size_t block_size, size_t nnz_blocks, lmmc_sparse_bsr_t *out)
创建 BSR 矩阵,数组内容未初始化。
lmmc_status_t lmmc_sparse_bsr_to_dense(const lmmc_sparse_bsr_t *bsr, lmmc_mat_t *out)
将 BSR 矩阵展开为稠密矩阵。
void lmmc_sparse_destroy(lmmc_sparse_mat_t *sparse)
销毁稀疏矩阵,释放其拥有的缓冲区并清零全部字段。
lmmc_status_t lmmc_sparse_dense_to_bsr(const lmmc_mat_t *dense, size_t block_size, lmmc_real_t eps, lmmc_sparse_bsr_t *out)
将稠密矩阵转换为 BSR 格式。
lmmc_status_t lmmc_sparse_create_csr(size_t rows, size_t cols, size_t nnz, lmmc_sparse_mat_t *out_sparse)
为指定 nnz 的 CSR 矩阵分配数组。
lmmc_status_t lmmc_sparse_builder_add(lmmc_sparse_builder_t *builder, size_t row, size_t col, lmmc_real_t value)
向构造器追加一项非零元。
lmmc_status_t lmmc_sparse_to_dense(const lmmc_sparse_mat_t *sparse, lmmc_mat_t *out_dense)
将稀疏矩阵展开为稠密矩阵,缺失项填零。
lmmc_status_t lmmc_sparse_coo_to_csc(const lmmc_sparse_coo_t *coo, lmmc_sparse_mat_t *out_csc)
将 COO 转换为 CSC,校验、稳定合并与显式零语义同 COO→CSR。
lmmc_status_t lmmc_sparse_wrap_csr(size_t rows, size_t cols, size_t nnz, size_t *row_ptr, size_t *col_idx, lmmc_real_t *values, lmmc_sparse_mat_t *out_sparse)
将调用方缓冲区包装为 CSR 视图。
void lmmc_sparse_coo_destroy(lmmc_sparse_coo_t *coo)
销毁 COO 矩阵并释放缓冲区。
lmmc_status_t lmmc_sparse_from_dense(const lmmc_mat_t *dense, lmmc_real_t eps, lmmc_sparse_mat_t *out_sparse)
由稠密矩阵生成 CSR,丢弃绝对值 <= eps 的元素。
lmmc_sparse_format_t
稀疏矩阵存储格式。
lmmc_sparse_sym_half_t
对称半存储选择:上三角或下三角。
通用稀疏矩阵(CSR / CSC 共用同一结构)。
lmmc_status_t
LMMC 库统一返回的状态码.