Contents


NAME

     cgbmv - perform one of the matrix-vector operations    y  :=
     alpha*A*x  +  beta*y, or y := alpha*A'*x + beta*y, or   y :=
     alpha*conjg( A' )*x + beta*y

SYNOPSIS

     SUBROUTINE CGBMV(TRANSA, M, N, NSUB, NSUPER, ALPHA, A, LDA, X, INCX,
           BETA, Y, INCY)

     CHARACTER * 1 TRANSA
     COMPLEX ALPHA, BETA
     COMPLEX A(LDA,*), X(*), Y(*)
     INTEGER M, N, NSUB, NSUPER, LDA, INCX, INCY

     SUBROUTINE CGBMV_64(TRANSA, M, N, NSUB, NSUPER, ALPHA, A, LDA, X,
           INCX, BETA, Y, INCY)

     CHARACTER * 1 TRANSA
     COMPLEX ALPHA, BETA
     COMPLEX A(LDA,*), X(*), Y(*)
     INTEGER*8 M, N, NSUB, NSUPER, LDA, INCX, INCY

  F95 INTERFACE
     SUBROUTINE GBMV([TRANSA], [M], [N], NSUB, NSUPER, ALPHA, A, [LDA], X,
            [INCX], BETA, Y, [INCY])

     CHARACTER(LEN=1) :: TRANSA
     COMPLEX :: ALPHA, BETA
     COMPLEX, DIMENSION(:) :: X, Y
     COMPLEX, DIMENSION(:,:) :: A
     INTEGER :: M, N, NSUB, NSUPER, LDA, INCX, INCY

     SUBROUTINE GBMV_64([TRANSA], [M], [N], NSUB, NSUPER, ALPHA, A, [LDA],
            X, [INCX], BETA, Y, [INCY])

     CHARACTER(LEN=1) :: TRANSA
     COMPLEX :: ALPHA, BETA
     COMPLEX, DIMENSION(:) :: X, Y
     COMPLEX, DIMENSION(:,:) :: A
     INTEGER(8) :: M, N, NSUB, NSUPER, LDA, INCX, INCY

  C INTERFACE
     #include <sunperf.h>

     void cgbmv(char transa, int m, int n, int nsub, int  nsuper,
               complex  *alpha,  complex *a, int lda, complex *x,
               int incx, complex *beta, complex *y, int incy);
     void cgbmv_64(char transa, long m, long n, long  nsub,  long
               nsuper, complex *alpha, complex *a, long lda, com-
               plex *x, long incx,  complex  *beta,  complex  *y,
               long incy);

PURPOSE

     cgbmv performs one of  the  matrix-vector  operations  y  :=
     alpha*A*x  +  beta*y, or y := alpha*A'*x + beta*y, or   y :=
     alpha*conjg( A' )*x  +  beta*y  where  alpha  and  beta  are
     scalars, x and y are vectors and A is an m by n band matrix,
     with nsub sub-diagonals and nsuper super-diagonals.

ARGUMENTS

     TRANSA (input)
               On entry, TRANSA specifies  the  operation  to  be
               performed as follows:
               TRANSA = 'N' or 'n'   y := alpha*A*x + beta*y.
               TRANSA = 'T' or 't'   y := alpha*A'*x + beta*y.
               TRANSA = 'C' or 'c'   y := alpha*conjg( A'  )*x  +
               beta*y.
               Unchanged on exit.

               TRANSA is defaulted to 'N' for F95 INTERFACE.

     M (input)
               On entry, M specifies the number of  rows  of  the
               matrix  A.  M must be at least zero.  Unchanged on
               exit.

     N (input)
               On entry, N specifies the number of columns of the
               matrix  A.  N must be at least zero.  Unchanged on
               exit.

     NSUB (input)
               On  entry,  NSUB  specifies  the  number  of  sub-
               diagonals  of  the  matrix A. NSUB must satisfy  0
               .le. NSUB.  Unchanged on exit.

     NSUPER (input)
               On entry, NSUPER specifies the  number  of  super-
               diagonals  of the matrix A. NSUPER must satisfy  0
               .le. NSUPER.  Unchanged on exit.
     ALPHA (input)
               On  entry,  ALPHA  specifies  the  scalar   alpha.
               Unchanged on exit.

     A (input)
               Before entry, the leading ( nsub + nsuper + 1 ) by
               n  part  of the array A must contain the matrix of
               coefficients, supplied column by column, with  the
               leading diagonal of the matrix in row ( nsuper + 1
               ) of the array, the first super-diagonal  starting
               at  position  2  in  row  nsuper,  the  first sub-
               diagonal starting at position 1 in row ( nsuper  +
               2  ),  and so on.  Elements in the array A that do
               not correspond to  elements  in  the  band  matrix
               (such  as  the top left nsuper by nsuper triangle)
               are not referenced.  The following program segment
               will transfer a band matrix from conventional full
               matrix storage to band storage:

                   DO 20, J = 1, N
                     K = NSUPER + 1 - J
                     DO 10, I = MAX( 1, J - NSUPER ), MIN( M, J +
               NSUB )
                       A( K + I, J ) = matrix( I, J )
               10    CONTINUE
               20 CONTINUE

               Unchanged on exit.

     LDA (input)
               On entry, LDA specifies the first dimension  of  A
               as declared in the calling (sub) program. LDA must
               be at least ( nsub + nsuper + 1 ).   Unchanged  on
               exit.

     X (input)
               ( 1 + ( n - 1 )*abs( INCX ) ) when TRANSA = 'N' or
               'n'  and  at  least  ( 1 + ( m - 1 )*abs( INCX ) )
               otherwise.  Before entry, the incremented array  X
               must contain the vector x.  Unchanged on exit.

     INCX (input)
               On entry, INCX specifies  the  increment  for  the
               elements  of  X. INCX must not be zero.  Unchanged
               on exit.

     BETA (input)
               On entry, BETA specifies  the  scalar  beta.  When
               BETA is supplied as zero then Y need not be set on
               input.  Unchanged on exit.

     Y (input/output)
               ( 1 + ( m - 1 )*abs( INCY ) ) when TRANSA = 'N' or
               'n'  and  at  least  ( 1 + ( n - 1 )*abs( INCY ) )
               otherwise.  Before entry, the incremented array  Y
               must contain the vector y. On exit, Y is overwrit-
               ten by the updated vector y.

     INCY (input)
               On entry, INCY specifies  the  increment  for  the
               elements  of  Y. INCY must not be zero.  Unchanged
               on exit.