225 $ WORK, LWORK, INFO )
238 DOUBLE PRECISION A( LDA, * ), B( LDB, * ), W( * ), WORK( * )
245 parameter( one = 1.0d+0 )
248 LOGICAL LQUERY, UPPER, WANTZ
250 INTEGER NEIG, LWMIN, LHTRD, LWTRD, KD, IB
255 EXTERNAL lsame, ilaenv2stage
268 wantz = lsame( jobz,
'V' )
269 upper = lsame( uplo,
'U' )
270 lquery = ( lwork.EQ.-1 )
273 IF( itype.LT.1 .OR. itype.GT.3 )
THEN
275 ELSE IF( .NOT.( lsame( jobz,
'N' ) ) )
THEN
277 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN
279 ELSE IF( n.LT.0 )
THEN
281 ELSE IF( lda.LT.
max( 1, n ) )
THEN
283 ELSE IF( ldb.LT.
max( 1, n ) )
THEN
290 LHTRD = ILAENV2STAGE( 3, 'dsytrd_2stage', JOBZ, N, KD, IB, -1 )
291 LWTRD = ILAENV2STAGE( 4, 'dsytrd_2stage', JOBZ, N, KD, IB, -1 )
292 LWMIN = 2*N + LHTRD + LWTRD
295.LT..AND..NOT.
IF( LWORKLWMIN LQUERY ) THEN
303 ELSE IF( LQUERY ) THEN
314 CALL DPOTRF( UPLO, N, B, LDB, INFO )
322 CALL DSYGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
323 CALL DSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO )
332.EQ..OR..EQ.
IF( ITYPE1 ITYPE2 ) THEN
343 CALL DTRSM( 'left
', UPLO, TRANS, 'non-unit
', N, NEIG, ONE,
346.EQ.
ELSE IF( ITYPE3 ) THEN
357 CALL DTRMM( 'left
', UPLO, TRANS, 'non-unit
', N, NEIG, ONE,
subroutine xerbla(srname, info)
XERBLA
subroutine dpotrf(uplo, n, a, lda, info)
DPOTRF
subroutine dsygst(itype, uplo, n, a, lda, b, ldb, info)
DSYGST
subroutine dsytrd_2stage(vect, uplo, n, a, lda, d, e, tau, hous2, lhous2, work, lwork, info)
DSYTRD_2STAGE
subroutine dsygv_2stage(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, info)
DSYGV_2STAGE
subroutine dsyev_2stage(jobz, uplo, n, a, lda, w, work, lwork, info)
DSYEV_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matr...
subroutine dtrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRMM
subroutine dtrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRSM