1 COMPLEX FUNCTION CDOTC(N,CX,INCX,CY,INCY)
2 * .. Scalar Arguments ..
3 INTEGER INCX,INCY,N
4 * ..
5 * .. Array Arguments ..
6 COMPLEX CX(*),CY(*)
7 * ..
8 *
9 * Purpose
10 * =======
11 *
12 * forms the dot product of two vectors, conjugating the first
13 * 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 COMPLEX CTEMP
25 INTEGER I,IX,IY
26 * ..
27 * .. Intrinsic Functions ..
28 INTRINSIC CONJG
29 * ..
30 CTEMP = (0.0,0.0)
31 CDOTC = (0.0,0.0)
32 IF (N.LE.0) RETURN
33 IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
34 *
35 * code for both increments equal to 1
36 *
37 DO I = 1,N
38 CTEMP = CTEMP + CONJG(CX(I))*CY(I)
39 END DO
40 ELSE
41 *
42 * code for unequal increments or equal increments
43 * not equal to 1
44 *
45 IX = 1
46 IY = 1
47 IF (INCX.LT.0) IX = (-N+1)*INCX + 1
48 IF (INCY.LT.0) IY = (-N+1)*INCY + 1
49 DO I = 1,N
50 CTEMP = CTEMP + CONJG(CX(IX))*CY(IY)
51 IX = IX + INCX
52 IY = IY + INCY
53 END DO
54 END IF
55 CDOTC = CTEMP
56 RETURN
57 END
2 * .. Scalar Arguments ..
3 INTEGER INCX,INCY,N
4 * ..
5 * .. Array Arguments ..
6 COMPLEX CX(*),CY(*)
7 * ..
8 *
9 * Purpose
10 * =======
11 *
12 * forms the dot product of two vectors, conjugating the first
13 * 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 COMPLEX CTEMP
25 INTEGER I,IX,IY
26 * ..
27 * .. Intrinsic Functions ..
28 INTRINSIC CONJG
29 * ..
30 CTEMP = (0.0,0.0)
31 CDOTC = (0.0,0.0)
32 IF (N.LE.0) RETURN
33 IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
34 *
35 * code for both increments equal to 1
36 *
37 DO I = 1,N
38 CTEMP = CTEMP + CONJG(CX(I))*CY(I)
39 END DO
40 ELSE
41 *
42 * code for unequal increments or equal increments
43 * not equal to 1
44 *
45 IX = 1
46 IY = 1
47 IF (INCX.LT.0) IX = (-N+1)*INCX + 1
48 IF (INCY.LT.0) IY = (-N+1)*INCY + 1
49 DO I = 1,N
50 CTEMP = CTEMP + CONJG(CX(IX))*CY(IY)
51 IX = IX + INCX
52 IY = IY + INCY
53 END DO
54 END IF
55 CDOTC = CTEMP
56 RETURN
57 END