Вы можете сделать это с помощью DGEMM, но было бы более стилистически правильно использовать DGER, который является специальной реализацией внешнего продукта. Таким образом, несколько проще использовать правильно:
cblas_dger(CblasRowMajor, /* you’re using row-major storage */
dx1, /* the matrix X has dx1 rows ... */
dx2, /* ... and dx2 columns. */
1.0, /* scale factor to apply to x1x2' */
x1,
1, /* stride between elements of x1. */
x2,
1, /* stride between elements of x2. */
X,
dx2); /* leading dimension of matrix X. */
DGEMM делает иметь приятную особенность, которая проходит \beta = 0
Инициализирует матрицу результата для вас, которая спасает вас от необходимости явно ее до вызова. Ответ @Artem Shinkarov дает хорошее описание того, как использовать DGEMM.