home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / lib / mathlib / libblas / src_original / isamax.f < prev    next >
Encoding:
Text File  |  1994-08-02  |  1.3 KB  |  59 lines

  1.       INTEGER          FUNCTION ISAMAX( N, SX, INCX )
  2. *
  3. *     finds the index of element having max. absolute value.
  4. *     jack dongarra, linpack, 3/11/78.
  5. *
  6. *     .. Scalar Arguments ..
  7.       INTEGER                           INCX, N
  8. *     ..
  9. *     .. Array Arguments ..
  10.       REAL                              SX( 1 )
  11. *     ..
  12. *     .. Local Scalars ..
  13.       INTEGER                           I, IX
  14.       REAL                              SMAX
  15. *     ..
  16. *     .. Intrinsic Functions ..
  17.       INTRINSIC                         ABS
  18. *     ..
  19. *     .. Executable Statements ..
  20. *
  21.       ISAMAX = 0
  22.       IF( N.LT.1 )
  23.      $   RETURN
  24.       ISAMAX = 1
  25.       IF( N.EQ.1 )
  26.      $   RETURN
  27.       IF( INCX.EQ.1 )
  28.      $   GO TO 30
  29. *
  30. *        code for increment not equal to 1
  31. *
  32.       IX = 1
  33.       IF( INCX.LT.0 )
  34.      $   IX = 1 - ( N-1 )*INCX
  35.       SMAX = ABS( SX( IX ) )
  36.       IX = IX + INCX
  37.       DO 20 I = 2, N
  38.          IF( ABS( SX( IX ) ).LE.SMAX )
  39.      $      GO TO 10
  40.          ISAMAX = I
  41.          SMAX = ABS( SX( IX ) )
  42.    10    IX = IX + INCX
  43.    20 CONTINUE
  44.       IF( INCX.LT.0 )
  45.      $   ISAMAX = N - ISAMAX + 1
  46.       RETURN
  47. *
  48. *        code for increment equal to 1
  49. *
  50.    30 SMAX = ABS( SX( 1 ) )
  51.       DO 40 I = 2, N
  52.          IF( ABS( SX( I ) ).LE.SMAX )
  53.      $      GO TO 40
  54.          ISAMAX = I
  55.          SMAX = ABS( SX( I ) )
  56.    40 CONTINUE
  57.       RETURN
  58.       END
  59.