### BLAS Level 2 Routines

?gbmv computes a matrix-vector product using a general band matrix and performs one of the following matrix-vector operations:
`y := alpha*a*x + beta*y`  for `trans` = `'N'`or`'n'`;
`y := alpha*a'*x + beta*y`  for `trans` = `'T'`or`'t'`;
`y := alpha*conjg(a')*x + beta*y`  for `trans` = `'C'`or`'c'`.
Here `a` is an `m`-by-`n` band matrix with `ku` superdiagonals and `kl` subdiagonals, `x` and `y` are vectors, `alpha` and `beta` are scalars.
``` call sgbmv (trans, m, n, kl, ku, alpha, a, lda, x, inxc, beta, y, incy) call dgbmv (trans, m, n, kl, ku, alpha, a, lda, x, inxc, beta, y, incy) call cgbmv (trans, m, n, kl, ku, alpha, a, lda, x, inxc, beta, y, incy) call zgbmv (trans, m, n, kl, ku, alpha, a, lda, x, inxc, beta, y, incy) ```

?gemv computes a matrix-vector product using a general matrix and performs one of the following matrix-vector operations:
`y := alpha*a*x + beta*y`  for `trans` = `'N'`or`'n'`;
`y := alpha*a'*x + beta*y`  for `trans` = `'T'`or`'t'`;
`y := alpha*conjg(a')*x + beta*y`  for `trans` = `'C'`or`'c'`.
Here `a` is an `m`-by-`n` band matrix, `x` and `y` are vectors, `alpha` and `beta` are scalars.
``` call sgemv (trans, m, n, alpha, a, lda, x, incx, beta, y, incy) call dgemv (trans, m, n, alpha, a, lda, x, incx, beta, y, incy) call cgemv (trans, m, n, alpha, a, lda, x, incx, beta, y, incy) call zgemv (trans, m, n, alpha, a, lda, x, incx, beta, y, incy) ```

?ger performs a rank-1 update of a general `m`-by-`n` matrix `a`:
```a := alpha*x*y' + a```.
``` call sger (m, n, alpha, x, incx, y, incy, a, lda) call dger (m, n, alpha, x, incx, y, incy, a, lda) ```

?gerc performs a rank-1 update of a general `m`-by-`n` matrix `a`, with conjugation:
```a := alpha*x*conjg(y') + a```.
``` call cgerc (m, n, alpha, x, incx, y, incy, a, lda) call zgerc (m, n, alpha, x, incx, y, incy, a, lda) ```

?geru performs a rank-1 update of a general `m`-by-`n` matrix `a`, without conjugation:
```a := alpha*x*y' + a```.
``` call cgeru (m, n, alpha, x, incx, y, incy, a, lda) call zgeru (m, n, alpha, x, incx, y, incy, a, lda) ```

?hbmv computes a matrix-vector product using a Hermitian band matrix:
```y := alpha*a*x + beta*y```.
Here `a` is an `n`-by-`n` Hermitian band matrix with `k` superdiagonals, `x` and `y` are `n`-element vectors, `alpha` and `beta` are scalars.
``` call chbmv (uplo, n, k, alpha, a, lda, x, incx, beta, y, incy) call zhbmv (uplo, n, k, alpha, a, lda, x, incx, beta, y, incy) ```

?hemv computes a matrix-vector product using a Hermitian matrix:
```y := alpha*a*x + beta*y```.
Here `a` is an `n`-by-`n` Hermitian band matrix with `k` superdiagonals, `x` and `y` are `n`-element vectors, `alpha` and `beta` are scalars.
``` call chemv (uplo, n, alpha, a, lda, x, incx, beta, y, incy) call zhemv (uplo, n, alpha, a, lda, x, incx, beta, y, incy) ```

?her performs a rank-1 update of an `n`-by-`n` Hermitian matrix `a`:
```a := alpha*x*conjg(x') + a```.
``` call cher (uplo, n, alpha, x, incx, a, lda) call zher (uplo, n, alpha, x, incx, a, lda) ```

?her2 performs a rank-2 update of an `n`-by-`n` Hermitian matrix `a`:
```a := alpha*x*conjg(y') + conjg(alpha)*y*conjg(x') + a```.
``` call cher2 (uplo, n, alpha, x, incx, y, incy, a, lda) call zher2 (uplo, n, alpha, x, incx, y, incy, a, lda) ```

?hpmv computes a matrix-vector product using a Hermitian packed matrix:
```y := alpha*a*x + beta*y```.
Here `a` is an `n`-by-`n` packed Hermitian matrix, `x` and `y` are `n`-element vectors, `alpha` and `beta` are scalars.
``` call chpmv (uplo, n, alpha, ap, x, incx, beta, y, incy) call zhpmv (uplo, n, alpha, ap, x, incx, beta, y, incy) ```

?hpr performs a rank-1 update of an `n`-by-`n` packed Hermitian matrix `a`:
```a := alpha*x*conjg(x') + a```.
``` call chpr (uplo, n, alpha, x, incx, ap) call zhpr (uplo, n, alpha, x, incx, ap) ```

