162 SUBROUTINE slagts( JOB, N, A, B, C, D, IN, Y, TOL, INFO )
175 REAL a( * ), b( * ), c( * ), d( * ), y( * )
182 parameter( one = 1.0e+0, zero = 0.0e+0 )
186 REAL absak, ak, bignum, eps, pert, sfmin, temp
189 INTRINSIC abs, max, sign
201 IF( ( abs( job ).GT.2 ) .OR. ( job.EQ.0 ) )
THEN
203 ELSE IF( n.LT.0 )
THEN
207 CALL
xerbla(
'SLAGTS', -info )
215 sfmin =
slamch(
'Safe minimum' )
219 IF( tol.LE.zero )
THEN
222 $ tol = max( tol, abs( a( 2 ) ), abs( b( 1 ) ) )
224 tol = max( tol, abs( a( k ) ), abs( b( k-1 ) ),
233 IF( abs( job ).EQ.1 )
THEN
235 IF( in( k-1 ).EQ.0 )
THEN
236 y( k ) = y( k ) - c( k-1 )*y( k-1 )
240 y( k ) = temp - c( k-1 )*y( k )
246 temp = y( k ) - b( k )*y( k+1 ) - d( k )*y( k+2 )
247 ELSE IF( k.EQ.n-1 )
THEN
248 temp = y( k ) - b( k )*y( k+1 )
254 IF( absak.LT.one )
THEN
255 IF( absak.LT.sfmin )
THEN
256 IF( absak.EQ.zero .OR. abs( temp )*sfmin.GT.absak )
264 ELSE IF( abs( temp ).GT.absak*bignum )
THEN
274 temp = y( k ) - b( k )*y( k+1 ) - d( k )*y( k+2 )
275 ELSE IF( k.EQ.n-1 )
THEN
276 temp = y( k ) - b( k )*y( k+1 )
281 pert = sign( tol, ak )
284 IF( absak.LT.one )
THEN
285 IF( absak.LT.sfmin )
THEN
286 IF( absak.EQ.zero .OR. abs( temp )*sfmin.GT.absak )
295 ELSE IF( abs( temp ).GT.absak*bignum )
THEN
311 temp = y( k ) - b( k-1 )*y( k-1 ) - d( k-2 )*y( k-2 )
312 ELSE IF( k.EQ.2 )
THEN
313 temp = y( k ) - b( k-1 )*y( k-1 )
319 IF( absak.LT.one )
THEN
320 IF( absak.LT.sfmin )
THEN
321 IF( absak.EQ.zero .OR. abs( temp )*sfmin.GT.absak )
329 ELSE IF( abs( temp ).GT.absak*bignum )
THEN
339 temp = y( k ) - b( k-1 )*y( k-1 ) - d( k-2 )*y( k-2 )
340 ELSE IF( k.EQ.2 )
THEN
341 temp = y( k ) - b( k-1 )*y( k-1 )
346 pert = sign( tol, ak )
349 IF( absak.LT.one )
THEN
350 IF( absak.LT.sfmin )
THEN
351 IF( absak.EQ.zero .OR. abs( temp )*sfmin.GT.absak )
360 ELSE IF( abs( temp ).GT.absak*bignum )
THEN
371 IF( in( k-1 ).EQ.0 )
THEN
372 y( k-1 ) = y( k-1 ) - c( k-1 )*y( k )
376 y( k ) = temp - c( k-1 )*y( k )