Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?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 )
Include Files
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(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.
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(A^{T})*abs(x) + beta*abs(y) if trans = 'BLAS_CONJ_TRANS , then y := alpha*abs(A^{T})*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 .