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