Skip to content

Commit 8b7f0e6

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent be19f9e commit 8b7f0e6

File tree

8 files changed

+1324
-962
lines changed

8 files changed

+1324
-962
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-25T03:50:24">
180-
2024年06月25日 03時50分24秒
179+
<span itemprop="datePublished" content="2024-06-25T07:19:32">
180+
2024年06月25日 07時19分32秒
181181
</span>
182182
<br/>
183183
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -413,7 +413,7 @@ <h2>BLAS 2アルゴリズム</h2>
413413
<td>C++26</td>
414414
</tr>
415415
<tr>
416-
<td><code>symmetric_matrix_vector_product</code></td>
416+
<td><code><a href="linalg/symmetric_matrix_vector_product.html">symmetric_matrix_vector_product</a></code></td>
417417
<td>xSYMV: 対称行列とベクトルの積を求める (function template)</td>
418418
<td>C++26</td>
419419
</tr>

reference/linalg/layout_blas_packed.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868

6969
</head>
7070
<body>
71-
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;linalg&#34;], &#34;id-type&#34;: [&#34;class template&#34;], &#34;namespace&#34;: [&#34;std::linalg&#34;], &#34;cpp&#34;: [&#34;cpp26&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;9969e1e8725f7c265a0eb62391b7e33bd9f702db&#34;, &#34;source&#34;: &#34;#include &lt;linalg&gt;\n#include &lt;mdspan&gt;\n#include &lt;print&gt;\n#include &lt;string_view&gt;\nnamespace linalg = std::linalg;\n\n// \u884c\u5217(matrix)\u306e\u8981\u7d20\u8868\u793a\ntemplate &lt;class T, class E, class L, class A&gt;\nvoid print_mat(std::string_view name, const std::mdspan&lt;T, E, L, A&gt;&amp; mat)\n{\n static_assert(mat.rank() == 2);\n std::println(\&#34;{}:\&#34;, name);\n for (size_t i = 0; i &lt; mat.extent(0); ++i) {\n for (size_t j = 0; j &lt; mat.extent(1); ++j) {\n std::print(\&#34; {:2}\&#34;, mat[i, j]);\n }\n std::println(\&#34;\&#34;);\n }\n}\n\nint main()\n{\n double arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n\n // \u5217\u512a\u5148\u683c\u7d0d\u9806\u306e\u4e0b\u4e09\u89d2\u8981\u7d20\u304b\u30894x4\u5bfe\u79f0\u884c\u5217\u3092\u69cb\u7bc9\n std::mdspan&lt;\n double,\n std::extents&lt;size_t, 4, 4&gt;,\n linalg::layout_blas_packed&lt;linalg::lower_triangle_t, linalg::column_major_t&gt;\n &gt; mat1{arr};\n // 1 - - -\n // 2 5 - -\n // 3 6 8 -\n // 4 7 9 10\n print_mat(\&#34;mat1\&#34;, mat);\n\n // \u884c\u512a\u5148\u683c\u7d0d\u9806\u306e\u4e0b\u4e09\u89d2\u8981\u7d20\u304b\u30894x4\u5bfe\u79f0\u884c\u5217\u3092\u69cb\u7bc9\n std::mdspan&lt;\n double,\n std::extents&lt;size_t, 4, 4&gt;,\n linalg::layout_blas_packed&lt;linalg::lower_triangle_t, linalg::row_major_t&gt;\n &gt; mat2{arr};\n // 1 - - -\n // 2 3 - -\n // 4 5 6 -\n // 7 8 9 10\n print_mat(\&#34;mat2\&#34;, mat2);\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;linalg&#34;, &#34;layout_blas_packed&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;linalg&#34;], &#34;id-type&#34;: [&#34;class template&#34;], &#34;namespace&#34;: [&#34;std::linalg&#34;], &#34;cpp&#34;: [&#34;cpp26&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;798a0efeb11baea87b2192736c68df86682b4d4f&#34;, &#34;source&#34;: &#34;#include &lt;linalg&gt;\n#include &lt;mdspan&gt;\n#include &lt;print&gt;\n#include &lt;string_view&gt;\nnamespace linalg = std::linalg;\n\n// \u884c\u5217(matrix)\u306e\u8981\u7d20\u8868\u793a\ntemplate &lt;class T, class E, class L, class A&gt;\nvoid print_mat(std::string_view name, const std::mdspan&lt;T, E, L, A&gt;&amp; mat)\n{\n static_assert(mat.rank() == 2);\n std::println(\&#34;{}:\&#34;, name);\n for (size_t i = 0; i &lt; mat.extent(0); ++i) {\n for (size_t j = 0; j &lt; mat.extent(1); ++j) {\n std::print(\&#34; {:2}\&#34;, mat[i, j]);\n }\n std::println(\&#34;\&#34;);\n }\n}\n\nint main()\n{\n double arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n\n // \u5217\u512a\u5148\u683c\u7d0d\u9806\u306e\u4e0b\u4e09\u89d2\u8981\u7d20\u304b\u30894x4\u5bfe\u79f0\u884c\u5217\u3092\u69cb\u7bc9\n std::mdspan&lt;\n double,\n std::extents&lt;size_t, 4, 4&gt;,\n linalg::layout_blas_packed&lt;linalg::lower_triangle_t, linalg::column_major_t&gt;\n &gt; mat1{arr};\n // 1 - - -\n // 2 5 - -\n // 3 6 8 -\n // 4 7 9 10\n print_mat(\&#34;mat1\&#34;, mat1);\n\n // \u884c\u512a\u5148\u683c\u7d0d\u9806\u306e\u4e0b\u4e09\u89d2\u8981\u7d20\u304b\u30894x4\u5bfe\u79f0\u884c\u5217\u3092\u69cb\u7bc9\n std::mdspan&lt;\n double,\n std::extents&lt;size_t, 4, 4&gt;,\n linalg::layout_blas_packed&lt;linalg::lower_triangle_t, linalg::row_major_t&gt;\n &gt; mat2{arr};\n // 1 - - -\n // 2 3 - -\n // 4 5 6 -\n // 7 8 9 10\n print_mat(\&#34;mat2\&#34;, mat2);\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;linalg&#34;, &#34;layout_blas_packed&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -188,8 +188,8 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2024-05-21T12:32:20">
192-
2024年05月21日 12時32分20秒
191+
<span itemprop="datePublished" content="2024-06-25T07:20:37">
192+
2024年06月25日 07時20分37秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -259,7 +259,7 @@ <h2>メンバ型</h2>
259259
</tbody>
260260
</table>
261261
<h2></h2>
262-
<p><div class="yata" id="9969e1e8725f7c265a0eb62391b7e33bd9f702db"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../linalg.html">&lt;linalg&gt;</a></span><span class="cp"></span>
262+
<p><div class="yata" id="798a0efeb11baea87b2192736c68df86682b4d4f"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../linalg.html">&lt;linalg&gt;</a></span><span class="cp"></span>
263263
<span class="cp">#include</span> <span class="cpf"><a href="../mdspan.html">&lt;mdspan&gt;</a></span><span class="cp"></span>
264264
<span class="cp">#include</span> <span class="cpf"><a href="../print.html">&lt;print&gt;</a></span><span class="cp"></span>
265265
<span class="cp">#include</span> <span class="cpf"><a href="../string_view.html">&lt;string_view&gt;</a></span><span class="cp"></span>
@@ -293,7 +293,7 @@ <h2>例</h2>
293293
<span class="c1">// 2 5 - -</span>
294294
<span class="c1">// 3 6 8 -</span>
295295
<span class="c1">// 4 7 9 10</span>
296-
<span class="n">print_mat</span><span class="p">(</span><span class="s">"mat1"</span><span class="p">,</span> <span class="n">mat</span><span class="p">);</span>
296+
<span class="n">print_mat</span><span class="p">(</span><span class="s">"mat1"</span><span class="p">,</span> <span class="n">mat1</span><span class="p">);</span>
297297

