Skip to content

Commit de9b2c9

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 3f62619 commit de9b2c9

File tree

3 files changed

+228
-442
lines changed

3 files changed

+228
-442
lines changed

reference/linalg/apply_givens_rotation.html

Lines changed: 99 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;page_id&#34;: [&#34;reference&#34;, &#34;linalg&#34;, &#34;apply_givens_rotation&#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;3302ca2002f03d960c6db34a0383400b7354a4b2&#34;, &#34;source&#34;: &#34;#include &lt;cmath&gt;\n#include &lt;complex&gt;\n#include &lt;initializer_list&gt;\n#include &lt;execution&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(Vector v) {\n for (int i = 0; i &lt; v.extent(0) - 1; ++i) {\n std::cout &lt;&lt; v[i] &lt;&lt; \&#34;, \&#34;;\n }\n std::cout &lt;&lt; v[v.extent(0) - 1] &lt;&lt; std::endl;\n}\n\nint main()\n{\n constexpr size_t N = 2;\n\n using Complex = std::complex&lt;double&gt;;\n\n {\n std::initializer_list&lt;double&gt; a_coeff = {1, std::sqrt(3.0)};\n std::initializer_list&lt;double&gt; b_coeff = {std::sqrt(3.0), -0.5};\n\n std::vector&lt;double&gt; a_vec(a_coeff);\n std::mdspan a(a_vec.data(), N);\n\n std::vector&lt;double&gt; b_vec(b_coeff);\n std::mdspan b(b_vec.data(), N);\n\n double c = 0.5;\n double s = -std::sqrt(3.0) / 2;\n\n // (1)\n std::linalg::apply_givens_rotation(a, b, c, s);\n print(a);\n print(b);\n\n // (2)\n // a\u3068b\u3092\u521d\u671f\u5316\n a_vec = a_coeff;\n b_vec = b_coeff;\n std::linalg::apply_givens_rotation(std::execution::par, a, b, c, s);\n print(a);\n print(b);\n }\n\n {\n std::initializer_list&lt;Complex&gt; a_coeff = {Complex{1, 0}, Complex{std::sqrt(3.0), 0}};\n std::initializer_list&lt;Complex&gt; b_coeff = {Complex{0, std::sqrt(3.0)}, Complex{0, -0.5}};\n\n std::vector&lt;Complex&gt; a_vec(a_coeff);\n std::mdspan a(a_vec.data(), N);\n\n std::vector&lt;Complex&gt; b_vec(b_coeff);\n std::mdspan b(b_vec.data(), N);\n\n double c = 0.5;\n Complex s = Complex{0, -std::sqrt(3.0) / 2};\n\n // (3)\n std::linalg::apply_givens_rotation(a, b, c, s);\n print(a);\n print(b);\n\n // (4)\n // a\u3068b\u3092\u521d\u671f\u5316\n a_vec = a_coeff;\n b_vec = b_coeff;\n std::linalg::apply_givens_rotation(std::execution::par, a, b, c, s);\n print(a);\n print(b);\n }\n\n return 0;\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;linalg&#34;, &#34;apply_givens_rotation&#34;]}">
8888
<nav class="navbar navbar-default" role="navigation">
8989
<div class="container-fluid">
9090
<div class="navbar-header">
@@ -204,12 +204,12 @@
204204

