LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
dense_arithmetic.h
浏览该文件的文档.
1
2#ifndef LMMC_DENSE_ARITHMETIC_H
3#define LMMC_DENSE_ARITHMETIC_H
4
5#include "lmmc/dense_types.h"
6#include "lmmc/status.h"
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
35lmmc_status_t lmmc_mat_gemm(lmmc_real_t alpha, const lmmc_mat_t* A, int transA,
36 const lmmc_mat_t* B, int transB, lmmc_real_t beta, lmmc_mat_t* C);
37
58lmmc_status_t lmmc_mat_gemv(lmmc_real_t alpha, const lmmc_mat_t* A, int transA,
59 const lmmc_vec_t* x, lmmc_real_t beta, lmmc_vec_t* y);
60
76
90
103lmmc_status_t lmmc_vec_dot(const lmmc_vec_t* a, const lmmc_vec_t* b, lmmc_real_t* out_dot);
104
120
133
145
159
177
189
202lmmc_status_t lmmc_vec_iamax(const lmmc_vec_t* x, size_t* out_idx);
203
221
236
250
264
278
292
315
316#ifdef __cplusplus
317}
318#endif
319
320#endif
double lmmc_real_t
Public and internal LMMC real type.
lmmc_status_t lmmc_vec_cross(const lmmc_vec_t *a, const lmmc_vec_t *b, lmmc_vec_t *c)
计算三维向量叉积: 。
lmmc_status_t lmmc_mat_scale(lmmc_mat_t *a, lmmc_real_t alpha)
就地矩阵标量乘: 。
lmmc_status_t lmmc_vec_dot(const lmmc_vec_t *a, const lmmc_vec_t *b, lmmc_real_t *out_dot)
计算两个等长向量的内积: 。
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): 。
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): 。
lmmc_status_t lmmc_vec_iamax(const lmmc_vec_t *x, size_t *out_idx)
返回绝对值最大元素的下标。
lmmc_status_t lmmc_mat_norm_fro(const lmmc_mat_t *a, lmmc_real_t *out_norm)
计算矩阵的 Frobenius 范数: 。
lmmc_status_t lmmc_vec_asum(const lmmc_vec_t *x, lmmc_real_t *out_asum)
计算向量元素绝对值之和(L1 范数): 。
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_add(const lmmc_mat_t *a, const lmmc_mat_t *b, lmmc_mat_t *c)
同维矩阵逐元素加法:c = a + b。
lmmc_status_t lmmc_vec_axpy(lmmc_real_t alpha, const lmmc_vec_t *x, lmmc_vec_t *y)
向量 AXPY 运算: 。
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_scale(lmmc_vec_t *x, lmmc_real_t alpha)
就地向量缩放: 。
lmmc_status_t lmmc_mat_norm1(const lmmc_mat_t *a, lmmc_real_t *out_norm)
计算矩阵的 1-范数(最大绝对列和): 。
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_inf(const lmmc_mat_t *a, lmmc_real_t *out_norm)
计算矩阵的无穷范数(最大绝对行和): 。
lmmc_status_t lmmc_vec_norm2(const lmmc_vec_t *x, lmmc_real_t *out_norm)
计算向量的欧几里得(L2)范数: 。 采用缩放平方和累加;最终结果超出 binary64 范围时可为无穷。
lmmc_status_t lmmc_vec_norm_inf(const lmmc_vec_t *x, lmmc_real_t *out_norm)
计算向量的无穷范数: 。
lmmc_status_t lmmc_mat_trace(const lmmc_mat_t *a, lmmc_real_t *out_trace)
计算方阵的迹: 。
行优先存储的稠密矩阵。
一维稠密向量。
LMMC 通用状态码定义.
lmmc_status_t
LMMC 库统一返回的状态码.