LAPACK  3.4.1
LAPACK: Linear Algebra PACKage
icamax.f
Go to the documentation of this file.
00001 *> \brief \b ICAMAX
00002 *
00003 *  =========== DOCUMENTATION ===========
00004 *
00005 * Online html documentation available at 
00006 *            http://www.netlib.org/lapack/explore-html/ 
00007 *
00008 *  Definition:
00009 *  ===========
00010 *
00011 *       INTEGER FUNCTION ICAMAX(N,CX,INCX)
00012 * 
00013 *       .. Scalar Arguments ..
00014 *       INTEGER INCX,N
00015 *       ..
00016 *       .. Array Arguments ..
00017 *       COMPLEX CX(*)
00018 *       ..
00019 *  
00020 *
00021 *> \par Purpose:
00022 *  =============
00023 *>
00024 *> \verbatim
00025 *>
00026 *>    ICAMAX finds the index of element having max. absolute value.
00027 *> \endverbatim
00028 *
00029 *  Authors:
00030 *  ========
00031 *
00032 *> \author Univ. of Tennessee 
00033 *> \author Univ. of California Berkeley 
00034 *> \author Univ. of Colorado Denver 
00035 *> \author NAG Ltd. 
00036 *
00037 *> \date November 2011
00038 *
00039 *> \ingroup aux_blas
00040 *
00041 *> \par Further Details:
00042 *  =====================
00043 *>
00044 *> \verbatim
00045 *>
00046 *>     jack dongarra, linpack, 3/11/78.
00047 *>     modified 3/93 to return if incx .le. 0.
00048 *>     modified 12/3/93, array(1) declarations changed to array(*)
00049 *> \endverbatim
00050 *>
00051 *  =====================================================================
00052       INTEGER FUNCTION ICAMAX(N,CX,INCX)
00053 *
00054 *  -- Reference BLAS level1 routine (version 3.4.0) --
00055 *  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --
00056 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
00057 *     November 2011
00058 *
00059 *     .. Scalar Arguments ..
00060       INTEGER INCX,N
00061 *     ..
00062 *     .. Array Arguments ..
00063       COMPLEX CX(*)
00064 *     ..
00065 *
00066 *  =====================================================================
00067 *
00068 *     .. Local Scalars ..
00069       REAL SMAX
00070       INTEGER I,IX
00071 *     ..
00072 *     .. External Functions ..
00073       REAL SCABS1
00074       EXTERNAL SCABS1
00075 *     ..
00076       ICAMAX = 0
00077       IF (N.LT.1 .OR. INCX.LE.0) RETURN
00078       ICAMAX = 1
00079       IF (N.EQ.1) RETURN
00080       IF (INCX.EQ.1) THEN
00081 *
00082 *        code for increment equal to 1
00083 *
00084          SMAX = SCABS1(CX(1))
00085          DO I = 2,N
00086             IF (SCABS1(CX(I)).GT.SMAX) THEN
00087                ICAMAX = I
00088                SMAX = SCABS1(CX(I))
00089             END IF
00090          END DO
00091       ELSE
00092 *
00093 *        code for increment not equal to 1
00094 *
00095          IX = 1
00096          SMAX = SCABS1(CX(1))
00097          IX = IX + INCX
00098          DO I = 2,N
00099             IF (SCABS1(CX(IX)).GT.SMAX) THEN
00100                ICAMAX = I
00101                SMAX = SCABS1(CX(IX))
00102             END IF
00103             IX = IX + INCX
00104          END DO
00105       END IF
00106       RETURN
00107       END
 All Files Functions