205205
<p class="text-right"><small>
206206
最終更新日時(UTC):
207-
<span itemprop="datePublished" content="2024-07-11T10:10:41">
208-
2024年07月11日 10時10分41秒
207+
<span itemprop="datePublished" content="2024-07-25T12:07:33">
208+
2024年07月25日 12時07分33秒
209209
</span>
210210
<br/>
211211
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
212-
<span itemprop="name">yoh</span>
212+
<span itemprop="name">Yuya Asano</span>
213213
</span>
214214
が更新
215215
</small></p>
@@ -314,7 +314,102 @@ <h2>効果</h2>
314314
<h2>戻り値</h2>
315315
<p>なし</p>
316316
<h2></h2>
317+
<p><strong>[注意] 処理系にあるコンパイラで確認していないため、間違っているかもしれません。</strong></p>
318+
<p><div class="yata" id="3302ca2002f03d960c6db34a0383400b7354a4b2"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../cmath.html">&lt;cmath&gt;</a></span><span class="cp"></span>
319+
<span class="cp">#include</span> <span class="cpf"><a href="../complex.html">&lt;complex&gt;</a></span><span class="cp"></span>
320+
<span class="cp">#include</span> <span class="cpf"><a href="../initializer_list.html">&lt;initializer_list&gt;</a></span><span class="cp"></span>
321+
<span class="cp">#include</span> <span class="cpf"><a href="../execution.html">&lt;execution&gt;</a></span><span class="cp"></span>
322+
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
323+
<span class="cp">#include</span> <span class="cpf"><a href="../linalg.html">&lt;linalg&gt;</a></span><span class="cp"></span>
324+
<span class="cp">#include</span> <span class="cpf"><a href="../mdspan.html">&lt;mdspan&gt;</a></span><span class="cp"></span>
325+
<span class="cp">#include</span> <span class="cpf"><a href="../vector.html">&lt;vector&gt;</a></span><span class="cp"></span>
326+
327+
<span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">Vector</span><span class="o">&gt;</span>
328+
<span class="kt">void</span> <span class="n">print</span><span class="p">(</span><span class="n">Vector</span> <span class="n">v</span><span class="p">)</span> <span class="p">{</span>
329+
<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">v</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="mi">1</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
330+
<span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="n">v</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&lt;&lt;</span> <span class="s">", "</span><span class="p">;</span>
331+
<span class="p">}</span>
332+
<span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="n">v</span><span class="p">[</span><span class="n">v</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="mi">1</span><span class="p">]</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span>
333+
<span class="p">}</span>
334+
335+
<span class="kt">int</span> <span class="n">main</span><span class="p">()</span>
336+
<span class="p">{</span>
337+
<span class="k">constexpr</span> <span class="kt">size_t</span> <span class="n">N</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
338+
339+
<span class="k">using</span> <span class="n">Complex</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">complex</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span><span class="p">;</span>
340+
341+
<span class="p">{</span>
342+
<span class="n"><a href="../initializer_list/initializer_list.html">std::initializer_list</a></span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span> <span class="n">a_coeff</span> <span class="o">=</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">sqrt</span><span class="p">(</span><span class="mf">3.0</span><span class="p">)};</span>
343+
<span class="n"><a href="../initializer_list/initializer_list.html">std::initializer_list</a></span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span> <span class="n">b_coeff</span> <span class="o">=</span> <span class="p">{</span><span class="n">std</span><span class="o">::</span><span class="n">sqrt</span><span class="p">(</span><span class="mf">3.0</span><span class="p">),</span> <span class="o">-</span><span class="mf">0.5</span><span class="p">};</span>
344+
345+
<span class="n"><a href="../vector/vector.html">std::vector</a></span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span> <span class="n">a_vec</span><span class="p">(</span><span class="n">a_coeff</span><span class="p">);</span>
346+
<span class="n"><a href="../mdspan/mdspan.html">std::mdspan</a></span> <span class="nf">a</span><span class="p">(</span><span class="n">a_vec</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">N</span><span class="p">);</span>
347+
348+
<span class="n"><a href="../vector/vector.html">std::vector</a></span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span> <span class="n">b_vec</span><span class="p">(</span><span class="n">b_coeff</span><span class="p">);</span>
349+
<span class="n"><a href="../mdspan/mdspan.html">std::mdspan</a></span> <span class="nf">b</span><span class="p">(</span><span class="n">b_vec</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">N</span><span class="p">);</span>
350+
351+
<span class="kt">double</span> <span class="n">c</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">;</span>
352+
<span class="kt">double</span> <span class="n">s</span> <span class="o">=</span> <span class="o">-</span><span class="n">std</span><span class="o">::</span><span class="n">sqrt</span><span class="p">(</span><span class="mf">3.0</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">;</span>
353+
354+
<span class="c1">// (1)</span>
355+
<span class="n"><span style="color:#ff0000">std::linalg::apply_givens_rotation</span></span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">s</span><span class="p">);</span>
356+
<span class="n">print</span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
357+
<span class="n">print</span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
358+
359+
<span class="c1">// (2)</span>
360+
<span class="c1">// aとbを初期化</span>
361+
<span class="n">a_vec</span> <span class="o">=</span> <span class="n">a_coeff</span><span class="p">;</span>
362+
<span class="n">b_vec</span> <span class="o">=</span> <span class="n">b_coeff</span><span class="p">;</span>
363+
<span class="n"><span style="color:#ff0000">std::linalg::apply_givens_rotation</span></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">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">s</span><span class="p">);</span>
364+
<span class="n">print</span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
365+
<span class="n">print</span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
366+
<span class="p">}</span>
367+
368+
<span class="p">{</span>
369+
<span class="n"><a href="../initializer_list/initializer_list.html">std::initializer_list</a></span><span class="o">&lt;</span><span class="n">Complex</span><span class="o">&gt;</span> <span class="n">a_coeff</span> <span class="o">=</span> <span class="p">{</span><span class="n">Complex</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">},</span> <span class="n">Complex</span><span class="p">{</span><span class="n">std</span><span class="o">::</span><span class="n">sqrt</span><span class="p">(</span><span class="mf">3.0</span><span class="p">),</span> <span class="mi">0</span><span class="p">}};</span>
370+
<span class="n"><a href="../initializer_list/initializer_list.html">std::initializer_list</a></span><span class="o">&lt;</span><span class="n">Complex</span><span class="o">&gt;</span> <span class="n">b_coeff</span> <span class="o">=</span> <span class="p">{</span><span class="n">Complex</span><span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">sqrt</span><span class="p">(</span><span class="mf">3.0</span><span class="p">)},</span> <span class="n">Complex</span><span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.5</span><span class="p">}};</span>
371+
372+
<span class="n"><a href="../vector/vector.html">std::vector</a></span><span class="o">&lt;</span><span class="n">Complex</span><span class="o">&gt;</span> <span class="n">a_vec</span><span class="p">(</span><span class="n">a_coeff</span><span class="p">);</span>
373+
<span class="n"><a href="../mdspan/mdspan.html">std::mdspan</a></span> <span class="nf">a</span><span class="p">(</span><span class="n">a_vec</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">N</span><span class="p">);</span>
374+
375+
<span class="n"><a href="../vector/vector.html">std::vector</a></span><span class="o">&lt;</span><span class="n">Complex</span><span class="o">&gt;</span> <span class="n">b_vec</span><span class="p">(</span><span class="n">b_coeff</span><span class="p">);</span>
376+
<span class="n"><a href="../mdspan/mdspan.html">std::mdspan</a></span> <span class="nf">b</span><span class="p">(</span><span class="n">b_vec</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">N</span><span class="p">);</span>
377+
378+
<span class="kt">double</span> <span class="n">c</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">;</span>
379+
<span class="n">Complex</span> <span class="n">s</span> <span class="o">=</span> <span class="n">Complex</span><span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="n">std</span><span class="o">::</span><span class="n">sqrt</span><span class="p">(</span><span class="mf">3.0</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">};</span>
380+
381+
<span class="c1">// (3)</span>
382+
<span class="n"><span style="color:#ff0000">std::linalg::apply_givens_rotation</span></span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">s</span><span class="p">);</span>
383+
<span class="n">print</span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
384+
<span class="n">print</span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
385+
386+
<span class="c1">// (4)</span>
387+
<span class="c1">// aとbを初期化</span>
388+
<span class="n">a_vec</span> <span class="o">=</span> <span class="n">a_coeff</span><span class="p">;</span>
389+
<span class="n">b_vec</span> <span class="o">=</span> <span class="n">b_coeff</span><span class="p">;</span>
390+
<span class="n"><span style="color:#ff0000">std::linalg::apply_givens_rotation</span></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">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">s</span><span class="p">);</span>
391+
<span class="n">print</span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
392+
<span class="n">print</span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
393+
<span class="p">}</span>
394+
395+
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
396+
<span class="p">}</span>
397+
</code></pre></div>
398+
</div></p>
317399
<h3>出力</h3>
400+
<p><pre><code>(1)
401+
1, 0
402+
0, -1
403+
(2)
404+
1, 0
405+
0, -1
406+
(3)
407+
(1,0), (0,0)
408+
(0,0), (0,-1)
409+
(4)
410+
(1,0), (0,0)
411+
(0,0), (0,-1)
412+
</code></pre></p>
318413
<h2>バージョン</h2>
319414
<h3>言語</h3>
320415
<ul>

0 commit comments

Comments
 (0)