122 SUBROUTINE dorgtr( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO )
130 INTEGER INFO, LDA, LWORK, N
133 DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
139 DOUBLE PRECISION ZERO, ONE
140 parameter( zero = 0.0d+0, one = 1.0d+0 )
143 LOGICAL LQUERY, UPPER
144 INTEGER I, IINFO, J, LWKOPT, NB
149 EXTERNAL lsame, ilaenv
162 lquery = ( lwork.EQ.-1 )
163 upper = lsame( uplo,
'U' )
164 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
166 ELSE IF( n.LT.0 )
THEN
168 ELSE IF( lda.LT.max( 1, n ) )
THEN
170 ELSE IF( lwork.LT.max( 1, n-1 ) .AND. .NOT.lquery )
THEN
176 nb = ilaenv( 1,
'DORGQL',
' ', n-1, n-1, n-1, -1 )
178 nb = ilaenv( 1,
'DORGQR',
' ', n-1, n-1, n-1, -1 )
180 lwkopt = max( 1, n-1 )*nb
185 CALL xerbla(
'DORGTR', -info )
187 ELSE IF( lquery )
THEN
208 a( i, j ) = a( i, j+1 )
219 CALL dorgql( n-1, n-1, n-1, a, lda, tau, work, lwork, iinfo )
232 a( i, j ) = a( i, j-1 )
243 CALL dorgqr( n-1, n-1, n-1, a( 2, 2 ), lda, tau, work,
subroutine xerbla(srname, info)
subroutine dorgql(m, n, k, a, lda, tau, work, lwork, info)
DORGQL
subroutine dorgqr(m, n, k, a, lda, tau, work, lwork, info)
DORGQR
subroutine dorgtr(uplo, n, a, lda, tau, work, lwork, info)
DORGTR