1 /* ./src_f77/zdrot.f -- translated by f2c (version 20030320).
2 You must link the resulting object file with the libraries:
3 -lf2c -lm (in that order)
4 */
5
6 #include <punc/vf2c.h>
7
zdrot_(integer * n,doublecomplex * zx,integer * incx,doublecomplex * zy,integer * incy,doublereal * c__,doublereal * s)8 /* Subroutine */ int zdrot_(integer *n, doublecomplex *zx, integer *incx,
9 doublecomplex *zy, integer *incy, doublereal *c__, doublereal *s)
10 {
11 /* System generated locals */
12 integer i__1, i__2, i__3, i__4;
13 doublecomplex z__1, z__2, z__3;
14
15 /* Local variables */
16 static integer i__, ix, iy;
17 static doublecomplex ztemp;
18
19
20 /* applies a plane rotation, where the cos and sin (c and s) are */
21 /* double precision and the vectors zx and zy are double complex. */
22 /* jack dongarra, linpack, 3/11/78. */
23
24
25 /* Parameter adjustments */
26 --zy;
27 --zx;
28
29 /* Function Body */
30 if (*n <= 0) {
31 return 0;
32 }
33 if (*incx == 1 && *incy == 1) {
34 goto L20;
35 }
36
37 /* code for unequal increments or equal increments not equal */
38 /* to 1 */
39
40 ix = 1;
41 iy = 1;
42 if (*incx < 0) {
43 ix = (-(*n) + 1) * *incx + 1;
44 }
45 if (*incy < 0) {
46 iy = (-(*n) + 1) * *incy + 1;
47 }
48 i__1 = *n;
49 for (i__ = 1; i__ <= i__1; ++i__) {
50 i__2 = ix;
51 z__2.r = *c__ * zx[i__2].r, z__2.i = *c__ * zx[i__2].i;
52 i__3 = iy;
53 z__3.r = *s * zy[i__3].r, z__3.i = *s * zy[i__3].i;
54 z__1.r = z__2.r + z__3.r, z__1.i = z__2.i + z__3.i;
55 ztemp.r = z__1.r, ztemp.i = z__1.i;
56 i__2 = iy;
57 i__3 = iy;
58 z__2.r = *c__ * zy[i__3].r, z__2.i = *c__ * zy[i__3].i;
59 i__4 = ix;
60 z__3.r = *s * zx[i__4].r, z__3.i = *s * zx[i__4].i;
61 z__1.r = z__2.r - z__3.r, z__1.i = z__2.i - z__3.i;
62 zy[i__2].r = z__1.r, zy[i__2].i = z__1.i;
63 i__2 = ix;
64 zx[i__2].r = ztemp.r, zx[i__2].i = ztemp.i;
65 ix += *incx;
66 iy += *incy;
67 /* L10: */
68 }
69 return 0;
70
71 /* code for both increments equal to 1 */
72
73 L20:
74 i__1 = *n;
75 for (i__ = 1; i__ <= i__1; ++i__) {
76 i__2 = i__;
77 z__2.r = *c__ * zx[i__2].r, z__2.i = *c__ * zx[i__2].i;
78 i__3 = i__;
79 z__3.r = *s * zy[i__3].r, z__3.i = *s * zy[i__3].i;
80 z__1.r = z__2.r + z__3.r, z__1.i = z__2.i + z__3.i;
81 ztemp.r = z__1.r, ztemp.i = z__1.i;
82 i__2 = i__;
83 i__3 = i__;
84 z__2.r = *c__ * zy[i__3].r, z__2.i = *c__ * zy[i__3].i;
85 i__4 = i__;
86 z__3.r = *s * zx[i__4].r, z__3.i = *s * zx[i__4].i;
87 z__1.r = z__2.r - z__3.r, z__1.i = z__2.i - z__3.i;
88 zy[i__2].r = z__1.r, zy[i__2].i = z__1.i;
89 i__2 = i__;
90 zx[i__2].r = ztemp.r, zx[i__2].i = ztemp.i;
91 /* L30: */
92 }
93 return 0;
94 } /* zdrot_ */
95
96