S:单精度,D:双精度,C:单精度复数,Z:双精度复数
lda,ldb,ldc:每行的间隔
incx,incy:x的增量
一.向量间的运算
1.cblas_?asum
作用: ∑|xi| ∑ | x i |
float cblas_sasum (const MKL_INT n, const float *x, const MKL_INT incx);
float cblas_scasum (const MKL_INT n, const void *x, const MKL_INT incx);
double cblas_dasum (const MKL_INT n, const double *x, const MKL_INT incx);
double cblas_dzasum (const MKL_INT n, const void *x, const MKL_INT incx);
n:元素个数,x:向量,incx:求和下标的增量
2.cblas_?axpy
作用: y=αx+y y = α x + y
void cblas_saxpy (const MKL_INT n, const float a, const float *x, const MKL_INT incx, float *y, const MKL_INT incy);
void cblas_daxpy (const MKL_INT n, const double a, const double *x, const MKL_INT incx, double *y, const MKL_INT incy);
void cblas_caxpy (const MKL_INT n, const void *a, const void *x, const MKL_INT incx, void *y, const MKL_INT incy);
void cblas_zaxpy (const MKL_INT n, const void *a, const void *x, const MKL_INT incx, void *y, const MKL_INT incy);
n:元素个数,a:公式中的 α α ,incx,incy:下标增量
需要注意a的数据类型要和x,y的一样。
3.cblas_?copy
作用: y=x y = x
void cblas_scopy (const MKL_INT n, const float *x, const MKL_INT incx, float *y, const MKL_INT incy);
void cblas_dcopy (const MKL_INT n, const double *x, const MKL_INT incx, double *y, const MKL_INT incy);
void cblas_ccopy (const MKL_INT n, const void *x, const MKL_INT incx, void *y, const MKL_INT incy);
void cblas_zcopy (const MKL_INT n, const void *x, const MKL_INT incx, void *y, const MKL_INT incy);
4.cblas_?dot
作用: ∑xiyi ∑ x i y i
float cblas_sdot (const MKL_INT n, const float *x, const MKL_INT incx, const float *y, const MKL_INT incy);
double cblas_ddot (const MKL_INT n, const double *x, const MKL_INT incx, const double *y, const MKL_INT incy);
5.cblas_?sdot
作用: (∑xiyi)+sb ( ∑ x i y i ) + s b
float cblas_sdsdot (const MKL_INT n, const float sb, const float *sx, const MKL_INT incx, const float *sy, const MKL_INT incy);
double cblas_dsdot (const MKL_INT n, const float *sx, const MKL_INT incx, const float *sy, const MKL_INT incy);
sb:仅适用于函数cblas_sdsdot()。
6.cblas_?dotc
作用: dotc=∑x∗iyi d o t c = ∑ x i ∗ y i