1 DOUBLE COMPLEX FUNCTION ZDOTC(N,ZX,INCX,ZY,INCY)
2 * .. Scalar Arguments ..
3 INTEGER INCX,INCY,N
4 * ..
5 * .. Array Arguments ..
6 DOUBLE COMPLEX ZX(*),ZY(*)
7 * ..
8 *
9 * Purpose
10 * =======
11 *
12 * ZDOTC forms the dot product of a vector.
13 *
14 * Further Details
15 * ===============
16 *
17 * jack dongarra, 3/11/78.
18 * modified 12/3/93, array(1) declarations changed to array(*)
19 *
20 * =====================================================================
21 *
22 * .. Local Scalars ..
23 DOUBLE COMPLEX ZTEMP
24 INTEGER I,IX,IY
25 * ..
26 * .. Intrinsic Functions ..
27 INTRINSIC DCONJG
28 * ..
29 ZTEMP = (0.0d0,0.0d0)
30 ZDOTC = (0.0d0,0.0d0)
31 IF (N.LE.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 ZTEMP = ZTEMP + DCONJG(ZX(I))*ZY(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 ZTEMP = ZTEMP + DCONJG(ZX(IX))*ZY(IY)
50 IX = IX + INCX
51 IY = IY + INCY
52 END DO
53 END IF
54 ZDOTC = ZTEMP
55 RETURN
56 END
2 * .. Scalar Arguments ..
3 INTEGER INCX,INCY,N
4 * ..
5 * .. Array Arguments ..
6 DOUBLE COMPLEX ZX(*),ZY(*)
7 * ..
8 *
9 * Purpose
10 * =======
11 *
12 * ZDOTC forms the dot product of a vector.
13 *
14 * Further Details
15 * ===============
16 *
17 * jack dongarra, 3/11/78.
18 * modified 12/3/93, array(1) declarations changed to array(*)
19 *
20 * =====================================================================
21 *
22 * .. Local Scalars ..
23 DOUBLE COMPLEX ZTEMP
24 INTEGER I,IX,IY
25 * ..
26 * .. Intrinsic Functions ..
27 INTRINSIC DCONJG
28 * ..
29 ZTEMP = (0.0d0,0.0d0)
30 ZDOTC = (0.0d0,0.0d0)
31 IF (N.LE.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 ZTEMP = ZTEMP + DCONJG(ZX(I))*ZY(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 ZTEMP = ZTEMP + DCONJG(ZX(IX))*ZY(IY)
50 IX = IX + INCX
51 IY = IY + INCY
52 END DO
53 END IF
54 ZDOTC = ZTEMP
55 RETURN
56 END