84
84
85
85
</ head >
86
86
< body >
87
- < header data-kunai-mdinfo ="{"meta": {"header": ["linalg"], "id-type": ["function template"], "namespace": ["std::linalg"], "cpp": ["cpp26"]}, "sources": [{"id": "ed1ea3467bc7bbaaff6312b21c0ae402fd8d782e", "source": "#include <array>\n#include <iostream>\n#include <linalg>\n#include <mdspan>\n#include <vector>\n\ntemplate <class Vector>\nvoid print(const Vector& v, const std::string& name) {\n for (int i = 0; i < v.extent(0); ++i) {\n std::cout << name << \"[\" << i << \"]\" << \" = \" << v[i] << '\\n';\n }\n}\n\nint main()\n{\n constexpr size_t N = 4;\n constexpr size_t M = 2;\n\n std::vector<double> A_vec(N*M);\n std::vector<double> x_vec(M);\n std::array<double, N> y_vec, z_vec;\n\n std::mdspan A(A_vec.data(), N, M);\n std::mdspan x(x_vec.data(), M);\n std::mdspan y(y_vec.data(), N);\n std::mdspan z(z_vec.data(), N);\n\n for(int i = 0; i < A.extent(0); ++i) {\n for(int j = 0; j < A.extent(1); ++j) {\n A[i,j] = 100.0 * i + j;\n }\n }\n\n for(int j = 0; j < x.extent(0); ++j) {\n x[j] = 1.0 * j;\n }\n for(int i = 0; i < y.extent(0); ++i) {\n y[i] = -1.0 * i;\n }\n\n // (1)\n std::cout << \"(1)\\n\";\n std::linalg::matrix_vector_product(A, x, y);\n print(y, \"y\");\n\n // (2)\n std::cout << \"(2)\\n\";\n std::linalg::matrix_vector_product(std::execution::par, A, x, y);\n print(y, \"y\");\n\n // (3)\n std::cout << \"(3)\\n\";\n std::linalg::matrix_vector_product(A, x, y, z);\n print(z, \"z\");\n\n // (4)\n std::cout << \"(4)\\n\";\n std::linalg::matrix_vector_product(std::execution::par, A, x, y, z);\n print(z, \"z\");\n\n return 0;\n}\n"}], "page_id": ["reference", "linalg", "matrix_vector_product"]} ">
87
+ < header data-kunai-mdinfo ="{"meta": {"header": ["linalg"], "id-type": ["function template"], "namespace": ["std::linalg"], "cpp": ["cpp26"]}, "sources": [{"id": "7fe47a278f2352033e146b53e0b85431623ffbbf", "source": "#include <array>\n#include <iostream>\n#include <linalg>\n#include <mdspan>\n#include <vector>\n\ntemplate <class Vector>\nvoid print(const Vector& v, const std::string& name) {\n for (int i = 0; i < v.extent(0); ++i) {\n std::cout << name << \"[\" << i << \"]\" << \" = \" << v[i] << '\\n';\n }\n}\n\nint main()\n{\n constexpr size_t N = 4;\n constexpr size_t M = 2;\n\n std::vector<double> A_vec(N*M);\n std::vector<double> x_vec(M);\n std::array<double, N> y_vec, z_vec;\n\n std::mdspan A(A_vec.data(), N, M);\n std::mdspan x(x_vec.data(), M);\n std::mdspan y(y_vec.data(), N);\n std::mdspan z(z_vec.data(), N);\n\n for(int i = 0; i < A.extent(0); ++i) {\n for(int j = 0; j < A.extent(1); ++j) {\n A[i,j] = 100.0 * i + j;\n }\n }\n\n for(int j = 0; j < x.extent(0); ++j) {\n x[j] = j;\n }\n for(int i = 0; i < y.extent(0); ++i) {\n y[i] = -i;\n }\n\n // (1)\n std::cout << \"(1)\\n\";\n std::linalg::matrix_vector_product(A, x, y);\n print(y, \"y\");\n\n // (2)\n std::cout << \"(2)\\n\";\n std::linalg::matrix_vector_product(std::execution::par, A, x, y);\n print(y, \"y\");\n\n // (3)\n std::cout << \"(3)\\n\";\n std::linalg::matrix_vector_product(A, x, y, z);\n print(z, \"z\");\n\n // (4)\n std::cout << \"(4)\\n\";\n std::linalg::matrix_vector_product(std::execution::par, A, x, y, z);\n print(z, \"z\");\n\n return 0;\n}\n"}], "page_id": ["reference", "linalg", "matrix_vector_product"]} ">
88
88
< nav class ="navbar navbar-default " role ="navigation ">
89
89
< div class ="container-fluid ">
90
90
< div class ="navbar-header ">
204
204
205
205
< p class ="text-right "> < small >
206
206
最終更新日時(UTC):
207
- < span itemprop ="datePublished " content ="2024-06-25T04:38:38 ">
208
- 2024年06月25日 04時38分38秒
207
+ < span itemprop ="datePublished " content ="2024-06-25T07:20:37 ">
208
+ 2024年06月25日 07時20分37秒
209
209
</ span >
210
210
< br />
211
211
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
@@ -283,7 +283,7 @@ <h2><a class="cpprefjp-defined-word" data-desc="満たさなければプログ
283
283
</ ul >
284
284
< h2 > 事前条件</ h2 >
285
285
< ul >
286
- < li > (1), (2), (3), (4): < code > < a href ="multipliable.html "> multipliable</ a > (A,x, y) == true</ code > </ li >
286
+ < li > (1), (2), (3), (4): < code > < a href ="multipliable.html "> multipliable</ a > (A, x, y) == true</ code > </ li >
287
287
< li > (3), (4): < code > < a href ="addable.html "> addable</ a > (x, y, z) == true</ code > </ li >
288
288
</ ul >
289
289
< h2 > 効果</ h2 >
@@ -301,7 +301,7 @@ <h2>備考</h2>
301
301
</ ul >
302
302
< h2 > 例</ h2 >
303
303
< p > < strong > [注意] 処理系にあるコンパイラで確認していないため、間違っているかもしれません。</ strong > </ p >
304
- < p > < div class ="yata " id ="ed1ea3467bc7bbaaff6312b21c0ae402fd8d782e "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../array.html "> <array></ a > </ span > < span class ="cp "> </ span >
304
+ < p > < div class ="yata " id ="7fe47a278f2352033e146b53e0b85431623ffbbf "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../array.html "> <array></ a > </ span > < span class ="cp "> </ span >
305
305
< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
306
306
< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../linalg.html "> <linalg></ a > </ span > < span class ="cp "> </ span >
307
307
< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../mdspan.html "> <mdspan></ a > </ span > < span class ="cp "> </ span >
@@ -335,10 +335,10 @@ <h2>例</h2>
335
335
< span class ="p "> }</ span >
336
336
337
337
< span class ="k "> for</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="n "> j</ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span > < span class ="p "> ;</ span > < span class ="n "> j</ span > < span class ="o "> <</ span > < span class ="n "> x</ span > < span class ="p "> .</ span > < span class ="n "> extent</ span > < span class ="p "> (</ span > < span class ="mi "> 0</ span > < span class ="p "> );</ span > < span class ="o "> ++</ span > < span class ="n "> j</ span > < span class ="p "> )</ span > < span class ="p "> {</ span >
338
- < span class ="n "> x</ span > < span class ="p "> [</ span > < span class ="n "> j</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="mf " > 1.0 </ span > < span class =" o " > * </ span > < span class =" n "> j</ span > < span class ="p "> ;</ span >
338
+ < span class ="n "> x</ span > < span class ="p "> [</ span > < span class ="n "> j</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> j</ span > < span class ="p "> ;</ span >
339
339
< span class ="p "> }</ span >
340
340
< span class ="k "> for</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="n "> i</ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span > < span class ="p "> ;</ span > < span class ="n "> i</ span > < span class ="o "> <</ span > < span class ="n "> y</ span > < span class ="p "> .</ span > < span class ="n "> extent</ span > < span class ="p "> (</ span > < span class ="mi "> 0</ span > < span class ="p "> );</ span > < span class ="o "> ++</ span > < span class ="n "> i</ span > < span class ="p "> )</ span > < span class ="p "> {</ span >
341
- < span class ="n "> y</ span > < span class ="p "> [</ span > < span class ="n "> i</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="o "> -</ span > < span class ="mf " > 1.0 </ span > < span class =" o " > * </ span > < span class =" n "> i</ span > < span class ="p "> ;</ span >
341
+ < span class ="n "> y</ span > < span class ="p "> [</ span > < span class ="n "> i</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="o "> -</ span > < span class ="n "> i</ span > < span class ="p "> ;</ span >
342
342
< span class ="p "> }</ span >
343
343
344
344
< span class ="c1 "> // (1)</ span >
0 commit comments