?trsv
Solve a linear system of equations with a triangular coefficient matrix.
That is,
,
, or
. x and b are vectors including n elements, and A is an n*n unit or non-unit triangular matrix.
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 |
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 0. |
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 |
Dependency
#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|


