120 SUBROUTINE dorgtr( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO )
128 INTEGER INFO, LDA, LWORK, N
131 DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
137 DOUBLE PRECISION ZERO, ONE
138 parameter( zero = 0.0d+0, one = 1.0d+0 )
141 LOGICAL LQUERY, UPPER
142 INTEGER I, IINFO, J, LWKOPT, NB
147 EXTERNAL lsame, ilaenv
160 lquery = ( lwork.EQ.-1 )
161 upper = lsame( uplo,
'U' )
162 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
164 ELSE IF( n.LT.0 )
THEN
166 ELSE IF( lda.LT.max( 1, n ) )
THEN
168 ELSE IF( lwork.LT.max( 1, n-1 ) .AND. .NOT.lquery )
THEN
174 nb = ilaenv( 1,
'DORGQL',
' ', n-1, n-1, n-1, -1 )
176 nb = ilaenv( 1,
'DORGQR',
' ', n-1, n-1, n-1, -1 )
178 lwkopt = max( 1, n-1 )*nb
183 CALL xerbla(
'DORGTR', -info )
185 ELSE IF( lquery )
THEN
206 a( i, j ) = a( i, j+1 )
217 CALL dorgql( n-1, n-1, n-1, a, lda, tau, work, lwork,
231 a( i, j ) = a( i, j-1 )
242 CALL dorgqr( n-1, n-1, n-1, a( 2, 2 ), lda, tau, work,
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