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,
LOGICAL function lsame(CA, CB)
LSAME
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
subroutine strmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRMM
INTEGER function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)
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 ...
subroutine strsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRSM
subroutine spotrf(UPLO, N, A, LDA, INFO)
SPOTRF