?la_geamv

Computes a matrix-vector product using a general matrix to calculate error bounds.

Syntax

call sla_geamv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)

call dla_geamv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)

call cla_geamv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)

call zla_geamv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)

• mkl.fi

Description

The ?la_geamv routines perform a matrix-vector operation defined as

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

or

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

where:

alpha and beta are scalars,

x and y are vectors,

A is an m-by-n matrix.

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

CHARACTER*1. Specifies the operation:

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)`.

m

INTEGER. Specifies the number of rows of the matrix A. The value of m must be at least zero.

n

INTEGER. Specifies the number of columns of the matrix A. The value of n must be at least zero.

alpha

REAL for sla_geamv and for cla_geamv

DOUBLE PRECISION for dla_geamv and zla_geamv

Specifies the scalar alpha.

a

REAL for sla_geamv

DOUBLE PRECISION for dla_geamv

COMPLEX for cla_geamv

DOUBLE COMPLEX for zla_geamv

Array, DIMENSION `(lda, *)`. Before entry, the leading m-by-n part of the array a must contain the matrix of coefficients. The second dimension of a must be at least `max(1,n)`.

lda

INTEGER. Specifies the leading dimension of a as declared in the calling (sub)program. The value of lda must be at least `max(1, m)`.

x

REAL for sla_geamv

DOUBLE PRECISION for dla_geamv

COMPLEX for cla_geamv

DOUBLE COMPLEX for zla_geamv

Array, DIMENSION at least `(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.

The value of incx must be non-zero.

beta

REAL for sla_geamv and for cla_geamv

DOUBLE PRECISION for dla_geamv and zla_geamv

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

y

REAL for sla_geamv and for cla_geamv

DOUBLE PRECISION for dla_geamv and zla_geamv

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 non-zero beta, the incremented array y must contain the vector Y.

incy

INTEGER. Specifies the increment for the elements of y.

The value of incy must be non-zero.

Output Parameters

y

Updated vector Y.

Pour de plus amples informations sur les optimisations de compilation, consultez notre Avertissement concernant les optimisations.