Annotation of rpl/lapack/lapack/izmax1.f, revision 1.9
1.9 ! bertrand 1: *> \brief \b IZMAX1
! 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 November 2011
! 73: *
! 74: *> \ingroup complex16OTHERauxiliary
! 75: *
! 76: *> \par Contributors:
! 77: * ==================
! 78: *>
! 79: *> Nick Higham for use with ZLACON.
! 80: *
! 81: * =====================================================================
1.1 bertrand 82: INTEGER FUNCTION IZMAX1( N, CX, INCX )
83: *
1.9 ! bertrand 84: * -- LAPACK auxiliary routine (version 3.4.0) --
1.1 bertrand 85: * -- LAPACK is a software package provided by Univ. of Tennessee, --
86: * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
1.9 ! bertrand 87: * November 2011
1.1 bertrand 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
CVSweb interface <joel.bertrand@systella.fr>