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
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