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.0RETURN
27       IF (INCX.EQ.1 .AND. INCY.EQ.1THEN
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