158 SUBROUTINE zungbr( VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
167 INTEGER INFO, K, LDA, LWORK, M, N
170 COMPLEX*16 A( lda, * ), TAU( * ), WORK( * )
177 parameter ( zero = ( 0.0d+0, 0.0d+0 ),
178 $ one = ( 1.0d+0, 0.0d+0 ) )
181 LOGICAL LQUERY, WANTQ
182 INTEGER I, IINFO, J, LWKOPT, MN
187 EXTERNAL lsame, ilaenv
200 wantq = lsame( vect,
'Q' )
202 lquery = ( lwork.EQ.-1 )
203 IF( .NOT.wantq .AND. .NOT.lsame( vect,
'P' ) )
THEN
205 ELSE IF( m.LT.0 )
THEN
207 ELSE IF( n.LT.0 .OR. ( wantq .AND. ( n.GT.m .OR. n.LT.min( m,
208 $ k ) ) ) .OR. ( .NOT.wantq .AND. ( m.GT.n .OR. m.LT.
209 $ min( n, k ) ) ) )
THEN
211 ELSE IF( k.LT.0 )
THEN
213 ELSE IF( lda.LT.max( 1, m ) )
THEN
215 ELSE IF( lwork.LT.max( 1, mn ) .AND. .NOT.lquery )
THEN
223 CALL zungqr( m, n, k, a, lda, tau, work, -1, iinfo )
226 CALL zungqr( m-1, m-1, m-1, a( 2, 2 ), lda, tau, work,
232 CALL zunglq( m, n, k, a, lda, tau, work, -1, iinfo )
235 CALL zunglq( n-1, n-1, n-1, a( 2, 2 ), lda, tau, work,
241 lwkopt = max(lwkopt, mn)
245 CALL xerbla(
'ZUNGBR', -info )
247 ELSE IF( lquery )
THEN
254 IF( m.EQ.0 .OR. n.EQ.0 )
THEN
268 CALL zungqr( m, n, k, a, lda, tau, work, lwork, iinfo )
281 a( i, j ) = a( i, j-1 )
292 CALL zungqr( m-1, m-1, m-1, a( 2, 2 ), lda, tau, work,
305 CALL zunglq( m, n, k, a, lda, tau, work, lwork, iinfo )
320 DO 50 i = j - 1, 2, -1
321 a( i, j ) = a( i-1, j )
329 CALL zunglq( n-1, n-1, n-1, a( 2, 2 ), lda, tau, work,
subroutine zunglq(M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
ZUNGLQ
subroutine zungbr(VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
ZUNGBR
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zungqr(M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
ZUNGQR