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 xerbla(SRNAME, INFO)
XERBLA
subroutine sspgst(ITYPE, UPLO, N, AP, BP, INFO)
SSPGST
subroutine spptrf(UPLO, N, AP, INFO)
SPPTRF
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 matrice...
subroutine sspgvd(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO)
SSPGVD
subroutine stpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
STPMV
subroutine stpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
STPSV