Puoi farlo con DGEmm, ma sarebbe più stilisticamente corretto usare DGER, che è un'implementazione dedicata al prodotto esterno. In quanto tale è in qualche modo più facile da usare correttamente:
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 fa avere la bella caratteristica che passano \beta = 0
Inizializza la matrice dei risultati per te, che ti risparmia dalla necessità di zero esplicitamente da solo prima della chiamata. La risposta di @Artem Shinkarov fornisce una bella descrizione di come usare dgemm.