Мне нужно частое использование matrix_vector_mult()
, которое умножает матрицу на вектор, а ниже - его реализация.
Вопрос: Есть ли простой способ сделать это значительно, по крайней мере, в два раза быстрее?
Примечания: 1) Размер матрицы составляет около 300x50. Он не меняется во время запустить. 2) Он должен работать как на Windows, так и на Linux.
double vectors_dot_prod(const double *x, const double *y, int n)
{
double res = 0.0;
int i;
for (i = 0; i < n; i++)
{
res += x[i] * y[i];
}
return res;
}
void matrix_vector_mult(const double **mat, const double *vec, double *result, int rows, int cols)
{ // in matrix form: result = mat * vec;
int i;
for (i = 0; i < rows; i++)
{
result[i] = vectors_dot_prod(mat[i], vec, cols);
}
}