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