121 SUBROUTINE slarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
129 INTEGER INCV, LDC, M, N
133 REAL C( LDC, * ), V( * ), WORK( * )
140 parameter( one = 1.0e+0, zero = 0.0e+0 )
144 INTEGER I, LASTV, LASTC
151 INTEGER ILASLR, ILASLC
152 EXTERNAL lsame, ilaslr, ilaslc
156 applyleft = lsame( side,
'L' )
159 IF( tau.NE.zero )
THEN
168 i = 1 + (lastv-1) * incv
173 DO WHILE( lastv.GT.0 .AND. v( i ).EQ.zero )
179 lastc = ilaslc(lastv, n, c, ldc)
182 lastc = ilaslr(m, lastv, c, ldc)
191 IF( lastv.GT.0 )
THEN
195 CALL sgemv(
'Transpose', lastv, lastc, one, c, ldc, v,
201 CALL sger( lastv, lastc, -tau, v, incv, work, 1, c, ldc )
207 IF( lastv.GT.0 )
THEN
211 CALL sgemv(
'No transpose', lastc, lastv, one, c, ldc,
212 $ v, incv, zero, work, 1 )
216 CALL sger( lastc, lastv, -tau, work, 1, v, incv, c, ldc )
subroutine sgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
SGEMV
subroutine sger(m, n, alpha, x, incx, y, incy, a, lda)
SGER
subroutine slarf(side, m, n, v, incv, tau, c, ldc, work)
SLARF applies an elementary reflector to a general rectangular matrix.