ZGBSV - compute the solution to a complex system of linear
       equations A * X = B, where A is a band matrix of  order  N
       with  KL  subdiagonals  and KU superdiagonals, and X and B
       are N-by-NRHS matrices


SYNOPSIS

       SUBROUTINE ZGBSV( N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB,
                         INFO )

           INTEGER       INFO, KL, KU, LDAB, LDB, N, NRHS

           INTEGER       IPIV( * )

           COMPLEX*16    AB( LDAB, * ), B( LDB, * )


PURPOSE

       ZGBSV  computes the solution to a complex system of linear
       equations A * X = B, where A is a band matrix of  order  N
       with  KL  subdiagonals  and KU superdiagonals, and X and B
       are N-by-NRHS matrices.  The LU decomposition with partial
       pivoting and row interchanges is used to factor A as A = L
       * U, where L is a product of permutation  and  unit  lower
       triangular  matrices  with KL subdiagonals, and U is upper
       triangular with KL+KU superdiagonals.  The  factored  form
       of A is then used to solve the system of equations A * X =
       B.


ARGUMENTS

       N       (input) INTEGER
               The number of linear equations, i.e., the order of
               the matrix A.  N >= 0.

       KL      (input) INTEGER
               The  number  of subdiagonals within the band of A.
               KL >= 0.

       KU      (input) INTEGER
               The number of superdiagonals within the band of A.
               KU >= 0.

       NRHS    (input) INTEGER
               The  number  of right hand sides, i.e., the number
               of columns of the matrix B.  NRHS >= 0.

       AB      (input/output) COMPLEX*16 array, dimension
               (LDAB,N)
               On  entry,  the  matrix A in band storage, in rows
               KL+1 to 2*KL+KU+1; rows 1 to KL of the array  need
               not be set.  The j-th column of A is stored in the
               j-th  column  of  the   array   AB   as   follows:
               AB(KL+KU+1+i-j,j)    =    A(i,j)    for   max(1,j-
               KU)<=i<=min(N,j+KL)  On  exit,  details   of   the

               band matrix with KL+KU superdiagonals in rows 1 to
               KL+KU+1,  and the multipliers used during the fac­
               torization  are  stored   in   rows   KL+KU+2   to
               2*KL+KU+1.  See below for further details.

       LDAB    (input) INTEGER
               The  leading  dimension  of the array AB.  LDAB >=
               2*KL+KU+1.

       IPIV    (output) INTEGER array, dimension (N)
               The pivot  indices  that  define  the  permutation
               matrix  P;  row  i  of the matrix was interchanged
               with row IPIV(i).

       B       (input/output) COMPLEX*16 array, dimension
               (LDB,NRHS)
               On  entry, the N-by-NRHS right hand side matrix B.
               On exit, if  INFO  =  0,  the  N-by-NRHS  solution
               matrix X.

       LDB     (input) INTEGER
               The  leading  dimension  of  the  array B.  LDB >=
               max(1,N).

       INFO    (output) INTEGER
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille­
               gal value
               >  0:   if  INFO = i, U(i,i) is exactly zero.  The
               factorization has been completed, but the factor U
               is exactly singular, and the solution has not been
               computed.


FURTHER DETAILS

       The band storage scheme is illustrated  by  the  following
       example, when M = N = 6, KL = 2, KU = 1:

       On entry:                       On exit:

           *     *     *     +     +    +       *    *    *   u14
       u25  u36
           *    *    +    +    +    +        *     *    u13   u24
       u35  u46
           *    a12   a23   a34   a45  a56      *   u12  u23  u34
       u45  u56
          a11  a22  a33  a44  a55  a66      u11   u22   u33   u44
       u55  u66
          a21   a32   a43   a54   a65   *      m21  m32  m43  m54
       m65   *
          a31  a42  a53  a64   *    *      m31  m42  m53  m64   *
       *

       Array  elements  marked  *  are  not  used by the routine;

       required  by the routine to store elements of U because of
       fill-in resulting from the row interchanges.


Man(1) output converted with man2html