Skip to content

Commit 08c9562

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 78af945 commit 08c9562

File tree

9 files changed

+3592
-31170
lines changed

9 files changed

+3592
-31170
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-07-08T10:34:18">
180-
2024年07月08日 10時34分18秒
179+
<span itemprop="datePublished" content="2024-07-09T06:50:42">
180+
2024年07月09日 06時50分42秒
181181
</span>
182182
<br/>
183183
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -485,7 +485,7 @@ <h2>BLAS 3アルゴリズム</h2>
485485
<td>C++26</td>
486486
</tr>
487487
<tr>
488-
<td><code>hermitian_matrix_product</code></td>
488+
<td><code><a href="linalg/hermitian_matrix_product.html">hermitian_matrix_product</a></code></td>
489489
<td>xHEMM: ハミルトニアン行列と行列の積を求める (function template)</td>
490490
<td>C++26</td>
491491
</tr>

reference/linalg/hermitian_matrix_product.html

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

reference/linalg/hermitian_matrix_rank_1_update.html

Lines changed: 5 additions & 4 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;1792939fb57232efc6310058b9ce3580f17d6fa9&#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 Matrix&gt;\nvoid print_mat(const Matrix&amp; A) {\n for(int i = 0; i &lt; A.extent(0); ++i) {\n for(int j = 0; j &lt; i; ++j) {\n std::cout &lt;&lt; A[j, i] &lt;&lt; &#39; &#39;;\n }\n for(int j = i; j &lt; A.extent(1) - 1; ++j) {\n std::cout &lt;&lt; A[i, j] &lt;&lt; &#39; &#39;;\n }\n std::cout &lt;&lt; A[i, A.extent(1) - 1] &lt;&lt; &#39;\\n&#39;;\n }\n}\n\ntemplate &lt;class Vector&gt;\nvoid init_vec(Vector&amp; v) {\n for (int i = 0; i &lt; v.extent(0); ++i) {\n v[i] = std::complex&lt;double&gt;(0, i);\n }\n}\n\ntemplate &lt;class Matrix&gt;\nvoid init_mat(Matrix&amp; A) {\n for(int i = 0; i &lt; A.extent(0); ++i) {\n A[i,j] = std::complex&lt;double&gt;(i, 0);\n for(int j = i + 1; j &lt; A.extent(1); ++j) {\n A[i,j] = std::complex&lt;double&gt;(i, j);\n }\n }\n}\n\nint main()\n{\n constexpr size_t N = 4;\n\n std::vector&lt;std::complex&lt;double&gt;&gt; A_vec(N * N);\n std::vector&lt;std::complex&lt;double&gt;&gt; x_vec(N);\n\n std::mdspan&lt;\n std::complex&lt;double&gt;,\n std::extents&lt;size_t, N, N&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(), N);\n\n init_mat(A);\n init_vec(x);\n\n // (1)\n std::cout &lt;&lt; \&#34;(1)\\n\&#34;;\n std::linalg::hermitian_matrix_rank_1_update(\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (2)\n init_mat(A);\n std::cout &lt;&lt; \&#34;(2)\\n\&#34;;\n std::linalg::hermitian_matrix_rank_1_update(\n std::execution::par,\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (3)\n init_mat(A);\n std::cout &lt;&lt; \&#34;(3)\\n\&#34;;\n std::linalg::hermitian_matrix_rank_1_update(\n -1.0,\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (4)\n init_mat(A);\n std::cout &lt;&lt; \&#34;(4)\\n\&#34;;\n std::linalg::hermitian_matrix_rank_1_update(\n std::execution::par,\n -1.0,\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n return 0;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;linalg&#34;, &#34;hermitian_matrix_rank_1_update&#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;296bd63b9fa3d8c9928eb03bf67386fae4920828&#34;, &#34;source&#34;: &#34;#include &lt;array&gt;\n#include &lt;complex&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 Matrix&gt;\nvoid print_mat(const Matrix&amp; A) {\n for(int i = 0; i &lt; A.extent(0); ++i) {\n for(int j = 0; j &lt; i; ++j) {\n std::cout &lt;&lt; A[j, i] &lt;&lt; &#39; &#39;;\n }\n for(int j = i; j &lt; A.extent(1) - 1; ++j) {\n std::cout &lt;&lt; A[i, j] &lt;&lt; &#39; &#39;;\n }\n std::cout &lt;&lt; A[i, A.extent(1) - 1] &lt;&lt; &#39;\\n&#39;;\n }\n}\n\ntemplate &lt;class Vector&gt;\nvoid init_vec(Vector&amp; v) {\n for (int i = 0; i &lt; v.extent(0); ++i) {\n v[i] = std::complex&lt;double&gt;(0, i);\n }\n}\n\ntemplate &lt;class Matrix&gt;\nvoid init_mat(Matrix&amp; A) {\n for(int i = 0; i &lt; A.extent(0); ++i) {\n A[i,j] = std::complex&lt;double&gt;(i, 0);\n for(int j = i + 1; j &lt; A.extent(1); ++j) {\n A[i,j] = std::complex&lt;double&gt;(i, j);\n }\n }\n}\n\nint main()\n{\n constexpr size_t N = 4;\n\n std::vector&lt;std::complex&lt;double&gt;&gt; A_vec(N * N);\n std::vector&lt;std::complex&lt;double&gt;&gt; x_vec(N);\n\n std::mdspan&lt;\n std::complex&lt;double&gt;,\n std::extents&lt;size_t, N, N&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(), N);\n\n init_mat(A);\n init_vec(x);\n\n // (1)\n std::cout &lt;&lt; \&#34;(1)\\n\&#34;;\n std::linalg::hermitian_matrix_rank_1_update(\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (2)\n init_mat(A);\n std::cout &lt;&lt; \&#34;(2)\\n\&#34;;\n std::linalg::hermitian_matrix_rank_1_update(\n std::execution::par,\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (3)\n init_mat(A);\n std::cout &lt;&lt; \&#34;(3)\\n\&#34;;\n std::linalg::hermitian_matrix_rank_1_update(\n -1.0,\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (4)\n init_mat(A);\n std::cout &lt;&lt; \&#34;(4)\\n\&#34;;\n std::linalg::hermitian_matrix_rank_1_update(\n std::execution::par,\n -1.0,\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n return 0;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;linalg&#34;, &#34;hermitian_matrix_rank_1_update&#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-07-06T05:58:05">
208-
2024年07月06日 05時58分05秒
207+
<span itemprop="datePublished" content="2024-07-09T06:51:13">
208+
2024年07月09日 06時51分13秒
209209
</span>
210210
<br/>
211211
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -306,7 +306,8 @@ <h2>備考</h2>
306306
<p>(3), (4)は$A \leftarrow A - xx^T$を行うために用意された。</p>
307307
<h2></h2>
308308
<p><strong>[注意] 処理系にあるコンパイラで確認していないため、間違っているかもしれません。</strong></p>
309-
<p><div class="yata" id="1792939fb57232efc6310058b9ce3580f17d6fa9"><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>
309+
<p><div class="yata" id="296bd63b9fa3d8c9928eb03bf67386fae4920828"><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>
310+
<span class="cp">#include</span> <span class="cpf"><a href="../complex.html">&lt;complex&gt;</a></span><span class="cp"></span>
310311
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
311312
<span class="cp">#include</span> <span class="cpf"><a href="../linalg.html">&lt;linalg&gt;</a></span><span class="cp"></span>
312313
<span class="cp">#include</span> <span class="cpf"><a href="../mdspan.html">&lt;mdspan&gt;</a></span><span class="cp"></span>

reference/linalg/hermitian_matrix_rank_2_update.html

Lines changed: 5 additions & 4 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;83abefb4838c379d42d4bcc2f2fd63cf7653ff14&#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 Matrix&gt;\nvoid print_mat(const Matrix&amp; A) {\n for(int i = 0; i &lt; A.extent(0); ++i) {\n for(int j = 0; j &lt; i; ++j) {\n std::cout &lt;&lt; A[j, i] &lt;&lt; &#39; &#39;;\n }\n for(int j = i; j &lt; A.extent(1) - 1; ++j) {\n std::cout &lt;&lt; A[i, j] &lt;&lt; &#39; &#39;;\n }\n std::cout &lt;&lt; A[i, A.extent(1) - 1] &lt;&lt; &#39;\\n&#39;;\n }\n}\n\ntemplate &lt;class Matrix&gt;\nvoid init_mat(Matrix&amp; A) {\n for(int i = 0; i &lt; A.extent(0); ++i) {\n A[i,j] = std::complex&lt;double&gt;(i, 0);\n for(int j = i + 1; j &lt; A.extent(1); ++j) {\n A[i,j] = std::complex&lt;double&gt;(i, j);\n }\n }\n}\n\nint main()\n{\n constexpr size_t N = 4;\n\n std::vector&lt;std::complex&lt;double&gt;&gt; A_vec(N * N);\n std::vector&lt;std::complex&lt;double&gt;&gt; x_vec(N);\n std::array&lt;std::complex&lt;double&gt;, N&gt; y_vec;\n\n std::mdspan&lt;\n std::complex&lt;double&gt;,\n std::extents&lt;size_t, N, N&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(), N);\n std::mdspan y(y_vec.data(), N);\n\n init_mat(A);\n\n for (int i = 0; i &lt; x.extent(0); ++i) {\n x[i] = std::complex&lt;double&gt;(0, i);\n }\n\n for (int i = 0; i &lt; y.extent(0); ++i) {\n y[i] = std::complex&lt;double&gt;(0, i + y.extent(0));\n }\n\n\n // (1)\n std::cout &lt;&lt; \&#34;(1)\\n\&#34;;\n std::linalg::hermitian_matrix_rank_2_update(\n x,\n y,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (2)\n init_mat(A);\n std::cout &lt;&lt; \&#34;(2)\\n\&#34;;\n std::linalg::hermitian_matrix_rank_2_update(\n std::execution::par,\n x,\n y,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n return 0;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;linalg&#34;, &#34;hermitian_matrix_rank_2_update&#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;0192f23559f2514a5c2b204a2d71fd300a721933&#34;, &#34;source&#34;: &#34;#include &lt;array&gt;\n#include &lt;complex&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 Matrix&gt;\nvoid print_mat(const Matrix&amp; A) {\n for(int i = 0; i &lt; A.extent(0); ++i) {\n for(int j = 0; j &lt; i; ++j) {\n std::cout &lt;&lt; A[j, i] &lt;&lt; &#39; &#39;;\n }\n for(int j = i; j &lt; A.extent(1) - 1; ++j) {\n std::cout &lt;&lt; A[i, j] &lt;&lt; &#39; &#39;;\n }\n std::cout &lt;&lt; A[i, A.extent(1) - 1] &lt;&lt; &#39;\\n&#39;;\n }\n}\n\ntemplate &lt;class Matrix&gt;\nvoid init_mat(Matrix&amp; A) {\n for(int i = 0; i &lt; A.extent(0); ++i) {\n A[i,j] = std::complex&lt;double&gt;(i, 0);\n for(int j = i + 1; j &lt; A.extent(1); ++j) {\n A[i,j] = std::complex&lt;double&gt;(i, j);\n }\n }\n}\n\nint main()\n{\n constexpr size_t N = 4;\n\n std::vector&lt;std::complex&lt;double&gt;&gt; A_vec(N * N);\n std::vector&lt;std::complex&lt;double&gt;&gt; x_vec(N);\n std::array&lt;std::complex&lt;double&gt;, N&gt; y_vec;\n\n std::mdspan&lt;\n std::complex&lt;double&gt;,\n std::extents&lt;size_t, N, N&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(), N);\n std::mdspan y(y_vec.data(), N);\n\n init_mat(A);\n\n for (int i = 0; i &lt; x.extent(0); ++i) {\n x[i] = std::complex&lt;double&gt;(0, i);\n }\n\n for (int i = 0; i &lt; y.extent(0); ++i) {\n y[i] = std::complex&lt;double&gt;(0, i + y.extent(0));\n }\n\n\n // (1)\n std::cout &lt;&lt; \&#34;(1)\\n\&#34;;\n std::linalg::hermitian_matrix_rank_2_update(\n x,\n y,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (2)\n init_mat(A);\n std::cout &lt;&lt; \&#34;(2)\\n\&#34;;\n std::linalg::hermitian_matrix_rank_2_update(\n std::execution::par,\n x,\n y,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n return 0;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;linalg&#34;, &#34;hermitian_matrix_rank_2_update&#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-07-06T05:57:34">
208-
2024年07月06日 05時57分34秒
207+
<span itemprop="datePublished" content="2024-07-09T06:51:13">
208+
2024年07月09日 06時51分13秒
209209
</span>
210210
<br/>
211211
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -282,7 +282,8 @@ <h2>計算量</h2>
282282
<p>$O(\verb|x.extent(0)| \times \verb|y.extent(0)|)$</p>
283283
<h2></h2>
284284
<p><strong>[注意] 処理系にあるコンパイラで確認していないため、間違っているかもしれません。</strong></p>
285-
<p><div class="yata" id="83abefb4838c379d42d4bcc2f2fd63cf7653ff14"><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>
285+
<p><div class="yata" id="0192f23559f2514a5c2b204a2d71fd300a721933"><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>
286+
<span class="cp">#include</span> <span class="cpf"><a href="../complex.html">&lt;complex&gt;</a></span><span class="cp"></span>
286287
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
287288
<span class="cp">#include</span> <span class="cpf"><a href="../linalg.html">&lt;linalg&gt;</a></span><span class="cp"></span>
288289
<span class="cp">#include</span> <span class="cpf"><a href="../mdspan.html">&lt;mdspan&gt;</a></span><span class="cp"></span>

