Contents


NAME

     dsprfs - 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 DSPRFS(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(*)
     DOUBLE PRECISION AP(*), AF(*), B(LDB,*), X(LDX,*),  FERR(*),
     BERR(*), WORK(*)

     SUBROUTINE DSPRFS_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(*)
     DOUBLE PRECISION 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(8), DIMENSION(:) :: A, AF, FERR, BERR, WORK
     REAL(8), 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(8), DIMENSION(:) :: AP, AF, FERR, BERR, WORK
     REAL(8), DIMENSION(:,:) :: B, X

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

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

PURPOSE

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

     AP (input)
               Double precsion 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)
               Double precsion 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
               SSPTRF, 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 SSPTRF.

     B (input) Double precision 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 precision 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)
               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(3*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