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

浏览该文件的源代码.

函数

lmmc_status_t lmmc_mat_gemm (lmmc_real_t alpha, const lmmc_mat_t *A, int transA, const lmmc_mat_t *B, int transB, lmmc_real_t beta, lmmc_mat_t *C)
 通用矩阵-矩阵乘法(GEMM): \(C \leftarrow \alpha \cdot \mathrm{op}(A) \cdot \mathrm{op}(B) + \beta \cdot C\)。
lmmc_status_t lmmc_mat_gemv (lmmc_real_t alpha, const lmmc_mat_t *A, int transA, const lmmc_vec_t *x, lmmc_real_t beta, lmmc_vec_t *y)
 通用矩阵-向量乘法(GEMV): \(y \leftarrow \alpha \cdot \mathrm{op}(A) \cdot x + \beta \cdot y\)。
lmmc_status_t lmmc_mat_mul (const lmmc_mat_t *a, const lmmc_mat_t *b, lmmc_mat_t *c)
 计算矩阵乘积:c = a * b。
lmmc_status_t lmmc_mat_norm_fro (const lmmc_mat_t *a, lmmc_real_t *out_norm)
 计算矩阵的 Frobenius 范数: \(\|A\|_F = \sqrt{\sum_{i,j} A_{ij}^2}\)。
lmmc_status_t lmmc_vec_dot (const lmmc_vec_t *a, const lmmc_vec_t *b, lmmc_real_t *out_dot)
 计算两个等长向量的内积: \(\text{out\_dot} = \sum_i a_i \cdot b_i\)。
lmmc_status_t lmmc_mat_vec_mul (const lmmc_mat_t *a, const lmmc_vec_t *x, lmmc_vec_t *y)
 计算矩阵与向量的乘积:y = A * x。
lmmc_status_t lmmc_vec_norm2 (const lmmc_vec_t *x, lmmc_real_t *out_norm)
 计算向量的欧几里得(L2)范数: \(\|x\|_2 = \sqrt{\sum_i x_i^2}\)。 采用缩放平方和累加;最终结果超出 binary64 范围时可为无穷。
lmmc_status_t lmmc_vec_norm_inf (const lmmc_vec_t *x, lmmc_real_t *out_norm)
 计算向量的无穷范数: \(\|x\|_\infty = \max_i |x_i|\)。
lmmc_status_t lmmc_vec_scale (lmmc_vec_t *x, lmmc_real_t alpha)
 就地向量缩放: \(x \leftarrow \alpha \cdot x\)。
lmmc_status_t lmmc_vec_axpy (lmmc_real_t alpha, const lmmc_vec_t *x, lmmc_vec_t *y)
 向量 AXPY 运算: \(y \leftarrow \alpha \cdot x + y\)。
lmmc_status_t lmmc_vec_asum (const lmmc_vec_t *x, lmmc_real_t *out_asum)
 计算向量元素绝对值之和(L1 范数): \(\sum_i |x_i|\)。
lmmc_status_t lmmc_vec_iamax (const lmmc_vec_t *x, size_t *out_idx)
 返回绝对值最大元素的下标。
lmmc_status_t lmmc_mat_add (const lmmc_mat_t *a, const lmmc_mat_t *b, lmmc_mat_t *c)
 同维矩阵逐元素加法:c = a + b。
lmmc_status_t lmmc_mat_sub (const lmmc_mat_t *a, const lmmc_mat_t *b, lmmc_mat_t *c)
 同维矩阵逐元素减法:c = a - b。
lmmc_status_t lmmc_mat_scale (lmmc_mat_t *a, lmmc_real_t alpha)
 就地矩阵标量乘: \(A \leftarrow \alpha \cdot A\)。
lmmc_status_t lmmc_mat_trace (const lmmc_mat_t *a, lmmc_real_t *out_trace)
 计算方阵的迹: \(\mathrm{tr}(A) = \sum_i A_{ii}\)。
lmmc_status_t lmmc_mat_norm1 (const lmmc_mat_t *a, lmmc_real_t *out_norm)
 计算矩阵的 1-范数(最大绝对列和): \(\|A\|_1 = \max_j \sum_i |A_{ij}|\)。
lmmc_status_t lmmc_mat_norm_inf (const lmmc_mat_t *a, lmmc_real_t *out_norm)
 计算矩阵的无穷范数(最大绝对行和): \(\|A\|_\infty = \max_i \sum_j |A_{ij}|\)。
lmmc_status_t lmmc_vec_cross (const lmmc_vec_t *a, const lmmc_vec_t *b, lmmc_vec_t *c)
 计算三维向量叉积: \(c = a \times b\)。

函数说明

◆ lmmc_mat_gemm()

lmmc_status_t lmmc_mat_gemm ( lmmc_real_t alpha,
const lmmc_mat_t * A,
int transA,
const lmmc_mat_t * B,
int transB,
lmmc_real_t beta,
lmmc_mat_t * C )

通用矩阵-矩阵乘法(GEMM): \(C \leftarrow \alpha \cdot \mathrm{op}(A) \cdot \mathrm{op}(B) + \beta \cdot C\)。

op(X) = X(transX==0)或 X^T(transX!=0)。 设 op(A) 为 MxK,op(B) 为 KxN,则 C 必须为 MxN。 使用内置分块三重循环实现,块大小为 64。

参数
[in]alpha标量乘子 alpha。
[in]A输入矩阵 A(不被修改)。
[in]transA非零表示对 A 取转置。
[in]B输入矩阵 B(不被修改)。
[in]transB非零表示对 B 取转置。
[in]beta标量乘子 beta.beta==0 时 C 的旧值被忽略(可含 NaN)。
[in,out]C输出矩阵,维度须为 MxN.C 不可与 A 或 B 别名。
返回
注解
不分配内存。

在文件 dense_products.c 第 185 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_gemm(), LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 lmmc_mat_t::rows.

被这些函数引用 lmmc_mat_gemm() , 以及 lmmc_mat_mul().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_gemv()

lmmc_status_t lmmc_mat_gemv ( lmmc_real_t alpha,
const lmmc_mat_t * A,
int transA,
const lmmc_vec_t * x,
lmmc_real_t beta,
lmmc_vec_t * y )

通用矩阵-向量乘法(GEMV): \(y \leftarrow \alpha \cdot \mathrm{op}(A) \cdot x + \beta \cdot y\)。

op(A) 为 MxN 时,要求 x->size==N,y->size==M。 y 的半开存储包络不得与 A 或 x 的存储包络重叠。

参数
[in]alpha标量乘子 alpha。
[in]A输入矩阵 A(不被修改)。
[in]transA非零表示对 A 取转置。
[in]x输入向量 x(不被修改)。
[in]beta标量乘子 beta.beta==0 时 y 的旧值被忽略。
[in,out]y输出向量,长度须为 op(A) 的行数,且不得与 A 或 x 重叠。
返回
注解
不分配内存。

在文件 dense_products.c 第 256 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_gemv(), LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_mat_t::rows , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_mat_gemv() , 以及 lmmc_mat_vec_mul().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_mul()

lmmc_status_t lmmc_mat_mul ( const lmmc_mat_t * a,
const lmmc_mat_t * b,
lmmc_mat_t * c )

计算矩阵乘积:c = a * b。

等价于 lmmc_mat_gemm(1.0, a, 0, b, 0, 0.0, c)。 a 为 mxk,b 为 kxn,c 必须已创建为 mxn.c 不可与 a 或 b 别名。

参数
[in]a左矩阵(不被修改)。
[in]b右矩阵(不被修改)。
[out]c结果矩阵,旧内容被完全覆写。
返回
同 ::lmmc_mat_gemm。
注解
不分配内存。

在文件 dense_products.c 第 224 行定义.

引用了 lmmc_mat_gemm() , 以及 lmmc_mat_mul().

被这些函数引用 lmmc_mat_mul() , 以及 lmmc_std_linalg_matmul().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_norm_fro()

