231 $ WORK, LWORK, RWORK, INFO )
241 INTEGER INFO, 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
263 EXTERNAL lsame, ilaenv2stage, sroundup_lwork
276 wantz = lsame( jobz,
'V' )
277 upper = lsame( uplo,
'U' )
278 lquery = ( lwork.EQ.-1 )
281 IF( itype.LT.1 .OR. itype.GT.3 )
THEN
283 ELSE IF( .NOT.( lsame( jobz,
'N' ) ) )
THEN
285 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN
287 ELSE IF( n.LT.0 )
THEN
289 ELSE IF( lda.LT.max( 1, n ) )
THEN
291 ELSE IF( ldb.LT.max( 1, n ) )
THEN
296 kd = ilaenv2stage( 1,
'CHETRD_2STAGE', jobz, n, -1, -1, -1 )
297 ib = ilaenv2stage( 2,
'CHETRD_2STAGE', jobz, n, kd, -1, -1 )
298 lhtrd = ilaenv2stage( 3,
'CHETRD_2STAGE', jobz, n, kd, ib, -1 )
299 lwtrd = ilaenv2stage( 4,
'CHETRD_2STAGE', jobz, n, kd, ib, -1 )
300 lwmin = n + lhtrd + lwtrd
301 work( 1 ) = sroundup_lwork(lwmin)
303 IF( lwork.LT.lwmin .AND. .NOT.lquery )
THEN
309 CALL xerbla(
'CHEGV_2STAGE ', -info )
311 ELSE IF( lquery )
THEN
322 CALL cpotrf( uplo, n, b, ldb, info )
330 CALL chegst( itype, uplo, n, a, lda, b, ldb, info )
332 $ work, lwork, rwork, info )
341 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN
352 CALL ctrsm(
'Left', uplo, trans,
'Non-unit', n, neig, one,
355 ELSE IF( itype.EQ.3 )
THEN
366 CALL ctrmm(
'Left', uplo, trans,
'Non-unit', n, neig, one,
371 work( 1 ) = sroundup_lwork(lwmin)
subroutine xerbla(srname, info)
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 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 cpotrf(uplo, n, a, lda, info)
CPOTRF
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