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
CVSweb interface <joel.bertrand@systella.fr>