131 SUBROUTINE dsytrf_aa( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
141 INTEGER N, LDA, LWORK, INFO
145 DOUBLE PRECISION A( LDA, * ), WORK( * )
150 DOUBLE PRECISION ZERO, ONE
151 parameter( zero = 0.0d+0, one = 1.0d+0 )
154 LOGICAL LQUERY, UPPER
156 INTEGER NB, MJ, NJ, , K2, J1, J2, J3, JB
157 DOUBLE PRECISION ALPHA
162 EXTERNAL lsame, ilaenv
175 nb = ilaenv( 1, '
dsytrf_aa', UPLO, N, -1, -1, -1 )
180 UPPER = LSAME( UPLO, 'u
' )
181.EQ.
LQUERY = ( LWORK-1 )
182.NOT..AND..NOT.
IF( UPPER LSAME( UPLO, 'l
' ) ) THEN
184.LT.
ELSE IF( N0 ) THEN
186.LT.
ELSE IF( LDAMAX( 1, N ) ) THEN
188.LT..AND..NOT.
ELSE IF( LWORKMAX( 1, 2*N ) LQUERY ) THEN
200 ELSE IF( LQUERY ) THEN
216.LT.
IF( LWORK((1+NB)*N) ) THEN
228 CALL DCOPY( N, A( 1, 1 ), LDA, WORK( 1 ), 1 )
247 JB = MIN( N-J1+1, NB )
252 CALL DLASYF_AA( UPLO, 2-K1, N-J, JB,
253 $ A( MAX(1, J), J+1 ), LDA,
254 $ IPIV( J+1 ), WORK, N, WORK( N*NB+1 ) )
258 DO J2 = J+2, MIN(N, J+JB+1)
259 IPIV( J2 ) = IPIV( J2 ) + J
260.NE..AND..GT.
IF( (J2IPIV(J2)) ((J1-K1)2) ) THEN
261 CALL DSWAP( J1-K1-2, A( 1, J2 ), 1,
262 $ A( 1, IPIV(J2) ), 1 )
275.GT..OR..GT.
IF( J11 JB1 ) THEN
281 CALL DCOPY( N-J, A( J-1, J+1 ), LDA,
282 $ WORK( (J+1-J1+1)+JB*N ), 1 )
283 CALL DSCAL( N-J, ALPHA, WORK( (J+1-J1+1)+JB*N ), 1 )
306 NJ = MIN( NB, N-J2+1 )
312 CALL DGEMV( 'no transpose
', MJ, JB+1,
313 $ -ONE, WORK( J3-J1+1+K1*N ), N,
315 $ ONE, A( J3, J3 ), LDA )
321 CALL DGEMM( 'transpose
', 'transpose
',
323 $ -ONE, A( J1-K2, J2 ), LDA,
324 $ WORK( J3-J1+1+K1*N ), N,
325 $ ONE, A( J2, J3 ), LDA )
335 CALL DCOPY( N-J, A( J+1, J+1 ), LDA, WORK( 1 ), 1 )
347 CALL DCOPY( N, A( 1, 1 ), 1, WORK( 1 ), 1 )
366 JB = MIN( N-J1+1, NB )
371 CALL DLASYF_AA( UPLO, 2-K1, N-J, JB,
372 $ A( J+1, MAX(1, J) ), LDA,
373 $ IPIV( J+1 ), WORK, N, WORK( N*NB+1 ) )
377 DO J2 = J+2, MIN(N, J+JB+1)
378 IPIV( J2 ) = IPIV( J2 ) + J
379.NE..AND..GT.
IF( (J2IPIV(J2)) ((J1-K1)2) ) THEN
380 CALL DSWAP( J1-K1-2, A( J2, 1 ), LDA,
381 $ A( IPIV(J2), 1 ), LDA )
394.GT..OR..GT.
IF( J11 JB1 ) THEN
400 CALL DCOPY( N-J, A( J+1, J-1 ), 1,
401 $ WORK( (J+1-J1+1)+JB*N ), 1 )
402 CALL DSCAL( N-J, ALPHA, WORK( (J+1-J1+1)+JB*N ), 1 )
425 NJ = MIN( NB, N-J2+1 )
431 CALL DGEMV( 'no transpose
', MJ, JB+1,
432 $ -ONE, WORK( J3-J1+1+K1*N ), N,
433 $ A( J3, J1-K2 ), LDA,
434 $ ONE, A( J3, J3 ), 1 )
440 CALL DGEMM( 'no transpose
', 'transpose
',
442 $ -ONE, WORK( J3-J1+1+K1*N ), N,
443 $ A( J2, J1-K2 ), LDA,
444 $ ONE, A( J3, J2 ), LDA )
454 CALL DCOPY( N-J, A( J+1, J+1 ), 1, WORK( 1 ), 1 )
subroutine xerbla(srname, info)
XERBLA
subroutine dlasyf_aa(uplo, j1, m, nb, a, lda, ipiv, h, ldh, work)
DLASYF_AA
subroutine dsytrf_aa(uplo, n, a, lda, ipiv, work, lwork, info)
DSYTRF_AA
subroutine dscal(n, da, dx, incx)
DSCAL
subroutine dswap(n, dx, incx, dy, incy)
DSWAP
subroutine dcopy(n, dx, incx, dy, incy)
DCOPY
subroutine dgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
DGEMV
subroutine dgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
DGEMM