122 SUBROUTINE slarf1f( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
130 INTEGER INCV, LDC, M, N
134 REAL C( LDC, * ), V( * ), WORK( * )
141 parameter( one = 1.0e+0, zero = 0.0e+0 )
145 INTEGER I, LASTV, LASTC
152 INTEGER ILASLR, ILASLC
153 EXTERNAL lsame, ilaslr, ilaslc
157 applyleft = lsame( side,
'L' )
160 IF( tau.NE.zero )
THEN
169 i = 1 + (lastv-1) * incv
174 DO WHILE( lastv.GT.1 .AND. v( i ).EQ.zero )
180 lastc = ilaslc(lastv, n, c, ldc)
183 lastc = ilaslr(m, lastv, c, ldc)
186 IF( lastc.EQ.0 )
THEN
193 IF( lastv.EQ.1 )
THEN
197 CALL sscal( lastc, one - tau, c, ldc )
202 CALL sgemv(
'Transpose', lastv - 1, lastc, one, c( 2, 1 ),
203 $ ldc, v( 1 + incv ), incv, zero, work, 1 )
207 CALL saxpy( lastc, one, c, ldc, work, 1 )
211 CALL saxpy( lastc, -tau, work, 1, c, ldc )
215 CALL sger( lastv - 1, lastc, -tau, v( 1 + incv ), incv,
216 $ work, 1, c( 2, 1 ), ldc )
222 IF( lastv.EQ.1 )
THEN
226 CALL sscal( lastc, one - tau, c, 1 )
231 CALL sgemv(
'No transpose', lastc, lastv - 1, one,
232 $ c( 1, 2 ), ldc, v( 1 + incv ), incv, zero,
237 CALL saxpy( lastc, one, c, 1, work, 1 )
241 CALL saxpy( lastc, -tau, work, 1, c, 1 )
245 CALL sger( lastc, lastv - 1, -tau, work, 1,
246 $ v( 1 + incv ), incv, c( 1, 2 ), 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 slarf1f(side, m, n, v, incv, tau, c, ldc, work)
SLARF1F applies an elementary reflector to a general rectangular