144 SUBROUTINE dlasyf_aa( UPLO, J1, M, NB, A, LDA, IPIV,
156 INTEGER M, NB, J1, LDA, LDH
160 DOUBLE PRECISION A( lda, * ), H( ldh, * ), WORK( * )
165 DOUBLE PRECISION ZERO, ONE
166 parameter( zero = 0.0d+0, one = 1.0d+0 )
169 INTEGER J, K, K1, I1, I2
170 DOUBLE PRECISION PIV, ALPHA
174 INTEGER IDAMAX, ILAENV
175 EXTERNAL lsame, ilaenv, idamax
192 IF( lsame( uplo,
'U' ) )
THEN 199 IF ( j.GT.min(m, nb) )
220 CALL dgemv(
'No transpose', m-j+1, j-k1,
221 $ -one, h( j, k1 ), ldh,
223 $ one, h( j, j ), 1 )
228 CALL dcopy( m-j+1, h( j, j ), 1, work( 1 ), 1 )
236 CALL daxpy( m-j+1, alpha, a( k-2, j ), lda, work( 1 ), 1 )
241 a( k, j ) = work( 1 )
250 CALL daxpy( m-j, alpha, a( k-1, j+1 ), lda,
256 i2 = idamax( m-j, work( 2 ), 1 ) + 1
261 IF( (i2.NE.2) .AND. (piv.NE.0) )
THEN 266 work( i2 ) = work( i1 )
273 CALL dswap( i2-i1-1, a( j1+i1-1, i1+1 ), lda,
274 $ a( j1+i1, i2 ), 1 )
278 CALL dswap( 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 dswap( i1-1, h( i1, 1 ), ldh, h( i2, 1 ), ldh )
292 IF( i1.GT.(k1-1) )
THEN 297 CALL dswap( i1-k1+1, a( 1, i1 ), 1,
306 a( k, j+1 ) = work( 2 )
312 CALL dcopy( 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 dcopy( m-j-1, work( 3 ), 1, a( k, j+2 ), lda )
322 CALL dscal( m-j-1, alpha, a( k, j+2 ), lda )
324 CALL dlaset(
'Full', 1, m-j-1, zero, zero,
339 IF( j.GT.min( m, nb ) )
360 CALL dgemv(
'No transpose', m-j+1, j-k1,
361 $ -one, h( j, k1 ), ldh,
363 $ one, h( j, j ), 1 )
368 CALL dcopy( m-j+1, h( j, j ), 1, work( 1 ), 1 )
376 CALL daxpy( m-j+1, alpha, a( j, k-2 ), 1, work( 1 ), 1 )
381 a( j, k ) = work( 1 )
390 CALL daxpy( m-j, alpha, a( j+1, k-1 ), 1,
396 i2 = idamax( m-j, work( 2 ), 1 ) + 1
401 IF( (i2.NE.2) .AND. (piv.NE.0) )
THEN 406 work( i2 ) = work( i1 )
413 CALL dswap( i2-i1-1, a( i1+1, j1+i1-1 ), 1,
414 $ a( i2, j1+i1 ), lda )
418 CALL dswap( 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 dswap( i1-1, h( i1, 1 ), ldh, h( i2, 1 ), ldh )
432 IF( i1.GT.(k1-1) )
THEN 437 CALL dswap( i1-k1+1, a( i1, 1 ), lda,
446 a( j+1, k ) = work( 2 )
452 CALL dcopy( 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 dcopy( m-j-1, work( 3 ), 1, a( j+2, k ), 1 )
462 CALL dscal( m-j-1, alpha, a( j+2, k ), 1 )
464 CALL dlaset(
'Full', m-j-1, 1, zero, zero,
subroutine dcopy(N, DX, INCX, DY, INCY)
DCOPY
subroutine dlasyf_aa(UPLO, J1, M, NB, A, LDA, IPIV, H, LDH, WORK)
DLASYF_AA
subroutine dgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
DGEMV
subroutine daxpy(N, DA, DX, INCX, DY, INCY)
DAXPY
subroutine dlaset(UPLO, M, N, ALPHA, BETA, A, LDA)
DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...
subroutine dswap(N, DX, INCX, DY, INCY)
DSWAP
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dscal(N, DA, DX, INCX)
DSCAL