226 $ hous2, lhous2, work, lwork, info )
237 INTEGER N, LDA, LWORK, LHOUS2, INFO
240 DOUBLE PRECISION D( * ), E( * )
241 COMPLEX*16 A( lda, * ), TAU( * ),
242 $ hous2( * ), work( * )
248 LOGICAL LQUERY, UPPER, WANTQ
249 INTEGER KD, IB, LWMIN, LHMIN, LWRK, LDAB, WPOS, ABPOS
257 EXTERNAL lsame, ilaenv
264 wantq = lsame( vect,
'V' )
265 upper = lsame( uplo,
'U' )
266 lquery = ( lwork.EQ.-1 ) .OR. ( lhous2.EQ.-1 )
270 kd = ilaenv( 17,
'ZHETRD_2STAGE', vect, n, -1, -1, -1 )
271 ib = ilaenv( 18,
'ZHETRD_2STAGE', vect, n, kd, -1, -1 )
272 lhmin = ilaenv( 19,
'ZHETRD_2STAGE', vect, n, kd, ib, -1 )
273 lwmin = ilaenv( 20,
'ZHETRD_2STAGE', vect, n, kd, ib, -1 )
277 IF( .NOT.lsame( vect,
'N' ) )
THEN
279 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
281 ELSE IF( n.LT.0 )
THEN
283 ELSE IF( lda.LT.max( 1, n ) )
THEN
285 ELSE IF( lhous2.LT.lhmin .AND. .NOT.lquery )
THEN
287 ELSE IF( lwork.LT.lwmin .AND. .NOT.lquery )
THEN
297 CALL xerbla(
'ZHETRD_2STAGE', -info )
299 ELSE IF( lquery )
THEN
315 wpos = abpos + ldab*n
316 CALL zhetrd_he2hb( uplo, n, kd, a, lda, work( abpos ), ldab,
317 $ tau, work( wpos ), lwrk, info )
319 CALL xerbla(
'ZHETRD_HE2HB', -info )
322 CALL zhetrd_hb2st(
'Y', vect, uplo, n, kd,
323 $ work( abpos ), ldab, d, e,
324 $ hous2, lhous2, work( wpos ), lwrk, info )
326 CALL xerbla(
'ZHETRD_HB2ST', -info )
subroutine zhetrd_2stage(VECT, UPLO, N, A, LDA, D, E, TAU, HOUS2, LHOUS2, WORK, LWORK, INFO)
ZHETRD_2STAGE
subroutine zhetrd_he2hb(UPLO, N, KD, A, LDA, AB, LDAB, TAU, WORK, LWORK, INFO)
ZHETRD_HE2HB
subroutine xerbla(SRNAME, INFO)
XERBLA