File:  [local] / rpl / lapack / lapack / izmax1.f
Revision 1.8: download - view: text, annotated - select for diffs - revision graph
Fri Jul 22 07:40:26 2011 UTC (12 years, 9 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_3, rpl-4_1_2, rpl-4_1_1, HEAD
Cohérence.

    1:       INTEGER          FUNCTION IZMAX1( N, CX, INCX )
    2: *
    3: *  -- LAPACK auxiliary routine (version 3.2) --
    4: *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
    5: *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
    6: *     November 2006
    7: *
    8: *     .. Scalar Arguments ..
    9:       INTEGER            INCX, N
   10: *     ..
   11: *     .. Array Arguments ..
   12:       COMPLEX*16         CX( * )
   13: *     ..
   14: *
   15: *  Purpose
   16: *  =======
   17: *
   18: *  IZMAX1 finds the index of the element whose real part has maximum
   19: *  absolute value.
   20: *
   21: *  Based on IZAMAX from Level 1 BLAS.
   22: *  The change is to use the 'genuine' absolute value.
   23: *
   24: *  Contributed by Nick Higham for use with ZLACON.
   25: *
   26: *  Arguments
   27: *  =========
   28: *
   29: *  N       (input) INTEGER
   30: *          The number of elements in the vector CX.
   31: *
   32: *  CX      (input) COMPLEX*16 array, dimension (N)
   33: *          The vector whose elements will be summed.
   34: *
   35: *  INCX    (input) INTEGER
   36: *          The spacing between successive values of CX.  INCX >= 1.
   37: *
   38: * =====================================================================
   39: *
   40: *     .. Local Scalars ..
   41:       INTEGER            I, IX
   42:       DOUBLE PRECISION   SMAX
   43:       COMPLEX*16         ZDUM
   44: *     ..
   45: *     .. Intrinsic Functions ..
   46:       INTRINSIC          ABS
   47: *     ..
   48: *     .. Statement Functions ..
   49:       DOUBLE PRECISION   CABS1
   50: *     ..
   51: *     .. Statement Function definitions ..
   52: *
   53: *     NEXT LINE IS THE ONLY MODIFICATION.
   54:       CABS1( ZDUM ) = ABS( ZDUM )
   55: *     ..
   56: *     .. Executable Statements ..
   57: *
   58:       IZMAX1 = 0
   59:       IF( N.LT.1 )
   60:      $   RETURN
   61:       IZMAX1 = 1
   62:       IF( N.EQ.1 )
   63:      $   RETURN
   64:       IF( INCX.EQ.1 )
   65:      $   GO TO 30
   66: *
   67: *     CODE FOR INCREMENT NOT EQUAL TO 1
   68: *
   69:       IX = 1
   70:       SMAX = CABS1( CX( 1 ) )
   71:       IX = IX + INCX
   72:       DO 20 I = 2, N
   73:          IF( CABS1( CX( IX ) ).LE.SMAX )
   74:      $      GO TO 10
   75:          IZMAX1 = I
   76:          SMAX = CABS1( CX( IX ) )
   77:    10    CONTINUE
   78:          IX = IX + INCX
   79:    20 CONTINUE
   80:       RETURN
   81: *
   82: *     CODE FOR INCREMENT EQUAL TO 1
   83: *
   84:    30 CONTINUE
   85:       SMAX = CABS1( CX( 1 ) )
   86:       DO 40 I = 2, N
   87:          IF( CABS1( CX( I ) ).LE.SMAX )
   88:      $      GO TO 40
   89:          IZMAX1 = I
   90:          SMAX = CABS1( CX( I ) )
   91:    40 CONTINUE
   92:       RETURN
   93: *
   94: *     End of IZMAX1
   95: *
   96:       END

CVSweb interface <joel.bertrand@systella.fr>