1       INTEGER FUNCTION IDAMAX(N,DX,INCX)
 2 *     .. Scalar Arguments ..
 3       INTEGER INCX,N
 4 *     ..
 5 *     .. Array Arguments ..
 6       DOUBLE PRECISION DX(*)
 7 *     ..
 8 *
 9 *  Purpose
10 *  =======
11 *
12 *     IDAMAX 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       DOUBLE PRECISION DMAX
25       INTEGER I,IX
26 *     ..
27 *     .. Intrinsic Functions ..
28       INTRINSIC DABS
29 *     ..
30       IDAMAX = 0
31       IF (N.LT.1 .OR. INCX.LE.0RETURN
32       IDAMAX = 1
33       IF (N.EQ.1RETURN
34       IF (INCX.EQ.1THEN
35 *
36 *        code for increment equal to 1
37 *
38          DMAX = DABS(DX(1))
39          DO I = 2,N
40             IF (DABS(DX(I)).GT.DMAX) THEN
41                IDAMAX = I
42                DMAX = DABS(DX(I))
43             END IF
44          END DO
45       ELSE
46 *
47 *        code for increment not equal to 1
48 *
49          IX = 1
50          DMAX = DABS(DX(1))
51          IX = IX + INCX
52          DO I = 2,N
53             IF (DABS(DX(IX)).GT.DMAX) THEN
54                IDAMAX = I
55                DMAX = DABS(DX(IX))
56             END IF
57             IX = IX + INCX
58          END DO
59       END IF
60       RETURN
61       END