SUBROUTINE SROTM(N,SX,INCX,SY,INCY,SPARAM)
INTEGER INCX,INCY,N
REAL SPARAM(5),SX(1),SY(1)
REAL SFLAG,SH11,SH12,SH21,SH22,TWO,W,Z,ZERO
INTEGER I,KX,KY,NSTEPS
DATA ZERO,TWO/0.E0,2.E0/
SFLAG = SPARAM(1)
IF (N.LE.0 .OR. (SFLAG+TWO.EQ.ZERO)) GO TO 140
IF (.NOT. (INCX.EQ.INCY.AND.INCX.GT.0)) GO TO 70
NSTEPS = N*INCX
IF (SFLAG) 50,10,30
10 CONTINUE
SH12 = SPARAM(4)
SH21 = SPARAM(3)
DO 20 I = 1,NSTEPS,INCX
W = SX(I)
Z = SY(I)
SX(I) = W + Z*SH12
SY(I) = W*SH21 + Z
20 CONTINUE
GO TO 140
30 CONTINUE
SH11 = SPARAM(2)
SH22 = SPARAM(5)
DO 40 I = 1,NSTEPS,INCX
W = SX(I)
Z = SY(I)
SX(I) = W*SH11 + Z
SY(I) = -W + SH22*Z
40 CONTINUE
GO TO 140
50 CONTINUE
SH11 = SPARAM(2)
SH12 = SPARAM(4)
SH21 = SPARAM(3)
SH22 = SPARAM(5)
DO 60 I = 1,NSTEPS,INCX
W = SX(I)
Z = SY(I)
SX(I) = W*SH11 + Z*SH12
SY(I) = W*SH21 + Z*SH22
60 CONTINUE
GO TO 140
70 CONTINUE
KX = 1
KY = 1
IF (INCX.LT.0) KX = 1 + (1-N)*INCX
IF (INCY.LT.0) KY = 1 + (1-N)*INCY
IF (SFLAG) 120,80,100
80 CONTINUE
SH12 = SPARAM(4)
SH21 = SPARAM(3)
DO 90 I = 1,N
W = SX(KX)
Z = SY(KY)
SX(KX) = W + Z*SH12
SY(KY) = W*SH21 + Z
KX = KX + INCX
KY = KY + INCY
90 CONTINUE
GO TO 140
100 CONTINUE
SH11 = SPARAM(2)
SH22 = SPARAM(5)
DO 110 I = 1,N
W = SX(KX)
Z = SY(KY)
SX(KX) = W*SH11 + Z
SY(KY) = -W + SH22*Z
KX = KX + INCX
KY = KY + INCY
110 CONTINUE
GO TO 140
120 CONTINUE
SH11 = SPARAM(2)
SH12 = SPARAM(4)
SH21 = SPARAM(3)
SH22 = SPARAM(5)
DO 130 I = 1,N
W = SX(KX)
Z = SY(KY)
SX(KX) = W*SH11 + Z*SH12
SY(KY) = W*SH21 + Z*SH22
KX = KX + INCX
KY = KY + INCY
130 CONTINUE
140 CONTINUE
RETURN
END