198 SUBROUTINE dlasr( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA )
205 CHARACTER DIRECT, PIVOT, SIDE
209 DOUBLE PRECISION A( LDA, * ), C( * ), S( * )
215 DOUBLE PRECISION ONE, ZERO
216 parameter( one = 1.0d+0, zero = 0.0d+0 )
220 DOUBLE PRECISION CTEMP, STEMP, TEMP
237 IF( .NOT.( lsame( side,
'L' ) .OR. lsame( side,
'R' ) ) )
THEN
239 ELSE IF( .NOT.( lsame( pivot,
'V' ) .OR. lsame( pivot,
240 $
'T' ) .OR. lsame( pivot,
'B' ) ) )
THEN
242 ELSE IF( .NOT.( lsame( direct,
'F' ) .OR. lsame( direct,
'B' ) ) )
245 ELSE IF( m.LT.0 )
THEN
247 ELSE IF( n.LT.0 )
THEN
249 ELSE IF( lda.LT.
max( 1, m ) )
THEN
253 CALL xerbla(
'DLASR ', info )
259 IF( ( m.EQ.0 ) .OR. ( n.EQ.0 ) )
261 IF( lsame( side,
'L' ) )
THEN
265 IF( lsame( pivot,
'V' ) )
THEN
266 IF( lsame( direct,
'F' ) )
THEN
270 IF( ( ctemp.NE.one ) .OR. ( stemp.NE.zero ) )
THEN
274 a( j, i ) = stemp*temp
278 ELSE IF( lsame( direct,
'B' ) )
THEN
279 DO 40 j = m - 1, 1, -1
282 IF( ( ctemp.NE.one ) .OR. ( stemp.NE.zero ) )
THEN
285 a( j+1, i ) = ctemp*temp - stemp*a( j, i )
286 a( j, i ) = stemp*temp + ctemp*a( j, i )
291 ELSE IF( lsame( pivot,
'T' ) )
THEN
292 IF( lsame( direct,
'F' ) )
THEN
296 IF( ( ctemp.NE.one ) .OR. ( stemp.NE.zero ) )
THEN
299 a( j, i ) = ctemp*temp - stemp*a( 1, i )
300 a( 1, i ) = stemp*temp + ctemp*a( 1, i )
304 ELSE IF( lsame( direct,
'B' ) )
THEN
308 IF( ( ctemp.NE.one ) .OR. ( stemp.NE.zero ) )
THEN
311 a( j, i ) = ctemp*temp - stemp*a( 1, i )
317 ELSE IF( lsame( pivot,
'B' ) )
THEN
318 IF( lsame( direct,
'F' ) )
THEN
322 IF( ( ctemp.NE.one ) .OR. ( stemp.NE.zero ) )
THEN
325 a( j, i ) = stemp*a( m, i ) + ctemp
326 a( m, i ) = ctemp*a( m, i ) - stemp*temp
330 ELSE IF( lsame( direct,
'B' ) )
THEN
331 DO 120 j = m - 1, 1, -1
334 IF( ( ctemp.NE.one ) .OR. ( stemp.NE.zero ) )
THEN
338 a( m, i ) = ctemp*a( m, i )
344 ELSE IF( lsame( side,
'R' ) )
THEN
348 IF( lsame( pivot,
'V' ) )
THEN
349 IF( lsame( direct,
'F' ) )
THEN
353 IF( ( ctemp.NE.one ) .OR. ( stemp.NE.zero ) )
THEN
356 a( i, j+1 ) = ctemp*temp - stemp*a( i, j )
357 a( i, j ) = stemp*temp + ctemp*a( i, j )
361 ELSE IF( lsame( direct, 'b
' ) ) THEN
362 DO 160 J = N - 1, 1, -1
365.NE..OR..NE.
IF( ( CTEMPONE ) ( STEMPZERO ) ) THEN
368 A( I, J+1 ) = CTEMP*TEMP - STEMP*A( I, J )
369 A( I, J ) = STEMP*TEMP + CTEMP*A( I, J )
374 ELSE IF( LSAME( PIVOT, 't
' ) ) THEN
375 IF( LSAME( DIRECT, 'f
' ) ) THEN
379.NE..OR..NE.
IF( ( CTEMPONE ) ( STEMPZERO ) ) THEN
382 A( I, J ) = CTEMP*TEMP - STEMP*A( I, 1 )
383 A( I, 1 ) = STEMP*TEMP + CTEMP*A( I, 1 )
387 ELSE IF( LSAME( DIRECT, 'b
' ) ) THEN
391.NE..OR..NE.
IF( ( CTEMPONE ) ( STEMPZERO ) ) THEN
394 A( I, J ) = CTEMP*TEMP - STEMP*A( I, 1 )
395 A( I, 1 ) = STEMP*TEMP + CTEMP*A( I, 1 )
400 ELSE IF( LSAME( PIVOT, 'b
' ) ) THEN
401 IF( LSAME( DIRECT, 'f
' ) ) THEN
405.NE..OR..NE.
IF( ( CTEMPONE ) ( STEMPZERO ) ) THEN
408 A( I, J ) = STEMP*A( I, N ) + CTEMP*TEMP
409 A( I, N ) = CTEMP*A( I, N ) - STEMP*TEMP
413 ELSE IF( LSAME( DIRECT, 'b
' ) ) THEN
414 DO 240 J = N - 1, 1, -1
417.NE..OR..NE.
IF( ( CTEMPONE ) ( STEMPZERO ) ) THEN
420 A( I, J ) = STEMP*A( I, N ) + CTEMP*TEMP
421 A( I, N ) = CTEMP*A( I, N ) - STEMP*TEMP
subroutine dlasr(side, pivot, direct, m, n, c, s, a, lda)
DLASR applies a sequence of plane rotations to a general rectangular matrix.