?trsv
Solves linear equations. The coefficient matrix is a triangular matrix.
,
or 
x and b are vectors including n elements, and A is a triangular matrix of an n x n unit or a non-unit.
Interface Definition
C interface:
void cblas_strsv(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_dtrsv(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_ctrsv(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_ztrsv(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 STRSV(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
CALL DTRSV(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
CALL CTRSV(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
CALL ZTRSV(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 |
The matrix A is a conventional matrix, a transposed matrix, or a conjugate matrix.
|
Input |
Diag |
Enumeration type CBLAS_DIAG |
Indicates whether A is a unit trigonometric array.
|
Input |
N |
Integer |
Order of the matrix A, and N is required to be greater than or equal to zero. |
Input |
A |
|
Triangular matrix. The minimum matrix size is lda*N. |
Input |
lda |
Integer |
Address distance stored in each column of matrix A. 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 |
Vector increase step in X. The value cannot be 0. |
Input |
Dependencies
#include "kblas.h"
Examples
C interface:
int n = 4, lda = 4,incx = 1;
float x[4] = {4.0, 3.0, 2.0, 1.0};
/**
* | 1.0 1.0 1.0 3.0 |
* A = | . 3.0 3.0 2.0 |
* | . . 2.0 3.0 |
* | . . . 1.0 |
*/
float ap[16] = {1.0, 0, 0, 0, 1.0, 3.0, 0, 0, 1.0, 3.0, 2.0, 0, 3.0, 2.0, 3.0, 1.0};
cblas_strsv(CblasColMajor, CblasUpper, CblasTrans, CblasNonUnit, n, ap, lda, x, incx);
/**
* Output x = |4.000000, -0.333333, -0.500000, -8.833333|
*/
Fortran interface:
INTEGER :: N=4, INCX=1
INTEGER :: LDA=4
REAL(4) :: X(4), AP(16)
DATA X/4.0, 3.0, 2.0, 1.0/
DATA AP/1.0, 0, 0, 0, 1.0, 3.0, 0, 0, 1.0, 3.0, 2.0, 0, 3.0,
$ 2.0, 3.0, 1.0/
EXTERNAL STRSV
CALL STRSV('U', 'T', 'N', N, A, LDA, X, INCX)
* Output X = |4.000000, -0.333333, -0.500000, -8.833333|


