====================================================================
zgemv examples
====================================================================

====================================================================
Man Page Details
====================================================================

 NAME
      ZGEMV - 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 ZGEMV ( TRANS, M, N, ALPHA, A, LDA, X, INCX,
                       BETA, Y, INCY )

          COMPLEX*16   ALPHA, BETA

          INTEGER      INCX, INCY, LDA, M, N

          CHARACTER*1  TRANS

          COMPLEX*16   A( LDA, * ), X( * ), Y( * )

 PURPOSE
      ZGEMV  performs one of the matrix-vector operations

      where alpha and beta are scalars, x and y are vectors and A
      is an m by n matrix.

 PARAMETERS
      TRANS  - CHARACTER*1.
             On entry, TRANS specifies the operation to be per-
             formed as follows:

             TRANS = 'N' or 'n'   y := alpha*A*x + beta*y.

             TRANS = 'T' or 't'   y := alpha*A'*x + beta*y.

             TRANS = 'C' or 'c'   y := alpha*conjg( A' )*x +
             beta*y.

             Unchanged on exit.

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

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

      ALPHA  - COMPLEX*16      .
             On entry, ALPHA specifies the scalar alpha.
             Unchanged on exit.

      A      - COMPLEX*16       array of DIMENSION ( LDA, n ).
             Before entry, the leading m by n part of the array A
             must contain the matrix of coefficients.  Unchanged
             on exit.

      LDA    - INTEGER.
             On entry, LDA specifies the first dimension of A as
             declared in the calling (sub) program. LDA must be at
             least max( 1, m ).  Unchanged on exit.

      X      - COMPLEX*16       array of DIMENSION at least
             ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = '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   - INTEGER.
             On entry, INCX specifies the increment for the ele-
             ments of X. INCX must not be zero.  Unchanged on
             exit.

      BETA   - COMPLEX*16      .
             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      - COMPLEX*16       array of DIMENSION at least
             ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
             and at least ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
             Before entry with BETA non-zero, the incremented
             array Y must contain the vector y. On exit, Y is
             overwritten by the updated vector y.

      INCY   - INTEGER.
             On entry, INCY specifies the increment for the ele-
             ments of Y. INCY must not be zero.  Unchanged on
             exit.

