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

version 1.14, 2014/01/27 09:28:31 version 1.15, 2015/11/26 11:44:21
Line 1 Line 1
 *> \brief \b IZMAX1 finds the index of the vector element whose real part has maximum absolute value.  *> \brief \b IZMAX1 finds the index of the first vector element of maximum absolute value.
 *  *
 *  =========== DOCUMENTATION ===========  *  =========== DOCUMENTATION ===========
 *  *
Line 18 Line 18
 *  Definition:  *  Definition:
 *  ===========  *  ===========
 *  *
 *       INTEGER          FUNCTION IZMAX1( N, CX, INCX )  *       INTEGER          FUNCTION IZMAX1( N, ZX, INCX )
 *   * 
 *       .. Scalar Arguments ..  *       .. Scalar Arguments ..
 *       INTEGER            INCX, N  *       INTEGER            INCX, N
 *       ..  *       ..
 *       .. Array Arguments ..  *       .. Array Arguments ..
 *       COMPLEX*16         CX( * )  *       COMPLEX*16         ZX( * )
 *       ..  *       ..
 *    *  
 *  *
Line 33 Line 33
 *>  *>
 *> \verbatim  *> \verbatim
 *>  *>
 *> IZMAX1 finds the index of the element whose real part has maximum  *> IZMAX1 finds the index of the first vector element of maximum absolute value.
 *> absolute value.  
 *>  *>
 *> Based on IZAMAX from Level 1 BLAS.  *> Based on IZAMAX from Level 1 BLAS.
 *> The change is to use the 'genuine' absolute value.  *> The change is to use the 'genuine' absolute value.
Line 46 Line 45
 *> \param[in] N  *> \param[in] N
 *> \verbatim  *> \verbatim
 *>          N is INTEGER  *>          N is INTEGER
 *>          The number of elements in the vector CX.  *>          The number of elements in the vector ZX.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in] CX  *> \param[in] ZX
 *> \verbatim  *> \verbatim
 *>          CX is COMPLEX*16 array, dimension (N)  *>          ZX is COMPLEX*16 array, dimension (N)
 *>          The vector whose elements will be summed.  *>          The vector ZX. The IZMAX1 function returns the index of its first
   *>          element of maximum absolute value.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in] INCX  *> \param[in] INCX
 *> \verbatim  *> \verbatim
 *>          INCX is INTEGER  *>          INCX is INTEGER
 *>          The spacing between successive values of CX.  INCX >= 1.  *>          The spacing between successive values of ZX.  INCX >= 1.
 *> \endverbatim  *> \endverbatim
 *  *
 *  Authors:  *  Authors:
Line 69 Line 69
 *> \author Univ. of Colorado Denver   *> \author Univ. of Colorado Denver 
 *> \author NAG Ltd.   *> \author NAG Ltd. 
 *  *
 *> \date September 2012  *> \date February 2014
 *  *
 *> \ingroup complex16OTHERauxiliary  *> \ingroup complexOTHERauxiliary
 *  *
 *> \par Contributors:  *> \par Contributors:
 *  ==================  *  ==================
Line 79 Line 79
 *> Nick Higham for use with ZLACON.  *> Nick Higham for use with ZLACON.
 *  *
 *  =====================================================================  *  =====================================================================
       INTEGER          FUNCTION IZMAX1( N, CX, INCX )        INTEGER FUNCTION IZMAX1( N, ZX, INCX )
 *  *
 *  -- LAPACK auxiliary routine (version 3.4.2) --  *  -- 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..--
 *     September 2012  *     February 2014
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       INTEGER            INCX, N        INTEGER            INCX, N
 *     ..  *     ..
 *     .. Array Arguments ..  *     .. Array Arguments ..
       COMPLEX*16         CX( * )        COMPLEX*16         ZX(*)
 *     ..  *     ..
 *  *
 * =====================================================================  *  =====================================================================
 *  *
 *     .. 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.14  
changed lines
  Added in v.1.15


CVSweb interface <joel.bertrand@systella.fr>