1 INTEGER FUNCTION ICAMAX(N,CX,INCX)
2 * .. Scalar Arguments ..
3 INTEGER INCX,N
4 * ..
5 * .. Array Arguments ..
6 COMPLEX CX(*)
7 * ..
8 *
9 * Purpose
10 * =======
11 *
12 * ICAMAX finds the index of element having max. absolute value.
13 *
14 * Further Details
15 * ===============
16 *
17 * jack dongarra, linpack, 3/11/78.
18 * modified 3/93 to return if incx .le. 0.
19 * modified 12/3/93, array(1) declarations changed to array(*)
20 *
21 * =====================================================================
22 *
23 * .. Local Scalars ..
24 REAL SMAX
25 INTEGER I,IX
26 * ..
27 * .. External Functions ..
28 REAL SCABS1
29 EXTERNAL SCABS1
30 * ..
31 ICAMAX = 0
32 IF (N.LT.1 .OR. INCX.LE.0) RETURN
33 ICAMAX = 1
34 IF (N.EQ.1) RETURN
35 IF (INCX.EQ.1) THEN
36 *
37 * code for increment equal to 1
38 *
39 SMAX = SCABS1(CX(1))
40 DO I = 2,N
41 IF (SCABS1(CX(I)).GT.SMAX) THEN
42 ICAMAX = I
43 SMAX = SCABS1(CX(I))
44 END IF
45 END DO
46 ELSE
47 *
48 * code for increment not equal to 1
49 *
50 IX = 1
51 SMAX = SCABS1(CX(1))
52 IX = IX + INCX
53 DO I = 2,N
54 IF (SCABS1(CX(IX)).GT.SMAX) THEN
55 ICAMAX = I
56 SMAX = SCABS1(CX(IX))
57 END IF
58 IX = IX + INCX
59 END DO
60 END IF
61 RETURN
62 END
2 * .. Scalar Arguments ..
3 INTEGER INCX,N
4 * ..
5 * .. Array Arguments ..
6 COMPLEX CX(*)
7 * ..
8 *
9 * Purpose
10 * =======
11 *
12 * ICAMAX finds the index of element having max. absolute value.
13 *
14 * Further Details
15 * ===============
16 *
17 * jack dongarra, linpack, 3/11/78.
18 * modified 3/93 to return if incx .le. 0.
19 * modified 12/3/93, array(1) declarations changed to array(*)
20 *
21 * =====================================================================
22 *
23 * .. Local Scalars ..
24 REAL SMAX
25 INTEGER I,IX
26 * ..
27 * .. External Functions ..
28 REAL SCABS1
29 EXTERNAL SCABS1
30 * ..
31 ICAMAX = 0
32 IF (N.LT.1 .OR. INCX.LE.0) RETURN
33 ICAMAX = 1
34 IF (N.EQ.1) RETURN
35 IF (INCX.EQ.1) THEN
36 *
37 * code for increment equal to 1
38 *
39 SMAX = SCABS1(CX(1))
40 DO I = 2,N
41 IF (SCABS1(CX(I)).GT.SMAX) THEN
42 ICAMAX = I
43 SMAX = SCABS1(CX(I))
44 END IF
45 END DO
46 ELSE
47 *
48 * code for increment not equal to 1
49 *
50 IX = 1
51 SMAX = SCABS1(CX(1))
52 IX = IX + INCX
53 DO I = 2,N
54 IF (SCABS1(CX(IX)).GT.SMAX) THEN
55 ICAMAX = I
56 SMAX = SCABS1(CX(IX))
57 END IF
58 IX = IX + INCX
59 END DO
60 END IF
61 RETURN
62 END