155 SUBROUTINE clavsy_rook( UPLO, TRANS, DIAG, N, NRHS, A, LDA, IPIV,
164 CHARACTER DIAG, TRANS, UPLO
165 INTEGER INFO, LDA, LDB, N, NRHS
169 COMPLEX A( lda, * ), B( ldb, * )
176 parameter ( cone = ( 1.0e+0, 0.0e+0 ) )
181 COMPLEX D11, D12, D21, D22, T1, T2
198 IF( .NOT.lsame( uplo,
'U' ) .AND. .NOT.lsame( uplo,
'L' ) )
THEN
200 ELSE IF( .NOT.lsame( trans,
'N' ) .AND. .NOT.lsame( trans,
'T' ) )
203 ELSE IF( .NOT.lsame( diag,
'U' ) .AND. .NOT.lsame( diag,
'N' ) )
206 ELSE IF( n.LT.0 )
THEN
208 ELSE IF( lda.LT.max( 1, n ) )
THEN
210 ELSE IF( ldb.LT.max( 1, n ) )
THEN
214 CALL xerbla(
'CLAVSY_ROOK ', -info )
223 nounit = lsame( diag,
'N' )
229 IF( lsame( trans,
'N' ) )
THEN
234 IF( lsame( uplo,
'U' ) )
THEN
242 IF( ipiv( k ).GT.0 )
THEN
249 $
CALL cscal( nrhs, a( k, k ), b( k, 1 ), ldb )
257 CALL cgeru( k-1, nrhs, cone, a( 1, k ), 1, b( k, 1 ),
258 $ ldb, b( 1, 1 ), ldb )
264 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
281 b( k, j ) = d11*t1 + d12*t2
282 b( k+1, j ) = d21*t1 + d22*t2
292 CALL cgeru( k-1, nrhs, cone, a( 1, k ), 1, b( k, 1 ),
293 $ ldb, b( 1, 1 ), ldb )
294 CALL cgeru( k-1, nrhs, cone, a( 1, k+1 ), 1,
295 $ b( k+1, 1 ), ldb, b( 1, 1 ), ldb )
302 kp = abs( ipiv( k ) )
304 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
308 kp = abs( ipiv( k+1 ) )
310 $
CALL cswap( nrhs, b( k+1, 1 ), ldb, b( kp, 1 ),
333 IF( ipiv( k ).GT.0 )
THEN
340 $
CALL cscal( nrhs, a( k, k ), b( k, 1 ), ldb )
349 CALL cgeru( n-k, nrhs, cone, a( k+1, k ), 1,
350 $ b( k, 1 ), ldb, b( k+1, 1 ), ldb )
356 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
374 b( k-1, j ) = d11*t1 + d12*t2
375 b( k, j ) = d21*t1 + d22*t2
385 CALL cgeru( n-k, nrhs, cone, a( k+1, k ), 1,
386 $ b( k, 1 ), ldb, b( k+1, 1 ), ldb )
387 CALL cgeru( n-k, nrhs, cone, a( k+1, k-1 ), 1,
388 $ b( k-1, 1 ), ldb, b( k+1, 1 ), ldb )
395 kp = abs( ipiv( k ) )
397 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
401 kp = abs( ipiv( k-1 ) )
403 $
CALL cswap( nrhs, b( k-1, 1 ), ldb, b( kp, 1 ),
416 ELSE IF( lsame( trans,
'T' ) )
THEN
422 IF( lsame( uplo,
'U' ) )
THEN
432 IF( ipiv( k ).GT.0 )
THEN
439 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
443 CALL cgemv(
'Transpose', k-1, nrhs, cone, b, ldb,
444 $ a( 1, k ), 1, cone, b( k, 1 ), ldb )
447 $
CALL cscal( nrhs, a( k, k ), b( k, 1 ), ldb )
457 kp = abs( ipiv( k ) )
459 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
463 kp = abs( ipiv( k-1 ) )
465 $
CALL cswap( nrhs, b( k-1, 1 ), ldb, b( kp, 1 ),
470 CALL cgemv(
'Transpose', k-2, nrhs, cone, b, ldb,
471 $ a( 1, k ), 1, cone, b( k, 1 ), ldb )
472 CALL cgemv(
'Transpose', k-2, nrhs, cone, b, ldb,
473 $ a( 1, k-1 ), 1, cone, b( k-1, 1 ), ldb )
486 b( k-1, j ) = d11*t1 + d12*t2
487 b( k, j ) = d21*t1 + d22*t2
510 IF( ipiv( k ).GT.0 )
THEN
517 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
521 CALL cgemv(
'Transpose', n-k, nrhs, cone, b( k+1, 1 ),
522 $ ldb, a( k+1, k ), 1, cone, b( k, 1 ), ldb )
525 $
CALL cscal( nrhs, a( k, k ), b( k, 1 ), ldb )
535 kp = abs( ipiv( k ) )
537 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
541 kp = abs( ipiv( k+1 ) )
543 $
CALL cswap( nrhs, b( k+1, 1 ), ldb, b( kp, 1 ),
548 CALL cgemv(
'Transpose', n-k-1, nrhs, cone,
549 $ b( k+2, 1 ), ldb, a( k+2, k+1 ), 1, cone,
551 CALL cgemv(
'Transpose', n-k-1, nrhs, cone,
552 $ b( k+2, 1 ), ldb, a( k+2, k ), 1, cone,
566 b( k, j ) = d11*t1 + d12*t2
567 b( k+1, j ) = d21*t1 + d22*t2
subroutine clavsy_rook(UPLO, TRANS, DIAG, N, NRHS, A, LDA, IPIV, B, LDB, INFO)
CLAVSY_ROOK
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cscal(N, CA, CX, INCX)
CSCAL
subroutine cgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CGEMV
subroutine cswap(N, CX, INCX, CY, INCY)
CSWAP
subroutine cgeru(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
CGERU