298298
<span class="c1">// 行優先格納順の下三角要素から4x4対称行列を構築</span>
299299
<span class="n"><a href="../mdspan/mdspan.html">std::mdspan</a></span><span class="o">&lt;</span>

reference/linalg/matrix_vector_product.html

Lines changed: 7 additions & 7 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;ed1ea3467bc7bbaaff6312b21c0ae402fd8d782e&#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 = 2;\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 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 &lt; A.extent(0); ++i) {\n for(int j = 0; j &lt; A.extent(1); ++j) {\n A[i,j] = 100.0 * i + j;\n }\n }\n\n for(int j = 0; j &lt; x.extent(0); ++j) {\n x[j] = 1.0 * j;\n }\n for(int i = 0; i &lt; y.extent(0); ++i) {\n y[i] = -1.0 * i;\n }\n\n // (1)\n std::cout &lt;&lt; \&#34;(1)\\n\&#34;;\n std::linalg::matrix_vector_product(A, x, y);\n print(y, \&#34;y\&#34;);\n\n // (2)\n std::cout &lt;&lt; \&#34;(2)\\n\&#34;;\n std::linalg::matrix_vector_product(std::execution::par, A, x, y);\n print(y, \&#34;y\&#34;);\n\n // (3)\n std::cout &lt;&lt; \&#34;(3)\\n\&#34;;\n std::linalg::matrix_vector_product(A, x, y, z);\n print(z, \&#34;z\&#34;);\n\n // (4)\n std::cout &lt;&lt; \&#34;(4)\\n\&#34;;\n std::linalg::matrix_vector_product(std::execution::par, A, 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;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;7fe47a278f2352033e146b53e0b85431623ffbbf&#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 = 2;\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 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 &lt; A.extent(0); ++i) {\n for(int j = 0; j &lt; A.extent(1); ++j) {\n A[i,j] = 100.0 * 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::matrix_vector_product(A, x, y);\n print(y, \&#34;y\&#34;);\n\n // (2)\n std::cout &lt;&lt; \&#34;(2)\\n\&#34;;\n std::linalg::matrix_vector_product(std::execution::par, A, x, y);\n print(y, \&#34;y\&#34;);\n\n // (3)\n std::cout &lt;&lt; \&#34;(3)\\n\&#34;;\n std::linalg::matrix_vector_product(A, x, y, z);\n print(z, \&#34;z\&#34;);\n\n // (4)\n std::cout &lt;&lt; \&#34;(4)\\n\&#34;;\n std::linalg::matrix_vector_product(std::execution::par, A, 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;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-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秒
209209
</span>
210210
<br/>
211211
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -283,7 +283,7 @@ <h2><a class="cpprefjp-defined-word" data-desc="満たさなければプログ
283283
</ul>
284284
<h2>事前条件</h2>
285285
<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>
287287
<li>(3), (4): <code><a href="addable.html">addable</a>(x, y, z) == true</code></li>
288288
</ul>
289289
<h2>効果</h2>
@@ -301,7 +301,7 @@ <h2>備考</h2>
301301
</ul>
302302
<h2></h2>
303303
<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">&lt;array&gt;</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">&lt;array&gt;</a></span><span class="cp"></span>
305305
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
306306
<span class="cp">#include</span> <span class="cpf"><a href="../linalg.html">&lt;linalg&gt;</a></span><span class="cp"></span>
307307
<span class="cp">#include</span> <span class="cpf"><a href="../mdspan.html">&lt;mdspan&gt;</a></span><span class="cp"></span>
@@ -335,10 +335,10 @@ <h2>例</h2>
335335
<span class="p">}</span>
336336

337337
<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>
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>
339339
<span class="p">}</span>
340340
<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>
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>
342342
<span class="p">}</span>
343343

344344
<span class="c1">// (1)</span>

0 commit comments

Comments
 (0)