CGBSV - 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 CGBSV( N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB,
                         INFO )

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

           INTEGER       IPIV( * )

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


PURPOSE

       CGBSV  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 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 fac­
               torization: U is stored  as  an  upper  triangular

               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 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;  ele­
       ments  marked + need not be set on entry, but are required
       by the routine to store elements of U because  of  fill-in



Man(1) output converted with man2html