Я пытаюсь получить два вектора произвольной длины (типичная длина будет 2048) и умножить элемент на элемент. Таким образом, Z [n] = X [n] * Y [n] для всех n.
Код, который я настроил для тестирования, довольно прост:
float inputX[4] = { 2, 4, 8, 16 };
float inputY[4] = { 2, 4, 8, 16 };
catlas_saxpby(4, 1, inputX, 1, 1, inputY, 1);
Результат переходит во inputY, а результат
4.000000, 8.000000, 16.000000, 32.000000
Что, если они умножали, должно быть 4, 16, 64, 256. Но похоже, что это прибавление.
Так что это не то, что я ожидаю, и документация не дает мне достаточно информации, чтобы понять, что он делает.
Есть идеи?
Apple's documentation for BLAS says this:
Computes the product of two vectors, scaling each one separately (single-precision).
void catlas_saxpby (
const int N,
const float alpha,
const float *X,
const int incX,
const float beta,
float *Y,
const int incY
);
Parameters
N
Number of elements in the vector.
alpha
Scaling factor for X.
X
Input vector X.
incX
Stride within X. For example, if incX is 7, every 7th element is used.
beta
Scaling factor for Y.
Y
Input vector Y.
incY
Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
On return, the contents of vector Y are replaced with the result.