127 SUBROUTINE sspev( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, INFO )
138 REAL AP( * ), W( * ), WORK( * ), Z( LDZ, * )
145 parameter( zero = 0.0e0, one = 1.0e0 )
149 INTEGER IINFO, IMAX, INDE, INDTAU, INDWRK, ISCALE
150 REAL ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, SIGMA,
156 EXTERNAL lsame, slamch, slansp
169 wantz = lsame( jobz,
'V' )
172 IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN
174 ELSE IF( .NOT.( lsame( uplo,
'U' ) .OR.
175 $ 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 ),
235 IF( .NOT.wantz )
THEN
236 CALL ssterf( n, w, work( inde ), info )
239 CALL sopgtr( uplo, n, ap, work( indtau ), z, ldz,
240 $ work( indwrk ), iinfo )
241 CALL ssteqr( jobz, n, w, work( inde ), z, ldz,
248 IF( iscale.EQ.1 )
THEN
254 CALL sscal( imax, one / sigma, w, 1 )
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 matrices
subroutine ssptrd(uplo, n, ap, d, e, tau, info)
SSPTRD
subroutine ssteqr(compz, n, d, e, z, ldz, work, info)
SSTEQR
subroutine sopgtr(uplo, n, ap, tau, q, ldq, work, info)
SOPGTR