1*> \brief \b ICMAX1 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 ICMAX1 + dependencies 10*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/icmax1.f"> 11*> [TGZ]</a> 12*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/icmax1.f"> 13*> [ZIP]</a> 14*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/icmax1.f"> 15*> [TXT]</a> 16*> \endhtmlonly 17* 18* Definition: 19* =========== 20* 21* INTEGER FUNCTION ICMAX1( N, CX, INCX ) 22* 23* .. Scalar Arguments .. 24* INTEGER INCX, N 25* .. 26* .. Array Arguments .. 27* COMPLEX CX( * ) 28* .. 29* 30* 31*> \par Purpose: 32* ============= 33*> 34*> \verbatim 35*> 36*> ICMAX1 finds the index of the first vector element of maximum absolute value. 37*> 38*> Based on ICAMAX 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 CX. 49*> \endverbatim 50*> 51*> \param[in] CX 52*> \verbatim 53*> CX is COMPLEX array, dimension (N) 54*> The vector CX. The ICMAX1 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 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*> \ingroup complexOTHERauxiliary 73* 74*> \par Contributors: 75* ================== 76*> 77*> Nick Higham for use with CLACON. 78* 79* ===================================================================== 80 INTEGER FUNCTION ICMAX1( N, CX, 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 CX(*) 91* .. 92* 93* ===================================================================== 94* 95* .. Local Scalars .. 96 REAL SMAX 97 INTEGER I, IX 98* .. 99* .. Intrinsic Functions .. 100 INTRINSIC ABS 101* .. 102* .. Executable Statements .. 103* 104 ICMAX1 = 0 105 IF (N.LT.1 .OR. INCX.LE.0) RETURN 106 ICMAX1 = 1 107 IF (N.EQ.1) RETURN 108 IF (INCX.EQ.1) THEN 109* 110* code for increment equal to 1 111* 112 SMAX = ABS(CX(1)) 113 DO I = 2,N 114 IF (ABS(CX(I)).GT.SMAX) THEN 115 ICMAX1 = I 116 SMAX = ABS(CX(I)) 117 END IF 118 END DO 119 ELSE 120* 121* code for increment not equal to 1 122* 123 IX = 1 124 SMAX = ABS(CX(1)) 125 IX = IX + INCX 126 DO I = 2,N 127 IF (ABS(CX(IX)).GT.SMAX) THEN 128 ICMAX1 = I 129 SMAX = ABS(CX(IX)) 130 END IF 131 IX = IX + INCX 132 END DO 133 END IF 134 RETURN 135* 136* End of ICMAX1 137* 138 END 139