1*> \brief \b IZMAX1 finds the index of the first vector element of 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, ZX, INCX ) 22* 23* .. Scalar Arguments .. 24* INTEGER INCX, N 25* .. 26* .. Array Arguments .. 27* COMPLEX*16 ZX( * ) 28* .. 29* 30* 31*> \par Purpose: 32* ============= 33*> 34*> \verbatim 35*> 36*> IZMAX1 finds the index of the first vector element of maximum absolute value. 37*> 38*> Based on IZAMAX from Level 1 BLAS. 39*> The change is to use the 'genuine' absolute value. 40*> \endverbatim 41* 42* Arguments: 43* ========== 44* 45*> \param[in] N 46*> \verbatim 47*> N is INTEGER 48*> The number of elements in the vector ZX. 49*> \endverbatim 50*> 51*> \param[in] ZX 52*> \verbatim 53*> ZX is COMPLEX*16 array, dimension (N) 54*> The vector ZX. The IZMAX1 function returns the index of its first 55*> element of maximum absolute value. 56*> \endverbatim 57*> 58*> \param[in] INCX 59*> \verbatim 60*> INCX is INTEGER 61*> The spacing between successive values of ZX. 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*> \ingroup complexOTHERauxiliary 73* 74*> \par Contributors: 75* ================== 76*> 77*> Nick Higham for use with ZLACON. 78* 79* ===================================================================== 80 INTEGER FUNCTION IZMAX1( N, ZX, INCX ) 81* 82* -- LAPACK auxiliary routine -- 83* -- LAPACK is a software package provided by Univ. of Tennessee, -- 84* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 85* 86* .. Scalar Arguments .. 87 INTEGER INCX, N 88* .. 89* .. Array Arguments .. 90 COMPLEX*16 ZX(*) 91* .. 92* 93* ===================================================================== 94* 95* .. Local Scalars .. 96 DOUBLE PRECISION DMAX 97 INTEGER I, IX 98* .. 99* .. Intrinsic Functions .. 100 INTRINSIC ABS 101* .. 102* .. Executable Statements .. 103* 104 IZMAX1 = 0 105 IF (N.LT.1 .OR. INCX.LE.0) RETURN 106 IZMAX1 = 1 107 IF (N.EQ.1) RETURN 108 IF (INCX.EQ.1) THEN 109* 110* code for increment equal to 1 111* 112 DMAX = ABS(ZX(1)) 113 DO I = 2,N 114 IF (ABS(ZX(I)).GT.DMAX) THEN 115 IZMAX1 = I 116 DMAX = ABS(ZX(I)) 117 END IF 118 END DO 119 ELSE 120* 121* code for increment not equal to 1 122* 123 IX = 1 124 DMAX = ABS(ZX(1)) 125 IX = IX + INCX 126 DO I = 2,N 127 IF (ABS(ZX(IX)).GT.DMAX) THEN 128 IZMAX1 = I 129 DMAX = ABS(ZX(IX)) 130 END IF 131 IX = IX + INCX 132 END DO 133 END IF 134 RETURN 135* 136* End of IZMAX1 137* 138 END 139