223 $ HOUS2, LHOUS2, WORK, LWORK, INFO )
233 INTEGER N, LDA, LWORK, LHOUS2, INFO
236 DOUBLE PRECISION D( * ), E( * )
237 DOUBLE PRECISION A( LDA, * ), TAU( * ),
238 $ hous2( * ), work( * )
244 LOGICAL LQUERY, UPPER, WANTQ
245 INTEGER KD, IB, LWMIN, LHMIN, LWRK, LDAB, WPOS, ABPOS
253 EXTERNAL lsame, ilaenv2stage
260 wantq = lsame( vect,
'V' )
261 upper = lsame( uplo,
'U' )
262 lquery = ( lwork.EQ.-1 ) .OR. ( lhous2.EQ.-1 )
266 kd = ilaenv2stage( 1,
'DSYTRD_2STAGE', vect, n, -1, -1, -1 )
267 ib = ilaenv2stage( 2,
'DSYTRD_2STAGE', vect, n, kd, -1, -1 )
268 lhmin = ilaenv2stage( 3,
'DSYTRD_2STAGE', vect, n, kd, ib, -1 )
269 lwmin = ilaenv2stage( 4,
'DSYTRD_2STAGE', vect, n, kd, ib, -1 )
273 IF( .NOT.lsame( vect,
'N' ) )
THEN
275 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
277 ELSE IF( n.LT.0 )
THEN
279 ELSE IF( lda.LT.max( 1, n ) )
THEN
281 ELSE IF( lhous2.LT.lhmin .AND. .NOT.lquery )
THEN
283 ELSE IF( lwork.LT.lwmin .AND. .NOT.lquery )
THEN
293 CALL xerbla(
'DSYTRD_2STAGE', -info )
295 ELSE IF( lquery )
THEN
311 wpos = abpos + ldab*n
312 CALL dsytrd_sy2sb( uplo, n, kd, a, lda, work( abpos ), ldab,
313 $ tau, work( wpos ), lwrk, info )
315 CALL xerbla(
'DSYTRD_SY2SB', -info )
319 $ work( abpos ), ldab, d, e,
320 $ hous2, lhous2, work( wpos ), lwrk, info )
322 CALL xerbla(
'DSYTRD_SB2ST', -info )
subroutine xerbla(srname, info)
subroutine dsytrd_2stage(vect, uplo, n, a, lda, d, e, tau, hous2, lhous2, work, lwork, info)
DSYTRD_2STAGE
subroutine dsytrd_sb2st(stage1, vect, uplo, n, kd, ab, ldab, d, e, hous, lhous, work, lwork, info)
DSYTRD_SB2ST reduces a real symmetric band matrix A to real symmetric tridiagonal form T
subroutine dsytrd_sy2sb(uplo, n, kd, a, lda, ab, ldab, tau, work, lwork, info)
DSYTRD_SY2SB