Diff for /rpl/lapack/lapack/izmax1.f between versions 1.7 and 1.17

version 1.7, 2010/12/21 13:53:41 version 1.17, 2017/06/17 10:54:07
Line 1 Line 1
       INTEGER          FUNCTION IZMAX1( N, CX, INCX )  *> \brief \b IZMAX1 finds the index of the first vector element of maximum absolute value.
 *  *
 *  -- LAPACK auxiliary routine (version 3.2) --  *  =========== DOCUMENTATION ===========
   *
   * Online html documentation available at
   *            http://www.netlib.org/lapack/explore-html/
   *
   *> \htmlonly
   *> Download IZMAX1 + dependencies
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/izmax1.f">
   *> [TGZ]</a>
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/izmax1.f">
   *> [ZIP]</a>
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/izmax1.f">
   *> [TXT]</a>
   *> \endhtmlonly
   *
   *  Definition:
   *  ===========
   *
   *       INTEGER          FUNCTION IZMAX1( N, ZX, INCX )
   *
   *       .. Scalar Arguments ..
   *       INTEGER            INCX, N
   *       ..
   *       .. Array Arguments ..
   *       COMPLEX*16         ZX( * )
   *       ..
   *
   *
   *> \par Purpose:
   *  =============
   *>
   *> \verbatim
   *>
   *> IZMAX1 finds the index of the first vector element of maximum absolute value.
   *>
   *> Based on IZAMAX from Level 1 BLAS.
   *> The change is to use the 'genuine' absolute value.
   *> \endverbatim
   *
   *  Arguments:
   *  ==========
   *
   *> \param[in] N
   *> \verbatim
   *>          N is INTEGER
   *>          The number of elements in the vector ZX.
   *> \endverbatim
   *>
   *> \param[in] ZX
   *> \verbatim
   *>          ZX is COMPLEX*16 array, dimension (N)
   *>          The vector ZX. The IZMAX1 function returns the index of its first
   *>          element of maximum absolute value.
   *> \endverbatim
   *>
   *> \param[in] INCX
   *> \verbatim
   *>          INCX is INTEGER
   *>          The spacing between successive values of ZX.  INCX >= 1.
   *> \endverbatim
   *
   *  Authors:
   *  ========
   *
   *> \author Univ. of Tennessee
   *> \author Univ. of California Berkeley
   *> \author Univ. of Colorado Denver
   *> \author NAG Ltd.
   *
   *> \date February 2014
   *
   *> \ingroup complexOTHERauxiliary
   *
   *> \par Contributors:
   *  ==================
   *>
   *> Nick Higham for use with ZLACON.
   *
   *  =====================================================================
         INTEGER FUNCTION IZMAX1( N, ZX, INCX )
   *
   *  -- LAPACK auxiliary routine (version 3.7.0) --
 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --  *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--  *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
 *     November 2006  *     February 2014
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       INTEGER            INCX, N        INTEGER            INCX, N
 *     ..  *     ..
 *     .. Array Arguments ..  *     .. Array Arguments ..
       COMPLEX*16         CX( * )        COMPLEX*16         ZX(*)
 *     ..  *     ..
 *  *
 *  Purpose  *  =====================================================================
 *  =======  
 *  
 *  IZMAX1 finds the index of the element whose real part has maximum  
 *  absolute value.  
 *  
 *  Based on IZAMAX from Level 1 BLAS.  
 *  The change is to use the 'genuine' absolute value.  
 *  
 *  Contributed by Nick Higham for use with ZLACON.  
 *  
 *  Arguments  
 *  =========  
 *  
 *  N       (input) INTEGER  
 *          The number of elements in the vector CX.  
 *  
 *  CX      (input) COMPLEX*16 array, dimension (N)  
 *          The vector whose elements will be summed.  
 *  
 *  INCX    (input) INTEGER  
 *          The spacing between successive values of CX.  INCX >= 1.  
 *  
 * =====================================================================  
 *  *
 *     .. Local Scalars ..  *     .. Local Scalars ..
         DOUBLE PRECISION   DMAX
       INTEGER            I, IX        INTEGER            I, IX
       DOUBLE PRECISION   SMAX  
       COMPLEX*16         ZDUM  
 *     ..  *     ..
 *     .. Intrinsic Functions ..  *     .. Intrinsic Functions ..
       INTRINSIC          ABS        INTRINSIC          ABS
 *     ..  *     ..
 *     .. Statement Functions ..  
       DOUBLE PRECISION   CABS1  
 *     ..  
 *     .. Statement Function definitions ..  
 *  
 *     NEXT LINE IS THE ONLY MODIFICATION.  
       CABS1( ZDUM ) = ABS( ZDUM )  
 *     ..  
 *     .. Executable Statements ..  *     .. Executable Statements ..
 *  *
       IZMAX1 = 0        IZMAX1 = 0
       IF( N.LT.1 )        IF (N.LT.1 .OR. INCX.LE.0) RETURN
      $   RETURN  
       IZMAX1 = 1        IZMAX1 = 1
       IF( N.EQ.1 )        IF (N.EQ.1) RETURN
      $   RETURN        IF (INCX.EQ.1) THEN
       IF( INCX.EQ.1 )  *
      $   GO TO 30  *        code for increment equal to 1
 *  
 *     CODE FOR INCREMENT NOT EQUAL TO 1  
 *  
       IX = 1  
       SMAX = CABS1( CX( 1 ) )  
       IX = IX + INCX  
       DO 20 I = 2, N  
          IF( CABS1( CX( IX ) ).LE.SMAX )  
      $      GO TO 10  
          IZMAX1 = I  
          SMAX = CABS1( CX( IX ) )  
    10    CONTINUE  
          IX = IX + INCX  
    20 CONTINUE  
       RETURN  
 *  *
 *     CODE FOR INCREMENT EQUAL TO 1           DMAX = ABS(ZX(1))
            DO I = 2,N
               IF (ABS(ZX(I)).GT.DMAX) THEN
                  IZMAX1 = I
                  DMAX = ABS(ZX(I))
               END IF
            END DO
         ELSE
 *  *
    30 CONTINUE  *        code for increment not equal to 1
       SMAX = CABS1( CX( 1 ) )  *
       DO 40 I = 2, N           IX = 1
          IF( CABS1( CX( I ) ).LE.SMAX )           DMAX = ABS(ZX(1))
      $      GO TO 40           IX = IX + INCX
          IZMAX1 = I           DO I = 2,N
          SMAX = CABS1( CX( I ) )              IF (ABS(ZX(IX)).GT.DMAX) THEN
    40 CONTINUE                 IZMAX1 = I
                  DMAX = ABS(ZX(IX))
               END IF
               IX = IX + INCX
            END DO
         END IF
       RETURN        RETURN
 *  *
 *     End of IZMAX1  *     End of IZMAX1

Removed from v.1.7  
changed lines
  Added in v.1.17


CVSweb interface <joel.bertrand@systella.fr>