LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
sparse_types.h 文件参考
#include <stddef.h>
#include "lmmc/config.h"
sparse_types.h 的引用(Include)关系图:
此图展示该文件被哪些文件直接或间接地引用了:

浏览该文件的源代码.

结构体

struct  lmmc_sparse_mat_t
 通用稀疏矩阵(CSR / CSC 共用同一结构)。 更多...
struct  lmmc_sparse_coo_t
 三元组 (COO) 形式的稀疏矩阵临时表示。 更多...
struct  lmmc_sparse_bsr_t
 块稀疏行 (BSR) 格式矩阵。 更多...
struct  lmmc_sparse_sym_csr_t
 对称半存储 CSR 格式矩阵。 更多...

枚举

enum  lmmc_sparse_format_t {
  LMMC_SPARSE_CSR = 0 ,
  LMMC_SPARSE_CSC = 1
}
 稀疏矩阵存储格式。 更多...
enum  lmmc_sparse_sym_half_t {
  LMMC_SPARSE_SYM_UPPER = 0 ,
  LMMC_SPARSE_SYM_LOWER = 1
}
 对称半存储选择:上三角或下三角。 更多...

结构体说明

◆ lmmc_sparse_mat_t

struct lmmc_sparse_mat_t

通用稀疏矩阵(CSR / CSC 共用同一结构)。

当 format = LMMC_SPARSE_CSR :

  • row_ptr 长度为 rows+1 ,
  • col_idx 与 values 长度均为 nnz 。

当 format = LMMC_SPARSE_CSC :

  • row_ptr 在此别名为 col_ptr,长度为 cols+1 ,
  • col_idx 在此别名为 row_idx,长度为 nnz 。

有效矩阵的 format 只能为 CSR 或 CSC, rows/cols 必须非零。 外指针从 0 单调递增到 nnz, 各段内索引必须在范围内且严格递增: 同一坐标仅存一项. 显式零保留, nnz 表示存储条目数而非数学非零数。 乱序或重复输入须通过 builder/COO 转换规范化。

在文件 sparse_types.h 第 34 行定义.

lmmc_sparse_mat_t 的协作图:
成员变量
size_t rows

行数。

size_t cols

列数。

size_t nnz

存储条目数,包括显式零。

size_t * row_ptr

CSR 行指针 / CSC 列指针数组。

size_t * col_idx

CSR 列索引 / CSC 行索引数组。

lmmc_real_t * values

存储条目的数值数组,长度 nnz 。

lmmc_sparse_format_t format

存储格式。

int owns_data

是否拥有底层缓冲区。

◆ lmmc_sparse_coo_t

struct lmmc_sparse_coo_t

三元组 (COO) 形式的稀疏矩阵临时表示。

拥有自身缓冲区,主要用于增量插入后转换为 CSR / CSC 。

在文件 sparse_types.h 第 76 行定义.

lmmc_sparse_coo_t 的协作图:
成员变量
size_t rows

行数。

size_t cols

列数。

size_t nnz

当前已插入的条目数。

size_t capacity

当前容量。

size_t * row_idx

行下标数组,长度 capacity 。

size_t * col_idx

列下标数组,长度 capacity 。

lmmc_real_t * values

数值数组,长度 capacity 。

◆ lmmc_sparse_bsr_t

struct lmmc_sparse_bsr_t

块稀疏行 (BSR) 格式矩阵。

每个非零块为 block_size x block_size 的稠密子矩阵, 按行优先存储在 values 中。

在文件 sparse_types.h 第 92 行定义.

lmmc_sparse_bsr_t 的协作图:
成员变量
size_t rows

块行数。

size_t cols

块列数。

size_t block_size

rxr 块维度。

size_t nnz_blocks

非零块数量。

size_t * row_ptr

块行指针数组,长度 rows+1 。

size_t * col_idx

块列索引数组,长度 nnz_blocks 。

lmmc_real_t * values

块数值数组,长度 nnz_blocks * block_size^2 。

int owns_data

是否拥有底层缓冲区。

◆ lmmc_sparse_sym_csr_t

struct lmmc_sparse_sym_csr_t

对称半存储 CSR 格式矩阵。

仅存储上三角或下三角(含对角线),用于对称矩阵的紧凑表示。

在文件 sparse_types.h 第 114 行定义.

lmmc_sparse_sym_csr_t 的协作图:
成员变量
size_t n

矩阵阶数(方阵)。

size_t nnz

存储的非零元个数(仅半三角)。

size_t * row_ptr

行指针数组,长度 n+1 。

size_t * col_idx

列索引数组,长度 nnz 。

lmmc_real_t * values

数值数组,长度 nnz 。

lmmc_sparse_sym_half_t half

存储的半三角类型。

int owns_data

是否拥有底层缓冲区。

枚举类型说明

◆ lmmc_sparse_format_t

稀疏矩阵存储格式。

枚举值
LMMC_SPARSE_CSR 0 

压缩行存储 (Compressed Sparse Row)。

LMMC_SPARSE_CSC 1 

压缩列存储 (Compressed Sparse Column)。

在文件 sparse_types.h 第 13 行定义.

◆ lmmc_sparse_sym_half_t

对称半存储选择:上三角或下三角。

枚举值
LMMC_SPARSE_SYM_UPPER 0 

存储上三角(含对角线)。

LMMC_SPARSE_SYM_LOWER 1 

存储下三角(含对角线)。

在文件 sparse_types.h 第 104 行定义.