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 dorgtr(UPLO, N, A, LDA, TAU, WORK, LWORK, INFO)
DORGTR
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dorgql(M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
DORGQL
subroutine dorgqr(M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
DORGQR