{S,D,C,Z}TPMV (uplo, trans, diag, n, ap, x, incx)
uplo character*1 On entry, specifies whether the matrix A is an upper- or lower-triangular matrix: If uplo = 'U' or 'u', A is an upper-triangular matrix. If uplo = 'L' or 'l', A is a lower-triangular matrix. On exit, uplo is unchanged. trans character*1 On entry, specifies the operation to be performed: If trans = 'N' or 'n', the operation is x = Ax. If trans = 'T' or 't', the operation is x = transp(A)*x. If trans = 'C' or 'c', the operation is x = conjug_transp(A)*x. On exit, trans is unchanged. diag character*1 On entry, specifies whether the matrix A is unit- triangular: If diag = 'U' or 'u', A is a unit-triangular matrix. If diag = 'N' or 'n', A is not a unit-triangular matrix. On exit, diag is unchanged. n integer*4 On entry, the order of the matrix A; n >= 0. On exit, n is unchanged. ap real*4 | real*8 | complex*8 | complex*16 On entry, a one-dimensional array AP of length at least n(n + 1)/2. If uplo specifies the upper triangular part of the matrix A, the array contains those elements of the matrix, packed sequentially, column by column, so that AP(1) contains a(11), AP(2) and AP(3) contain a(12) and a(22) respectively, and so on. If uplo specifies the lower triangular part to the matrix A, so that AP(1) contains a(11), AP(2) and AP(3) contain a(21) and a(31) respectively, and so on. If diag is equal to the diagonal elements of A are not referenced, but are assumed to be unity. On exit, ap is unchanged. x real*4 | real*8 | complex*8 | complex*16 On entry, a one-dimensional array X of length at least (1+(n-1)*|incx|). Array X contains the vector x. On exit, x is overwritten with the transformed vector x. incx integer*4 On entry, the increment for the elements of X; incx must not equal zero. On exit, incx is unchanged.
The _TPMV subprograms compute a matrix-vector product for a triangular matrix stored in packed form or its transpose: x = Ax or x = transp(A)*x. In addition to these operations, the CTPMV and ZTPMV subprograms compute a matrix-vector product for the conjugate transpose: x = conjug_transp(A)*x . x is a vector with n elements and A is an n by n, unit or non-unit, upper- or lower-triangular matrix, supplied in packed form.
REAL*4 AP(250), X(20) INCX = 1 N = 20 CALL STPMV('U','N','N',N,AP,X,INCX) This FORTRAN code computes the product x = Ax where A is an upper- triangular matrix of order 20, with non-unit diagonal, stored in packed form.