Annotation of rpl/lapack/blas/idamax.f, revision 1.7
1.1 bertrand 1: INTEGER FUNCTION IDAMAX(N,DX,INCX)
2: * .. Scalar Arguments ..
3: INTEGER INCX,N
4: * ..
5: * .. Array Arguments ..
6: DOUBLE PRECISION DX(*)
7: * ..
8: *
9: * Purpose
10: * =======
11: *
12: * IDAMAX finds the index of element having max. absolute value.
13: *
14: * Further Details
15: * ===============
16: *
17: * jack dongarra, linpack, 3/11/78.
18: * modified 3/93 to return if incx .le. 0.
19: * modified 12/3/93, array(1) declarations changed to array(*)
20: *
21: * =====================================================================
22: *
23: * .. Local Scalars ..
24: DOUBLE PRECISION DMAX
25: INTEGER I,IX
26: * ..
27: * .. Intrinsic Functions ..
28: INTRINSIC DABS
29: * ..
30: IDAMAX = 0
31: IF (N.LT.1 .OR. INCX.LE.0) RETURN
32: IDAMAX = 1
33: IF (N.EQ.1) RETURN
1.7 ! bertrand 34: IF (INCX.EQ.1) THEN
1.1 bertrand 35: *
1.7 ! bertrand 36: * code for increment equal to 1
1.1 bertrand 37: *
1.7 ! bertrand 38: DMAX = DABS(DX(1))
! 39: DO I = 2,N
! 40: IF (DABS(DX(I)).GT.DMAX) THEN
! 41: IDAMAX = I
! 42: DMAX = DABS(DX(I))
! 43: END IF
! 44: END DO
! 45: ELSE
1.1 bertrand 46: *
1.7 ! bertrand 47: * code for increment not equal to 1
1.1 bertrand 48: *
1.7 ! bertrand 49: IX = 1
! 50: DMAX = DABS(DX(1))
! 51: IX = IX + INCX
! 52: DO I = 2,N
! 53: IF (DABS(DX(IX)).GT.DMAX) THEN
! 54: IDAMAX = I
! 55: DMAX = DABS(DX(IX))
! 56: END IF
! 57: IX = IX + INCX
! 58: END DO
! 59: END IF
1.1 bertrand 60: RETURN
61: END
CVSweb interface <joel.bertrand@systella.fr>