File:  [local] / rpl / lapack / blas / dsdot.f
Revision 1.7: download - view: text, annotated - select for diffs - revision graph
Wed Aug 22 09:36:40 2012 UTC (11 years, 8 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_9, rpl-4_1_10, HEAD
Cohérence

    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: *  =====================================================================
  120:       DOUBLE PRECISION FUNCTION DSDOT(N,SX,INCX,SY,INCY)
  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: *
  127: *     .. Scalar Arguments ..
  128:       INTEGER INCX,INCY,N
  129: *     ..
  130: *     .. Array Arguments ..
  131:       REAL SX(*),SY(*)
  132: *     ..
  133: *
  134: *  Authors:
  135: *  ========
  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
  149:       IF (INCX.EQ.INCY .AND. INCX.GT.0) THEN
  150: *
  151: *     Code for equal, positive, non-unit increments.
  152: *
  153:          NS = N*INCX
  154:          DO I = 1,NS,INCX
  155:             DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I))
  156:          END DO
  157:       ELSE
  158: *
  159: *     Code for unequal or nonpositive increments.
  160: *
  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
  171:       RETURN
  172:       END

CVSweb interface <joel.bertrand@systella.fr>