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
CVSweb interface <joel.bertrand@systella.fr>