_TRMV,_TRSV(3F) _TRMV,_TRSV(3F)NAME
dtrmv, strmv, ztrmv, ctrmv, dtrsv, strsv, ztrsv, ctrsv - BLAS Level Two
Matrix-Vector Product and Solution of system of equations.
FORTRAN 77 SYNOPSIS
subroutine dtrmv( uplo, trans, diag, n, a, lda, x, incx )
subroutine dtrsv( uplo, trans, diag, n, a, lda, x, incx )
character*1 uplo, trans, diag
integer n, lda, incx
double precision a( lda,*), x(*)
subroutine strmv( uplo, trans, diag, n, a, lda, x, incx )
subroutine strsv( uplo, trans, diag, n, a, lda, x, incx )
character*1 uplo, trans, diag
integer n, lda, incx
real a( lda,*), x(*)
subroutine ztrmv( uplo, trans, diag, n, a, lda, x, incx )
subroutine ztrsv( uplo, trans, diag, n, a, lda, x, incx )
character*1 uplo, trans, diag
integer n, lda, incx
double complex a( lda,*), x(*)
subroutine ctrmv( uplo, trans, diag, n, a, lda, x, incx )
subroutine ctrsv( uplo, trans, diag, n, a, lda, x, incx )
character*1 uplo, trans, diag
integer n, lda, incx
complex a( lda,*), x(*)
C SYNOPSIS
void dtrmv( uplo, trans, diag, n, a, lda, x, incx )
void dtrsv( uplo, trans, diag, n, a, lda, x, incx )
MatrixTriangle uplo;
MatrixTranspose trans;
MatrixUnitTriangular diag;
Integer n, lda, incx;
double (*a)[lda*n], (*x)[ n ];
void strmv( uplo, trans, diag, n, a, lda, x, incx )
void strsv( uplo, trans, diag, n, a, lda, x, incx )
MatrixTriangle uplo;
MatrixTranspose trans;
MatrixUnitTriangular diag;
Integer n, lda, incx;
float (*a)[lda*n], (*x)[ n ];
void ztrmv( uplo, trans, diag, n, a, lda, x, incx )
void ztrsv( uplo, trans, diag, n, a, lda, x, incx )
MatrixTriangle uplo;
Page 1
_TRMV,_TRSV(3F) _TRMV,_TRSV(3F)
MatrixTranspose trans;
MatrixUnitTriangular diag;
Integer n, lda, incx;
Zomplex (*a)[lda*n], (*x)[ n ];
void ctrmv( uplo, trans, diag, n, a, lda, x, incx )
void ctrsv( uplo, trans, diag, n, a, lda, x, incx )
MatrixTriangle uplo;
MatrixTranspose trans;
MatrixUnitTriangular diag;
Integer n, lda, incx;
Complex (*a)[lda*n], (*x)[ n ];
DESCRIPTION
dtrmv, strmv, ztrmv and ctrmv perform one of the matrix-vector operations
x := A*x, or x := A'*x, or x := conjg( A' )*x,
where x is an n element vector and A is an n by n unit, or non-unit,
upper or lower triangular matrix.
dtrsv, strsv, ztrsv and ctrsv solve one of the systems of equations
A*x = b, or A'*x = b, or conjg( A' )*x = b,
where b and x are n element vectors and A is an n by n unit, or non-unit,
upper or lower triangular matrix. No test for singularity or near-
singularity is included in these routines. Such tests must be performed
before calling these routines.
PARAMETERS
uplo On entry, uplo specifies whether the matrix is an upper or lower
triangular matrix as follows:
FORTRAN
uplo = 'U' or 'u' A is an upper triangular matrix.
uplo = 'L' or 'l' A is a lower triangular matrix.
C
uplo = UpperTriangle A is an upper triangular matrix.
uplo = LowerTriangle A is a lower triangular matrix.
Unchanged on exit.
trans On entry, trans specifies the operation to be
FORTRAN
trans = 'N' or 'n' x := A*x / A*x = b.
Page 2
_TRMV,_TRSV(3F) _TRMV,_TRSV(3F)
trans = 'T' or 't' x := A'*x / A'*x = b.
trans = 'C' or 'c' x := conjg( A' )*x /
conjg( A' )*x = b.
C
trans = NoTranspose x := A*x / A*x = b.
trans = Transpose x := A'*x / A'*x = b.
trans = ConjugateTranspose x := conjg( A' )*x /
conjg( A' )*x = b.
For real value matrices, trans='C' and trans='T' has the same
meaning.
Unchanged on exit.
diag On entry, diag specifies whether or not A is unit triangular as
follows:
FORTRAN
diag = 'U' or 'u' A is assumed to be unit triangular.
diag = 'N' or 'n' A is not assumed to be unit triangular.
C
diag = UnitTriangular A is assumed to be unit
triangular.
diag = NotUnitTriangular A is not assumed to be unit
triangular.
Unchanged on exit.
n On entry, n specifies the order of the matrix A. n must be at
least zero.
Unchanged on exit.
a An array containing the matrix A.
FORTRAN
Array of dimension (lda, n).
C
A pointer to an array of size lda*n.
See note below about array storage convention for C.
Before entry with uplo = 'U' or 'u' or , the elements of the
array a corresponding to the leading n by n upper triangular part
of the matrix A must contain the upper triangular matrix and the
elements corresponding to the strictly lower triangular part of A
are not referenced.
Before entry with uplo = 'L' or 'l' or , the elements
corresponding to the leading n by n lower triangular elements of
the matrix A must contain the lower triangular matrix and the
Page 3
_TRMV,_TRSV(3F) _TRMV,_TRSV(3F)
corresponding strictly upper triangular part of the matrix A is
not referenced.
Note that when diag = 'U' or 'u' or , the elements of a
corresponding to the diagonal elements of the matrix A are not
referenced either, but are assumed to be unity.
Unchanged on exit.
lda On entry, lda specifies the first dimension of A as declared in
the calling (sub) program. lda must be at least max( 1, n ).
Unchanged on exit.
x Array of size at least ( 1 + ( n - 1 )*abs( incx ) ). Before
entry, the incremented array x must contain the vector x. On
exit, x is overwritten with the transformed/solution vector x.
incx On entry, incx specifies the increment for the elements of x.
incx must not be zero.
Unchanged on exit.
The matrices are assumed to be stored in a one dimensional C array
in an analogous fashion as a Fortran array (column major). Therefore,
the element A(i+1,j) of matrix A is stored immediately after the
element A(i,j), while A(i,j+1) is lda elements apart from A(i,j).
The element A(i,j) of the matrix can be accessed directly by reference
to a[ (j-1)*lda + (i-1) ].
AUTHORS
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
Page 4