Você pode fazer isso com o DGEMM, mas seria mais estilisticamente correto usar o DGER, que é uma implementação dedicada de produtos externos. Como tal, é um pouco mais fácil de usar corretamente:
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 faz tem o bom recurso que passa \beta = 0
Inicializa a matriz de resultados para você, o que evita que você precise se concentrar explicitamente antes da chamada. A resposta de @artem shinkarov fornece uma boa descrição de como usar o DGEMM.