208 SUBROUTINE dspgvd( ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK,
209 $ LWORK, IWORK, LIWORK, INFO )
217 INTEGER INFO, ITYPE, LDZ, LIWORK, LWORK, N
221 DOUBLE PRECISION AP( * ), BP( * ), W( * ), WORK( * ),
228 LOGICAL LQUERY, UPPER, WANTZ
230 INTEGER J, LIWMIN, LWMIN,
246 wantz = lsame( jobz,
'V' )
247 upper = lsame( uplo, 'u
' )
248.EQ..OR..EQ.
LQUERY = ( LWORK-1 LIWORK-1 )
251.LT..OR..GT.
IF( ITYPE1 ITYPE3 ) THEN
253.NOT..OR.
ELSE IF( ( WANTZ LSAME( JOBZ, 'n
' ) ) ) THEN
255.NOT..OR.
ELSE IF( ( UPPER LSAME( UPLO, 'l
' ) ) ) THEN
257.LT.
ELSE IF( N0 ) THEN
259.LT..OR..AND..LT.
ELSE IF( LDZ1 ( WANTZ LDZN ) ) THEN
270 LWMIN = 1 + 6*N + 2*N**2
278.LT..AND..NOT.
IF( LWORKLWMIN LQUERY ) THEN
280.LT..AND..NOT.
ELSE IF( LIWORKLIWMIN LQUERY ) THEN
286 CALL XERBLA( 'dspgvd', -INFO )
288 ELSE IF( LQUERY ) THEN
299 CALL DPPTRF( UPLO, N, BP, INFO )
307 CALL DSPGST( ITYPE, UPLO, N, AP, BP, INFO )
308 CALL DSPEVD( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, IWORK,
310 LWMIN = MAX( DBLE( LWMIN ), DBLE( WORK( 1 ) ) )
311 LIWMIN = MAX( DBLE( LIWMIN ), DBLE( IWORK( 1 ) ) )
320.EQ..OR..EQ.
IF( ITYPE1 ITYPE2 ) THEN
332 CALL DTPSV( UPLO, TRANS, 'non-unit
', N, BP, Z( 1, J ),
336.EQ.
ELSE IF( ITYPE3 ) THEN
348 CALL DTPMV( UPLO, TRANS, 'non-unit
', N, BP, Z( 1, J ),
subroutine xerbla(srname, info)
XERBLA
subroutine dspgst(itype, uplo, n, ap, bp, info)
DSPGST
subroutine dpptrf(uplo, n, ap, info)
DPPTRF
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 dtpsv(uplo, trans, diag, n, ap, x, incx)
DTPSV
subroutine dtpmv(uplo, trans, diag, n, ap, x, incx)
DTPMV