1 SUBROUTINE dorgtr( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO )
10 INTEGER INFO, LDA, LWORK, N
13 DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
71 DOUBLE PRECISION ZERO, ONE
72 parameter( zero = 0.0d+0, one = 1.0d+0 )
76 INTEGER I, IINFO, J, LWKOPT, NB
81 EXTERNAL lsame, ilaenv
94 lquery = ( lwork.EQ.-1 )
95 upper = lsame( uplo,
'U' )
96 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
98 ELSE IF( n.LT.0 )
THEN
100 ELSE IF( lda.LT.max( 1, n ) )
THEN
102 ELSE IF( lwork.LT.max( 1, n-1 ) .AND. .NOT.lquery )
THEN
108 nb = ilaenv( 1,
'DORGQL',
' ', n-1, n-1, n-1, -1 )
110 nb = ilaenv( 1,
'DORGQR',
' ', n-1, n-1, n-1, -1 )
112 lwkopt = max( 1, n-1 )*nb
117 CALL xerbla(
'DORGTR', -info )
119 ELSE IF( lquery )
THEN
140 a( i, j ) = a( i, j+1 )
151 CALL dorgql( n-1, n-1, n-1, a, lda, tau, work, lwork, iinfo )
164 a( i, j ) = a( i, j-1 )
175 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)
subroutine dorgqr(M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
subroutine dorgtr(UPLO, N, A, LDA, TAU, WORK, LWORK, INFO)
subroutine xerbla(SRNAME, INFO)