LAPACK 3.12.0 LAPACK: Linear Algebra PACKage
Searching...
No Matches
zdrot.f
Go to the documentation of this file.
1*> \brief \b ZDROT
2*
3* =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6* http://www.netlib.org/lapack/explore-html/
7*
8* Definition:
9* ===========
10*
11* SUBROUTINE ZDROT( N, ZX, INCX, ZY, INCY, C, S )
12*
13* .. Scalar Arguments ..
14* INTEGER INCX, INCY, N
15* DOUBLE PRECISION C, S
16* ..
17* .. Array Arguments ..
18* COMPLEX*16 ZX( * ), ZY( * )
19* ..
20*
21*
22*> \par Purpose:
23* =============
24*>
25*> \verbatim
26*>
27*> Applies a plane rotation, where the cos and sin (c and s) are real
28*> and the vectors cx and cy are complex.
29*> jack dongarra, linpack, 3/11/78.
30*> \endverbatim
31*
32* Arguments:
33* ==========
34*
35*> \param[in] N
36*> \verbatim
37*> N is INTEGER
38*> On entry, N specifies the order of the vectors cx and cy.
39*> N must be at least zero.
40*> \endverbatim
41*>
42*> \param[in,out] ZX
43*> \verbatim
44*> ZX is COMPLEX*16 array, dimension at least
45*> ( 1 + ( N - 1 )*abs( INCX ) ).
46*> Before entry, the incremented array ZX must contain the n
47*> element vector cx. On exit, ZX is overwritten by the updated
48*> vector cx.
49*> \endverbatim
50*>
51*> \param[in] INCX
52*> \verbatim
53*> INCX is INTEGER
54*> On entry, INCX specifies the increment for the elements of
55*> ZX. INCX must not be zero.
56*> \endverbatim
57*>
58*> \param[in,out] ZY
59*> \verbatim
60*> ZY is COMPLEX*16 array, dimension at least
61*> ( 1 + ( N - 1 )*abs( INCY ) ).
62*> Before entry, the incremented array ZY must contain the n
63*> element vector cy. On exit, ZY is overwritten by the updated
64*> vector cy.
65*> \endverbatim
66*>
67*> \param[in] INCY
68*> \verbatim
69*> INCY is INTEGER
70*> On entry, INCY specifies the increment for the elements of
71*> ZY. INCY must not be zero.
72*> \endverbatim
73*>
74*> \param[in] C
75*> \verbatim
76*> C is DOUBLE PRECISION
77*> On entry, C specifies the cosine, cos.
78*> \endverbatim
79*>
80*> \param[in] S
81*> \verbatim
82*> S is DOUBLE PRECISION
83*> On entry, S specifies the sine, sin.
84*> \endverbatim
85*
86* Authors:
87* ========
88*
89*> \author Univ. of Tennessee
90*> \author Univ. of California Berkeley
91*> \author Univ. of Colorado Denver
92*> \author NAG Ltd.
93*
94*> \ingroup rot
95*
96* =====================================================================
97 SUBROUTINE zdrot( N, ZX, INCX, ZY, INCY, C, S )
98*
99* -- Reference BLAS level1 routine --
100* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
101* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
102*
103* .. Scalar Arguments ..
104 INTEGER INCX, INCY, N
105 DOUBLE PRECISION C, S
106* ..
107* .. Array Arguments ..
108 COMPLEX*16 ZX( * ), ZY( * )
109* ..
110*
111* =====================================================================
112*
113* .. Local Scalars ..
114 INTEGER I, IX, IY
115 COMPLEX*16 CTEMP
116* ..
117* .. Executable Statements ..
118*
119 IF( n.LE.0 )
120 \$ RETURN
121 IF( incx.EQ.1 .AND. incy.EQ.1 ) THEN
122*
123* code for both increments equal to 1
124*
125 DO i = 1, n
126 ctemp = c*zx( i ) + s*zy( i )
127 zy( i ) = c*zy( i ) - s*zx( i )
128 zx( i ) = ctemp
129 END DO
130 ELSE
131*
132* code for unequal increments or equal increments not equal
133* to 1
134*
135 ix = 1
136 iy = 1
137 IF( incx.LT.0 )
138 \$ ix = ( -n+1 )*incx + 1
139 IF( incy.LT.0 )
140 \$ iy = ( -n+1 )*incy + 1
141 DO i = 1, n
142 ctemp = c*zx( ix ) + s*zy( iy )
143 zy( iy ) = c*zy( iy ) - s*zx( ix )
144 zx( ix ) = ctemp
145 ix = ix + incx
146 iy = iy + incy
147 END DO
148 END IF
149 RETURN
150*
151* End of ZDROT
152*
153 END
subroutine zdrot(n, zx, incx, zy, incy, c, s)
ZDROT
Definition zdrot.f:98