--- rpl/lapack/blas/izamax.f 2010/12/21 13:51:26 1.6 +++ rpl/lapack/blas/izamax.f 2011/07/22 07:38:02 1.7 @@ -21,7 +21,7 @@ * ===================================================================== * * .. Local Scalars .. - DOUBLE PRECISION SMAX + DOUBLE PRECISION DMAX INTEGER I,IX * .. * .. External Functions .. @@ -32,28 +32,31 @@ IF (N.LT.1 .OR. INCX.LE.0) RETURN IZAMAX = 1 IF (N.EQ.1) RETURN - IF (INCX.EQ.1) GO TO 20 + IF (INCX.EQ.1) THEN * -* code for increment not equal to 1 +* code for increment equal to 1 * - IX = 1 - SMAX = DCABS1(ZX(1)) - IX = IX + INCX - DO 10 I = 2,N - IF (DCABS1(ZX(IX)).LE.SMAX) GO TO 5 - IZAMAX = I - SMAX = DCABS1(ZX(IX)) - 5 IX = IX + INCX - 10 CONTINUE - RETURN + DMAX = DCABS1(ZX(1)) + DO I = 2,N + IF (DCABS1(ZX(I)).GT.DMAX) THEN + IZAMAX = I + DMAX = DCABS1(ZX(I)) + END IF + END DO + ELSE * -* code for increment equal to 1 +* code for increment not equal to 1 * - 20 SMAX = DCABS1(ZX(1)) - DO 30 I = 2,N - IF (DCABS1(ZX(I)).LE.SMAX) GO TO 30 - IZAMAX = I - SMAX = DCABS1(ZX(I)) - 30 CONTINUE + IX = 1 + DMAX = DCABS1(ZX(1)) + IX = IX + INCX + DO I = 2,N + IF (DCABS1(ZX(IX)).GT.DMAX) THEN + IZAMAX = I + DMAX = DCABS1(ZX(IX)) + END IF + IX = IX + INCX + END DO + END IF RETURN END