210 SUBROUTINE dspgvd( ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK,
211 $ LWORK, IWORK, LIWORK, INFO )
220 INTEGER INFO, ITYPE, LDZ, LIWORK, LWORK, N
224 DOUBLE PRECISION AP( * ), BP( * ), W( * ), WORK( * ),
231 LOGICAL LQUERY, UPPER, WANTZ
233 INTEGER J, LIWMIN, LWMIN, NEIG
249 wantz = lsame( jobz,
'V' )
250 upper = lsame( uplo,
'U' )
251 lquery = ( lwork.EQ.-1 .OR. liwork.EQ.-1 )
254 IF( itype.LT.1 .OR. itype.GT.3 )
THEN 256 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN 258 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN 260 ELSE IF( n.LT.0 )
THEN 262 ELSE IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN 273 lwmin = 1 + 6*n + 2*n**2
281 IF( lwork.LT.lwmin .AND. .NOT.lquery )
THEN 283 ELSE IF( liwork.LT.liwmin .AND. .NOT.lquery )
THEN 289 CALL xerbla(
'DSPGVD', -info )
291 ELSE IF( lquery )
THEN 302 CALL dpptrf( uplo, n, bp, info )
310 CALL dspgst( itype, uplo, n, ap, bp, info )
311 CALL dspevd( jobz, uplo, n, ap, w, z, ldz, work, lwork, iwork,
313 lwmin = max( dble( lwmin ), dble( work( 1 ) ) )
314 liwmin = max( dble( liwmin ), dble( iwork( 1 ) ) )
323 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN 335 CALL dtpsv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
339 ELSE IF( itype.EQ.3 )
THEN 351 CALL dtpmv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
subroutine dpptrf(UPLO, N, AP, INFO)
DPPTRF
subroutine dspgst(ITYPE, UPLO, N, AP, BP, INFO)
DSPGST
subroutine dtpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPSV
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dspevd(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO)
DSPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...
subroutine dspgvd(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO)
DSPGVD
subroutine dtpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPMV