125 SUBROUTINE slarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
134 INTEGER INCV, LDC, M, N
138 REAL C( LDC, * ), V( * ), WORK( * )
145 parameter( one = 1.0e+0, zero = 0.0e+0 )
149 INTEGER I, LASTV, LASTC
156 INTEGER ILASLR, ILASLC
157 EXTERNAL lsame, ilaslr, ilaslc
161 applyleft = lsame( side,
'L' )
164 IF( tau.NE.zero )
THEN
173 i = 1 + (lastv-1) * incv
178 DO WHILE( lastv.GT.0 .AND. v( i ).EQ.zero )
184 lastc = ilaslc(lastv, n, c, ldc)
187 lastc = ilaslr(m, lastv, c, ldc)
196 IF( lastv.GT.0 )
THEN
200 CALL sgemv(
'Transpose', lastv, lastc, one, c, ldc, v, incv,
205 CALL sger( lastv, lastc, -tau, v, incv, work, 1, c, ldc )
211 IF( lastv.GT.0 )
THEN
215 CALL sgemv(
'No transpose', lastc, lastv, one, c, ldc,
216 $ v, incv, zero, work, 1 )
220 CALL sger( lastc, lastv, -tau, work, 1, v, incv, c, ldc )