141 INTEGER INFO, LDA, LDB, N, NRHS
145 COMPLEX*16 A( LDA, * ), B( LDB, * )
152 parameter( cone = ( 1.0d+0, 0.0d+0 ) )
157 COMPLEX*16 AK, AKM1, AKM1K, BK, BKM1, DENOM
172 upper = lsame( uplo,
'U' )
173 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
175 ELSE IF( n.LT.0 )
THEN
177 ELSE IF( nrhs.LT.0 )
THEN
179 ELSE IF( lda.LT.max( 1, n ) )
THEN
181 ELSE IF( ldb.LT.max( 1, n ) )
THEN
185 CALL xerbla(
'ZSYTRS_ROOK', -info )
191 IF( n.EQ.0 .OR. nrhs.EQ.0 )
211 IF( ipiv( k ).GT.0 )
THEN
219 $
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
224 CALL zgeru( k-1, nrhs, -cone, a( 1, k ), 1, b( k, 1 ),
230 CALL zscal( nrhs, cone / a( k, k ), b( k, 1 ), ldb )
240 $
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
244 $
CALL zswap( nrhs, b( k-1, 1 ), ldb, b( kp, 1 ), ldb )
250 CALL zgeru( k-2, nrhs,-cone, a( 1, k ), 1, b( k, 1 ),
251 $ ldb, b( 1, 1 ), ldb )
252 CALL zgeru( k-2, nrhs,-cone, a( 1, k-1 ), 1, b( k-1,
254 $ ldb, b( 1, 1 ), ldb )
260 akm1 = a( k-1, k-1 ) / akm1k
261 ak = a( k, k ) / akm1k
262 denom = akm1*ak - cone
264 bkm1 = b( k-1, j ) / akm1k
265 bk = b( k, j ) / akm1k
266 b( k-1, j ) = ( ak*bkm1-bk ) / denom
267 b( k, j ) = ( akm1*bk-bkm1 ) / denom
288 IF( ipiv( k ).GT.0 )
THEN
296 $
CALL zgemv(
'Transpose', k-1, nrhs, -cone, b,
297 $ ldb, a( 1, k ), 1, cone, b( k, 1 ), ldb )
303 $
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
313 CALL zgemv(
'Transpose', k-1, nrhs, -cone, b,
314 $ ldb, a( 1, k ), 1, cone, b( k, 1 ), ldb )
315 CALL zgemv(
'Transpose', k-1, nrhs, -cone, b,
316 $ ldb, a( 1, k+1 ), 1, cone, b( k+1, 1 ), ldb )
323 $
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
327 $
CALL zswap( nrhs, b( k+1, 1 ), ldb, b( kp, 1 ), ldb )
352 IF( ipiv( k ).GT.0 )
THEN
360 $
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
366 $
CALL zgeru( n-k, nrhs, -cone, a( k+1, k ), 1, b( k,
368 $ ldb, b( k+1, 1 ), ldb )
372 CALL zscal( nrhs, cone / a( k, k ), b( k, 1 ), ldb )
382 $
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
386 $
CALL zswap( nrhs, b( k+1, 1 ), ldb, b( kp, 1 ), ldb )
392 CALL zgeru( n-k-1, nrhs,-cone, a( k+2, k ), 1, b( k,
394 $ ldb, b( k+2, 1 ), ldb )
395 CALL zgeru( n-k-1, nrhs,-cone, a( k+2, k+1 ), 1,
396 $ b( k+1, 1 ), ldb, b( k+2, 1 ), ldb )
402 akm1 = a( k, k ) / akm1k
403 ak = a( k+1, k+1 ) / akm1k
404 denom = akm1*ak - cone
406 bkm1 = b( k, j ) / akm1k
407 bk = b( k+1, j ) / akm1k
408 b( k, j ) = ( ak*bkm1-bk ) / denom
409 b( k+1, j ) = ( akm1*bk-bkm1 ) / denom
430 IF( ipiv( k ).GT.0 )
THEN
438 $
CALL zgemv(
'Transpose', n-k, nrhs, -cone, b( k+1,
440 $ ldb, a( k+1, k ), 1, cone, b( k, 1 ), ldb )
446 $
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
456 CALL zgemv(
'Transpose', n-k, nrhs, -cone, b( k+1,
458 $ ldb, a( k+1, k ), 1, cone, b( k, 1 ), ldb )
459 CALL zgemv(
'Transpose', n-k, nrhs, -cone, b( k+1,
461 $ ldb, a( k+1, k-1 ), 1, cone, b( k-1, 1 ),
469 $
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
473 $
CALL zswap( nrhs, b( k-1, 1 ), ldb, b( kp, 1 ), ldb )