Skip to content

Commit 7c6300b

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 25d4780 commit 7c6300b

File tree

7 files changed

+1058
-594
lines changed

7 files changed

+1058
-594
lines changed

reference/linalg.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,8 @@
176176

177177
<p class="text-right"><small>
178178
最終更新日時(UTC):
179-
<span itemprop="datePublished" content="2024-06-25T07:19:32">
180-
2024年06月25日 07時19分32秒
179+
<span itemprop="datePublished" content="2024-06-26T02:41:39">
180+
2024年06月26日 02時41分39秒
181181
</span>
182182
<br/>
183183
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -418,7 +418,7 @@ <h2>BLAS 2アルゴリズム</h2>
418418
<td>C++26</td>
419419
</tr>
420420
<tr>
421-
<td><code>hermitian_matrix_vector_product</code></td>
421+
<td><code><a href="linalg/hermitian_matrix_vector_product.html">hermitian_matrix_vector_product</a></code></td>
422422
<td>xHEMV: ハミルトニアン行列とベクトルの積を求める (function template)</td>
423423
<td>C++26</td>
424424
</tr>

reference/linalg/hermitian_matrix_vector_product.html

Lines changed: 458 additions & 0 deletions
Large diffs are not rendered by default.

reference/linalg/symmetric_matrix_vector_product.html

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484

8585
</head>
8686
<body>
87-
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;linalg&#34;], &#34;id-type&#34;: [&#34;function template&#34;], &#34;namespace&#34;: [&#34;std::linalg&#34;], &#34;cpp&#34;: [&#34;cpp26&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;63f86644e441c968dc932c2ab9fc8f48c2914ad8&#34;, &#34;source&#34;: &#34;#include &lt;array&gt;\n#include &lt;iostream&gt;\n#include &lt;linalg&gt;\n#include &lt;mdspan&gt;\n#include &lt;vector&gt;\n\ntemplate &lt;class Vector&gt;\nvoid print(const Vector&amp; v, const std::string&amp; name) {\n for (int i = 0; i &lt; v.extent(0); ++i) {\n std::cout &lt;&lt; name &lt;&lt; \&#34;[\&#34; &lt;&lt; i &lt;&lt; \&#34;]\&#34; &lt;&lt; \&#34; = \&#34; &lt;&lt; v[i] &lt;&lt; &#39;\\n&#39;;\n }\n}\n\nint main()\n{\n constexpr size_t N = 4;\n constexpr size_t M = 4;\n\n std::vector&lt;double&gt; A_vec(N*M);\n std::vector&lt;double&gt; x_vec(M);\n std::array&lt;double, N&gt; y_vec, z_vec;\n\n std::mdspan&lt;\n double,\n std::extents&lt;size_t, N, M&gt;,\n std::linalg::layout_blas_packed&lt;\n std::linalg::upper_triangle_t,\n std::linalg::row_major_t&gt;\n &gt; 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 &lt; A.extent(0); ++i) {\n for(int j = i; j &lt; A.extent(1); ++j) {\n A[i,j] = A.extent(1) * i + j;\n }\n }\n\n for(int j = 0; j &lt; x.extent(0); ++j) {\n x[j] = j;\n }\n for(int i = 0; i &lt; y.extent(0); ++i) {\n y[i] = -i;\n }\n\n // (1)\n std::cout &lt;&lt; \&#34;(1)\\n\&#34;;\n std::linalg::symmetric_matrix_vector_product(A, std::linalg::upper_triangle, x, y);\n print(y, \&#34;y\&#34;);\n\n // (2)\n std::cout &lt;&lt; \&#34;(2)\\n\&#34;;\n std::linalg::symmetric_matrix_vector_product(std::execution::par, A, std::linalg::upper_triangle, x, y);\n print(y, \&#34;y\&#34;);\n\n // (3)\n std::cout &lt;&lt; \&#34;(3)\\n\&#34;;\n std::linalg::symmetric_matrix_vector_product(A, std::linalg::upper_triangle, x, y, z);\n print(z, \&#34;z\&#34;);\n\n // (4)\n std::cout &lt;&lt; \&#34;(4)\\n\&#34;;\n std::linalg::symmetric_matrix_vector_product(std::execution::par, A, std::linalg::upper_triangle, x, y, z);\n print(z, \&#34;z\&#34;);\n\n return 0;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;linalg&#34;, &#34;symmetric_matrix_vector_product&#34;]}">
87+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;linalg&#34;], &#34;id-type&#34;: [&#34;function template&#34;], &#34;namespace&#34;: [&#34;std::linalg&#34;], &#34;cpp&#34;: [&#34;cpp26&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;75595f54e5e933827f01db3a2603e0409fa9e2d0&#34;, &#34;source&#34;: &#34;#include &lt;array&gt;\n#include &lt;iostream&gt;\n#include &lt;linalg&gt;\n#include &lt;mdspan&gt;\n#include &lt;vector&gt;\n\ntemplate &lt;class Vector&gt;\nvoid print(const Vector&amp; v, const std::string&amp; name) {\n for (int i = 0; i &lt; v.extent(0); ++i) {\n std::cout &lt;&lt; name &lt;&lt; \&#34;[\&#34; &lt;&lt; i &lt;&lt; \&#34;]\&#34; &lt;&lt; \&#34; = \&#34; &lt;&lt; v[i] &lt;&lt; &#39;\\n&#39;;\n }\n}\n\nint main()\n{\n constexpr size_t N = 4;\n constexpr size_t M = 4;\n\n std::vector&lt;double&gt; A_vec(N*M);\n std::vector&lt;double&gt; x_vec(M);\n std::array&lt;double, N&gt; y_vec, z_vec;\n\n std::mdspan&lt;\n double,\n std::extents&lt;size_t, N, M&gt;,\n std::linalg::layout_blas_packed&lt;\n std::linalg::upper_triangle_t,\n std::linalg::row_major_t&gt;\n &gt; 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 &lt; A.extent(0); ++i) {\n for(int j = i; j &lt; A.extent(1); ++j) {\n A[i,j] = A.extent(1) * i + j;\n }\n }\n\n for(int j = 0; j &lt; x.extent(0); ++j) {\n x[j] = j;\n }\n\n // (1)\n std::cout &lt;&lt; \&#34;(1)\\n\&#34;;\n std::linalg::symmetric_matrix_vector_product(A, std::linalg::upper_triangle, x, y);\n print(y, \&#34;y\&#34;);\n\n // (2)\n std::cout &lt;&lt; \&#34;(2)\\n\&#34;;\n std::linalg::symmetric_matrix_vector_product(std::execution::par, A, std::linalg::upper_triangle, x, y);\n print(y, \&#34;y\&#34;);\n\n for(int i = 0; i &lt; y.extent(0); ++i) {\n y[i] = -i;\n }\n\n // (3)\n std::cout &lt;&lt; \&#34;(3)\\n\&#34;;\n std::linalg::symmetric_matrix_vector_product(A, std::linalg::upper_triangle, x, y, z);\n print(z, \&#34;z\&#34;);\n\n // (4)\n std::cout &lt;&lt; \&#34;(4)\\n\&#34;;\n std::linalg::symmetric_matrix_vector_product(std::execution::par, A, std::linalg::upper_triangle, x, y, z);\n print(z, \&#34;z\&#34;);\n\n return 0;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;linalg&#34;, &#34;symmetric_matrix_vector_product&#34;]}">
8888
<nav class="navbar navbar-default" role="navigation">
8989
<div class="container-fluid">
9090
<div class="navbar-header">
@@ -204,8 +204,8 @@
204204

