126      SUBROUTINE ztpcon( NORM, UPLO, DIAG, N, AP, RCOND, WORK, RWORK,
 
  134      CHARACTER          DIAG, NORM, UPLO
 
  136      DOUBLE PRECISION   RCOND
 
  139      DOUBLE PRECISION   RWORK( * )
 
  140      COMPLEX*16         AP( * ), WORK( * )
 
  146      DOUBLE PRECISION   ONE, ZERO
 
  147      parameter( one = 1.0d+0, zero = 0.0d+0 )
 
  150      LOGICAL            NOUNIT, ONENRM, UPPER
 
  152      INTEGER            IX, KASE, KASE1
 
  153      DOUBLE PRECISION   AINVNM, ANORM, SCALE, SMLNUM, XNORM
 
  162      DOUBLE PRECISION   DLAMCH, ZLANTP
 
  163      EXTERNAL           lsame, izamax, dlamch, zlantp
 
  169      INTRINSIC          abs, dble, dimag, max
 
  172      DOUBLE PRECISION   CABS1
 
  175      cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
 
  182      upper = lsame( uplo, 
'U' )
 
  183      onenrm = norm.EQ.
'1' .OR. lsame( norm, 
'O' )
 
  184      nounit = lsame( diag, 
'N' )
 
  186      IF( .NOT.onenrm .AND. .NOT.lsame( norm, 
'I' ) ) 
THEN 
  188      ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo, 
'L' ) ) 
THEN 
  190      ELSE IF( .NOT.nounit .AND. .NOT.lsame( diag, 
'U' ) ) 
THEN 
  192      ELSE IF( n.LT.0 ) 
THEN 
  196         CALL xerbla( 
'ZTPCON', -info )
 
  208      smlnum = dlamch( 
'Safe minimum' )*dble( max( 1, n ) )
 
  212      anorm = zlantp( norm, uplo, diag, n, ap, rwork )
 
  216      IF( anorm.GT.zero ) 
THEN 
  229         CALL zlacn2( n, work( n+1 ), work, ainvnm, kase, isave )
 
  231            IF( kase.EQ.kase1 ) 
THEN 
  235               CALL zlatps( uplo, 
'No transpose', diag, normin, n,
 
  237     $                      work, scale, rwork, info )
 
  242               CALL zlatps( uplo, 
'Conjugate transpose', diag,
 
  244     $                      n, ap, work, scale, rwork, info )
 
  250            IF( scale.NE.one ) 
THEN 
  251               ix = izamax( n, work, 1 )
 
  252               xnorm = cabs1( work( ix ) )
 
  253               IF( scale.LT.xnorm*smlnum .OR. scale.EQ.zero )
 
  255               CALL zdrscl( n, scale, work, 1 )
 
  263     $      rcond = ( one / anorm ) / ainvnm
 
 
subroutine zlacn2(n, v, x, est, kase, isave)
ZLACN2 estimates the 1-norm of a square matrix, using reverse communication for evaluating matrix-vec...
subroutine zlatps(uplo, trans, diag, normin, n, ap, x, scale, cnorm, info)
ZLATPS solves a triangular system of equations with the matrix held in packed storage.
subroutine zdrscl(n, sa, sx, incx)
ZDRSCL multiplies a vector by the reciprocal of a real scalar.
subroutine ztpcon(norm, uplo, diag, n, ap, rcond, work, rwork, info)
ZTPCON