Annotation of rpl/lapack/blas/dsdot.f, revision 1.6

1.6     ! bertrand    1: *> \brief \b DSDOT
        !             2: *
        !             3: *  =========== DOCUMENTATION ===========
        !             4: *
        !             5: * Online html documentation available at 
        !             6: *            http://www.netlib.org/lapack/explore-html/ 
        !             7: *
        !             8: *  Definition:
        !             9: *  ===========
        !            10: *
        !            11: *       DOUBLE PRECISION FUNCTION DSDOT(N,SX,INCX,SY,INCY)
        !            12: * 
        !            13: *       .. Scalar Arguments ..
        !            14: *       INTEGER INCX,INCY,N
        !            15: *       ..
        !            16: *       .. Array Arguments ..
        !            17: *       REAL SX(*),SY(*)
        !            18: *       ..
        !            19: *  
        !            20: *    AUTHORS
        !            21: *    =======
        !            22: *    Lawson, C. L., (JPL), Hanson, R. J., (SNLA), 
        !            23: *    Kincaid, D. R., (U. of Texas), Krogh, F. T., (JPL)
        !            24: *  
        !            25: *
        !            26: *> \par Purpose:
        !            27: *  =============
        !            28: *>
        !            29: *> \verbatim
        !            30: *>
        !            31: *> Compute the inner product of two vectors with extended
        !            32: *> precision accumulation and result.
        !            33: *>
        !            34: *> Returns D.P. dot product accumulated in D.P., for S.P. SX and SY
        !            35: *> DSDOT = sum for I = 0 to N-1 of  SX(LX+I*INCX) * SY(LY+I*INCY),
        !            36: *> where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is
        !            37: *> defined in a similar way using INCY.
        !            38: *> \endverbatim
        !            39: *
        !            40: *  Arguments:
        !            41: *  ==========
        !            42: *
        !            43: *> \param[in] N
        !            44: *> \verbatim
        !            45: *>          N is INTEGER
        !            46: *>         number of elements in input vector(s)
        !            47: *> \endverbatim
        !            48: *>
        !            49: *> \param[in] SX
        !            50: *> \verbatim
        !            51: *>          SX is REAL array, dimension(N)
        !            52: *>         single precision vector with N elements
        !            53: *> \endverbatim
        !            54: *>
        !            55: *> \param[in] INCX
        !            56: *> \verbatim
        !            57: *>          INCX is INTEGER
        !            58: *>          storage spacing between elements of SX
        !            59: *> \endverbatim
        !            60: *>
        !            61: *> \param[in] SY
        !            62: *> \verbatim
        !            63: *>          SY is REAL array, dimension(N)
        !            64: *>         single precision vector with N elements
        !            65: *> \endverbatim
        !            66: *>
        !            67: *> \param[in] INCY
        !            68: *> \verbatim
        !            69: *>          INCY is INTEGER
        !            70: *>         storage spacing between elements of SY
        !            71: *> \endverbatim
        !            72: *>
        !            73: *> \result DSDOT
        !            74: *> \verbatim
        !            75: *>          DSDOT is DOUBLE PRECISION
        !            76: *>         DSDOT  double precision dot product (zero if N.LE.0)
        !            77: *> \endverbatim
        !            78: *
        !            79: *  Authors:
        !            80: *  ========
        !            81: *
        !            82: *> \author Univ. of Tennessee 
        !            83: *> \author Univ. of California Berkeley 
        !            84: *> \author Univ. of Colorado Denver 
        !            85: *> \author NAG Ltd. 
        !            86: *
        !            87: *> \date November 2011
        !            88: *
        !            89: *> \ingroup double_blas_level1
        !            90: *
        !            91: *> \par Further Details:
        !            92: *  =====================
        !            93: *>
        !            94: *> \verbatim
        !            95: *> \endverbatim
        !            96: *
        !            97: *> \par References:
        !            98: *  ================
        !            99: *>
        !           100: *> \verbatim
        !           101: *>
        !           102: *>      
        !           103: *>  C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T.
        !           104: *>  Krogh, Basic linear algebra subprograms for Fortran
        !           105: *>  usage, Algorithm No. 539, Transactions on Mathematical
        !           106: *>  Software 5, 3 (September 1979), pp. 308-323.
        !           107: *>
        !           108: *>  REVISION HISTORY  (YYMMDD)
        !           109: *>
        !           110: *>  791001  DATE WRITTEN
        !           111: *>  890831  Modified array declarations.  (WRB)
        !           112: *>  890831  REVISION DATE from Version 3.2
        !           113: *>  891214  Prologue converted to Version 4.0 format.  (BAB)
        !           114: *>  920310  Corrected definition of LX in DESCRIPTION.  (WRB)
        !           115: *>  920501  Reformatted the REFERENCES section.  (WRB)
        !           116: *>  070118  Reformat to LAPACK style (JL)
        !           117: *> \endverbatim
        !           118: *>
        !           119: *  =====================================================================
1.1       bertrand  120:       DOUBLE PRECISION FUNCTION DSDOT(N,SX,INCX,SY,INCY)
1.6     ! bertrand  121: *
        !           122: *  -- Reference BLAS level1 routine (version 3.4.0) --
        !           123: *  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --
        !           124: *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
        !           125: *     November 2011
        !           126: *
1.1       bertrand  127: *     .. Scalar Arguments ..
                    128:       INTEGER INCX,INCY,N
                    129: *     ..
                    130: *     .. Array Arguments ..
                    131:       REAL SX(*),SY(*)
                    132: *     ..
                    133: *
1.6     ! bertrand  134: *  Authors:
        !           135: *  ========
1.1       bertrand  136: *  Lawson, C. L., (JPL), Hanson, R. J., (SNLA), 
                    137: *  Kincaid, D. R., (U. of Texas), Krogh, F. T., (JPL)
                    138: *
                    139: *  =====================================================================
                    140: *
                    141: *     .. Local Scalars ..
                    142:       INTEGER I,KX,KY,NS
                    143: *     ..
                    144: *     .. Intrinsic Functions ..
                    145:       INTRINSIC DBLE
                    146: *     ..
                    147:       DSDOT = 0.0D0
                    148:       IF (N.LE.0) RETURN
1.5       bertrand  149:       IF (INCX.EQ.INCY .AND. INCX.GT.0) THEN
1.1       bertrand  150: *
1.5       bertrand  151: *     Code for equal, positive, non-unit increments.
1.1       bertrand  152: *
1.5       bertrand  153:          NS = N*INCX
                    154:          DO I = 1,NS,INCX
                    155:             DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I))
                    156:          END DO
                    157:       ELSE
1.1       bertrand  158: *
1.5       bertrand  159: *     Code for unequal or nonpositive increments.
1.1       bertrand  160: *
1.5       bertrand  161:          KX = 1
                    162:          KY = 1
                    163:          IF (INCX.LT.0) KX = 1 + (1-N)*INCX
                    164:          IF (INCY.LT.0) KY = 1 + (1-N)*INCY
                    165:          DO I = 1,N
                    166:             DSDOT = DSDOT + DBLE(SX(KX))*DBLE(SY(KY))
                    167:             KX = KX + INCX
                    168:             KY = KY + INCY
                    169:          END DO
                    170:       END IF
1.1       bertrand  171:       RETURN
                    172:       END

CVSweb interface <joel.bertrand@systella.fr>