123 SUBROUTINE dlarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
131 INTEGER INCV, LDC, M, N
135 DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * )
141 DOUBLE PRECISION ONE, ZERO
142 parameter( one = 1.0d+0, zero = 0.0d+0 )
146 INTEGER I, LASTV, LASTC
153 INTEGER ILADLR, ILADLC
154 EXTERNAL lsame, iladlr, iladlc
158 applyleft = lsame( side, 'l
' )
161.NE.
IF( TAUZERO ) THEN
162! Set up variables for scanning V. LASTV begins pointing to the end
170 I = 1 + (LASTV-1) * INCV
174! Look for the last non-zero row in V.
175.GT..AND..EQ.
DO WHILE( LASTV0 V( I )ZERO )
180! Scan for the last non-zero column in C(1:lastv,:).
181 LASTC = ILADLC(LASTV, N, C, LDC)
183! Scan for the last non-zero row in C(:,1:lastv).
184 LASTC = ILADLR(M, LASTV, C, LDC)
187.eq.
! Note that lastc0 renders the BLAS operations null; no special
188! case is needed at this level.
193.GT.
IF( LASTV0 ) THEN
197 CALL DGEMV( 'transpose
', LASTV, LASTC, ONE, C, LDC, V, INCV,
202 CALL DGER( LASTV, LASTC, -TAU, V, INCV, WORK, 1, C, LDC )
208.GT.
IF( LASTV0 ) THEN
212 CALL DGEMV( 'no transpose
', LASTC, LASTV, ONE, C, LDC,
213 $ V, INCV, ZERO, WORK, 1 )
217 CALL DGER( LASTC, LASTV, -TAU, WORK, 1, V, INCV, C, LDC )
subroutine dlarf(side, m, n, v, incv, tau, c, ldc, work)
DLARF applies an elementary reflector to a general rectangular matrix.
subroutine dgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
DGEMV
subroutine dger(m, n, alpha, x, incx, y, incy, a, lda)
DGER