173 SUBROUTINE zungtsqr( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
182 INTEGER INFO, LDA, LDT, LWORK, M, N, MB, NB
185 COMPLEX*16 A( , * ), T( LDT, * ), WORK( * )
191 COMPLEX*16 CONE, CZERO
192 parameter( cone = ( 1.0d+0, 0.0d+0 ),
193 $ czero = ( 0.0d+0, 0.0d+0 ) )
197 INTEGER IINFO, LDC, LWORKOPT, LC, LW, NBLOCAL,
203 INTRINSIC dcmplx,
max,
min
213 ELSE IF( n.LT.0 .OR. m.LT.n )
THEN
215 ELSE IF( mb.LE.n )
THEN
217 ELSE IF( nb.LT.1 )
THEN
219 ELSE IF( lda.LT.
max( 1, m ) )
THEN
221 ELSE IF( ldt.LT.
max( 1,
min( nb, n ) ) )
THEN
229 IF( lwork.LT.2 .AND. (.NOT.lquery) )
THEN
235 nblocal =
min( nb, n )
247 IF( ( lwork.LT.
max( 1, lworkopt ) ).AND.(.NOT.lquery) )
THEN
257 CALL xerbla(
'ZUNGTSQR', -info )
259 ELSE IF ( lquery )
THEN
260 work( 1 ) = dcmplx( lworkopt )
266 IF(
min( m, n ).EQ.0 )
THEN
267 work( 1 ) = dcmplx( lworkopt )
282 CALL zlaset(
'F', m, n, czero, cone, work, ldc )
289 CALL zlamtsqr(
'L',
'N', m, n, n, mb, nblocal, a, lda, t, ldt,
290 $ work, ldc, work( lc+1 ), lw, iinfo )
297 CALL zcopy( m, work( (j-1)*ldc + 1 ), 1, a( 1, j ), 1 )
300 work( 1 ) = dcmplx( lworkopt )
subroutine zlaset(uplo, m, n, alpha, beta, a, lda)
ZLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine zungtsqr(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
ZUNGTSQR
subroutine zlamtsqr(side, trans, m, n, k, mb, nb, a, lda, t, ldt, c, ldc, work, lwork, info)
ZLAMTSQR