144 SUBROUTINE clasyf_aa( UPLO, J1, M, NB, A, LDA, IPIV,
156 INTEGER M, NB, J1, LDA, LDH
160 COMPLEX A( lda, * ), H( ldh, * ), WORK( * )
166 parameter( zero = 0.0e+0, one = 1.0e+0 )
169 INTEGER J, K, K1, I1, I2
174 INTEGER ICAMAX, ILAENV
175 EXTERNAL lsame, ilaenv, icamax
192 IF( lsame( uplo,
'U' ) )
THEN 199 IF ( j.GT.min(m, nb) )
220 CALL cgemv(
'No transpose', m-j+1, j-k1,
221 $ -one, h( j, k1 ), ldh,
223 $ one, h( j, j ), 1 )
228 CALL ccopy( m-j+1, h( j, j ), 1, work( 1 ), 1 )
236 CALL caxpy( m-j+1, alpha, a( k-2, j ), lda, work( 1 ), 1 )
241 a( k, j ) = work( 1 )
250 CALL caxpy( m-j, alpha, a( k-1, j+1 ), lda,
256 i2 = icamax( m-j, work( 2 ), 1 ) + 1
261 IF( (i2.NE.2) .AND. (piv.NE.0) )
THEN 266 work( i2 ) = work( i1 )
273 CALL cswap( i2-i1-1, a( j1+i1-1, i1+1 ), lda,
274 $ a( j1+i1, i2 ), 1 )
278 CALL cswap( m-i2, a( j1+i1-1, i2+1 ), lda,
279 $ a( j1+i2-1, i2+1 ), lda )
283 piv = a( i1+j1-1, i1 )
284 a( j1+i1-1, i1 ) = a( j1+i2-1, i2 )
285 a( j1+i2-1, i2 ) = piv
289 CALL cswap( i1-1, h( i1, 1 ), ldh, h( i2, 1 ), ldh )
292 IF( i1.GT.(k1-1) )
THEN 297 CALL cswap( i1-k1+1, a( 1, i1 ), 1,
306 a( k, j+1 ) = work( 2 )
312 CALL ccopy( m-j, a( k+1, j+1 ), lda,
319 IF( a( k, j+1 ).NE.zero )
THEN 320 alpha = one / a( k, j+1 )
321 CALL ccopy( m-j-1, work( 3 ), 1, a( k, j+2 ), lda )
322 CALL cscal( m-j-1, alpha, a( k, j+2 ), lda )
324 CALL claset(
'Full', 1, m-j-1, zero, zero,
339 IF( j.GT.min( m, nb ) )
360 CALL cgemv(
'No transpose', m-j+1, j-k1,
361 $ -one, h( j, k1 ), ldh,
363 $ one, h( j, j ), 1 )
368 CALL ccopy( m-j+1, h( j, j ), 1, work( 1 ), 1 )
376 CALL caxpy( m-j+1, alpha, a( j, k-2 ), 1, work( 1 ), 1 )
381 a( j, k ) = work( 1 )
390 CALL caxpy( m-j, alpha, a( j+1, k-1 ), 1,
396 i2 = icamax( m-j, work( 2 ), 1 ) + 1
401 IF( (i2.NE.2) .AND. (piv.NE.0) )
THEN 406 work( i2 ) = work( i1 )
413 CALL cswap( i2-i1-1, a( i1+1, j1+i1-1 ), 1,
414 $ a( i2, j1+i1 ), lda )
418 CALL cswap( m-i2, a( i2+1, j1+i1-1 ), 1,
419 $ a( i2+1, j1+i2-1 ), 1 )
423 piv = a( i1, j1+i1-1 )
424 a( i1, j1+i1-1 ) = a( i2, j1+i2-1 )
425 a( i2, j1+i2-1 ) = piv
429 CALL cswap( i1-1, h( i1, 1 ), ldh, h( i2, 1 ), ldh )
432 IF( i1.GT.(k1-1) )
THEN 437 CALL cswap( i1-k1+1, a( i1, 1 ), lda,
446 a( j+1, k ) = work( 2 )
452 CALL ccopy( m-j, a( j+1, k+1 ), 1,
459 IF( a( j+1, k ).NE.zero )
THEN 460 alpha = one / a( j+1, k )
461 CALL ccopy( m-j-1, work( 3 ), 1, a( j+2, k ), 1 )
462 CALL cscal( m-j-1, alpha, a( j+2, k ), 1 )
464 CALL claset(
'Full', m-j-1, 1, zero, zero,
subroutine clasyf_aa(UPLO, J1, M, NB, A, LDA, IPIV, H, LDH, WORK)
CLASYF_AA
subroutine claset(UPLO, M, N, ALPHA, BETA, A, LDA)
CLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...
subroutine cscal(N, CA, CX, INCX)
CSCAL
subroutine cgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CGEMV
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ccopy(N, CX, INCX, CY, INCY)
CCOPY
subroutine cswap(N, CX, INCX, CY, INCY)
CSWAP
subroutine caxpy(N, CA, CX, INCX, CY, INCY)
CAXPY