1 /* blas/zswap.f -- translated by f2c (version 20050501).
2    You must link the resulting object file with libf2c:
3         on Microsoft Windows system, link with libf2c.lib;
4         on Linux or Unix systems, link with .../path/to/libf2c.a -lm
5         or, if you install libf2c.a in a standard place, with -lf2c -lm
6         -- in that order, at the end of the command line, as in
7                 cc *.o -lf2c -lm
8         Source for libf2c is in /netlib/f2c/libf2c.zip, e.g.,
9 
10                 http://www.netlib.org/f2c/libf2c.zip
11 */
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 #include "v3p_netlib.h"
17 
18 /*<       subroutine  zswap (n,zx,incx,zy,incy) >*/
zswap_(integer * n,doublecomplex * zx,integer * incx,doublecomplex * zy,integer * incy)19 /* Subroutine */ int zswap_(integer *n, doublecomplex *zx, integer *incx,
20         doublecomplex *zy, integer *incy)
21 {
22     /* System generated locals */
23     integer i__1, i__2, i__3;
24 
25     /* Local variables */
26     integer i__, ix, iy;
27     doublecomplex ztemp;
28 
29 
30 /*     interchanges two vectors. */
31 /*     jack dongarra, 3/11/78. */
32 /*     modified 12/3/93, array(1) declarations changed to array(*) */
33 
34 /*<       double complex zx(*),zy(*),ztemp >*/
35 /*<       integer i,incx,incy,ix,iy,n >*/
36 
37 /*<       if(n.le.0)return >*/
38     /* Parameter adjustments */
39     --zy;
40     --zx;
41 
42     /* Function Body */
43     if (*n <= 0) {
44         return 0;
45     }
46 /*<       if(incx.eq.1.and.incy.eq.1)go to 20 >*/
47     if (*incx == 1 && *incy == 1) {
48         goto L20;
49     }
50 
51 /*       code for unequal increments or equal increments not equal */
52 /*         to 1 */
53 
54 /*<       ix = 1 >*/
55     ix = 1;
56 /*<       iy = 1 >*/
57     iy = 1;
58 /*<       if(incx.lt.0)ix = (-n+1)*incx + 1 >*/
59     if (*incx < 0) {
60         ix = (-(*n) + 1) * *incx + 1;
61     }
62 /*<       if(incy.lt.0)iy = (-n+1)*incy + 1 >*/
63     if (*incy < 0) {
64         iy = (-(*n) + 1) * *incy + 1;
65     }
66 /*<       do 10 i = 1,n >*/
67     i__1 = *n;
68     for (i__ = 1; i__ <= i__1; ++i__) {
69 /*<         ztemp = zx(ix) >*/
70         i__2 = ix;
71         ztemp.r = zx[i__2].r, ztemp.i = zx[i__2].i;
72 /*<         zx(ix) = zy(iy) >*/
73         i__2 = ix;
74         i__3 = iy;
75         zx[i__2].r = zy[i__3].r, zx[i__2].i = zy[i__3].i;
76 /*<         zy(iy) = ztemp >*/
77         i__2 = iy;
78         zy[i__2].r = ztemp.r, zy[i__2].i = ztemp.i;
79 /*<         ix = ix + incx >*/
80         ix += *incx;
81 /*<         iy = iy + incy >*/
82         iy += *incy;
83 /*<    10 continue >*/
84 /* L10: */
85     }
86 /*<       return >*/
87     return 0;
88 
89 /*       code for both increments equal to 1 */
90 /*<    20 do 30 i = 1,n >*/
91 L20:
92     i__1 = *n;
93     for (i__ = 1; i__ <= i__1; ++i__) {
94 /*<         ztemp = zx(i) >*/
95         i__2 = i__;
96         ztemp.r = zx[i__2].r, ztemp.i = zx[i__2].i;
97 /*<         zx(i) = zy(i) >*/
98         i__2 = i__;
99         i__3 = i__;
100         zx[i__2].r = zy[i__3].r, zx[i__2].i = zy[i__3].i;
101 /*<         zy(i) = ztemp >*/
102         i__2 = i__;
103         zy[i__2].r = ztemp.r, zy[i__2].i = ztemp.i;
104 /*<    30 continue >*/
105 /* L30: */
106     }
107 /*<       return >*/
108     return 0;
109 /*<       end >*/
110 } /* zswap_ */
111 
112 #ifdef __cplusplus
113         }
114 #endif
115