1       INTEGER          FUNCTION IZMAX1( N, CX, INCX )
 2 *
 3 *  -- LAPACK auxiliary routine (version 3.2) --
 4 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
 5 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
 6 *     November 2006
 7 *
 8 *     .. Scalar Arguments ..
 9       INTEGER            INCX, N
10 *     ..
11 *     .. Array Arguments ..
12       COMPLEX*16         CX( * )
13 *     ..
14 *
15 *  Purpose
16 *  =======
17 *
18 *  IZMAX1 finds the index of the element whose real part has maximum
19 *  absolute value.
20 *
21 *  Based on IZAMAX from Level 1 BLAS.
22 *  The change is to use the 'genuine' absolute value.
23 *
24 *  Contributed by Nick Higham for use with ZLACON.
25 *
26 *  Arguments
27 *  =========
28 *
29 *  N       (input) INTEGER
30 *          The number of elements in the vector CX.
31 *
32 *  CX      (input) COMPLEX*16 array, dimension (N)
33 *          The vector whose elements will be summed.
34 *
35 *  INCX    (input) INTEGER
36 *          The spacing between successive values of CX.  INCX >= 1.
37 *
38 * =====================================================================
39 *
40 *     .. Local Scalars ..
41       INTEGER            I, IX
42       DOUBLE PRECISION   SMAX
43       COMPLEX*16         ZDUM
44 *     ..
45 *     .. Intrinsic Functions ..
46       INTRINSIC          ABS
47 *     ..
48 *     .. Statement Functions ..
49       DOUBLE PRECISION   CABS1
50 *     ..
51 *     .. Statement Function definitions ..
52 *
53 *     NEXT LINE IS THE ONLY MODIFICATION.
54       CABS1( ZDUM ) = ABS( ZDUM )
55 *     ..
56 *     .. Executable Statements ..
57 *
58       IZMAX1 = 0
59       IF( N.LT.1 )
60      $   RETURN
61       IZMAX1 = 1
62       IF( N.EQ.1 )
63      $   RETURN
64       IF( INCX.EQ.1 )
65      $   GO TO 30
66 *
67 *     CODE FOR INCREMENT NOT EQUAL TO 1
68 *
69       IX = 1
70       SMAX = CABS1( CX( 1 ) )
71       IX = IX + INCX
72       DO 20 I = 2, N
73          IF( CABS1( CX( IX ) ).LE.SMAX )
74      $      GO TO 10
75          IZMAX1 = I
76          SMAX = CABS1( CX( IX ) )
77    10    CONTINUE
78          IX = IX + INCX
79    20 CONTINUE
80       RETURN
81 *
82 *     CODE FOR INCREMENT EQUAL TO 1
83 *
84    30 CONTINUE
85       SMAX = CABS1( CX( 1 ) )
86       DO 40 I = 2, N
87          IF( CABS1( CX( I ) ).LE.SMAX )
88      $      GO TO 40
89          IZMAX1 = I
90          SMAX = CABS1( CX( I ) )
91    40 CONTINUE
92       RETURN
93 *
94 *     End of IZMAX1
95 *
96       END