1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
  
     | 
    
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The GSL Team.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections and no cover texts.  A copy of the license is
included in the section entitled "GNU Free Documentation License". -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Scientific Library – Reference Manual: GSL CBLAS Examples</title>
<meta name="description" content="GNU Scientific Library – Reference Manual: GSL CBLAS Examples">
<meta name="keywords" content="GNU Scientific Library – Reference Manual: GSL CBLAS Examples">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Function-Index.html#Function-Index" rel="index" title="Function Index">
<link href="GSL-CBLAS-Library.html#GSL-CBLAS-Library" rel="up" title="GSL CBLAS Library">
<link href="GNU-General-Public-License.html#GNU-General-Public-License" rel="next" title="GNU General Public License">
<link href="Level-3-CBLAS-Functions.html#Level-3-CBLAS-Functions" rel="previous" title="Level 3 CBLAS Functions">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="GSL-CBLAS-Examples"></a>
<div class="header">
<p>
Previous: <a href="Level-3-CBLAS-Functions.html#Level-3-CBLAS-Functions" accesskey="p" rel="previous">Level 3 CBLAS Functions</a>, Up: <a href="GSL-CBLAS-Library.html#GSL-CBLAS-Library" accesskey="u" rel="up">GSL CBLAS Library</a>   [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Examples-32"></a>
<h3 class="section">D.4 Examples</h3>
<p>The following program computes the product of two matrices using the
Level-3 <small>BLAS</small> function <small>SGEMM</small>,
The matrices are stored in row major order but could be stored in column
major order if the first argument of the call to <code>cblas_sgemm</code> was
changed to <code>CblasColMajor</code>.
</p>
<div class="example">
<pre class="verbatim">#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;  
}
</pre></div>
<p>To compile the program use the following command line,
</p>
<div class="example">
<pre class="example">$ gcc -Wall demo.c -lgslcblas
</pre></div>
<p>There is no need to link with the main library <code>-lgsl</code> in this
case as the <small>CBLAS</small> library is an independent unit. Here is the output
from the program,
</p>
<div class="example">
<pre class="example">$ ./a.out
</pre><pre class="verbatim">[ 367.76, 368.12
  674.06, 674.72 ]
</pre></div>
</body>
</html>
 
     |