174 SUBROUTINE dorgtsqr( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
183 INTEGER INFO, LDA, LDT, LWORK, M, N, MB, NB
186 DOUBLE PRECISION A( LDA, * ), T( LDT, * ), WORK( * )
192 DOUBLE PRECISION ONE, ZERO
193 parameter( one = 1.0d+0, zero = 0.0d+0 )
197 INTEGER IINFO, LDC, LWORKOPT, LC, LW, NBLOCAL, J
203 INTRINSIC dble, 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(
'DORGTSQR', -info )
259 ELSE IF ( lquery )
THEN
260 work( 1 ) = dble( lworkopt )
266 IF( min( m, n ).EQ.0 )
THEN
267 work( 1 ) = dble( lworkopt )
282 CALL dlaset(
'F', m, n, zero, one, work, ldc )
289 CALL dlamtsqr(
'L',
'N', m, n, n, mb, nblocal, a, lda, t, ldt,
290 $ work, ldc, work( lc+1 ), lw, iinfo )
297 CALL dcopy( m, work( (j-1)*ldc + 1 ), 1, a( 1, j ), 1 )
300 work( 1 ) = dble( lworkopt )
subroutine xerbla(srname, info)
subroutine dcopy(n, dx, incx, dy, incy)
DCOPY
subroutine dlamtsqr(side, trans, m, n, k, mb, nb, a, lda, t, ldt, c, ldc, work, lwork, info)
DLAMTSQR
subroutine dlaset(uplo, m, n, alpha, beta, a, lda)
DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine dorgtsqr(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
DORGTSQR