- publishing free software manuals
 GNU Scientific Library Reference Manual - Third Edition (v1.12) by M. Galassi, J. Davies, J. Theiler, B. Gough, G. Jungman, P. Alken, M. Booth, F. RossiPaperback (6"x9"), 592 pages, 60 figuresISBN 0954612078RRP £24.95 (\$39.95)

## 12.2 Examples

The following program computes the product of two matrices using the Level-3 blas function dgemm,

```[ 0.11 0.12 0.13 ]  [ 1011 1012 ]     [ 367.76 368.12 ]
[ 0.21 0.22 0.23 ]  [ 1021 1022 ]  =  [ 674.06 674.72 ]
[ 1031 1032 ]
```

The matrices are stored in row major order, according to the C convention for arrays.

```#include <stdio.h>
#include <gsl/gsl_blas.h>

int
main (void)
{
double a[] = { 0.11, 0.12, 0.13,
0.21, 0.22, 0.23 };

double b[] = { 1011, 1012,
1021, 1022,
1031, 1032 };

double c[] = { 0.00, 0.00,
0.00, 0.00 };

gsl_matrix_view A = gsl_matrix_view_array(a, 2, 3);
gsl_matrix_view B = gsl_matrix_view_array(b, 3, 2);
gsl_matrix_view C = gsl_matrix_view_array(c, 2, 2);

/* Compute C = A B */

gsl_blas_dgemm (CblasNoTrans, CblasNoTrans,
1.0, &A.matrix, &B.matrix,
0.0, &C.matrix);

printf ("[ %g, %g\n", c[0], c[1]);
printf ("  %g, %g ]\n", c[2], c[3]);

return 0;
}
```

Here is the output from the program,

```\$ ./a.out
[ 367.76, 368.12
674.06, 674.72 ]```
 ISBN 0954612078 GNU Scientific Library Reference Manual - Third Edition (v1.12) See the print edition