129 SUBROUTINE sspev( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, INFO )
140 REAL AP( * ), W( * ), WORK( * ), Z( ldz, * )
147 parameter( zero = 0.0e0, one = 1.0e0 )
151 INTEGER IINFO, IMAX, INDE, INDTAU, INDWRK, ISCALE
152 REAL ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, SIGMA,
158 EXTERNAL lsame, slamch, slansp
170 wantz = lsame( jobz,
'V' )
173 IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN 175 ELSE IF( .NOT.( lsame( uplo,
'U' ) .OR. lsame( uplo,
'L' ) ) )
178 ELSE IF( n.LT.0 )
THEN 180 ELSE IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN 185 CALL xerbla(
'SSPEV ', -info )
203 safmin = slamch(
'Safe minimum' )
204 eps = slamch(
'Precision' )
205 smlnum = safmin / eps
206 bignum = one / smlnum
207 rmin = sqrt( smlnum )
208 rmax = sqrt( bignum )
212 anrm = slansp(
'M', uplo, n, ap, work )
214 IF( anrm.GT.zero .AND. anrm.LT.rmin )
THEN 217 ELSE IF( anrm.GT.rmax )
THEN 221 IF( iscale.EQ.1 )
THEN 222 CALL sscal( ( n*( n+1 ) ) / 2, sigma, ap, 1 )
229 CALL ssptrd( uplo, n, ap, w, work( inde ), work( indtau ), iinfo )
234 IF( .NOT.wantz )
THEN 235 CALL ssterf( n, w, work( inde ), info )
238 CALL sopgtr( uplo, n, ap, work( indtau ), z, ldz,
239 $ work( indwrk ), iinfo )
240 CALL ssteqr( jobz, n, w, work( inde ), z, ldz, work( indtau ),
246 IF( iscale.EQ.1 )
THEN 252 CALL sscal( imax, one / sigma, w, 1 )
subroutine ssptrd(UPLO, N, AP, D, E, TAU, INFO)
SSPTRD
subroutine ssteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
SSTEQR
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ssterf(N, D, E, INFO)
SSTERF
subroutine sscal(N, SA, SX, INCX)
SSCAL
subroutine sopgtr(UPLO, N, AP, TAU, Q, LDQ, WORK, INFO)
SOPGTR
subroutine sspev(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, INFO)
SSPEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...