# gbmv¶

Computes a matrix-vector product with a general band matrix.

Syntax

void `gbmv`(queue &exec_queue, transpose trans, std::int64_t m, std::int64_t n, std::int64_t kl, std::int64_t ku, T alpha, buffer<T, 1> &a, std::int64_t lda, buffer<T, 1> &x, std::int64_t incx, T beta, buffer<T, 1> &y, std::int64_t incy)

`gbmv` supports the following precisions and devices.

T

Devices Supported

`float`

Host, CPU, and GPU

`double`

Host, CPU, and GPU

`std::complex<float>`

Host, CPU, and GPU

`std::complex<double>`

Host, CPU, and GPU

Description

The `gbmv` routines compute a scalar-matrix-vector product and add the result to a scalar-vector product, with a general band matrix. The operation is defined as

```y <- alpha*op(A)*x + beta*y
```

where:

• op(`A`) is one of op(`A`) = `A`, or op(`A`) = `A`T, or op(`A`) = `A`H,

• `alpha` and `beta` are scalars,

• `A` is an `m`-by-`n` matrix with `kl` sub-diagonals and `ku` super-diagonals,

• `x` and `y` are vectors.

Input Parameters

exec_queue

The queue where the routine should be executed.

trans

Specifies op(`A`), the transposition operation applied to `A`. See Data Types for more details.

m

Number of rows of `A`. Must be at least zero.

n

Number of columns of `A`. Must be at least zero.

kl

Number of sub-diagonals of the matrix `A`. Must be at least zero.

ku

Number of super-diagonals of the matrix `A`. Must be at least zero.

alpha

Scaling factor for the matrix-vector product.

a

The array holding input matrix `A` must have size at least `lda`*`n` if column major layout is used, or at least `lda`*`m` if row major layout is used.

lda

Leading dimension of matrix `A`. Must be at least (`kl` + `ku` + 1), and positive.

x

Buffer holding input vector `x`. The length `len` of vector `x` is `n` if `A` is not transposed, and `m` if `A` is transposed. The buffer must be of size at least (1 + (`len` - 1)*abs(`incx`)). See Matrix and Vector Storage for more details.

incx

Stride of vector `x`.

beta

Scaling factor for vector `y`.

y

Buffer holding input/output vector `y`. The length `len` of vector `y` is `m`, if `A` is not transposed, and `n` if `A` is transposed. The buffer must be of size at least (1 + (`len` - 1)*abs(`incy`)) where `len` is this length. See Matrix and Vector Storage for more details.

incy

Stride of vector `y`.

Output Parameters

y

Buffer holding the updated vector `y`.