1 SUBROUTINE ZAXPY(N,ZA,ZX,INCX,ZY,INCY)
2 * .. Scalar Arguments ..
3 DOUBLE COMPLEX ZA
4 INTEGER INCX,INCY,N
5 * ..
6 * .. Array Arguments ..
7 DOUBLE COMPLEX ZX(*),ZY(*)
8 * ..
9 *
10 * Purpose
11 * =======
12 *
13 * ZAXPY constant times a vector plus a vector.
14 *
15 * Further Details
16 * ===============
17 *
18 * jack dongarra, 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 DOUBLE PRECISION DCABS1
28 EXTERNAL DCABS1
29 * ..
30 IF (N.LE.0) RETURN
31 IF (DCABS1(ZA).EQ.0.0d0) 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 ZY(I) = ZY(I) + ZA*ZX(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 ZY(IY) = ZY(IY) + ZA*ZX(IX)
50 IX = IX + INCX
51 IY = IY + INCY
52 END DO
53 END IF
54 *
55 RETURN
56 END
2 * .. Scalar Arguments ..
3 DOUBLE COMPLEX ZA
4 INTEGER INCX,INCY,N
5 * ..
6 * .. Array Arguments ..
7 DOUBLE COMPLEX ZX(*),ZY(*)
8 * ..
9 *
10 * Purpose
11 * =======
12 *
13 * ZAXPY constant times a vector plus a vector.
14 *
15 * Further Details
16 * ===============
17 *
18 * jack dongarra, 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 DOUBLE PRECISION DCABS1
28 EXTERNAL DCABS1
29 * ..
30 IF (N.LE.0) RETURN
31 IF (DCABS1(ZA).EQ.0.0d0) 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 ZY(I) = ZY(I) + ZA*ZX(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 ZY(IY) = ZY(IY) + ZA*ZX(IX)
50 IX = IX + INCX
51 IY = IY + INCY
52 END DO
53 END IF
54 *
55 RETURN
56 END