LAPACK  3.4.2
LAPACK: Linear Algebra PACKage
 All Files Functions Groups
izmax1.f
Go to the documentation of this file.
1 *> \brief \b IZMAX1 finds the index of the vector element whose real part has maximum absolute value.
2 *
3 * =========== DOCUMENTATION ===========
4 *
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
7 *
8 *> \htmlonly
9 *> Download IZMAX1 + dependencies
10 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/izmax1.f">
11 *> [TGZ]</a>
12 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/izmax1.f">
13 *> [ZIP]</a>
14 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/izmax1.f">
15 *> [TXT]</a>
16 *> \endhtmlonly
17 *
18 * Definition:
19 * ===========
20 *
21 * INTEGER FUNCTION IZMAX1( N, CX, INCX )
22 *
23 * .. Scalar Arguments ..
24 * INTEGER INCX, N
25 * ..
26 * .. Array Arguments ..
27 * COMPLEX*16 CX( * )
28 * ..
29 *
30 *
31 *> \par Purpose:
32 * =============
33 *>
34 *> \verbatim
35 *>
36 *> IZMAX1 finds the index of the element whose real part has maximum
37 *> absolute value.
38 *>
39 *> Based on IZAMAX from Level 1 BLAS.
40 *> The change is to use the 'genuine' absolute value.
41 *> \endverbatim
42 *
43 * Arguments:
44 * ==========
45 *
46 *> \param[in] N
47 *> \verbatim
48 *> N is INTEGER
49 *> The number of elements in the vector CX.
50 *> \endverbatim
51 *>
52 *> \param[in] CX
53 *> \verbatim
54 *> CX is COMPLEX*16 array, dimension (N)
55 *> The vector whose elements will be summed.
56 *> \endverbatim
57 *>
58 *> \param[in] INCX
59 *> \verbatim
60 *> INCX is INTEGER
61 *> The spacing between successive values of CX. INCX >= 1.
62 *> \endverbatim
63 *
64 * Authors:
65 * ========
66 *
67 *> \author Univ. of Tennessee
68 *> \author Univ. of California Berkeley
69 *> \author Univ. of Colorado Denver
70 *> \author NAG Ltd.
71 *
72 *> \date September 2012
73 *
74 *> \ingroup complex16OTHERauxiliary
75 *
76 *> \par Contributors:
77 * ==================
78 *>
79 *> Nick Higham for use with ZLACON.
80 *
81 * =====================================================================
82  INTEGER FUNCTION izmax1( N, CX, INCX )
83 *
84 * -- LAPACK auxiliary routine (version 3.4.2) --
85 * -- LAPACK is a software package provided by Univ. of Tennessee, --
86 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
87 * September 2012
88 *
89 * .. Scalar Arguments ..
90  INTEGER incx, n
91 * ..
92 * .. Array Arguments ..
93  COMPLEX*16 cx( * )
94 * ..
95 *
96 * =====================================================================
97 *
98 * .. Local Scalars ..
99  INTEGER i, ix
100  DOUBLE PRECISION smax
101  COMPLEX*16 zdum
102 * ..
103 * .. Intrinsic Functions ..
104  INTRINSIC abs
105 * ..
106 * .. Statement Functions ..
107  DOUBLE PRECISION cabs1
108 * ..
109 * .. Statement Function definitions ..
110 *
111 * NEXT LINE IS THE ONLY MODIFICATION.
112  cabs1( zdum ) = abs( zdum )
113 * ..
114 * .. Executable Statements ..
115 *
116  izmax1 = 0
117  IF( n.LT.1 )
118  $ return
119  izmax1 = 1
120  IF( n.EQ.1 )
121  $ return
122  IF( incx.EQ.1 )
123  $ go to 30
124 *
125 * CODE FOR INCREMENT NOT EQUAL TO 1
126 *
127  ix = 1
128  smax = cabs1( cx( 1 ) )
129  ix = ix + incx
130  DO 20 i = 2, n
131  IF( cabs1( cx( ix ) ).LE.smax )
132  $ go to 10
133  izmax1 = i
134  smax = cabs1( cx( ix ) )
135  10 continue
136  ix = ix + incx
137  20 continue
138  return
139 *
140 * CODE FOR INCREMENT EQUAL TO 1
141 *
142  30 continue
143  smax = cabs1( cx( 1 ) )
144  DO 40 i = 2, n
145  IF( cabs1( cx( i ) ).LE.smax )
146  $ go to 40
147  izmax1 = i
148  smax = cabs1( cx( i ) )
149  40 continue
150  return
151 *
152 * End of IZMAX1
153 *
154  END