(S|D|C|Z)GEMV

Single, double, single complex, and double complex GEMV.

Description

Computes a general matrix-vector product.

y \assign \alpha A * x + \beta y

BLAS Interface

void sgemv(const char *TRANS, const qml_long *M, const qml_long *N,
           const float *ALPHA, const float *A, const qml_long *LDA,
           const float *X, const qml_long *INCX, const float *BETA, float *Y,
           const qml_long *INCY);

void dgemv(const char *TRANS, const qml_long *M, const qml_long *N,
           const double *ALPHA, const double *A, const qml_long *LDA,
           const double *X, const qml_long *INCX, const double *BETA, double *Y,
           const qml_long *INCY);

void cgemv(const char *TRANS, const qml_long *M, const qml_long *N,
           const qml_single_complex *ALPHA, const qml_single_complex *A,
           const qml_long *LDA, const qml_single_complex *X,
           const qml_long *INCX, const qml_single_complex *BETA,
           qml_single_complex *Y, const qml_long *INCY);

void zgemv(const char *TRANS, const qml_long *M, const qml_long *N,
           const qml_double_complex *ALPHA, const qml_double_complex *A,
           const qml_long *LDA, const qml_double_complex *X,
           const qml_long *INCX, const qml_double_complex *BETA,
           qml_double_complex *Y, const qml_long *INCY);

CBLAS Interface

void cblas_sgemv(const CBLAS_ORDER ORDER, const CBLAS_TRANSPOSE TRANS,
                 const qml_long M, const qml_long N, const float ALPHA,
                 const float *A, const qml_long LDA, const float *X,
                 const qml_long INCX, const float BETA, float *Y,
                 const qml_long INCY);

void cblas_dgemv(const CBLAS_ORDER ORDER, const CBLAS_TRANSPOSE TRANS,
                 const qml_long M, const qml_long N, const double ALPHA,
                 const double *A, const qml_long LDA, const double *X,
                 const qml_long INCX, const double BETA, double *Y,
                 const qml_long INCY);

void cblas_cgemv(const CBLAS_ORDER ORDER, const CBLAS_TRANSPOSE TRANS,
                 const qml_long M, const qml_long N,
                 const qml_single_complex *ALPHA, const qml_single_complex *A,
                 const qml_long LDA, const qml_single_complex *X,
                 const qml_long INCX, const qml_single_complex *BETA,
                 qml_single_complex *Y, const qml_long INCY);

void cblas_zgemv(const CBLAS_ORDER ORDER, const CBLAS_TRANSPOSE TRANS,
                 const qml_long M, const qml_long N,
                 const qml_double_complex *ALPHA, const qml_double_complex *A,
                 const qml_long LDA, const qml_double_complex *X,
                 const qml_long INCX, const qml_double_complex *BETA,
                 qml_double_complex *Y, const qml_long INCY);

Arguments

TRANS Specifies how to read matrix A
Possible values: Non-Transpose, Tranpose, Complex Conjugate Transpose
M Number of rows of matrix A
N Number of columns of matrix A
ALPHA Scalar multiplied with the matrix-vector product
A Input matrix A
LDA Leading dimension of matrix A
X First input vector, must be at least:
When Non-Tranpose: (\fvar{N}-1)\mult\abs{\fvar{INCX}} + 1
When Tranpose: (\fvar{M}-1)\mult\abs{\fvar{INCX}} + 1
INCX Distance between individual elements in X
BETA Scalar multiplied with vector Y
Y Second input vector, must be at least:
When Non-Transpose: (\fvar{M}-1)\mult\abs{\fvar{INCY}} + 1
When Transpose: (\fvar{N}-1)\mult\abs{\fvar{INCY}} + 1
INCY Distance between individual elements in Y