210 $ WORK, LWORK, RWORK, INFO )
220 INTEGER INFO, KD, LDAB, LDZ, N, LWORK
223 REAL RWORK( * ), W( * )
224 COMPLEX AB( LDAB, * ), WORK( * ), Z( LDZ, * )
231 parameter( zero = 0.0e0, one = 1.0e0 )
234 LOGICAL LOWER, , LQUERY
235 INTEGER IINFO, IMAX, INDE, INDWRK, INDRWK, ISCALE,
236 $ llwork, lwmin, lhtrd, lwtrd, ib, indhous
237 REAL ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, SIGMA,
244 EXTERNAL lsame, slamch, clanhb, ilaenv2stage
257 wantz = lsame( jobz,
'V' )
258 lower = lsame( uplo,
'L' )
259 lquery = ( lwork.EQ.-1 )
262 IF( .NOT.( lsame( jobz,
'N' ) ) )
THEN
264 ELSE IF( .NOT.( lower .OR. lsame( uplo,
'U' ) ) )
THEN
266 ELSE IF( n.LT.0 )
THEN
268 ELSE IF( kd.LT.0 )
THEN
270 ELSE IF( ldab.LT.kd+1 )
THEN
272 ELSE IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN
287 LWMIN = LHTRD + LWTRD
291.LT..AND..NOT.
IF( LWORKLWMIN LQUERY )
298 ELSE IF( LQUERY ) THEN
309 W( 1 ) = REAL( AB( 1, 1 ) )
311 W( 1 ) = REAL( AB( KD+1, 1 ) )
320 SAFMIN = SLAMCH( 'safe minimum
' )
321 EPS = SLAMCH( 'precision
' )
322 SMLNUM = SAFMIN / EPS
323 BIGNUM = ONE / SMLNUM
324 RMIN = SQRT( SMLNUM )
325 RMAX = SQRT( BIGNUM )
329 ANRM = CLANHB( 'm
', UPLO, N, KD, AB, LDAB, RWORK )
331.GT..AND..LT.
IF( ANRMZERO ANRMRMIN ) THEN
334.GT.
ELSE IF( ANRMRMAX ) THEN
338.EQ.
IF( ISCALE1 ) THEN
340 CALL CLASCL( 'b
', KD, KD, ONE, SIGMA, N, N, AB, LDAB, INFO )
342 CALL CLASCL( 'q
', KD, KD, ONE, SIGMA, N, N, AB, LDAB, INFO )
350 INDWRK = INDHOUS + LHTRD
351 LLWORK = LWORK - INDWRK + 1
353 CALL CHETRD_HB2ST( "N", JOBZ, UPLO, N, KD, AB, LDAB, W,
354 $ RWORK( INDE ), WORK( INDHOUS ), LHTRD,
355 $ WORK( INDWRK ), LLWORK, IINFO )
359.NOT.
IF( WANTZ ) THEN
360 CALL SSTERF( N, W, RWORK( INDE ), INFO )
363 CALL CSTEQR( JOBZ, N, W, RWORK( INDE ), Z, LDZ,
364 $ RWORK( INDRWK ), INFO )
369.EQ.
IF( ISCALE1 ) THEN
375 CALL SSCAL( IMAX, ONE / SIGMA, W, 1 )
subroutine ssterf(n, d, e, info)
SSTERF
subroutine xerbla(srname, info)
XERBLA
subroutine chetrd_2stage(vect, uplo, n, a, lda, d, e, tau, hous2, lhous2, work, lwork, info)
CHETRD_2STAGE
subroutine clascl(type, kl, ku, cfrom, cto, m, n, a, lda, info)
CLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom.
subroutine chetrd_hb2st(stage1, vect, uplo, n, kd, ab, ldab, d, e, hous, lhous, work, lwork, info)
CHETRD_HB2ST reduces a complex Hermitian band matrix A to real symmetric tridiagonal form T
subroutine csteqr(compz, n, d, e, z, ldz, work, info)
CSTEQR
subroutine chbev_2stage(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, lwork, rwork, info)
CHBEV_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER m...
subroutine sscal(n, sa, sx, incx)
SSCAL