Contents


NAME

     ctpcon - estimate the reciprocal of the condition number  of
     a  packed  triangular  matrix A, in either the 1-norm or the
     infinity-norm

SYNOPSIS

     SUBROUTINE CTPCON(NORM, UPLO, DIAG, N, A, RCOND, WORK, WORK2, INFO)

     CHARACTER * 1 NORM, UPLO, DIAG
     COMPLEX A(*), WORK(*)
     INTEGER N, INFO
     REAL RCOND
     REAL WORK2(*)

     SUBROUTINE CTPCON_64(NORM, UPLO, DIAG, N, A, RCOND, WORK, WORK2,
           INFO)

     CHARACTER * 1 NORM, UPLO, DIAG
     COMPLEX A(*), WORK(*)
     INTEGER*8 N, INFO
     REAL RCOND
     REAL WORK2(*)

  F95 INTERFACE
     SUBROUTINE TPCON(NORM, UPLO, DIAG, [N], A, RCOND, [WORK], [WORK2],
            [INFO])

     CHARACTER(LEN=1) :: NORM, UPLO, DIAG
     COMPLEX, DIMENSION(:) :: A, WORK
     INTEGER :: N, INFO
     REAL :: RCOND
     REAL, DIMENSION(:) :: WORK2

     SUBROUTINE TPCON_64(NORM, UPLO, DIAG, [N], A, RCOND, [WORK], [WORK2],
            [INFO])

     CHARACTER(LEN=1) :: NORM, UPLO, DIAG
     COMPLEX, DIMENSION(:) :: A, WORK
     INTEGER(8) :: N, INFO
     REAL :: RCOND
     REAL, DIMENSION(:) :: WORK2

  C INTERFACE
     #include <sunperf.h>

     void ctpcon(char norm, char uplo, char diag, int n,  complex
               *a, float *rcond, int *info);
     void ctpcon_64(char norm, char uplo, char diag, long n, com-
               plex *a, float *rcond, long *info);

PURPOSE

     ctpcon estimates the reciprocal of the condition number of a
     packed  triangular  matrix  A,  in  either the 1-norm or the
     infinity-norm.

     The norm of A is computed and an estimate  is  obtained  for
     norm(inv(A)), then the reciprocal of the condition number is
     computed as
        RCOND = 1 / ( norm(A) * norm(inv(A)) ).

ARGUMENTS

     NORM (input)
               Specifies whether the 1-norm condition  number  or
               the infinity-norm condition number is required:
               = '1' or 'O':  1-norm;
               = 'I':         Infinity-norm.

     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) COMPLEX 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 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)*(2n-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.

     RCOND (output)
               The reciprocal of  the  condition  number  of  the
               matrix   A,  computed  as  RCOND  =  1/(norm(A)  *
               norm(inv(A))).
     WORK (workspace)
               COMPLEX array, dimension(2*N)

     WORK2 (workspace)
               REAL array, dimension(N)

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