?trmv
Compute the product of a vector and a triangular matrix.
,
or
.
x is a vector that includes n elements, and A is a unit or non-unit triangular matrix of n x n.
Interface Definition
C interface:
void cblas_strmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const BLASINT N, const float *A, const BLASINT lda, float *X, const BLASINT incX);
void cblas_dtrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const BLASINT N, const double *A, const BLASINT lda, double *X, const BLASINT incX);
void cblas_ctrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const BLASINT N, const void *A, const BLASINT lda, void *X, const BLASINT incX);
void cblas_ztrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const BLASINT N, const void *A, const BLASINT lda, void *X, const BLASINT incX);
Fortran interface:
CALL STRMV(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
CALL DTRMV(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
CALL CTRMV(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
CALL ZTRMV(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
Parameters
Parameter |
Type |
Description |
Input/Output |
|---|---|---|---|
order |
Enumeration type CBLAS_ORDER |
Indicates whether the matrix is in row- or column-major order. |
Input |
Uplo |
Enumeration type CBLAS_UPLO |
Indicates whether to use the upper triangle or lower triangle of matrix A.
|
Input |
TransA |
Enumeration type CBLAS_TRANSPOSE |
Indicates whether the matrix A is a conventional matrix, a transpose matrix, or a conjugate matrix.
|
Input |
Diag |
Enumeration type CBLAS_DIAG |
Indicates whether A is a unit trigonometric matrix.
|
Input |
N |
Integer |
Order of the matrix A. N must be greater than or equal to zero. |
Input |
A |
|
Triangular matrix. The minimum matrix size is lda*N. |
Input |
lda |
Integer |
Leading dimension of matrix A. The value of lda must be greater than or equal to max(1, n). |
Input |
X |
|
Vector X. The vector scale is at least (1+(N-1)*abs(incX)). |
Input/Output |
incX |
Integer |
Increment for elements in X. The value cannot be 0. |
Input |
Dependencies
#include "kblas.h"
Examples
C interface:
int n = 4, incx = 1;
float x[4] = {4.0, 3.0, 2.0, 1.0};
/**
* | . 2.0 1.0 1.0 |
* A = | . . 1.0 2.0 |
* | . . . 1.0 |
* | . . . . |
**/
float a[16] = {0, 0, 0, 0,
2.0, 0, 0, 0,
1.0, 1.0, 0, 0,
1.0, 2.0, 1.0, 0};
cblas_strmv(CblasColMajor, CblasUpper, CblasTrans, CblasUnit, n, a, 4, x, incx);
/**
* Output x = |4.0, 11.0, 9.0, 13.0|
**/
Fortran interface:
INTEGER :: N=4, INCX=1
REAL(4) :: X(4), AP(16)
DATA X/4.0, 3.0, 2.0, 1.0/
DATA A/0, 0, 0, 0,
$ 2.0, 0, 0, 0,
$ 1.0, 1.0, 0, 0,
$ 1.0, 2.0, 1.0, 0/
EXTERNAL STRMV
CALL STRMV('U', 'T', 'U', N, A, 4, X, INCX)
* Output X = |4.0, 11.0, 9.0, 13.0|


