Contents


NAME

     zsprfs - improve the computed solution to a system of linear
     equations  when the coefficient matrix is symmetric indefin-
     ite and packed, and provides error bounds and backward error
     estimates for the solution

SYNOPSIS

     SUBROUTINE ZSPRFS(UPLO, N, NRHS, A, AF, IPIVOT, B, LDB, X, LDX, FERR,
           BERR, WORK, WORK2, INFO)

     CHARACTER * 1 UPLO
     DOUBLE COMPLEX A(*), AF(*), B(LDB,*), X(LDX,*), WORK(*)
     INTEGER N, NRHS, LDB, LDX, INFO
     INTEGER IPIVOT(*)
     DOUBLE PRECISION FERR(*), BERR(*), WORK2(*)

     SUBROUTINE ZSPRFS_64(UPLO, N, NRHS, A, AF, IPIVOT, B, LDB, X, LDX,
           FERR, BERR, WORK, WORK2, INFO)

     CHARACTER * 1 UPLO
     DOUBLE COMPLEX A(*), AF(*), B(LDB,*), X(LDX,*), WORK(*)
     INTEGER*8 N, NRHS, LDB, LDX, INFO
     INTEGER*8 IPIVOT(*)
     DOUBLE PRECISION FERR(*), BERR(*), WORK2(*)

  F95 INTERFACE
     SUBROUTINE SPRFS(UPLO, N, [NRHS], A, AF, IPIVOT, B, [LDB], X, [LDX],
            FERR, BERR, [WORK], [WORK2], [INFO])

     CHARACTER(LEN=1) :: UPLO
     COMPLEX(8), DIMENSION(:) :: A, AF, WORK
     COMPLEX(8), DIMENSION(:,:) :: B, X
     INTEGER :: N, NRHS, LDB, LDX, INFO
     INTEGER, DIMENSION(:) :: IPIVOT
     REAL(8), DIMENSION(:) :: FERR, BERR, WORK2

     SUBROUTINE SPRFS_64(UPLO, N, [NRHS], A, AF, IPIVOT, B, [LDB], X, [LDX],
            FERR, BERR, [WORK], [WORK2], [INFO])

     CHARACTER(LEN=1) :: UPLO
     COMPLEX(8), DIMENSION(:) :: A, AF, WORK
     COMPLEX(8), DIMENSION(:,:) :: B, X
     INTEGER(8) :: N, NRHS, LDB, LDX, INFO
     INTEGER(8), DIMENSION(:) :: IPIVOT
     REAL(8), DIMENSION(:) :: FERR, BERR, WORK2
  C INTERFACE
     #include <sunperf.h>

     void zsprfs(char uplo, int n, int  nrhs,  doublecomplex  *a,
               doublecomplex  *af, int *ipivot, doublecomplex *b,
               int ldb, doublecomplex *x, int ldx, double  *ferr,
               double *berr, int *info);

     void zsprfs_64(char uplo, long n, long  nrhs,  doublecomplex
               *a, doublecomplex *af, long *ipivot, doublecomplex
               *b, long ldb, doublecomplex *x, long  ldx,  double
               *ferr, double *berr, long *info);

PURPOSE

     zsprfs improves the computed solution to a system of  linear
     equations  when the coefficient matrix is symmetric indefin-
     ite and packed, and provides error bounds and backward error
     estimates for the solution.

ARGUMENTS

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

     N (input) The order of the matrix A.  N >= 0.

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

     A (input) Double complex array,  dimension  (N*(N+1)/2)  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 A as follows:
               if UPLO = 'U',  A(i  +  (j-1)*j/2)  =  A(i,j)  for
               1<=i<=j;  if  UPLO = 'L', A(i + (j-1)*(2*n-j)/2) =
               A(i,j) for j<=i<=n.

     AF (input)
               Double complex array,  dimension  (N*(N+1)/2)  The
               factored  form  of  the matrix A.  AF contains 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
               CSPTRF, stored as a packed triangular matrix.
     IPIVOT (input)
               Integer array, dimension (N) Details of the inter-
               changes and the block structure of D as determined
               by CSPTRF.

     B (input) Double complex  array,  dimension  (LDB,NRHS)  The
               right hand side matrix B.

     LDB (input)
               The leading dimension of  the  array  B.   LDB  >=
               max(1,N).

     X (input/output)
               Double  complex  array,  dimension  (LDX,NRHS)  On
               entry,  the  solution  matrix  X,  as  computed by
               CSPTRS.  On exit, the improved solution matrix X.

     LDX (input)
               The leading dimension of  the  array  X.   LDX  >=
               max(1,N).

     FERR (output)
               Double  precision  array,  dimension  (NRHS)   The
               estimated  forward  error  bound for each solution
               vector X(j)  (the  j-th  column  of  the  solution
               matrix   X).    If  XTRUE  is  the  true  solution
               corresponding to X(j),  FERR(j)  is  an  estimated
               upper  bound for the magnitude of the largest ele-
               ment in (X(j) - XTRUE) divided by the magnitude of
               the  largest  element in X(j).  The estimate is as
               reliable as the estimate for RCOND, and is  almost
               always a slight overestimate of the true error.

     BERR (output)
               Double precision array, dimension (NRHS) The  com-
               ponentwise  relative  backward error of each solu-
               tion vector  X(j)  (i.e.,  the  smallest  relative
               change in any element of A or B that makes X(j) an
               exact solution).

     WORK (workspace)
               Double precision array, dimension(2*N)

     WORK2 (workspace)
               Integer array, dimension(N)
     INFO (output)
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille-
               gal value