LAPACK  3.4.2
LAPACK: Linear Algebra PACKage
 All Files Functions Groups
slar2v.f
Go to the documentation of this file.
1 *> \brief \b SLAR2V 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 SLAR2V + dependencies
10 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/slar2v.f">
11 *> [TGZ]</a>
12 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/slar2v.f">
13 *> [ZIP]</a>
14 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/slar2v.f">
15 *> [TXT]</a>
16 *> \endhtmlonly
17 *
18 * Definition:
19 * ===========
20 *
21 * SUBROUTINE SLAR2V( N, X, Y, Z, INCX, C, S, INCC )
22 *
23 * .. Scalar Arguments ..
24 * INTEGER INCC, INCX, N
25 * ..
26 * .. Array Arguments ..
27 * REAL C( * ), S( * ), X( * ), Y( * ), Z( * )
28 * ..
29 *
30 *
31 *> \par Purpose:
32 * =============
33 *>
34 *> \verbatim
35 *>
36 *> SLAR2V 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 REAL array,
56 *> dimension (1+(N-1)*INCX)
57 *> The vector x.
58 *> \endverbatim
59 *>
60 *> \param[in,out] Y
61 *> \verbatim
62 *> Y is REAL array,
63 *> dimension (1+(N-1)*INCX)
64 *> The vector y.
65 *> \endverbatim
66 *>
67 *> \param[in,out] Z
68 *> \verbatim
69 *> Z is REAL 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 REAL 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 REAL 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 realOTHERauxiliary
109 *
110 * =====================================================================
111  SUBROUTINE slar2v( 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  REAL c( * ), s( * ), x( * ), y( * ), z( * )
123 * ..
124 *
125 * =====================================================================
126 *
127 * .. Local Scalars ..
128  INTEGER i, ic, ix
129  REAL 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 SLAR2V
155 *
156  return
157  END