Contents


NAME

     ssprfs - 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 SSPRFS(UPLO, N, NRHS, AP, AF, IPIVOT, B, LDB, X, LDX, FERR,
           BERR, WORK, WORK2, INFO)

     CHARACTER * 1 UPLO
     INTEGER N, NRHS, LDB, LDX, INFO
     INTEGER IPIVOT(*), WORK2(*)
     REAL AP(*), AF(*),  B(LDB,*),  X(LDX,*),  FERR(*),  BERR(*),
     WORK(*)

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

     CHARACTER * 1 UPLO
     INTEGER*8 N, NRHS, LDB, LDX, INFO
     INTEGER*8 IPIVOT(*), WORK2(*)
     REAL AP(*), AF(*),  B(LDB,*),  X(LDX,*),  FERR(*),  BERR(*),
     WORK(*)

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

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

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

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

  C INTERFACE
     #include <sunperf.h>
     void ssprfs(char uplo, int n, int  nrhs,  float  *ap,  float
               *af, int *ipivot, float *b, int ldb, float *x, int
               ldx, float *ferr, float *berr, int *info);

     void ssprfs_64(char uplo, long  n,  long  nrhs,  float  *ap,
               float *af, long *ipivot, float *b, long ldb, float
               *x, long ldx,  float  *ferr,  float  *berr,  float
               *work, long *iwork, long *info);

PURPOSE

     ssprfs 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) Real 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', AP(i + (j-1)*j/2) = A(i,j)  for  1<=i<=j;  if
               UPLO  =  'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for
               j<=i<=n.

     AF (input)
               Real array,  dimension  (N*(N+1)/2)  The  factored
               form of the matrix A.  AF contains the block diag-
               onal 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.

     IPIVOT (input)
               Integer  array,  dimension  (N)  Details  of   the
               interchanges  and  the  block  structure  of  D as
               determined by SSPTRF.

     B (input) Real 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)
               Real array, dimension  (LDX,NRHS)  On  entry,  the
               solution  matrix  X,  as  computed  by SSPTRS.  On
               exit, the improved solution matrix X.

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

     FERR (output)
               Real 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  element 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)
               Real array,  dimension  (NRHS)  The  componentwise
               relative  backward  error  of each solution vector
               X(j) (i.e., the smallest relative  change  in  any
               element  of  A or B that makes X(j) an exact solu-
               tion).

     WORK (workspace)
               Real array, dimension(3*N)

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