tbmv(3F)

STBMV, DTBMV, CTBMV, ZTBMV - Multiplies a real or complex vector by a real or complex triangular band matrix

As shipped in IRIX 6.5.15. Last changed in IRIX 6.5.5.

NAME
     STBMV, DTBMV, CTBMV, ZTBMV - Multiplies a real or complex vector by a
     real or complex triangular band matrix

SYNOPSIS
     Real

        CALL STBMV (uplo, trans, diag, n, k, a, lda, x, incx)

     Double precision

        CALL DTBMV (uplo, trans, diag, n, k, a, lda, x, incx)

     Complex

        CALL CTBMV (uplo, trans, diag, n, k, a, lda, x, incx)

     Double complex

        CALL ZTBMV (uplo, trans, diag, n, k, a, lda, x, incx)

IMPLEMENTATION
     IRIX systems

DESCRIPTION
     STBMV and DTBMV multiply a real vector by a real triangular band
     matrix.

     CTBMV and ZTBMV multiply a complex vector by a complex triangular band
     matrix.

     These routines perform one of the following matrix-vector operations:

          x <- Ax
                T
          x <- A x
                H
          x <- A x (CTBMV and ZTBMV only)
            T                         H
     where A  is the transpose of A, A  is the conjugate transpose of A, x
     is an n-element vector, and A may be either a unit or nonunit n-by-n
     upper or lower triangular band matrix with (k+1) diagonals.

     These routines have the following arguments:

     uplo      Character*1.  (input)
               Specifies whether the matrix is upper or lower triangular,
               as follows:

               uplo = 'U' or 'u':  A is an upper triangular matrix.
               uplo = 'L' or 'l':  A is a lower triangular matrix.

     trans     Character *1.  (input)
               Specifies the operation to be performed, as follows:

               trans = 'N' or 'n':  x <- Ax
                                          T
               trans = 'T' or 't':  x <- A x
                                          T
               trans = 'C' or 'c':  x <- A x (STBMV, DTBMV),
                        H
               or x <- A x (CTBMV, ZTBMV)

     diag      Character *1.  (input)
               Specifies whether A is unit triangular, as follows:

               diag = 'U' or 'u':  A is assumed to be unit triangular.
               diag = 'N' or 'n':  A is not assumed to be unit triangular.

     n         Integer.  (input)
               Specifies the order of matrix A.  n >= 0.

     k         Integer.  (input)

               uplo = 'U' or 'u':  k specifies the number of superdiagonals
               of matrix A.
               uplo = 'L' or 'l':  k specifies the number of subdiagonals
               of matrix A.

               k >= 0.

     a         Array of dimension (lda,n).  (input)
               STBMV: Real array.
               DTBMV: Double precision array.
               CTBMV: Complex array.
               ZTBMV: Double complex array.

               Before entry with uplo = 'U' or 'u', the leading (k+1)-by-n
               upper part of array a must contain the upper triangular band
               part of the matrix of coefficients, supplied
               column-by-column, with the leading diagonal of the matrix in
               row (k+1) of the array, the first superdiagonal starting at
               position 2 in row k, and so on.  The top left k-by-k
               triangle of array a is not referenced.

               Before entry with uplo = 'L' or 'l', the leading (k+1)-by-n
               part of array a must contain the lower triangular band part
               of the matrix of coefficients, supplied column-by-column,
               with the leading diagonal of the matrix in row 1 of the
               array, the first subdiagonal starting at position 1 in row
               2, and so on.  The bottom right k-by-k triangle of array a
               is not referenced.

               See the NOTES section for examples of Fortran code that
               transfer upper and lower triangular band matrices from
               conventional full matrix storage to band storage.

               When diag = 'U' or 'u', these routines assume that all
               elements of the array a that represent diagonal elements of
               the matrix A are 1.  In this case, neither of these routines
               will reference any of the diagonal elements.

     lda       Integer.  (input)
               Specifies the first dimension of a as declared in the
               calling program.  lda >= (k+1).

     x         Array of dimension 1+(n-1) * |incx|.  (input and output)
               STBMV: Real array.
               DTBMV: Double precision array.
               CTBMV: Complex array.
               ZTBMV: Double complex array.
               Contains the vector x.  On exit, the transformed vector
               overwrites array x.

     incx      Integer.  (input)
               Specifies the increment for the elements of x.  incx must
               not be 0.

NOTES
     The following program segment transfers an upper triangular band
     matrix from conventional full matrix storage to band storage:

              DO 20, J = 1, N
                 M = K + 1 - J
                 DO 10, I = MAX( 1, J - K ), J
                    A( M + I, J ) = MATRIX( I, J )
          10     CONTINUE
          20  CONTINUE
     The following program segment transfers a lower triangular band matrix
     from conventional full matrix storage to band storage:

              DO 20, J = 1, N
                 M = 1 - J
                 DO 10, I = J, MIN( N, J + K )
                    A( M + I, J ) = MATRIX( I, J )
          10     CONTINUE
          20  CONTINUE

     STBMV, DTBMV, CTBMV and ZTBMV are Level 2 Basic Linear Algebra
     Subprograms (Level 2 BLAS).

     When working backward (incx < 0), each routine starts at the end of
     the vector and moves backward, as follows:

          x(1-incx * (n-1)), x(1-incx * (n-2)), ..., x(1)

SEE ALSO
     This man page is available only online.