关键字 | 英文描述 | 中文描述 |
---|---|---|
s | real, single precision | 实数单精度 |
d | real, double precision | 实数双精度 |
c | complex, single precision | 复数单精度 |
z | complex, double precision | 复数双精度 |
ge | general matrix | 一般矩阵 |
gb | general band matrix | 一般带状矩阵 |
sy | symmetric matrix | 对称矩阵 |
sp | symmetric matrix (packed storage) | 对称矩阵(压缩存储) |
sb | symmetric band matrix | 对称带状矩阵 |
mv | matrix-vector product | 矩阵向量乘积 |
sv | solving a system of linear equations with a single unknown vector | 求解含有一个未知向量解线性方程组 |
mm | matrix-matrix product | 矩阵矩阵乘积 |
sm | solving a system of linear equations with multiple unknown vectors | 求解含有多个未知向量的线性方程组 |
tr | triangular matrix | 三角矩阵 |
tp | triangular matrix (packed storage) | 三角矩阵(压缩存储 |
tb | triangular band matrix. | 三角带状矩阵 |
#ifndef OPENBLAS_CONST
# define OPENBLAS_CONST const
#endif
#define CBLAS_INDEX size_t
typedef enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102} CBLAS_ORDER;
typedef enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112,
CblasConjTrans=113, CblasConjNoTrans=114} CBLAS_TRANSPOSE;
typedef enum CBLAS_UPLO {CblasUpper=121, CblasLower=122} CBLAS_UPLO;
typedef enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132} CBLAS_DIAG;
typedef enum CBLAS_SIDE {CblasLeft=141, CblasRight=142} CBLAS_SIDE;
CBLAS_ORDER :行优先存储或列优先存储 在C语言中数组是用 行主序,fortran中是列主序
CBLAS_TRANSPOSE :表示对矩阵执行的转置或共轭
CBLAS_UPLO :指示要使用对称矩阵的哪一部分
CBLAS_DIAG :表示三角形矩阵是否为对角线单元(对角线元素都等于1)。
CBLAS_SIDE :表示矩阵乘法的顺序
例程或函数组 | 数据类型 | 描述 |
---|---|---|
cblas_?asum | s, d, sc, dz | 矢量大小和(函数) |
cblas_?axpy | s, d, c, z | 标量-向量乘积(例程) |
cblas_?copy | s, d, c, z | 拷贝向量(例程) |
cblas_?dot | s, d | 点积(函数) |
cblas_?sdot | sd, d | 双精度点积(函数) |
cblas_?dotc | c, z | 共轭点积(函数) |
cblas_?dotu | c, z | 非共轭点积(函数) |
cblas_?nrm2 | s, d, sc, dz | 向量的2范数(欧几里得范数)(函数) |
cblas_?rot | s, d, cs, zd | 点平面旋转(例程) |
cblas_?rotg | s, d, c, z | 生成Givens旋转点(例程) |
cblas_?rotm | s, d | 修改Givens旋转平面中的点(例程 |
cblas_?rotmg | s, d | 生成修改后的Givens平面旋转点(例程) |
cblas_?scal | s, d, c, z, cs, zd | 向量-标量点积(例程) |
cblas_?swap | s, d, c, z | 向量交换(例程) |
cblas_i?amax | s, d, c, z | 向量最大绝对值元素的索引(函数) |
cblas_i?amin | s, d, c, z | 向量最小绝对值元素的索引(函数) |
cblas_?cabs1 | s, d | 辅助函数,计算复数的绝对值的单精度或双精度 |
float cblas_sasum (OPENBLAS_CONST blasint n,
OPENBLAS_CONST float *x,
OPENBLAS_CONST blasint incx);
double cblas_dasum (OPENBLAS_CONST blasint n,
OPENBLAS_CONST double *x,
OPENBLAS_CONST blasint incx);
float cblas_scasum(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx);
double cblas_dzasum(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx);
n:向量中元素个数,x:向量,incx:求和下标的增量
void cblas_saxpy(OPENBLAS_CONST blasint n,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *x,
OPENBLAS_CONST blasint incx,
float *y,
OPENBLAS_CONST blasint incy);
void cblas_daxpy(OPENBLAS_CONST blasint n,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *x,
OPENBLAS_CONST blasint incx,
double *y,
OPENBLAS_CONST blasint incy);
void cblas_caxpy(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
void *y,
OPENBLAS_CONST blasint incy);
void cblas_zaxpy(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
void *y,
OPENBLAS_CONST blasint incy);
n:向量中元素个数,a:公式中的 α,incx,incy:下标增量
需要注意a的数据类型要和x,y的一样。
void cblas_scopy(OPENBLAS_CONST blasint n,
OPENBLAS_CONST float *x,
OPENBLAS_CONST blasint incx,
float *y,
OPENBLAS_CONST blasint incy);
void cblas_dcopy(OPENBLAS_CONST blasint n,
OPENBLAS_CONST double *x,
OPENBLAS_CONST blasint incx,
double *y,
OPENBLAS_CONST blasint incy);
void cblas_ccopy(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
void *y,
OPENBLAS_CONST blasint incy);
void cblas_zcopy(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
void *y,
OPENBLAS_CONST blasint incy);
n:向量中元素个数,incx,incy:下标增量
#计算两个向量的点积(单精度)。
float cblas_sdot(OPENBLAS_CONST blasint n,
OPENBLAS_CONST float *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST float *y,
OPENBLAS_CONST blasint incy);
#计算两个向量的点积(双精度)。
double cblas_ddot(OPENBLAS_CONST blasint n,
OPENBLAS_CONST double *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST double *y,
OPENBLAS_CONST blasint incy);
n:向量中元素个数, incx,incy:下标增量
#计算两个单精度向量与一个初始单精度值的点积。
float cblas_sdsdot(OPENBLAS_CONST blasint n,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST float *y,
OPENBLAS_CONST blasint incy);
#计算一对单精度向量的双精度点积。
double cblas_dsdot (OPENBLAS_CONST blasint n,
OPENBLAS_CONST float *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST float *y,
OPENBLAS_CONST blasint incy);
n:向量中元素个数, incx,incy:下标增量 , alpha:要添加到点积中的初始值。
sb:仅适用于函数cblas_sdsdot()
#计算一个单精度复向量与另一个单精度复向量的复共轭的点积。
void cblas_cdotc_sub(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST void *y,
OPENBLAS_CONST blasint incy,
void *ret);
#计算双精度复向量的复共轭与第二个双精度复向量的点积。
void cblas_zdotc_sub(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST void *y,
OPENBLAS_CONST blasint incy,
void *ret);
n: 向量X和Y的长度。ret: 结果向量dotc
openblas_complex_float cblas_cdotc(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST void *y,
OPENBLAS_CONST blasint incy);
openblas_complex_double cblas_zdotc(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST void *y,
OPENBLAS_CONST blasint incy);
#计算两个单精度复向量的点积。
void cblas_cdotu_sub(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST void *y,
OPENBLAS_CONST blasint incy,
void *ret);
#计算两个双精度复向量的点积。
void cblas_zdotu_sub(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST void *y,
OPENBLAS_CONST blasint incy,
void *ret);
n: 向量X和Y的长度。ret: 结果向量dotu
openblas_complex_float cblas_cdotu(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST void *y,
OPENBLAS_CONST blasint incy);
openblas_complex_double cblas_zdotu(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST void *y,
OPENBLAS_CONST blasint incy);
#计算向量的L2范数(欧氏长度)(单精度)。
float cblas_snrm2 (OPENBLAS_CONST blasint N,
OPENBLAS_CONST float *X,
OPENBLAS_CONST blasint incX);
#计算向量的L2范数(欧氏长度)(双精度)。
double cblas_dnrm2 (OPENBLAS_CONST blasint N,
OPENBLAS_CONST double *X,
OPENBLAS_CONST blasint incX);
#计算向量的酉范数(单精度复数)。
float cblas_scnrm2(OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX);
#计算向量的酉范数(双精度复数)。
double cblas_dznrm2(OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX);
N : 向量X长度
将吉文斯旋转矩阵应用于一对向量。
void cblas_srot(OPENBLAS_CONST blasint N,
float *X,
OPENBLAS_CONST blasint incX,
float *Y,
OPENBLAS_CONST blasint incY,
OPENBLAS_CONST float c,
OPENBLAS_CONST float s);
void cblas_drot(OPENBLAS_CONST blasint N,
double *X,
OPENBLAS_CONST blasint incX,
double *Y,
OPENBLAS_CONST blasint incY,
OPENBLAS_CONST double c,
OPENBLAS_CONST double s);
# MKL
void cblas_csrot (const MKL_INT n,
void *x,
const MKL_INT incx,
void *y,
const MKL_INT incy,
const float c,
const float s);
void cblas_zdrot (const MKL_INT n,
void *x,
const MKL_INT incx,
void *y,
const MKL_INT incy,
const double c,
const double s);
N : 向量X和Y中的元素个数。 X : 向量x,返回时修改。Y : 向量y,返回时修改。
c : cos(θ)吉文斯旋转矩阵。s : sin(θ)吉文斯旋转矩阵。
吉文斯旋转
void cblas_srotg(float *a, float *b, float *c, float *s);
void cblas_drotg(double *a, double *b, double *c, double *s);
#MKL
void cblas_crotg (void *a, const void *b, float *c, void *s);
void cblas_zrotg (void *a, const void *b, double *c, void *s);
a : 单精度值a.返回时覆盖结果r。 b : 单精度值b.返回时覆盖,结果z(0)。
c : 未使用的条目。在返回的值覆盖cos(θ)。s : 未使用的条目。覆盖在返回值罪(θ)。
吉文斯变换
void cblas_srotm(OPENBLAS_CONST blasint N,
float *X,
OPENBLAS_CONST blasint incX,
float *Y,
OPENBLAS_CONST blasint incY,
OPENBLAS_CONST float *P);
void cblas_drotm(OPENBLAS_CONST blasint N,
double *X,
OPENBLAS_CONST blasint incX,
double *Y,
OPENBLAS_CONST blasint incY,
OPENBLAS_CONST double *P);
N : 向量中元素的个数。 X : 向量x,返回时修改。Y : 向量y,返回时修改。
P : 5-元素的向量
P[0]
标志值,定义矩阵H的形式。
-2.0:矩阵H包含单位矩阵。
-1.0:矩阵H与矩阵SH相同(由向量中剩余值定义)。
0.0: H[1,2]和H[2,1]由矩阵SH得到,其余均为1.0。
1.0: H[1,1]和H[2,2]由矩阵SH得到,H[1,2]为1.0。H(2, 1)是-1.0。
P[1] 包含 SH[1,1]
P[2] 包含 SH[2,1]
P[3] 包含 SH[1,2]
P[4] 包含 SH[2,2]
计算修改的吉文斯旋转参数
void cblas_srotmg(float *d1, float *d2, float *b1, OPENBLAS_CONST float b2, float *P);
void cblas_drotmg(double *d1, double *d2, double *b1, OPENBLAS_CONST double b2, double *P);
d1 : 比例因子D1, d2 : 比例因子D2, b1 : 比例因子B1, b2 : 比例因子B2,
P : 5-元素的向量
P[0]
标志值,定义矩阵H的形式。
-2.0:矩阵H包含单位矩阵。
-1.0:矩阵H与矩阵SH相同(由向量中剩余值定义)。
0.0: H[1,2]和H[2,1]由矩阵SH得到,其余均为1.0。
1.0: H[1,1]和H[2,2]由矩阵SH得到,H[1,2]为1.0。H(2, 1)是-1.0。
P[1] 包含 SH[1,1]
P[2] 包含 SH[2,1]
P[3] 包含 SH[1,2]
P[4] 包含 SH[2,2]
将向量的每个元素乘以一个常数
void cblas_sscal(OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
float *X,
OPENBLAS_CONST blasint incX);
void cblas_dscal(OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
double *X,
OPENBLAS_CONST blasint incX);
void cblas_cscal(OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
void *X,
OPENBLAS_CONST blasint incX);
void cblas_zscal(OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
void *X,
OPENBLAS_CONST blasint incX);
void cblas_csscal(OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
void *X,
OPENBLAS_CONST blasint incX);
void cblas_zdscal(OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
void *X,
OPENBLAS_CONST blasint incX);
alpha : 常数比例因子a
交换两个向量
void cblas_sswap(OPENBLAS_CONST blasint n,
float *x,
OPENBLAS_CONST blasint incx,
float *y,
OPENBLAS_CONST blasint incy);
void cblas_dswap(OPENBLAS_CONST blasint n,
double *x,
OPENBLAS_CONST blasint incx,
double *y,
OPENBLAS_CONST blasint incy);
void cblas_cswap(OPENBLAS_CONST blasint n,
void *x,
OPENBLAS_CONST blasint incx,
void *y,
OPENBLAS_CONST blasint incy);
void cblas_zswap(OPENBLAS_CONST blasint n,
void *x,
OPENBLAS_CONST blasint incx,
void *y,
OPENBLAS_CONST blasint incy);
找到向量中绝对值最大的元素的索引
CBLAS_INDEX cblas_isamax(OPENBLAS_CONST blasint n,
OPENBLAS_CONST float *x,
OPENBLAS_CONST blasint incx);
CBLAS_INDEX cblas_idamax(OPENBLAS_CONST blasint n,
OPENBLAS_CONST double *x,
OPENBLAS_CONST blasint incx);
CBLAS_INDEX cblas_icamax(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx);
CBLAS_INDEX cblas_izamax(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx);
元素的绝对值最小的索引(MKL)
CBLAS_INDEX cblas_isamin (const MKL_INT n, const float *x, const MKL_INT incx);
CBLAS_INDEX cblas_idamin (const MKL_INT n, const double *x, const MKL_INT incx);
CBLAS_INDEX cblas_icamin (const MKL_INT n, const void *x, const MKL_INT incx);
CBLAS_INDEX cblas_izamin (const MKL_INT n, const void *x, const MKL_INT incx);
float cblas_scabs1 (const void *z);
double cblas_dcabs1 (const void *z);
例程组 | 数据类型 | 描述 |
---|---|---|
cblas_?gbmv | s, d, c, z | 矩阵-向量乘积使用一个普通的带状矩阵 |
cblas?_gemv | s,d,c,z | 矩阵和向量的乘积 |
cblas_?ger | s,d | 一般矩阵的Rank-1更新 |
cblas_?gerc | c,z | 共轭一般矩阵的Rank-1更新 |
cblas_?geru | c,z | 非共轭一般矩阵的Rank-1更新 |
cblas_?hbmv | c,z | 矩阵-向量乘积使用埃尔米特带状矩阵 |
cblas_?hemv | c,z | 矩阵-向量乘积使用埃尔米特矩阵 |
cblas_?her | c,z | 埃尔米特矩阵的Rank-1更新 |
cblas_?her2 | c,z | 埃尔米特矩阵的Rank-2更新 |
cblas_?hpr | c,z | 埃尔米特压缩矩阵的Rank-1更新 |
cblas_?hpr2 | c,z | 埃尔米特压缩矩阵的Rank-2更新 |
cblas_?sbmv | c,z | 矩阵-向量乘积使用对称带状矩阵 |
cblas_?spmv | s,d | 矩阵-向量乘积使用对称带状压缩矩阵 |
cblas_?spr | s,d | 对称压缩矩阵的Rank-1更新 |
cblas_?spr2 | s,d | 对称压缩矩阵的Rank-2更新 |
cblas_?symv | s,d | 矩阵-向量乘积使用对称矩阵 |
cblas_?syr | s,d | 对称矩阵的Rank-1更新 |
cblas_?syr2 | s,d | 对称矩阵的Rank-2更新 |
cblas_?tbmv | s, d, c, z | 矩阵和向量的乘积使用三角形带状矩阵 |
cblas_?tbsv | s, d, c, z | 三角形带状矩阵线性方程组的解 |
cblas_?tpmv | s, d, c, z | 矩阵和向量的乘积使用三角形压缩矩阵 |
cblas_?tpsv | s, d, c, z | 三角形压缩矩阵线性方程组的解 |
cblas_?trmv | s, d, c, z | 矩阵和向量的乘积使用三角形矩阵 |
cblas_?trsv | s, d, c, z | 三角形矩阵线性方程组的解 |
缩放一个普通的带状矩阵,然后乘以一个向量,然后加上一个向量
void cblas_sgbmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint KL,
OPENBLAS_CONST blasint KU,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST float *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST float beta,
float *Y,
OPENBLAS_CONST blasint incY);
void cblas_dgbmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint KL,
OPENBLAS_CONST blasint KU,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST double *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST double beta,
double *Y,
OPENBLAS_CONST blasint incY);
void cblas_cgbmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint KL,
OPENBLAS_CONST blasint KU,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *beta,
void *Y,
OPENBLAS_CONST blasint incY);
void cblas_zgbmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint KL,
OPENBLAS_CONST blasint KU,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *beta,
void *Y,
OPENBLAS_CONST blasint incY);
M : 矩阵A的行数, N : 矩阵A的列数
KL : 矩阵A中的子对角线数。 KU : 矩阵A中超对角线的个数。
alpha : 乘以矩阵A的比例因子。 beta : 用比例因子乘以向量Y。(一般取alpha=1.0,beta=0.0)
lda : 包含矩阵a的数组的前导维数(必须至少为KL+KU+1)。
X,Y : 向量X,Y
矩阵乘以向量
void cblas_sgemv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE trans,
OPENBLAS_CONST blasint m,
OPENBLAS_CONST blasint n,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *a,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST float *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST float beta,
float *y,
OPENBLAS_CONST blasint incy);
void cblas_dgemv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE trans,
OPENBLAS_CONST blasint m,
OPENBLAS_CONST blasint n,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *a,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST double *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST double beta,
double *y,
OPENBLAS_CONST blasint incy);
void cblas_cgemv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE trans,
OPENBLAS_CONST blasint m,
OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *a,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST void *beta,
void *y,
OPENBLAS_CONST blasint incy);
void cblas_zgemv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE trans,
OPENBLAS_CONST blasint m,
OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *a,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST void *beta,
void *y,
OPENBLAS_CONST blasint incy);
m : 矩阵a的行数, n : 矩阵a的列数
alpha : 矩阵a和向量x乘积的比例因子。 beta : 向量Y的比例因子。
lda : 矩阵a的第一个维度的大小;如果你传递一个矩阵a[m][n],它的值应该是m。
x,y : 向量x,y
向量X乘以向量Y的变换,然后加上矩阵A
void cblas_sger (OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST float *Y,
OPENBLAS_CONST blasint incY,
float *A,
OPENBLAS_CONST blasint lda);
void cblas_dger (OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST double *Y,
OPENBLAS_CONST blasint incY,
double *A,
OPENBLAS_CONST blasint lda);
lda : 包含矩阵A的数组的前导维数。 alpha : 向量X的比例因子
共轭向量
alpha *x*conjg(y’) + A.
向量X乘以向量Y的共轭变换,然后加上矩阵A
void cblas_cgerc(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *Y,
OPENBLAS_CONST blasint incY,
void *A,
OPENBLAS_CONST blasint lda);
void cblas_zgerc(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *Y,
OPENBLAS_CONST blasint incY,
void *A,
OPENBLAS_CONST blasint lda);
非共轭向量
用向量X乘以向量Y的变换,然后加上矩阵A
void cblas_cgeru(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *Y,
OPENBLAS_CONST blasint incY,
void *A,
OPENBLAS_CONST blasint lda);
void cblas_zgeru(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *Y,
OPENBLAS_CONST blasint incY,
void *A,
OPENBLAS_CONST blasint lda);
A是埃尔米特矩阵
缩放埃尔米特带状矩阵A,然后乘以一个向量X,然后加上一个向量Y
void cblas_chbmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *beta,
void *Y,
OPENBLAS_CONST blasint incY);
void cblas_zhbmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *beta,
void *Y,
OPENBLAS_CONST blasint incY);
缩放一个压缩的埃尔米特矩阵A,乘以一个向量X,然后加上一个缩放的向量Y。结果存储到Y
void cblas_chpmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *Ap,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *beta,
void *Y,
OPENBLAS_CONST blasint incY);
void cblas_zhpmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *Ap,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *beta,
void *Y,
OPENBLAS_CONST blasint incY);
解一个右边只有一个值的三角形方程组。
解A*x=b或A’*x=b其中x和b是x和b中的元素。
void cblas_strsv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
float *X,
OPENBLAS_CONST blasint incX);
void cblas_dtrsv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
double *X,
OPENBLAS_CONST blasint incX);
void cblas_ctrsv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
void *X,
OPENBLAS_CONST blasint incX);
void cblas_ztrsv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
void *X,
OPENBLAS_CONST blasint incX);
Uplo : 指定是使用矩阵中的上三角还是下三角。有效值是“U”或“L”。
Diag : 指定矩阵是否是单位三角形。可能的值是“U”(单位三角形)或“N”(非单位三角形)。
lda : 矩阵B的前导维数
一个向量乘X以一个三角形矩阵A
void cblas_strmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
float *X,
OPENBLAS_CONST blasint incX);
void cblas_dtrmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
double *X,
OPENBLAS_CONST blasint incX);
void cblas_ctrmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
void *X,
OPENBLAS_CONST blasint incX);
void cblas_ztrmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
void *X,
OPENBLAS_CONST blasint incX);
Uplo : 指定是使用矩阵中的上三角还是下三角。有效值是“U”或“L”。
Diag : 指定矩阵是否是单位三角形。可能的值是“U”(单位三角形)或“N”(非单位三角形)。
lda : 三角矩阵A的前导维数
void cblas_ssyr(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *X,
OPENBLAS_CONST blasint incX,
float *A,
OPENBLAS_CONST blasint lda);
void cblas_dsyr(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *X,
OPENBLAS_CONST blasint incX,
double *A,
OPENBLAS_CONST blasint lda);
N : 对称矩阵A的阶数;向量x中的元素个数。
lda : 对称矩阵A的前导维数
void cblas_cher(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
void *A,
OPENBLAS_CONST blasint lda);
void cblas_zher(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
void *A,
OPENBLAS_CONST blasint lda);
N :矩阵A的阶数。
使用两个向量对对称矩阵进行二次更新
void cblas_ssyr2(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST float *Y,
OPENBLAS_CONST blasint incY,
float *A,
OPENBLAS_CONST blasint lda);
void cblas_dsyr2(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST double *Y,
OPENBLAS_CONST blasint incY,
double *A,
OPENBLAS_CONST blasint lda);
void cblas_cher2(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *Y,
OPENBLAS_CONST blasint incY,
void *A,
OPENBLAS_CONST blasint lda);
void cblas_zher2(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *Y,
OPENBLAS_CONST blasint incY,
void *A,
OPENBLAS_CONST blasint lda);
缩放对称带状矩阵A,然后乘以一个向量X,然后加上一个向量Y,结果存储到Y
void cblas_ssbmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST float *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST float beta,
float *Y,
OPENBLAS_CONST blasint incY);
void cblas_dsbmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST double *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST double beta,
double *Y,
OPENBLAS_CONST blasint incY);
K : 矩阵A的半带宽。
Y : 向量Y替换为返回的结果。
缩放一个三角形带状矩阵,然后乘以一个向量(单精度)。
void cblas_stbmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
float *X,
OPENBLAS_CONST blasint incX);
void cblas_dtbmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
double *X,
OPENBLAS_CONST blasint incX);
void cblas_ctbmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
void *X,
OPENBLAS_CONST blasint incX);
void cblas_ztbmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
void *X,
OPENBLAS_CONST blasint incX);
N:矩阵A的阶数。K: 矩阵A的半带宽。 A : 三角矩阵A
解三角形带状方程组。
void cblas_stbsv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
float *X,
OPENBLAS_CONST blasint incX);
void cblas_dtbsv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
double *X,
OPENBLAS_CONST blasint incX);
void cblas_ctbsv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
void *X,
OPENBLAS_CONST blasint incX);
void cblas_ztbsv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
void *X,
OPENBLAS_CONST blasint incX);
N : 矩阵A的阶数。K : 矩阵A的上对角线或次对角线的数量(取决于Uplo的值)。
X : 包含向量B。返回时用向量X覆盖。
用一个三角形矩阵乘以一个向量
void cblas_stpmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float *Ap,
float *X,
OPENBLAS_CONST blasint incX);
void cblas_dtpmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double *Ap,
double *X,
OPENBLAS_CONST blasint incX);
void cblas_ctpmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *Ap,
void *X,
OPENBLAS_CONST blasint incX);
void cblas_ztpmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *Ap,
void *X,
OPENBLAS_CONST blasint incX);
N: 矩阵A的阶数以及向量x和y中的元素个数。Ap : 三角矩阵A
求解一个三角形的方程组
void cblas_stpsv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float *Ap,
float *X,
OPENBLAS_CONST blasint incX);
void cblas_dtpsv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double *Ap,
double *X,
OPENBLAS_CONST blasint incX);
void cblas_ctpsv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *Ap,
void *X,
OPENBLAS_CONST blasint incX);
void cblas_ztpsv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *Ap,
void *X,
OPENBLAS_CONST blasint incX);
N : 矩阵A的阶数。Ap : 三角形矩阵A(压缩存储格式)。X : 包含向量B。返回时用向量X覆盖。
缩放对称矩阵A,乘以一个向量X,然后缩放并添加另一个向量Y
void cblas_ssymv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST float *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST float beta,
float *Y,
OPENBLAS_CONST blasint incY);
void cblas_dsymv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST double *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST double beta,
double *Y,
OPENBLAS_CONST blasint incY);
N : 矩阵A的阶数;向量的长度。 Y : 向量y。包含返回的结果。
A为Hermitian 矩阵
void cblas_chemv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *beta,
void *Y,
OPENBLAS_CONST blasint incY);
void cblas_zhemv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *beta,
void *Y,
OPENBLAS_CONST blasint incY);
缩放一个压缩矩阵,然后乘以一个向量,然后缩放并添加另一个向量
void cblas_sspmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *Ap,
OPENBLAS_CONST float *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST float beta,
float *Y,
OPENBLAS_CONST blasint incY);
void cblas_dspmv(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *Ap,
OPENBLAS_CONST double *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST double beta,
double *Y,
OPENBLAS_CONST blasint incY);
N: 矩阵A的阶数以及向量x和y中的元素个数。AP: 矩阵A(压缩存储格式)。
rank one更新:将压缩对称矩阵添加到缩放因子,向量及其转置的乘积。
void cblas_sspr(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *X,
OPENBLAS_CONST blasint incX,
float *Ap);
void cblas_dspr(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *X,
OPENBLAS_CONST blasint incX,
double *Ap);
Ap: 矩阵A(压缩存储格式)。
缩放并乘以一个向量乘以它的共轭转置,然后加上一个矩阵。
void cblas_chpr(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
void *A);
void cblas_zhpr(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
void *A);
N: 矩阵A的阶数和向量x中的元素数。A : 矩阵a被返回的结果覆盖。
rank two(r2)更新:使用两个向量对压缩对称矩阵进行秩2更新。
void cblas_sspr2(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST float *Y,
OPENBLAS_CONST blasint incY,
float *A);
void cblas_dspr2(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST double *Y,
OPENBLAS_CONST blasint incY,
double *A);
A: 矩阵A(压缩存储格式)。N : 矩阵A的阶数;向量x中的元素个数。
用一个向量乘以另一个向量的共轭转置,反之亦然,对结果求和,然后加上一个矩阵。
void cblas_chpr2(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *Y,
OPENBLAS_CONST blasint incY,
void *Ap);
void cblas_zhpr2(OPENBLAS_CONST enum CBLAS_ORDER order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *X,
OPENBLAS_CONST blasint incX,
OPENBLAS_CONST void *Y,
OPENBLAS_CONST blasint incY,
void *Ap);
Ap : 矩阵A的压缩存储格式。被返回的结果覆盖。N : 矩阵A的阶数以及向量x和y中的元素个数。
例程或函数组 | 数据类型 | 描述 |
---|---|---|
cblas_?gemm | s, d, c, z | 用一般矩阵计算矩阵与矩阵的乘积。 |
cblas_?hemm | c, z | 计算矩阵与矩阵的乘积,其中一个输入矩阵是埃尔米特矩阵。 |
cblas_?herk | c, z | 埃尔米特矩阵的Rank-k更新 |
cblas_?her2k | c, z | 埃尔米特矩阵的Rank-2k更新 |
cblas_?symm | s, d, c, z | 计算一个矩阵-矩阵乘积,其中一个输入矩阵是对称的。 |
cblas_?syrk | s, d, c, z | 对称矩阵的Rank-k更新 |
cblas_?syr2k | s, d, c, z | 对称矩阵的Rank-2k更新 |
cblas_?trmm | s, d, c, z | 计算矩阵与矩阵的乘积,其中一个输入矩阵是三角形的。 |
cblas_?trsm | s, d, c, z | 解三角形矩阵方程。 |
两个矩阵相乘
void cblas_sgemm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST float *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST float beta,
float *C,
OPENBLAS_CONST blasint ldc);
void cblas_dgemm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST double *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST double beta,
double *C,
OPENBLAS_CONST blasint ldc);
void cblas_cgemm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST void *beta,
void *C,
OPENBLAS_CONST blasint ldc);
void cblas_zgemm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST void *beta,
void *C,
OPENBLAS_CONST blasint ldc);
M : 矩阵A和C中的行数。 N: 矩阵B和C的列数。 K : 矩阵A的列数;矩阵B中的行数。
alpha : 矩阵A和B乘积的比例因子。beta : 矩阵C的比例因子。
lda : 矩阵A的第一个维度的大小;如果你传递一个矩阵A[m][n],它的值应该是m。
ldb : 矩阵B的第一个维度的大小;如果你传递一个矩阵B[m][n],它的值应该是m。
ldc : 矩阵C的第一个维度的大小;如果你传递一个矩阵C[m][n],它的值应该是m。
矩阵相乘(与cblas_?gemm类似,但使用更少的矩阵乘法运算)
void cblas_cgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST void *beta,
void *C,
OPENBLAS_CONST blasint ldc);
void cblas_zgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST void *beta,
void *C,
OPENBLAS_CONST blasint ldc);
对称矩阵(A)乘以矩阵
void cblas_ssymm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST float *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST float beta,
float *C,
OPENBLAS_CONST blasint ldc);
void cblas_dsymm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST double *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST double beta,
double *C,
OPENBLAS_CONST blasint ldc);
void cblas_csymm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST void *beta,
void *C,
OPENBLAS_CONST blasint ldc);
void cblas_zsymm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST void *beta,
void *C,
OPENBLAS_CONST blasint ldc);
M : 矩阵A和C中的行数。 N: 矩阵B和C的列数。 K : 矩阵A的列数;矩阵B中的行数。
alpha : 矩阵A和B乘积的比例因子。beta : 矩阵C的比例因子。
lda : 矩阵A的第一个维度的大小;如果你传递一个矩阵A[m][n],它的值应该是m。
ldb : 矩阵B的第一个维度的大小;如果你传递一个矩阵B[m][n],它的值应该是m。
ldc : 矩阵C的第一个维度的大小;如果你传递一个矩阵C[m][n],它的值应该是m。
Rank-k (rk)更新-将对称矩阵乘以其转置,并添加第二个矩阵
void cblas_ssyrk(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST float beta,
float *C,
OPENBLAS_CONST blasint ldc);
void cblas_dsyrk(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST double beta,
double *C,
OPENBLAS_CONST blasint ldc);
void cblas_csyrk(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *beta,
void *C,
OPENBLAS_CONST blasint ldc);
void cblas_zsyrk(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *beta,
void *C,
OPENBLAS_CONST blasint ldc);
N : 矩阵C的阶数。K :矩阵A中的列数(如果矩阵A被转置,则为行数)。alpha : 矩阵A的比例因子。
lda : 包含矩阵A的数组的前导维数。 ldc : 包含矩阵C的数组的前导维数。beta : 矩阵C的比例因子。
执行对称矩阵的秩-2k更新
void cblas_ssyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST float *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST float beta,
float *C,
OPENBLAS_CONST blasint ldc);
void cblas_dsyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST double *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST double beta,
double *C,
OPENBLAS_CONST blasint ldc);
void cblas_csyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST void *beta,
void *C,
OPENBLAS_CONST blasint ldc);
void cblas_zsyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST void *beta,
void *C,
OPENBLAS_CONST blasint ldc);
N : 矩阵C的阶数。K :如果trans=‘N’,则矩阵A和B中的列数, 如果trans='C’或trans=‘T’, 则矩阵A和B中的行数。
alpha : 矩阵A的比例因子。 beta : 矩阵C的比例因子。
lda : 矩阵A的前导维数(leading dimension)。 ldb :包含矩阵B的数组的前导维数。 ldc :包含矩阵C的数组的前导维数。
缩放一个三角形矩阵,然后乘以一个矩阵。(AB或BA取决于Side)
void cblas_strmm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
float *B,
OPENBLAS_CONST blasint ldb);
void cblas_dtrmm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
double *B,
OPENBLAS_CONST blasint ldb);
void cblas_ctrmm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
void *B,
OPENBLAS_CONST blasint ldb);
void cblas_ztrmm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
void *B,
OPENBLAS_CONST blasint ldb);
M : 矩阵B中的行数。 N : 矩阵B中的列数。 alpha : 矩阵A的比例因子。 A : 三角矩阵。
lda : 矩阵A的前导维数。 ldb : 矩阵B的前导维数。 B : 矩阵B被返回的结果覆盖。
解一个右边有多个值的三角形方程组。
void cblas_strsm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *A,
OPENBLAS_CONST blasint lda,
float *B,
OPENBLAS_CONST blasint ldb);
void cblas_dtrsm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *A,
OPENBLAS_CONST blasint lda,
double *B,
OPENBLAS_CONST blasint ldb);
void cblas_ctrsm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
void *B,
OPENBLAS_CONST blasint ldb);
void cblas_ztrsm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
OPENBLAS_CONST enum CBLAS_DIAG Diag,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
void *B,
OPENBLAS_CONST blasint ldb);
M : 矩阵B中的行数。 N : 矩阵B中的列数。 alpha : 矩阵A的比例因子。 A : 三角矩阵。
lda : 矩阵A的前导维数。 ldb : 矩阵B的前导维数。 B : 在输入时的矩阵B。在返回时被矩阵X覆盖。
两个Hermitian 矩阵相乘
void cblas_chemm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST void *beta,
void *C,
OPENBLAS_CONST blasint ldc);
void cblas_zhemm(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_SIDE Side,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST blasint M,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST void *beta,
void *C,
OPENBLAS_CONST blasint ldc);
M : 矩阵A和C中的行数。 N: 矩阵B和C的列数。 K : 矩阵A的列数;矩阵B中的行数。
alpha : 矩阵A和B乘积的比例因子。beta : 矩阵C的比例因子。
lda : 矩阵A的第一个维度的大小;如果你传递一个矩阵A[m][n],它的值应该是m。
ldb : 矩阵B的第一个维度的大小;如果你传递一个矩阵B[m][n],它的值应该是m。
ldc : 矩阵C的第一个维度的大小;如果你传递一个矩阵C[m][n],它的值应该是m。
Rank-k(rk) 更新-将Hermitian 矩阵乘以其转置,并添加第二个矩阵(单精度)。
void cblas_cherk(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST float beta,
void *C,
OPENBLAS_CONST blasint ldc);
void cblas_zherk(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST double beta,
void *C,
OPENBLAS_CONST blasint ldc);
N : 矩阵C的阶数。 K : 矩阵A中的列数(如果矩阵A被转置,则为行数)。
lda : 包含矩阵A的数组的前导维数。ldc : 包含矩阵C的数组的前导维数。
执行复Hermitian矩阵的rank-2k更新
void cblas_cher2k(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST float beta,
void *C,
OPENBLAS_CONST blasint ldc);
void cblas_zher2k(OPENBLAS_CONST enum CBLAS_ORDER Order,
OPENBLAS_CONST enum CBLAS_UPLO Uplo,
OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
OPENBLAS_CONST blasint N,
OPENBLAS_CONST blasint K,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *A,
OPENBLAS_CONST blasint lda,
OPENBLAS_CONST void *B,
OPENBLAS_CONST blasint ldb,
OPENBLAS_CONST double beta,
void *C,
OPENBLAS_CONST blasint ldc);
N : 矩阵C的阶数。K :矩阵A和B的列数(如果矩阵A被转置或共轭,则为行数)。alpha : 矩阵A的比例因子。
lda : 包含矩阵A的数组的前导维数。ldb : 包含矩阵B的数组的前导维数。 ldc : 包含矩阵C的数组的前导维数。beta : 矩阵C的比例因子。
向量乘法
void cblas_saxpby(OPENBLAS_CONST blasint n,
OPENBLAS_CONST float alpha,
OPENBLAS_CONST float *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST float beta,
float *y,
OPENBLAS_CONST blasint incy);
void cblas_daxpby(OPENBLAS_CONST blasint n,
OPENBLAS_CONST double alpha,
OPENBLAS_CONST double *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST double beta,
double *y,
OPENBLAS_CONST blasint incy);
void cblas_caxpby(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST void *beta,
void *y,
OPENBLAS_CONST blasint incy);
void cblas_zaxpby(OPENBLAS_CONST blasint n,
OPENBLAS_CONST void *alpha,
OPENBLAS_CONST void *x,
OPENBLAS_CONST blasint incx,
OPENBLAS_CONST void *beta,
void *y,
OPENBLAS_CONST blasint incy);
n : 向量元素个数
向量复制
void cblas_somatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER,
OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS,
OPENBLAS_CONST blasint crows,
OPENBLAS_CONST blasint ccols,
OPENBLAS_CONST float calpha,
OPENBLAS_CONST float *a,
OPENBLAS_CONST blasint clda,
float *b,
OPENBLAS_CONST blasint cldb);
void cblas_domatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER,
OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS,
OPENBLAS_CONST blasint crows,
OPENBLAS_CONST blasint ccols,
OPENBLAS_CONST double calpha,
OPENBLAS_CONST double *a,
OPENBLAS_CONST blasint clda,
double *b,
OPENBLAS_CONST blasint cldb);
void cblas_comatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER,
OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS,
OPENBLAS_CONST blasint crows,
OPENBLAS_CONST blasint ccols,
OPENBLAS_CONST float* calpha,
OPENBLAS_CONST float* a,
OPENBLAS_CONST blasint clda,
float*b,
OPENBLAS_CONST blasint cldb);
void cblas_zomatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER,
OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS,
OPENBLAS_CONST blasint crows,
OPENBLAS_CONST blasint ccols,
OPENBLAS_CONST double* calpha,
OPENBLAS_CONST double* a,
OPENBLAS_CONST blasint clda,
double *b,
OPENBLAS_CONST blasint cldb);
CORDER :行主或列主存储顺序。
CTRANS :矩阵A是否转置或共轭。
crows :矩阵B(目标矩阵)中的行数。
ccols :矩阵B(目标矩阵)中的列数。
calpha :矩阵的比例因子。
a : 矩阵A。 b: 矩阵B。
clda : 矩阵A的第一个维度的大小;如果你传递一个矩阵A[m][n],它的值应该是m。
cldb : 矩阵B的第一个维度的大小;如果你传递一个矩阵B[m][n],它的值应该是m。
矩阵就地(in-place)转化或复制
void cblas_simatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER,
OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS,
OPENBLAS_CONST blasint crows,
OPENBLAS_CONST blasint ccols,
OPENBLAS_CONST float calpha,
float *a,
OPENBLAS_CONST blasint clda,
OPENBLAS_CONST blasint cldb);
void cblas_dimatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER,
OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS,
OPENBLAS_CONST blasint crows,
OPENBLAS_CONST blasint ccols,
OPENBLAS_CONST double calpha,
double *a,
OPENBLAS_CONST blasint clda,
OPENBLAS_CONST blasint cldb);
void cblas_cimatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER,
OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS,
OPENBLAS_CONST blasint crows,
OPENBLAS_CONST blasint ccols,
OPENBLAS_CONST float* calpha,
float* a,
OPENBLAS_CONST blasint clda,
OPENBLAS_CONST blasint cldb);
void cblas_zimatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER,
OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS,
OPENBLAS_CONST blasint crows,
OPENBLAS_CONST blasint ccols,
OPENBLAS_CONST double* calpha,
double* a,
OPENBLAS_CONST blasint clda,
OPENBLAS_CONST blasint cldb);
CORDER :行主或列主存储顺序。
CTRANS :矩阵A是否转置或共轭。
crows :矩阵A在转置操作之前的行数。
ccols :矩阵A在转置操作之前的列数。
calpha :矩阵的比例因子。
a : 矩阵A。 b: 矩阵B。
clda : 源矩阵中相邻列(列-主序)或行(行-主序)中第一个元素之间的距离;用元素的数量来衡量
cldb : 目的矩阵中相邻列的第一个元素(列-主序)或行(行-主序)之间的距离;用元素的数量来衡量。
void cblas_sgeadd(OPENBLAS_CONST enum CBLAS_ORDER CORDER,
OPENBLAS_CONST blasint crows,
OPENBLAS_CONST blasint ccols,
OPENBLAS_CONST float calpha,
float *a,
OPENBLAS_CONST blasint clda,
OPENBLAS_CONST float cbeta,
float *c,
OPENBLAS_CONST blasint cldc);
void cblas_dgeadd(OPENBLAS_CONST enum CBLAS_ORDER CORDER,
OPENBLAS_CONST blasint crows,
OPENBLAS_CONST blasint ccols,
OPENBLAS_CONST double calpha,
double *a,
OPENBLAS_CONST blasint clda,
OPENBLAS_CONST double cbeta,
double *c,
OPENBLAS_CONST blasint cldc);
void cblas_cgeadd(OPENBLAS_CONST enum CBLAS_ORDER CORDER,
OPENBLAS_CONST blasint crows,
OPENBLAS_CONST blasint ccols,
OPENBLAS_CONST float *calpha,
float *a,
OPENBLAS_CONST blasint clda,
OPENBLAS_CONST float *cbeta,
float *c,
OPENBLAS_CONST blasint cldc);
void cblas_zgeadd(OPENBLAS_CONST enum CBLAS_ORDER CORDER,
OPENBLAS_CONST blasint crows,
OPENBLAS_CONST blasint ccols,
OPENBLAS_CONST double *calpha,
double *a,
OPENBLAS_CONST blasint clda,
OPENBLAS_CONST double *cbeta,
double *c,
OPENBLAS_CONST blasint cldc);
错误处理
void cblas_xerbla(blasint p, char *rout, char *form, ...);