Contents


NAME

     sptrfs - improve the computed solution to a system of linear
     equations  when the coefficient matrix is symmetric positive
     definite and tridiagonal,  and  provides  error  bounds  and
     backward error estimates for the solution

SYNOPSIS

     SUBROUTINE SPTRFS(N, NRHS, D, E, DF, EF, B, LDB, X, LDX,
           FERR, BERR, WORK, INFO)

     INTEGER N, NRHS, LDB, LDX, INFO
     REAL D(*), E(*), DF(*), EF(*), B(LDB,*), X(LDX,*),  FERR(*),
     BERR(*), WORK(*)

     SUBROUTINE SPTRFS_64(N, NRHS, D, E, DF, EF, B, LDB, X,
           LDX, FERR, BERR, WORK, INFO)

     INTEGER*8 N, NRHS, LDB, LDX, INFO
     REAL D(*), E(*), DF(*), EF(*), B(LDB,*), X(LDX,*),  FERR(*),
     BERR(*), WORK(*)

  F95 INTERFACE
     SUBROUTINE PTRFS([N], [NRHS], D, E, DF, EF, B, [LDB], X,
            [LDX], FERR, BERR, [WORK], [INFO])

     INTEGER :: N, NRHS, LDB, LDX, INFO
     REAL, DIMENSION(:) :: D, E, DF, EF, FERR, BERR, WORK
     REAL, DIMENSION(:,:) :: B, X

     SUBROUTINE PTRFS_64([N], [NRHS], D, E, DF, EF, B, [LDB],
            X, [LDX], FERR, BERR, [WORK], [INFO])

     INTEGER(8) :: N, NRHS, LDB, LDX, INFO
     REAL, DIMENSION(:) :: D, E, DF, EF, FERR, BERR, WORK
     REAL, DIMENSION(:,:) :: B, X

  C INTERFACE
     #include <sunperf.h>

     void sptrfs(int n, int nrhs, float *d, float *e, float  *df,
               float  *ef,  float *b, int ldb, float *x, int ldx,
               float *ferr, float *berr, int *info);

     void sptrfs_64(long n, long nrhs, float *d, float *e,  float
               *df, float *ef, float *b, long ldb, float *x, long
               ldx, float *ferr, float *berr, long *info);

PURPOSE

     sptrfs improves the computed solution to a system of  linear
     equations  when the coefficient matrix is symmetric positive
     definite and tridiagonal,  and  provides  error  bounds  and
     backward error estimates for the solution.

ARGUMENTS

     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 matrix B.  NRHS >= 0.

     D (input) The n diagonal elements of the tridiagonal  matrix
               A.

     E (input) The (n-1) subdiagonal elements of the  tridiagonal
               matrix A.

     DF (input)
               The n diagonal elements of the diagonal  matrix  D
               from the factorization computed by SPTTRF.

     EF (input)
               The (n-1) subdiagonal elements of the unit bidiag-
               onal  factor  L from the factorization computed by
               SPTTRF.

     B (input) The right hand side matrix B.

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

     X (input/output)
               On entry, the solution matrix X,  as  computed  by
               SPTTRS.  On exit, the improved solution matrix X.

     LDX (input)
               The leading dimension of  the  array  X.   LDX  >=
               max(1,N).
     FERR (output)
               The 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).

     BERR (output)
               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 solution).

     WORK (workspace)
               dimension(2*N)

     INFO (output)
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille-
               gal value