Puede hacerlo con DGEMM, pero sería más estilísticamente correcto usar DGER, que es una implementación dedicada de productos externos. Como tal, es algo más fácil de usar correctamente:
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 lo hace tener la buena característica que pase \beta = 0
Inicializa la matriz de resultados para usted, lo que le ahorra de la necesidad de cero explícitamente antes de la llamada. La respuesta de @artem shinkarov proporciona una buena descripción de cómo usar DGEMM.