122 SUBROUTINE sorgtr( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO )
130 INTEGER INFO, LDA, LWORK, N
133 REAL A( lda, * ), TAU( * ), WORK( * )
140 parameter( zero = 0.0e+0, one = 1.0e+0 )
143 LOGICAL LQUERY, UPPER
144 INTEGER I, IINFO, J, LWKOPT, NB
149 EXTERNAL ilaenv, lsame
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,
'SORGQL',
' ', n-1, n-1, n-1, -1 )
178 nb = ilaenv( 1,
'SORGQR',
' ', n-1, n-1, n-1, -1 )
180 lwkopt = max( 1, n-1 )*nb
185 CALL xerbla(
'SORGTR', -info )
187 ELSE IF( lquery )
THEN 208 a( i, j ) = a( i, j+1 )
219 CALL sorgql( n-1, n-1, n-1, a, lda, tau, work, lwork, iinfo )
232 a( i, j ) = a( i, j-1 )
243 CALL sorgqr( n-1, n-1, n-1, a( 2, 2 ), lda, tau, work,
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine sorgqr(M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
SORGQR
subroutine sorgql(M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
SORGQL
subroutine sorgtr(UPLO, N, A, LDA, TAU, WORK, LWORK, INFO)
SORGTR