GSL CBLAS Examples - GNU Scientific Library -- Reference Manual
Description: GNU Scientific Library -- Reference Manual

Previous: Level 3 CBLAS Functions, Up: GSL CBLAS Library

### D.4 Examples

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

         [ 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 but could be stored in column major order if the first argument of the call to `cblas_sgemm` was changed to `CblasColMajor`.

         #include <stdio.h>
         #include <gsl/gsl_cblas.h>

         int
         main (void)
         {
           int lda = 3;

           float A[] = { 0.11, 0.12, 0.13,
                         0.21, 0.22, 0.23 };

           int ldb = 2;

           float B[] = { 1011, 1012,
                         1021, 1022,
                         1031, 1032 };

           int ldc = 2;

           float C[] = { 0.00, 0.00,
                         0.00, 0.00 };

           /* Compute C = A B */

           cblas_sgemm (CblasRowMajor,
                        CblasNoTrans, CblasNoTrans, 2, 2, 3,
                        1.0, A, lda, B, ldb, 0.0, C, ldc);

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

           return 0;
         }

To compile the program use the following command line,

         $ gcc -Wall demo.c -lgslcblas

There is no need to link with the main library `-lgsl` in this case as the cblas library is an independent unit. Here is the output from the program,

         $ ./a.out
         [ 367.76, 368.12
           674.06, 674.72 ]

The GNU Scientific Library - a free numerical library licensed under the GNU GPL
Back to the GNU Scientific Library Homepage