173 SUBROUTINE ssygv( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK,
182 INTEGER INFO, ITYPE, LDA, LDB, LWORK, N
185 REAL A( LDA, * ), B( LDB, * ), W( * ), WORK( * )
192 parameter( one = 1.0e+0 )
195 LOGICAL LQUERY, UPPER, WANTZ
197 INTEGER , LWKOPT, NB, NEIG
202 EXTERNAL ilaenv, lsame
214 wantz = lsame( jobz, 'v
' )
215 UPPER = LSAME( UPLO, 'u
' )
216.EQ.
LQUERY = ( LWORK-1 )
219.LT..OR..GT.
IF( ITYPE1 ITYPE3 ) THEN
221.NOT..OR.
ELSE IF( ( WANTZ LSAME( JOBZ, 'n
' ) ) ) THEN
223.NOT..OR.
ELSE IF( ( UPPER LSAME( UPLO, 'l
' ) ) ) THEN
225.LT.
ELSE IF( N0 ) THEN
227.LT.
ELSE IF( LDAMAX( 1, N ) ) THEN
229.LT.
ELSE IF( LDBMAX( 1, N ) ) THEN
234 LWKMIN = MAX( 1, 3*N - 1 )
235 NB = ILAENV( 1, 'ssytrd', UPLO, N, -1, -1, -1 )
236 LWKOPT = MAX( LWKMIN, ( NB + 2 )*N )
239.LT..AND..NOT.
IF( LWORKLWKMIN LQUERY ) THEN
245 CALL XERBLA( 'ssygv ', -INFO )
247 ELSE IF( LQUERY ) THEN
258 CALL SPOTRF( UPLO, N, B, LDB, INFO )
266 CALL SSYGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
267 CALL SSYEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO )
276.EQ..OR..EQ.
IF( ITYPE1 ITYPE2 ) THEN
287 CALL STRSM( 'left
', UPLO, TRANS, 'non-unit
', N, NEIG, ONE,
290.EQ.
ELSE IF( ITYPE3 ) THEN
301 CALL STRMM( 'left
', UPLO, TRANS, 'non-unit
', N, NEIG, ONE,
subroutine xerbla(srname, info)
XERBLA
subroutine spotrf(uplo, n, a, lda, info)
SPOTRF
subroutine ssygst(itype, uplo, n, a, lda, b, ldb, info)
SSYGST
subroutine ssytrd(uplo, n, a, lda, d, e, tau, work, lwork, info)
SSYTRD
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
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 strmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
STRMM