There are two prototypes of gemm
            available, please see below. 
gemm( const Scalar >, const MatrixA& a, const MatrixB& b, const Scalar >, MatrixC& c );
gemm( const Scalar alpha, const MatrixA& a, const MatrixB& b, const Scalar beta, MatrixC& c );
            gemm (short for generic
            matrix-matrix operation) provides a C++ interface to BLAS routines SGEMM,
            DGEMM, CGEMM, and ZGEMM. gemm
            performs one of the matrix-matrix operations
          
C := alpha*op( A )*op( B ) + beta*C,
where op( X ) is one of
op( X ) = X or op( X ) = X' or op( X ) = conjg( X' ),
alpha and beta are scalars, and A, B and C are matrices, with op( A ) an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
            The selection of the BLAS routine is done during compile-time, and is
            determined by the type of values contained in type MatrixA.
            The type of values is obtained through the value_type
            meta-function typename value_type<MatrixA>::type. Table X below illustrates to
            which specific routine this dispatching will take place.
          
Table 1.82. Dispatching of gemm.
| Value type of MatrixA | BLAS routine | CBLAS routine | CUBLAS routine | 
|---|---|---|---|
| 
                       | SGEMM | cblas_sgemm | cublasSgemm | 
| 
                       | DGEMM | cblas_dgemm | cublasDgemm | 
| 
                       | CGEMM | cblas_cgemm | cublasCgemm | 
| 
                       | ZGEMM | cblas_zgemm | cublasZgemm | 
            The original routines SGEMM, DGEMM, CGEMM, and ZGEMM have thirteen arguments,
            whereas gemm requires
            five arguments.
          
            Defined in header boost/numeric/bindings/blas/level3/gemm.hpp.
          
Parameters
The definition of term 1
The definition of term 2
The definition of term 3.
Definitions may contain paragraphs.
#include <boost/numeric/bindings/blas/level3/gemm.hpp> using namespace boost::numeric::bindings; blas::gemm( x, y, z );
this will output
[5] 0 1 2 3 4 5