ZSYSV(l)	     LAPACK driver routine (version 1.1)	     ZSYSV(l)

NAME
  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( LWORK )

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) triangu-
  lar matrices,	and D is symmetric and block diagonal with 1-by-1 and 2-by-2
  diagonal blocks.  The	factored form of A is then used	to solve the system
  of equations 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 contains 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 triangular part of the matrix A,	and
	  the strictly upper triangular	part of	A is not referenced.

	  On exit, if INFO = 0,	the block diagonal matrix D 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 structure of D, as deter-
	  mined	by ZSYTRF.  If IPIV(k) > 0, then rows and columns k and
	  IPIV(k) were interchanged, 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	interchanged 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 interchanged 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) 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	performance LWORK >=
	  N*NB,	where NB is the	optimal	blocksize for ZSYTRF.

  INFO	  (output) INTEGER
	  = 0: successful exit
	  < 0: if INFO = -i, the i-th argument had an illegal value
	  > 0: if INFO = i, D(i,i) is exactly zero.  The factorization has
	  been completed, but the block	diagonal matrix	D is exactly singu-
	  lar, so the solution could not be computed.


Back to the listing of simple driver routines