lmmc_status_t lmmc_mat_norm_fro ( const lmmc_mat_t * a,
lmmc_real_t * out_norm )

计算矩阵的 Frobenius 范数: \(\|A\|_F = \sqrt{\sum_{i,j} A_{ij}^2}\)。

采用缩放平方和累加;最终结果超出 binary64 范围时可为无穷。

参数
[in]a输入矩阵(不被修改)。
[out]out_norm输出范数值。
返回

在文件 dense_arithmetic.c 第 14 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_t::data, lmmc_mat_norm_fro(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_mat_t::rows , 以及 lmmc_mat_t::stride.

被这些函数引用 lmmc_mat_norm_fro().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_dot()

lmmc_status_t lmmc_vec_dot ( const lmmc_vec_t * a,
const lmmc_vec_t * b,
lmmc_real_t * out_dot )

计算两个等长向量的内积: \(\text{out\_dot} = \sum_i a_i \cdot b_i\)。

参数
[in]a第一个向量(不被修改)。
[in]b第二个向量(不被修改),长度须与 a 相同。
[out]out_dot输出内积值。
返回

在文件 dense_products.c 第 228 行定义.

引用了 lmmc_vec_t::data, LMMC_REAL_ADD, LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_MUL, LMMC_REAL_SET, LMMC_REAL_SET_D, LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_vec_dot() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_std_linalg_dot(), lmmc_vec_dot() , 以及 lmmc_vec_dot_checked().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_vec_mul()

lmmc_status_t lmmc_mat_vec_mul ( const lmmc_mat_t * a,
const lmmc_vec_t * x,
lmmc_vec_t * y )

计算矩阵与向量的乘积:y = A * x。

等价于 lmmc_mat_gemv(1.0, a, 0, x, 0.0, y)。 a 为 mxn,x->size==n,y->size==m.y 的旧内容被完全覆写,且 y 不得与 a 或 x 重叠。

参数
[in]a输入矩阵(不被修改)。
[in]x输入向量(不被修改)。
[out]y输出向量,旧内容被覆写。
返回
同 ::lmmc_mat_gemv。
注解
不分配内存。

在文件 dense_products.c 第 283 行定义.

引用了 lmmc_mat_gemv() , 以及 lmmc_mat_vec_mul().

被这些函数引用 lmmc_mat_vec_mul() , 以及 lmmc_std_linalg_matvec().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_norm2()

lmmc_status_t lmmc_vec_norm2 ( const lmmc_vec_t * x,
lmmc_real_t * out_norm )

计算向量的欧几里得(L2)范数: \(\|x\|_2 = \sqrt{\sum_i x_i^2}\)。 采用缩放平方和累加;最终结果超出 binary64 范围时可为无穷。

参数
[in]x输入向量(不被修改),size 必须 > 0。
[out]out_norm输出范数值(非负)。
返回

在文件 dense_arithmetic.c 第 32 行定义.

引用了 lmmc_vec_t::data, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_vec_norm2() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_std_linalg_norm(), lmmc_vec_norm2() , 以及 lmmc_vec_norm2_checked().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_norm_inf()

lmmc_status_t lmmc_vec_norm_inf ( const lmmc_vec_t * x,
lmmc_real_t * out_norm )

计算向量的无穷范数: \(\|x\|_\infty = \max_i |x_i|\)。

参数
[in]x输入向量(不被修改),size 必须 > 0。
[out]out_norm输出范数值(非负)。
返回

在文件 dense_arithmetic.c 第 47 行定义.

引用了 lmmc_vec_t::data, LMMC_REAL_ABS, LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_SET, LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_vec_norm_inf() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_vec_norm_inf().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_scale()

lmmc_status_t lmmc_vec_scale ( lmmc_vec_t * x,
lmmc_real_t alpha )

就地向量缩放: \(x \leftarrow \alpha \cdot x\)。

参数
[in,out]x待缩放向量,size 必须 > 0。
[in]alpha缩放因子。
返回
注解
不分配内存。

在文件 dense_arithmetic.c 第 67 行定义.

引用了 lmmc_vec_t::data, LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_MUL, LMMC_REAL_SET, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_vec_scale() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_std_linalg_vec_scale() , 以及 lmmc_vec_scale().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_axpy()

lmmc_status_t lmmc_vec_axpy ( lmmc_real_t alpha,
const lmmc_vec_t * x,
lmmc_vec_t * y )

向量 AXPY 运算: \(y \leftarrow \alpha \cdot x + y\)。

x 与 y 长度须相同。

参数
[in]alpha缩放因子。
[in]x输入向量(不被修改)。
[in,out]y累加目标向量,就地修改。
返回
注解
不分配内存。

在文件 dense_products.c 第 287 行定义.

引用了 lmmc_vec_t::data, LMMC_REAL_ADD, LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_MUL, LMMC_REAL_SET, LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_vec_axpy() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_gmres_arnoldi(), lmmc_std_linalg_vec_add(), lmmc_std_linalg_vec_sub() , 以及 lmmc_vec_axpy().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_asum()

lmmc_status_t lmmc_vec_asum ( const lmmc_vec_t * x,
lmmc_real_t * out_asum )

计算向量元素绝对值之和(L1 范数): \(\sum_i |x_i|\)。

参数
[in]x输入向量(不被修改),size 必须 > 0。
[out]out_asum输出绝对值和(非负)。
返回

在文件 dense_arithmetic.c 第 83 行定义.

引用了 lmmc_vec_t::data, LMMC_REAL_ABS, LMMC_REAL_ADD, LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_SET, LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_vec_asum() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_vec_asum().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_iamax()

lmmc_status_t lmmc_vec_iamax ( const lmmc_vec_t * x,
size_t * out_idx )

返回绝对值最大元素的下标。

若有多个相同最大值,返回最小下标。

参数
[in]x输入向量(不被修改),size 必须 > 0。
[out]out_idx输出下标(从 0 开始)。
返回

在文件 dense_arithmetic.c 第 106 行定义.

引用了 lmmc_vec_t::data, LMMC_REAL_ABS, LMMC_REAL_CLEAR, LMMC_REAL_CMP, LMMC_REAL_INIT, LMMC_REAL_SET, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_vec_iamax() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_vec_iamax().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_add()

lmmc_status_t lmmc_mat_add ( const lmmc_mat_t * a,
const lmmc_mat_t * b,
lmmc_mat_t * c )

同维矩阵逐元素加法:c = a + b。

a,b,c 维度须完全相同.c 可与 a 或 b 别名(就地加法)。

参数
[in]a输入矩阵(不被修改)。
[in]b输入矩阵(不被修改)。
[out]c输出矩阵,内容被覆写。
返回
注解
不分配内存。

在文件 dense_arithmetic.c 第 131 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_t::data, lmmc_mat_add(), LMMC_REAL_ADD, LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_SET, LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_mat_t::rows , 以及 lmmc_mat_t::stride.

被这些函数引用 lmmc_mat_add() , 以及 lmmc_std_linalg_mat_add().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_sub()

lmmc_status_t lmmc_mat_sub ( const lmmc_mat_t * a,
const lmmc_mat_t * b,
lmmc_mat_t * c )

同维矩阵逐元素减法:c = a - b。

a,b,c 维度须完全相同.c 可与 a 或 b 别名。

参数
[in]a输入矩阵(不被修改)。
[in]b输入矩阵(不被修改)。
[out]c输出矩阵,内容被覆写。
返回
同 ::lmmc_mat_add。
注解
不分配内存。

在文件 dense_arithmetic.c 第 157 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_t::data, lmmc_mat_sub(), LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_SET, LMMC_REAL_SUB, LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_mat_t::rows , 以及 lmmc_mat_t::stride.

被这些函数引用 lmmc_mat_sub() , 以及 lmmc_std_linalg_mat_sub().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_scale()

lmmc_status_t lmmc_mat_scale ( lmmc_mat_t * a,
lmmc_real_t alpha )

就地矩阵标量乘: \(A \leftarrow \alpha \cdot A\)。

参数
[in,out]a待缩放矩阵。
[in]alpha缩放因子。
返回
注解
不分配内存。

在文件 dense_arithmetic.c 第 183 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_t::data, lmmc_mat_scale(), LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_MUL, LMMC_REAL_SET, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_mat_t::rows , 以及 lmmc_mat_t::stride.

被这些函数引用 lmmc_mat_scale() , 以及 lmmc_std_linalg_mat_scale().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_trace()

lmmc_status_t lmmc_mat_trace ( const lmmc_mat_t * a,
lmmc_real_t * out_trace )

计算方阵的迹: \(\mathrm{tr}(A) = \sum_i A_{ii}\)。

要求 a->rows == a->cols。

参数
[in]a输入方阵(不被修改)。
[out]out_trace输出迹值。
返回

在文件 dense_arithmetic.c 第 222 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_t::data, lmmc_mat_trace(), LMMC_REAL_ADD, LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_SET, LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_mat_t::rows , 以及 lmmc_mat_t::stride.

被这些函数引用 lmmc_mat_trace() , 以及 lmmc_std_linalg_trace().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_norm1()

lmmc_status_t lmmc_mat_norm1 ( const lmmc_mat_t * a,
lmmc_real_t * out_norm )

计算矩阵的 1-范数(最大绝对列和): \(\|A\|_1 = \max_j \sum_i |A_{ij}|\)。

无临时内存分配。

参数
[in]a输入矩阵(不被修改)。
[out]out_norm输出范数值。
返回

在文件 dense_arithmetic.c 第 245 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_t::data, lmmc_mat_norm1(), LMMC_REAL_ABS, LMMC_REAL_ADD, LMMC_REAL_CLEAR, LMMC_REAL_CMP, LMMC_REAL_INIT, LMMC_REAL_SET, LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_mat_t::rows , 以及 lmmc_mat_t::stride.

被这些函数引用 lmmc_mat_norm1().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_norm_inf()

lmmc_status_t lmmc_mat_norm_inf ( const lmmc_mat_t * a,
lmmc_real_t * out_norm )

计算矩阵的无穷范数(最大绝对行和): \(\|A\|_\infty = \max_i \sum_j |A_{ij}|\)。

无临时内存分配。

参数
[in]a输入矩阵(不被修改)。
[out]out_norm输出范数值。
返回

在文件 dense_arithmetic.c 第 283 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_t::data, lmmc_mat_norm_inf(), LMMC_REAL_ABS, LMMC_REAL_ADD, LMMC_REAL_CLEAR, LMMC_REAL_CMP, LMMC_REAL_INIT, LMMC_REAL_SET, LMMC_REAL_SET_D, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_mat_t::rows , 以及 lmmc_mat_t::stride.

被这些函数引用 lmmc_mat_norm_inf().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_cross()

lmmc_status_t lmmc_vec_cross ( const lmmc_vec_t * a,
const lmmc_vec_t * b,
lmmc_vec_t * c )

计算三维向量叉积: \(c = a \times b\)。

公式:

  • \(c_0 = a_1 b_2 - a_2 b_1\)
  • \(c_1 = a_2 b_0 - a_0 b_2\)
  • \(c_2 = a_0 b_1 - a_1 b_0\)

支持别名(c 可与 a 或 b 为同一向量),内部使用临时变量计算。

参数
[in]a输入向量(不被修改),长度必须为 3。
[in]b输入向量(不被修改),长度必须为 3。
[out]c输出向量,长度必须为 3,内容被覆写。
返回
注解
不分配内存。

在文件 dense_elementwise.c 第 286 行定义.

引用了 lmmc_vec_t::data, LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_MUL, LMMC_REAL_SET, LMMC_REAL_SUB, LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_vec_cross() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_vec_cross().

函数调用图:
这是这个函数的调用关系图: