DTPRFS(3)                  MathKeisan LAPACK routine                 DTPRFS(3)



NAME
       DTPRFS  - error bounds and backward error estimates for the solution to
       a system of linear  equations  with  a  triangular  packed  coefficient
       matrix

SYNOPSIS
       SUBROUTINE DTPRFS( UPLO,  TRANS,  DIAG,  N,  NRHS,  AP, B, LDB, X, LDX,
                          FERR, BERR, WORK, IWORK, INFO )

           CHARACTER      DIAG, TRANS, UPLO

           INTEGER        INFO, LDB, LDX, N, NRHS

           INTEGER        IWORK( * )

           DOUBLE         PRECISION AP( * ), B( LDB, * ), BERR( * ),  FERR(  *
                          ), WORK( * ), X( LDX, * )

PURPOSE
       DTPRFS provides error bounds and backward error estimates for the solu-
       tion to a system of linear equations with a triangular  packed  coeffi-
       cient matrix.

       The  solution  matrix  X must be computed by DTPTRS or some other means
       before entering this routine.  DTPRFS does not do iterative  refinement
       because doing so cannot improve the backward error.


ARGUMENTS
       UPLO    (input) CHARACTER*1
               = 'U':  A is upper triangular;
               = 'L':  A is lower triangular.

       TRANS   (input) CHARACTER*1
               Specifies the form of the system of equations:
               = 'N':  A * X = B  (No transpose)
               = 'T':  A**T * X = B  (Transpose)
               = 'C':  A**H * X = B  (Conjugate transpose = Transpose)

       DIAG    (input) CHARACTER*1
               = 'N':  A is non-unit triangular;
               = 'U':  A is unit triangular.

       N       (input) INTEGER
               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 matrices B and X.  NRHS >= 0.

       AP      (input) DOUBLE PRECISION array, dimension (N*(N+1)/2)
               The upper or lower triangular 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)*(2*n-j)/2) = A(i,j) for
               j<=i<=n.  If DIAG = 'U', the diagonal elements  of  A  are  not
               referenced and are assumed to be 1.

       B       (input) DOUBLE PRECISION array, dimension (LDB,NRHS)
               The right hand side matrix B.

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

       X       (input) DOUBLE PRECISION array, dimension (LDX,NRHS)
               The solution matrix X.

       LDX     (input) INTEGER
               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 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) DOUBLE PRECISION array, dimension (NRHS)
               The componentwise relative backward error of each solution vec-
               tor 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)

       IWORK   (workspace) INTEGER array, dimension (N)

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



 LAPACK routine (version 3.1)    November 2006                       DTPRFS(3)