144 SUBROUTINE slasyf_aa( UPLO, J1, M, NB, A, LDA, IPIV,
156 INTEGER M, NB, J1, LDA, LDH
160 REAL A( lda, * ), H( ldh, * ), WORK( * )
166 parameter( zero = 0.0e+0, one = 1.0e+0 )
169 INTEGER J, K, K1, I1, I2
174 INTEGER ISAMAX, ILAENV
175 EXTERNAL lsame, ilaenv, isamax
192 IF( lsame( uplo,
'U' ) )
THEN 199 IF ( j.GT.min(m, nb) )
220 CALL sgemv(
'No transpose', m-j+1, j-k1,
221 $ -one, h( j, k1 ), ldh,
223 $ one, h( j, j ), 1 )
228 CALL scopy( m-j+1, h( j, j ), 1, work( 1 ), 1 )
236 CALL saxpy( m-j+1, alpha, a( k-2, j ), lda, work( 1 ), 1 )
241 a( k, j ) = work( 1 )
250 CALL saxpy( m-j, alpha, a( k-1, j+1 ), lda,
256 i2 = isamax( m-j, work( 2 ), 1 ) + 1
261 IF( (i2.NE.2) .AND. (piv.NE.0) )
THEN 266 work( i2 ) = work( i1 )
273 CALL sswap( i2-i1-1, a( j1+i1-1, i1+1 ), lda,
274 $ a( j1+i1, i2 ), 1 )
278 CALL sswap( 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 sswap( i1-1, h( i1, 1 ), ldh, h( i2, 1 ), ldh )
292 IF( i1.GT.(k1-1) )
THEN 297 CALL sswap( i1-k1+1, a( 1, i1 ), 1,
306 a( k, j+1 ) = work( 2 )
312 CALL scopy( 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 scopy( m-j-1, work( 3 ), 1, a( k, j+2 ), lda )
322 CALL sscal( m-j-1, alpha, a( k, j+2 ), lda )
324 CALL slaset(
'Full', 1, m-j-1, zero, zero,
339 IF( j.GT.min( m, nb ) )
360 CALL sgemv(
'No transpose', m-j+1, j-k1,
361 $ -one, h( j, k1 ), ldh,
363 $ one, h( j, j ), 1 )
368 CALL scopy( m-j+1, h( j, j ), 1, work( 1 ), 1 )
376 CALL saxpy( m-j+1, alpha, a( j, k-2 ), 1, work( 1 ), 1 )
381 a( j, k ) = work( 1 )
390 CALL saxpy( m-j, alpha, a( j+1, k-1 ), 1,
396 i2 = isamax( m-j, work( 2 ), 1 ) + 1
401 IF( (i2.NE.2) .AND. (piv.NE.0) )
THEN 406 work( i2 ) = work( i1 )
413 CALL sswap( i2-i1-1, a( i1+1, j1+i1-1 ), 1,
414 $ a( i2, j1+i1 ), lda )
418 CALL sswap( 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 sswap( i1-1, h( i1, 1 ), ldh, h( i2, 1 ), ldh )
432 IF( i1.GT.(k1-1) )
THEN 437 CALL sswap( i1-k1+1, a( i1, 1 ), lda,
446 a( j+1, k ) = work( 2 )
452 CALL scopy( 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 scopy( m-j-1, work( 3 ), 1, a( j+2, k ), 1 )
462 CALL sscal( m-j-1, alpha, a( j+2, k ), 1 )
464 CALL slaset(
'Full', m-j-1, 1, zero, zero,
subroutine slasyf_aa(UPLO, J1, M, NB, A, LDA, IPIV, H, LDH, WORK)
SLASYF_AA
subroutine sgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
SGEMV
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine slaset(UPLO, M, N, ALPHA, BETA, A, LDA)
SLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...
subroutine saxpy(N, SA, SX, INCX, SY, INCY)
SAXPY
subroutine sscal(N, SA, SX, INCX)
SSCAL
subroutine sswap(N, SX, INCX, SY, INCY)
SSWAP
subroutine scopy(N, SX, INCX, SY, INCY)
SCOPY