|
LMMC
Lamina Mathematic core
|
函数 | |
| 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_builder_add (lmmc_sparse_builder_t *builder, size_t row, size_t col, lmmc_real_t value) |
| 向构造器追加一项非零元。 | |
| lmmc_status_t | lmmc_sparse_builder_build (lmmc_sparse_builder_t *builder, lmmc_sparse_format_t format, lmmc_sparse_mat_t *out_sparse) |
| 将构造器条目转换为指定压缩格式的稀疏矩阵。 | |
| void | lmmc_sparse_builder_destroy (lmmc_sparse_builder_t *builder) |
| 销毁稀疏构造器,释放动态数组与句柄。 | |
| 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_create_csc (size_t rows, size_t cols, size_t nnz, lmmc_sparse_mat_t *out_sparse) |
| 为指定 nnz 的 CSC 矩阵分配数组。 | |
| 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 视图。 | |
| 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 视图。 | |
| void | lmmc_sparse_destroy (lmmc_sparse_mat_t *sparse) |
| 销毁稀疏矩阵,释放其拥有的缓冲区并清零全部字段。 | |
| 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_status_t | lmmc_sparse_to_dense (const lmmc_sparse_mat_t *sparse, lmmc_mat_t *out_dense) |
| 将稀疏矩阵展开为稠密矩阵,缺失项填零。 | |
| lmmc_status_t | lmmc_sparse_transpose (const lmmc_sparse_mat_t *sparse, lmmc_sparse_mat_t *out_transposed) |
| 计算稀疏矩阵转置,保持原存储格式。 | |
| lmmc_status_t | lmmc_sparse_to_csc (const lmmc_sparse_mat_t *src, lmmc_sparse_mat_t *dst) |
| 转换为 CSC,src 已为 CSC 时执行深拷贝。 | |
| 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_coo_create (size_t rows, size_t cols, size_t capacity, lmmc_sparse_coo_t *out_coo) |
创建容量为 capacity 的空 COO 矩阵。 | |
| 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_coo_to_csr (const lmmc_sparse_coo_t *coo, lmmc_sparse_mat_t *out_csr) |
| 将 COO 排序为 CSR,重复坐标按插入顺序累加,保留显式零。 要求非零维度、nnz<=capacity、有效条目数组和范围内坐标。 输入保持不变;非法描述符返回 INVALID_ARGUMENT,输出保持不变。 | |
| lmmc_status_t | lmmc_sparse_coo_to_csc (const lmmc_sparse_coo_t *coo, lmmc_sparse_mat_t *out_csc) |
| 将 COO 转换为 CSC,校验、稳定合并与显式零语义同 COO→CSR。 | |
| void | lmmc_sparse_coo_destroy (lmmc_sparse_coo_t *coo) |
| 销毁 COO 矩阵并释放缓冲区。 | |
| 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 矩阵展开为稠密矩阵。 | |
| 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 格式。 | |
| void | lmmc_sparse_bsr_destroy (lmmc_sparse_bsr_t *bsr) |
| 销毁 BSR 矩阵,按所有权释放底层缓冲区。 | |
| 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 矩阵提取对称半存储。 | |
| void | lmmc_sparse_sym_csr_destroy (lmmc_sparse_sym_csr_t *s) |
| 销毁对称半存储 CSR 矩阵,按所有权释放底层缓冲区。 | |
| lmmc_status_t lmmc_sparse_builder_create | ( | size_t | rows, |
| size_t | cols, | ||
| size_t | initial_capacity, | ||
| lmmc_sparse_builder_t ** | out_builder ) |
创建稀疏矩阵增量构造器。
支持未知条目数和乱序插入,动态数组容量不足时翻倍扩容。 用 lmmc_sparse_builder_build 生成压缩格式矩阵。
| [in] | rows | 矩阵行数,须 > 0。 |
| [in] | cols | 矩阵列数,须 > 0。 |
| [in] | initial_capacity | 初始容量,0 时采用默认值 16。 |
| [out] | out_builder | 输出构造器句柄。 |
在文件 sparse_builder.c 第 83 行定义.
引用了 lmmc_sparse_builder_t::c_idx, lmmc_sparse_builder_t::capacity, lmmc_sparse_builder_t::cols, lmmc_memory_alloc(), lmmc_memory_free(), LMMC_REAL_INIT, lmmc_sparse_builder_create(), lmmc_sparse_builder_destroy(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_builder_t::nnz, lmmc_sparse_builder_t::r_idx, lmmc_sparse_builder_t::rows , 以及 lmmc_sparse_builder_t::vals.
被这些函数引用 lmmc_sparse_builder_create().
| lmmc_status_t lmmc_sparse_builder_add | ( | lmmc_sparse_builder_t * | builder, |
| size_t | row, | ||
| size_t | col, | ||
| lmmc_real_t | value ) |
向构造器追加一项非零元。
重复坐标在 build 时累加合并;nnz 递增,容量不足时通过 realloc 翻倍扩容。
| [in,out] | builder | 构造器句柄。 |
| [in] | row | 行下标,须 < rows。 |
| [in] | col | 列下标,须 < cols。 |
| [in] | value | 非零元数值。 |
在文件 sparse_builder.c 第 124 行定义.
引用了 lmmc_sparse_builder_t::c_idx, lmmc_sparse_builder_t::capacity, lmmc_sparse_builder_t::cols, LMMC_REAL_SET, lmmc_sparse_builder_add(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_builder_t::nnz, lmmc_sparse_builder_t::r_idx, lmmc_sparse_builder_t::rows , 以及 lmmc_sparse_builder_t::vals.
被这些函数引用 lmmc_sparse_builder_add().
| lmmc_status_t lmmc_sparse_builder_build | ( | lmmc_sparse_builder_t * | builder, |
| lmmc_sparse_format_t | format, | ||
| lmmc_sparse_mat_t * | out_sparse ) |
将构造器条目转换为指定压缩格式的稀疏矩阵。
按坐标排序,重复 (row,col) 按插入顺序累加,保留相消后的显式零。 每段索引严格递增;构造器保持不变,可继续追加或再次 build。
| [in] | builder | 构造器句柄。 |
| [in] | format | 目标格式,CSR 或 CSC。 |
| [out] | out_sparse | 输出稀疏矩阵,调用方须用 lmmc_sparse_destroy 释放。 |
在文件 sparse_builder.c 第 162 行定义.
引用了 lmmc_sparse_builder_t::c_idx, lmmc_sparse_builder_t::capacity, lmmc_sparse_coo_t::capacity, lmmc_sparse_coo_t::col_idx, lmmc_sparse_builder_t::cols, lmmc_sparse_coo_t::cols, lmmc_sparse_builder_build(), lmmc_sparse_coo_to_csc(), lmmc_sparse_coo_to_csr(), LMMC_SPARSE_CSC, LMMC_SPARSE_CSR, LMMC_STATUS_INVALID_ARGUMENT, lmmc_sparse_builder_t::nnz, lmmc_sparse_coo_t::nnz, lmmc_sparse_builder_t::r_idx, lmmc_sparse_coo_t::row_idx, lmmc_sparse_builder_t::rows, lmmc_sparse_coo_t::rows, lmmc_sparse_builder_t::vals , 以及 lmmc_sparse_coo_t::values.
被这些函数引用 lmmc_sparse_builder_build().
| void lmmc_sparse_builder_destroy | ( | lmmc_sparse_builder_t * | builder | ) |
销毁稀疏构造器,释放动态数组与句柄。
| [in] | builder | 构造器句柄,接受 NULL,销毁后失效。 |
在文件 sparse_builder.c 第 144 行定义.
引用了 lmmc_sparse_builder_t::c_idx, lmmc_sparse_builder_t::capacity, lmmc_memory_free(), LMMC_REAL_CLEAR, lmmc_sparse_builder_destroy(), lmmc_sparse_builder_t::r_idx , 以及 lmmc_sparse_builder_t::vals.
被这些函数引用 lmmc_sparse_builder_create() , 以及 lmmc_sparse_builder_destroy().
| lmmc_status_t lmmc_sparse_create_csr | ( | size_t | rows, |
| size_t | cols, | ||
| size_t | nnz, | ||
| lmmc_sparse_mat_t * | out_sparse ) |
为指定 nnz 的 CSR 矩阵分配数组。
owns_data=1,row_ptr 清零,col_idx/values 未初始化。 调用方须填充三个数组,满足 sparse_types.h 中索引严格有序、 坐标唯一的压缩结构契约后使用。
| [in] | rows | 行数,须 > 0。 |
| [in] | cols | 列数,须 > 0。 |
| [in] | nnz | 非零元个数,可为 0。 |
| [out] | out_sparse | 输出矩阵,调用方须用 lmmc_sparse_destroy 释放。 |
在文件 sparse_storage.c 第 14 行定义.
引用了 lmmc_sparse_create_csr() , 以及 LMMC_SPARSE_CSR.
被这些函数引用 lmmc_sparse_coo_to_csr(), lmmc_sparse_create_csr(), lmmc_sparse_from_dense() , 以及 lmmc_sparse_to_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_sparse_create_csr,format 为 CSC。 row_ptr 表示 col_ptr,col_idx 表示 row_idx。
| [in] | rows | 行数,须 > 0。 |
| [in] | cols | 列数,须 > 0。 |
| [in] | nnz | 非零元个数,可为 0。 |
| [out] | out_sparse | 输出矩阵。 |
在文件 sparse_storage.c 第 18 行定义.
引用了 lmmc_sparse_create_csc() , 以及 LMMC_SPARSE_CSC.
被这些函数引用 lmmc_sparse_coo_to_csc(), lmmc_sparse_create_csc() , 以及 lmmc_sparse_to_csc().
| 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 视图。
校验行指针边界、单调性及每行索引范围和严格递增性,拒绝重复或乱序。 输入及其顺序保持不变,失败时 out_sparse 保持不变。 所有权保留给调用方,::lmmc_sparse_destroy 仅销毁视图。 乱序或重复输入应使用 builder/COO。
| [in] | rows | 行数。 |
| [in] | cols | 列数。 |
| [in] | nnz | 非零元个数。 |
| [in] | row_ptr | 行指针数组,长度 rows+1,row_ptr[0]==0,row_ptr[rows]==nnz。 |
| [in] | col_idx | 列索引数组,长度 nnz,每行严格递增且各值 < cols。 |
| [in] | values | 数值数组,长度 nnz。 |
| [out] | out_sparse | 输出矩阵视图。 |
在文件 sparse_storage.c 第 22 行定义.
引用了 lmmc_sparse_mat_t::col_idx, lmmc_sparse_mat_t::cols, lmmc_sparse_mat_t::format, LMMC_SPARSE_CSR, lmmc_sparse_wrap_csr(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_mat_t::nnz, lmmc_sparse_mat_t::owns_data, lmmc_sparse_mat_t::row_ptr, lmmc_sparse_mat_t::rows , 以及 lmmc_sparse_mat_t::values.
被这些函数引用 lmmc_sparse_wrap_csr().
| 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_sparse_wrap_csr,format 为 CSC。 col_ptr 对应 row_ptr 字段,row_idx 对应 col_idx 字段。
| [in] | rows | 行数。 |
| [in] | cols | 列数。 |
| [in] | nnz | 非零元个数。 |
| [in] | col_ptr | 列指针数组,长度 cols+1。 |
| [in] | row_idx | 行索引数组,长度 nnz,每列严格递增且各值 < rows。 |
| [in] | values | 数值数组,长度 nnz。 |
| [out] | out_sparse | 输出矩阵视图。 |
在文件 sparse_storage.c 第 56 行定义.
引用了 lmmc_sparse_mat_t::col_idx, lmmc_sparse_mat_t::cols, lmmc_sparse_mat_t::format, LMMC_SPARSE_CSC, lmmc_sparse_wrap_csc(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_mat_t::nnz, lmmc_sparse_mat_t::owns_data, lmmc_sparse_mat_t::row_ptr, lmmc_sparse_mat_t::rows , 以及 lmmc_sparse_mat_t::values.
被这些函数引用 lmmc_sparse_wrap_csc().
| void lmmc_sparse_destroy | ( | lmmc_sparse_mat_t * | sparse | ) |
销毁稀疏矩阵,释放其拥有的缓冲区并清零全部字段。
owns_data 非零时释放 row_ptr、col_idx、values;外部缓冲区保留。 销毁后矩阵须重新初始化才能用于运算。
| [in,out] | sparse | 待销毁矩阵,接受 NULL。 |
在文件 sparse_storage.c 第 90 行定义.
引用了 lmmc_sparse_mat_t::col_idx, lmmc_sparse_mat_t::cols, lmmc_memory_free(), LMMC_REAL_CLEAR, lmmc_sparse_destroy(), lmmc_sparse_mat_t::nnz, lmmc_sparse_mat_t::owns_data, lmmc_sparse_mat_t::row_ptr, lmmc_sparse_mat_t::rows , 以及 lmmc_sparse_mat_t::values.
被这些函数引用 lmmc_sparse_add(), lmmc_sparse_chol_numeric(), lmmc_sparse_chol_symbolic(), lmmc_sparse_destroy(), lmmc_sparse_diag(), lmmc_sparse_lu_numeric(), lmmc_sparse_lu_symbolic(), lmmc_sparse_mat_mat_mul_sparse(), lmmc_sparse_to_csc(), lmmc_sparse_to_csr() , 以及 lmmc_sparse_transpose().
| lmmc_status_t lmmc_sparse_from_dense | ( | const lmmc_mat_t * | dense, |
| lmmc_real_t | eps, | ||
| lmmc_sparse_mat_t * | out_sparse ) |
由稠密矩阵生成 CSR,丢弃绝对值 <= eps 的元素。
| [in] | dense | 输入稠密矩阵,保持不变。 |
| [in] | eps | 非负丢弃阈值。 |
| [out] | out_sparse | 输出 CSR,调用方须用 lmmc_sparse_destroy 释放。 |
在文件 sparse_conversion.c 第 13 行定义.
引用了 lmmc_sparse_mat_t::col_idx, lmmc_mat_t::cols, lmmc_mat_t::data, LMMC_REAL_ABS, LMMC_REAL_CLEAR, LMMC_REAL_CMP, LMMC_REAL_INIT, LMMC_REAL_SET, LMMC_REAL_SET_D, lmmc_sparse_create_csr(), lmmc_sparse_from_dense(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_mat_t::row_ptr, lmmc_mat_t::rows, lmmc_mat_t::stride , 以及 lmmc_sparse_mat_t::values.
被这些函数引用 lmmc_sparse_from_dense().
| lmmc_status_t lmmc_sparse_to_dense | ( | const lmmc_sparse_mat_t * | sparse, |
| lmmc_mat_t * | out_dense ) |
将稀疏矩阵展开为稠密矩阵,缺失项填零。
| [in] | sparse | 输入稀疏矩阵,保持不变。 |
| [out] | out_dense | 已创建且与 sparse 同维的稠密矩阵,内容被完全覆写。 |
在文件 sparse_conversion.c 第 64 行定义.
引用了 lmmc_sparse_mat_t::col_idx, lmmc_mat_t::cols, lmmc_sparse_mat_t::cols, lmmc_mat_t::data, lmmc_sparse_mat_t::format, lmmc_mat_fill(), LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_SET, LMMC_REAL_SET_D, LMMC_SPARSE_CSR, lmmc_sparse_to_dense(), LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_mat_t::row_ptr, lmmc_mat_t::rows, lmmc_sparse_mat_t::rows, lmmc_mat_t::stride , 以及 lmmc_sparse_mat_t::values.
被这些函数引用 lmmc_sparse_to_dense().
| lmmc_status_t lmmc_sparse_transpose | ( | const lmmc_sparse_mat_t * | sparse, |
| lmmc_sparse_mat_t * | out_transposed ) |
计算稀疏矩阵转置,保持原存储格式。
| [in] | sparse | 输入稀疏矩阵,保持不变。 |
| [out] | out_transposed | 输出转置矩阵,调用方须用 lmmc_sparse_destroy 释放。 |
在文件 sparse_conversion.c 第 100 行定义.
引用了 lmmc_sparse_mat_t::col_idx, lmmc_sparse_mat_t::cols, lmmc_sparse_mat_t::format, lmmc_memory_alloc_array(), lmmc_memory_free(), LMMC_REAL_SET, LMMC_SPARSE_CSR, lmmc_sparse_destroy(), lmmc_sparse_transpose(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_mat_t::nnz, lmmc_sparse_mat_t::row_ptr, lmmc_sparse_mat_t::rows , 以及 lmmc_sparse_mat_t::values.
被这些函数引用 lmmc_sparse_transpose().
| lmmc_status_t lmmc_sparse_to_csc | ( | const lmmc_sparse_mat_t * | src, |
| lmmc_sparse_mat_t * | dst ) |
转换为 CSC,src 已为 CSC 时执行深拷贝。
| [in] | src | 输入稀疏矩阵,保持不变。 |
| [out] | dst | 输出 CSC,调用方须用 lmmc_sparse_destroy 释放。 |
在文件 sparse_conversion.c 第 148 行定义.
引用了 lmmc_sparse_mat_t::col_idx, lmmc_sparse_mat_t::cols, lmmc_sparse_mat_t::format, lmmc_memory_alloc_array(), lmmc_memory_free(), LMMC_REAL_SET, lmmc_sparse_create_csc(), LMMC_SPARSE_CSC, lmmc_sparse_destroy(), lmmc_sparse_to_csc(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_mat_t::nnz, lmmc_sparse_mat_t::row_ptr, lmmc_sparse_mat_t::rows , 以及 lmmc_sparse_mat_t::values.
被这些函数引用 lmmc_sparse_direct_csc() , 以及 lmmc_sparse_to_csc().
| lmmc_status_t lmmc_sparse_to_csr | ( | const lmmc_sparse_mat_t * | src, |
| lmmc_sparse_mat_t * | dst ) |
转换为 CSR,src 已为 CSR 时执行深拷贝。
| [in] | src | 输入稀疏矩阵,保持不变。 |
| [out] | dst | 输出 CSR,调用方须用 lmmc_sparse_destroy 释放。 |
在文件 sparse_conversion.c 第 203 行定义.
引用了 lmmc_sparse_mat_t::col_idx, lmmc_sparse_mat_t::cols, lmmc_sparse_mat_t::format, lmmc_memory_alloc_array(), lmmc_memory_free(), LMMC_REAL_SET, lmmc_sparse_create_csr(), LMMC_SPARSE_CSR, lmmc_sparse_destroy(), lmmc_sparse_to_csr(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_mat_t::nnz, lmmc_sparse_mat_t::row_ptr, lmmc_sparse_mat_t::rows , 以及 lmmc_sparse_mat_t::values.
被这些函数引用 lmmc_sparse_add(), lmmc_sparse_diag(), lmmc_sparse_mat_mat_mul_sparse() , 以及 lmmc_sparse_to_csr().
| lmmc_status_t lmmc_sparse_coo_create | ( | size_t | rows, |
| size_t | cols, | ||
| size_t | capacity, | ||
| lmmc_sparse_coo_t * | out_coo ) |
创建容量为 capacity 的空 COO 矩阵。
在文件 sparse_builder.c 第 181 行定义.
引用了 lmmc_sparse_coo_t::capacity, lmmc_sparse_coo_t::col_idx, lmmc_sparse_coo_t::cols, lmmc_memory_alloc(), lmmc_memory_free(), LMMC_REAL_INIT, lmmc_sparse_coo_create(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_coo_t::nnz, lmmc_sparse_coo_t::row_idx, lmmc_sparse_coo_t::rows , 以及 lmmc_sparse_coo_t::values.
被这些函数引用 lmmc_sparse_coo_create().
| lmmc_status_t lmmc_sparse_coo_add_entry | ( | lmmc_sparse_coo_t * | coo, |
| size_t | row, | ||
| size_t | col, | ||
| lmmc_real_t | value ) |
向 COO 追加一项非零元,达到容量时返回错误。
在文件 sparse_builder.c 第 231 行定义.
引用了 lmmc_sparse_coo_t::capacity, lmmc_sparse_coo_t::col_idx, lmmc_sparse_coo_t::cols, LMMC_REAL_SET, lmmc_sparse_coo_add_entry(), LMMC_STATUS_INDEX_OUT_OF_BOUNDS, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_coo_t::nnz, lmmc_sparse_coo_t::row_idx, lmmc_sparse_coo_t::rows , 以及 lmmc_sparse_coo_t::values.
被这些函数引用 lmmc_sparse_coo_add_entry().
| 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,输出保持不变。
在文件 sparse_conversion.c 第 349 行定义.
引用了 lmmc_coo_sort_entry_t::col, lmmc_sparse_coo_t::col_idx, lmmc_sparse_coo_t::cols, lmmc_memory_alloc_array(), lmmc_memory_free(), LMMC_REAL_CLEAR, LMMC_REAL_INIT, lmmc_sparse_coo_to_csr(), lmmc_sparse_create_csr(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_coo_t::nnz, lmmc_coo_sort_entry_t::orig_idx, lmmc_coo_sort_entry_t::row, lmmc_sparse_coo_t::row_idx, lmmc_sparse_mat_t::row_ptr , 以及 lmmc_sparse_coo_t::rows.
被这些函数引用 lmmc_sparse_builder_build() , 以及 lmmc_sparse_coo_to_csr().
| lmmc_status_t lmmc_sparse_coo_to_csc | ( | const lmmc_sparse_coo_t * | coo, |
| lmmc_sparse_mat_t * | out_csc ) |
将 COO 转换为 CSC,校验、稳定合并与显式零语义同 COO→CSR。
在文件 sparse_conversion.c 第 414 行定义.
引用了 lmmc_coo_sort_entry_t::col, lmmc_sparse_coo_t::col_idx, lmmc_sparse_coo_t::cols, lmmc_memory_alloc_array(), lmmc_memory_free(), LMMC_REAL_CLEAR, LMMC_REAL_INIT, lmmc_sparse_coo_to_csc(), lmmc_sparse_create_csc(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_coo_t::nnz, lmmc_coo_sort_entry_t::orig_idx, lmmc_coo_sort_entry_t::row, lmmc_sparse_coo_t::row_idx, lmmc_sparse_mat_t::row_ptr , 以及 lmmc_sparse_coo_t::rows.
被这些函数引用 lmmc_sparse_builder_build() , 以及 lmmc_sparse_coo_to_csc().
| void lmmc_sparse_coo_destroy | ( | lmmc_sparse_coo_t * | coo | ) |
销毁 COO 矩阵并释放缓冲区。
在文件 sparse_conversion.c 第 478 行定义.
引用了 lmmc_sparse_coo_t::capacity, lmmc_sparse_coo_t::col_idx, lmmc_sparse_coo_t::cols, lmmc_memory_free(), LMMC_REAL_CLEAR, lmmc_sparse_coo_destroy(), lmmc_sparse_coo_t::nnz, lmmc_sparse_coo_t::row_idx, lmmc_sparse_coo_t::rows , 以及 lmmc_sparse_coo_t::values.
被这些函数引用 lmmc_sparse_coo_destroy().
| 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 矩阵,数组内容未初始化。
| [in] | rows | 块行数。 |
| [in] | cols | 块列数。 |
| [in] | block_size | 块维度 r,每块为 rxr。 |
| [in] | nnz_blocks | 非零块数量。 |
| [out] | out | 输出 BSR 矩阵。 |
在文件 sparse_block.c 第 12 行定义.
引用了 lmmc_sparse_bsr_t::block_size, lmmc_sparse_bsr_t::col_idx, lmmc_sparse_bsr_t::cols, lmmc_memory_alloc(), lmmc_memory_free(), lmmc_sparse_bsr_create(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_bsr_t::nnz_blocks, lmmc_sparse_bsr_t::owns_data, lmmc_sparse_bsr_t::row_ptr, lmmc_sparse_bsr_t::rows , 以及 lmmc_sparse_bsr_t::values.
被这些函数引用 lmmc_sparse_bsr_create() , 以及 lmmc_sparse_dense_to_bsr().
| lmmc_status_t lmmc_sparse_bsr_to_dense | ( | const lmmc_sparse_bsr_t * | bsr, |
| lmmc_mat_t * | out ) |
将 BSR 矩阵展开为稠密矩阵。
| [in] | bsr | 输入 BSR 矩阵。 |
| [out] | out | 已创建的稠密矩阵,维度须为 (rows*block_size) x (cols*block_size)。 |
在文件 sparse_block.c 第 153 行定义.
引用了 lmmc_sparse_bsr_t::block_size, lmmc_sparse_bsr_t::col_idx, lmmc_mat_t::cols, lmmc_sparse_bsr_t::cols, lmmc_mat_t::data, lmmc_mat_fill(), LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_SET_D, lmmc_sparse_bsr_to_dense(), LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_bsr_t::nnz_blocks, lmmc_sparse_bsr_t::row_ptr, lmmc_mat_t::rows, lmmc_sparse_bsr_t::rows , 以及 lmmc_sparse_bsr_t::values.
被这些函数引用 lmmc_sparse_bsr_to_dense().
| 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 格式。
丢弃块内全部元素绝对值均 <= eps 的块。
| [in] | dense | 输入稠密矩阵,各维度须为 block_size 的整数倍。 |
| [in] | block_size | 块维度 r。 |
| [in] | eps | 丢弃阈值。 |
| [out] | out | 输出 BSR 矩阵。 |
在文件 sparse_block.c 第 192 行定义.
引用了 lmmc_mat_t::cols, lmmc_mat_t::data, LMMC_REAL_CLEAR, LMMC_REAL_CMP, LMMC_REAL_INIT, LMMC_REAL_SET_D, lmmc_sparse_bsr_create(), lmmc_sparse_dense_to_bsr(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 lmmc_mat_t::rows.
被这些函数引用 lmmc_sparse_dense_to_bsr().
| void lmmc_sparse_bsr_destroy | ( | lmmc_sparse_bsr_t * | bsr | ) |
销毁 BSR 矩阵,按所有权释放底层缓冲区。
在文件 sparse_block.c 第 255 行定义.
引用了 lmmc_sparse_bsr_t::block_size, lmmc_sparse_bsr_t::col_idx, lmmc_sparse_bsr_t::cols, lmmc_memory_free(), lmmc_sparse_bsr_destroy(), lmmc_sparse_bsr_t::nnz_blocks, lmmc_sparse_bsr_t::owns_data, lmmc_sparse_bsr_t::row_ptr, lmmc_sparse_bsr_t::rows , 以及 lmmc_sparse_bsr_t::values.
被这些函数引用 lmmc_sparse_bsr_destroy().
| 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 矩阵提取对称半存储。
| [in] | full | 输入完整 CSR 方阵。 |
| [in] | half | 选择上三角或下三角。 |
| [out] | out | 输出对称半存储 CSR 矩阵。 |
在文件 sparse_symmetric.c 第 89 行定义.
引用了 lmmc_sparse_sym_csr_t::col_idx, lmmc_sparse_mat_t::cols, lmmc_sparse_mat_t::format, lmmc_sparse_sym_csr_t::half, lmmc_memory_alloc(), lmmc_memory_free(), LMMC_SPARSE_CSR, lmmc_sparse_sym_csr_from_csr(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_sym_csr_t::n, lmmc_sparse_sym_csr_t::nnz, lmmc_sparse_sym_csr_t::owns_data, lmmc_sparse_sym_csr_t::row_ptr, lmmc_sparse_mat_t::rows , 以及 lmmc_sparse_sym_csr_t::values.
被这些函数引用 lmmc_sparse_sym_csr_from_csr().
| void lmmc_sparse_sym_csr_destroy | ( | lmmc_sparse_sym_csr_t * | s | ) |
销毁对称半存储 CSR 矩阵,按所有权释放底层缓冲区。
在文件 sparse_symmetric.c 第 211 行定义.
引用了 lmmc_sparse_sym_csr_t::col_idx, lmmc_memory_free(), lmmc_sparse_sym_csr_destroy(), lmmc_sparse_sym_csr_t::n, lmmc_sparse_sym_csr_t::nnz, lmmc_sparse_sym_csr_t::owns_data, lmmc_sparse_sym_csr_t::row_ptr , 以及 lmmc_sparse_sym_csr_t::values.
被这些函数引用 lmmc_sparse_sym_csr_destroy().