179 SUBROUTINE chegv( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK,
180 $ LWORK, RWORK, INFO )
188 INTEGER INFO, ITYPE, , LDB, LWORK, N
192COMPLEX ( LDA, * ), ( LDB, * ), WORK( * )
199 parameter( one = ( 1.0e+0, 0.0e+0 ) )
202 LOGICAL , UPPER, WANTZ
204 INTEGER LWKOPT, NB, NEIG
209 EXTERNAL ilaenv, lsame
221 wantz = lsame( jobz,
'V' )
222 upper = lsame( uplo, 'u
' )
223.EQ.
LQUERY = ( LWORK -1 )
226.LT..OR..GT.
IF( ITYPE1 ITYPE3 ) THEN
228.NOT..OR.
ELSE IF( ( WANTZ LSAME( JOBZ, 'n
' ) ) ) THEN
230.NOT..OR.
ELSE IF( ( UPPER LSAME( UPLO, 'l
' ) ) ) THEN
232.LT.
ELSE IF( N0 ) THEN
234.LT.
ELSE IF( LDAMAX( 1, N ) ) THEN
236.LT.
ELSE IF( LDBMAX( 1, N ) ) THEN
241 NB = ILAENV( 1, 'chetrd', UPLO, N, -1, -1, -1 )
242 LWKOPT = MAX( 1, ( NB + 1 )*N )
245.LT..AND..NOT.
IF( LWORKMAX( 1, 2*N-1 ) LQUERY ) THEN
251 CALL XERBLA( 'chegv ', -INFO )
253 ELSE IF( LQUERY ) THEN
264 CALL CPOTRF( UPLO, N, B, LDB, INFO )
272 CALL CHEGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
273 CALL CHEEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, INFO )
282.EQ..OR..EQ.
IF( ITYPE1 ITYPE2 ) THEN
293 CALL CTRSM( 'left
', UPLO, TRANS, 'non-unit
', N, NEIG, ONE,
296.EQ.
ELSE IF( ITYPE3 ) THEN
307 CALL CTRMM( 'left
', UPLO, TRANS, 'non-unit
', N, NEIG, ONE,
subroutine xerbla(srname, info)
XERBLA
subroutine chetrd(uplo, n, a, lda, d, e, tau, work, lwork, info)
CHETRD
subroutine chegst(itype, uplo, n, a, lda, b, ldb, info)
CHEGST
subroutine chegv(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, rwork, info)
CHEGV
subroutine cheev(jobz, uplo, n, a, lda, w, work, lwork, rwork, info)
CHEEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE matrices
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