197 SUBROUTINE slatrd( UPLO, N, NB, A, LDA, E, TAU, W, LDW )
208 REAL A( LDA, * ), E( * ), TAU( * ), W( LDW, * )
215 parameter( zero = 0.0e+0, one = 1.0e+0, half = 0.5e+0 )
239 IF( lsame( uplo,
'U' ) )
THEN
243 DO 10 i = n, n - nb + 1, -1
249 CALL sgemv(
'No transpose', i, n-i, -one, a( 1, i+1 ),
250 $ lda, w( i, iw+1 ), ldw, one, a( 1, i ), 1 )
251 CALL sgemv(
'No transpose', i, n-i, -one, w( 1, iw+1 ),
252 $ ldw, a( i, i+1 ), lda, one, a( 1, i ), 1 )
259 CALL slarfg( i-1, a( i-1, i ), a( 1, i ), 1, tau( i-1 ) )
260 e( i-1 ) = a( i-1, i )
265 CALL ssymv(
'Upper', i-1, one, a, lda, a( 1, i ), 1,
266 $ zero, w( 1, iw ), 1 )
268 CALL sgemv(
'Transpose', i-1, n-i, one, w( 1, iw+1 ),
269 $ ldw, a( 1, i ), 1, zero, w( i+1, iw ), 1 )
270 CALL sgemv(
'No transpose', i-1, n-i, -one,
271 $ a( 1, i+1 ), lda, w( i+1, iw ), 1, one,
273 CALL sgemv(
'Transpose', i-1, n-i, one, a( 1, i+1 ),
274 $ lda, a( 1, i ), 1, zero, w( i+1, iw ), 1 )
275 CALL sgemv(
'No transpose', i-1, n-i, -one,
276 $ w( 1, iw+1 ), ldw, w( i+1, iw ), 1, one,
279 CALL sscal( i-1, tau( i-1 ), w( 1, iw ), 1 )
280 alpha = -half*tau( i-1 )*sdot( i-1, w( 1, iw ), 1,
282 CALL saxpy( i-1, alpha, a( 1, i ), 1, w( 1, iw ), 1 )
294 CALL sgemv(
'No transpose', n-i+1, i-1, -one, a( i, 1 ),
295 $ lda, w( i, 1 ), ldw, one, a( i, i ), 1 )
296 CALL sgemv(
'No transpose', n-i+1, i-1, -one, w( i, 1 ),
297 $ ldw, a( i, 1 ), lda, one, a( i, i ), 1 )
303 CALL slarfg( n-i, a( i+1, i ), a(
min( i+2, n ), i ), 1,
310 CALL ssymv(
'Lower', n-i, one, a( i+1, i+1 ), lda,
311 $ a( i+1, i ), 1, zero, w( i+1, i ), 1 )
312 CALL sgemv(
'Transpose', n-i, i-1, one, w( i+1, 1 ), ldw,
313 $ a( i+1, i ), 1, zero, w( 1, i ), 1 )
314 CALL sgemv(
'No transpose', n-i, i-1, -one, a( i+1, 1 ),
315 $ lda, w( 1, i ), 1, one, w( i+1, i ), 1 )
316 CALL sgemv(
'Transpose', n-i, i-1, one, a( i+1, 1 ), lda,
317 $ a( i+1, i ), 1, zero, w( 1, i ), 1 )
318 CALL sgemv(
'No transpose', n-i, i-1, -one, w( i+1, 1 ),
319 $ ldw, w( 1, i ), 1, one, w( i+1, i ), 1 )
320 CALL sscal( n-i, tau( i ), w( i+1, i ), 1 )
321 alpha = -half*tau( i )*sdot( n-i, w( i+1, i ), 1,
323 CALL saxpy( n-i, alpha, a( i+1, i ), 1, w( i+1, i ), 1 )