133 SUBROUTINE ssytrf_aa( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
144 INTEGER N, LDA, LWORK, INFO
148 REAL A( lda, * ), WORK( * )
154 parameter( zero = 0.0e+0, one = 1.0e+0 )
157 LOGICAL LQUERY, UPPER
159 INTEGER NB, MJ, NJ, K1, K2, J1, J2, J3, JB
165 EXTERNAL lsame, ilaenv
177 nb = ilaenv( 1,
'SSYTRF', uplo, n, -1, -1, -1 )
182 upper = lsame( uplo,
'U' )
183 lquery = ( lwork.EQ.-1 )
184 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN 186 ELSE IF( n.LT.0 )
THEN 188 ELSE IF( lda.LT.max( 1, n ) )
THEN 190 ELSE IF( lwork.LT.max( 1, 2*n ) .AND. .NOT.lquery )
THEN 200 CALL xerbla(
'SSYTRF_AA', -info )
202 ELSE IF( lquery )
THEN 218 IF( lwork.LT.((1+nb)*n) )
THEN 230 CALL scopy( n, a( 1, 1 ), lda, work( 1 ), 1 )
249 jb = min( n-j1+1, nb )
255 $ a( max(1, j), j+1 ), lda,
256 $ ipiv( j+1 ), work, n, work( n*nb+1 ) )
260 DO j2 = j+2, min(n, j+jb+1)
261 ipiv( j2 ) = ipiv( j2 ) + j
262 IF( (j2.NE.ipiv(j2)) .AND. ((j1-k1).GT.2) )
THEN 263 CALL sswap( j1-k1-2, a( 1, j2 ), 1,
264 $ a( 1, ipiv(j2) ), 1 )
277 IF( j1.GT.1 .OR. jb.GT.1 )
THEN 283 CALL scopy( n-j, a( j-1, j+1 ), lda,
284 $ work( (j+1-j1+1)+jb*n ), 1 )
285 CALL sscal( n-j, alpha, work( (j+1-j1+1)+jb*n ), 1 )
308 nj = min( nb, n-j2+1 )
314 CALL sgemv(
'No transpose', mj, jb+1,
315 $ -one, work( j3-j1+1+k1*n ), n,
317 $ one, a( j3, j3 ), lda )
323 CALL sgemm(
'Transpose',
'Transpose',
325 $ -one, a( j1-k2, j2 ), lda,
326 $ work( j3-j1+1+k1*n ), n,
327 $ one, a( j2, j3 ), lda )
337 CALL scopy( n-j, a( j+1, j+1 ), lda, work( 1 ), 1 )
349 CALL scopy( n, a( 1, 1 ), 1, work( 1 ), 1 )
368 jb = min( n-j1+1, nb )
374 $ a( j+1, max(1, j) ), lda,
375 $ ipiv( j+1 ), work, n, work( n*nb+1 ) )
379 DO j2 = j+2, min(n, j+jb+1)
380 ipiv( j2 ) = ipiv( j2 ) + j
381 IF( (j2.NE.ipiv(j2)) .AND. ((j1-k1).GT.2) )
THEN 382 CALL sswap( j1-k1-2, a( j2, 1 ), lda,
383 $ a( ipiv(j2), 1 ), lda )
396 IF( j1.GT.1 .OR. jb.GT.1 )
THEN 402 CALL scopy( n-j, a( j+1, j-1 ), 1,
403 $ work( (j+1-j1+1)+jb*n ), 1 )
404 CALL sscal( n-j, alpha, work( (j+1-j1+1)+jb*n ), 1 )
427 nj = min( nb, n-j2+1 )
433 CALL sgemv(
'No transpose', mj, jb+1,
434 $ -one, work( j3-j1+1+k1*n ), n,
435 $ a( j3, j1-k2 ), lda,
436 $ one, a( j3, j3 ), 1 )
442 CALL sgemm(
'No transpose',
'Transpose',
444 $ -one, work( j3-j1+1+k1*n ), n,
445 $ a( j2, j1-k2 ), lda,
446 $ one, a( j3, j2 ), lda )
456 CALL scopy( n-j, a( j+1, j+1 ), 1, work( 1 ), 1 )
subroutine slasyf_aa(UPLO, J1, M, NB, A, LDA, IPIV, H, LDH, WORK)
SLASYF_AA
subroutine ssytrf_aa(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
SSYTRF_AA
subroutine sgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
SGEMM
subroutine sgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
SGEMV
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine sscal(N, SA, SX, INCX)
SSCAL
subroutine sswap(N, SX, INCX, SY, INCY)
SSWAP
subroutine scopy(N, SX, INCX, SY, INCY)
SCOPY