Previous: Level 3 CBLAS Functions, Up: GSL CBLAS Library [Index]

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 ]