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

NAME
  SSPSV	- compute the solution to a real system	of linear equations  A * X =
  B,

SYNOPSIS

  SUBROUTINE SSPSV( UPLO, N, NRHS, AP, IPIV, B,	LDB, INFO )

      CHARACTER	    UPLO

      INTEGER	    INFO, LDB, N, NRHS

      INTEGER	    IPIV( * )

      REAL	    AP(	* ), B(	LDB, * )

PURPOSE
  SSPSV	computes the solution to a real	system of linear equations
     A * X = B,	where A	is an N-by-N symmetric matrix stored in	packed format
  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,	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.

  AP	  (input/output) REAL array, dimension (N*(N+1)/2)
	  On entry, the	upper or lower triangle	of the symmetric matrix	A,
	  packed columnwise in a linear	array.	The j-th column	of A is
	  stored in the	array AP as follows: if	UPLO = 'U', AP(i + (j-1)*j/2)
	  = A(i,j) for 1<=i<=j;	if UPLO	= 'L', AP(i + (j-1)*(2n-j)/2) =
	  A(i,j) for j<=i<=n.  See below for further details.

	  On exit, 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 SSPTRF, stored as a packed triangular
	  matrix in the	same storage format as A.

  IPIV	  (output) INTEGER array, dimension (N)
	  Details of the interchanges and the block structure of D, as deter-
	  mined	by SSPTRF.  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) REAL 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 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.

FURTHER	DETAILS
  The packed storage scheme is illustrated by the following example when N =
  4, UPLO = 'U':

  Two-dimensional storage of the symmetric matrix A:

     a11 a12 a13 a14
	 a22 a23 a24
	     a33 a34	 (aij =	aji)
		 a44

  Packed storage of the	upper triangle of A:

  AP = [ a11, a12, a22,	a13, a23, a33, a14, a24, a34, a44 ]


Back to the listing of simple driver routines