ZSYSV - compute the solution to a complex system of linear
       equations A * X = B,


SYNOPSIS

       SUBROUTINE ZSYSV( UPLO, N, NRHS, A,  LDA,  IPIV,  B,  LDB,
                         WORK, LWORK, INFO )

           CHARACTER     UPLO

           INTEGER       INFO, LDA, LDB, LWORK, N, NRHS

           INTEGER       IPIV( * )

           COMPLEX*16    A( LDA, * ), B( LDB, * ), WORK( * )


PURPOSE

       ZSYSV  computes the solution to a complex system of linear
       equations A * X = B, where A is an N-by-N symmetric matrix
       and X and B are N-by-NRHS matrices.

       The diagonal pivoting method is used to factor A as
          A = U * D * U**T,  if UPLO = 'U', or
          A = L * D * L**T,  if UPLO = 'L',
       where  U (or L) is a product of permutation and unit upper
       (lower) triangular matrices, and D is symmetric and  block
       diagonal with 1-by-1 and 2-by-2 diagonal blocks.  The fac­
       tored form of A is then used to solve the system of  equa­
       tions A * X = B.


ARGUMENTS

       UPLO    (input) CHARACTER*1
               = 'U':  Upper triangle of A is stored;
               = 'L':  Lower triangle of A is stored.

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

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

       A       (input/output) COMPLEX*16 array, dimension (LDA,N)
               On entry, the symmetric matrix A.  If UPLO =  'U',
               the leading N-by-N upper triangular part of A con­
               tains the upper triangular part of the  matrix  A,
               and the strictly lower triangular part of A is not
               referenced.  If UPLO =  'L',  the  leading  N-by-N
               lower triangular part of A contains the lower tri­
               angular part of the matrix  A,  and  the  strictly
               upper triangular part of A is not referenced.

               and the multipliers used to obtain the factor U or
               L  from  the  factorization  A  =  U*D*U**T or A =
               L*D*L**T as computed by ZSYTRF.

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

       IPIV    (output) INTEGER array, dimension (N)
               Details  of  the interchanges and the block struc­
               ture of D, as determined by ZSYTRF.  If IPIV(k)  >
               0, then rows and columns k and IPIV(k) were inter­
               changed, and D(k,k) is a  1-by-1  diagonal  block.
               If  UPLO  =  'U' and IPIV(k) = IPIV(k-1) < 0, then
               rows and columns  k-1  and  -IPIV(k)  were  inter­
               changed  and  D(k-1:k,k-1:k)  is a 2-by-2 diagonal
               block.  If UPLO = 'L' and IPIV(k) = IPIV(k+1) < 0,
               then rows and columns k+1 and -IPIV(k) were inter­
               changed and D(k:k+1,k:k+1) is  a  2-by-2  diagonal
               block.

       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).

       WORK    (workspace/output) COMPLEX*16 array, dimension
               (LWORK)
               On exit, if INFO = 0, WORK(1) returns the  optimal
               LWORK.

       LWORK   (input) INTEGER
               The length of WORK.  LWORK >= 1, and for best per­
               formance LWORK >= N*NB, where NB  is  the  optimal
               blocksize for ZSYTRF.

               If  LWORK = -1, then a workspace query is assumed;
               the routine only calculates the  optimal  size  of
               the  WORK  array,  returns this value as the first
               entry of the WORK  array,  and  no  error  message
               related to LWORK is issued by XERBLA.

       INFO    (output) INTEGER
               = 0: successful exit
               <  0: if INFO = -i, the i-th argument had an ille­
               gal value
               > 0: if INFO = i, D(i,i)  is  exactly  zero.   The
               factorization  has  been  completed, but the block

               solution could not be computed.


Man(1) output converted with man2html