DGBSV  -  compute  the solution to a real 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 DGBSV( N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB,
                         INFO )

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

           INTEGER       IPIV( * )

           DOUBLE        PRECISION AB( LDAB, * ), B( LDB, * )


PURPOSE

       DGBSV  computes  the  solution  to a real 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) DOUBLE PRECISION 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)   DOUBLE   PRECISION   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