Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 10/31/2024
Public
Document Table of Contents

?la_gbamv

Performs a matrix-vector operation to calculate error bounds.

Syntax

call sla_gbamv(trans, m, n, kl, ku, alpha, ab, ldab, x, incx, beta, y, incy)

call dla_gbamv(trans, m, n, kl, ku, alpha, ab, ldab, x, incx, beta, y, incy)

call cla_gbamv(trans, m, n, kl, ku, alpha, ab, ldab, x, incx, beta, y, incy)

call zla_gbamv(trans, m, n, kl, ku, alpha, ab, ldab, x, incx, beta, y, incy)

Include Files

  • mkl.fi

Description

The ?la_gbamv function performs one of the matrix-vector operations defined as

y := alpha*abs(A)*abs(x) + beta*abs(y),

or

y := alpha*abs(A)T*abs(x) + beta*abs(y),

where:

alpha and beta are scalars,

x and y are vectors,

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

This function is primarily used in calculating error bounds. To protect against underflow during evaluation, the function perturbs components in the resulting vector away from zero by (n + 1) times the underflow threshold. To prevent unnecessarily large errors for block structure embedded in general matrices, the function does not perturb symbolically zero components. A zero entry is considered symbolic if all multiplications involved in computing that entry have at least one zero multiplicand.

Input Parameters

trans

INTEGER. Specifies the operation to be performed:

If trans = 'BLAS_NO_TRANS', then y := alpha*abs(A)*abs(x) + beta*abs(y)

If trans = 'BLAS_TRANS', then y := alpha*abs(AT)*abs(x) + beta*abs(y)

If trans = 'BLAS_CONJ_TRANS', then y := alpha*abs(AT)*abs(x) + beta*abs(y)

The parameter is unchanged on exit.

m

INTEGER. Specifies the number of rows of the matrix A.

The value of m must be at least zero. Unchanged on exit.

n

INTEGER. Specifies the number of columns of the matrix A.

The value of n must be at least zero. Unchanged on exit.

kl

INTEGER. Specifies the number of sub-diagonals within the band of A.

kl 0.

ku

INTEGER. Specifies the number of super-diagonals within the band of A.

ku 0.

alpha

REAL for sla_gbamv and cla_gbamv

DOUBLE PRECISION for dla_gbamv and zla_gbamv

Specifies the scalar alpha. Unchanges on exit.

ab

REAL for sla_gbamv

DOUBLE PRECISION for dla_gbamv

COMPLEX for cla_gbamv

DOUBLE COMPLEX for zla_gbamv

Array, DIMENSION(ldab, *).

Before entry, the leading m-by-n part of the array ab must contain the matrix of coefficients. The second dimension of ab must be at least max(1,n). Unchanged on exit.

ldab

INTEGER. Specifies the leading dimension of ab as declared in the calling (sub)program. The value of ldab must be at least max(1, m). Unchanged on exit.

x

REAL for sla_gbamv

DOUBLE PRECISION for dla_gbamv

COMPLEX for cla_gbamv

DOUBLE COMPLEX for zla_gbamv

Array, DIMENSION

(1 + (n - 1)*abs(incx)) when trans = 'N' or 'n'

and at least

(1 + (m - 1)*abs(incx)) otherwise.

Before entry, the incremented array x must contain the vector x.

incx

INTEGER. Specifies the increment for the elements of x. incx must not be zero.

beta

REAL for sla_gbamv and cla_gbamv

DOUBLE PRECISION for dla_gbamv and zla_gbamv

Specifies the scalar beta. When beta is zero, you do not need to set y on input.

y

REAL for sla_gbamv and cla_gbamv

DOUBLE PRECISION for dla_gbamv and zla_gbamv

Array, DIMENSION at least

(1 +(m - 1)*abs(incy)) when trans = 'N' or 'n'

and at least

(1 +(n - 1)*abs(incy)) otherwise.

Before entry with beta non-zero, the incremented array y must contain the vector y.

incy

INTEGER. Specifies the increment for the elements of y.

The value of incy must not be zero. Unchanged on exit.

Output Parameters

y

Updated vector y.