157 SUBROUTINE slagtf( N, A, LAMBDA, B, C, TOL, D, IN, INFO )
170 REAL A( * ), B( * ), C( * ), D( * )
177 parameter ( zero = 0.0e+0 )
181 REAL EPS, MULT, PIV1, PIV2, SCALE1, SCALE2, TEMP, TL
198 CALL xerbla(
'SLAGTF', -info )
205 a( 1 ) = a( 1 ) - lambda
213 eps = slamch(
'Epsilon' )
216 scale1 = abs( a( 1 ) ) + abs( b( 1 ) )
218 a( k+1 ) = a( k+1 ) - lambda
219 scale2 = abs( c( k ) ) + abs( a( k+1 ) )
221 $ scale2 = scale2 + abs( b( k+1 ) )
222 IF( a( k ).EQ.zero )
THEN
225 piv1 = abs( a( k ) ) / scale1
227 IF( c( k ).EQ.zero )
THEN
234 piv2 = abs( c( k ) ) / scale2
235 IF( piv2.LE.piv1 )
THEN
238 c( k ) = c( k ) / a( k )
239 a( k+1 ) = a( k+1 ) - c( k )*b( k )
244 mult = a( k ) / c( k )
247 a( k+1 ) = b( k ) - mult*temp
248 IF( k.LT.( n-1 ) )
THEN
250 b( k+1 ) = -mult*d( k )
256 IF( ( max( piv1, piv2 ).LE.tl ) .AND. ( in( n ).EQ.0 ) )
259 IF( ( abs( a( n ) ).LE.scale1*tl ) .AND. ( in( n ).EQ.0 ) )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine slagtf(N, A, LAMBDA, B, C, TOL, D, IN, INFO)
SLAGTF computes an LU factorization of a matrix T-λI, where T is a general tridiagonal matrix...