|
204 | 204 |
|
205 | 205 | <p class="text-right"><small>
|
206 | 206 | 最終更新日時(UTC):
|
207 |
| - <span itemprop="datePublished" content="2024-06-18T05:33:56"> |
208 |
| - 2024年06月18日 05時33分56秒 |
| 207 | + <span itemprop="datePublished" content="2024-06-21T06:20:26"> |
| 208 | + 2024年06月21日 06時20分26秒 |
209 | 209 | </span>
|
210 | 210 | <br/>
|
211 | 211 | <span itemprop="author" itemscope itemtype="http://schema.org/Person">
|
@@ -277,7 +277,55 @@ <h2>備考</h2>
|
277 | 277 | <li>もし<code>InVec::value_type</code>と<code>Scalar</code>がどちらも浮動小数点数型または<code>std::complex</code>の特殊化で、<code>Scalar</code>が<code>InVec::value_type</code>より精度が高い場合、和の各項は<code>Scalar</code>またはより高い精度の型が使われる。</li>
|
278 | 278 | </ul>
|
279 | 279 | <h2>例</h2>
|
| 280 | +<p><strong>[注意] 処理系にあるコンパイラで確認していないため、間違っているかもしれません。</strong></p> |
| 281 | +<p><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> |
| 282 | +<span class="cp">#include</span> <span class="cpf"><a href="../cmath.html"><cmath></a></span><span class="cp"></span> |
| 283 | +<span class="cp">#include</span> <span class="cpf"><a href="../execution.html"><execution></a></span><span class="cp"></span> |
| 284 | +<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html"><iostream></a></span><span class="cp"></span> |
| 285 | +<span class="cp">#include</span> <span class="cpf"><a href="../linalg.html"><linalg></a></span><span class="cp"></span> |
| 286 | +<span class="cp">#include</span> <span class="cpf"><a href="../mdspan.html"><mdspan></a></span><span class="cp"></span> |
| 287 | + |
| 288 | + |
| 289 | +<span class="k">template</span><span class="o"><</span><span class="k">class</span> <span class="nc">Scalar</span><span class="o">></span> |
| 290 | +<span class="n">Scalar</span> <span class="n">get_sum_of_squares</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">sum_of_squares_result</span><span class="o"><</span><span class="n">Scalar</span><span class="o">></span> <span class="n">result</span><span class="p">)</span> <span class="p">{</span> |
| 291 | + <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">pow</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">scaling_factor</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="o">*</span> <span class="n">result</span><span class="p">.</span><span class="n">scaled_sum_of_squares</span><span class="p">;</span> |
| 292 | +<span class="p">}</span> |
| 293 | + |
| 294 | + |
| 295 | +<span class="kt">int</span> <span class="n">main</span><span class="p">()</span> |
| 296 | +<span class="p">{</span> |
| 297 | + <span class="k">constexpr</span> <span class="kt">size_t</span> <span class="n">N</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span> |
| 298 | + |
| 299 | + <span class="n"><a href="../array/array.html">std::array</a></span><span class="o"><</span><span class="kt">double</span><span class="p">,</span> <span class="n">N</span><span class="o">></span> <span class="n">vec</span><span class="p">;</span> |
| 300 | + |
| 301 | + <span class="n"><a href="../mdspan/mdspan.html">std::mdspan</a></span> <span class="nf">v</span><span class="p">(</span><span class="n">vec</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">N</span><span class="p">);</span> |
| 302 | + |
| 303 | + <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">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="n">i</span><span class="p">)</span> <span class="p">{</span> |
| 304 | + <span class="n">v</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">pow</span><span class="p">(</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span> |
| 305 | + <span class="p">}</span> |
| 306 | + |
| 307 | + <span class="k">auto</span> <span class="n">init</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">linalg</span><span class="o">::</span><span class="n">sum_of_squares_result</span><span class="o"><</span><span class="kt">double</span><span class="o">></span><span class="p">{.</span><span class="n">scaling_factor</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="mi">5</span><span class="p">,</span> |
| 308 | + <span class="p">.</span><span class="n">scaled_sum_of_squares</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">};</span> |
| 309 | + |
| 310 | + <span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="n">get_sum_of_squares</span><span class="p">(</span> |
| 311 | + <span class="n">std</span><span class="o">::</span><span class="n">linalg</span><span class="o">::</span><span class="n">vector_sum_of_squares</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">init</span><span class="p">))</span> <span class="c1">// (1)</span> |
| 312 | + <span class="o"><<</span> <span class="n">get_sum_of_squares</span><span class="p">(</span> |
| 313 | + <span class="n">std</span><span class="o">::</span><span class="n">linalg</span><span class="o">::</span><span class="n">vector_sum_of_squares</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">v</span><span class="p">,</span> <span class="n">init</span><span class="p">))</span> <span class="o"><<</span> <span class="sc">'\n'</span> <span class="c1">// (2)</span> |
| 314 | + <span class="o"><<</span> <span class="n">get_sum_of_squares</span><span class="p">(</span> |
| 315 | + <span class="n">std</span><span class="o">::</span><span class="n">linalg</span><span class="o">::</span><span class="n">vector_sum_of_squares</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> <span class="o"><<</span> <span class="sc">'\n'</span> <span class="c1">// (3)</span> |
| 316 | + <span class="o"><<</span> <span class="n">get_sum_of_squares</span><span class="p">(</span> |
| 317 | + <span class="n">std</span><span class="o">::</span><span class="n">linalg</span><span class="o">::</span><span class="n">vector_sum_of_squares</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">v</span><span class="p">))</span> <span class="o"><<</span> <span class="sc">'\n'</span><span class="p">;</span> <span class="c1">// (4)</span> |
| 318 | + |
| 319 | + <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> |
| 320 | +<span class="p">}</span> |
| 321 | +</code></pre></div> |
| 322 | +</p> |
280 | 323 | <h3>出力</h3>
|
| 324 | +<p><pre><code>1.46361 |
| 325 | +1.46361 |
| 326 | +1.42361 |
| 327 | +1.42361 |
| 328 | +</code></pre></p> |
281 | 329 | <h2>バージョン</h2>
|
282 | 330 | <h3>言語</h3>
|
283 | 331 | <ul>
|
|
0 commit comments