151      DOUBLE PRECISION   ANORM, RCOND
 
  154      INTEGER            IPIV( * ), IWORK( * )
 
  155      DOUBLE PRECISION   A( LDA, * ), WORK( * )
 
  161      DOUBLE PRECISION   ONE, ZERO
 
  162      PARAMETER          ( ONE = 1.0d+0, zero = 0.0d+0 )
 
  167      DOUBLE PRECISION   AINVNM
 
  187      upper = lsame( uplo, 
'U' )
 
  188      IF( .NOT.upper .AND. .NOT.lsame( uplo, 
'L' ) ) 
THEN 
  190      ELSE IF( n.LT.0 ) 
THEN 
  192      ELSE IF( lda.LT.max( 1, n ) ) 
THEN 
  194      ELSE IF( anorm.LT.zero ) 
THEN 
  198         CALL xerbla( 
'DSYCON_ROOK', -info )
 
  208      ELSE IF( anorm.LE.zero ) 
THEN 
  219            IF( ipiv( i ).GT.0 .AND. a( i, i ).EQ.zero )
 
  227            IF( ipiv( i ).GT.0 .AND. a( i, i ).EQ.zero )
 
  236      CALL dlacn2( n, work( n+1 ), work, iwork, ainvnm, kase, isave )
 
  241         CALL dsytrs_rook( uplo, n, 1, a, lda, ipiv, work, n, info )
 
  248     $   rcond = ( one / ainvnm ) / anorm
 
 
subroutine dsycon_rook(uplo, n, a, lda, ipiv, anorm, rcond, work, iwork, info)
DSYCON_ROOK
 
subroutine dsytrs_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
DSYTRS_ROOK
 
subroutine dlacn2(n, v, x, isgn, est, kase, isave)
DLACN2 estimates the 1-norm of a square matrix, using reverse communication for evaluating matrix-vec...