226 $ HOUS2, LHOUS2, WORK, LWORK, INFO )
236 INTEGER N, LDA, LWORK, LHOUS2, INFO
240 COMPLEX A( LDA, * ), TAU( * ),
241 $ hous2( * ), work( * )
247 LOGICAL LQUERY, UPPER, WANTQ
248 INTEGER KD, IB, LWMIN, LHMIN, LWRK, LDAB, WPOS, ABPOS
257 EXTERNAL lsame, ilaenv2stage, sroundup_lwork
264 wantq = lsame( vect,
'V' )
265 upper = lsame( uplo,
'U' )
266 lquery = ( lwork.EQ.-1 ) .OR. ( lhous2.EQ.-1 )
270 kd = ilaenv2stage( 1,
'CHETRD_2STAGE', vect, n, -1, -1,
272 ib = ilaenv2stage( 2,
'CHETRD_2STAGE', vect, n, kd, -1,
278 lhmin = ilaenv2stage( 3,
'CHETRD_2STAGE', vect, n, kd,
280 lwmin = ilaenv2stage( 4,
'CHETRD_2STAGE', vect, n, kd,
284 IF( .NOT.lsame( vect,
'N' ) )
THEN
286 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
288 ELSE IF( n.LT.0 )
THEN
290 ELSE IF( lda.LT.max( 1, n ) )
THEN
292 ELSE IF( lhous2.LT.lhmin .AND. .NOT.lquery )
THEN
294 ELSE IF( lwork.LT.lwmin .AND. .NOT.lquery )
THEN
299 hous2( 1 ) = sroundup_lwork( lhmin )
300 work( 1 ) = sroundup_lwork( lwmin )
304 CALL xerbla(
'CHETRD_2STAGE', -info )
306 ELSE IF( lquery )
THEN
322 wpos = abpos + ldab*n
323 CALL chetrd_he2hb( uplo, n, kd, a, lda, work( abpos ), ldab,
324 $ tau, work( wpos ), lwrk, info )
326 CALL xerbla(
'CHETRD_HE2HB', -info )
330 $ work( abpos ), ldab, d, e,
331 $ hous2, lhous2, work( wpos ), lwrk, info )
333 CALL xerbla(
'CHETRD_HB2ST', -info )
338 work( 1 ) = sroundup_lwork( lwmin )
subroutine chetrd_2stage(vect, uplo, n, a, lda, d, e, tau, hous2, lhous2, work, lwork, info)
CHETRD_2STAGE
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 chetrd_he2hb(uplo, n, kd, a, lda, ab, ldab, tau, work, lwork, info)
CHETRD_HE2HB