1
+ <!doctype html>
2
+ < html class ="cpprefjp " lang ="ja " itemscope ="" itemtype ="http://schema.org/WebPage ">
3
+ < head >
4
+
5
+
6
+ <!-- Google tag (gtag.js) -->
7
+ < script async src ="https://www.googletagmanager.com/gtag/js?id=G-NXNBNVBTJS "> </ script >
8
+ < script >
9
+ window . dataLayer = window . dataLayer || [ ] ;
10
+ function gtag ( ) { dataLayer . push ( arguments ) ; }
11
+ gtag ( 'js' , new Date ( ) ) ;
12
+
13
+ gtag ( 'config' , 'G-NXNBNVBTJS' ) ;
14
+ </ script >
15
+
16
+
17
+ < meta charset ="UTF-8 ">
18
+
19
+ < title > dot - cpprefjp C++日本語リファレンス</ title >
20
+
21
+ < meta name ="viewport " content ="width=device-width,initial-scale=1 ">
22
+ < meta name ="keywords " content ="
23
+ C++,標準ライブラリ,リファレンス,ドキュメント,STL,std,linalg,function template,std::linalg,cpp26
24
+ ">
25
+ < meta name ="title " content ="dot - cpprefjp C++日本語リファレンス " />
26
+ < meta itemprop ="name " content ="dot - cpprefjp C++日本語リファレンス " />
27
+ < meta property ="og:title " content ="dot - cpprefjp C++日本語リファレンス " />
28
+ < meta property ="og:url " content ="https://cpprefjp.github.io/reference/linalg/dot.html " />
29
+ < meta property ="og:site_name " content ="cpprefjp - C++日本語リファレンス " />
30
+ < meta property ="og:type " content ="article " />
31
+ < meta property ="og:description " content ="2つのベクトル`v1`、`v2`の内積を計算する。 " />
32
+ < meta name ="twitter:card " content ="summary " />
33
+ < meta name ="twitter:title " content ="dot - cpprefjp C++日本語リファレンス " />
34
+ < meta name ="twitter:url " content ="https://cpprefjp.github.io/reference/linalg/dot.html " />
35
+ < meta name ="twitter:description " content ="2つのベクトル`v1`、`v2`の内積を計算する。 " />
36
+
37
+
38
+ < link rel ="alternate " type ="application/atom+xml " title ="Atom " href ="https://cpprefjp.github.io/rss.xml " />
39
+
40
+
41
+ < link rel ="apple-touch-icon " sizes ="180x180 " href ="../../static/favicons/apple-touch-icon.png?cachebust=0e476399d981581c37613c7023035bba5447c826 ">
42
+ < link rel ="icon " type ="image/png " sizes ="32x32 " href ="../../static/favicons/favicon-32x32.png?cachebust=0e476399d981581c37613c7023035bba5447c826 ">
43
+ < link rel ="icon " type ="image/png " sizes ="16x16 " href ="../../static/favicons/favicon-16x16.png?cachebust=0e476399d981581c37613c7023035bba5447c826 ">
44
+ < link rel ="manifest " href ="../../manifest.json?cachebust=0e476399d981581c37613c7023035bba5447c826 ">
45
+ < meta name ="theme-color " content ="#f5f8fc ">
46
+
47
+ < link rel ="stylesheet " href ="../../static/pygments/default.css?cachebust=0e476399d981581c37613c7023035bba5447c826 ">
48
+ <!-- <link rel="stylesheet" href="../../static/css/root.css"> -->
49
+
50
+
51
+
52
+ < script >
53
+ window . MathJax = {
54
+ tex : {
55
+ inlineMath : [ [ '$' , '$' ] ] ,
56
+ displayMath : [ [ '$$' , '$$' ] ] ,
57
+ processEscapes : true
58
+ } ,
59
+ chtml : {
60
+ displayAlign : 'left' ,
61
+ displayIndent : '2.0em' ,
62
+ } ,
63
+ } ;
64
+ </ script >
65
+ <!-- IEはサポートしないので https://polyfill.io/v3/polyfill.min.js?features=es6 は読み込まない -->
66
+ < script id ="MathJax-script " async src ="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js "> </ script >
67
+
68
+
69
+
70
+ < link href ="../../static/kunai/css/kunai-stage-0.css?cachebust=0e476399d981581c37613c7023035bba5447c826 " rel ="stylesheet ">
71
+ < link href ="../../static/kunai/css/kunai-stage-1.css?cachebust=0e476399d981581c37613c7023035bba5447c826 " rel ="stylesheet ">
72
+ < link href ="../../static/kunai/css/kunai-stage-2.css?cachebust=0e476399d981581c37613c7023035bba5447c826 " rel ="stylesheet ">
73
+ < link href ="../../static/kunai/css/kunai-stage-3.css?cachebust=0e476399d981581c37613c7023035bba5447c826 " rel ="stylesheet ">
74
+
75
+ < script type ="text/javascript " src ="../../static/kunai/js/kunai-vendor.js?cachebust=0e476399d981581c37613c7023035bba5447c826 "> </ script >
76
+ < script type ="text/javascript " src ="../../static/kunai/js/kunai.js?cachebust=0e476399d981581c37613c7023035bba5447c826 "> </ script >
77
+
78
+ < script type ="text/javascript ">
79
+ document . addEventListener ( 'DOMContentLoaded' , function ( ) {
80
+ var kn = new Kunai ;
81
+ kn . cpprefjp ( ) ;
82
+ } ) ;
83
+ </ script >
84
+
85
+ </ head >
86
+ < body >
87
+ < header data-kunai-mdinfo ="{"meta": {"header": ["linalg"], "id-type": ["function template"], "namespace": ["std::linalg"], "cpp": ["cpp26"]}, "sources": [], "page_id": ["reference", "linalg", "dot"]} ">
88
+ < nav class ="navbar navbar-default " role ="navigation ">
89
+ < div class ="container-fluid ">
90
+ < div class ="navbar-header ">
91
+ < button type ="button " class ="navbar-toggle collapsed " data-toggle ="collapse " data-target ="#navbar-collapse ">
92
+ < span class ="sr-only "> Toggle navigation</ span >
93
+ < span class ="icon-bar "> </ span >
94
+ < span class ="icon-bar "> </ span >
95
+ < span class ="icon-bar "> </ span >
96
+ </ button >
97
+ < a class ="navbar-brand " href ="../../index.html ">
98
+ < div class ="title-wrapper clearfix ">
99
+ < div class ="title "> cpprefjp - C++日本語リファレンス</ div >
100
+ </ div >
101
+ </ a >
102
+ </ div >
103
+
104
+ < div class ="collapse navbar-collapse " id ="navbar-collapse ">
105
+ < ul class ="nav navbar-nav navbar-right ">
106
+ < li >
107
+ < div class ="google-search ">
108
+
109
+
110
+ < script >
111
+ ( function ( ) {
112
+ var cx = '013316413321391058734:ji_u66hl7hq' ;
113
+ var gcse = document . createElement ( 'script' ) ;
114
+ gcse . type = 'text/javascript' ;
115
+ gcse . async = true ;
116
+ gcse . src = ( document . location . protocol == 'https:' ? 'https:' : 'http:' ) +
117
+ '//www.google.com/cse/cse.js?cx=' + cx ;
118
+ var s = document . getElementsByTagName ( 'script' ) [ 0 ] ;
119
+ s . parentNode . insertBefore ( gcse , s ) ;
120
+ } ) ( ) ;
121
+ </ script >
122
+ < div class ="gcse-search "> </ div >
123
+
124
+
125
+ </ div >
126
+ </ li >
127
+ < li >
128
+ < a href ="https://github.com/cpprefjp/site "> GitHub Project</ a >
129
+ </ li >
130
+ </ ul >
131
+ </ div >
132
+ </ div >
133
+ </ nav >
134
+ </ header >
135
+
136
+ < main id ="main " role ="main ">
137
+ < div class ="container-fluid ">
138
+ < div class ="row ">
139
+ < div class ="col-sm-9 col-sm-push-3 " itemscope itemtype ="http://schema.org/Article ">
140
+ < div class ="row ">
141
+ < div class ="col-sm-12 google-search-result ">
142
+ < gcse:searchresults > </ gcse:searchresults >
143
+ </ div >
144
+ </ div >
145
+ < div class ="row ">
146
+ < div class ="col-sm-12 content-header ">
147
+
148
+ < ol class ="breadcrumb ">
149
+
150
+ < li itemscope itemtype ="http://www.schema.org/SiteNavigationElement ">
151
+ < span >
152
+
153
+ < a href ="../../index.html " itemprop ="url ">
154
+
155
+ < i class ="fa fa-fw fa-home "> </ i >
156
+
157
+ </ a >
158
+
159
+ </ span >
160
+ </ li >
161
+
162
+ < li itemscope itemtype ="http://www.schema.org/SiteNavigationElement ">
163
+ < span >
164
+
165
+ < a href ="../../reference.html " itemprop ="url ">
166
+
167
+ < span itemprop ="name "> リファレンス</ span >
168
+
169
+ </ a >
170
+
171
+ </ span >
172
+ </ li >
173
+
174
+ < li itemscope itemtype ="http://www.schema.org/SiteNavigationElement ">
175
+ < span >
176
+
177
+ < a href ="../../reference/linalg.html " itemprop ="url ">
178
+
179
+ < span itemprop ="name "> linalg</ span >
180
+
181
+ </ a >
182
+
183
+ </ span >
184
+ </ li >
185
+
186
+ < li class ="active " itemscope itemtype ="http://www.schema.org/SiteNavigationElement ">
187
+ < span >
188
+
189
+
190
+ < span itemprop ="name "> dot</ span >
191
+
192
+
193
+ </ span >
194
+ </ li >
195
+
196
+ </ ol >
197
+ < div class ="crsearch "> </ div >
198
+
199
+ </ div >
200
+ </ div >
201
+ < div class ="row ">
202
+ < div class ="col-sm-12 edit-button ">
203
+
204
+
205
+ < p class ="text-right "> < small >
206
+ 最終更新日時(UTC):
207
+ < span itemprop ="datePublished " content ="2024-06-16T08:54:12 ">
208
+ 2024年06月16日 08時54分12秒
209
+ </ span >
210
+ < br />
211
+ < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
212
+ < span itemprop ="name "> Yuya Asano</ span >
213
+ </ span >
214
+ が更新
215
+ </ small > </ p >
216
+
217
+
218
+ < p class ="text-right ">
219
+ < a class ="history " target ="_blank " href ="https://github.com/cpprefjp/site/commits/master/reference/linalg/dot.md ">
220
+ < span class ="fa fa-fw fa-clock-o fa-flip-horizontal "> </ span > 履歴
221
+ </ a >
222
+ < a class ="edit " target ="_blank " href ="https://github.com/cpprefjp/site/edit/master/reference/linalg/dot.md ">
223
+ < span class ="fa fa-fw fa-pencil "> </ span > 編集
224
+ </ a >
225
+ </ p >
226
+ </ div >
227
+ </ div >
228
+ < div class ="row ">
229
+ < div class ="col-sm-12 content-body ">
230
+
231
+ < div class ="identifier-type "> function template</ div > < div class ="header "> <linalg></ div > < h1 itemprop ="name "> < span class ="namespace " title ="namespace std::linalg "> std::linalg::</ span > < span class ="token "> dot</ span > < span class ="cpp cpp26 " title ="C++26で追加 "> (C++26)</ span > </ h1 >
232
+ < div itemprop ="articleBody "> < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> namespace</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> linalg</ span > < span class ="p "> {</ span >
233
+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="n "> in</ span > < span class ="o "> -</ span > < span class ="n "> vector</ span > < span class ="n "> InVec1</ span > < span class ="p "> ,</ span >
234
+ < span class ="n "> in</ span > < span class ="o "> -</ span > < span class ="n "> vector</ span > < span class ="n "> InVec2</ span > < span class ="p "> ,</ span >
235
+ < span class ="k "> class</ span > < span class ="nc "> Scalar</ span > < span class ="o "> ></ span >
236
+ < span class ="n "> Scalar</ span > < span class ="n "> dot</ span > < span class ="p "> (</ span > < span class ="n "> InVec1</ span > < span class ="n "> v1</ span > < span class ="p "> ,</ span >
237
+ < span class ="n "> InVec2</ span > < span class ="n "> v2</ span > < span class ="p "> ,</ span >
238
+ < span class ="n "> Scalar</ span > < span class ="n "> init</ span > < span class ="p "> );</ span > < span class ="c1 "> // (1)</ span >
239
+
240
+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> < a href ="../execution/execution/execution_policy.html "> ExecutionPolicy</ a > </ span > < span class ="p "> ,</ span >
241
+ < span class ="n "> in</ span > < span class ="o "> -</ span > < span class ="n "> vector</ span > < span class ="n "> InVec1</ span > < span class ="p "> ,</ span >
242
+ < span class ="n "> in</ span > < span class ="o "> -</ span > < span class ="n "> vector</ span > < span class ="n "> InVec2</ span > < span class ="p "> ,</ span >
243
+ < span class ="k "> class</ span > < span class ="nc "> Scalar</ span > < span class ="o "> ></ span >
244
+ < span class ="n "> Scalar</ span > < span class ="n "> dot</ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../execution/execution/execution_policy.html "> ExecutionPolicy</ a > </ span > < span class ="o "> &&</ span > < span class ="n "> exec</ span > < span class ="p "> ,</ span >
245
+ < span class ="n "> InVec1</ span > < span class ="n "> v1</ span > < span class ="p "> ,</ span >
246
+ < span class ="n "> InVec2</ span > < span class ="n "> v2</ span > < span class ="p "> ,</ span >
247
+ < span class ="n "> Scalar</ span > < span class ="n "> init</ span > < span class ="p "> );</ span > < span class ="c1 "> // (2)</ span >
248
+
249
+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="n "> in</ span > < span class ="o "> -</ span > < span class ="n "> vector</ span > < span class ="n "> InVec1</ span > < span class ="p "> ,</ span >
250
+ < span class ="n "> in</ span > < span class ="o "> -</ span > < span class ="n "> vector</ span > < span class ="n "> InVec2</ span > < span class ="o "> ></ span >
251
+ < span class ="k "> auto</ span > < span class ="n "> dot</ span > < span class ="p "> (</ span > < span class ="n "> InVec1</ span > < span class ="n "> v1</ span > < span class ="p "> ,</ span >
252
+ < span class ="n "> InVec2</ span > < span class ="n "> v2</ span > < span class ="p "> );</ span > < span class ="c1 "> // (3)</ span >
253
+
254
+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> < a href ="../execution/execution/execution_policy.html "> ExecutionPolicy</ a > </ span > < span class ="p "> ,</ span >
255
+ < span class ="n "> in</ span > < span class ="o "> -</ span > < span class ="n "> vector</ span > < span class ="n "> InVec1</ span > < span class ="p "> ,</ span >
256
+ < span class ="n "> in</ span > < span class ="o "> -</ span > < span class ="n "> vector</ span > < span class ="n "> InVec2</ span > < span class ="o "> ></ span >
257
+ < span class ="k "> auto</ span > < span class ="n "> dot</ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../execution/execution/execution_policy.html "> ExecutionPolicy</ a > </ span > < span class ="o "> &&</ span > < span class ="n "> exec</ span > < span class ="p "> ,</ span >
258
+ < span class ="n "> InVec1</ span > < span class ="n "> v1</ span > < span class ="p "> ,</ span >
259
+ < span class ="n "> InVec2</ span > < span class ="n "> v2</ span > < span class ="p "> );</ span > < span class ="c1 "> // (4)</ span >
260
+ < span class ="p "> }</ span >
261
+ </ code > </ pre > </ div >
262
+ </ p >
263
+ < h2 > 概要</ h2 >
264
+ < p > 2つのベクトル< code > v1</ code > 、< code > v2</ code > の内積を計算する。</ p >
265
+ < h2 > < a class ="cpprefjp-defined-word " data-desc ="満たさなければプログラムが不適格となる要件。`static_assert`や関数のdelete宣言などに相当する "> 適格要件</ a > </ h2 >
266
+ < p > 2つのベクトルの静的な要素数が同じであること。</ p >
267
+ < ul >
268
+ < li > < code > < a href ="compatible-static-extents.html "> compatible-static-extents</ a > <InVec1, InVec2>(0, 0) == true</ code > </ li >
269
+ </ ul >
270
+ < h2 > 事前条件</ h2 >
271
+ < p > 2つのベクトルの次元が同じであること。</ p >
272
+ < ul >
273
+ < li > < code > v1.extent(0) == v2.extent(0)</ code > </ li >
274
+ </ ul >
275
+ < h2 > 効果</ h2 >
276
+ < ul >
277
+ < li > (1), (2): なし</ li >
278
+ < li > (3), (4): < code > T</ code > を各ベクトルの値型の積の型< code > decltype(declval<typename InVec1::value_type>() * declval<typename InVec2::value_type>())</ code > とする。</ li >
279
+ < li > (3): < code > dot(v1, v2, T{})</ code > を返す。</ li >
280
+ < li > (4): < code > dot(std::forward<ExecutionPolicy>(exec), v1, v2, T{})</ code > を返す。</ li >
281
+ </ ul >
282
+ < h2 > 戻り値</ h2 >
283
+ < p > 2つのベクトルの次元を< code > N</ code > とする。</ p >
284
+ < ul >
285
+ < li > (1): もし< code > N</ code > が0なら< code > init</ code > を返す。そうでない場合は、共役を取らない内積、つまり以下の式の< code > Scalar</ code > 型の値を返す。</ li >
286
+ </ ul >
287
+ < p > $$
288
+ \verb|init| + \sum_{i = 0}^{N - 1} \verb|v1|[i] * \verb|v2|[i]
289
+ $$</ p >
290
+ < ul >
291
+ < li > (2): (1)の並列アルゴリズム版。</ li >
292
+ < li > (3): (1)の< code > init</ code > を和の各項の型のデフォルト値に置き換えて計算する。</ li >
293
+ < li > (4): (3)の並列アルゴリズム版。</ li >
294
+ </ ul >
295
+ < h2 > 備考</ h2 >
296
+ < ul >
297
+ < li > (1), (2): もし< code > InVec1::value_type</ code > 、< code > InVec2::value_type</ code > 、< code > Scalar</ code > が全て浮動小数点数型または< code > std::complex</ code > の特殊化で、< code > Scalar</ code > が< code > InVec1::value_type</ code > と< code > InVec2::value_type</ code > より精度が高い場合、和の各項は< code > Scalar</ code > またはより高い精度の型が使われる。</ li >
298
+ </ ul >
299
+ < h2 > 例</ h2 >
300
+ < h3 > 出力</ h3 >
301
+ < h2 > バージョン</ h2 >
302
+ < h3 > 言語</ h3 >
303
+ < ul >
304
+ < li > C++11</ li >
305
+ </ ul >
306
+ < h3 > 処理系</ h3 >
307
+ < ul >
308
+ < li > < a href ="../../implementation.html#clang "> Clang</ a > : ??</ li >
309
+ < li > < a href ="../../implementation.html#gcc "> GCC</ a > : ??</ li >
310
+ < li > < a href ="../../implementation.html#icc "> ICC</ a > : ??</ li >
311
+ < li > < a href ="../../implementation.html#visual_cpp "> Visual C++</ a > : ??</ li >
312
+ </ ul >
313
+ < h2 > 関連項目</ h2 >
314
+ < ul >
315
+ < li > < code > < a href ="../execution.html "> execution</ a > </ code > </ li >
316
+ < li > < code > < a href ="../mdspan.html "> mdspan</ a > </ code > </ li >
317
+ </ ul >
318
+ < h2 > 参照</ h2 >
319
+ < ul >
320
+ < li > < a href ="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0788r3.pdf " target ="_blank "> P0788R3 Standard Library Specification in a Concepts and Contracts World</ a > </ li >
321
+ < li > < code > < a href ="https://netlib.org/lapack/explore-html/d1/dcc/group__dot_ga2cce681b6aed3728b893a555b3bee55c.html#ga2cce681b6aed3728b893a555b3bee55c " target ="_blank "> LAPACK: cdotu</ a > </ code > </ li >
322
+ </ ul > </ div >
323
+
324
+ </ div >
325
+ </ div >
326
+ </ div >
327
+
328
+
329
+ < div id ="sidebar " class ="col-sm-3 col-sm-pull-9 ">
330
+ </ div >
331
+
332
+
333
+ </ div >
334
+ </ div >
335
+ </ main >
336
+ < footer class ="footer navbar navbar-default ">
337
+ < div class ="container-fluid ">
338
+ < p > < small >
339
+ 本サイトの情報は、
340
+ < a href ="https://creativecommons.org/licenses/by/3.0/deed.ja " rel ="nofollow "> クリエイティブ・コモンズ 表示 3.0 非移植 ライセンス(CC BY)</ a >
341
+ の下に提供されています。
342
+ </ small > </ p >
343
+ </ div >
344
+ </ footer >
345
+ </ body >
346
+ </ html >
0 commit comments