.. index::
single: sparse BLAS
single: BLAS, sparse
*******************
Sparse BLAS Support
*******************
.. include:: include.rst
The Sparse Basic Linear Algebra Subprograms (|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.
The header file :file:`gsl_spblas.h` contains the prototypes for the
sparse BLAS functions and related declarations.
.. index::
single: sparse matrices, BLAS operations
Sparse BLAS operations
======================
.. function:: int gsl_spblas_dgemv (const CBLAS_TRANSPOSE_t TransA, const double alpha, const gsl_spmatrix * A, const gsl_vector * x, const double beta, gsl_vector * y)
This function computes the matrix-vector product and sum
:math:`y \leftarrow \alpha op(A) x + \beta y`, where
:math:`op(A) = A, A^T` for :data:`TransA` = :code:`CblasNoTrans`,
:code:`CblasTrans`. In-place computations are not supported, so
:data:`x` and :data:`y` must be distinct vectors.
The matrix :data:`A` may be in triplet or compressed format.
.. function:: int gsl_spblas_dgemm (const double alpha, const gsl_spmatrix * A, const gsl_spmatrix * B, gsl_spmatrix * C)
This function computes the sparse matrix-matrix product
:math:`C = \alpha A B`. The matrices must be in compressed format.
.. index::
single: sparse BLAS, references
References and Further Reading
==============================
The algorithms used by these functions are described in the
following sources:
* Davis, T. A., Direct Methods for Sparse Linear Systems, SIAM, 2006.
* CSparse software library, https://www.cise.ufl.edu/research/sparse/CSparse