205205
<p class="text-right"><small>
206206
最終更新日時(UTC):
207-
<span itemprop="datePublished" content="2024-06-25T07:19:32">
208-
2024年06月25日 07時19分32秒
207+
<span itemprop="datePublished" content="2024-06-26T02:42:24">
208+
2024年06月26日 02時42分24秒
209209
</span>
210210
<br/>
211211
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -316,7 +316,7 @@ <h2>備考</h2>
316316
</ul>
317317
<h2></h2>
318318
<p><strong>[注意] 処理系にあるコンパイラで確認していないため、間違っているかもしれません。</strong></p>
319-
<p><div class="yata" id="63f86644e441c968dc932c2ab9fc8f48c2914ad8"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../array.html">&lt;array&gt;</a></span><span class="cp"></span>
319+
<p><div class="yata" id="75595f54e5e933827f01db3a2603e0409fa9e2d0"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../array.html">&lt;array&gt;</a></span><span class="cp"></span>
320320
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
321321
<span class="cp">#include</span> <span class="cpf"><a href="../linalg.html">&lt;linalg&gt;</a></span><span class="cp"></span>
322322
<span class="cp">#include</span> <span class="cpf"><a href="../mdspan.html">&lt;mdspan&gt;</a></span><span class="cp"></span>
@@ -358,9 +358,6 @@ <h2>例</h2>
358358
<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">&lt;</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>
359359
<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>
360360
<span class="p">}</span>
361-
<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">&lt;</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>
362-
<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>
363-
<span class="p">}</span>
364361

365362
<span class="c1">// (1)</span>
366363
<span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="s">"(1)</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
@@ -372,6 +369,10 @@ <h2>例</h2>
372369
<span class="n">std</span><span class="o">::</span><span class="n">linalg</span><span class="o">::</span><span class="n">symmetric_matrix_vector_product</span><span class="p">(</span><span class="n"><a href="../execution/execution/execution_policy.html">std::execution::par</a></span><span class="p">,</span> <span class="n">A</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">linalg</span><span class="o">::</span><span class="n">upper_triangle</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">);</span>
373370
<span class="n">print</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="s">"y"</span><span class="p">);</span>
374371

372+
<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">&lt;</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>
373+
<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>
374+
<span class="p">}</span>
375+
375376
<span class="c1">// (3)</span>
376377
<span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="s">"(3)</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
377378
<span class="n">std</span><span class="o">::</span><span class="n">linalg</span><span class="o">::</span><span class="n">symmetric_matrix_vector_product</span><span class="p">(</span><span class="n">A</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">linalg</span><span class="o">::</span><span class="n">upper_triangle</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">);</span>
@@ -398,15 +399,15 @@ <h3>出力</h3>
398399
y[2] = 59
399400
y[3] = 74
400401
(3)
401-
z[0] = 28
402-
z[1] = 76
403-
z[2] = 118
404-
z[3] = 148
402+
z[0] = 14
403+
z[1] = 37
404+
z[2] = 57
405+
z[3] = 71
405406
(4)
406-
z[0] = 28
407-
z[1] = 76
408-
z[2] = 118
409-
z[3] = 148
407+
z[0] = 14
408+
z[1] = 37
409+
z[2] = 57
410+
z[3] = 71
410411
</code></pre></p>
411412
<h2>バージョン</h2>
412413
<h3>言語</h3>

0 commit comments

Comments
 (0)