173 SUBROUTINE cungtsqr( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
182 INTEGER INFO, LDA, LDT, LWORK, M, N, MB, NB
185 COMPLEX A( LDA, * ), T( LDT, * ), WORK( * )
192 parameter( cone = ( 1.0e+0, 0.0e+0 ),
193 $ czero = ( 0.0e+0, 0.0e+0 ) )
197 INTEGER IINFO, LDC, LWORKOPT, LC, LW, NBLOCAL, J
203 INTRINSIC cmplx, 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(
'CUNGTSQR', -info )
259 ELSE IF ( lquery )
THEN
260 work( 1 ) = cmplx( lworkopt )
266 IF( min( m, n ).EQ.0 )
THEN
267 work( 1 ) = cmplx( lworkopt )
282 CALL claset(
'F', m, n, czero, cone, work, ldc )
289 CALL clamtsqr(
'L',
'N', m, n, n, mb, nblocal, a, lda, t, ldt,
290 $ work, ldc, work( lc+1 ), lw, iinfo )
297 CALL ccopy( m, work( (j-1)*ldc + 1 ), 1, a( 1, j ), 1 )
300 work( 1 ) = cmplx( lworkopt )
subroutine clamtsqr(SIDE, TRANS, M, N, K, MB, NB, A, LDA, T, LDT, C, LDC, WORK, LWORK, INFO)
CLAMTSQR
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ccopy(N, CX, INCX, CY, INCY)
CCOPY
subroutine claset(UPLO, M, N, ALPHA, BETA, A, LDA)
CLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine cungtsqr(M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK, INFO)
CUNGTSQR