202 SUBROUTINE dspgvd( ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK,
203 $ LWORK, IWORK, LIWORK, INFO )
211 INTEGER INFO, ITYPE, LDZ, LIWORK, LWORK, N
215 DOUBLE PRECISION AP( * ), BP( * ), W( * ), WORK( * ),
222 LOGICAL LQUERY, UPPER, WANTZ
224 INTEGER J, LIWMIN, LWMIN, NEIG
240 wantz = lsame( jobz,
'V' )
241 upper = lsame( uplo,
'U' )
242 lquery = ( lwork.EQ.-1 .OR. liwork.EQ.-1 )
245 IF( itype.LT.1 .OR. itype.GT.3 )
THEN
247 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN
249 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN
251 ELSE IF( n.LT.0 )
THEN
253 ELSE IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN
264 lwmin = 1 + 6*n + 2*n**2
272 IF( lwork.LT.lwmin .AND. .NOT.lquery )
THEN
274 ELSE IF( liwork.LT.liwmin .AND. .NOT.lquery )
THEN
280 CALL xerbla(
'DSPGVD', -info )
282 ELSE IF( lquery )
THEN
293 CALL dpptrf( uplo, n, bp, info )
301 CALL dspgst( itype, uplo, n, ap, bp, info )
302 CALL dspevd( jobz, uplo, n, ap, w, z, ldz, work, lwork, iwork,
304 lwmin = int( max( dble( lwmin ), dble( work( 1 ) ) ) )
305 liwmin = int( max( dble( liwmin ), dble( iwork( 1 ) ) ) )
314 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN
326 CALL dtpsv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
330 ELSE IF( itype.EQ.3 )
THEN
342 CALL dtpmv( uplo, trans,
'Non-unit', n, bp, z( 1, j ),
subroutine xerbla(srname, info)
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 matrice...
subroutine dspgst(itype, uplo, n, ap, bp, info)
DSPGST
subroutine dspgvd(itype, jobz, uplo, n, ap, bp, w, z, ldz, work, lwork, iwork, liwork, info)
DSPGVD
subroutine dpptrf(uplo, n, ap, info)
DPPTRF
subroutine dtpmv(uplo, trans, diag, n, ap, x, incx)
DTPMV
subroutine dtpsv(uplo, trans, diag, n, ap, x, incx)
DTPSV