231 $ WORK, LWORK, RWORK, INFO )
241 INTEGER , ITYPE, LDA, LDB, LWORK, N
244 REAL RWORK( * ), W( * )
245 COMPLEX A( LDA, * ), B( LDB, * ), WORK( * )
252 parameter( one = ( 1.0e+0, 0.0e+0 ) )
255 LOGICAL LQUERY, UPPER, WANTZ
257 INTEGER NEIG, LWMIN, LHTRD, LWTRD, KD, IB
262EXTERNAL lsame, ilaenv2stage
276 upper = lsame( uplo,
'U' )
280 IF( itype.LT.1 .OR. itype.GT.
THEN
282 ELSE IF( .NOT.( lsame( jobz,
'N' ) ) )
THEN
284 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN
286 ELSE IF( n.LT.0 )
THEN
288 ELSE IF( lda.LT.
max( 1, n ) )
THEN
290 ELSE IF( ldb.LT.
max( 1, n ) )
THEN
295 kd = ilaenv2stage( 1,
'CHETRD_2STAGE', jobz
296 ib = ilaenv2stage( 2,
'CHETRD_2STAGE'
297 lhtrd = ilaenv2stage( 3,
'CHETRD_2STAGE', jobz, n, kd, ib, -1 )
298 lwtrd = ilaenv2stage( 4,
'CHETRD_2STAGE', jobz, n, kd, ib, -1 )
299 lwmin = n + lhtrd + lwtrd
302 IF( lwork.LT.lwmin .AND. .NOT.lquery
THEN
308 CALL xerbla(
'CHEGV_2STAGE ', -info )
310 ELSE IF( lquery )
THEN
321 CALL cpotrf( uplo, n, b, ldb, info
329 CALL chegst( itype, uplo, n, a, lda, b, ldb, info )
331 $ work, lwork, rwork, info )
340 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN
351 CALL ctrsm(
'Left', uplo, trans,
'Non-unit', n, neig, one,
354 ELSE IF( itype.EQ.3 )
THEN
365 CALL ctrmm(
'Left', uplo, trans,
'Non-unit', n, neig, one,
subroutine chegst(itype, uplo, n, a, lda, b, ldb, info)
CHEGST
subroutine chegv_2stage(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, rwork, info)
CHEGV_2STAGE
subroutine cheev_2stage(jobz, uplo, n, a, lda, w, work, lwork, rwork, info)
CHEEV_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE matr...
subroutine ctrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
CTRMM
subroutine ctrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
CTRSM