reference/linalg/symmetric_matrix_product.html

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,8 @@
204204

205205
<p class="text-right"><small>
206206
最終更新日時(UTC):
207-
<span itemprop="datePublished" content="2024-07-08T10:34:18">
208-
2024年07月08日 10時34分18秒
207+
<span itemprop="datePublished" content="2024-07-09T06:05:05">
208+
2024年07月09日 06時05分05秒
209209
</span>
210210
<br/>
211211
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -331,13 +331,13 @@
331331
<h2>概要</h2>
332332
<p>行列同士の積を計算する。</p>
333333
<ul>
334-
<li>(1): 三角行列<code>A</code>と行列<code>B</code>に対し、$C \leftarrow AB$</li>
334+
<li>(1): 対称行列<code>A</code>と行列<code>B</code>に対し、$C \leftarrow AB$</li>
335335
<li>(2): (1)を指定された実行ポリシーで実行する。</li>
336-
<li>(3): 行列<code>A</code>と三角行列<code>B</code>に対し、$C \leftarrow AB$</li>
336+
<li>(3): 行列<code>A</code>と対称行列<code>B</code>に対し、$C \leftarrow AB$</li>
337337
<li>(4): (3)を指定された実行ポリシーで実行する。</li>
338-
<li>(5): 三角行列<code>A</code>と行列<code>B</code>に対し、$C \leftarrow E + AB$</li>
338+
<li>(5): 対称行列<code>A</code>と行列<code>B</code>に対し、$C \leftarrow E + AB$</li>
339339
<li>(6): (5)を指定された実行ポリシーで実行する。</li>
340-
<li>(7): 行列<code>A</code>と三角行列<code>B</code>に対し、$C \leftarrow E + AB$</li>
340+
<li>(7): 行列<code>A</code>と対称行列<code>B</code>に対し、$C \leftarrow E + AB$</li>
341341
<li>(8): (7)を指定された実行ポリシーで実行する。</li>
342342
</ul>
343343
<h2><a class="cpprefjp-defined-word" data-desc="満たさなければプログラムが不適格となる要件。`static_assert`や関数のdelete宣言などに相当する">適格要件</a></h2>
@@ -361,10 +361,10 @@ <h2>事前条件</h2>
361361
</ul>
362362
<h2>効果</h2>
363363
<ul>
364-
<li>(1), (2): 三角行列<code>A</code>と行列<code>B</code>に対し、$C \leftarrow AB$</li>
365-
<li>(3), (4): 行列<code>A</code>と三角行列<code>B</code>に対し、$C \leftarrow AB$</li>
366-
<li>(5), (6): 三角行列<code>A</code>と行列<code>B</code>に対し、$C \leftarrow E + AB$</li>
367-
<li>(7), (8): 行列<code>A</code>と三角行列<code>B</code>に対し、$C \leftarrow E + AB$</li>
364+
<li>(1), (2): 対称行列<code>A</code>と行列<code>B</code>に対し、$C \leftarrow AB$</li>
365+
<li>(3), (4): 行列<code>A</code>と対称行列<code>B</code>に対し、$C \leftarrow AB$</li>
366+
<li>(5), (6): 対称行列<code>A</code>と行列<code>B</code>に対し、$C \leftarrow E + AB$</li>
367+
<li>(7), (8): 行列<code>A</code>と対称行列<code>B</code>に対し、$C \leftarrow E + AB$</li>
368368
</ul>
369369
<h2>戻り値</h2>
370370
<p>なし</p>

0 commit comments

Comments
 (0)