Diff for /rpl/lapack/lapack/izmax1.f between versions 1.1.1.1 and 1.15

version 1.1.1.1, 2010/01/26 15:22:45 version 1.15, 2015/11/26 11:44:21
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.6.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.1.1.1  
changed lines
  Added in v.1.15


CVSweb interface <joel.bertrand@systella.fr>