123 SUBROUTINE slarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
131 INTEGER INCV, LDC, M, N
135 REAL C( LDC, * ), V( * ), WORK( * )
142 parameter( one = 1.0e+0, zero = 0.0e+0 )
146 INTEGER I, LASTV, LASTC
153 INTEGER ILASLR, ILASLC
154 EXTERNAL lsame, ilaslr, ilaslc
158 applyleft = lsame( side,
'L' )
161 IF( tau.NE.zero )
THEN
170 i = 1 + (lastv-1) * incv
175 DO WHILE( lastv.GT.0 .AND. v( i ).EQ.zero )
181 lastc = ilaslc(lastv, n, c, ldc)
184 lastc = ilaslr(m, lastv, c, ldc)
193 IF( lastv.GT.0 )
THEN
197 CALL sgemv(
'Transpose', lastv, lastc, one, c, ldc, v, incv,
202 CALL sger( lastv, lastc, -tau, v, incv, work, 1, c, ldc )
208 IF( lastv.GT.0 )
THEN
212 CALL sgemv(
'No transpose', lastc, lastv, one, c, ldc,
213 $ v, incv, zero, work, 1 )
217 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.