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