Contents


NAME

     dtptri - compute the inverse of a real upper or  lower  tri-
     angular matrix A stored in packed format

SYNOPSIS

     SUBROUTINE DTPTRI(UPLO, DIAG, N, A, INFO)

     CHARACTER * 1 UPLO, DIAG
     INTEGER N, INFO
     DOUBLE PRECISION A(*)

     SUBROUTINE DTPTRI_64(UPLO, DIAG, N, A, INFO)

     CHARACTER * 1 UPLO, DIAG
     INTEGER*8 N, INFO
     DOUBLE PRECISION A(*)

  F95 INTERFACE
     SUBROUTINE TPTRI(UPLO, DIAG, [N], A, [INFO])

     CHARACTER(LEN=1) :: UPLO, DIAG
     INTEGER :: N, INFO
     REAL(8), DIMENSION(:) :: A

     SUBROUTINE TPTRI_64(UPLO, DIAG, [N], A, [INFO])

     CHARACTER(LEN=1) :: UPLO, DIAG
     INTEGER(8) :: N, INFO
     REAL(8), DIMENSION(:) :: A

  C INTERFACE
     #include <sunperf.h>

     void dtptri(char uplo, char diag,  int  n,  double  *a,  int
               *info);

     void dtptri_64(char uplo, char diag, long n, double *a, long
               *info);

PURPOSE

     dtptri computes the inverse of a real upper  or  lower  tri-
     angular matrix A stored in packed format.

ARGUMENTS

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

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

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

     A (input/output) DOUBLE PRECISION array, dimension (N*(N+1)/2)
               On  entry, the upper or lower triangular matrix A,
               stored 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.   See  below   for   further
               details.  On exit, the (triangular) inverse of the
               original matrix, in the same packed  storage  for-
               mat.

     INFO (output)
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille-
               gal value
               > 0:  if INFO = i, A(i,i) is  exactly  zero.   The
               triangular  matrix is singular and its inverse can
               not be computed.

FURTHER DETAILS

     A triangular matrix A can be transferred to  packed  storage
     using one of the following program segments:

     UPLO = 'U':                      UPLO = 'L':

           JC = 1                           JC = 1
           DO 2 J = 1, N                    DO 2 J = 1, N
              DO 1 I = 1, J                    DO 1 I = J, N
                 A(JC+I-1)  =  A(I,J)               A(JC+I-J)   =
     A(I,J)
         1    CONTINUE                    1    CONTINUE
              JC = JC + J                      JC = JC + N - J  +
     1
         2 CONTINUE                       2 CONTINUE