146 SUBROUTINE dgtcon( NORM, N, DL, D, DU, DU2, IPIV, ANORM, RCOND,
147 $ WORK, IWORK, INFO )
157 DOUBLE PRECISION ANORM, RCOND
160 INTEGER IPIV( * ), IWORK( * )
161 DOUBLE PRECISION D( * ), DL( * ), DU( * ), DU2( * ), WORK( * )
167 DOUBLE PRECISION ONE, ZERO
168 parameter( one = 1.0d+0, zero = 0.0d+0 )
172 INTEGER I, KASE, KASE1
173 DOUBLE PRECISION AINVNM
190 onenrm = norm.EQ.
'1' .OR. lsame( norm,
'O' )
191 IF( .NOT.onenrm .AND. .NOT.lsame( norm,
'I' ) )
THEN
193 ELSE IF( n.LT.0 )
THEN
195 ELSE IF( anorm.LT.zero )
THEN
199 CALL xerbla(
'DGTCON', -info )
209 ELSE IF( anorm.EQ.zero )
THEN
228 CALL dlacn2( n, work( n+1 ), work, iwork, ainvnm, kase, isave )
230 IF( kase.EQ.kase1 )
THEN
234 CALL dgttrs(
'No transpose', n, 1, dl, d, du, du2, ipiv,
240 CALL dgttrs(
'Transpose', n, 1, dl, d, du, du2, ipiv, work,
249 $ rcond = ( one / ainvnm ) / anorm