144 SUBROUTINE ssbev( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK,
153 INTEGER INFO, KD, LDAB, LDZ, N
156 REAL AB( LDAB, * ), W( * ), WORK( * ), Z( LDZ, * )
163 parameter( zero = 0.0e0, one = 1.0e0 )
167 INTEGER IINFO, IMAX, INDE, INDWRK, ISCALE
168 REAL ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, SIGMA,
174 EXTERNAL lsame, slamch, slansb
186 wantz = lsame( jobz,
'V' )
187 lower = lsame( uplo,
'L' )
190 IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN
192 ELSE IF( .NOT.( lower .OR. lsame( uplo,
'U' ) ) )
THEN
194 ELSE IF( n.LT.0 )
THEN
196 ELSE IF( kd.LT.0 )
THEN
198 ELSE IF( ldab.LT.kd+1 )
THEN
200 ELSE IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN
205 CALL xerbla(
'SSBEV ', -info )
218 w( 1 ) = ab( kd+1, 1 )
227 safmin = slamch(
'Safe minimum' )
228 eps = slamch(
'Precision' )
229 smlnum = safmin / eps
230 bignum = one / smlnum
231 rmin = sqrt( smlnum )
232 rmax = sqrt( bignum )
236 anrm = slansb(
'M', uplo, n, kd, ab, ldab, work )
238 IF( anrm.GT.zero .AND. anrm.LT.rmin )
THEN
241 ELSE IF( anrm.GT.rmax )
THEN
245 IF( iscale.EQ.1 )
THEN
247 CALL slascl(
'B', kd, kd, one, sigma, n, n, ab, ldab, info )
249 CALL slascl(
'Q', kd, kd, one, sigma, n, n, ab, ldab, info )
257 CALL ssbtrd( jobz, uplo, n, kd, ab, ldab, w, work( inde ), z, ldz,
258 $ work( indwrk ), iinfo )
262 IF( .NOT.wantz )
THEN
263 CALL ssterf( n, w, work( inde ), info )
265 CALL ssteqr( jobz, n, w, work( inde ), z, ldz, work( indwrk ),
271 IF( iscale.EQ.1 )
THEN
277 CALL sscal( imax, one / sigma, w, 1 )
subroutine xerbla(srname, info)
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 matrices
subroutine ssbtrd(vect, uplo, n, kd, ab, ldab, d, e, q, ldq, work, info)
SSBTRD
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 ssteqr(compz, n, d, e, z, ldz, work, info)
SSTEQR
subroutine ssterf(n, d, e, info)
SSTERF