1       SUBROUTINE SROT(N,SX,INCX,SY,INCY,C,S)
 2 *     .. Scalar Arguments ..
 3       REAL C,S
 4       INTEGER INCX,INCY,N
 5 *     ..
 6 *     .. Array Arguments ..
 7       REAL SX(*),SY(*)
 8 *     ..
 9 *
10 *  Purpose
11 *  =======
12 *
13 *     applies a plane rotation.
14 *
15 *  Further Details
16 *  ===============
17 *
18 *     jack dongarra, linpack, 3/11/78.
19 *     modified 12/3/93, array(1) declarations changed to array(*)
20 *
21 *  =====================================================================
22 *
23 *     .. Local Scalars ..
24       REAL STEMP
25       INTEGER I,IX,IY
26 *     ..
27       IF (N.LE.0RETURN
28       IF (INCX.EQ.1 .AND. INCY.EQ.1THEN
29 *
30 *       code for both increments equal to 1
31 *
32          DO I = 1,N
33             STEMP = C*SX(I) + S*SY(I)
34             SY(I) = C*SY(I) - S*SX(I)
35             SX(I) = STEMP
36          END DO
37       ELSE
38 *
39 *       code for unequal increments or equal increments not equal
40 *         to 1
41 *
42          IX = 1
43          IY = 1
44          IF (INCX.LT.0) IX = (-N+1)*INCX + 1
45          IF (INCY.LT.0) IY = (-N+1)*INCY + 1
46          DO I = 1,N
47             STEMP = C*SX(IX) + S*SY(IY)
48             SY(IY) = C*SY(IY) - S*SX(IX)
49             SX(IX) = STEMP
50             IX = IX + INCX
51             IY = IY + INCY
52          END DO
53       END IF
54       RETURN
55       END