115 SUBROUTINE dptcon( N, D, E, ANORM, RCOND, WORK, INFO )
123 DOUBLE PRECISION ANORM, RCOND
126 DOUBLE PRECISION D( * ), E( * ), WORK( * )
132 DOUBLE PRECISION ONE, ZERO
133 parameter( one = 1.0d+0, zero = 0.0d+0 )
137 DOUBLE PRECISION AINVNM
156 ELSE IF( anorm.LT.zero )
THEN
160 CALL xerbla(
'DPTCON', -info )
170 ELSE IF( anorm.EQ.zero )
THEN
192 work( i ) = one + work( i-1 )*abs( e( i-1 ) )
197 work( n ) = work( n ) / d( n )
198 DO 30 i = n - 1, 1, -1
199 work( i ) = work( i ) / d( i ) + work( i+1 )*abs( e( i ) )
204 ix = idamax( n, work, 1 )
205 ainvnm = abs( work( ix ) )
210 $ rcond = ( one / ainvnm ) / anorm
subroutine dptcon(n, d, e, anorm, rcond, work, info)
DPTCON