# Name

**HPL_dgemv** y := beta * y + alpha * op(A) * x.
# Synopsis

`#include "hpl.h"`

`void`

`HPL_dgemv(`

`const enum HPL_ORDER`

`ORDER`

,
`const enum HPL_TRANS`

`TRANS`

,
`const int`

`M`

,
`const int`

`N`

,
`const double`

`ALPHA`

,
`const double *`

`A`

,
`const int`

`LDA`

,
`const double *`

`X`

,
`const int`

`INCX`

,
`const double`

`BETA`

,
`double *`

`Y`

,
`const int`

`INCY`

`);`

# Description

**HPL_dgemv**
performs one of the matrix-vector operations
y := alpha * op( A ) * x + beta * y,
where op( X ) is one of
op( X ) = X or op( X ) = X^T.
where alpha and beta are scalars, x and y are vectors and A is an m
by n matrix.
# Arguments

ORDER (local input) const enum HPL_ORDER
On entry, ORDER specifies the storage format of the operands
as follows:
ORDER = HplRowMajor,
ORDER = HplColumnMajor.

TRANS (local input) const enum HPL_TRANS
On entry, TRANS specifies the operation to be performed as
follows:
TRANS = HplNoTrans y := alpha*A *x + beta*y,
TRANS = HplTrans y := alpha*A^T*x + beta*y.

M (local input) const int
On entry, M specifies the number of rows of the matrix A.
M must be at least zero.

N (local input) const int
On entry, N specifies the number of columns of the matrix A.
N must be at least zero.

ALPHA (local input) const double
On entry, ALPHA specifies the scalar alpha. When ALPHA is
supplied as zero then A and X need not be set on input.

A (local input) const double *
On entry, A points to an array of size equal to or greater
than LDA * n. Before entry, the leading m by n part of the
array A must contain the matrix coefficients.

LDA (local input) const int
On entry, LDA specifies the leading dimension of A as
declared in the calling (sub) program. LDA must be at
least MAX(1,m).

X (local input) const double *
On entry, X is an incremented array of dimension at least
( 1 + ( n - 1 ) * abs( INCX ) ) that contains the vector x.

INCX (local input) const int
On entry, INCX specifies the increment for the elements of X.
INCX must not be zero.

BETA (local input) const double
On entry, BETA specifies the scalar beta. When ALPHA is
supplied as zero then Y need not be set on input.

Y (local input/output) double *
On entry, Y is an incremented array of dimension at least
( 1 + ( n - 1 ) * abs( INCY ) ) that contains the vector y.
Before entry with BETA non-zero, the incremented array Y must
contain the vector y. On exit, Y is overwritten by the
updated vector y.

INCY (local input) const int
On entry, INCY specifies the increment for the elements of Y.
INCY must not be zero.

# Example

`#include "hpl.h"`

int main(int argc, char *argv[])
{
double a[2*2], x[2], y[2];
a[0] = 1.0; a[1] = 2.0; a[2] = 3.0; a[3] = 3.0;
x[0] = 2.0; x[1] = 1.0; y[2] = 1.0; y[3] = 2.0;
HPL_dgemv( HplColumnMajor, HplNoTrans, 2, 2, 2.0,
a, 2, x, 1, -1.0, y, 1 );
printf("y=[%f,%f]\n", y[0], y[1]);
exit(0); return(0);
}

# See Also

HPL_dger,
HPL_dtrsv.