LAPACK  3.4.2
LAPACK: Linear Algebra PACKage
 All Files Functions Groups
clacrt.f
Go to the documentation of this file.
1 *> \brief \b CLACRT performs a linear transformation of a pair of complex vectors.
2 *
3 * =========== DOCUMENTATION ===========
4 *
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
7 *
8 *> \htmlonly
9 *> Download CLACRT + dependencies
10 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/clacrt.f">
11 *> [TGZ]</a>
12 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/clacrt.f">
13 *> [ZIP]</a>
14 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/clacrt.f">
15 *> [TXT]</a>
16 *> \endhtmlonly
17 *
18 * Definition:
19 * ===========
20 *
21 * SUBROUTINE CLACRT( N, CX, INCX, CY, INCY, C, S )
22 *
23 * .. Scalar Arguments ..
24 * INTEGER INCX, INCY, N
25 * COMPLEX C, S
26 * ..
27 * .. Array Arguments ..
28 * COMPLEX CX( * ), CY( * )
29 * ..
30 *
31 *
32 *> \par Purpose:
33 * =============
34 *>
35 *> \verbatim
36 *>
37 *> CLACRT performs the operation
38 *>
39 *> ( c s )( x ) ==> ( x )
40 *> ( -s c )( y ) ( y )
41 *>
42 *> where c and s are complex and the vectors x and y are complex.
43 *> \endverbatim
44 *
45 * Arguments:
46 * ==========
47 *
48 *> \param[in] N
49 *> \verbatim
50 *> N is INTEGER
51 *> The number of elements in the vectors CX and CY.
52 *> \endverbatim
53 *>
54 *> \param[in,out] CX
55 *> \verbatim
56 *> CX is COMPLEX array, dimension (N)
57 *> On input, the vector x.
58 *> On output, CX is overwritten with c*x + s*y.
59 *> \endverbatim
60 *>
61 *> \param[in] INCX
62 *> \verbatim
63 *> INCX is INTEGER
64 *> The increment between successive values of CX. INCX <> 0.
65 *> \endverbatim
66 *>
67 *> \param[in,out] CY
68 *> \verbatim
69 *> CY is COMPLEX array, dimension (N)
70 *> On input, the vector y.
71 *> On output, CY is overwritten with -s*x + c*y.
72 *> \endverbatim
73 *>
74 *> \param[in] INCY
75 *> \verbatim
76 *> INCY is INTEGER
77 *> The increment between successive values of CY. INCY <> 0.
78 *> \endverbatim
79 *>
80 *> \param[in] C
81 *> \verbatim
82 *> C is COMPLEX
83 *> \endverbatim
84 *>
85 *> \param[in] S
86 *> \verbatim
87 *> S is COMPLEX
88 *> C and S define the matrix
89 *> [ C S ].
90 *> [ -S C ]
91 *> \endverbatim
92 *
93 * Authors:
94 * ========
95 *
96 *> \author Univ. of Tennessee
97 *> \author Univ. of California Berkeley
98 *> \author Univ. of Colorado Denver
99 *> \author NAG Ltd.
100 *
101 *> \date September 2012
102 *
103 *> \ingroup complexOTHERauxiliary
104 *
105 * =====================================================================
106  SUBROUTINE clacrt( N, CX, INCX, CY, INCY, C, S )
107 *
108 * -- LAPACK auxiliary routine (version 3.4.2) --
109 * -- LAPACK is a software package provided by Univ. of Tennessee, --
110 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
111 * September 2012
112 *
113 * .. Scalar Arguments ..
114  INTEGER incx, incy, n
115  COMPLEX c, s
116 * ..
117 * .. Array Arguments ..
118  COMPLEX cx( * ), cy( * )
119 * ..
120 *
121 * =====================================================================
122 *
123 * .. Local Scalars ..
124  INTEGER i, ix, iy
125  COMPLEX ctemp
126 * ..
127 * .. Executable Statements ..
128 *
129  IF( n.LE.0 )
130  $ return
131  IF( incx.EQ.1 .AND. incy.EQ.1 )
132  $ go to 20
133 *
134 * Code for unequal increments or equal increments not equal to 1
135 *
136  ix = 1
137  iy = 1
138  IF( incx.LT.0 )
139  $ ix = ( -n+1 )*incx + 1
140  IF( incy.LT.0 )
141  $ iy = ( -n+1 )*incy + 1
142  DO 10 i = 1, n
143  ctemp = c*cx( ix ) + s*cy( iy )
144  cy( iy ) = c*cy( iy ) - s*cx( ix )
145  cx( ix ) = ctemp
146  ix = ix + incx
147  iy = iy + incy
148  10 continue
149  return
150 *
151 * Code for both increments equal to 1
152 *
153  20 continue
154  DO 30 i = 1, n
155  ctemp = c*cx( i ) + s*cy( i )
156  cy( i ) = c*cy( i ) - s*cx( i )
157  cx( i ) = ctemp
158  30 continue
159  return
160  END