Lots of trailing whitespaces in the files of Syd. Cleaning this. No big deal.
[platform/upstream/lapack.git] / SRC / dlar2v.f
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