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