|
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": "57af623807ea7b4e9b34bde27a1f2ccd9add2517", "source": "#include <array>\n#include <complex>\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 = 4;\n\n std::vector<std::complex<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<\n std::complex<double>,\n std::extents<size_t, N, M>,\n std::linalg::layout_blas_packed<\n std::linalg::upper_triangle_t,\n std::linalg::row_major_t>\n > A(A_vec.data());\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 = i; j < A.extent(1); ++j) {\n A[i,j] = std::complex<double>(i, j);\n }\n }\n\n for(int j = 0; j < x.extent(0); ++j) {\n x[j] = j;\n }\n\n // (1)\n std::cout << \"(1)\\n\";\n std::linalg::hermitian_matrix_vector_product(A, std::linalg::upper_triangle, x, y);\n print(y, \"y\");\n\n // (2)\n std::cout << \"(2)\\n\";\n std::linalg::hermitian_matrix_vector_product(std::execution::par, A, std::linalg::upper_triangle, x, y);\n print(y, \"y\");\n\n for(int i = 0; i < y.extent(0); ++i) {\n y[i] = -i;\n }\n\n // (3)\n std::cout << \"(3)\\n\";\n std::linalg::hermitian_matrix_vector_product(A, std::linalg::upper_triangle, x, y, z);\n print(z, \"z\");\n\n // (4)\n std::cout << \"(4)\\n\";\n std::linalg::hermitian_matrix_vector_product(std::execution::par, A, std::linalg::upper_triangle, x, y, z);\n print(z, \"z\");\n\n return 0;\n}\n"}], "page_id": ["reference", "linalg", "hermitian_matrix_vector_product"]}"> |
| 87 | +<header data-kunai-mdinfo="{"meta": {"header": ["linalg"], "id-type": ["function template"], "namespace": ["std::linalg"], "cpp": ["cpp26"]}, "sources": [{"id": "5d6dc4179e7e08da018b9a61c9f163db70984b26", "source": "#include <array>\n#include <complex>\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 = 4;\n\n std::vector<std::complex<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<\n std::complex<double>,\n std::extents<size_t, N, M>,\n std::linalg::layout_blas_packed<\n std::linalg::upper_triangle_t,\n std::linalg::row_major_t>\n > A(A_vec.data());\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 A[i,i] = std::complex<double>(i, 0);\n for(int j = i + 1; j < A.extent(1); ++j) {\n A[i,j] = std::complex<double>(i, j);\n }\n }\n\n for(int j = 0; j < x.extent(0); ++j) {\n x[j] = j;\n }\n\n // (1)\n std::cout << \"(1)\\n\";\n std::linalg::hermitian_matrix_vector_product(A, std::linalg::upper_triangle, x, y);\n print(y, \"y\");\n\n // (2)\n std::cout << \"(2)\\n\";\n std::linalg::hermitian_matrix_vector_product(std::execution::par, A, std::linalg::upper_triangle, x, y);\n print(y, \"y\");\n\n for(int i = 0; i < y.extent(0); ++i) {\n y[i] = -i;\n }\n\n // (3)\n std::cout << \"(3)\\n\";\n std::linalg::hermitian_matrix_vector_product(A, std::linalg::upper_triangle, x, y, z);\n print(z, \"z\");\n\n // (4)\n std::cout << \"(4)\\n\";\n std::linalg::hermitian_matrix_vector_product(std::execution::par, A, std::linalg::upper_triangle, x, y, z);\n print(z, \"z\");\n\n return 0;\n}\n"}], "page_id": ["reference", "linalg", "hermitian_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-26T02:45:26"> |
208 |
| - 2024年06月26日 02時45分26秒 |
| 207 | + <span itemprop="datePublished" content="2024-06-26T03:41:50"> |
| 208 | + 2024年06月26日 03時41分50秒 |
209 | 209 | </span>
|
210 | 210 | <br/>
|
211 | 211 | <span itemprop="author" itemscope itemtype="http://schema.org/Person">
|
@@ -316,7 +316,7 @@ <h2>備考</h2>
|
316 | 316 | </ul>
|
317 | 317 | <h2>例</h2>
|
318 | 318 | <p><strong>[注意] 処理系にあるコンパイラで確認していないため、間違っているかもしれません。</strong></p>
|
319 |
| -<p><div class="yata" id="57af623807ea7b4e9b34bde27a1f2ccd9add2517"><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> |
| 319 | +<p><div class="yata" id="5d6dc4179e7e08da018b9a61c9f163db70984b26"><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> |
320 | 320 | <span class="cp">#include</span> <span class="cpf"><a href="../complex.html"><complex></a></span><span class="cp"></span>
|
321 | 321 | <span class="cp">#include</span> <span class="cpf"><a href="../iostream.html"><iostream></a></span><span class="cp"></span>
|
322 | 322 | <span class="cp">#include</span> <span class="cpf"><a href="../linalg.html"><linalg></a></span><span class="cp"></span>
|
@@ -351,7 +351,8 @@ <h2>例</h2>
|
351 | 351 | <span class="n"><a href="../mdspan/mdspan.html">std::mdspan</a></span> <span class="nf">z</span><span class="p">(</span><span class="n">z_vec</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">N</span><span class="p">);</span>
|
352 | 352 |
|
353 | 353 | <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">A</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>
|
354 |
| - <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="n">i</span><span class="p">;</span> <span class="n">j</span> <span class="o"><</span> <span class="n">A</span><span class="p">.</span><span class="n">extent</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span> <span class="p">{</span> |
| 354 | + <span class="n">A</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">complex</span><span class="o"><</span><span class="kt">double</span><span class="o">></span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span> |
| 355 | + <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="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span> <span class="n">j</span> <span class="o"><</span> <span class="n">A</span><span class="p">.</span><span class="n">extent</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span> <span class="p">{</span> |
355 | 356 | <span class="n">A</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">complex</span><span class="o"><</span><span class="kt">double</span><span class="o">></span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">);</span>
|
356 | 357 | <span class="p">}</span>
|
357 | 358 | <span class="p">}</span>
|
@@ -391,24 +392,24 @@ <h2>例</h2>
|
391 | 392 | <h3>出力</h3>
|
392 | 393 | <p><pre><code>(1)
|
393 | 394 | y[0] = (0,14)
|
394 |
| -y[1] = (6,14) |
395 |
| -y[2] = (11,11) |
396 |
| -y[3] = (14,0) |
| 395 | +y[1] = (6,13) |
| 396 | +y[2] = (11,7) |
| 397 | +y[3] = (14,-9) |
397 | 398 | (2)
|
398 | 399 | y[0] = (0,14)
|
399 |
| -y[1] = (6,14) |
400 |
| -y[2] = (11,11) |
401 |
| -y[3] = (14,0) |
| 400 | +y[1] = (6,13) |
| 401 | +y[2] = (11,7) |
| 402 | +y[3] = (14,-9) |
402 | 403 | (3)
|
403 | 404 | z[0] = (0,14)
|
404 |
| -z[1] = (5,14) |
405 |
| -z[2] = (9,11) |
406 |
| -z[3] = (11,0) |
| 405 | +z[1] = (5,13) |
| 406 | +z[2] = (9,7) |
| 407 | +z[3] = (11,-9) |
407 | 408 | (4)
|
408 | 409 | z[0] = (0,14)
|
409 |
| -z[1] = (5,14) |
410 |
| -z[2] = (9,11) |
411 |
| -z[3] = (11,0) |
| 410 | +z[1] = (5,13) |
| 411 | +z[2] = (9,7) |
| 412 | +z[3] = (11,-9) |
412 | 413 | </code></pre></p>
|
413 | 414 | <h2>バージョン</h2>
|
414 | 415 | <h3>言語</h3>
|
|
0 commit comments