@cindex sparse BLAS
@cindex BLAS, sparse

The Sparse Basic Linear Algebra Subprograms (@sc{blas}) define a set of
fundamental operations on vectors and sparse matrices which can be used
to create optimized higher-level linear algebra functionality.
GSL supports a limited number of BLAS operations for sparse matrices.

@noindent
The header file @file{gsl_spblas.h} contains the prototypes for the
sparse BLAS functions and related declarations.

@menu
* Sparse BLAS operations::
* Sparse BLAS References and Further Reading::
@end menu

@node Sparse BLAS operations
@section Sparse BLAS operations
@cindex sparse matrices, BLAS operations

@deftypefun int gsl_spblas_dgemv (const CBLAS_TRANSPOSE_t TransA, const double @var{alpha}, const gsl_spmatrix * @var{A}, const gsl_vector * @var{x}, const double @var{beta}, gsl_vector * @var{y})
This function computes the matrix-vector product and sum
@math{y \leftarrow \alpha op(A) x + \beta y}, where
@math{op(A) = A}, @math{A^T} for @var{TransA} = @code{CblasNoTrans},
@code{CblasTrans}. In-place computations are not supported, so
@var{x} and @var{y} must be distinct vectors.
The matrix @var{A} may be in triplet or compressed format.
@end deftypefun

@deftypefun int gsl_spblas_dgemm (const double @var{alpha}, const gsl_spmatrix * @var{A}, const gsl_spmatrix * @var{B}, gsl_spmatrix * @var{C})
This function computes the sparse matrix-matrix product
@math{C = \alpha A B}. The matrices must be in compressed format.
@end deftypefun

@node Sparse BLAS References and Further Reading
@section References and Further Reading
@cindex sparse matrices, references

The algorithms used by these functions are described in the
following sources:

@itemize @w{}
@item
T. A. Davis, Direct Methods for Sparse Linear Systems, SIAM, 2006.

@item
CSparse software library, @uref{https://www.cise.ufl.edu/research/sparse/CSparse}
@end itemize
