175 SUBROUTINE ssygv( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK,
185 INTEGER INFO, ITYPE, LDA, LDB, LWORK, N
188 REAL A( lda, * ), B( ldb, * ), W( * ), WORK( * )
195 parameter( one = 1.0e+0 )
198 LOGICAL LQUERY, UPPER, WANTZ
200 INTEGER LWKMIN, LWKOPT, NB, NEIG
205 EXTERNAL ilaenv, lsame
217 wantz = lsame( jobz,
'V' )
218 upper = lsame( uplo,
'U' )
219 lquery = ( lwork.EQ.-1 )
222 IF( itype.LT.1 .OR. itype.GT.3 )
THEN 224 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN 226 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN 228 ELSE IF( n.LT.0 )
THEN 230 ELSE IF( lda.LT.max( 1, n ) )
THEN 232 ELSE IF( ldb.LT.max( 1, n ) )
THEN 237 lwkmin = max( 1, 3*n - 1 )
238 nb = ilaenv( 1,
'SSYTRD', uplo, n, -1, -1, -1 )
239 lwkopt = max( lwkmin, ( nb + 2 )*n )
242 IF( lwork.LT.lwkmin .AND. .NOT.lquery )
THEN 248 CALL xerbla(
'SSYGV ', -info )
250 ELSE IF( lquery )
THEN 261 CALL spotrf( uplo, n, b, ldb, info )
269 CALL ssygst( itype, uplo, n, a, lda, b, ldb, info )
270 CALL ssyev( jobz, uplo, n, a, lda, w, work, lwork, info )
279 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN 290 CALL strsm(
'Left', uplo, trans,
'Non-unit', n, neig, one,
293 ELSE IF( itype.EQ.3 )
THEN 304 CALL strmm(
'Left', uplo, trans,
'Non-unit', n, neig, one,
subroutine ssygv(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, INFO)
SSYGV
subroutine strsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRSM
subroutine spotrf(UPLO, N, A, LDA, INFO)
SPOTRF
subroutine strmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRMM
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ssygst(ITYPE, UPLO, N, A, LDA, B, LDB, INFO)
SSYGST
subroutine ssyev(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO)
SSYEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices ...