Annotation of rpl/lapack/blas/dsdot.f, revision 1.11
1.6 bertrand 1: *> \brief \b DSDOT
2: *
3: * =========== DOCUMENTATION ===========
4: *
1.11 ! bertrand 5: * Online html documentation available at
! 6: * http://www.netlib.org/lapack/explore-html/
1.6 bertrand 7: *
8: * Definition:
9: * ===========
10: *
11: * DOUBLE PRECISION FUNCTION DSDOT(N,SX,INCX,SY,INCY)
1.11 ! bertrand 12: *
1.6 bertrand 13: * .. Scalar Arguments ..
14: * INTEGER INCX,INCY,N
15: * ..
16: * .. Array Arguments ..
17: * REAL SX(*),SY(*)
18: * ..
1.11 ! bertrand 19: *
1.6 bertrand 20: * AUTHORS
21: * =======
1.11 ! bertrand 22: * Lawson, C. L., (JPL), Hanson, R. J., (SNLA),
1.6 bertrand 23: * Kincaid, D. R., (U. of Texas), Krogh, F. T., (JPL)
1.11 ! bertrand 24: *
1.6 bertrand 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: *
1.11 ! bertrand 82: *> \author Univ. of Tennessee
! 83: *> \author Univ. of California Berkeley
! 84: *> \author Univ. of Colorado Denver
! 85: *> \author NAG Ltd.
1.6 bertrand 86: *
1.11 ! bertrand 87: *> \date December 2016
1.6 bertrand 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: *>
1.11 ! bertrand 102: *>
1.6 bertrand 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: *
1.11 ! bertrand 122: * -- Reference BLAS level1 routine (version 3.7.0) --
1.6 bertrand 123: * -- Reference BLAS is a software package provided by Univ. of Tennessee, --
124: * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
1.11 ! bertrand 125: * December 2016
1.6 bertrand 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.11 ! bertrand 136: * Lawson, C. L., (JPL), Hanson, R. J., (SNLA),
1.1 bertrand 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>