File:
[local] /
rpl /
lapack /
blas /
dsdot.f
Revision
1.9:
download - view:
text,
annotated -
select for diffs -
revision graph
Mon Jan 27 09:28:12 2014 UTC (11 years, 3 months ago) by
bertrand
Branches:
MAIN
CVS tags:
rpl-4_1_24,
rpl-4_1_23,
rpl-4_1_22,
rpl-4_1_21,
rpl-4_1_20,
rpl-4_1_19,
rpl-4_1_18,
rpl-4_1_17,
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>