146 SUBROUTINE ssbev( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK,
156 INTEGER INFO, KD, LDAB, LDZ, N
159 REAL AB( ldab, * ), W( * ), WORK( * ), Z( ldz, * )
166 parameter( zero = 0.0e0, one = 1.0e0 )
170 INTEGER IINFO, IMAX, INDE, INDWRK, ISCALE
171 REAL ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, SIGMA,
177 EXTERNAL lsame, slamch, slansb
189 wantz = lsame( jobz,
'V' )
190 lower = lsame( uplo,
'L' )
193 IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN 195 ELSE IF( .NOT.( lower .OR. lsame( uplo,
'U' ) ) )
THEN 197 ELSE IF( n.LT.0 )
THEN 199 ELSE IF( kd.LT.0 )
THEN 201 ELSE IF( ldab.LT.kd+1 )
THEN 203 ELSE IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN 208 CALL xerbla(
'SSBEV ', -info )
221 w( 1 ) = ab( kd+1, 1 )
230 safmin = slamch(
'Safe minimum' )
231 eps = slamch(
'Precision' )
232 smlnum = safmin / eps
233 bignum = one / smlnum
234 rmin = sqrt( smlnum )
235 rmax = sqrt( bignum )
239 anrm = slansb(
'M', uplo, n, kd, ab, ldab, work )
241 IF( anrm.GT.zero .AND. anrm.LT.rmin )
THEN 244 ELSE IF( anrm.GT.rmax )
THEN 248 IF( iscale.EQ.1 )
THEN 250 CALL slascl(
'B', kd, kd, one, sigma, n, n, ab, ldab, info )
252 CALL slascl(
'Q', kd, kd, one, sigma, n, n, ab, ldab, info )
260 CALL ssbtrd( jobz, uplo, n, kd, ab, ldab, w, work( inde ), z, ldz,
261 $ work( indwrk ), iinfo )
265 IF( .NOT.wantz )
THEN 266 CALL ssterf( n, w, work( inde ), info )
268 CALL ssteqr( jobz, n, w, work( inde ), z, ldz, work( indwrk ),
274 IF( iscale.EQ.1 )
THEN 280 CALL sscal( imax, one / sigma, w, 1 )
subroutine ssbev(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, INFO)
SSBEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...
subroutine ssteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
SSTEQR
subroutine ssbtrd(VECT, UPLO, N, KD, AB, LDAB, D, E, Q, LDQ, WORK, INFO)
SSBTRD
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine slascl(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO)
SLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom.
subroutine sscal(N, SA, SX, INCX)
SSCAL
subroutine ssterf(N, D, E, INFO)
SSTERF