142 SUBROUTINE dgelqf( M, N, A, LDA, TAU, WORK, LWORK, INFO )
149 INTEGER INFO, LDA, LWORK, M, N
152 DOUBLE PRECISION A( LDA, * ), TAU( * ), ( * )
159 INTEGER I, IB, IINFO, IWS, K, LDWORK, LWKOPT, NB,
177 nb
'DGELQF',
' ', m, n, -1, -1 )
180 lquery = ( lwork.EQ.-1 )
185 ELSE IF( lda.LT.
max( 1, m ) )
THEN
187 ELSE IF( lwork.LT.
max( 1, m ) .AND. .NOT.lquery )
THEN
193 ELSE IF( LQUERY ) THEN
208.GT..AND..LT.
IF( NB1 NBK ) THEN
212 NX = MAX( 0, ILAENV( 3, 'dgelqf', ' ', M, N, -1, -1 ) )
219.LT.
IF( LWORKIWS ) THEN
225 NBMIN = MAX( 2, ILAENV( 2, 'dgelqf', ' ', M, N, -1,
231.GE..AND..LT..AND..LT.
IF( NBNBMIN NBK NXK ) THEN
235 DO 10 I = 1, K - NX, NB
236 IB = MIN( K-I+1, NB )
241 CALL DGELQ2( IB, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
248 CALL DLARFT( 'forward
', 'rowwise
', N-I+1, IB, A( I, I ),
249 $ LDA, TAU( I ), WORK, LDWORK )
253 CALL DLARFB( 'right
', 'no transpose
', 'forward
',
254 $ 'rowwise
', M-I-IB+1, N-I+1, IB, A( I, I ),
255 $ LDA, WORK, LDWORK, A( I+IB, I ), LDA,
256 $ WORK( IB+1 ), LDWORK )
266 $ CALL DGELQ2( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
subroutine xerbla(srname, info)
XERBLA
subroutine dgelq2(m, n, a, lda, tau, work, info)
DGELQ2 computes the LQ factorization of a general rectangular matrix using an unblocked algorithm.
subroutine dgelqf(m, n, a, lda, tau, work, lwork, info)
DGELQF
subroutine dlarft(direct, storev, n, k, v, ldv, tau, t, ldt)
DLARFT forms the triangular factor T of a block reflector H = I - vtvH
subroutine dlarfb(side, trans, direct, storev, m, n, k, v, ldv, t, ldt, c, ldc, work, ldwork)
DLARFB applies a block reflector or its transpose to a general rectangular matrix.