STBMV/DTBMV/CTBMV/ZTBMV

Matrix-vector multiply

Error conditions are

uplo ≠ ’L’ or ’l’ or ’U’ or ’u’

trans ≠ ’N’ or ’n’ or ’T’ or ’t’ or ’C’ or ’c’ diag ≠ ’N’ or ’n’ or ’U’ or ’u’

n < 0 kd < 0 ldab < kd+1 incx = 0

Actual character arguments in a subroutine call can be longer than the corresponding dummy arguments. Therefore, readability of the CALL statement can be improved by coding the trans argument as ’NORMAL’ or ’NONTRANS’ for ’N’, ’TRANSPOSE’ for ’T’, or ’CTRANS’ for ’C’. Refer to “Example 2.”

Example 1 Form the REAL*4 matrix-vector product Ax, where A is a 75-by-75 unit-diagonal, lower-triangular real band matrix with bandwidth 15 that is stored in an array AB whose dimensions are 25-by-100, and x is a real vector 75 elements long stored in an array X of dimension 100.

CHARACTER*1 UPLO,TRANS,DIAG

INTEGER*4 N,KD,LDAB,INCX

REAL*4 AB(25,100),X(100)

UPLO = ’L’

TRANS = ’N’

DIAG = ’U’

N = 75

KD = 15

LDAB = 25

INCX = 1

CALL STBMV (UPLO,TRANS,DIAG,N,KD,AB,LDAB,X,INCX)

Example 2 Form the REAL*8 matrix-vector product ATx, where A is a 75-by-75 nonunit-diagonal, upper-triangular real band matrix with bandwidth 15 that is stored in an array AB whose dimensions are 25-by-100, and x is a real vector 75 elements long stored in an array X of dimension 100.

INTEGER*4

N,KD,LDAB

REAL*4

AB(25,100),X(100)

N = 75

 

KD =

15

 

LDAB

= 25

 

CALL

DTBMV (’UPPER’,’TRANSPOSE’,’NONUNIT’,N,KD,AB,LDAB,X,1)

300HP MLIB User’s Guide