208 SUBROUTINE sspgvd( ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK,
209 $ LWORK, IWORK, LIWORK, INFO )
217 INTEGER INFO, ITYPE, LDZ, LIWORK, LWORK, N
221 REAL AP( * ), BP( * ), W( * ), WORK( * ),
228 LOGICAL LQUERY, UPPER, WANTZ
230 INTEGER J, LIWMIN, LWMIN, NEIG
246 wantz = lsame( jobz,
'V' )
247 upper = lsame( uplo,
'U' )
248 lquery = ( lwork.EQ.-1 .OR. liwork.EQ.-1 )
251 IF( itype.LT.1 .OR. itype.GT.3 )
THEN 253 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN 255 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN 257 ELSE IF( n.LT.0 )
THEN 259 ELSE IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN 270 lwmin = 1 + 6*n + 2*n**2
278 IF( lwork.LT.lwmin .AND. .NOT.lquery )
THEN 280 ELSE IF( liwork.LT.liwmin .AND. .NOT.lquery )
THEN 286 CALL xerbla(
'SSPGVD', -info )
288 ELSE IF( lquery )
THEN 299 CALL spptrf( uplo, n, bp, info )
307 CALL sspgst( itype, uplo, n, ap, bp, info )
308 CALL sspevd( jobz, uplo, n, ap, w, z, ldz, work, lwork, iwork,
310 lwmin = int( max(
REAL( LWMIN ),
REAL( WORK( 1 ) ) ) )
311 liwmin = int( max(
REAL( LIWMIN ),
REAL( IWORK( 1 ) ) ) )
320 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN 332 CALL stpsv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
336 ELSE IF( itype.EQ.3 )
THEN 348 CALL stpmv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
subroutine stpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
STPMV
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine stpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
STPSV
subroutine sspgvd(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO)
SSPGVD
subroutine sspevd(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO)
SSPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...
subroutine spptrf(UPLO, N, AP, INFO)
SPPTRF
subroutine sspgst(ITYPE, UPLO, N, AP, BP, INFO)
SSPGST