232 SUBROUTINE zhegv_2stage( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W,
233 $ WORK, LWORK, RWORK, INFO )
244 INTEGER INFO, ITYPE, LDA, LDB, LWORK, N
247 DOUBLE PRECISION RWORK( * ), W( * )
248 COMPLEX*16 A( lda, * ), B( ldb, * ), WORK( * )
255 parameter( one = ( 1.0d+0, 0.0d+0 ) )
258 LOGICAL LQUERY, UPPER, WANTZ
260 INTEGER NEIG, LWMIN, LHTRD, LWTRD, KD, IB
265 EXTERNAL lsame, ilaenv
278 wantz = lsame( jobz,
'V' )
279 upper = lsame( uplo,
'U' )
280 lquery = ( lwork.EQ.-1 )
283 IF( itype.LT.1 .OR. itype.GT.3 )
THEN 285 ELSE IF( .NOT.( lsame( jobz,
'N' ) ) )
THEN 287 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN 289 ELSE IF( n.LT.0 )
THEN 291 ELSE IF( lda.LT.max( 1, n ) )
THEN 293 ELSE IF( ldb.LT.max( 1, n ) )
THEN 298 kd = ilaenv( 17,
'ZHETRD_2STAGE', jobz, n, -1, -1, -1 )
299 ib = ilaenv( 18,
'ZHETRD_2STAGE', jobz, n, kd, -1, -1 )
300 lhtrd = ilaenv( 19,
'ZHETRD_2STAGE', jobz, n, kd, ib, -1 )
301 lwtrd = ilaenv( 20,
'ZHETRD_2STAGE', jobz, n, kd, ib, -1 )
302 lwmin = n + lhtrd + lwtrd
305 IF( lwork.LT.lwmin .AND. .NOT.lquery )
THEN 311 CALL xerbla(
'ZHEGV_2STAGE ', -info )
313 ELSE IF( lquery )
THEN 324 CALL zpotrf( uplo, n, b, ldb, info )
332 CALL zhegst( itype, uplo, n, a, lda, b, ldb, info )
334 $ work, lwork, rwork, info )
343 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN 354 CALL ztrsm(
'Left', uplo, trans,
'Non-unit', n, neig, one,
357 ELSE IF( itype.EQ.3 )
THEN 368 CALL ztrmm(
'Left', uplo, trans,
'Non-unit', n, neig, one,
subroutine zhegst(ITYPE, UPLO, N, A, LDA, B, LDB, INFO)
ZHEGST
subroutine zpotrf(UPLO, N, A, LDA, INFO)
ZPOTRF VARIANT: right looking block version of the algorithm, calling Level 3 BLAS.
subroutine ztrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRMM
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zhegv_2stage(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, INFO)
ZHEGV_2STAGE
subroutine zheev_2stage(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, INFO)
ZHEEV_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE mat...
subroutine ztrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRSM