1*> \brief \b SROT
2*
3*  =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6*            http://www.netlib.org/lapack/explore-html/
7*
8*  Definition:
9*  ===========
10*
11*       SUBROUTINE SROT(N,SX,INCX,SY,INCY,C,S)
12*
13*       .. Scalar Arguments ..
14*       REAL C,S
15*       INTEGER INCX,INCY,N
16*       ..
17*       .. Array Arguments ..
18*       REAL SX(*),SY(*)
19*       ..
20*
21*
22*> \par Purpose:
23*  =============
24*>
25*> \verbatim
26*>
27*>    applies a plane rotation.
28*> \endverbatim
29*
30*  Authors:
31*  ========
32*
33*> \author Univ. of Tennessee
34*> \author Univ. of California Berkeley
35*> \author Univ. of Colorado Denver
36*> \author NAG Ltd.
37*
38*> \date November 2011
39*
40*> \ingroup single_blas_level1
41*
42*> \par Further Details:
43*  =====================
44*>
45*> \verbatim
46*>
47*>     jack dongarra, linpack, 3/11/78.
48*>     modified 12/3/93, array(1) declarations changed to array(*)
49*> \endverbatim
50*>
51*  =====================================================================
52      SUBROUTINE SROT(N,SX,INCX,SY,INCY,C,S)
53*
54*  -- Reference BLAS level1 routine (version 3.4.0) --
55*  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --
56*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
57*     November 2011
58*
59*     .. Scalar Arguments ..
60      REAL C,S
61      INTEGER INCX,INCY,N
62*     ..
63*     .. Array Arguments ..
64      REAL SX(*),SY(*)
65*     ..
66*
67*  =====================================================================
68*
69*     .. Local Scalars ..
70      REAL STEMP
71      INTEGER I,IX,IY
72*     ..
73      IF (N.LE.0) RETURN
74      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
75*
76*       code for both increments equal to 1
77*
78         DO I = 1,N
79            STEMP = C*SX(I) + S*SY(I)
80            SY(I) = C*SY(I) - S*SX(I)
81            SX(I) = STEMP
82         END DO
83      ELSE
84*
85*       code for unequal increments or equal increments not equal
86*         to 1
87*
88         IX = 1
89         IY = 1
90         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
91         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
92         DO I = 1,N
93            STEMP = C*SX(IX) + S*SY(IY)
94            SY(IY) = C*SY(IY) - S*SX(IX)
95            SX(IX) = STEMP
96            IX = IX + INCX
97            IY = IY + INCY
98         END DO
99      END IF
100      RETURN
101      END
102c $Id$
103