LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
sparse_storage.h
浏览该文件的文档.
1
2#ifndef LMMC_SPARSE_STORAGE_H
3#define LMMC_SPARSE_STORAGE_H
4
5#include "lmmc/sparse_types.h"
6#include "lmmc/dense_types.h"
7#include "lmmc/status.h"
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
29lmmc_status_t lmmc_sparse_builder_create(size_t rows, size_t cols, size_t initial_capacity, lmmc_sparse_builder_t** out_builder);
30
45lmmc_status_t lmmc_sparse_builder_add(lmmc_sparse_builder_t* builder, size_t row, size_t col, lmmc_real_t value);
46
63
69
86lmmc_status_t lmmc_sparse_create_csr(size_t rows, size_t cols, size_t nnz, lmmc_sparse_mat_t* out_sparse);
99lmmc_status_t lmmc_sparse_create_csc(size_t rows, size_t cols, size_t nnz, lmmc_sparse_mat_t* out_sparse);
100
122 size_t rows,
123 size_t cols,
124 size_t nnz,
125 size_t* row_ptr,
126 size_t* col_idx,
127 lmmc_real_t* values,
128 lmmc_sparse_mat_t* out_sparse
129);
130
148 size_t rows,
149 size_t cols,
150 size_t nnz,
151 size_t* col_ptr,
152 size_t* row_idx,
153 lmmc_real_t* values,
154 lmmc_sparse_mat_t* out_sparse
155);
156
166
180
193
206
227
230 size_t rows, size_t cols, size_t capacity,
231 lmmc_sparse_coo_t* out_coo
232);
233
237 size_t row, size_t col, lmmc_real_t value
238);
239
246 const lmmc_sparse_coo_t* coo,
247 lmmc_sparse_mat_t* out_csr
248);
249
252 const lmmc_sparse_coo_t* coo,
253 lmmc_sparse_mat_t* out_csc
254);
255
258
268lmmc_status_t lmmc_sparse_bsr_create(size_t rows, size_t cols, size_t block_size,
269 size_t nnz_blocks, lmmc_sparse_bsr_t* out);
270
278
289lmmc_status_t lmmc_sparse_dense_to_bsr(const lmmc_mat_t* dense, size_t block_size,
291
294
304
307
308#ifdef __cplusplus
309}
310#endif
311
312#endif
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
对称半存储选择:上三角或下三角。
块稀疏行 (BSR) 格式矩阵。
三元组 (COO) 形式的稀疏矩阵临时表示。
通用稀疏矩阵(CSR / CSC 共用同一结构)。
对称半存储 CSR 格式矩阵。
LMMC 通用状态码定义.
lmmc_status_t
LMMC 库统一返回的状态码.