150 SUBROUTINE dlatzm( SIDE, M, N, V, INCV, TAU, C1, C2, LDC, WORK )
158 INTEGER INCV, LDC, M, N
162 DOUBLE PRECISION C1( LDC, * ), C2( LDC, * ), V( * ), WORK( * )
168 DOUBLE PRECISION ONE, ZERO
169 parameter( one = 1.0d+0, zero = 0.0d+0 )
183 IF( ( min( m, n ).EQ.0 ) .OR. ( tau.EQ.zero ) )
186 IF( lsame( side,
'L' ) )
THEN
190 CALL dcopy( n, c1, ldc, work, 1 )
191 CALL dgemv(
'Transpose', m-1, n, one, c2, ldc, v, incv, one,
197 CALL daxpy( n, -tau, work, 1, c1, ldc )
198 CALL dger( m-1, n, -tau, v, incv, work, 1, c2, ldc )
200 ELSE IF( lsame( side,
'R' ) )
THEN
204 CALL dcopy( m, c1, 1, work, 1 )
205 CALL dgemv(
'No transpose', m, n-1, one, c2, ldc, v, incv, one,
210 CALL daxpy( m, -tau, work, 1, c1, 1 )
211 CALL dger( m, n-1, -tau, work, 1, v, incv, c2, ldc )
subroutine dlatzm(side, m, n, v, incv, tau, c1, c2, ldc, work)
DLATZM
subroutine daxpy(n, da, dx, incx, dy, incy)
DAXPY
subroutine dcopy(n, dx, incx, dy, incy)
DCOPY
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