200 SUBROUTINE dspgvd( ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ,
202 $ LWORK, IWORK, LIWORK, INFO )
210 INTEGER INFO, ITYPE, LDZ, LIWORK, LWORK, N
214 DOUBLE PRECISION AP( * ), BP( * ), W( * ), WORK( * ),
221 LOGICAL LQUERY, UPPER, WANTZ
223 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 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 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
subroutine dtpsv(uplo, trans, diag, n, ap, x, incx)
DTPSV