198 SUBROUTINE slasr( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA )
205 CHARACTER , PIVOT, SIDE
209 REAL A( , * ), C( * ), S( * )
216 parameter( one = 1.0e+0, zero = 0.0e+0 )
220 REAL 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.NOT.
ELSE IF( ( 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
259.EQ..OR..EQ.
IF( ( M0 ) ( N0 ) )
261 IF( LSAME( SIDE, 'l
' ) ) THEN
265 IF( LSAME( PIVOT, 'v
' ) ) THEN
266 IF( LSAME( DIRECT, 'f
' ) ) THEN
270.NE..OR..NE.
IF( ( CTEMPONE ) ( STEMPZERO ) ) THEN
273 A( J+1, I ) = CTEMP*TEMP - STEMP*A( J, I )
274 A( J, I ) = STEMP*TEMP + CTEMP*A( J, I )
278 ELSE IF( LSAME( DIRECT, 'b
' ) ) THEN
279 DO 40 J = M - 1, 1, -1
282.NE..OR..NE.
IF( ( CTEMPONE ) ( STEMPZERO ) ) 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.NE..OR..NE.
IF( ( CTEMPONE ) ( STEMPZERO ) ) 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.NE..OR..NE.
IF( ( CTEMPONE ) ( STEMPZERO ) ) THEN
311 A( J, I ) = CTEMP*TEMP - STEMP*A( 1, I )
312 A( 1, I ) = STEMP*TEMP + CTEMP*A( 1, I )
317 ELSE IF( LSAME( PIVOT, 'b
' ) ) THEN
318 IF( LSAME( DIRECT, 'f
' ) ) THEN
322.NE..OR..NE.
IF( ( CTEMPONE ) ( STEMPZERO ) ) THEN
325 A( J, I ) = STEMP*A( M, I ) + CTEMP*TEMP
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.NE..OR..NE.
IF( ( CTEMPONE ) ( STEMPZERO ) ) THEN
337 A( J, I ) = STEMP*A( M, I ) + CTEMP*TEMP
338 A( M, I ) = CTEMP*A( M, I ) - STEMP*TEMP
344 ELSE IF( LSAME( SIDE, 'r
' ) ) THEN
348 IF( LSAME( PIVOT, 'v
' ) ) THEN
349 IF( LSAME( DIRECT, 'f
' ) ) THEN
353.NE..OR..NE.
IF( ( CTEMPONE ) ( STEMPZERO ) ) 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 IF( ( ctemp.NE.one ) .OR. ( stemp.NE.zero ) )
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 IF( ( ctemp.NE.one ) .OR. ( stemp.NE.zero ) )
THEN
420 a( i, j ) = stemp*a( i, n ) + ctemp*temp
421 a( i, n ) = ctemp*a( i, n ) - stemp*temp
subroutine slasr(side, pivot, direct, m, n, c, s, a, lda)
SLASR applies a sequence of plane rotations to a general rectangular matrix.