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