在BLAS 1级中,有* ASUM和* NRM2计算向量的L1和L2范数,但是如何计算向量的(带符号)和?必须要有更好的东西,而不是填充另一个向量并做* DOT ...
BLAS不提供像您所寻求的水平求和操作,因为它不是线性代数库经常需要的操作。
许多DSP库确实提供了这种操作;例如,在OS X和iOS上,您将使用Accelerate框架提供的vDSP_sve( )
函数。遗憾的是,可用的DSP库在平台之间往往差异很大,因此我们需要了解更多关于您所针对的平台的信息。
一种方法是使用带有向量的点积,更具体地说是使用cblas_caxpy函数。
你可以做一个点积,其中第二个向量的增量为零。使用C就像这样:
int n;
int ix = 1;
int iy = 0;
double y = 1.0;
ddot_(&n, x, &ix, &y, &iy);
正如http://www.netlib.org/blas/blasqr.pdf所见,xAXPY
支持向量求和。