1 SUBROUTINE CSWAP(N,CX,INCX,CY,INCY)
2 * .. Scalar Arguments ..
3 INTEGER INCX,INCY,N
4 * ..
5 * .. Array Arguments ..
6 COMPLEX CX(*),CY(*)
7 * ..
8 *
9 * Purpose
10 * =======
11 *
12 * CSWAP interchanges two vectors.
13 *
14 * Further Details
15 * ===============
16 *
17 * jack dongarra, linpack, 3/11/78.
18 * modified 12/3/93, array(1) declarations changed to array(*)
19 *
20 * =====================================================================
21 *
22 * .. Local Scalars ..
23 COMPLEX CTEMP
24 INTEGER I,IX,IY
25 * ..
26 IF (N.LE.0) RETURN
27 IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
28 *
29 * code for both increments equal to 1
30 DO I = 1,N
31 CTEMP = CX(I)
32 CX(I) = CY(I)
33 CY(I) = CTEMP
34 END DO
35 ELSE
36 *
37 * code for unequal increments or equal increments not equal
38 * to 1
39 *
40 IX = 1
41 IY = 1
42 IF (INCX.LT.0) IX = (-N+1)*INCX + 1
43 IF (INCY.LT.0) IY = (-N+1)*INCY + 1
44 DO I = 1,N
45 CTEMP = CX(IX)
46 CX(IX) = CY(IY)
47 CY(IY) = CTEMP
48 IX = IX + INCX
49 IY = IY + INCY
50 END DO
51 END IF
52 RETURN
53 END
2 * .. Scalar Arguments ..
3 INTEGER INCX,INCY,N
4 * ..
5 * .. Array Arguments ..
6 COMPLEX CX(*),CY(*)
7 * ..
8 *
9 * Purpose
10 * =======
11 *
12 * CSWAP interchanges two vectors.
13 *
14 * Further Details
15 * ===============
16 *
17 * jack dongarra, linpack, 3/11/78.
18 * modified 12/3/93, array(1) declarations changed to array(*)
19 *
20 * =====================================================================
21 *
22 * .. Local Scalars ..
23 COMPLEX CTEMP
24 INTEGER I,IX,IY
25 * ..
26 IF (N.LE.0) RETURN
27 IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
28 *
29 * code for both increments equal to 1
30 DO I = 1,N
31 CTEMP = CX(I)
32 CX(I) = CY(I)
33 CY(I) = CTEMP
34 END DO
35 ELSE
36 *
37 * code for unequal increments or equal increments not equal
38 * to 1
39 *
40 IX = 1
41 IY = 1
42 IF (INCX.LT.0) IX = (-N+1)*INCX + 1
43 IF (INCY.LT.0) IY = (-N+1)*INCY + 1
44 DO I = 1,N
45 CTEMP = CX(IX)
46 CX(IX) = CY(IY)
47 CY(IY) = CTEMP
48 IX = IX + INCX
49 IY = IY + INCY
50 END DO
51 END IF
52 RETURN
53 END