?hpr2 performs a rank-2 update of an `n`-by-`n` packed Hermitian matrix `a`:
```a := alpha*x*conjg(y') + conjg(alpha)*y*conjg(x') + a```.
``` call chpr2 (uplo, n, alpha, x, incx, y, incy, ap) call zhpr2 (uplo, n, alpha, x, incx, y, incy, ap) ```

?sbmv computes a matrix-vector product using a symmetric band matrix:
```y := alpha*a*x + beta*y```.
Here `a` is an `n`-by-`n` symmetric band matrix with `k` superdiagonals, `x` and `y` are `n`-element vectors, `alpha` and `beta` are scalars.
``` call ssbmv (uplo, n, k, alpha, a, lda, x, incx, beta, y, incy) call dsbmv (uplo, n, k, alpha, a, lda, x, incx, beta, y, incy) ```

?spmv computes a matrix-vector product using a packed symmetric matrix:
```y := alpha*a*x + beta*y```.
Here `a` is an `n`-by-`n` packed symmetric matrix; `x` and `y` are `n`-element vectors, `alpha` and `beta` are scalars.
``` call sspmv (uplo, n, alpha, ap, x, incx, beta, y, incy) call dspmv (uplo, n, alpha, ap, x, incx, beta, y, incy) ```

?spr performs a rank-1 update of an `n`-by-`n` packed symmetric matrix `a`:
```a := alpha*x*x' + a```.
``` call sspr (uplo, n, alpha, x, incx, ap) call dspr (uplo, n, alpha, x, incx, ap) ```

?spr2 performs a rank-2 update of an `n`-by-`n` packed symmetric matrix `a`:
```a := alpha*x*y' + alpha*y*x' + a```.
``` call sspr2 (uplo, n, alpha, x, incx, y, incy, ap) call dspr2 (uplo, n, alpha, x, incx, y, incy, ap) ```

?symv computes a matrix-vector product for a symmetric matrix:
```y := alpha*a*x + beta*y```.
Here `a` is an `n`-by-`n` symmetric matrix; `x` and `y` are `n`-element vectors, `alpha` and `beta` are scalars.
``` call ssymv (uplo, n, alpha, a, lda, x, incx, beta, y, incy) call dsymv (uplo, n, alpha, a, lda, x, incx, beta, y, incy) ```

?syr performs a rank-1 update of an `n`-by-`n` symmetric matrix `a`:
```a := alpha*x*x' + a```.
``` call ssyr (uplo, n, alpha, x, incx, a, lda) call dsyr (uplo, n, alpha, x, incx, a, lda) ```

?syr2 performs a rank-2 update of an `n`-by-`n` symmetric matrix `a`:
```a := alpha*x*y' + alpha*y*x' + a```.
``` call ssyr2 (uplo, n, alpha, x, incx, y, incy, a, lda) call dsyr2 (uplo, n, alpha, x, incx, y, incy, a, lda) ```

?tbmv computes a matrix-vector product using a triangular band matrix. Here `a` is an `n`-by-`n` triangular band matrix with `(k + 1)` diagonals.
``` call stbmv (uplo, trans, diag, n, k, a, lda, x, incx) call dtbmv (uplo, trans, diag, n, k, a, lda, x, incx) call ctbmv (uplo, trans, diag, n, k, a, lda, x, incx) call ztbmv (uplo, trans, diag, n, k, a, lda, x, incx) ```

?tbsv solves a system of linear equations whose coefficients are in a triangular band matrix.
``` call stbsv (uplo, trans, diag, n, k, a, lda, x, incx) call dtbsv (uplo, trans, diag, n, k, a, lda, x, incx) call ctbsv (uplo, trans, diag, n, k, a, lda, x, incx) call ztbsv (uplo, trans, diag, n, k, a, lda, x, incx) ```

?tpmv computes a matrix-vector product using a triangular packed matrix.
``` call stpmv (uplo, trans, diag, n, ap, x, incx) call dtpmv (uplo, trans, diag, n, ap, x, incx) call ctpmv (uplo, trans, diag, n, ap, x, incx) call ztpmv (uplo, trans, diag, n, ap, x, incx) ```

?tpsv solves a system of linear equations whose coefficients are in a triangular packed matrix.
``` call stpsv (uplo, trans, diag, n, ap, x, incx) call dtpsv (uplo, trans, diag, n, ap, x, incx) call ctpsv (uplo, trans, diag, n, ap, x, incx) call ztpsv (uplo, trans, diag, n, ap, x, incx) ```

?trmv computes a matrix-vector product using a triangular matrix.
``` call strmv (uplo, trans, diag, n, a, lda, x, incx) call dtrmv (uplo, trans, diag, n, a, lda, x, incx) call ctrmv (uplo, trans, diag, n, a, lda, x, incx) call ztrmv (uplo, trans, diag, n, a, lda, x, incx) ```

?trsv solves a system of linear equations whose coefficients are in a triangular matrix.
``` call strsv (uplo, trans, diag, n, a, lda, x, incx) call dtrsv (uplo, trans, diag, n, a, lda, x, incx) call ctrsv (uplo, trans, diag, n, a, lda, x, incx) call ztrsv (uplo, trans, diag, n, a, lda, x, incx) ```

* Legal Information © 1999, 2002-2004, Intel Corporation