如果您愿意,您可以通过优化的基本线性代数子程序BLAS做您想做的事。这不在 C 标准中,它是一个你必须自己安装的包。
实现您想要的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <cblas.h>
int main () {
int limit =10;
float *a = calloc( limit, sizeof(float));
for ( int i = 0; i < limit ; i++){
a[i] = i;
}
cblas_sscal( limit , 0.5f, a, 1);
for ( int i = 0; i < limit ; i++){
printf("%3f, " , a[i]);
}
printf("\n");
}
函数的名称并不明显,但阅读指南您可能会开始猜测BLAS函数的作用。sscal()
可以分为s
for single precision和scal
for scale
,这意味着该函数适用于浮点数。调用双精度的相同函数dscal()
。
如果您需要使用常数缩放向量并将其添加到另一个向量,BLAS 也有一个函数:
saxpy()
s a x p y
float a*x + y
y[i] += a*x
正如您可能猜到的那样,还有一个daxpy()
适用于doubles
.