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
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)
SSYGST
subroutine xerbla(SRNAME, INFO)
XERBLA
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real b(3) integer i
logical function lsame(CA, CB)
LSAME
subroutine strmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRMM
subroutine ssygst(ITYPE, UPLO, N, A, LDA, B, LDB, INFO)
SSYGST
integer function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)
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 strsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRSM
subroutine spotrf(UPLO, N, A, LDA, INFO)
SPOTRF