1*> \brief \b DLAR2V applies a vector of plane rotations with real cosines and real sines from both sides to a sequence of 2-by-2 symmetric/Hermitian matrices.
2*
3*  =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6*            http://www.netlib.org/lapack/explore-html/
7*
8*> \htmlonly
9*> Download DLAR2V + dependencies
10*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlar2v.f">
11*> [TGZ]</a>
12*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlar2v.f">
13*> [ZIP]</a>
14*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlar2v.f">
15*> [TXT]</a>
16*> \endhtmlonly
17*
18*  Definition:
19*  ===========
20*
21*       SUBROUTINE DLAR2V( N, X, Y, Z, INCX, C, S, INCC )
22*
23*       .. Scalar Arguments ..
24*       INTEGER            INCC, INCX, N
25*       ..
26*       .. Array Arguments ..
27*       DOUBLE PRECISION   C( * ), S( * ), X( * ), Y( * ), Z( * )
28*       ..
29*
30*
31*> \par Purpose:
32*  =============
33*>
34*> \verbatim
35*>
36*> DLAR2V applies a vector of real plane rotations from both sides to
37*> a sequence of 2-by-2 real symmetric matrices, defined by the elements
38*> of the vectors x, y and z. For i = 1,2,...,n
39*>
40*>    ( x(i)  z(i) ) := (  c(i)  s(i) ) ( x(i)  z(i) ) ( c(i) -s(i) )
41*>    ( z(i)  y(i) )    ( -s(i)  c(i) ) ( z(i)  y(i) ) ( s(i)  c(i) )
42*> \endverbatim
43*
44*  Arguments:
45*  ==========
46*
47*> \param[in] N
48*> \verbatim
49*>          N is INTEGER
50*>          The number of plane rotations to be applied.
51*> \endverbatim
52*>
53*> \param[in,out] X
54*> \verbatim
55*>          X is DOUBLE PRECISION array,
56*>                         dimension (1+(N-1)*INCX)
57*>          The vector x.
58*> \endverbatim
59*>
60*> \param[in,out] Y
61*> \verbatim
62*>          Y is DOUBLE PRECISION array,
63*>                         dimension (1+(N-1)*INCX)
64*>          The vector y.
65*> \endverbatim
66*>
67*> \param[in,out] Z
68*> \verbatim
69*>          Z is DOUBLE PRECISION array,
70*>                         dimension (1+(N-1)*INCX)
71*>          The vector z.
72*> \endverbatim
73*>
74*> \param[in] INCX
75*> \verbatim
76*>          INCX is INTEGER
77*>          The increment between elements of X, Y and Z. INCX > 0.
78*> \endverbatim
79*>
80*> \param[in] C
81*> \verbatim
82*>          C is DOUBLE PRECISION array, dimension (1+(N-1)*INCC)
83*>          The cosines of the plane rotations.
84*> \endverbatim
85*>
86*> \param[in] S
87*> \verbatim
88*>          S is DOUBLE PRECISION array, dimension (1+(N-1)*INCC)
89*>          The sines of the plane rotations.
90*> \endverbatim
91*>
92*> \param[in] INCC
93*> \verbatim
94*>          INCC is INTEGER
95*>          The increment between elements of C and S. INCC > 0.
96*> \endverbatim
97*
98*  Authors:
99*  ========
100*
101*> \author Univ. of Tennessee
102*> \author Univ. of California Berkeley
103*> \author Univ. of Colorado Denver
104*> \author NAG Ltd.
105*
106*> \date September 2012
107*
108*> \ingroup doubleOTHERauxiliary
109*
110*  =====================================================================
111      SUBROUTINE DLAR2V( N, X, Y, Z, INCX, C, S, INCC )
112*
113*  -- LAPACK auxiliary routine (version 3.4.2) --
114*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
115*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
116*     September 2012
117*
118*     .. Scalar Arguments ..
119      INTEGER            INCC, INCX, N
120*     ..
121*     .. Array Arguments ..
122      DOUBLE PRECISION   C( * ), S( * ), X( * ), Y( * ), Z( * )
123*     ..
124*
125*  =====================================================================
126*
127*     .. Local Scalars ..
128      INTEGER            I, IC, IX
129      DOUBLE PRECISION   CI, SI, T1, T2, T3, T4, T5, T6, XI, YI, ZI
130*     ..
131*     .. Executable Statements ..
132*
133      IX = 1
134      IC = 1
135      DO 10 I = 1, N
136         XI = X( IX )
137         YI = Y( IX )
138         ZI = Z( IX )
139         CI = C( IC )
140         SI = S( IC )
141         T1 = SI*ZI
142         T2 = CI*ZI
143         T3 = T2 - SI*XI
144         T4 = T2 + SI*YI
145         T5 = CI*XI + T1
146         T6 = CI*YI - T1
147         X( IX ) = CI*T5 + SI*T4
148         Y( IX ) = CI*T6 - SI*T3
149         Z( IX ) = CI*T4 - SI*T5
150         IX = IX + INCX
151         IC = IC + INCC
152   10 CONTINUE
153*
154*     End of DLAR2V
155*
156      RETURN
157      END
158