Documentation for 341ed50da8

This commit is contained in:
github-actions
2021-09-03 19:56:17 +00:00
parent 52d0c55145
commit 08e8eb037e
3432 changed files with 71392 additions and 72953 deletions

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: MinHeap Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d2/d05/class_min_heap.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -94,19 +94,17 @@ $(document).ready(function(){initNavTree('d2/d05/class_min_heap.html','../../');
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="../../d4/d1f/class_min_heap-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">MinHeap Class Reference</div> </div>
<div class="headertitle"><div class="title">MinHeap Class Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a078cb888e642bb1f95dd0e03f0a35820"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d05/class_min_heap.html#a078cb888e642bb1f95dd0e03f0a35820">MinHeap</a> (int cap)</td></tr>
<tr class="separator:a078cb888e642bb1f95dd0e03f0a35820"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaef438c1056492cb62c4a4d9035b5cad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d05/class_min_heap.html#aaef438c1056492cb62c4a4d9035b5cad">MinHeapify</a> (int)</td></tr>
<tr class="separator:aaef438c1056492cb62c4a4d9035b5cad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e893f9deb4be4cf4f9990e736483e81"><td class="memItemLeft" align="right" valign="top"><a id="a0e893f9deb4be4cf4f9990e736483e81"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>parent</b> (int i)</td></tr>
<tr class="memitem:a0e893f9deb4be4cf4f9990e736483e81"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d05/class_min_heap.html#a0e893f9deb4be4cf4f9990e736483e81">parent</a> (int i)</td></tr>
<tr class="separator:a0e893f9deb4be4cf4f9990e736483e81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8c6c141e3de664819686aa637e1afca"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d05/class_min_heap.html#aa8c6c141e3de664819686aa637e1afca">left</a> (int i)</td></tr>
<tr class="separator:aa8c6c141e3de664819686aa637e1afca"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -123,25 +121,25 @@ int&#160;</td><td class="memItemRight" valign="bottom"><b>parent</b> (int i)</td
<tr class="memitem:aef78f3384f5a0ae880ad0883d2d44b82"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d05/class_min_heap.html#aef78f3384f5a0ae880ad0883d2d44b82">insertKey</a> (int k)</td></tr>
<tr class="separator:aef78f3384f5a0ae880ad0883d2d44b82"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a34a93a87967308eb516328c0aca3c48e"><td class="memItemLeft" align="right" valign="top"><a id="a34a93a87967308eb516328c0aca3c48e"></a>
int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a></td></tr>
<tr class="memitem:a34a93a87967308eb516328c0aca3c48e"><td class="memItemLeft" align="right" valign="top"><a id="a34a93a87967308eb516328c0aca3c48e" name="a34a93a87967308eb516328c0aca3c48e"></a>
int *&#160;</td><td class="memItemRight" valign="bottom"><b>harr</b></td></tr>
<tr class="memdesc:a34a93a87967308eb516328c0aca3c48e"><td class="mdescLeft">&#160;</td><td class="mdescRight">pointer to array of elements in heap <br /></td></tr>
<tr class="separator:a34a93a87967308eb516328c0aca3c48e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88b4aa3e66392a3eabbf2517a9a79a02"><td class="memItemLeft" align="right" valign="top"><a id="a88b4aa3e66392a3eabbf2517a9a79a02"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d05/class_min_heap.html#a88b4aa3e66392a3eabbf2517a9a79a02">capacity</a></td></tr>
<tr class="memitem:a88b4aa3e66392a3eabbf2517a9a79a02"><td class="memItemLeft" align="right" valign="top"><a id="a88b4aa3e66392a3eabbf2517a9a79a02" name="a88b4aa3e66392a3eabbf2517a9a79a02"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>capacity</b></td></tr>
<tr class="memdesc:a88b4aa3e66392a3eabbf2517a9a79a02"><td class="mdescLeft">&#160;</td><td class="mdescRight">maximum possible size of min heap <br /></td></tr>
<tr class="separator:a88b4aa3e66392a3eabbf2517a9a79a02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4d358bf063bb196a1945b3fb99b4913"><td class="memItemLeft" align="right" valign="top"><a id="ae4d358bf063bb196a1945b3fb99b4913"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a></td></tr>
<tr class="memitem:ae4d358bf063bb196a1945b3fb99b4913"><td class="memItemLeft" align="right" valign="top"><a id="ae4d358bf063bb196a1945b3fb99b4913" name="ae4d358bf063bb196a1945b3fb99b4913"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>heap_size</b></td></tr>
<tr class="memdesc:ae4d358bf063bb196a1945b3fb99b4913"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current number of elements in min heap. <br /></td></tr>
<tr class="separator:ae4d358bf063bb196a1945b3fb99b4913"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A class for Min Heap </p>
<div class="textblock"><p >A class for Min Heap </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a078cb888e642bb1f95dd0e03f0a35820"></a>
<a id="a078cb888e642bb1f95dd0e03f0a35820" name="a078cb888e642bb1f95dd0e03f0a35820"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a078cb888e642bb1f95dd0e03f0a35820">&#9670;&nbsp;</a></span>MinHeap()</h2>
<div class="memitem">
@@ -164,25 +162,51 @@ int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../..
</tr>
</table>
</div><div class="memdoc">
<p>Constructor: Builds a heap from a given array a[] of given size </p><dl class="params"><dt>Parameters</dt><dd>
<p >Constructor: Builds a heap from a given array a[] of given size </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">capacity</td><td>initial heap capacity </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; {</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> = 0;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#a88b4aa3e66392a3eabbf2517a9a79a02">capacity</a> = cap;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a> = <span class="keyword">new</span> <span class="keywordtype">int</span>[cap];</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> {</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> = 0;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a88b4aa3e66392a3eabbf2517a9a79a02">capacity</a> = cap;</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a> = <span class="keyword">new</span> <span class="keywordtype">int</span>[cap];</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> }</div>
<div class="ttc" id="aclass_min_heap_html_a34a93a87967308eb516328c0aca3c48e"><div class="ttname"><a href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">MinHeap::harr</a></div><div class="ttdeci">int * harr</div><div class="ttdoc">pointer to array of elements in heap</div><div class="ttdef"><b>Definition:</b> binaryheap.cpp:11</div></div>
<div class="ttc" id="aclass_min_heap_html_a88b4aa3e66392a3eabbf2517a9a79a02"><div class="ttname"><a href="../../d2/d05/class_min_heap.html#a88b4aa3e66392a3eabbf2517a9a79a02">MinHeap::capacity</a></div><div class="ttdeci">int capacity</div><div class="ttdoc">maximum possible size of min heap</div><div class="ttdef"><b>Definition:</b> binaryheap.cpp:12</div></div>
<div class="ttc" id="aclass_min_heap_html_ae4d358bf063bb196a1945b3fb99b4913"><div class="ttname"><a href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">MinHeap::heap_size</a></div><div class="ttdeci">int heap_size</div><div class="ttdoc">Current number of elements in min heap.</div><div class="ttdef"><b>Definition:</b> binaryheap.cpp:13</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2759e717e45edcd6ca7096ff03d65dbd" name="a2759e717e45edcd6ca7096ff03d65dbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2759e717e45edcd6ca7096ff03d65dbd">&#9670;&nbsp;</a></span>~MinHeap()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">MinHeap::~MinHeap </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span>{ <span class="keyword">delete</span>[] <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>; }</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa7f726cc6327955d22871592227432f5"></a>
<a id="aa7f726cc6327955d22871592227432f5" name="aa7f726cc6327955d22871592227432f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7f726cc6327955d22871592227432f5">&#9670;&nbsp;</a></span>decreaseKey()</h2>
<div class="memitem">
@@ -207,15 +231,15 @@ int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../..
</tr>
</table>
</div><div class="memdoc">
<p>Decreases key value of key at index i to new_val</p>
<p>Decreases value of key at index 'i' to new_val. It is assumed that new_val is smaller than harr[i]. </p>
<div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i] = new_val;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">while</span> (i != 0 &amp;&amp; <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[parent(i)] &gt; <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i]) {</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(<a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i], <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[parent(i)]);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; i = parent(i);</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;}</div>
<p >Decreases key value of key at index i to new_val</p>
<p >Decreases value of key at index 'i' to new_val. It is assumed that new_val is smaller than harr[i]. </p>
<div class="fragment"><div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> {</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i] = new_val;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordflow">while</span> (i != 0 &amp;&amp; <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[parent(i)] &gt; <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i]) {</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(<a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i], <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[parent(i)]);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> i = parent(i);</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> }</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span>}</div>
<div class="ttc" id="aswap_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a></div><div class="ttdeci">T swap(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -226,7 +250,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a37ac126eabb0c3ce04047172abccca29"></a>
<a id="a37ac126eabb0c3ce04047172abccca29" name="a37ac126eabb0c3ce04047172abccca29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37ac126eabb0c3ce04047172abccca29">&#9670;&nbsp;</a></span>deleteKey()</h2>
<div class="memitem">
@@ -241,12 +265,12 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Deletes a key stored at index i</p>
<p>This function deletes key at index i. It first reduced value to minus infinite, then calls <a class="el" href="../../d2/d05/class_min_heap.html#a4014f1edaed0bd7db0c0d2ca53228980">extractMin()</a> </p>
<div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#aa7f726cc6327955d22871592227432f5">decreaseKey</a>(i, INT_MIN);</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#a4014f1edaed0bd7db0c0d2ca53228980">extractMin</a>();</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;}</div>
<p >Deletes a key stored at index i</p>
<p >This function deletes key at index i. It first reduced value to minus infinite, then calls <a class="el" href="../../d2/d05/class_min_heap.html#a4014f1edaed0bd7db0c0d2ca53228980">extractMin()</a> </p>
<div class="fragment"><div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> {</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_function" href="../../d2/d05/class_min_heap.html#aa7f726cc6327955d22871592227432f5">decreaseKey</a>(i, INT_MIN);</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <a class="code hl_function" href="../../d2/d05/class_min_heap.html#a4014f1edaed0bd7db0c0d2ca53228980">extractMin</a>();</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span>}</div>
<div class="ttc" id="aclass_min_heap_html_a4014f1edaed0bd7db0c0d2ca53228980"><div class="ttname"><a href="../../d2/d05/class_min_heap.html#a4014f1edaed0bd7db0c0d2ca53228980">MinHeap::extractMin</a></div><div class="ttdeci">int extractMin()</div><div class="ttdef"><b>Definition:</b> binaryheap.cpp:85</div></div>
<div class="ttc" id="aclass_min_heap_html_aa7f726cc6327955d22871592227432f5"><div class="ttname"><a href="../../d2/d05/class_min_heap.html#aa7f726cc6327955d22871592227432f5">MinHeap::decreaseKey</a></div><div class="ttdeci">void decreaseKey(int i, int new_val)</div><div class="ttdef"><b>Definition:</b> binaryheap.cpp:76</div></div>
</div><!-- fragment --><div class="dynheader">
@@ -258,7 +282,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a4014f1edaed0bd7db0c0d2ca53228980"></a>
<a id="a4014f1edaed0bd7db0c0d2ca53228980" name="a4014f1edaed0bd7db0c0d2ca53228980"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4014f1edaed0bd7db0c0d2ca53228980">&#9670;&nbsp;</a></span>extractMin()</h2>
<div class="memitem">
@@ -272,28 +296,28 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>to extract the root which is the minimum element </p>
<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> &lt;= 0)</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> INT_MAX;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> == 1) {</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a>--;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[0];</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// Store the minimum value, and remove it from heap</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">int</span> root = <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[0];</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[0] = <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[<a class="code" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> - 1];</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a>--;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#aaef438c1056492cb62c4a4d9035b5cad">MinHeapify</a>(0);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; </div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> root;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div>
<p >to extract the root which is the minimum element </p>
<div class="fragment"><div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> &lt;= 0)</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordflow">return</span> INT_MAX;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> == 1) {</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a>--;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[0];</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> }</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// Store the minimum value, and remove it from heap</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordtype">int</span> root = <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[0];</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[0] = <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[<a class="code hl_variable" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> - 1];</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a>--;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <a class="code hl_function" href="../../d2/d05/class_min_heap.html#aaef438c1056492cb62c4a4d9035b5cad">MinHeapify</a>(0);</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">return</span> root;</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span>}</div>
<div class="ttc" id="aclass_min_heap_html_aaef438c1056492cb62c4a4d9035b5cad"><div class="ttname"><a href="../../d2/d05/class_min_heap.html#aaef438c1056492cb62c4a4d9035b5cad">MinHeap::MinHeapify</a></div><div class="ttdeci">void MinHeapify(int)</div><div class="ttdef"><b>Definition:</b> binaryheap.cpp:113</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a336ac71f0d857269fe9a98058a3cd130"></a>
<a id="a336ac71f0d857269fe9a98058a3cd130" name="a336ac71f0d857269fe9a98058a3cd130"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a336ac71f0d857269fe9a98058a3cd130">&#9670;&nbsp;</a></span>getMin()</h2>
<div class="memitem">
@@ -315,12 +339,12 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the minimum key (key at root) from min heap </p>
<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[0]; }</div>
<p >Returns the minimum key (key at root) from min heap </p>
<div class="fragment"><div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span>{ <span class="keywordflow">return</span> <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[0]; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aef78f3384f5a0ae880ad0883d2d44b82"></a>
<a id="aef78f3384f5a0ae880ad0883d2d44b82" name="aef78f3384f5a0ae880ad0883d2d44b82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef78f3384f5a0ae880ad0883d2d44b82">&#9670;&nbsp;</a></span>insertKey()</h2>
<div class="memitem">
@@ -335,24 +359,24 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Inserts a new key 'k' </p>
<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> == <a class="code" href="../../d2/d05/class_min_heap.html#a88b4aa3e66392a3eabbf2517a9a79a02">capacity</a>) {</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nOverflow: Could not insertKey\n&quot;</span>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// First insert the new key at the end</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a>++;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">int</span> i = <a class="code" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> - 1;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i] = k;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="comment">// Fix the min heap property if it is violated</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">while</span> (i != 0 &amp;&amp; <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[parent(i)] &gt; <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i]) {</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(<a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i], <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[parent(i)]);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; i = parent(i);</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;}</div>
<p >Inserts a new key 'k' </p>
<div class="fragment"><div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> {</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> == <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a88b4aa3e66392a3eabbf2517a9a79a02">capacity</a>) {</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nOverflow: Could not insertKey\n&quot;</span>;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> }</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// First insert the new key at the end</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a>++;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordtype">int</span> i = <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> - 1;</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i] = k;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// Fix the min heap property if it is violated</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">while</span> (i != 0 &amp;&amp; <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[parent(i)] &gt; <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i]) {</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(<a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i], <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[parent(i)]);</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> i = parent(i);</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> }</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span>}</div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -363,7 +387,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="aa8c6c141e3de664819686aa637e1afca"></a>
<a id="aa8c6c141e3de664819686aa637e1afca" name="aa8c6c141e3de664819686aa637e1afca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8c6c141e3de664819686aa637e1afca">&#9670;&nbsp;</a></span>left()</h2>
<div class="memitem">
@@ -386,12 +410,12 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>to get index of left child of node at index i </p>
<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{ <span class="keywordflow">return</span> (2 * i + 1); }</div>
<p >to get index of left child of node at index i </p>
<div class="fragment"><div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span>{ <span class="keywordflow">return</span> (2 * i + 1); }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aaef438c1056492cb62c4a4d9035b5cad"></a>
<a id="aaef438c1056492cb62c4a4d9035b5cad" name="aaef438c1056492cb62c4a4d9035b5cad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaef438c1056492cb62c4a4d9035b5cad">&#9670;&nbsp;</a></span>MinHeapify()</h2>
<div class="memitem">
@@ -406,21 +430,21 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>to heapify a subtree with the root at given index</p>
<p>A recursive method to heapify a subtree with the root at given index This method assumes that the subtrees are already heapified </p>
<div class="fragment"><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordtype">int</span> l = <a class="code" href="../../d2/d05/class_min_heap.html#aa8c6c141e3de664819686aa637e1afca">left</a>(i);</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">int</span> r = <a class="code" href="../../d2/d05/class_min_heap.html#ac760b85cf90265b8d674b942a43fb70e">right</a>(i);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">int</span> smallest = i;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> (l &lt; <a class="code" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> &amp;&amp; <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[l] &lt; <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i])</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; smallest = l;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (r &lt; <a class="code" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> &amp;&amp; <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[r] &lt; <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[smallest])</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; smallest = r;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (smallest != i) {</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(<a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i], <a class="code" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[smallest]);</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="../../d2/d05/class_min_heap.html#aaef438c1056492cb62c4a4d9035b5cad">MinHeapify</a>(smallest);</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;}</div>
<p >to heapify a subtree with the root at given index</p>
<p >A recursive method to heapify a subtree with the root at given index This method assumes that the subtrees are already heapified </p>
<div class="fragment"><div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> {</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">int</span> l = <a class="code hl_function" href="../../d2/d05/class_min_heap.html#aa8c6c141e3de664819686aa637e1afca">left</a>(i);</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordtype">int</span> r = <a class="code hl_function" href="../../d2/d05/class_min_heap.html#ac760b85cf90265b8d674b942a43fb70e">right</a>(i);</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordtype">int</span> smallest = i;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">if</span> (l &lt; <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> &amp;&amp; <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[l] &lt; <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i])</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> smallest = l;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">if</span> (r &lt; <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#ae4d358bf063bb196a1945b3fb99b4913">heap_size</a> &amp;&amp; <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[r] &lt; <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[smallest])</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> smallest = r;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">if</span> (smallest != i) {</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(<a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[i], <a class="code hl_variable" href="../../d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e">harr</a>[smallest]);</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <a class="code hl_function" href="../../d2/d05/class_min_heap.html#aaef438c1056492cb62c4a4d9035b5cad">MinHeapify</a>(smallest);</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> }</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span>}</div>
<div class="ttc" id="aclass_min_heap_html_aa8c6c141e3de664819686aa637e1afca"><div class="ttname"><a href="../../d2/d05/class_min_heap.html#aa8c6c141e3de664819686aa637e1afca">MinHeap::left</a></div><div class="ttdeci">int left(int i)</div><div class="ttdef"><b>Definition:</b> binaryheap.cpp:31</div></div>
<div class="ttc" id="aclass_min_heap_html_ac760b85cf90265b8d674b942a43fb70e"><div class="ttname"><a href="../../d2/d05/class_min_heap.html#ac760b85cf90265b8d674b942a43fb70e">MinHeap::right</a></div><div class="ttdeci">int right(int i)</div><div class="ttdef"><b>Definition:</b> binaryheap.cpp:34</div></div>
</div><!-- fragment --><div class="dynheader">
@@ -432,7 +456,34 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="ac760b85cf90265b8d674b942a43fb70e"></a>
<a id="a0e893f9deb4be4cf4f9990e736483e81" name="a0e893f9deb4be4cf4f9990e736483e81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e893f9deb4be4cf4f9990e736483e81">&#9670;&nbsp;</a></span>parent()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int MinHeap::parent </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>i</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span>{ <span class="keywordflow">return</span> (i - 1) / 2; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ac760b85cf90265b8d674b942a43fb70e" name="ac760b85cf90265b8d674b942a43fb70e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac760b85cf90265b8d674b942a43fb70e">&#9670;&nbsp;</a></span>right()</h2>
<div class="memitem">
@@ -455,8 +506,8 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>to get index of right child of node at index i </p>
<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{ <span class="keywordflow">return</span> (2 * i + 2); }</div>
<p >to get index of right child of node at index i </p>
<div class="fragment"><div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span>{ <span class="keywordflow">return</span> (2 * i + 2); }</div>
</div><!-- fragment -->
</div>
</div>
@@ -469,7 +520,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../d2/d05/class_min_heap.html">MinHeap</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -1,7 +1,6 @@
var class_min_heap =
[
[ "MinHeap", "d2/d05/class_min_heap.html#a078cb888e642bb1f95dd0e03f0a35820", null ],
[ "~MinHeap", "d2/d05/class_min_heap.html#a2759e717e45edcd6ca7096ff03d65dbd", null ],
[ "decreaseKey", "d2/d05/class_min_heap.html#aa7f726cc6327955d22871592227432f5", null ],
[ "deleteKey", "d2/d05/class_min_heap.html#a37ac126eabb0c3ce04047172abccca29", null ],
[ "extractMin", "d2/d05/class_min_heap.html#a4014f1edaed0bd7db0c0d2ca53228980", null ],
@@ -9,7 +8,6 @@ var class_min_heap =
[ "insertKey", "d2/d05/class_min_heap.html#aef78f3384f5a0ae880ad0883d2d44b82", null ],
[ "left", "d2/d05/class_min_heap.html#aa8c6c141e3de664819686aa637e1afca", null ],
[ "MinHeapify", "d2/d05/class_min_heap.html#aaef438c1056492cb62c4a4d9035b5cad", null ],
[ "parent", "d2/d05/class_min_heap.html#a0e893f9deb4be4cf4f9990e736483e81", null ],
[ "right", "d2/d05/class_min_heap.html#ac760b85cf90265b8d674b942a43fb70e", null ],
[ "capacity", "d2/d05/class_min_heap.html#a88b4aa3e66392a3eabbf2517a9a79a02", null ],
[ "harr", "d2/d05/class_min_heap.html#a34a93a87967308eb516328c0aca3c48e", null ],

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: MinHeap::deleteKey Pages: 1 -->
<svg width="366pt" height="66pt"

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: MinHeap::decreaseKey Pages: 1 -->
<svg width="223pt" height="28pt"

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1 +1 @@
78e74cd4a4088d8133dd20748911013d
25765eea4d79d679be5807dcf00b4d8d

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: MinHeap::MinHeapify Pages: 1 -->
<svg width="238pt" height="104pt"
@@ -18,6 +18,12 @@
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge2" class="edge">
<title>Node1&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M35.65,-57.76C25.76,-66.57 32.54,-76 56,-76 71.03,-76 79.21,-72.13 80.55,-67.03"/>
<polygon fill="midnightblue" stroke="midnightblue" points="83.67,-65.42 76.35,-57.76 77.29,-68.31 83.67,-65.42"/>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
@@ -43,7 +49,7 @@
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M112.18,-48C120.53,-48 129.12,-48 137.38,-48"/>
<polygon fill="midnightblue" stroke="midnightblue" points="137.61,-51.5 147.61,-48 137.61,-44.5 137.61,-51.5"/>
@@ -58,7 +64,7 @@
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<g id="edge4" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M90.06,-38.41C108.18,-33.16 130.72,-26.61 149.62,-21.13"/>
<polygon fill="midnightblue" stroke="midnightblue" points="150.77,-24.44 159.4,-18.3 148.82,-17.72 150.77,-24.44"/>

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: MinHeap::insertKey Pages: 1 -->
<svg width="207pt" height="28pt"

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: math/fast_power.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d2/d0b/fast__power_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -92,8 +92,7 @@ $(document).ready(function(){initNavTree('d2/d0b/fast__power_8cpp.html','../../'
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">fast_power.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">fast_power.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
@@ -112,7 +111,7 @@ Include dependency graph for fast_power.cpp:</div>
</div>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a8399b847626e5bba983cab7c7918b445"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a8399b847626e5bba983cab7c7918b445"><td class="memTemplItemLeft" align="right" valign="top">double&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445">fast_power_recursive</a> (T a, T b)</td></tr>
@@ -124,14 +123,14 @@ Functions</h2></td></tr>
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Faster computation for \(a^b\). </p>
<p>Program that computes \(a^b\) in \(O(logN)\) time. It is based on formula that:</p><ol type="1">
<div class="textblock"><p >Faster computation for \(a^b\). </p>
<p >Program that computes \(a^b\) in \(O(logN)\) time. It is based on formula that:</p><ol type="1">
<li>if \(b\) is even: \(a^b = a^\frac{b}{2} \cdot a^\frac{b}{2} = {a^\frac{b}{2}}^2\)</li>
<li>if \(b\) is odd: \(a^b = a^\frac{b-1}{2} \cdot a^\frac{b-1}{2} \cdot a = {a^\frac{b-1}{2}}^2 \cdot a\)</li>
</ol>
<p>We can compute \(a^b\) recursively using above algorithm. </p>
<p >We can compute \(a^b\) recursively using above algorithm. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a0d4e3f0099a6975b74a314a35bd0f94d"></a>
<a id="a0d4e3f0099a6975b74a314a35bd0f94d" name="a0d4e3f0099a6975b74a314a35bd0f94d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d4e3f0099a6975b74a314a35bd0f94d">&#9670;&nbsp;</a></span>fast_power_linear()</h2>
<div class="memitem">
@@ -158,27 +157,33 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Same algorithm with little different formula. It still calculates in \(O(\log N)\) </p>
<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// negative power. a^b = 1 / (a^-b)</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> (b &lt; 0)</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> 1.0 / <a class="code" href="../../d2/d0b/fast__power_8cpp.html#a0d4e3f0099a6975b74a314a35bd0f94d">fast_power_linear</a>(a, -b);</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">double</span> <a class="code" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a> = 1;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">while</span> (b) {</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (b &amp; 1)</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a> = <a class="code" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a> * a;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; a = a * a;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; b = b &gt;&gt; 1;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div>
<p >Same algorithm with little different formula. It still calculates in \(O(\log N)\) </p>
<div class="fragment"><div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> {</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// negative power. a^b = 1 / (a^-b)</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">if</span> (b &lt; 0)</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">return</span> 1.0 / <a class="code hl_function" href="../../d2/d0b/fast__power_8cpp.html#a0d4e3f0099a6975b74a314a35bd0f94d">fast_power_linear</a>(a, -b);</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordtype">double</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a> = 1;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">while</span> (b) {</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordflow">if</span> (b &amp; 1)</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a> = <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a> * a;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> a = a * a;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> b = b &gt;&gt; 1;</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> }</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span>}</div>
<div class="ttc" id="afast__power_8cpp_html_a0d4e3f0099a6975b74a314a35bd0f94d"><div class="ttname"><a href="../../d2/d0b/fast__power_8cpp.html#a0d4e3f0099a6975b74a314a35bd0f94d">fast_power_linear</a></div><div class="ttdeci">double fast_power_linear(T a, T b)</div><div class="ttdef"><b>Definition:</b> fast_power.cpp:50</div></div>
<div class="ttc" id="afibonacci__sum_8cpp_html_aadb40ac4c74a7efc0680b83eeee138aa"><div class="ttname"><a href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">math::fibonacci_sum::result</a></div><div class="ttdeci">uint64_t result(uint64_t n)</div><div class="ttdef"><b>Definition:</b> fibonacci_sum.cpp:76</div></div>
</div><!-- fragment -->
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d0b/fast__power_8cpp_a0d4e3f0099a6975b74a314a35bd0f94d_cgraph.svg" width="138" height="62"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<a id="a8399b847626e5bba983cab7c7918b445"></a>
</div>
</div>
<a id="a8399b847626e5bba983cab7c7918b445" name="a8399b847626e5bba983cab7c7918b445"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8399b847626e5bba983cab7c7918b445">&#9670;&nbsp;</a></span>fast_power_recursive()</h2>
<div class="memitem">
@@ -205,30 +210,36 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>algorithm implementation for \(a^b\) </p>
<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; {</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">// negative power. a^b = 1 / (a^-b)</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">if</span> (b &lt; 0)</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> 1.0 / <a class="code" href="../../d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445">fast_power_recursive</a>(a, -b);</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">if</span> (b == 0)</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; T bottom = <a class="code" href="../../d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445">fast_power_recursive</a>(a, b &gt;&gt; 1);</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">// Since it is integer division b/2 = (b-1)/2 where b is odd.</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="comment">// Therefore, case2 is easily solved by integer division.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">double</span> <a class="code" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">if</span> ((b &amp; 1) == 0) <span class="comment">// case1</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a> = bottom * bottom;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">else</span> <span class="comment">// case2</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a> = bottom * bottom * a;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div>
<p >algorithm implementation for \(a^b\) </p>
<div class="fragment"><div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> {</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// negative power. a^b = 1 / (a^-b)</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="keywordflow">if</span> (b &lt; 0)</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordflow">return</span> 1.0 / <a class="code hl_function" href="../../d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445">fast_power_recursive</a>(a, -b);</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="keywordflow">if</span> (b == 0)</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> T bottom = <a class="code hl_function" href="../../d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445">fast_power_recursive</a>(a, b &gt;&gt; 1);</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// Since it is integer division b/2 = (b-1)/2 where b is odd.</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Therefore, case2 is easily solved by integer division.</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordtype">double</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">if</span> ((b &amp; 1) == 0) <span class="comment">// case1</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a> = bottom * bottom;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">else</span> <span class="comment">// case2</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a> = bottom * bottom * a;</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span>}</div>
<div class="ttc" id="afast__power_8cpp_html_a8399b847626e5bba983cab7c7918b445"><div class="ttname"><a href="../../d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445">fast_power_recursive</a></div><div class="ttdeci">double fast_power_recursive(T a, T b)</div><div class="ttdef"><b>Definition:</b> fast_power.cpp:26</div></div>
</div><!-- fragment -->
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d0b/fast__power_8cpp_a8399b847626e5bba983cab7c7918b445_cgraph.svg" width="160" height="62"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
</div>
</div>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
@@ -243,33 +254,33 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Main function </p>
<div class="fragment"><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/srand.html">std::srand</a>(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/chrono/c/time.html">std::time</a>(<span class="keyword">nullptr</span>));</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/ios_base/sync_with_stdio.html">std::ios_base::sync_with_stdio</a>(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Testing...&quot;</span> &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 20; i++) {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">int</span> a = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a>() % 20 - 10;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">int</span> b = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a>() % 20 - 10;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a> &lt;&lt; <span class="stringliteral">&quot;Calculating &quot;</span> &lt;&lt; a &lt;&lt; <span class="stringliteral">&quot;^&quot;</span> &lt;&lt; b &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; assert(<a class="code" href="../../d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445">fast_power_recursive</a>(a, b) == <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/pow.html">std::pow</a>(a, b));</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; assert(<a class="code" href="../../d2/d0b/fast__power_8cpp.html#a0d4e3f0099a6975b74a314a35bd0f94d">fast_power_linear</a>(a, b) == <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/pow.html">std::pow</a>(a, b));</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;------ &quot;</span> &lt;&lt; a &lt;&lt; <span class="stringliteral">&quot;^&quot;</span> &lt;&lt; b &lt;&lt; <span class="stringliteral">&quot; = &quot;</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; &lt;&lt; <a class="code" href="../../d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445">fast_power_recursive</a>(a, b) &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; int64_t a, b;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> &gt;&gt; a &gt;&gt; b;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; a &lt;&lt; <span class="stringliteral">&quot;^&quot;</span> &lt;&lt; b &lt;&lt; <span class="stringliteral">&quot; = &quot;</span> &lt;&lt; <a class="code" href="../../d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445">fast_power_recursive</a>(a, b)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; a &lt;&lt; <span class="stringliteral">&quot;^&quot;</span> &lt;&lt; b &lt;&lt; <span class="stringliteral">&quot; = &quot;</span> &lt;&lt; <a class="code" href="../../d2/d0b/fast__power_8cpp.html#a0d4e3f0099a6975b74a314a35bd0f94d">fast_power_linear</a>(a, b) &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div>
<p >Main function </p>
<div class="fragment"><div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> {</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/srand.html">std::srand</a>(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/chrono/c/time.html">std::time</a>(<span class="keyword">nullptr</span>));</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/ios_base/sync_with_stdio.html">std::ios_base::sync_with_stdio</a>(<span class="keyword">false</span>);</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Testing...&quot;</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 20; i++) {</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordtype">int</span> a = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a>() % 20 - 10;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordtype">int</span> b = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a>() % 20 - 10;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a> &lt;&lt; <span class="stringliteral">&quot;Calculating &quot;</span> &lt;&lt; a &lt;&lt; <span class="stringliteral">&quot;^&quot;</span> &lt;&lt; b &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> assert(<a class="code hl_function" href="../../d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445">fast_power_recursive</a>(a, b) == <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/pow.html">std::pow</a>(a, b));</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> assert(<a class="code hl_function" href="../../d2/d0b/fast__power_8cpp.html#a0d4e3f0099a6975b74a314a35bd0f94d">fast_power_linear</a>(a, b) == <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/pow.html">std::pow</a>(a, b));</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;------ &quot;</span> &lt;&lt; a &lt;&lt; <span class="stringliteral">&quot;^&quot;</span> &lt;&lt; b &lt;&lt; <span class="stringliteral">&quot; = &quot;</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> &lt;&lt; <a class="code hl_function" href="../../d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445">fast_power_recursive</a>(a, b) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> }</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> int64_t a, b;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> &gt;&gt; a &gt;&gt; b;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; a &lt;&lt; <span class="stringliteral">&quot;^&quot;</span> &lt;&lt; b &lt;&lt; <span class="stringliteral">&quot; = &quot;</span> &lt;&lt; <a class="code hl_function" href="../../d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445">fast_power_recursive</a>(a, b)</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; a &lt;&lt; <span class="stringliteral">&quot;^&quot;</span> &lt;&lt; b &lt;&lt; <span class="stringliteral">&quot; = &quot;</span> &lt;&lt; <a class="code hl_function" href="../../d2/d0b/fast__power_8cpp.html#a0d4e3f0099a6975b74a314a35bd0f94d">fast_power_linear</a>(a, b) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span>}</div>
<div class="ttc" id="abasic_istream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a></div></div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
<div class="ttc" id="aendl_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a></div><div class="ttdeci">T endl(T... args)</div></div>
@@ -281,7 +292,7 @@ template&lt;typename T &gt; </div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d0b/fast__power_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg" width="259" height="408"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d0b/fast__power_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg" width="259" height="456"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
@@ -293,7 +304,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_296d53ceaeaa7e099814a6def439fe8a.html">math</a></li><li class="navelem"><a class="el" href="../../d2/d0b/fast__power_8cpp.html">fast_power.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -0,0 +1,3 @@
<map id="fast_power_linear" name="fast_power_linear">
<area shape="rect" id="node1" title=" " alt="" coords="5,29,132,56"/>
</map>

View File

@@ -0,0 +1 @@
7dfd783cca35f56e6d31f17a29441df7

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: fast_power_linear Pages: 1 -->
<svg width="103pt" height="46pt"
viewBox="0.00 0.00 103.00 46.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 42)">
<title>fast_power_linear</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-42 99,-42 99,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-19.5 95,-19.5 95,-0.5 0,-0.5"/>
<text text-anchor="middle" x="47.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">fast_power_linear</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M33.01,-19.76C25.96,-28.57 30.79,-38 47.5,-38 57.94,-38 63.74,-34.31 64.91,-29.4"/>
<polygon fill="midnightblue" stroke="midnightblue" points="68.23,-28.31 61.99,-19.76 61.53,-30.34 68.23,-28.31"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,3 @@
<map id="fast_power_recursive" name="fast_power_recursive">
<area shape="rect" id="node1" title=" " alt="" coords="5,29,155,56"/>
</map>

View File

@@ -0,0 +1 @@
1e0f9ce815c7f0cb158b0ea0e9da2edc

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: fast_power_recursive Pages: 1 -->
<svg width="120pt" height="46pt"
viewBox="0.00 0.00 120.00 46.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 42)">
<title>fast_power_recursive</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-42 116,-42 116,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-19.5 112,-19.5 112,-0.5 0,-0.5"/>
<text text-anchor="middle" x="56" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">fast_power_recursive</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M38.74,-19.76C30.34,-28.57 36.09,-38 56,-38 68.44,-38 75.35,-34.31 76.74,-29.4"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.95,-27.98 73.26,-19.76 73.36,-30.35 79.95,-27.98"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1,11 +1,11 @@
<map id="main" name="main">
<area shape="rect" id="node1" title=" " alt="" coords="5,183,56,209"/>
<area shape="rect" id="node1" title=" " alt="" coords="5,231,56,257"/>
<area shape="rect" id="node2" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/manip/endl.html#" title=" " alt="" coords="143,5,215,32"/>
<area shape="rect" id="node3" href="$d2/d0b/fast__power_8cpp.html#a0d4e3f0099a6975b74a314a35bd0f94d" title=" " alt="" coords="115,56,242,83"/>
<area shape="rect" id="node4" href="$d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445" title=" " alt="" coords="104,107,253,133"/>
<area shape="rect" id="node5" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/numeric/math/pow.html#" title=" " alt="" coords="143,157,215,184"/>
<area shape="rect" id="node6" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/numeric/random/rand.html#" title=" " alt="" coords="142,208,215,235"/>
<area shape="rect" id="node7" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/numeric/random/srand.html#" title=" " alt="" coords="139,259,219,285"/>
<area shape="rect" id="node8" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/ios_base/sync_with_stdio.html#" title=" " alt="" coords="111,310,247,351"/>
<area shape="rect" id="node9" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/chrono/c/time.html#" title=" " alt="" coords="143,376,215,403"/>
<area shape="rect" id="node3" href="$d2/d0b/fast__power_8cpp.html#a0d4e3f0099a6975b74a314a35bd0f94d" title=" " alt="" coords="115,80,242,107"/>
<area shape="rect" id="node4" href="$d2/d0b/fast__power_8cpp.html#a8399b847626e5bba983cab7c7918b445" title=" " alt="" coords="104,155,253,181"/>
<area shape="rect" id="node5" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/numeric/math/pow.html#" title=" " alt="" coords="143,205,215,232"/>
<area shape="rect" id="node6" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/numeric/random/rand.html#" title=" " alt="" coords="142,256,215,283"/>
<area shape="rect" id="node7" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/numeric/random/srand.html#" title=" " alt="" coords="139,307,219,333"/>
<area shape="rect" id="node8" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/ios_base/sync_with_stdio.html#" title=" " alt="" coords="111,358,247,399"/>
<area shape="rect" id="node9" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/chrono/c/time.html#" title=" " alt="" coords="143,424,215,451"/>
</map>

View File

@@ -1 +1 @@
fa1a81d740baf5ba17494df738a82c77
bc301cb7031051dd2e6b1aeef86e41fd

View File

@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: main Pages: 1 -->
<svg width="194pt" height="306pt"
viewBox="0.00 0.00 194.00 306.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 302)">
<svg width="194pt" height="342pt"
viewBox="0.00 0.00 194.00 342.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 338)">
<title>main</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-302 190,-302 190,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-338 190,-338 190,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
@@ -22,31 +22,31 @@
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/manip/endl.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="103,-278.5 103,-297.5 157,-297.5 157,-278.5 103,-278.5"/>
<text text-anchor="middle" x="130" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::endl</text>
<polygon fill="white" stroke="black" points="103,-314.5 103,-333.5 157,-333.5 157,-314.5 103,-314.5"/>
<text text-anchor="middle" x="130" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::endl</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M21.94,-164.78C26.77,-186.63 41.38,-239.77 74,-269 79.54,-273.96 86.43,-277.64 93.45,-280.36"/>
<polygon fill="midnightblue" stroke="midnightblue" points="92.38,-283.69 102.98,-283.51 94.58,-277.05 92.38,-283.69"/>
<path fill="none" stroke="midnightblue" d="M20.66,-164.58C22.99,-190.81 33.03,-264.56 74,-305 79.34,-310.27 86.21,-314.08 93.27,-316.84"/>
<polygon fill="midnightblue" stroke="midnightblue" points="92.3,-320.2 102.89,-319.98 94.47,-313.55 92.3,-320.2"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d2/d0b/fast__power_8cpp.html#a0d4e3f0099a6975b74a314a35bd0f94d" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="82.5,-240.5 82.5,-259.5 177.5,-259.5 177.5,-240.5 82.5,-240.5"/>
<text text-anchor="middle" x="130" y="-247.5" font-family="Helvetica,sans-Serif" font-size="10.00">fast_power_linear</text>
<polygon fill="white" stroke="black" points="82.5,-258.5 82.5,-277.5 177.5,-277.5 177.5,-258.5 82.5,-258.5"/>
<text text-anchor="middle" x="130" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">fast_power_linear</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M24.37,-164.63C32.13,-180.67 49.77,-212.86 74,-231 76.47,-232.85 79.13,-234.53 81.9,-236.05"/>
<polygon fill="midnightblue" stroke="midnightblue" points="80.51,-239.26 91.04,-240.39 83.51,-232.94 80.51,-239.26"/>
<path fill="none" stroke="midnightblue" d="M23.02,-164.78C29.36,-183.75 45.86,-225.73 74,-249 76.04,-250.69 78.25,-252.23 80.55,-253.64"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.37,-256.97 89.86,-258.44 82.57,-250.75 79.37,-256.97"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
@@ -58,7 +58,7 @@
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<g id="edge4" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M31.81,-164.79C42.36,-173.16 58.49,-185.06 74,-193 78.06,-195.07 82.39,-197.01 86.78,-198.79"/>
<polygon fill="midnightblue" stroke="midnightblue" points="85.79,-202.15 96.38,-202.42 88.27,-195.61 85.79,-202.15"/>
@@ -73,7 +73,7 @@
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<g id="edge6" class="edge">
<title>Node1&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M38.49,-158.22C53.28,-160.8 74.48,-164.5 92.65,-167.66"/>
<polygon fill="midnightblue" stroke="midnightblue" points="92.19,-171.14 102.64,-169.41 93.39,-164.24 92.19,-171.14"/>
@@ -88,7 +88,7 @@
</g>
</g>
<!-- Node1&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<g id="edge7" class="edge">
<title>Node1&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M38.49,-151.78C53.18,-149.22 74.19,-145.55 92.27,-142.4"/>
<polygon fill="midnightblue" stroke="midnightblue" points="92.98,-145.83 102.23,-140.67 91.78,-138.94 92.98,-145.83"/>
@@ -103,7 +103,7 @@
</g>
</g>
<!-- Node1&#45;&gt;Node7 -->
<g id="edge6" class="edge">
<g id="edge8" class="edge">
<title>Node1&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M31.81,-145.21C42.36,-136.84 58.49,-124.94 74,-117 79.06,-114.41 84.55,-112.04 90.04,-109.92"/>
<polygon fill="midnightblue" stroke="midnightblue" points="91.61,-113.08 99.82,-106.38 89.23,-106.49 91.61,-113.08"/>
@@ -119,7 +119,7 @@
</g>
</g>
<!-- Node1&#45;&gt;Node8 -->
<g id="edge7" class="edge">
<g id="edge9" class="edge">
<title>Node1&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M24.7,-145.36C32.79,-129.6 50.78,-98.16 74,-79 75.98,-77.36 78.09,-75.81 80.28,-74.34"/>
<polygon fill="midnightblue" stroke="midnightblue" points="82.26,-77.23 89.04,-69.09 78.66,-71.23 82.26,-77.23"/>
@@ -134,10 +134,22 @@
</g>
</g>
<!-- Node1&#45;&gt;Node9 -->
<g id="edge8" class="edge">
<g id="edge10" class="edge">
<title>Node1&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M21.5,-145.38C25.59,-122.23 39.08,-62.92 74,-30 79.44,-24.87 86.29,-21.04 93.3,-18.18"/>
<polygon fill="midnightblue" stroke="midnightblue" points="94.54,-21.46 102.83,-14.86 92.24,-14.85 94.54,-21.46"/>
</g>
<!-- Node3&#45;&gt;Node3 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M113.05,-277.76C104.8,-286.57 110.45,-296 130,-296 142.22,-296 149.01,-292.31 150.37,-287.4"/>
<polygon fill="midnightblue" stroke="midnightblue" points="153.59,-286.01 146.95,-277.76 146.99,-288.35 153.59,-286.01"/>
</g>
<!-- Node4&#45;&gt;Node4 -->
<g id="edge5" class="edge">
<title>Node4&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M113.05,-221.76C104.8,-230.57 110.45,-240 130,-240 142.22,-240 149.01,-236.31 150.37,-231.4"/>
<polygon fill="midnightblue" stroke="midnightblue" points="153.59,-230.01 146.95,-221.76 146.99,-232.35 153.59,-230.01"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: ciphers/vigenere_cipher.cpp Pages: 1 -->
<svg width="189pt" height="84pt"

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: sorting/gnome_sort.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d2/d21/gnome__sort_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -93,12 +93,11 @@ $(document).ready(function(){initNavTree('d2/d21/gnome__sort_8cpp.html','../../'
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">gnome_sort.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">gnome_sort.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Implementation of <a href="https://en.wikipedia.org/wiki/Gnome_sort">gnome sort</a> algorithm.
<p>Implementation of <a href="https://en.wikipedia.org/wiki/Gnome_sort" target="_blank">gnome sort</a> algorithm.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;array&gt;</code><br />
@@ -111,34 +110,34 @@ Include dependency graph for gnome_sort.cpp:</div>
</div>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:d5/d91/namespacesorting"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d91/namespacesorting.html">sorting</a></td></tr>
<tr class="memitem:d5/d91/namespacesorting"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d91/namespacesorting.html">sorting</a></td></tr>
<tr class="memdesc:d5/d91/namespacesorting"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sorting algorithms. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a2f8bc626eb57acae24a94636a23af6a1"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a2f8bc626eb57acae24a94636a23af6a1"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d5/d91/namespacesorting.html#a2f8bc626eb57acae24a94636a23af6a1">sorting::gnomeSort</a> (T *arr, int size)</td></tr>
<tr class="separator:a2f8bc626eb57acae24a94636a23af6a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70a6a99d554280c326f80355c4d2c494"><td class="memTemplParams" colspan="2">template&lt;typename T , size_t size&gt; </td></tr>
<tr class="memitem:a70a6a99d554280c326f80355c4d2c494"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; T, size &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d5/d91/namespacesorting.html#a70a6a99d554280c326f80355c4d2c494">sorting::gnomeSort</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; T, size &gt; arr)</td></tr>
<tr class="separator:a70a6a99d554280c326f80355c4d2c494"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3677f87b5b4756bc77e9e34c5f27935"><td class="memTemplParams" colspan="2">template&lt;typename T , size_t size&gt; </td></tr>
<tr class="memitem:aa3677f87b5b4756bc77e9e34c5f27935"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; T, size &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d5/d91/namespacesorting.html#aa3677f87b5b4756bc77e9e34c5f27935">sorting::gnomeSort</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; T, size &gt; arr)</td></tr>
<tr class="separator:aa3677f87b5b4756bc77e9e34c5f27935"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8dca7b867074164d5f45b0f3851269d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d21/gnome__sort_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a> ()</td></tr>
<tr class="separator:aa8dca7b867074164d5f45b0f3851269d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d21/gnome__sort_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implementation of <a href="https://en.wikipedia.org/wiki/Gnome_sort">gnome sort</a> algorithm. </p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/beqakd">beqakd</a> </dd>
<div class="textblock"><p >Implementation of <a href="https://en.wikipedia.org/wiki/Gnome_sort" target="_blank">gnome sort</a> algorithm. </p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/beqakd" target="_blank">beqakd</a> </dd>
<dd>
<a href="https://github.com/kvedala">Krishna Vedala</a></dd></dl>
<a href="https://github.com/kvedala" target="_blank">Krishna Vedala</a></dd></dl>
<p>Gnome sort algorithm is not the best one but it is widely used. The algorithm iteratively checks the order of pairs in the array. If they are on right order it moves to the next successive pair, otherwise it swaps elements. This operation is repeated until no more swaps are made thus indicating the values to be in ascending order.</p>
<p>The time Complexity of the algorithm is \(O(n^2)\) and in some cases it can be \(O(n)\). </p>
<p >The time Complexity of the algorithm is \(O(n^2)\) and in some cases it can be \(O(n)\). </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
@@ -153,11 +152,11 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<p>Our main function with example of sort method. </p>
<div class="fragment"><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="../../d2/d21/gnome__sort_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>();</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;}</div>
<p >Our main function with example of sort method. </p>
<div class="fragment"><div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> {</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <a class="code hl_function" href="../../d2/d21/gnome__sort_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>();</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span>}</div>
<div class="ttc" id="agnome__sort_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d2/d21/gnome__sort_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdef"><b>Definition:</b> gnome_sort.cpp:85</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -168,7 +167,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="aa8dca7b867074164d5f45b0f3851269d"></a>
<a id="aa8dca7b867074164d5f45b0f3851269d" name="aa8dca7b867074164d5f45b0f3851269d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f3851269d">&#9670;&nbsp;</a></span>test()</h2>
<div class="memitem">
@@ -190,48 +189,48 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Test function </p>
<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// Example 1. Creating array of int,</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 1 - as a C-array...&quot;</span>;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> size = 6;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;int, size&gt;</a> arr = {-22, 100, 150, 35, -10, 99};</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="../../d5/d91/namespacesorting.html#a2f8bc626eb57acae24a94636a23af6a1">sorting::gnomeSort</a>(arr.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/data.html">data</a>(),</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; size); <span class="comment">// pass array data as a C-style array pointer</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; assert(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a>(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(arr), <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr)));</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot; Passed\n&quot;</span>;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; size; i++) {</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; arr[i] &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; </div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// Example 2. Creating array of doubles.</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nTest 2 - as a std::array...&quot;</span>;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;double, size&gt;</a> double_arr = {-100.2, 10.2, 20.0, 9.0, 7.5, 7.2};</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;double, size&gt;</a> sorted_arr = <a class="code" href="../../d5/d91/namespacesorting.html#a2f8bc626eb57acae24a94636a23af6a1">sorting::gnomeSort</a>(double_arr);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; assert(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a>(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(sorted_arr), <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(sorted_arr)));</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot; Passed\n&quot;</span>;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; size; i++) {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; double_arr[i] &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="comment">// Example 3. Creating random array of float.</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nTest 3 - 200 random numbers as a std::array...&quot;</span>;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> size2 = 200;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;float, size2&gt;</a> rand_arr{};</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;a : rand_arr) {</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// generate random numbers between -5.0 and 4.99</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; a = float(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a>() % 1000 - 500) / 100.f;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;float, size2&gt;</a> float_arr = <a class="code" href="../../d5/d91/namespacesorting.html#a2f8bc626eb57acae24a94636a23af6a1">sorting::gnomeSort</a>(rand_arr);</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; assert(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a>(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(float_arr), <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(float_arr)));</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot; Passed\n&quot;</span>;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// for (int i = 0; i &lt; size; i++) std::cout &lt;&lt; double_arr[i] &lt;&lt; &quot;, &quot;;</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;}</div>
<p >Test function </p>
<div class="fragment"><div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// Example 1. Creating array of int,</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 1 - as a C-array...&quot;</span>;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">const</span> <span class="keywordtype">int</span> size = 6;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;int, size&gt;</a> arr = {-22, 100, 150, 35, -10, 99};</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a2f8bc626eb57acae24a94636a23af6a1">sorting::gnomeSort</a>(arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/data.html">data</a>(),</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> size); <span class="comment">// pass array data as a C-style array pointer</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> assert(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a>(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(arr), <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr)));</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot; Passed\n&quot;</span>;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; size; i++) {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; arr[i] &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> }</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// Example 2. Creating array of doubles.</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nTest 2 - as a std::array...&quot;</span>;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;double, size&gt;</a> double_arr = {-100.2, 10.2, 20.0, 9.0, 7.5, 7.2};</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;double, size&gt;</a> sorted_arr = <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a2f8bc626eb57acae24a94636a23af6a1">sorting::gnomeSort</a>(double_arr);</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> assert(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a>(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(sorted_arr), <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(sorted_arr)));</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot; Passed\n&quot;</span>;</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; size; i++) {</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; double_arr[i] &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> }</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="comment">// Example 3. Creating random array of float.</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nTest 3 - 200 random numbers as a std::array...&quot;</span>;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">const</span> <span class="keywordtype">int</span> size2 = 200;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;float, size2&gt;</a> rand_arr{};</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;a : rand_arr) {</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// generate random numbers between -5.0 and 4.99</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> a = float(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a>() % 1000 - 500) / 100.f;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> }</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;float, size2&gt;</a> float_arr = <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a2f8bc626eb57acae24a94636a23af6a1">sorting::gnomeSort</a>(rand_arr);</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> assert(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a>(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(float_arr), <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(float_arr)));</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot; Passed\n&quot;</span>;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="comment">// for (int i = 0; i &lt; size; i++) std::cout &lt;&lt; double_arr[i] &lt;&lt; &quot;, &quot;;</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span>}</div>
<div class="ttc" id="aarray_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a></div></div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
<div class="ttc" id="abegin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a></div><div class="ttdeci">T begin(T... args)</div></div>
@@ -250,7 +249,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_bb1b521853a9c46347182a9d10420771.html">sorting</a></li><li class="navelem"><a class="el" href="../../d2/d21/gnome__sort_8cpp.html">gnome_sort.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -1,6 +1,6 @@
var gnome__sort_8cpp =
[
[ "gnomeSort", "d2/d21/gnome__sort_8cpp.html#a70a6a99d554280c326f80355c4d2c494", null ],
[ "gnomeSort", "d2/d21/gnome__sort_8cpp.html#aa3677f87b5b4756bc77e9e34c5f27935", null ],
[ "gnomeSort", "d2/d21/gnome__sort_8cpp.html#a2f8bc626eb57acae24a94636a23af6a1", null ],
[ "main", "d2/d21/gnome__sort_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4", null ],
[ "test", "d2/d21/gnome__sort_8cpp.html#aa8dca7b867074164d5f45b0f3851269d", null ]

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: main Pages: 1 -->
<svg width="115pt" height="28pt"

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: search/jump_search.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d2/d22/jump__search_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -92,12 +92,11 @@ $(document).ready(function(){initNavTree('d2/d22/jump__search_8cpp.html','../../
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">jump_search.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">jump_search.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>C++ program to implement <a href="https://en.wikipedia.org/wiki/Jump_search">Jump Search</a>
<p>C++ program to implement <a href="https://en.wikipedia.org/wiki/Jump_search" target="_blank">Jump Search</a>
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;cmath&gt;</code><br />
@@ -109,18 +108,17 @@ Include dependency graph for jump_search.cpp:</div>
</div>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ab49fd8f401bfc71f63b74711390cccf0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d22/jump__search_8cpp.html#ab49fd8f401bfc71f63b74711390cccf0">jumpSearch</a> (int arr[], int x, int n)</td></tr>
<tr class="separator:ab49fd8f401bfc71f63b74711390cccf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top"><a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>main</b> ()</td></tr>
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d22/jump__search_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>C++ program to implement <a href="https://en.wikipedia.org/wiki/Jump_search">Jump Search</a> </p>
<div class="textblock"><p >C++ program to implement <a href="https://en.wikipedia.org/wiki/Jump_search" target="_blank">Jump Search</a> </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="ab49fd8f401bfc71f63b74711390cccf0"></a>
<a id="ab49fd8f401bfc71f63b74711390cccf0" name="ab49fd8f401bfc71f63b74711390cccf0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab49fd8f401bfc71f63b74711390cccf0">&#9670;&nbsp;</a></span>jumpSearch()</h2>
<div class="memitem">
@@ -151,37 +149,37 @@ int&#160;</td><td class="memItemRight" valign="bottom"><b>main</b> ()</td></tr>
</tr>
</table>
</div><div class="memdoc">
<p>jump search implementation </p>
<div class="fragment"><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; {</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <span class="comment">// Finding block size to be jumped</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="keywordtype">int</span> step = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a>(n);</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; </div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="comment">// Finding the block where element is</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="comment">// present (if it is present)</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordtype">int</span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/prev.html">prev</a> = 0;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">while</span> (arr[<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/min.html">std::min</a>(step, n) - 1] &lt; x) {</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/prev.html">prev</a> = step;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; step += <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a>(n);</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">if</span> (prev &gt;= n)</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; }</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="comment">// Doing a linear search for x in block</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">// beginning with prev.</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">while</span> (arr[prev] &lt; x) {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/prev.html">prev</a>++;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="comment">// If we reached next block or end of</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="comment">// array, element is not present.</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">if</span> (prev == <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/min.html">std::min</a>(step, n))</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="comment">// If element is found</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span> (arr[prev] == x)</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/prev.html">prev</a>;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;}</div>
<p >jump search implementation </p>
<div class="fragment"><div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> {</div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// Finding block size to be jumped</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> <span class="keywordtype">int</span> step = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a>(n);</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Finding the block where element is</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// present (if it is present)</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> <span class="keywordtype">int</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/prev.html">prev</a> = 0;</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="keywordflow">while</span> (arr[<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/min.html">std::min</a>(step, n) - 1] &lt; x) {</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/prev.html">prev</a> = step;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> step += <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a>(n);</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <span class="keywordflow">if</span> (prev &gt;= n)</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> }</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Doing a linear search for x in block</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// beginning with prev.</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="keywordflow">while</span> (arr[prev] &lt; x) {</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/prev.html">prev</a>++;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// If we reached next block or end of</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// array, element is not present.</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keywordflow">if</span> (prev == <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/min.html">std::min</a>(step, n))</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> }</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// If element is found</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordflow">if</span> (arr[prev] == x)</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">return</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/prev.html">prev</a>;</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span>}</div>
<div class="ttc" id="amin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/min.html">std::min</a></div><div class="ttdeci">T min(T... args)</div></div>
<div class="ttc" id="aprev_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/iterator/prev.html">std::prev</a></div><div class="ttdeci">T prev(T... args)</div></div>
<div class="ttc" id="asqrt_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a></div><div class="ttdeci">T sqrt(T... args)</div></div>
@@ -192,6 +190,38 @@ Here is the call graph for this function:</div>
</div>
</div>
</div>
</div>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordtype">int</span> arr[] = {0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610};</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordtype">int</span> x = 55;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">int</span> n = <span class="keyword">sizeof</span>(arr) / <span class="keyword">sizeof</span>(arr[0]);</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// Find the index of &#39;x&#39; using Jump Search</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordtype">int</span> index = <a class="code hl_function" href="../../d2/d22/jump__search_8cpp.html#ab49fd8f401bfc71f63b74711390cccf0">jumpSearch</a>(arr, x, n);</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// Print the index where &#39;x&#39; is located</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nNumber &quot;</span> &lt;&lt; x &lt;&lt; <span class="stringliteral">&quot; is at index &quot;</span> &lt;&lt; index;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span>}</div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
<div class="ttc" id="ajump__search_8cpp_html_ab49fd8f401bfc71f63b74711390cccf0"><div class="ttname"><a href="../../d2/d22/jump__search_8cpp.html#ab49fd8f401bfc71f63b74711390cccf0">jumpSearch</a></div><div class="ttdeci">int jumpSearch(int arr[], int x, int n)</div><div class="ttdef"><b>Definition:</b> jump_search.cpp:12</div></div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
@@ -200,7 +230,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_19b2bf9199a15c634a08b1ede1dd896a.html">search</a></li><li class="navelem"><a class="el" href="../../d2/d22/jump__search_8cpp.html">jump_search.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -1,5 +1,4 @@
var jump__search_8cpp =
[
[ "jumpSearch", "d2/d22/jump__search_8cpp.html#ab49fd8f401bfc71f63b74711390cccf0", null ],
[ "main", "d2/d22/jump__search_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4", null ]
[ "jumpSearch", "d2/d22/jump__search_8cpp.html#ab49fd8f401bfc71f63b74711390cccf0", null ]
];

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: jumpSearch Pages: 1 -->
<svg width="166pt" height="66pt"

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: machine_learning/neural_network.cpp Pages: 1 -->
<!--zoomable 151 -->

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: machine_learning/neural_network.cpp Pages: 1 -->
<svg width="693pt" height="151pt"

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: probability/addition_rule.cpp Pages: 1 -->
<svg width="108pt" height="95pt"

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: sorting/count_inversions.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d2/d26/count__inversions_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -93,12 +93,11 @@ $(document).ready(function(){initNavTree('d2/d26/count__inversions_8cpp.html','.
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">count_inversions.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">count_inversions.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Counting Inversions using <a href="https://en.wikipedia.org/wiki/Merge_sort">Merge Sort</a>
<p>Counting Inversions using <a href="https://en.wikipedia.org/wiki/Merge_sort" target="_blank">Merge Sort</a>
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;cassert&gt;</code><br />
<code>#include &lt;cstdint&gt;</code><br />
@@ -111,16 +110,16 @@ Include dependency graph for count_inversions.cpp:</div>
</div>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:d5/d91/namespacesorting"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d91/namespacesorting.html">sorting</a></td></tr>
<tr class="memitem:d5/d91/namespacesorting"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d91/namespacesorting.html">sorting</a></td></tr>
<tr class="memdesc:d5/d91/namespacesorting"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sorting algorithms. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d9/d13/namespaceinversion"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d13/namespaceinversion.html">inversion</a></td></tr>
<tr class="memitem:d9/d13/namespaceinversion"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d13/namespaceinversion.html">inversion</a></td></tr>
<tr class="memdesc:d9/d13/namespaceinversion"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for counting inversions using Merge Sort algorithm. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aad643c14734394e784a75169cb58132f"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aad643c14734394e784a75169cb58132f"><td class="memTemplItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d26/count__inversions_8cpp.html#aad643c14734394e784a75169cb58132f">sorting::inversion::merge</a> (T *arr, T *temp, uint32_t left, uint32_t mid, uint32_t right)</td></tr>
@@ -146,12 +145,12 @@ Functions</h2></td></tr>
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Counting Inversions using <a href="https://en.wikipedia.org/wiki/Merge_sort">Merge Sort</a> </p>
<p>Program to count the number of inversions in an array using merge-sort.</p>
<p>The count of inversions help to determine how close the array is to be sorted in ASCENDING order.</p>
<p>two elements a[i] and a[j] form an inversion if <code>a[i]</code> &gt; <code>a[j]</code> and i &lt; j</p>
<p>Time Complexity --&gt; <code>O(n.log n)</code></p>
<p>Space Complexity --&gt; <code>O(n)</code> ; additional array <code>temp[1..n]</code> </p>
<div class="textblock"><p >Counting Inversions using <a href="https://en.wikipedia.org/wiki/Merge_sort" target="_blank">Merge Sort</a> </p>
<p >Program to count the number of inversions in an array using merge-sort.</p>
<p >The count of inversions help to determine how close the array is to be sorted in ASCENDING order.</p>
<p >two elements a[i] and a[j] form an inversion if <code>a[i]</code> &gt; <code>a[j]</code> and i &lt; j</p>
<p >Time Complexity --&gt; <code>O(n.log n)</code></p>
<p >Space Complexity --&gt; <code>O(n)</code> ; additional array <code>temp[1..n]</code> </p>
<h3><a class="anchor" id="autotoc_md95"></a>
Algorithm</h3>
<ol type="1">
@@ -161,9 +160,9 @@ Algorithm</h3>
<li>The base case of recursion is when there is only one element in the given half.</li>
<li>Print the answer</li>
</ol>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/rakshitraj">Rakshit Raj</a> </dd></dl>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/rakshitraj" target="_blank">Rakshit Raj</a> </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a3332498eabf6579ef059c0d0e9f4ec80"></a>
<a id="a3332498eabf6579ef059c0d0e9f4ec80" name="a3332498eabf6579ef059c0d0e9f4ec80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3332498eabf6579ef059c0d0e9f4ec80">&#9670;&nbsp;</a></span>countInversion()</h2>
<div class="memitem">
@@ -192,7 +191,7 @@ template&lt;class T &gt; </div>
</div><div class="memdoc">
<p>Function <a class="el" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80" title="Function countInversion() returns the number of inversion present in the input array....">countInversion()</a> returns the number of inversion present in the input array. Inversions are an estimate of how close or far off the array is to being sorted. </p>
<p>Number of inversions in a sorted array is 0. Number of inversion in an array[1...n] sorted in non-ascending order is n(n-1)/2, since each pair of elements contitute an inversion.</p>
<p >Number of inversions in a sorted array is 0. Number of inversion in an array[1...n] sorted in non-ascending order is n(n-1)/2, since each pair of elements contitute an inversion.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arr</td><td>- array, data member of std::vector&lt;int&gt;, input for counting inversions </td></tr>
@@ -201,12 +200,12 @@ template&lt;class T &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of inversions in input array, sorts the array </dd></dl>
<div class="fragment"><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;T&gt;</a> temp;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; temp.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/reserve.html">reserve</a>(size);</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; temp.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/assign.html">assign</a>(size, 0);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a>(arr, temp.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), 0, size - 1);</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> {</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;T&gt;</a> temp;</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> temp.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/reserve.html">reserve</a>(size);</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> temp.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/assign.html">assign</a>(size, 0);</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a>(arr, temp.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), 0, size - 1);</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span>}</div>
<div class="ttc" id="aassign_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/assign.html">std::vector::assign</a></div><div class="ttdeci">T assign(T... args)</div></div>
<div class="ttc" id="adata_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/data.html">std::vector::data</a></div><div class="ttdeci">T data(T... args)</div></div>
<div class="ttc" id="agroup__sorting_html_gab6b14fea48d9841e29b9fc26be6e05d7"><div class="ttname"><a href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a></div><div class="ttdeci">void mergeSort(int *arr, int l, int r)</div><div class="ttdef"><b>Definition:</b> merge_sort.cpp:71</div></div>
@@ -221,7 +220,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
@@ -239,11 +238,11 @@ Here is the call graph for this function:</div>
<p>Main function. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
<div class="fragment"><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="../../d2/d26/count__inversions_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// Run test implementations</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// body(); // test your own array</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> {</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <a class="code hl_function" href="../../d2/d26/count__inversions_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// Run test implementations</span></div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="comment">// body(); // test your own array</span></div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span>}</div>
<div class="ttc" id="acount__inversions_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d2/d26/count__inversions_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Test implementations.</div><div class="ttdef"><b>Definition:</b> count_inversions.cpp:194</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -254,7 +253,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="aad643c14734394e784a75169cb58132f"></a>
<a id="aad643c14734394e784a75169cb58132f" name="aad643c14734394e784a75169cb58132f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad643c14734394e784a75169cb58132f">&#9670;&nbsp;</a></span>merge()</h2>
<div class="memitem">
@@ -301,8 +300,8 @@ template&lt;typename T &gt; </div>
</div><div class="memdoc">
<p>Function to merge two sub-arrays. </p>
<p><a class="el" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge()</a> function is called from <a class="el" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort()</a> to merge the array after it split for sorting by the <a class="el" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort()</a> funtion.</p>
<p>In this case the merge fuction will also count and return inversions detected when merging the sub arrays.</p>
<p ><a class="el" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge()</a> function is called from <a class="el" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort()</a> to merge the array after it split for sorting by the <a class="el" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort()</a> funtion.</p>
<p >In this case the merge fuction will also count and return inversions detected when merging the sub arrays.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arr</td><td>input array, data-menber of vector </td></tr>
@@ -314,40 +313,40 @@ template&lt;typename T &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of inversions found in merge step </dd></dl>
<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; uint32_t i = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a>; <span class="comment">/* i --&gt; index of left sub-array */</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; uint32_t j = mid + 1; <span class="comment">/* j --&gt; index for right sub-array */</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; uint32_t k = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a>; <span class="comment">/* k --&gt; index for resultant array temp */</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; uint32_t inv_count = 0; <span class="comment">// inversion count</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">while</span> ((i &lt;= mid) &amp;&amp; (j &lt;= right)) {</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span> (arr[i] &lt;= arr[j]) {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; temp[k++] = arr[i++];</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; temp[k++] = arr[j++];</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; inv_count +=</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; (mid - i +</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; 1); <span class="comment">// tricky; may vary depending on selection of sub-array</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="comment">// Add remaining elements from the larger subarray to the end of temp</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">while</span> (i &lt;= mid) {</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; temp[k++] = arr[i++];</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">while</span> (j &lt;= right) {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; temp[k++] = arr[j++];</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// Copy temp[] to arr[]</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (k = left; k &lt;= <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">right</a>; k++) {</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; arr[k] = temp[k];</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> inv_count;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> uint32_t i = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a>; <span class="comment">/* i --&gt; index of left sub-array */</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> uint32_t j = mid + 1; <span class="comment">/* j --&gt; index for right sub-array */</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> uint32_t k = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a>; <span class="comment">/* k --&gt; index for resultant array temp */</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> uint32_t inv_count = 0; <span class="comment">// inversion count</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordflow">while</span> ((i &lt;= mid) &amp;&amp; (j &lt;= right)) {</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">if</span> (arr[i] &lt;= arr[j]) {</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> temp[k++] = arr[i++];</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> temp[k++] = arr[j++];</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> inv_count +=</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> (mid - i +</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> 1); <span class="comment">// tricky; may vary depending on selection of sub-array</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> }</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> }</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// Add remaining elements from the larger subarray to the end of temp</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordflow">while</span> (i &lt;= mid) {</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> temp[k++] = arr[i++];</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> }</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">while</span> (j &lt;= right) {</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> temp[k++] = arr[j++];</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> }</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// Copy temp[] to arr[]</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordflow">for</span> (k = left; k &lt;= <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">right</a>; k++) {</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> arr[k] = temp[k];</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> }</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">return</span> inv_count;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span>}</div>
<div class="ttc" id="aleft_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/left.html">std::left</a></div><div class="ttdeci">T left(T... args)</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae97a486e14101c4822ea8dc47f0d1661"></a>
<a id="ae97a486e14101c4822ea8dc47f0d1661" name="ae97a486e14101c4822ea8dc47f0d1661"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae97a486e14101c4822ea8dc47f0d1661">&#9670;&nbsp;</a></span>mergeSort()</h2>
<div class="memitem">
@@ -388,7 +387,7 @@ template&lt;typename T &gt; </div>
</div><div class="memdoc">
<p>Implement merge Sort and count inverions while merging. </p>
<p>The <a class="el" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort()</a> function implements Merge Sort, a Divide and conquer algorithm, it divides the input array into two halves and calls itself for each sub-array and then calls the <a class="el" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge()</a> function to merge the two halves.</p>
<p >The <a class="el" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort()</a> function implements Merge Sort, a Divide and conquer algorithm, it divides the input array into two halves and calls itself for each sub-array and then calls the <a class="el" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge()</a> function to merge the two halves.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arr</td><td>- array to be sorted </td></tr>
@@ -399,31 +398,31 @@ template&lt;typename T &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of inversions in array </dd></dl>
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; uint32_t mid = 0, inv_count = 0;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span> (right &gt; left) {</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// midpoint to split the array</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; mid = (<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">right</a> + <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a>) / 2;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// Add inversions in left and right sub-arrays</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; inv_count += <a class="code" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a>(arr, temp, left, mid); <span class="comment">// left sub-array</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; inv_count += <a class="code" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a>(arr, temp, mid + 1, right);</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// inversions in the merge step</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; inv_count += <a class="code" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge</a>(arr, temp, left, mid, right);</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> inv_count;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> {</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> uint32_t mid = 0, inv_count = 0;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">if</span> (right &gt; left) {</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="comment">// midpoint to split the array</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> mid = (<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">right</a> + <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a>) / 2;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// Add inversions in left and right sub-arrays</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> inv_count += <a class="code hl_function" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a>(arr, temp, left, mid); <span class="comment">// left sub-array</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> inv_count += <a class="code hl_function" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a>(arr, temp, mid + 1, right);</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="comment">// inversions in the merge step</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> inv_count += <a class="code hl_function" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge</a>(arr, temp, left, mid, right);</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> }</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">return</span> inv_count;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span>}</div>
<div class="ttc" id="agroup__sorting_html_ga460c61cd948203b4816bef2accb3fc73"><div class="ttname"><a href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge</a></div><div class="ttdeci">void merge(int *arr, int l, int m, int r)</div><div class="ttdef"><b>Definition:</b> merge_sort.cpp:33</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d26/count__inversions_8cpp_ae97a486e14101c4822ea8dc47f0d1661_cgraph.svg" width="416" height="88"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d26/count__inversions_8cpp_ae97a486e14101c4822ea8dc47f0d1661_cgraph.svg" width="416" height="112"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="a851ca6a0391d14fb49a97d55e4377497"></a>
<a id="a851ca6a0391d14fb49a97d55e4377497" name="a851ca6a0391d14fb49a97d55e4377497"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a851ca6a0391d14fb49a97d55e4377497">&#9670;&nbsp;</a></span>show()</h2>
<div class="memitem">
@@ -460,18 +459,18 @@ template&lt;typename T &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Printing array: \n&quot;</span>;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">for</span> (uint32_t i = 0; i &lt; array_size; i++) {</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; arr[i];</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> {</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Printing array: \n&quot;</span>;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">for</span> (uint32_t i = 0; i &lt; array_size; i++) {</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; arr[i];</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> }</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span>}</div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa8dca7b867074164d5f45b0f3851269d"></a>
<a id="aa8dca7b867074164d5f45b0f3851269d" name="aa8dca7b867074164d5f45b0f3851269d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f3851269d">&#9670;&nbsp;</a></span>test()</h2>
<div class="memitem">
@@ -496,39 +495,39 @@ template&lt;typename T &gt; </div>
<p>Test implementations. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// Test 1</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint64_t&gt;</a> arr1 = {</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84,</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67,</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50,</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; uint32_t size1 = arr1.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; uint32_t inv_count1 = 4950;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; uint32_t result1 = <a class="code" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr1.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size1);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; assert(inv_count1 == result1);</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// Test 2</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> arr2 = {22, 66, 75, 23, 11, 87, 2, 44, 98, 43};</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; uint32_t size2 = arr2.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; uint32_t inv_count2 = 20;</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; uint32_t result2 = <a class="code" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr2.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size2);</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; assert(inv_count2 == result2);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// Test 3</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;double&gt;</a> arr3 = {33.1, 45.2, 65.4, 76.5, 1.0,</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; 2.9, 5.4, 7.7, 88.9, 12.4};</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; uint32_t size3 = arr3.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; uint32_t inv_count3 = 21;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; uint32_t result3 = <a class="code" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr3.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size3);</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; assert(inv_count3 == result3);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// Test 4</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;char&gt;</a> arr4 = {<span class="charliteral">&#39;a&#39;</span>, <span class="charliteral">&#39;b&#39;</span>, <span class="charliteral">&#39;c&#39;</span>, <span class="charliteral">&#39;d&#39;</span>, <span class="charliteral">&#39;e&#39;</span>};</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; uint32_t size4 = arr4.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; uint32_t inv_count4 = 0;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; uint32_t result4 = <a class="code" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr4.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size4);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; assert(inv_count4 == result4);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> {</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="comment">// Test 1</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint64_t&gt;</a> arr1 = {</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84,</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67,</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50,</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> uint32_t size1 = arr1.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> uint32_t inv_count1 = 4950;</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> uint32_t result1 = <a class="code hl_function" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr1.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size1);</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> assert(inv_count1 == result1);</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="comment">// Test 2</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> arr2 = {22, 66, 75, 23, 11, 87, 2, 44, 98, 43};</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> uint32_t size2 = arr2.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> uint32_t inv_count2 = 20;</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> uint32_t result2 = <a class="code hl_function" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr2.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size2);</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> assert(inv_count2 == result2);</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// Test 3</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;double&gt;</a> arr3 = {33.1, 45.2, 65.4, 76.5, 1.0,</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> 2.9, 5.4, 7.7, 88.9, 12.4};</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> uint32_t size3 = arr3.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> uint32_t inv_count3 = 21;</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> uint32_t result3 = <a class="code hl_function" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr3.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size3);</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> assert(inv_count3 == result3);</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="comment">// Test 4</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;char&gt;</a> arr4 = {<span class="charliteral">&#39;a&#39;</span>, <span class="charliteral">&#39;b&#39;</span>, <span class="charliteral">&#39;c&#39;</span>, <span class="charliteral">&#39;d&#39;</span>, <span class="charliteral">&#39;e&#39;</span>};</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> uint32_t size4 = arr4.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> uint32_t inv_count4 = 0;</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> uint32_t result4 = <a class="code hl_function" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr4.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size4);</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> assert(inv_count4 == result4);</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span>}</div>
<div class="ttc" id="acount__inversions_8cpp_html_a3332498eabf6579ef059c0d0e9f4ec80"><div class="ttname"><a href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a></div><div class="ttdeci">uint32_t countInversion(T *arr, const uint32_t size)</div><div class="ttdoc">Function countInversion() returns the number of inversion present in the input array....</div><div class="ttdef"><b>Definition:</b> count_inversions.cpp:164</div></div>
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/size.html">std::vector::size</a></div><div class="ttdeci">T size(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
@@ -546,7 +545,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_bb1b521853a9c46347182a9d10420771.html">sorting</a></li><li class="navelem"><a class="el" href="../../d2/d26/count__inversions_8cpp.html">count_inversions.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: sorting::inversion::countInversion Pages: 1 -->
<svg width="100pt" height="57pt"

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: test Pages: 1 -->
<svg width="165pt" height="66pt"

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: main Pages: 1 -->
<svg width="239pt" height="66pt"

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -1,7 +1,7 @@
<map id="sorting::inversion::mergeSort" name="sorting::inversion::mergeSort">
<area shape="rect" id="node1" title="Implement merge Sort and count inverions while merging." alt="" coords="5,23,128,65"/>
<area shape="rect" id="node1" title="Implement merge Sort and count inverions while merging." alt="" coords="5,35,128,77"/>
<area shape="rect" id="node2" href="$d5/d91/namespacesorting.html#aa26de383227859210f14dcf12201a079" title="merges 2 sorted adjacent segments into a larger sorted segment" alt="" coords="176,5,283,32"/>
<area shape="rect" id="node4" href="$d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7" title=" " alt="" coords="187,56,271,83"/>
<area shape="rect" id="node4" href="$d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7" title=" " alt="" coords="187,80,271,107"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/utility/move.html#" title=" " alt="" coords="331,5,411,32"/>
<area shape="rect" id="node5" href="$d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73" title=" " alt="" coords="341,56,401,83"/>
<area shape="rect" id="node5" href="$d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73" title=" " alt="" coords="341,80,401,107"/>
</map>

View File

@@ -1 +1 @@
5f4a2e9fee943e5cad1ba066050e900c
63b0853ea5b2ae46e9a34f1d91b0c83b

View File

@@ -1,21 +1,21 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: sorting::inversion::mergeSort Pages: 1 -->
<svg width="312pt" height="66pt"
viewBox="0.00 0.00 312.00 66.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 62)">
<svg width="312pt" height="84pt"
viewBox="0.00 0.00 312.00 84.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 80)">
<title>sorting::inversion::mergeSort</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-62 308,-62 308,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-80 308,-80 308,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title="Implement merge Sort and count inverions while merging.">
<polygon fill="#bfbfbf" stroke="black" points="0,-14 0,-44 92,-44 92,-14 0,-14"/>
<text text-anchor="start" x="8" y="-32" font-family="Helvetica,sans-Serif" font-size="10.00">sorting::inversion</text>
<text text-anchor="middle" x="46" y="-21" font-family="Helvetica,sans-Serif" font-size="10.00">::mergeSort</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-23 0,-53 92,-53 92,-23 0,-23"/>
<text text-anchor="start" x="8" y="-41" font-family="Helvetica,sans-Serif" font-size="10.00">sorting::inversion</text>
<text text-anchor="middle" x="46" y="-30" font-family="Helvetica,sans-Serif" font-size="10.00">::mergeSort</text>
</a>
</g>
</g>
@@ -23,16 +23,16 @@
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d5/d91/namespacesorting.html#aa26de383227859210f14dcf12201a079" target="_top" xlink:title="merges 2 sorted adjacent segments into a larger sorted segment">
<polygon fill="white" stroke="black" points="128,-38.5 128,-57.5 208,-57.5 208,-38.5 128,-38.5"/>
<text text-anchor="middle" x="168" y="-45.5" font-family="Helvetica,sans-Serif" font-size="10.00">sorting::merge</text>
<polygon fill="white" stroke="black" points="128,-56.5 128,-75.5 208,-75.5 208,-56.5 128,-56.5"/>
<text text-anchor="middle" x="168" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">sorting::merge</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M92.02,-36.13C100.35,-37.45 109.08,-38.83 117.52,-40.17"/>
<polygon fill="midnightblue" stroke="midnightblue" points="117.21,-43.66 127.63,-41.77 118.31,-36.75 117.21,-43.66"/>
<path fill="none" stroke="midnightblue" d="M92.02,-48.51C100.44,-50.47 109.27,-52.53 117.8,-54.52"/>
<polygon fill="midnightblue" stroke="midnightblue" points="117.1,-57.95 127.63,-56.81 118.69,-51.13 117.1,-57.95"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
@@ -46,23 +46,29 @@
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M92.02,-21.87C103.21,-20.1 115.14,-18.21 126.12,-16.47"/>
<polygon fill="midnightblue" stroke="midnightblue" points="126.97,-19.88 136.3,-14.86 125.87,-12.97 126.97,-19.88"/>
<path fill="none" stroke="midnightblue" d="M92.02,-27.49C103.33,-24.86 115.39,-22.04 126.46,-19.46"/>
<polygon fill="midnightblue" stroke="midnightblue" points="127.35,-22.84 136.3,-17.16 125.76,-16.03 127.35,-22.84"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/utility/move.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="244,-38.5 244,-57.5 304,-57.5 304,-38.5 244,-38.5"/>
<text text-anchor="middle" x="274" y="-45.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::move</text>
<polygon fill="white" stroke="black" points="244,-56.5 244,-75.5 304,-75.5 304,-56.5 244,-56.5"/>
<text text-anchor="middle" x="274" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::move</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M208.02,-48C216.37,-48 225.2,-48 233.56,-48"/>
<polygon fill="midnightblue" stroke="midnightblue" points="233.84,-51.5 243.84,-48 233.84,-44.5 233.84,-51.5"/>
<path fill="none" stroke="midnightblue" d="M208.02,-66C216.37,-66 225.2,-66 233.56,-66"/>
<polygon fill="midnightblue" stroke="midnightblue" points="233.84,-69.5 243.84,-66 233.84,-62.5 233.84,-69.5"/>
</g>
<!-- Node4&#45;&gt;Node4 -->
<g id="edge5" class="edge">
<title>Node4&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M151.66,-19.76C143.71,-28.57 149.16,-38 168,-38 179.77,-38 186.32,-34.31 187.63,-29.4"/>
<polygon fill="midnightblue" stroke="midnightblue" points="190.88,-28.09 184.34,-19.76 184.26,-30.35 190.88,-28.09"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: tower Struct Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d2/d2c/structtower.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -93,24 +93,23 @@ $(document).ready(function(){initNavTree('d2/d2c/structtower.html','../../'); in
<div class="summary">
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../d5/de2/structtower-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">tower Struct Reference</div> </div>
<div class="headertitle"><div class="title">tower Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a3ebb75c13c57d51a8a1ba1ea54a515e9"><td class="memItemLeft" align="right" valign="top"><a id="a3ebb75c13c57d51a8a1ba1ea54a515e9"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d2c/structtower.html#a3ebb75c13c57d51a8a1ba1ea54a515e9">values</a> [10]</td></tr>
<tr class="memitem:a3ebb75c13c57d51a8a1ba1ea54a515e9"><td class="memItemLeft" align="right" valign="top"><a id="a3ebb75c13c57d51a8a1ba1ea54a515e9" name="a3ebb75c13c57d51a8a1ba1ea54a515e9"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>values</b> [10]</td></tr>
<tr class="memdesc:a3ebb75c13c57d51a8a1ba1ea54a515e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Values in the tower. <br /></td></tr>
<tr class="separator:a3ebb75c13c57d51a8a1ba1ea54a515e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb535964abd34c47678a4ade0628223d"><td class="memItemLeft" align="right" valign="top"><a id="acb535964abd34c47678a4ade0628223d"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d2c/structtower.html#acb535964abd34c47678a4ade0628223d">top</a></td></tr>
<tr class="memitem:acb535964abd34c47678a4ade0628223d"><td class="memItemLeft" align="right" valign="top"><a id="acb535964abd34c47678a4ade0628223d" name="acb535964abd34c47678a4ade0628223d"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>top</b></td></tr>
<tr class="memdesc:acb535964abd34c47678a4ade0628223d"><td class="mdescLeft">&#160;</td><td class="mdescRight">top tower ID <br /></td></tr>
<tr class="separator:acb535964abd34c47678a4ade0628223d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Define the state of tower </p>
<div class="textblock"><p >Define the state of tower </p>
</div><hr/>The documentation for this struct was generated from the following file:<ul>
<li>others/<a class="el" href="../../db/d3c/tower__of__hanoi_8cpp.html">tower_of_hanoi.cpp</a></li>
</ul>
@@ -120,7 +119,7 @@ int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../..
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../d2/d2c/structtower.html">tower</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d9/d5a/structgeometry_1_1jarvis_1_1_point.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -90,21 +90,20 @@ $(document).ready(function(){initNavTree('d9/d5a/structgeometry_1_1jarvis_1_1_po
</div>
<div class="header">
<div class="headertitle">
<div class="title">geometry::jarvis::Point Member List</div> </div>
<div class="headertitle"><div class="title">geometry::jarvis::Point Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html">geometry::jarvis::Point</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>x</b> (defined in <a class="el" href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html">geometry::jarvis::Point</a>)</td><td class="entry"><a class="el" href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html">geometry::jarvis::Point</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>y</b> (defined in <a class="el" href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html">geometry::jarvis::Point</a>)</td><td class="entry"><a class="el" href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html">geometry::jarvis::Point</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>y</b> (defined in <a class="el" href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html">geometry::jarvis::Point</a>)</td><td class="entry"><a class="el" href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html">geometry::jarvis::Point</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: sorting/pancake_sort.cpp Pages: 1 -->
<svg width="269pt" height="84pt"

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: qr_algorithm Namespace Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d2/d3b/namespaceqr__algorithm.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -92,50 +92,49 @@ $(document).ready(function(){initNavTree('d2/d3b/namespaceqr__algorithm.html','.
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">qr_algorithm Namespace Reference</div> </div>
<div class="headertitle"><div class="title">qr_algorithm Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Functions to compute <a href="https://en.wikipedia.org/wiki/QR_decomposition">QR decomposition</a> of any rectangular matrix.
<p>Functions to compute <a href="https://en.wikipedia.org/wiki/QR_decomposition" target="_blank">QR decomposition</a> of any rectangular matrix.
<a href="../../d2/d3b/namespaceqr__algorithm.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a7c63c78d6839b8ad73b77c161210b514"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a7c63c78d6839b8ad73b77c161210b514"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html#a7c63c78d6839b8ad73b77c161210b514">operator&lt;&lt;</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;out, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt;&gt; const &amp;v)</td></tr>
<tr class="separator:a7c63c78d6839b8ad73b77c161210b514"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a240edf2b6b5942c0e5f2c9d3e326797f"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a240edf2b6b5942c0e5f2c9d3e326797f"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html#a240edf2b6b5942c0e5f2c9d3e326797f">operator&lt;&lt;</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;out, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; const &amp;v)</td></tr>
<tr class="separator:a240edf2b6b5942c0e5f2c9d3e326797f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adfbdf47277c8cfee229b05b72f1f7834"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:adfbdf47277c8cfee229b05b72f1f7834"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html#adfbdf47277c8cfee229b05b72f1f7834">operator&lt;&lt;</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;out, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &gt; const &amp;v)</td></tr>
<tr class="separator:adfbdf47277c8cfee229b05b72f1f7834"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a257425cb2365359da51c6fe6741834d8"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a257425cb2365359da51c6fe6741834d8"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html#a257425cb2365359da51c6fe6741834d8">operator&lt;&lt;</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;out, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; const &amp;v)</td></tr>
<tr class="separator:a257425cb2365359da51c6fe6741834d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ea313a1a1b5f9d0e3e332c29c6446ec"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a8ea313a1a1b5f9d0e3e332c29c6446ec"><td class="memTemplItemLeft" align="right" valign="top">double&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html#a8ea313a1a1b5f9d0e3e332c29c6446ec">vector_dot</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &amp;a, const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &amp;b)</td></tr>
<tr class="separator:a8ea313a1a1b5f9d0e3e332c29c6446ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad16da2183db22378435042f26af43d5f"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad16da2183db22378435042f26af43d5f"><td class="memTemplItemLeft" align="right" valign="top">double&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html#ad16da2183db22378435042f26af43d5f">vector_mag</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &amp;a)</td></tr>
<tr class="separator:ad16da2183db22378435042f26af43d5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5422c76bfa322620de611083bd518d71"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a5422c76bfa322620de611083bd518d71"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html#a5422c76bfa322620de611083bd518d71">vector_proj</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &amp;a, const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &amp;b)</td></tr>
<tr class="separator:a5422c76bfa322620de611083bd518d71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1ac74497ffb2101040cc1efe3546de8"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ab1ac74497ffb2101040cc1efe3546de8"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html#ab1ac74497ffb2101040cc1efe3546de8">qr_decompose</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt;&gt; &amp;A, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt;&gt; *Q, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt;&gt; *R)</td></tr>
<tr class="separator:ab1ac74497ffb2101040cc1efe3546de8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a763896dbb4a7e95c4a1e614ac0819d66"><td class="memItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html#a763896dbb4a7e95c4a1e614ac0819d66">eigen_values</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; double &gt;&gt; *A, bool print_intermediates=false)</td></tr>
<tr class="separator:a763896dbb4a7e95c4a1e614ac0819d66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d3c7dce1f142141f509d09f6c0e25dc"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6d3c7dce1f142141f509d09f6c0e25dc"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html#a6d3c7dce1f142141f509d09f6c0e25dc">vector_proj</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &amp;a, const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &amp;b)</td></tr>
<tr class="separator:a6d3c7dce1f142141f509d09f6c0e25dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73ce637634fc49e1d10d190eb388ebf1"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a73ce637634fc49e1d10d190eb388ebf1"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html#a73ce637634fc49e1d10d190eb388ebf1">qr_decompose</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &gt; &amp;A, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &gt; *Q, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &gt; *R)</td></tr>
<tr class="separator:a73ce637634fc49e1d10d190eb388ebf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28e2fa3e803abaea6c568dc45d69d8cc"><td class="memItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html#a28e2fa3e803abaea6c568dc45d69d8cc">eigen_values</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; double &gt; &gt; *A, bool print_intermediates=false)</td></tr>
<tr class="separator:a28e2fa3e803abaea6c568dc45d69d8cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Functions to compute <a href="https://en.wikipedia.org/wiki/QR_decomposition">QR decomposition</a> of any rectangular matrix. </p>
<div class="textblock"><p >Functions to compute <a href="https://en.wikipedia.org/wiki/QR_decomposition" target="_blank">QR decomposition</a> of any rectangular matrix. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a763896dbb4a7e95c4a1e614ac0819d66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a763896dbb4a7e95c4a1e614ac0819d66">&#9670;&nbsp;</a></span>eigen_values()</h2>
<a id="a28e2fa3e803abaea6c568dc45d69d8cc" name="a28e2fa3e803abaea6c568dc45d69d8cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28e2fa3e803abaea6c568dc45d69d8cc">&#9670;&nbsp;</a></span>eigen_values()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt;double&gt; qr_algorithm::eigen_values </td>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; double &gt; qr_algorithm::eigen_values </td>
<td>(</td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; double &gt;&gt; *&#160;</td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; double &gt; &gt; *&#160;</td>
<td class="paramname"><em>A</em>, </td>
</tr>
<tr>
@@ -151,7 +150,7 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<p>Compute eigen values using iterative shifted QR decomposition algorithm as follows:</p><ol type="1">
<p >Compute eigen values using iterative shifted QR decomposition algorithm as follows:</p><ol type="1">
<li>Use last diagonal element of A as eigen value approximation \(c\)</li>
<li>Shift diagonals of matrix \(A&#39; = A - cI\)</li>
<li>Decompose matrix \(A&#39;=QR\)</li>
@@ -177,90 +176,90 @@ Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">int</span> rows = A-&gt;size();</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">int</span> columns = rows;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">int</span> counter = 0, num_eigs = rows - 1;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">double</span> last_eig = 0;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;std::valarray&lt;double&gt;</a>&gt; Q(rows);</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;std::valarray&lt;double&gt;</a>&gt; R(columns);</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">/* number of eigen values = matrix size */</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;double&gt;</a> eigen_vals(rows);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rows; i++) {</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; Q[i] = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;double&gt;</a>(columns);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; R[i] = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;double&gt;</a>(columns);</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">/* continue till all eigen values are found */</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">while</span> (num_eigs &gt; 0) {</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">/* iterate with QR decomposition */</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">while</span> (std::abs(A[0][num_eigs][num_eigs - 1]) &gt;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/numeric_limits.html">std::numeric_limits&lt;double&gt;::epsilon</a>()) {</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// initial approximation = last diagonal element</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; last_eig = A[0][num_eigs][num_eigs];</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rows; i++) {</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; A[0][i][i] -= last_eig; <span class="comment">/* A - cI */</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="../../d2/d3b/namespaceqr__algorithm.html#ab1ac74497ffb2101040cc1efe3546de8">qr_decompose</a>(*A, &amp;Q, &amp;R);</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; </div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (print_intermediates) {</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; *A &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; Q &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; R &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/c/fprintf.html">printf</a>(<span class="stringliteral">&quot;-------------------- %d ---------------------\n&quot;</span>,</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; ++counter);</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// new approximation A&#39; = R * Q</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="../../de/d75/qr__eigen__values_8cpp.html#a7558fd7779bf207157ced66f275951a0">mat_mul</a>(R, Q, A);</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rows; i++) {</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; A[0][i][i] += last_eig; <span class="comment">/* A + cI */</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">/* store the converged eigen value */</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; eigen_vals[num_eigs] = last_eig;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// A[0][num_eigs][num_eigs];</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (print_intermediates) {</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;========================\n&quot;</span>;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Eigen value: &quot;</span> &lt;&lt; last_eig &lt;&lt; <span class="stringliteral">&quot;,\n&quot;</span>;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;========================\n&quot;</span>;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; </div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; num_eigs--;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; rows--;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; columns--;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; eigen_vals[0] = A[0][0][0];</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; </div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (print_intermediates) {</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; Q &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; R &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; </div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> eigen_vals;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> {</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordtype">int</span> rows = A-&gt;size();</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keywordtype">int</span> columns = rows;</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">int</span> counter = 0, num_eigs = rows - 1;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">double</span> last_eig = 0;</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;std::valarray&lt;double&gt;</a>&gt; Q(rows);</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;std::valarray&lt;double&gt;</a>&gt; R(columns);</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="comment">/* number of eigen values = matrix size */</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;double&gt;</a> eigen_vals(rows);</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rows; i++) {</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> Q[i] = <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;double&gt;</a>(columns);</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> R[i] = <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;double&gt;</a>(columns);</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> }</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="comment">/* continue till all eigen values are found */</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">while</span> (num_eigs &gt; 0) {</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="comment">/* iterate with QR decomposition */</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">while</span> (std::abs(A[0][num_eigs][num_eigs - 1]) &gt;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/numeric_limits.html">std::numeric_limits&lt;double&gt;::epsilon</a>()) {</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="comment">// initial approximation = last diagonal element</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> last_eig = A[0][num_eigs][num_eigs];</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rows; i++) {</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> A[0][i][i] -= last_eig; <span class="comment">/* A - cI */</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> }</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <a class="code hl_function" href="../../d2/d3b/namespaceqr__algorithm.html#a73ce637634fc49e1d10d190eb388ebf1">qr_decompose</a>(*A, &amp;Q, &amp;R);</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">if</span> (print_intermediates) {</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; *A &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; Q &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; R &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/c/fprintf.html">printf</a>(<span class="stringliteral">&quot;-------------------- %d ---------------------\n&quot;</span>,</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> ++counter);</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> }</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="comment">// new approximation A&#39; = R * Q</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <a class="code hl_function" href="../../de/d75/qr__eigen__values_8cpp.html#abb8bf4c55e10685a5eb2ad3797fde1ae">mat_mul</a>(R, Q, A);</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rows; i++) {</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> A[0][i][i] += last_eig; <span class="comment">/* A + cI */</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> }</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> }</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="comment">/* store the converged eigen value */</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> eigen_vals[num_eigs] = last_eig;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// A[0][num_eigs][num_eigs];</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">if</span> (print_intermediates) {</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;========================\n&quot;</span>;</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Eigen value: &quot;</span> &lt;&lt; last_eig &lt;&lt; <span class="stringliteral">&quot;,\n&quot;</span>;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;========================\n&quot;</span>;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> }</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> num_eigs--;</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> rows--;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> columns--;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> }</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> eigen_vals[0] = A[0][0][0];</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordflow">if</span> (print_intermediates) {</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; Q &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; R &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> }</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keywordflow">return</span> eigen_vals;</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span>}</div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
<div class="ttc" id="afprintf_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/c/fprintf.html">std::printf</a></div><div class="ttdeci">T printf(T... args)</div></div>
<div class="ttc" id="anamespaceqr__algorithm_html_ab1ac74497ffb2101040cc1efe3546de8"><div class="ttname"><a href="../../d2/d3b/namespaceqr__algorithm.html#ab1ac74497ffb2101040cc1efe3546de8">qr_algorithm::qr_decompose</a></div><div class="ttdeci">void qr_decompose(const std::valarray&lt; std::valarray&lt; T &gt;&gt; &amp;A, std::valarray&lt; std::valarray&lt; T &gt;&gt; *Q, std::valarray&lt; std::valarray&lt; T &gt;&gt; *R)</div><div class="ttdef"><b>Definition:</b> qr_decompose.h:146</div></div>
<div class="ttc" id="anamespaceqr__algorithm_html_a73ce637634fc49e1d10d190eb388ebf1"><div class="ttname"><a href="../../d2/d3b/namespaceqr__algorithm.html#a73ce637634fc49e1d10d190eb388ebf1">qr_algorithm::qr_decompose</a></div><div class="ttdeci">void qr_decompose(const std::valarray&lt; std::valarray&lt; T &gt; &gt; &amp;A, std::valarray&lt; std::valarray&lt; T &gt; &gt; *Q, std::valarray&lt; std::valarray&lt; T &gt; &gt; *R)</div><div class="ttdef"><b>Definition:</b> qr_decompose.h:146</div></div>
<div class="ttc" id="anumeric_limits_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/numeric_limits.html">std::numeric_limits</a></div></div>
<div class="ttc" id="aqr__eigen__values_8cpp_html_a7558fd7779bf207157ced66f275951a0"><div class="ttname"><a href="../../de/d75/qr__eigen__values_8cpp.html#a7558fd7779bf207157ced66f275951a0">mat_mul</a></div><div class="ttdeci">void mat_mul(const std::valarray&lt; std::valarray&lt; double &gt;&gt; &amp;A, const std::valarray&lt; std::valarray&lt; double &gt;&gt; &amp;B, std::valarray&lt; std::valarray&lt; double &gt;&gt; *OUT)</div><div class="ttdef"><b>Definition:</b> qr_eigen_values.cpp:54</div></div>
<div class="ttc" id="aqr__eigen__values_8cpp_html_abb8bf4c55e10685a5eb2ad3797fde1ae"><div class="ttname"><a href="../../de/d75/qr__eigen__values_8cpp.html#abb8bf4c55e10685a5eb2ad3797fde1ae">mat_mul</a></div><div class="ttdeci">void mat_mul(const std::valarray&lt; std::valarray&lt; double &gt; &gt; &amp;A, const std::valarray&lt; std::valarray&lt; double &gt; &gt; &amp;B, std::valarray&lt; std::valarray&lt; double &gt; &gt; *OUT)</div><div class="ttdef"><b>Definition:</b> qr_eigen_values.cpp:54</div></div>
<div class="ttc" id="avalarray_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a></div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d2/d3b/namespaceqr__algorithm_a763896dbb4a7e95c4a1e614ac0819d66_cgraph.svg" width="100%" height="404"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d2/d3b/namespaceqr__algorithm_a28e2fa3e803abaea6c568dc45d69d8cc_cgraph.svg" width="100%" height="404"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
</div>
<a id="a7c63c78d6839b8ad73b77c161210b514"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c63c78d6839b8ad73b77c161210b514">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[1/2]</span></h2>
<a id="adfbdf47277c8cfee229b05b72f1f7834" name="adfbdf47277c8cfee229b05b72f1f7834"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adfbdf47277c8cfee229b05b72f1f7834">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -268,7 +267,7 @@ Here is the call graph for this function:</div>
template&lt;typename T &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a>&amp; qr_algorithm::operator&lt;&lt; </td>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp; qr_algorithm::operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;&#160;</td>
<td class="paramname"><em>out</em>, </td>
@@ -276,7 +275,7 @@ template&lt;typename T &gt; </div>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt;&gt; const &amp;&#160;</td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &gt; const &amp;&#160;</td>
<td class="paramname"><em>v</em>&#160;</td>
</tr>
<tr>
@@ -286,21 +285,21 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>operator to print a matrix </p>
<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width = 12;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> separator = <span class="charliteral">&#39; &#39;</span>;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; out.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/ios_base/precision.html">precision</a>(4);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row &lt; v.size(); row++) {</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col = 0; col &lt; v[row].size(); col++)</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; out &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">std::right</a> &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(width) &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setfill.html">std::setfill</a>(separator)</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; &lt;&lt; v[row][col];</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; out &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">return</span> out;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;}</div>
<p >operator to print a matrix </p>
<div class="fragment"><div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">const</span> <span class="keywordtype">int</span> width = 12;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">const</span> <span class="keywordtype">char</span> separator = <span class="charliteral">&#39; &#39;</span>;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> out.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/ios_base/precision.html">precision</a>(4);</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row &lt; v.size(); row++) {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col = 0; col &lt; v[row].size(); col++)</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> out &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">std::right</a> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(width) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setfill.html">std::setfill</a>(separator)</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> &lt;&lt; v[row][col];</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> out &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> }</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">return</span> out;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>}</div>
<div class="ttc" id="aendl_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a></div><div class="ttdeci">T endl(T... args)</div></div>
<div class="ttc" id="aleft_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/left.html">std::right</a></div><div class="ttdeci">T right(T... args)</div></div>
<div class="ttc" id="aprecision_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/ios_base/precision.html">std::ostream::precision</a></div><div class="ttdeci">T precision(T... args)</div></div>
@@ -309,14 +308,14 @@ template&lt;typename T &gt; </div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d3b/namespaceqr__algorithm_a7c63c78d6839b8ad73b77c161210b514_cgraph.svg" width="384" height="240"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d3b/namespaceqr__algorithm_adfbdf47277c8cfee229b05b72f1f7834_cgraph.svg" width="384" height="240"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="a240edf2b6b5942c0e5f2c9d3e326797f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a240edf2b6b5942c0e5f2c9d3e326797f">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[2/2]</span></h2>
<a id="a257425cb2365359da51c6fe6741834d8" name="a257425cb2365359da51c6fe6741834d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a257425cb2365359da51c6fe6741834d8">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -324,7 +323,7 @@ Here is the call graph for this function:</div>
template&lt;typename T &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a>&amp; qr_algorithm::operator&lt;&lt; </td>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp; qr_algorithm::operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;&#160;</td>
<td class="paramname"><em>out</em>, </td>
@@ -342,30 +341,30 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>operator to print a vector </p>
<div class="fragment"><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> width = 10;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> separator = <span class="charliteral">&#39; &#39;</span>;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; out.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/ios_base/precision.html">precision</a>(4);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row &lt; v.size(); row++) {</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; out &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">std::right</a> &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(width) &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setfill.html">std::setfill</a>(separator)</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; &lt;&lt; v[row];</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> out;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div>
<p >operator to print a vector </p>
<div class="fragment"><div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> {</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">const</span> <span class="keywordtype">int</span> width = 10;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">const</span> <span class="keywordtype">char</span> separator = <span class="charliteral">&#39; &#39;</span>;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> out.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/ios_base/precision.html">precision</a>(4);</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row &lt; v.size(); row++) {</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> out &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">std::right</a> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(width) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setfill.html">std::setfill</a>(separator)</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> &lt;&lt; v[row];</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> }</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordflow">return</span> out;</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span>}</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d3b/namespaceqr__algorithm_a240edf2b6b5942c0e5f2c9d3e326797f_cgraph.svg" width="384" height="190"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d3b/namespaceqr__algorithm_a257425cb2365359da51c6fe6741834d8_cgraph.svg" width="384" height="190"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="ab1ac74497ffb2101040cc1efe3546de8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1ac74497ffb2101040cc1efe3546de8">&#9670;&nbsp;</a></span>qr_decompose()</h2>
<a id="a73ce637634fc49e1d10d190eb388ebf1" name="a73ce637634fc49e1d10d190eb388ebf1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73ce637634fc49e1d10d190eb388ebf1">&#9670;&nbsp;</a></span>qr_decompose()</h2>
<div class="memitem">
<div class="memproto">
@@ -375,19 +374,19 @@ template&lt;typename T &gt; </div>
<tr>
<td class="memname">void qr_algorithm::qr_decompose </td>
<td>(</td>
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt;&gt; &amp;&#160;</td>
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &gt; &amp;&#160;</td>
<td class="paramname"><em>A</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt;&gt; *&#160;</td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &gt; *&#160;</td>
<td class="paramname"><em>Q</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt;&gt; *&#160;</td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &gt; *&#160;</td>
<td class="paramname"><em>R</em>&#160;</td>
</tr>
<tr>
@@ -397,7 +396,7 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Decompose matrix \(A\) using <a href="https://en.wikipedia.org/wiki/QR_decomposition">Gram-Schmidt process</a>.</p>
<p >Decompose matrix \(A\) using <a href="https://en.wikipedia.org/wiki/QR_decomposition" target="_blank">Gram-Schmidt process</a>.</p>
<p class="formulaDsp">
\begin{eqnarray*} \text{given that}\quad A &amp;=&amp; *\left[\mathbf{a}_1,\mathbf{a}_2,\ldots,\mathbf{a}_{N-1},\right]\\ \text{where}\quad\mathbf{a}_i &amp;=&amp; \left[a_{0i},a_{1i},a_{2i},\ldots,a_{(M-1)i}\right]^T\quad\ldots\mbox{(column vectors)}\\ \text{then}\quad\mathbf{u}_i &amp;=&amp; \mathbf{a}_i *-\sum_{j=0}^{i-1}\text{proj}_{\mathbf{u}_j}\mathbf{a}_i\\ \mathbf{e}_i &amp;=&amp;\frac{\mathbf{u}_i}{\left|\mathbf{u}_i\right|}\\ Q &amp;=&amp; \begin{bmatrix}\mathbf{e}_0 &amp; \mathbf{e}_1 &amp; \mathbf{e}_2 &amp; \dots &amp; \mathbf{e}_{N-1}\end{bmatrix}\\ R &amp;=&amp; \begin{bmatrix}\langle\mathbf{e}_0\,,\mathbf{a}_0\rangle &amp; \langle\mathbf{e}_1\,,\mathbf{a}_1\rangle &amp; \langle\mathbf{e}_2\,,\mathbf{a}_2\rangle &amp; \dots \\ 0 &amp; \langle\mathbf{e}_1\,,\mathbf{a}_1\rangle &amp; \langle\mathbf{e}_2\,,\mathbf{a}_2\rangle &amp; \dots\\ 0 &amp; 0 &amp; \langle\mathbf{e}_2\,,\mathbf{a}_2\rangle &amp; \dots\\ \vdots &amp; \vdots &amp; \vdots &amp; \ddots \end{bmatrix}\\ \end{eqnarray*}
</p>
@@ -409,79 +408,79 @@ template&lt;typename T &gt; </div>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> ROWS = A.size(); <span class="comment">// number of rows of A</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> COLUMNS = A[0].size(); <span class="comment">// number of columns of A</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;T&gt;</a> col_vector(ROWS);</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;T&gt;</a> col_vector2(ROWS);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;T&gt;</a> tmp_vector(ROWS);</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; </div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; COLUMNS; i++) {</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">/* for each column =&gt; R is a square matrix of NxN */</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordtype">int</span> j;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; R[0][i] = 0.; <span class="comment">/* make R upper triangular */</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; </div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="comment">/* get corresponding Q vector */</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment">// parallelize on threads</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor">#pragma omp for</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">for</span> (j = 0; j &lt; ROWS; j++) {</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; tmp_vector[j] = A[j][i]; <span class="comment">/* accumulator for uk */</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; col_vector[j] = A[j][i];</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">for</span> (j = 0; j &lt; i; j++) {</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 0; k &lt; ROWS; k++) {</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; col_vector2[k] = Q[0][k][j];</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; col_vector2 = <a class="code" href="../../d2/d3b/namespaceqr__algorithm.html#a5422c76bfa322620de611083bd518d71">vector_proj</a>(col_vector, col_vector2);</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; tmp_vector -= col_vector2;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; </div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordtype">double</span> <a class="code" href="../../df/d66/vector__cross__product_8cpp.html#a4b2a9757a87c18e1642d72410ecfaba8">mag</a> = <a class="code" href="../../d2/d3b/namespaceqr__algorithm.html#ad16da2183db22378435042f26af43d5f">vector_mag</a>(tmp_vector);</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; </div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment">// parallelize on threads</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor">#pragma omp for</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (j = 0; j &lt; ROWS; j++) Q[0][j][i] = tmp_vector[j] / mag;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; </div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">/* compute upper triangular values of R */</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment">// parallelize on threads</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="preprocessor">#pragma omp for</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> kk = 0; kk &lt; ROWS; kk++) {</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; col_vector[kk] = Q[0][kk][i];</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment">// parallelize on threads</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="preprocessor">#pragma omp for</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = i; k &lt; COLUMNS; k++) {</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> kk = 0; kk &lt; ROWS; kk++) {</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; col_vector2[kk] = A[kk][k];</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; R[0][i][k] = (col_vector * col_vector2).<a class="code" href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44">sum</a>();</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div>
<div class="ttc" id="anamespacemachine__learning_html_a5305cc18d11943d3dc0d66e70d7e9c44"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44">machine_learning::sum</a></div><div class="ttdeci">T sum(const std::vector&lt; std::valarray&lt; T &gt;&gt; &amp;A)</div><div class="ttdef"><b>Definition:</b> vector_ops.hpp:232</div></div>
<div class="ttc" id="anamespaceqr__algorithm_html_a5422c76bfa322620de611083bd518d71"><div class="ttname"><a href="../../d2/d3b/namespaceqr__algorithm.html#a5422c76bfa322620de611083bd518d71">qr_algorithm::vector_proj</a></div><div class="ttdeci">std::valarray&lt; T &gt; vector_proj(const std::valarray&lt; T &gt; &amp;a, const std::valarray&lt; T &gt; &amp;b)</div><div class="ttdef"><b>Definition:</b> qr_decompose.h:104</div></div>
<div class="fragment"><div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> {</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> ROWS = A.size(); <span class="comment">// number of rows of A</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> COLUMNS = A[0].size(); <span class="comment">// number of columns of A</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;T&gt;</a> col_vector(ROWS);</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;T&gt;</a> col_vector2(ROWS);</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;T&gt;</a> tmp_vector(ROWS);</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; COLUMNS; i++) {</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="comment">/* for each column =&gt; R is a square matrix of NxN */</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordtype">int</span> j;</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> R[0][i] = 0.; <span class="comment">/* make R upper triangular */</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="comment">/* get corresponding Q vector */</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="comment">// parallelize on threads</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="preprocessor">#pragma omp for</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="keywordflow">for</span> (j = 0; j &lt; ROWS; j++) {</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> tmp_vector[j] = A[j][i]; <span class="comment">/* accumulator for uk */</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> col_vector[j] = A[j][i];</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> }</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keywordflow">for</span> (j = 0; j &lt; i; j++) {</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 0; k &lt; ROWS; k++) {</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> col_vector2[k] = Q[0][k][j];</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> }</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> col_vector2 = <a class="code hl_function" href="../../d2/d3b/namespaceqr__algorithm.html#a6d3c7dce1f142141f509d09f6c0e25dc">vector_proj</a>(col_vector, col_vector2);</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> tmp_vector -= col_vector2;</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> }</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordtype">double</span> <a class="code hl_function" href="../../df/d66/vector__cross__product_8cpp.html#a4b2a9757a87c18e1642d72410ecfaba8">mag</a> = <a class="code hl_function" href="../../d2/d3b/namespaceqr__algorithm.html#ad16da2183db22378435042f26af43d5f">vector_mag</a>(tmp_vector);</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> </div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span><span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="comment">// parallelize on threads</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span><span class="preprocessor">#pragma omp for</span></div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keywordflow">for</span> (j = 0; j &lt; ROWS; j++) Q[0][j][i] = tmp_vector[j] / mag;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> </div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="comment">/* compute upper triangular values of R */</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span><span class="comment">// parallelize on threads</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="preprocessor">#pragma omp for</span></div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> kk = 0; kk &lt; ROWS; kk++) {</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> col_vector[kk] = Q[0][kk][i];</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> }</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> </div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span><span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span><span class="comment">// parallelize on threads</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span><span class="preprocessor">#pragma omp for</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = i; k &lt; COLUMNS; k++) {</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> kk = 0; kk &lt; ROWS; kk++) {</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> col_vector2[kk] = A[kk][k];</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> }</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> R[0][i][k] = (col_vector * col_vector2).<a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">sum</a>();</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> }</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> }</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span>}</div>
<div class="ttc" id="anamespacemachine__learning_html_a6f1c98c016ad34ff3d9f39372161bd35"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">machine_learning::sum</a></div><div class="ttdeci">T sum(const std::vector&lt; std::valarray&lt; T &gt; &gt; &amp;A)</div><div class="ttdef"><b>Definition:</b> vector_ops.hpp:232</div></div>
<div class="ttc" id="anamespaceqr__algorithm_html_a6d3c7dce1f142141f509d09f6c0e25dc"><div class="ttname"><a href="../../d2/d3b/namespaceqr__algorithm.html#a6d3c7dce1f142141f509d09f6c0e25dc">qr_algorithm::vector_proj</a></div><div class="ttdeci">std::valarray&lt; T &gt; vector_proj(const std::valarray&lt; T &gt; &amp;a, const std::valarray&lt; T &gt; &amp;b)</div><div class="ttdef"><b>Definition:</b> qr_decompose.h:104</div></div>
<div class="ttc" id="anamespaceqr__algorithm_html_ad16da2183db22378435042f26af43d5f"><div class="ttname"><a href="../../d2/d3b/namespaceqr__algorithm.html#ad16da2183db22378435042f26af43d5f">qr_algorithm::vector_mag</a></div><div class="ttdeci">double vector_mag(const std::valarray&lt; T &gt; &amp;a)</div><div class="ttdef"><b>Definition:</b> qr_decompose.h:92</div></div>
<div class="ttc" id="asize_t_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div></div>
<div class="ttc" id="avector__cross__product_8cpp_html_a4b2a9757a87c18e1642d72410ecfaba8"><div class="ttname"><a href="../../df/d66/vector__cross__product_8cpp.html#a4b2a9757a87c18e1642d72410ecfaba8">math::vector_cross::mag</a></div><div class="ttdeci">double mag(const std::array&lt; double, 3 &gt; &amp;vec)</div><div class="ttdoc">Calculates the magnitude of the mathematical vector from it's direction ratios.</div><div class="ttdef"><b>Definition:</b> vector_cross_product.cpp:83</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d3b/namespaceqr__algorithm_ab1ac74497ffb2101040cc1efe3546de8_cgraph.svg" width="638" height="139"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d3b/namespaceqr__algorithm_a73ce637634fc49e1d10d190eb388ebf1_cgraph.svg" width="638" height="139"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="a8ea313a1a1b5f9d0e3e332c29c6446ec"></a>
<a id="a8ea313a1a1b5f9d0e3e332c29c6446ec" name="a8ea313a1a1b5f9d0e3e332c29c6446ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ea313a1a1b5f9d0e3e332c29c6446ec">&#9670;&nbsp;</a></span>vector_dot()</h2>
<div class="memitem">
@@ -516,19 +515,19 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Compute dot product of two vectors of equal lengths</p>
<p>If \(\vec{a}=\left[a_0,a_1,a_2,...,a_L\right]\) and \(\vec{b}=\left[b_0,b_1,b_1,...,b_L\right]\) then \(\vec{a}\cdot\vec{b}=\displaystyle\sum_{i=0}^L a_i\times b_i\)</p>
<p >Compute dot product of two vectors of equal lengths</p>
<p >If \(\vec{a}=\left[a_0,a_1,a_2,...,a_L\right]\) and \(\vec{b}=\left[b_0,b_1,b_1,...,b_L\right]\) then \(\vec{a}\cdot\vec{b}=\displaystyle\sum_{i=0}^L a_i\times b_i\)</p>
<dl class="section return"><dt>Returns</dt><dd>\(\vec{a}\cdot\vec{b}\) </dd></dl>
<div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> (a * b).sum();</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// could also use following</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// return std::inner_product(std::begin(a), std::end(a), std::begin(b),</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// 0.f);</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> {</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">return</span> (a * b).sum();</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// could also use following</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// return std::inner_product(std::begin(a), std::end(a), std::begin(b),</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// 0.f);</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ad16da2183db22378435042f26af43d5f"></a>
<a id="ad16da2183db22378435042f26af43d5f" name="ad16da2183db22378435042f26af43d5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad16da2183db22378435042f26af43d5f">&#9670;&nbsp;</a></span>vector_mag()</h2>
<div class="memitem">
@@ -553,13 +552,13 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Compute magnitude of vector.</p>
<p>If \(\vec{a}=\left[a_0,a_1,a_2,...,a_L\right]\) then \(\left|\vec{a}\right|=\sqrt{\displaystyle\sum_{i=0}^L a_i^2}\)</p>
<p >Compute magnitude of vector.</p>
<p >If \(\vec{a}=\left[a_0,a_1,a_2,...,a_L\right]\) then \(\left|\vec{a}\right|=\sqrt{\displaystyle\sum_{i=0}^L a_i^2}\)</p>
<dl class="section return"><dt>Returns</dt><dd>\(\left|\vec{a}\right|\) </dd></dl>
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">double</span> dot = <a class="code" href="../../d2/d3b/namespaceqr__algorithm.html#a8ea313a1a1b5f9d0e3e332c29c6446ec">vector_dot</a>(a, a);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a>(dot);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> {</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordtype">double</span> dot = <a class="code hl_function" href="../../d2/d3b/namespaceqr__algorithm.html#a8ea313a1a1b5f9d0e3e332c29c6446ec">vector_dot</a>(a, a);</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">return</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a>(dot);</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span>}</div>
<div class="ttc" id="anamespaceqr__algorithm_html_a8ea313a1a1b5f9d0e3e332c29c6446ec"><div class="ttname"><a href="../../d2/d3b/namespaceqr__algorithm.html#a8ea313a1a1b5f9d0e3e332c29c6446ec">qr_algorithm::vector_dot</a></div><div class="ttdeci">double vector_dot(const std::valarray&lt; T &gt; &amp;a, const std::valarray&lt; T &gt; &amp;b)</div><div class="ttdef"><b>Definition:</b> qr_decompose.h:76</div></div>
<div class="ttc" id="asqrt_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a></div><div class="ttdeci">T sqrt(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
@@ -571,8 +570,8 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a5422c76bfa322620de611083bd518d71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5422c76bfa322620de611083bd518d71">&#9670;&nbsp;</a></span>vector_proj()</h2>
<a id="a6d3c7dce1f142141f509d09f6c0e25dc" name="a6d3c7dce1f142141f509d09f6c0e25dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d3c7dce1f142141f509d09f6c0e25dc">&#9670;&nbsp;</a></span>vector_proj()</h2>
<div class="memitem">
<div class="memproto">
@@ -580,7 +579,7 @@ Here is the call graph for this function:</div>
template&lt;typename T &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt;T&gt; qr_algorithm::vector_proj </td>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; qr_algorithm::vector_proj </td>
<td>(</td>
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
@@ -598,29 +597,29 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Compute projection of vector \(\vec{a}\) on \(\vec{b}\) defined as </p><p class="formulaDsp">
<p >Compute projection of vector \(\vec{a}\) on \(\vec{b}\) defined as </p><p class="formulaDsp">
\[\text{proj}_\vec{b}\vec{a}=\frac{\vec{a}\cdot\vec{b}}{\left|\vec{b}\right|^2}\vec{b}\]
</p>
<dl class="section return"><dt>Returns</dt><dd>NULL if error, otherwise pointer to output </dd></dl>
<p>check for division by zero using machine epsilon</p>
<div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">double</span> num = <a class="code" href="../../d2/d3b/namespaceqr__algorithm.html#a8ea313a1a1b5f9d0e3e332c29c6446ec">vector_dot</a>(a, b);</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">double</span> deno = <a class="code" href="../../d2/d3b/namespaceqr__algorithm.html#a8ea313a1a1b5f9d0e3e332c29c6446ec">vector_dot</a>(b, b);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> /*! check for division by zero using machine epsilon */</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">if</span> (deno &lt;= <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/numeric_limits.html">std::numeric_limits&lt;double&gt;::epsilon</a>()) {</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cerr</a> &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; __func__ &lt;&lt; <span class="stringliteral">&quot;] Possible division by zero\n&quot;</span>;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> a; <span class="comment">// return vector a back</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">double</span> scalar = num / deno;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> b * scalar;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;}</div>
<p >check for division by zero using machine epsilon</p>
<div class="fragment"><div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> {</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keywordtype">double</span> num = <a class="code hl_function" href="../../d2/d3b/namespaceqr__algorithm.html#a8ea313a1a1b5f9d0e3e332c29c6446ec">vector_dot</a>(a, b);</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keywordtype">double</span> deno = <a class="code hl_function" href="../../d2/d3b/namespaceqr__algorithm.html#a8ea313a1a1b5f9d0e3e332c29c6446ec">vector_dot</a>(b, b);</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="comment"></span> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="comment"> /*! check for division by zero using machine epsilon */</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">if</span> (deno &lt;= <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/numeric_limits.html">std::numeric_limits&lt;double&gt;::epsilon</a>()) {</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cerr</a> &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; __func__ &lt;&lt; <span class="stringliteral">&quot;] Possible division by zero\n&quot;</span>;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">return</span> a; <span class="comment">// return vector a back</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> }</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordtype">double</span> scalar = num / deno;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">return</span> b * scalar;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span>}</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d3b/namespaceqr__algorithm_a5422c76bfa322620de611083bd518d71_cgraph.svg" width="394" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d3b/namespaceqr__algorithm_a6d3c7dce1f142141f509d09f6c0e25dc_cgraph.svg" width="394" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
@@ -632,7 +631,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../d2/d3b/namespaceqr__algorithm.html">qr_algorithm</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: qr_algorithm::operator&lt;&lt; Pages: 1 -->
<svg width="288pt" height="142pt"

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -1,10 +1,10 @@
<map id="qr_algorithm::eigen_values" name="qr_algorithm::eigen_values">
<area shape="rect" id="node1" title=" " alt="" coords="5,23,141,65"/>
<area shape="rect" id="node2" href="$de/d75/qr__eigen__values_8cpp.html#a7558fd7779bf207157ced66f275951a0" title=" " alt="" coords="249,5,322,32"/>
<area shape="rect" id="node3" href="$d2/d3b/namespaceqr__algorithm.html#ab1ac74497ffb2101040cc1efe3546de8" title=" " alt="" coords="189,56,381,83"/>
<area shape="rect" id="node4" href="$d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" title=" " alt="" coords="436,5,596,32"/>
<area shape="rect" id="node2" href="$de/d75/qr__eigen__values_8cpp.html#abb8bf4c55e10685a5eb2ad3797fde1ae" title=" " alt="" coords="249,5,322,32"/>
<area shape="rect" id="node3" href="$d2/d3b/namespaceqr__algorithm.html#a73ce637634fc49e1d10d190eb388ebf1" title=" " alt="" coords="189,56,381,83"/>
<area shape="rect" id="node4" href="$d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" title=" " alt="" coords="436,5,596,32"/>
<area shape="rect" id="node5" href="$d2/d3b/namespaceqr__algorithm.html#ad16da2183db22378435042f26af43d5f" title=" " alt="" coords="429,56,603,83"/>
<area shape="rect" id="node8" href="$d2/d3b/namespaceqr__algorithm.html#a5422c76bfa322620de611083bd518d71" title=" " alt="" coords="431,107,601,133"/>
<area shape="rect" id="node8" href="$d2/d3b/namespaceqr__algorithm.html#a6d3c7dce1f142141f509d09f6c0e25dc" title=" " alt="" coords="431,107,601,133"/>
<area shape="rect" id="node6" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/numeric/math/sqrt.html#" title=" " alt="" coords="699,56,768,83"/>
<area shape="rect" id="node7" href="$d2/d3b/namespaceqr__algorithm.html#a8ea313a1a1b5f9d0e3e332c29c6446ec" title=" " alt="" coords="651,107,816,133"/>
</map>

View File

@@ -0,0 +1 @@
ff1ce491baef77cae98d3923cd25991e

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: qr_algorithm::eigen_values Pages: 1 -->
<!--zoomable 104 -->
@@ -68,7 +68,7 @@ var sectionId = 'dynsection-0';
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../de/d75/qr__eigen__values_8cpp.html#a7558fd7779bf207157ced66f275951a0" target="_top" xlink:title=" ">
<g id="a_node2"><a xlink:href="../../de/d75/qr__eigen__values_8cpp.html#abb8bf4c55e10685a5eb2ad3797fde1ae" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="182.5,-76.5 182.5,-95.5 237.5,-95.5 237.5,-76.5 182.5,-76.5"/>
<text text-anchor="middle" x="210" y="-83.5" font-family="Helvetica,sans-Serif" font-size="10.00">mat_mul</text>
</a>
@@ -83,7 +83,7 @@ var sectionId = 'dynsection-0';
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d2/d3b/namespaceqr__algorithm.html#ab1ac74497ffb2101040cc1efe3546de8" target="_top" xlink:title=" ">
<g id="a_node3"><a xlink:href="../../d2/d3b/namespaceqr__algorithm.html#a73ce637634fc49e1d10d190eb388ebf1" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="138,-38.5 138,-57.5 282,-57.5 282,-38.5 138,-38.5"/>
<text text-anchor="middle" x="210" y="-45.5" font-family="Helvetica,sans-Serif" font-size="10.00">qr_algorithm::qr_decompose</text>
</a>
@@ -98,7 +98,7 @@ var sectionId = 'dynsection-0';
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" target="_top" xlink:title=" ">
<g id="a_node4"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="323,-76.5 323,-95.5 443,-95.5 443,-76.5 323,-76.5"/>
<text text-anchor="middle" x="383" y="-83.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::sum</text>
</a>
@@ -128,7 +128,7 @@ var sectionId = 'dynsection-0';
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><a xlink:href="../../d2/d3b/namespaceqr__algorithm.html#a5422c76bfa322620de611083bd518d71" target="_top" xlink:title=" ">
<g id="a_node8"><a xlink:href="../../d2/d3b/namespaceqr__algorithm.html#a6d3c7dce1f142141f509d09f6c0e25dc" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="319.5,-0.5 319.5,-19.5 446.5,-19.5 446.5,-0.5 319.5,-0.5"/>
<text text-anchor="middle" x="383" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">qr_algorithm::vector_proj</text>
</a>
@@ -210,7 +210,7 @@ var sectionId = 'dynsection-0';
</g>
<svg viewBox="0 0 15 15" width="100%" height="30px" preserveAspectRatio="xMaxYMin meet">
<g id="arrow_out" transform="scale(0.3 0.3)">
<a xlink:href="namespaceqr__algorithm_a763896dbb4a7e95c4a1e614ac0819d66_cgraph_org.svg" target="_base">
<a xlink:href="namespaceqr__algorithm_a28e2fa3e803abaea6c568dc45d69d8cc_cgraph_org.svg" target="_base">
<rect id="button" ry="5" rx="5" y="6" x="6" height="38" width="38"
fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width="1.0"/>
<path id="arrow"

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: qr_algorithm::eigen_values Pages: 1 -->
<svg width="616pt" height="104pt"
@@ -22,7 +22,7 @@
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../de/d75/qr__eigen__values_8cpp.html#a7558fd7779bf207157ced66f275951a0" target="_top" xlink:title=" ">
<g id="a_node2"><a xlink:href="../../de/d75/qr__eigen__values_8cpp.html#abb8bf4c55e10685a5eb2ad3797fde1ae" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="182.5,-76.5 182.5,-95.5 237.5,-95.5 237.5,-76.5 182.5,-76.5"/>
<text text-anchor="middle" x="210" y="-83.5" font-family="Helvetica,sans-Serif" font-size="10.00">mat_mul</text>
</a>
@@ -37,7 +37,7 @@
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d2/d3b/namespaceqr__algorithm.html#ab1ac74497ffb2101040cc1efe3546de8" target="_top" xlink:title=" ">
<g id="a_node3"><a xlink:href="../../d2/d3b/namespaceqr__algorithm.html#a73ce637634fc49e1d10d190eb388ebf1" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="138,-38.5 138,-57.5 282,-57.5 282,-38.5 138,-38.5"/>
<text text-anchor="middle" x="210" y="-45.5" font-family="Helvetica,sans-Serif" font-size="10.00">qr_algorithm::qr_decompose</text>
</a>
@@ -52,7 +52,7 @@
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" target="_top" xlink:title=" ">
<g id="a_node4"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="323,-76.5 323,-95.5 443,-95.5 443,-76.5 323,-76.5"/>
<text text-anchor="middle" x="383" y="-83.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::sum</text>
</a>
@@ -82,7 +82,7 @@
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><a xlink:href="../../d2/d3b/namespaceqr__algorithm.html#a5422c76bfa322620de611083bd518d71" target="_top" xlink:title=" ">
<g id="a_node8"><a xlink:href="../../d2/d3b/namespaceqr__algorithm.html#a6d3c7dce1f142141f509d09f6c0e25dc" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="319.5,-0.5 319.5,-19.5 446.5,-19.5 446.5,-0.5 319.5,-0.5"/>
<text text-anchor="middle" x="383" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">qr_algorithm::vector_proj</text>
</a>

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: qr_algorithm::vector_proj Pages: 1 -->
<svg width="295pt" height="28pt"

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,8 +1,8 @@
<map id="qr_algorithm::qr_decompose" name="qr_algorithm::qr_decompose">
<area shape="rect" id="node1" title=" " alt="" coords="5,56,197,83"/>
<area shape="rect" id="node2" href="$d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" title=" " alt="" coords="252,5,412,32"/>
<area shape="rect" id="node2" href="$d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" title=" " alt="" coords="252,5,412,32"/>
<area shape="rect" id="node3" href="$d2/d3b/namespaceqr__algorithm.html#ad16da2183db22378435042f26af43d5f" title=" " alt="" coords="245,56,419,83"/>
<area shape="rect" id="node6" href="$d2/d3b/namespaceqr__algorithm.html#a5422c76bfa322620de611083bd518d71" title=" " alt="" coords="247,107,417,133"/>
<area shape="rect" id="node6" href="$d2/d3b/namespaceqr__algorithm.html#a6d3c7dce1f142141f509d09f6c0e25dc" title=" " alt="" coords="247,107,417,133"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/numeric/math/sqrt.html#" title=" " alt="" coords="515,56,584,83"/>
<area shape="rect" id="node5" href="$d2/d3b/namespaceqr__algorithm.html#a8ea313a1a1b5f9d0e3e332c29c6446ec" title=" " alt="" coords="467,107,632,133"/>
</map>

View File

@@ -0,0 +1 @@
282e3bc80ac2f821dcf3616342fe3a0c

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: qr_algorithm::qr_decompose Pages: 1 -->
<svg width="478pt" height="104pt"
@@ -21,7 +21,7 @@
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" target="_top" xlink:title=" ">
<g id="a_node2"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="185,-76.5 185,-95.5 305,-95.5 305,-76.5 185,-76.5"/>
<text text-anchor="middle" x="245" y="-83.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::sum</text>
</a>
@@ -51,7 +51,7 @@
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a xlink:href="../../d2/d3b/namespaceqr__algorithm.html#a5422c76bfa322620de611083bd518d71" target="_top" xlink:title=" ">
<g id="a_node6"><a xlink:href="../../d2/d3b/namespaceqr__algorithm.html#a6d3c7dce1f142141f509d09f6c0e25dc" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="181.5,-0.5 181.5,-19.5 308.5,-19.5 308.5,-0.5 181.5,-0.5"/>
<text text-anchor="middle" x="245" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">qr_algorithm::vector_proj</text>
</a>

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@@ -1 +0,0 @@
1d2d8f127f6ca7e70040d15547ca6324

View File

@@ -1 +0,0 @@
079ee8ddd5c4a9041eb3938709d62d12

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: qr_algorithm::vector_mag Pages: 1 -->
<svg width="298pt" height="66pt"

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: qr_algorithm::operator&lt;&lt; Pages: 1 -->
<svg width="288pt" height="180pt"

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: graphics/spirograph.cpp Pages: 1 -->
<!--zoomable 84 -->

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: graphics/spirograph.cpp Pages: 1 -->
<svg width="514pt" height="84pt"

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: sorting/heap_sort.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d2/d52/heap__sort_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -92,12 +92,11 @@ $(document).ready(function(){initNavTree('d2/d52/heap__sort_8cpp.html','../../')
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">heap_sort.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">heap_sort.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a href="https://en.wikipedia.org/wiki/Heapsort">Heap Sort Algorithm (heap sort)</a> implementation
<p><a href="https://en.wikipedia.org/wiki/Heapsort" target="_blank">Heap Sort Algorithm (heap sort)</a> implementation
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;cassert&gt;</code><br />
@@ -109,14 +108,13 @@ Include dependency graph for heap_sort.cpp:</div>
</div>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a9ed3e1510afdf3edd06cf2b68769a767"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a9ed3e1510afdf3edd06cf2b68769a767"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d52/heap__sort_8cpp.html#a9ed3e1510afdf3edd06cf2b68769a767">printArray</a> (T *arr, int sz)</td></tr>
<tr class="separator:a9ed3e1510afdf3edd06cf2b68769a767"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabd9a93f241c5c86f2ec0abf8b66b4145"><td class="memTemplParams" colspan="2">
template&lt;typename T &gt; </td></tr>
<tr class="memitem:gabd9a93f241c5c86f2ec0abf8b66b4145"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>heapify</b> (T *arr, int n, int i)</td></tr>
<tr class="memitem:gabd9a93f241c5c86f2ec0abf8b66b4145"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:gabd9a93f241c5c86f2ec0abf8b66b4145"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d5/d4c/group__sorting.html#gabd9a93f241c5c86f2ec0abf8b66b4145">heapify</a> (T *arr, int n, int i)</td></tr>
<tr class="separator:gabd9a93f241c5c86f2ec0abf8b66b4145"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga29d28b140174dbdde7c9f5157758435f"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ga29d28b140174dbdde7c9f5157758435f"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d5/d4c/group__sorting.html#ga29d28b140174dbdde7c9f5157758435f">heapSort</a> (T *arr, int n)</td></tr>
@@ -127,12 +125,12 @@ template&lt;typename T &gt; </td></tr>
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a href="https://en.wikipedia.org/wiki/Heapsort">Heap Sort Algorithm (heap sort)</a> implementation </p>
<dl class="section author"><dt>Author</dt><dd><a href="http://github.com/ayaankhan98">Ayaan Khan</a></dd></dl>
<div class="textblock"><p ><a href="https://en.wikipedia.org/wiki/Heapsort" target="_blank">Heap Sort Algorithm (heap sort)</a> implementation </p>
<dl class="section author"><dt>Author</dt><dd><a href="http://github.com/ayaankhan98" target="_blank">Ayaan Khan</a></dd></dl>
<p>Heap-sort is a comparison-based sorting algorithm. Heap-sort can be thought of as an improved selection sort: like selection sort, heap sort divides its input into a sorted and an unsorted region, and it iteratively shrinks the unsorted region by extracting the largest element from it and inserting it into the sorted region. Unlike selection sort, heap sort does not waste time with a linear-time scan of the unsorted region; rather, heap sort maintains the unsorted region in a heap data structure to more quickly find the largest element in each step.</p>
<p>Time Complexity - \(O(n \log(n))\) </p>
<p >Time Complexity - \(O(n \log(n))\) </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
@@ -147,11 +145,11 @@ template&lt;typename T &gt; </td></tr>
</tr>
</table>
</div><div class="memdoc">
<p>Main function </p>
<div class="fragment"><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="../../d2/d52/heap__sort_8cpp.html#ae1a3968e7947464bee7714f6d43b7002">test</a>();</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div>
<p >Main function </p>
<div class="fragment"><div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> {</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <a class="code hl_function" href="../../d2/d52/heap__sort_8cpp.html#ae1a3968e7947464bee7714f6d43b7002">test</a>();</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span>}</div>
<div class="ttc" id="aheap__sort_8cpp_html_ae1a3968e7947464bee7714f6d43b7002"><div class="ttname"><a href="../../d2/d52/heap__sort_8cpp.html#ae1a3968e7947464bee7714f6d43b7002">test</a></div><div class="ttdeci">void test()</div><div class="ttdef"><b>Definition:</b> heap_sort.cpp:99</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -162,7 +160,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a9ed3e1510afdf3edd06cf2b68769a767"></a>
<a id="a9ed3e1510afdf3edd06cf2b68769a767" name="a9ed3e1510afdf3edd06cf2b68769a767"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ed3e1510afdf3edd06cf2b68769a767">&#9670;&nbsp;</a></span>printArray()</h2>
<div class="memitem">
@@ -189,7 +187,7 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Utility function to print the array after sorting.</p>
<p >Utility function to print the array after sorting.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arr</td><td>array to be printed </td></tr>
@@ -197,15 +195,15 @@ template&lt;typename T &gt; </div>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; sz; i++) <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; arr[i] &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; sz; i++) <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; arr[i] &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span>}</div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae1a3968e7947464bee7714f6d43b7002"></a>
<a id="ae1a3968e7947464bee7714f6d43b7002" name="ae1a3968e7947464bee7714f6d43b7002"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1a3968e7947464bee7714f6d43b7002">&#9670;&nbsp;</a></span>test()</h2>
<div class="memitem">
@@ -219,26 +217,26 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Test cases to test the program </p>
<div class="fragment"><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 1\n&quot;</span>;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">int</span> arr[] = {-10, 78, -1, -6, 7, 4, 94, 5, 99, 0};</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">int</span> sz = <span class="keyword">sizeof</span>(arr) / <span class="keyword">sizeof</span>(arr[0]); <span class="comment">// sz - size of array</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="../../d2/d52/heap__sort_8cpp.html#a9ed3e1510afdf3edd06cf2b68769a767">printArray</a>(arr, sz); <span class="comment">// displaying the array before sorting</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="../../d5/d4c/group__sorting.html#ga29d28b140174dbdde7c9f5157758435f">heapSort</a>(arr, sz); <span class="comment">// calling heapsort to sort the array</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="../../d2/d52/heap__sort_8cpp.html#a9ed3e1510afdf3edd06cf2b68769a767">printArray</a>(arr, sz); <span class="comment">// display array after sorting</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; assert(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a>(arr, arr + sz));</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 1 Passed\n========================\n&quot;</span>;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; </div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 2\n&quot;</span>;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">double</span> arr2[] = {4.5, -3.6, 7.6, 0, 12.9};</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; sz = <span class="keyword">sizeof</span>(arr2) / <span class="keyword">sizeof</span>(arr2[0]);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="../../d2/d52/heap__sort_8cpp.html#a9ed3e1510afdf3edd06cf2b68769a767">printArray</a>(arr2, sz);</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="../../d5/d4c/group__sorting.html#ga29d28b140174dbdde7c9f5157758435f">heapSort</a>(arr2, sz);</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="../../d2/d52/heap__sort_8cpp.html#a9ed3e1510afdf3edd06cf2b68769a767">printArray</a>(arr2, sz);</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; assert(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a>(arr2, arr2 + sz));</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 2 passed\n&quot;</span>;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;}</div>
<p >Test cases to test the program </p>
<div class="fragment"><div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> {</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 1\n&quot;</span>;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keywordtype">int</span> arr[] = {-10, 78, -1, -6, 7, 4, 94, 5, 99, 0};</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">int</span> sz = <span class="keyword">sizeof</span>(arr) / <span class="keyword">sizeof</span>(arr[0]); <span class="comment">// sz - size of array</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <a class="code hl_function" href="../../d2/d52/heap__sort_8cpp.html#a9ed3e1510afdf3edd06cf2b68769a767">printArray</a>(arr, sz); <span class="comment">// displaying the array before sorting</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <a class="code hl_function" href="../../d5/d4c/group__sorting.html#ga29d28b140174dbdde7c9f5157758435f">heapSort</a>(arr, sz); <span class="comment">// calling heapsort to sort the array</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <a class="code hl_function" href="../../d2/d52/heap__sort_8cpp.html#a9ed3e1510afdf3edd06cf2b68769a767">printArray</a>(arr, sz); <span class="comment">// display array after sorting</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> assert(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a>(arr, arr + sz));</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 1 Passed\n========================\n&quot;</span>;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 2\n&quot;</span>;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordtype">double</span> arr2[] = {4.5, -3.6, 7.6, 0, 12.9};</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> sz = <span class="keyword">sizeof</span>(arr2) / <span class="keyword">sizeof</span>(arr2[0]);</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <a class="code hl_function" href="../../d2/d52/heap__sort_8cpp.html#a9ed3e1510afdf3edd06cf2b68769a767">printArray</a>(arr2, sz);</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <a class="code hl_function" href="../../d5/d4c/group__sorting.html#ga29d28b140174dbdde7c9f5157758435f">heapSort</a>(arr2, sz);</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <a class="code hl_function" href="../../d2/d52/heap__sort_8cpp.html#a9ed3e1510afdf3edd06cf2b68769a767">printArray</a>(arr2, sz);</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> assert(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a>(arr2, arr2 + sz));</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 2 passed\n&quot;</span>;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span>}</div>
<div class="ttc" id="agroup__sorting_html_ga29d28b140174dbdde7c9f5157758435f"><div class="ttname"><a href="../../d5/d4c/group__sorting.html#ga29d28b140174dbdde7c9f5157758435f">heapSort</a></div><div class="ttdeci">void heapSort(T *arr, int n)</div><div class="ttdef"><b>Definition:</b> heap_sort.cpp:84</div></div>
<div class="ttc" id="aheap__sort_8cpp_html_a9ed3e1510afdf3edd06cf2b68769a767"><div class="ttname"><a href="../../d2/d52/heap__sort_8cpp.html#a9ed3e1510afdf3edd06cf2b68769a767">printArray</a></div><div class="ttdeci">void printArray(T *arr, int sz)</div><div class="ttdef"><b>Definition:</b> heap_sort.cpp:37</div></div>
<div class="ttc" id="ais_sorted_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a></div><div class="ttdeci">T is_sorted(T... args)</div></div>
@@ -257,7 +255,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_bb1b521853a9c46347182a9d10420771.html">sorting</a></li><li class="navelem"><a class="el" href="../../d2/d52/heap__sort_8cpp.html">heap_sort.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -1,6 +1,5 @@
var heap__sort_8cpp =
[
[ "heapify", "d5/d4c/group__sorting.html#gabd9a93f241c5c86f2ec0abf8b66b4145", null ],
[ "heapSort", "d5/d4c/group__sorting.html#ga29d28b140174dbdde7c9f5157758435f", null ],
[ "main", "d2/d52/heap__sort_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4", null ],
[ "printArray", "d2/d52/heap__sort_8cpp.html#a9ed3e1510afdf3edd06cf2b68769a767", null ],

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: test Pages: 1 -->
<svg width="153pt" height="104pt"

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: main Pages: 1 -->
<svg width="227pt" height="104pt"

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: machine_learning/neural_network.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d2/d58/neural__network_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -94,12 +94,11 @@ $(document).ready(function(){initNavTree('d2/d58/neural__network_8cpp.html','../
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">neural_network.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">neural_network.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Implementation of <a href="https://en.wikipedia.org/wiki/Multilayer_perceptron">Multilayer Perceptron</a>.
<p>Implementation of <a href="https://en.wikipedia.org/wiki/Multilayer_perceptron" target="_blank">Multilayer Perceptron</a>.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;cassert&gt;</code><br />
@@ -119,32 +118,32 @@ Include dependency graph for neural_network.cpp:</div>
</div>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d93/classmachine__learning_1_1neural__network_1_1layers_1_1_dense_layer.html">machine_learning::neural_network::layers::DenseLayer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html">machine_learning::neural_network::NeuralNetwork</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:d8/d77/namespacemachine__learning"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d77/namespacemachine__learning.html">machine_learning</a></td></tr>
<tr class="memdesc:d8/d77/namespacemachine__learning"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a href="https://en.wikipedia.org/wiki/A*_search_algorithm">A* search algorithm</a> <br /></td></tr>
<tr class="memitem:d8/d77/namespacemachine__learning"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d77/namespacemachine__learning.html">machine_learning</a></td></tr>
<tr class="memdesc:d8/d77/namespacemachine__learning"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a href="https://en.wikipedia.org/wiki/A*_search_algorithm" target="_blank">A* search algorithm</a> <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d0/d2e/namespaceneural__network"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d2e/namespaceneural__network.html">neural_network</a></td></tr>
<tr class="memitem:d0/d2e/namespaceneural__network"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d2e/namespaceneural__network.html">neural_network</a></td></tr>
<tr class="memdesc:d0/d2e/namespaceneural__network"><td class="mdescLeft">&#160;</td><td class="mdescRight">Neural Network or Multilayer Perceptron. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d5/d39/namespaceactivations"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d39/namespaceactivations.html">activations</a></td></tr>
<tr class="memitem:d5/d39/namespaceactivations"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d39/namespaceactivations.html">activations</a></td></tr>
<tr class="memdesc:d5/d39/namespaceactivations"><td class="mdescLeft">&#160;</td><td class="mdescRight">Various activation functions used in Neural network. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d3/d17/namespaceutil__functions"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d17/namespaceutil__functions.html">util_functions</a></td></tr>
<tr class="memitem:d3/d17/namespaceutil__functions"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d17/namespaceutil__functions.html">util_functions</a></td></tr>
<tr class="memdesc:d3/d17/namespaceutil__functions"><td class="mdescLeft">&#160;</td><td class="mdescRight">Various utility functions used in Neural network. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d5/d2c/namespacelayers"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d2c/namespacelayers.html">layers</a></td></tr>
<tr class="memitem:d5/d2c/namespacelayers"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d2c/namespacelayers.html">layers</a></td></tr>
<tr class="memdesc:d5/d2c/namespacelayers"><td class="mdescLeft">&#160;</td><td class="mdescRight">This namespace contains layers used in MLP. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a23aa9d32bcbcd65cfc85f0a41e2afadc"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d58/neural__network_8cpp.html#a23aa9d32bcbcd65cfc85f0a41e2afadc">machine_learning::neural_network::activations::sigmoid</a> (const double &amp;x)</td></tr>
<tr class="separator:a23aa9d32bcbcd65cfc85f0a41e2afadc"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -169,14 +168,14 @@ Functions</h2></td></tr>
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implementation of <a href="https://en.wikipedia.org/wiki/Multilayer_perceptron">Multilayer Perceptron</a>. </p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/imdeep2905">Deep Raval</a></dd></dl>
<div class="textblock"><p >Implementation of <a href="https://en.wikipedia.org/wiki/Multilayer_perceptron" target="_blank">Multilayer Perceptron</a>. </p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/imdeep2905" target="_blank">Deep Raval</a></dd></dl>
<p>A multilayer perceptron (MLP) is a class of feedforward artificial neural network (ANN). The term MLP is used ambiguously, sometimes loosely to any feedforward ANN, sometimes strictly to refer to networks composed of multiple layers of perceptrons (with threshold activation). Multilayer perceptrons are sometimes colloquially referred to as "vanilla" neural networks, especially when they have a single hidden layer.</p>
<p>An MLP consists of at least three layers of nodes: an input layer, a hidden layer and an output layer. Except for the input nodes, each node is a neuron that uses a nonlinear activation function. MLP utilizes a supervised learning technique called backpropagation for training. Its multiple layers and non-linear activation distinguish MLP from a linear perceptron. It can distinguish data that is not linearly separable.</p>
<p>See <a href="https://en.wikipedia.org/wiki/Backpropagation">Backpropagation</a> for training algorithm.</p>
<p >An MLP consists of at least three layers of nodes: an input layer, a hidden layer and an output layer. Except for the input nodes, each node is a neuron that uses a nonlinear activation function. MLP utilizes a supervised learning technique called backpropagation for training. Its multiple layers and non-linear activation distinguish MLP from a linear perceptron. It can distinguish data that is not linearly separable.</p>
<p >See <a href="https://en.wikipedia.org/wiki/Backpropagation" target="_blank">Backpropagation</a> for training algorithm.</p>
<dl class="section note"><dt>Note</dt><dd>This implementation uses mini-batch gradient descent as optimizer and MSE as loss function. Bias is also not included. </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="aa69e95a34054d7989bf446f96b2ffaf9"></a>
<a id="aa69e95a34054d7989bf446f96b2ffaf9" name="aa69e95a34054d7989bf446f96b2ffaf9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa69e95a34054d7989bf446f96b2ffaf9">&#9670;&nbsp;</a></span>drelu()</h2>
<div class="memitem">
@@ -191,14 +190,14 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<p>Derivative of relu function </p><dl class="params"><dt>Parameters</dt><dd>
<p >Derivative of relu function </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">X</td><td>Value </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>derivative of relu(x) </dd></dl>
<div class="fragment"><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;{ <span class="keywordflow">return</span> x &gt;= 0.0 ? 1.0 : 0.0; }</div>
<div class="fragment"><div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span>{ <span class="keywordflow">return</span> x &gt;= 0.0 ? 1.0 : 0.0; }</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -208,7 +207,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a76eb66212d577f948a457b6e29d87c46"></a>
<a id="a76eb66212d577f948a457b6e29d87c46" name="a76eb66212d577f948a457b6e29d87c46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76eb66212d577f948a457b6e29d87c46">&#9670;&nbsp;</a></span>dsigmoid()</h2>
<div class="memitem">
@@ -223,14 +222,14 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Derivative of sigmoid function </p><dl class="params"><dt>Parameters</dt><dd>
<p >Derivative of sigmoid function </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">X</td><td>Value </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns derivative of sigmoid(x) </dd></dl>
<div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;{ <span class="keywordflow">return</span> x * (1 - x); }</div>
<div class="fragment"><div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span>{ <span class="keywordflow">return</span> x * (1 - x); }</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -240,7 +239,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a2a5e874b9774aa5362dbcf288828b95c"></a>
<a id="a2a5e874b9774aa5362dbcf288828b95c" name="a2a5e874b9774aa5362dbcf288828b95c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a5e874b9774aa5362dbcf288828b95c">&#9670;&nbsp;</a></span>dtanh()</h2>
<div class="memitem">
@@ -255,14 +254,14 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Derivative of Sigmoid function </p><dl class="params"><dt>Parameters</dt><dd>
<p >Derivative of Sigmoid function </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">X</td><td>Value </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns derivative of tanh(x) </dd></dl>
<div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{ <span class="keywordflow">return</span> 1 - x * x; }</div>
<div class="fragment"><div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span>{ <span class="keywordflow">return</span> 1 - x * x; }</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -272,7 +271,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a32c00da08f2cf641dd336270f6e3c407"></a>
<a id="a32c00da08f2cf641dd336270f6e3c407" name="a32c00da08f2cf641dd336270f6e3c407"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32c00da08f2cf641dd336270f6e3c407">&#9670;&nbsp;</a></span>identity_function()</h2>
<div class="memitem">
@@ -287,14 +286,14 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Identity function </p><dl class="params"><dt>Parameters</dt><dd>
<p >Identity function </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">X</td><td>Value </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns x </dd></dl>
<div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;{ <span class="keywordflow">return</span> x; }</div>
<div class="fragment"><div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span>{ <span class="keywordflow">return</span> x; }</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -304,7 +303,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
@@ -322,11 +321,11 @@ Here is the call graph for this function:</div>
<p>Main function. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
<div class="fragment"><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; {</div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="comment">// Testing</span></div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <a class="code" href="../../d2/d58/neural__network_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>();</div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00833" name="l00833"></a><span class="lineno"> 833</span> {</div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno"> 834</span> <span class="comment">// Testing</span></div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span> <a class="code hl_function" href="../../d2/d58/neural__network_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>();</div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno"> 836</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno"> 837</span>}</div>
<div class="ttc" id="aneural__network_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d2/d58/neural__network_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdef"><b>Definition:</b> neural_network.cpp:805</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -337,7 +336,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="af8f264600754602b6a9ea19cc690e50e"></a>
<a id="af8f264600754602b6a9ea19cc690e50e" name="af8f264600754602b6a9ea19cc690e50e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af8f264600754602b6a9ea19cc690e50e">&#9670;&nbsp;</a></span>relu()</h2>
<div class="memitem">
@@ -352,14 +351,14 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Relu function </p><dl class="params"><dt>Parameters</dt><dd>
<p >Relu function </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">X</td><td>Value </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>relu(x) </dd></dl>
<div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;{ <span class="keywordflow">return</span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a>(0.0, x); }</div>
<div class="fragment"><div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span>{ <span class="keywordflow">return</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a>(0.0, x); }</div>
<div class="ttc" id="amax_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a></div><div class="ttdeci">T max(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -370,7 +369,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a23aa9d32bcbcd65cfc85f0a41e2afadc"></a>
<a id="a23aa9d32bcbcd65cfc85f0a41e2afadc" name="a23aa9d32bcbcd65cfc85f0a41e2afadc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a23aa9d32bcbcd65cfc85f0a41e2afadc">&#9670;&nbsp;</a></span>sigmoid()</h2>
<div class="memitem">
@@ -385,14 +384,14 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Sigmoid function </p><dl class="params"><dt>Parameters</dt><dd>
<p >Sigmoid function </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">X</td><td>Value </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns sigmoid(x) </dd></dl>
<div class="fragment"><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;{ <span class="keywordflow">return</span> 1.0 / (1.0 + <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/exp.html">std::exp</a>(-x)); }</div>
<div class="fragment"><div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span>{ <span class="keywordflow">return</span> 1.0 / (1.0 + <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/exp.html">std::exp</a>(-x)); }</div>
<div class="ttc" id="aexp_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/exp.html">std::exp</a></div><div class="ttdeci">T exp(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -403,7 +402,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a45d3e30406712ada3d9713ece3c1b153"></a>
<a id="a45d3e30406712ada3d9713ece3c1b153" name="a45d3e30406712ada3d9713ece3c1b153"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a45d3e30406712ada3d9713ece3c1b153">&#9670;&nbsp;</a></span>square()</h2>
<div class="memitem">
@@ -418,14 +417,14 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Square function </p><dl class="params"><dt>Parameters</dt><dd>
<p >Square function </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">X</td><td>Value </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns x * x </dd></dl>
<div class="fragment"><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;{ <span class="keywordflow">return</span> x * x; }</div>
<div class="fragment"><div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span>{ <span class="keywordflow">return</span> x * x; }</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -435,7 +434,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a371aa7dd5d5add0143d1756bb0a1b32f"></a>
<a id="a371aa7dd5d5add0143d1756bb0a1b32f" name="a371aa7dd5d5add0143d1756bb0a1b32f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a371aa7dd5d5add0143d1756bb0a1b32f">&#9670;&nbsp;</a></span>tanh()</h2>
<div class="memitem">
@@ -450,14 +449,14 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Tanh function </p><dl class="params"><dt>Parameters</dt><dd>
<p >Tanh function </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">X</td><td>Value </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns tanh(x) </dd></dl>
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{ <span class="keywordflow">return</span> 2 / (1 + <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/exp.html">std::exp</a>(-2 * x)) - 1; }</div>
<div class="fragment"><div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span>{ <span class="keywordflow">return</span> 2 / (1 + <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/exp.html">std::exp</a>(-2 * x)) - 1; }</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -467,7 +466,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="aa8dca7b867074164d5f45b0f3851269d"></a>
<a id="aa8dca7b867074164d5f45b0f3851269d" name="aa8dca7b867074164d5f45b0f3851269d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f3851269d">&#9670;&nbsp;</a></span>test()</h2>
<div class="memitem">
@@ -489,35 +488,35 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Function to test neural network </p><dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
<div class="fragment"><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; {</div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="comment">// Creating network with 3 layers for &quot;iris.csv&quot;</span></div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <a class="code" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html">machine_learning::neural_network::NeuralNetwork</a> myNN =</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <a class="code" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html">machine_learning::neural_network::NeuralNetwork</a>({</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; {4, <span class="stringliteral">&quot;none&quot;</span>}, <span class="comment">// First layer with 3 neurons and &quot;none&quot; as activation</span></div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; {6,</div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="stringliteral">&quot;relu&quot;</span>}, <span class="comment">// Second layer with 6 neurons and &quot;relu&quot; as activation</span></div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; {3, <span class="stringliteral">&quot;sigmoid&quot;</span>} <span class="comment">// Third layer with 3 neurons and &quot;sigmoid&quot; as</span></div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="comment">// activation</span></div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; });</div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="comment">// Printing summary of model</span></div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; myNN.<a class="code" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a61d30113d13304c664057118b92a5931">summary</a>();</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="comment">// Training Model</span></div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; myNN.<a class="code" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a5172a6791b9bd24f4232bab8d6b81fff">fit_from_csv</a>(<span class="stringliteral">&quot;iris.csv&quot;</span>, <span class="keyword">true</span>, 100, 0.3, <span class="keyword">false</span>, 2, 32, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="comment">// Testing predictions of model</span></div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; assert(<a class="code" href="../../d8/d77/namespacemachine__learning.html#a1b42d24ad7bedbfa8e5b59fe96987a44">machine_learning::argmax</a>(</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; myNN.<a class="code" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#ac130322a5abb1ff763b7c1a55405a35e">single_predict</a>({{5, 3.4, 1.6, 0.4}})) == 0);</div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; assert(<a class="code" href="../../d8/d77/namespacemachine__learning.html#a1b42d24ad7bedbfa8e5b59fe96987a44">machine_learning::argmax</a>(</div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; myNN.<a class="code" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#ac130322a5abb1ff763b7c1a55405a35e">single_predict</a>({{6.4, 2.9, 4.3, 1.3}})) == 1);</div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; assert(<a class="code" href="../../d8/d77/namespacemachine__learning.html#a1b42d24ad7bedbfa8e5b59fe96987a44">machine_learning::argmax</a>(</div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; myNN.<a class="code" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#ac130322a5abb1ff763b7c1a55405a35e">single_predict</a>({{6.2, 3.4, 5.4, 2.3}})) == 2);</div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;}</div>
<p >Function to test neural network </p><dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
<div class="fragment"><div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> {</div>
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> <span class="comment">// Creating network with 3 layers for &quot;iris.csv&quot;</span></div>
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span> <a class="code hl_class" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html">machine_learning::neural_network::NeuralNetwork</a> myNN =</div>
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span> <a class="code hl_class" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html">machine_learning::neural_network::NeuralNetwork</a>({</div>
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"> 809</span> {4, <span class="stringliteral">&quot;none&quot;</span>}, <span class="comment">// First layer with 3 neurons and &quot;none&quot; as activation</span></div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno"> 810</span> {6,</div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"> 811</span> <span class="stringliteral">&quot;relu&quot;</span>}, <span class="comment">// Second layer with 6 neurons and &quot;relu&quot; as activation</span></div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"> 812</span> {3, <span class="stringliteral">&quot;sigmoid&quot;</span>} <span class="comment">// Third layer with 3 neurons and &quot;sigmoid&quot; as</span></div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"> 813</span> <span class="comment">// activation</span></div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"> 814</span> });</div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"> 815</span> <span class="comment">// Printing summary of model</span></div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span> myNN.<a class="code hl_function" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a61d30113d13304c664057118b92a5931">summary</a>();</div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"> 817</span> <span class="comment">// Training Model</span></div>
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"> 818</span> myNN.<a class="code hl_function" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a5172a6791b9bd24f4232bab8d6b81fff">fit_from_csv</a>(<span class="stringliteral">&quot;iris.csv&quot;</span>, <span class="keyword">true</span>, 100, 0.3, <span class="keyword">false</span>, 2, 32, <span class="keyword">true</span>);</div>
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno"> 819</span> <span class="comment">// Testing predictions of model</span></div>
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"> 820</span> assert(<a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a50480fccfb39de20ca47f1bf51ecb6ec">machine_learning::argmax</a>(</div>
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"> 821</span> myNN.<a class="code hl_function" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a3b9eac1824d365dce715fb17c33cb96f">single_predict</a>({{5, 3.4, 1.6, 0.4}})) == 0);</div>
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno"> 822</span> assert(<a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a50480fccfb39de20ca47f1bf51ecb6ec">machine_learning::argmax</a>(</div>
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno"> 823</span> myNN.<a class="code hl_function" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a3b9eac1824d365dce715fb17c33cb96f">single_predict</a>({{6.4, 2.9, 4.3, 1.3}})) == 1);</div>
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"> 824</span> assert(<a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a50480fccfb39de20ca47f1bf51ecb6ec">machine_learning::argmax</a>(</div>
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno"> 825</span> myNN.<a class="code hl_function" href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a3b9eac1824d365dce715fb17c33cb96f">single_predict</a>({{6.2, 3.4, 5.4, 2.3}})) == 2);</div>
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"> 826</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno"> 827</span>}</div>
<div class="ttc" id="aclassmachine__learning_1_1neural__network_1_1_neural_network_html"><div class="ttname"><a href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html">machine_learning::neural_network::NeuralNetwork</a></div><div class="ttdef"><b>Definition:</b> neural_network.cpp:247</div></div>
<div class="ttc" id="aclassmachine__learning_1_1neural__network_1_1_neural_network_html_a3b9eac1824d365dce715fb17c33cb96f"><div class="ttname"><a href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a3b9eac1824d365dce715fb17c33cb96f">machine_learning::neural_network::NeuralNetwork::single_predict</a></div><div class="ttdeci">std::vector&lt; std::valarray&lt; double &gt; &gt; single_predict(const std::vector&lt; std::valarray&lt; double &gt; &gt; &amp;X)</div><div class="ttdef"><b>Definition:</b> neural_network.cpp:451</div></div>
<div class="ttc" id="aclassmachine__learning_1_1neural__network_1_1_neural_network_html_a5172a6791b9bd24f4232bab8d6b81fff"><div class="ttname"><a href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a5172a6791b9bd24f4232bab8d6b81fff">machine_learning::neural_network::NeuralNetwork::fit_from_csv</a></div><div class="ttdeci">void fit_from_csv(const std::string &amp;file_name, const bool &amp;last_label, const int &amp;epochs, const double &amp;learning_rate, const bool &amp;normalize, const int &amp;slip_lines=1, const size_t &amp;batch_size=32, const bool &amp;shuffle=true)</div><div class="ttdef"><b>Definition:</b> neural_network.cpp:587</div></div>
<div class="ttc" id="aclassmachine__learning_1_1neural__network_1_1_neural_network_html_a61d30113d13304c664057118b92a5931"><div class="ttname"><a href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a61d30113d13304c664057118b92a5931">machine_learning::neural_network::NeuralNetwork::summary</a></div><div class="ttdeci">void summary()</div><div class="ttdef"><b>Definition:</b> neural_network.cpp:773</div></div>
<div class="ttc" id="aclassmachine__learning_1_1neural__network_1_1_neural_network_html_ac130322a5abb1ff763b7c1a55405a35e"><div class="ttname"><a href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#ac130322a5abb1ff763b7c1a55405a35e">machine_learning::neural_network::NeuralNetwork::single_predict</a></div><div class="ttdeci">std::vector&lt; std::valarray&lt; double &gt; &gt; single_predict(const std::vector&lt; std::valarray&lt; double &gt;&gt; &amp;X)</div><div class="ttdef"><b>Definition:</b> neural_network.cpp:451</div></div>
<div class="ttc" id="anamespacemachine__learning_html_a1b42d24ad7bedbfa8e5b59fe96987a44"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a1b42d24ad7bedbfa8e5b59fe96987a44">machine_learning::argmax</a></div><div class="ttdeci">size_t argmax(const std::vector&lt; std::valarray&lt; T &gt;&gt; &amp;A)</div><div class="ttdef"><b>Definition:</b> vector_ops.hpp:307</div></div>
<div class="ttc" id="anamespacemachine__learning_html_a50480fccfb39de20ca47f1bf51ecb6ec"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a50480fccfb39de20ca47f1bf51ecb6ec">machine_learning::argmax</a></div><div class="ttdeci">size_t argmax(const std::vector&lt; std::valarray&lt; T &gt; &gt; &amp;A)</div><div class="ttdef"><b>Definition:</b> vector_ops.hpp:307</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -533,7 +532,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_3343723ae086de42ee4ca9774da3a13f.html">machine_learning</a></li><li class="navelem"><a class="el" href="../../d2/d58/neural__network_8cpp.html">neural_network.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -1,7 +1,7 @@
var neural__network_8cpp =
[
[ "DenseLayer", "dc/d93/classmachine__learning_1_1neural__network_1_1layers_1_1_dense_layer.html", "dc/d93/classmachine__learning_1_1neural__network_1_1layers_1_1_dense_layer" ],
[ "NeuralNetwork", "d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html", "d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network" ],
[ "machine_learning::neural_network::layers::DenseLayer", "dc/d93/classmachine__learning_1_1neural__network_1_1layers_1_1_dense_layer.html", "dc/d93/classmachine__learning_1_1neural__network_1_1layers_1_1_dense_layer" ],
[ "machine_learning::neural_network::NeuralNetwork", "d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html", "d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network" ],
[ "drelu", "d2/d58/neural__network_8cpp.html#aa69e95a34054d7989bf446f96b2ffaf9", null ],
[ "dsigmoid", "d2/d58/neural__network_8cpp.html#a76eb66212d577f948a457b6e29d87c46", null ],
[ "dtanh", "d2/d58/neural__network_8cpp.html#a2a5e874b9774aa5362dbcf288828b95c", null ],

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: machine_learning::neural_network::activations::sigmoid Pages: 1 -->
<svg width="225pt" height="68pt"

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: machine_learning::neural_network::activations::dtanh Pages: 1 -->
<svg width="148pt" height="57pt"

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: machine_learning::neural_network::util_functions::identity_function Pages: 1 -->
<svg width="137pt" height="68pt"

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: machine_learning::neural_network::activations::tanh Pages: 1 -->
<svg width="231pt" height="39pt"

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: machine_learning::neural_network::util_functions::square Pages: 1 -->
<svg width="137pt" height="68pt"

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: machine_learning::neural_network::activations::dsigmoid Pages: 1 -->
<svg width="137pt" height="68pt"

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: machine_learning::neural_network::activations::drelu Pages: 1 -->
<svg width="146pt" height="57pt"

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1,31 +1,31 @@
<map id="test" name="test">
<area shape="rect" id="node1" title=" " alt="" coords="5,161,49,188"/>
<area shape="rect" id="node2" href="$d8/d77/namespacemachine__learning.html#a1b42d24ad7bedbfa8e5b59fe96987a44" title=" " alt="" coords="809,81,988,108"/>
<area shape="rect" id="node2" href="$d8/d77/namespacemachine__learning.html#a50480fccfb39de20ca47f1bf51ecb6ec" title=" " alt="" coords="809,81,988,108"/>
<area shape="rect" id="node10" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a5172a6791b9bd24f4232bab8d6b81fff" title=" " alt="" coords="97,637,269,693"/>
<area shape="rect" id="node45" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#ac130322a5abb1ff763b7c1a55405a35e" title=" " alt="" coords="326,233,498,289"/>
<area shape="rect" id="node45" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a3b9eac1824d365dce715fb17c33cb96f" title=" " alt="" coords="326,233,498,289"/>
<area shape="rect" id="node46" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a61d30113d13304c664057118b92a5931" title=" " alt="" coords="813,183,985,239"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/iterator/begin.html#" title=" " alt="" coords="1082,56,1162,83"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/iterator/distance.html#" title=" " alt="" coords="1073,107,1171,133"/>
<area shape="rect" id="node5" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/iterator/end.html#" title=" " alt="" coords="1087,157,1157,184"/>
<area shape="rect" id="node6" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/manip/endl.html#" title=" " alt="" coords="1086,489,1158,516"/>
<area shape="rect" id="node7" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/utility/program/exit.html#" title=" " alt="" coords="1088,767,1156,793"/>
<area shape="rect" id="node8" href="$d8/d77/namespacemachine__learning.html#abe6b58ec16abe0f6f8ac195e04aa8abd" title=" " alt="" coords="1045,423,1199,465"/>
<area shape="rect" id="node8" href="$d8/d77/namespacemachine__learning.html#aa4bbf61e65f8cd297255fa94b983d078" title=" " alt="" coords="1045,423,1199,465"/>
<area shape="rect" id="node9" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/max_element.html#" title=" " alt="" coords="1059,5,1185,32"/>
<area shape="rect" id="node11" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a8f8eb4423c57a00b0ab46de226bc6509" title=" " alt="" coords="317,615,507,657"/>
<area shape="rect" id="node26" href="$d5/d91/namespacesorting.html#aedfb88e2d6fff1871f038221fe5870fe" title=" " alt="" coords="599,796,709,823"/>
<area shape="rect" id="node31" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a8d983ebb3225a9901b713a0f05b44aba" title=" " alt="" coords="568,1413,740,1469"/>
<area shape="rect" id="node12" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#acd397b51fcf8f690b03e406ada8c9d13" title=" " alt="" coords="555,248,753,304"/>
<area shape="rect" id="node13" href="$d8/d77/namespacemachine__learning.html#a8b3b06a63bd16b91237c85a295309774" title=" " alt="" coords="815,314,982,355"/>
<area shape="rect" id="node15" href="$d8/d77/namespacemachine__learning.html#a7491744dcfc8844338d55065d0cd0c79" title=" " alt="" coords="809,481,989,508"/>
<area shape="rect" id="node17" href="$d8/d77/namespacemachine__learning.html#a62a418f243cd52b49f59015dddff188e" title=" " alt="" coords="571,709,737,750"/>
<area shape="rect" id="node22" href="$d8/d77/namespacemachine__learning.html#a6ef38e5947aef609f908bfbfeaf11d75" title=" " alt="" coords="801,533,996,574"/>
<area shape="rect" id="node11" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a2be1b52bb9f57486f9a436f35c9089c0" title=" " alt="" coords="317,615,507,657"/>
<area shape="rect" id="node26" href="$d5/d91/namespacesorting.html#a7bfe11bd4703eacd1dab93f25ec639c5" title=" " alt="" coords="599,796,709,823"/>
<area shape="rect" id="node31" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a650c677fd6512665741ddd9b7983275d" title=" " alt="" coords="568,1413,740,1469"/>
<area shape="rect" id="node12" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a361a45f3c3d8347d79103bf182d0570b" title=" " alt="" coords="555,248,753,304"/>
<area shape="rect" id="node13" href="$d8/d77/namespacemachine__learning.html#ad0bdc88e5f1be47c46c0f0c8ebf754bb" title=" " alt="" coords="815,314,982,355"/>
<area shape="rect" id="node15" href="$d8/d77/namespacemachine__learning.html#a5342906d42b80fc6b6b3ad17bf00fcb9" title=" " alt="" coords="809,481,989,508"/>
<area shape="rect" id="node17" href="$d8/d77/namespacemachine__learning.html#af801bf30591ca6b2c38ff4fed0ded23f" title=" " alt="" coords="571,709,737,750"/>
<area shape="rect" id="node22" href="$d8/d77/namespacemachine__learning.html#acafa3e62b686aebdbad81c4f89913f43" title=" " alt="" coords="801,533,996,574"/>
<area shape="rect" id="node23" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/min.html#" title=" " alt="" coords="1087,1184,1157,1211"/>
<area shape="rect" id="node24" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/chrono/high_resolution_clock/now.html#" title=" " alt="" coords="561,970,747,1011"/>
<area shape="rect" id="node25" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/resize.html#" title=" " alt="" coords="591,1036,717,1063"/>
<area shape="rect" id="node27" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="1065,1235,1179,1261"/>
<area shape="rect" id="node28" href="$d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" title=" " alt="" coords="574,328,734,355"/>
<area shape="rect" id="node29" href="$d8/d77/namespacemachine__learning.html#ac7d9b358f1ef2ba2a1d475a5452ec41f" title=" " alt="" coords="802,431,995,457"/>
<area shape="rect" id="node30" href="$d8/d77/namespacemachine__learning.html#a4d136cbf20e3126ed9b934ab2d03f18b" title=" " alt="" coords="567,379,741,421"/>
<area shape="rect" id="node28" href="$d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" title=" " alt="" coords="574,328,734,355"/>
<area shape="rect" id="node29" href="$d8/d77/namespacemachine__learning.html#a89fde571b38f9483576594f66572958a" title=" " alt="" coords="802,431,995,457"/>
<area shape="rect" id="node30" href="$d8/d77/namespacemachine__learning.html#ac1bdaa2a724b4ce6a6bb371a5dbe2e7e" title=" " alt="" coords="567,379,741,421"/>
<area shape="rect" id="node14" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/emplace_back.html#" title=" " alt="" coords="810,263,987,289"/>
<area shape="rect" id="node16" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/push_back.html#" title=" " alt="" coords="1044,540,1200,567"/>
<area shape="rect" id="node18" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/chrono/system_clock/now.html#" title=" " alt="" coords="830,650,967,691"/>
@@ -37,12 +37,12 @@
<area shape="rect" id="node34" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ifstream/close.html#" title=" " alt="" coords="832,1828,965,1855"/>
<area shape="rect" id="node35" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ios/eof.html#" title=" " alt="" coords="839,1289,959,1316"/>
<area shape="rect" id="node36" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/basic_string/getline.html#" title=" " alt="" coords="855,1340,942,1367"/>
<area shape="rect" id="node37" href="$d8/d77/namespacemachine__learning.html#a725d4ccceda4f32c96348ba1d593cd3c" title=" " alt="" coords="815,1391,982,1433"/>
<area shape="rect" id="node37" href="$d8/d77/namespacemachine__learning.html#a496302e3371aa7b478cb7d5917904bdd" title=" " alt="" coords="815,1391,982,1433"/>
<area shape="rect" id="node38" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ifstream/is_open.html#" title=" " alt="" coords="824,1457,973,1484"/>
<area shape="rect" id="node39" href="$d8/d77/namespacemachine__learning.html#a05b9445c6ab65053b9bf9897a96af82d" title=" " alt="" coords="808,1122,989,1163"/>
<area shape="rect" id="node39" href="$d8/d77/namespacemachine__learning.html#ac332d152078e96311e43ac5e7183ea26" title=" " alt="" coords="808,1122,989,1163"/>
<area shape="rect" id="node41" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ifstream/open.html#" title=" " alt="" coords="833,1508,965,1535"/>
<area shape="rect" id="node42" href="$d8/d77/namespacemachine__learning.html#a4dd9a9df9f8f05327bcf7b58b0a86576" title=" " alt="" coords="803,1559,995,1585"/>
<area shape="rect" id="node43" href="$d8/d77/namespacemachine__learning.html#ad9d119e7520fa5c2d2428433f578c0bc" title=" " alt="" coords="820,1610,977,1651"/>
<area shape="rect" id="node42" href="$d8/d77/namespacemachine__learning.html#ae10178b082f0205c326550877d998e5d" title=" " alt="" coords="803,1559,995,1585"/>
<area shape="rect" id="node43" href="$d8/d77/namespacemachine__learning.html#a912cf68863063a38d6e63545be5eb093" title=" " alt="" coords="820,1610,977,1651"/>
<area shape="rect" id="node44" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/basic_string/stof.html#" title=" " alt="" coords="863,1676,935,1703"/>
<area shape="rect" id="node40" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/max.html#" title=" " alt="" coords="1086,1129,1158,1156"/>
</map>

View File

@@ -1 +1 @@
0fcda9df8d4be34e79204dd9c054858a
ef804c4531cdcd77cdd696ab6dbd49a6

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: test Pages: 1 -->
<!--zoomable 1395 -->
@@ -67,7 +67,7 @@ var sectionId = 'dynsection-10';
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a1b42d24ad7bedbfa8e5b59fe96987a44" target="_top" xlink:title=" ">
<g id="a_node2"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a50480fccfb39de20ca47f1bf51ecb6ec" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="603,-1310.5 603,-1329.5 737,-1329.5 737,-1310.5 603,-1310.5"/>
<text text-anchor="middle" x="670" y="-1317.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::argmax</text>
</a>
@@ -99,7 +99,7 @@ var sectionId = 'dynsection-10';
<!-- Node45 -->
<g id="node45" class="node">
<title>Node45</title>
<g id="a_node45"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#ac130322a5abb1ff763b7c1a55405a35e" target="_top" xlink:title=" ">
<g id="a_node45"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a3b9eac1824d365dce715fb17c33cb96f" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="240.5,-1174.5 240.5,-1215.5 369.5,-1215.5 369.5,-1174.5 240.5,-1174.5"/>
<text text-anchor="start" x="248.5" y="-1203.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="start" x="248.5" y="-1192.5" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork</text>
@@ -208,7 +208,7 @@ var sectionId = 'dynsection-10';
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><a xlink:href="../../d8/d77/namespacemachine__learning.html#abe6b58ec16abe0f6f8ac195e04aa8abd" target="_top" xlink:title=" ">
<g id="a_node8"><a xlink:href="../../d8/d77/namespacemachine__learning.html#aa4bbf61e65f8cd297255fa94b983d078" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="780,-1043 780,-1073 895,-1073 895,-1043 780,-1043"/>
<text text-anchor="start" x="788" y="-1061" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::get</text>
<text text-anchor="middle" x="837.5" y="-1050" font-family="Helvetica,sans-Serif" font-size="10.00">_shape</text>
@@ -239,7 +239,7 @@ var sectionId = 'dynsection-10';
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a8f8eb4423c57a00b0ab46de226bc6509" target="_top" xlink:title=" ">
<g id="a_node11"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a2be1b52bb9f57486f9a436f35c9089c0" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="234,-899 234,-929 376,-929 376,-899 234,-899"/>
<text text-anchor="start" x="242" y="-917" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="middle" x="305" y="-906" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork::fit</text>
@@ -255,7 +255,7 @@ var sectionId = 'dynsection-10';
<!-- Node26 -->
<g id="node26" class="node">
<title>Node26</title>
<g id="a_node26"><a xlink:href="../../d5/d91/namespacesorting.html#aedfb88e2d6fff1871f038221fe5870fe" target="_top" xlink:title=" ">
<g id="a_node26"><a xlink:href="../../d5/d91/namespacesorting.html#a7bfe11bd4703eacd1dab93f25ec639c5" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="445.5,-774.5 445.5,-793.5 527.5,-793.5 527.5,-774.5 445.5,-774.5"/>
<text text-anchor="middle" x="486.5" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">sorting::shuffle</text>
</a>
@@ -270,7 +270,7 @@ var sectionId = 'dynsection-10';
<!-- Node31 -->
<g id="node31" class="node">
<title>Node31</title>
<g id="a_node31"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a8d983ebb3225a9901b713a0f05b44aba" target="_top" xlink:title=" ">
<g id="a_node31"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a650c677fd6512665741ddd9b7983275d" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="422,-289.5 422,-330.5 551,-330.5 551,-289.5 422,-289.5"/>
<text text-anchor="start" x="430" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="start" x="430" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork</text>
@@ -311,7 +311,7 @@ var sectionId = 'dynsection-10';
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#acd397b51fcf8f690b03e406ada8c9d13" target="_top" xlink:title=" ">
<g id="a_node12"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a361a45f3c3d8347d79103bf182d0570b" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="412,-1163.5 412,-1204.5 561,-1204.5 561,-1163.5 412,-1163.5"/>
<text text-anchor="start" x="420" y="-1192.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="start" x="420" y="-1181.5" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork</text>
@@ -328,7 +328,7 @@ var sectionId = 'dynsection-10';
<!-- Node13 -->
<g id="node13" class="node">
<title>Node13</title>
<g id="a_node13"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a8b3b06a63bd16b91237c85a295309774" target="_top" xlink:title=" ">
<g id="a_node13"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ad0bdc88e5f1be47c46c0f0c8ebf754bb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="607.5,-1125 607.5,-1155 732.5,-1155 732.5,-1125 607.5,-1125"/>
<text text-anchor="start" x="615.5" y="-1143" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::apply</text>
<text text-anchor="middle" x="670" y="-1132" font-family="Helvetica,sans-Serif" font-size="10.00">_function</text>
@@ -344,7 +344,7 @@ var sectionId = 'dynsection-10';
<!-- Node15 -->
<g id="node15" class="node">
<title>Node15</title>
<g id="a_node15"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a7491744dcfc8844338d55065d0cd0c79" target="_top" xlink:title=" ">
<g id="a_node15"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5342906d42b80fc6b6b3ad17bf00fcb9" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="602.5,-1010.5 602.5,-1029.5 737.5,-1029.5 737.5,-1010.5 602.5,-1010.5"/>
<text text-anchor="middle" x="670" y="-1017.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::multiply</text>
</a>
@@ -359,7 +359,7 @@ var sectionId = 'dynsection-10';
<!-- Node17 -->
<g id="node17" class="node">
<title>Node17</title>
<g id="a_node17"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a62a418f243cd52b49f59015dddff188e" target="_top" xlink:title=" ">
<g id="a_node17"><a xlink:href="../../d8/d77/namespacemachine__learning.html#af801bf30591ca6b2c38ff4fed0ded23f" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="424,-829 424,-859 549,-859 549,-829 424,-829"/>
<text text-anchor="start" x="432" y="-847" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::equal</text>
<text text-anchor="middle" x="486.5" y="-836" font-family="Helvetica,sans-Serif" font-size="10.00">_shuffle</text>
@@ -375,7 +375,7 @@ var sectionId = 'dynsection-10';
<!-- Node22 -->
<g id="node22" class="node">
<title>Node22</title>
<g id="a_node22"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a6ef38e5947aef609f908bfbfeaf11d75" target="_top" xlink:title=" ">
<g id="a_node22"><a xlink:href="../../d8/d77/namespacemachine__learning.html#acafa3e62b686aebdbad81c4f89913f43" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="597,-961 597,-991 743,-991 743,-961 597,-961"/>
<text text-anchor="start" x="605" y="-979" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::hadamard</text>
<text text-anchor="middle" x="670" y="-968" font-family="Helvetica,sans-Serif" font-size="10.00">_product</text>
@@ -458,7 +458,7 @@ var sectionId = 'dynsection-10';
<!-- Node28 -->
<g id="node28" class="node">
<title>Node28</title>
<g id="a_node28"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" target="_top" xlink:title=" ">
<g id="a_node28"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="426.5,-1125.5 426.5,-1144.5 546.5,-1144.5 546.5,-1125.5 426.5,-1125.5"/>
<text text-anchor="middle" x="486.5" y="-1132.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::sum</text>
</a>
@@ -473,7 +473,7 @@ var sectionId = 'dynsection-10';
<!-- Node29 -->
<g id="node29" class="node">
<title>Node29</title>
<g id="a_node29"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ac7d9b358f1ef2ba2a1d475a5452ec41f" target="_top" xlink:title=" ">
<g id="a_node29"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a89fde571b38f9483576594f66572958a" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="597.5,-1048.5 597.5,-1067.5 742.5,-1067.5 742.5,-1048.5 597.5,-1048.5"/>
<text text-anchor="middle" x="670" y="-1055.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::transpose</text>
</a>
@@ -488,7 +488,7 @@ var sectionId = 'dynsection-10';
<!-- Node30 -->
<g id="node30" class="node">
<title>Node30</title>
<g id="a_node30"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a4d136cbf20e3126ed9b934ab2d03f18b" target="_top" xlink:title=" ">
<g id="a_node30"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ac1bdaa2a724b4ce6a6bb371a5dbe2e7e" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="421,-1076 421,-1106 552,-1106 552,-1076 421,-1076"/>
<text text-anchor="start" x="429" y="-1094" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::zeroes</text>
<text text-anchor="middle" x="486.5" y="-1083" font-family="Helvetica,sans-Serif" font-size="10.00">_initialization</text>
@@ -778,7 +778,7 @@ var sectionId = 'dynsection-10';
<!-- Node37 -->
<g id="node37" class="node">
<title>Node37</title>
<g id="a_node37"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a725d4ccceda4f32c96348ba1d593cd3c" target="_top" xlink:title=" ">
<g id="a_node37"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a496302e3371aa7b478cb7d5917904bdd" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="607.5,-317 607.5,-347 732.5,-347 732.5,-317 607.5,-317"/>
<text text-anchor="start" x="615.5" y="-335" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::insert</text>
<text text-anchor="middle" x="670" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">_element</text>
@@ -809,7 +809,7 @@ var sectionId = 'dynsection-10';
<!-- Node39 -->
<g id="node39" class="node">
<title>Node39</title>
<g id="a_node39"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a05b9445c6ab65053b9bf9897a96af82d" target="_top" xlink:title=" ">
<g id="a_node39"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ac332d152078e96311e43ac5e7183ea26" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="602,-519 602,-549 738,-549 738,-519 602,-519"/>
<text text-anchor="start" x="610" y="-537" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::minmax</text>
<text text-anchor="middle" x="670" y="-526" font-family="Helvetica,sans-Serif" font-size="10.00">_scaler</text>
@@ -840,7 +840,7 @@ var sectionId = 'dynsection-10';
<!-- Node42 -->
<g id="node42" class="node">
<title>Node42</title>
<g id="a_node42"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a4dd9a9df9f8f05327bcf7b58b0a86576" target="_top" xlink:title=" ">
<g id="a_node42"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ae10178b082f0205c326550877d998e5d" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="598,-202.5 598,-221.5 742,-221.5 742,-202.5 598,-202.5"/>
<text text-anchor="middle" x="670" y="-209.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::pop_back</text>
</a>
@@ -855,7 +855,7 @@ var sectionId = 'dynsection-10';
<!-- Node43 -->
<g id="node43" class="node">
<title>Node43</title>
<g id="a_node43"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ad9d119e7520fa5c2d2428433f578c0bc" target="_top" xlink:title=" ">
<g id="a_node43"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a912cf68863063a38d6e63545be5eb093" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="611,-153 611,-183 729,-183 729,-153 611,-153"/>
<text text-anchor="start" x="619" y="-171" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::pop</text>
<text text-anchor="middle" x="670" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">_front</text>

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: test Pages: 1 -->
<svg width="904pt" height="1395pt"
@@ -21,7 +21,7 @@
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a1b42d24ad7bedbfa8e5b59fe96987a44" target="_top" xlink:title=" ">
<g id="a_node2"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a50480fccfb39de20ca47f1bf51ecb6ec" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="603,-1310.5 603,-1329.5 737,-1329.5 737,-1310.5 603,-1310.5"/>
<text text-anchor="middle" x="670" y="-1317.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::argmax</text>
</a>
@@ -53,7 +53,7 @@
<!-- Node45 -->
<g id="node45" class="node">
<title>Node45</title>
<g id="a_node45"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#ac130322a5abb1ff763b7c1a55405a35e" target="_top" xlink:title=" ">
<g id="a_node45"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a3b9eac1824d365dce715fb17c33cb96f" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="240.5,-1174.5 240.5,-1215.5 369.5,-1215.5 369.5,-1174.5 240.5,-1174.5"/>
<text text-anchor="start" x="248.5" y="-1203.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="start" x="248.5" y="-1192.5" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork</text>
@@ -162,7 +162,7 @@
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><a xlink:href="../../d8/d77/namespacemachine__learning.html#abe6b58ec16abe0f6f8ac195e04aa8abd" target="_top" xlink:title=" ">
<g id="a_node8"><a xlink:href="../../d8/d77/namespacemachine__learning.html#aa4bbf61e65f8cd297255fa94b983d078" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="780,-1043 780,-1073 895,-1073 895,-1043 780,-1043"/>
<text text-anchor="start" x="788" y="-1061" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::get</text>
<text text-anchor="middle" x="837.5" y="-1050" font-family="Helvetica,sans-Serif" font-size="10.00">_shape</text>
@@ -193,7 +193,7 @@
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a8f8eb4423c57a00b0ab46de226bc6509" target="_top" xlink:title=" ">
<g id="a_node11"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a2be1b52bb9f57486f9a436f35c9089c0" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="234,-899 234,-929 376,-929 376,-899 234,-899"/>
<text text-anchor="start" x="242" y="-917" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="middle" x="305" y="-906" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork::fit</text>
@@ -209,7 +209,7 @@
<!-- Node26 -->
<g id="node26" class="node">
<title>Node26</title>
<g id="a_node26"><a xlink:href="../../d5/d91/namespacesorting.html#aedfb88e2d6fff1871f038221fe5870fe" target="_top" xlink:title=" ">
<g id="a_node26"><a xlink:href="../../d5/d91/namespacesorting.html#a7bfe11bd4703eacd1dab93f25ec639c5" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="445.5,-774.5 445.5,-793.5 527.5,-793.5 527.5,-774.5 445.5,-774.5"/>
<text text-anchor="middle" x="486.5" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">sorting::shuffle</text>
</a>
@@ -224,7 +224,7 @@
<!-- Node31 -->
<g id="node31" class="node">
<title>Node31</title>
<g id="a_node31"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a8d983ebb3225a9901b713a0f05b44aba" target="_top" xlink:title=" ">
<g id="a_node31"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a650c677fd6512665741ddd9b7983275d" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="422,-289.5 422,-330.5 551,-330.5 551,-289.5 422,-289.5"/>
<text text-anchor="start" x="430" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="start" x="430" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork</text>
@@ -265,7 +265,7 @@
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#acd397b51fcf8f690b03e406ada8c9d13" target="_top" xlink:title=" ">
<g id="a_node12"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a361a45f3c3d8347d79103bf182d0570b" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="412,-1163.5 412,-1204.5 561,-1204.5 561,-1163.5 412,-1163.5"/>
<text text-anchor="start" x="420" y="-1192.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="start" x="420" y="-1181.5" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork</text>
@@ -282,7 +282,7 @@
<!-- Node13 -->
<g id="node13" class="node">
<title>Node13</title>
<g id="a_node13"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a8b3b06a63bd16b91237c85a295309774" target="_top" xlink:title=" ">
<g id="a_node13"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ad0bdc88e5f1be47c46c0f0c8ebf754bb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="607.5,-1125 607.5,-1155 732.5,-1155 732.5,-1125 607.5,-1125"/>
<text text-anchor="start" x="615.5" y="-1143" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::apply</text>
<text text-anchor="middle" x="670" y="-1132" font-family="Helvetica,sans-Serif" font-size="10.00">_function</text>
@@ -298,7 +298,7 @@
<!-- Node15 -->
<g id="node15" class="node">
<title>Node15</title>
<g id="a_node15"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a7491744dcfc8844338d55065d0cd0c79" target="_top" xlink:title=" ">
<g id="a_node15"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5342906d42b80fc6b6b3ad17bf00fcb9" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="602.5,-1010.5 602.5,-1029.5 737.5,-1029.5 737.5,-1010.5 602.5,-1010.5"/>
<text text-anchor="middle" x="670" y="-1017.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::multiply</text>
</a>
@@ -313,7 +313,7 @@
<!-- Node17 -->
<g id="node17" class="node">
<title>Node17</title>
<g id="a_node17"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a62a418f243cd52b49f59015dddff188e" target="_top" xlink:title=" ">
<g id="a_node17"><a xlink:href="../../d8/d77/namespacemachine__learning.html#af801bf30591ca6b2c38ff4fed0ded23f" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="424,-829 424,-859 549,-859 549,-829 424,-829"/>
<text text-anchor="start" x="432" y="-847" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::equal</text>
<text text-anchor="middle" x="486.5" y="-836" font-family="Helvetica,sans-Serif" font-size="10.00">_shuffle</text>
@@ -329,7 +329,7 @@
<!-- Node22 -->
<g id="node22" class="node">
<title>Node22</title>
<g id="a_node22"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a6ef38e5947aef609f908bfbfeaf11d75" target="_top" xlink:title=" ">
<g id="a_node22"><a xlink:href="../../d8/d77/namespacemachine__learning.html#acafa3e62b686aebdbad81c4f89913f43" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="597,-961 597,-991 743,-991 743,-961 597,-961"/>
<text text-anchor="start" x="605" y="-979" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::hadamard</text>
<text text-anchor="middle" x="670" y="-968" font-family="Helvetica,sans-Serif" font-size="10.00">_product</text>
@@ -412,7 +412,7 @@
<!-- Node28 -->
<g id="node28" class="node">
<title>Node28</title>
<g id="a_node28"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" target="_top" xlink:title=" ">
<g id="a_node28"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="426.5,-1125.5 426.5,-1144.5 546.5,-1144.5 546.5,-1125.5 426.5,-1125.5"/>
<text text-anchor="middle" x="486.5" y="-1132.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::sum</text>
</a>
@@ -427,7 +427,7 @@
<!-- Node29 -->
<g id="node29" class="node">
<title>Node29</title>
<g id="a_node29"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ac7d9b358f1ef2ba2a1d475a5452ec41f" target="_top" xlink:title=" ">
<g id="a_node29"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a89fde571b38f9483576594f66572958a" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="597.5,-1048.5 597.5,-1067.5 742.5,-1067.5 742.5,-1048.5 597.5,-1048.5"/>
<text text-anchor="middle" x="670" y="-1055.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::transpose</text>
</a>
@@ -442,7 +442,7 @@
<!-- Node30 -->
<g id="node30" class="node">
<title>Node30</title>
<g id="a_node30"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a4d136cbf20e3126ed9b934ab2d03f18b" target="_top" xlink:title=" ">
<g id="a_node30"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ac1bdaa2a724b4ce6a6bb371a5dbe2e7e" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="421,-1076 421,-1106 552,-1106 552,-1076 421,-1076"/>
<text text-anchor="start" x="429" y="-1094" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::zeroes</text>
<text text-anchor="middle" x="486.5" y="-1083" font-family="Helvetica,sans-Serif" font-size="10.00">_initialization</text>
@@ -732,7 +732,7 @@
<!-- Node37 -->
<g id="node37" class="node">
<title>Node37</title>
<g id="a_node37"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a725d4ccceda4f32c96348ba1d593cd3c" target="_top" xlink:title=" ">
<g id="a_node37"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a496302e3371aa7b478cb7d5917904bdd" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="607.5,-317 607.5,-347 732.5,-347 732.5,-317 607.5,-317"/>
<text text-anchor="start" x="615.5" y="-335" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::insert</text>
<text text-anchor="middle" x="670" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">_element</text>
@@ -763,7 +763,7 @@
<!-- Node39 -->
<g id="node39" class="node">
<title>Node39</title>
<g id="a_node39"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a05b9445c6ab65053b9bf9897a96af82d" target="_top" xlink:title=" ">
<g id="a_node39"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ac332d152078e96311e43ac5e7183ea26" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="602,-519 602,-549 738,-549 738,-519 602,-519"/>
<text text-anchor="start" x="610" y="-537" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::minmax</text>
<text text-anchor="middle" x="670" y="-526" font-family="Helvetica,sans-Serif" font-size="10.00">_scaler</text>
@@ -794,7 +794,7 @@
<!-- Node42 -->
<g id="node42" class="node">
<title>Node42</title>
<g id="a_node42"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a4dd9a9df9f8f05327bcf7b58b0a86576" target="_top" xlink:title=" ">
<g id="a_node42"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ae10178b082f0205c326550877d998e5d" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="598,-202.5 598,-221.5 742,-221.5 742,-202.5 598,-202.5"/>
<text text-anchor="middle" x="670" y="-209.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::pop_back</text>
</a>
@@ -809,7 +809,7 @@
<!-- Node43 -->
<g id="node43" class="node">
<title>Node43</title>
<g id="a_node43"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ad9d119e7520fa5c2d2428433f578c0bc" target="_top" xlink:title=" ">
<g id="a_node43"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a912cf68863063a38d6e63545be5eb093" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="611,-153 611,-183 729,-183 729,-153 611,-153"/>
<text text-anchor="start" x="619" y="-171" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::pop</text>
<text text-anchor="middle" x="670" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">_front</text>

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View File

@@ -1,32 +1,32 @@
<map id="main" name="main">
<area shape="rect" id="node1" title="Main function." alt="" coords="5,161,56,188"/>
<area shape="rect" id="node2" href="$d2/d58/neural__network_8cpp.html#aa8dca7b867074164d5f45b0f3851269d" title=" " alt="" coords="104,161,148,188"/>
<area shape="rect" id="node3" href="$d8/d77/namespacemachine__learning.html#a1b42d24ad7bedbfa8e5b59fe96987a44" title=" " alt="" coords="908,81,1087,108"/>
<area shape="rect" id="node3" href="$d8/d77/namespacemachine__learning.html#a50480fccfb39de20ca47f1bf51ecb6ec" title=" " alt="" coords="908,81,1087,108"/>
<area shape="rect" id="node11" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a5172a6791b9bd24f4232bab8d6b81fff" title=" " alt="" coords="196,637,368,693"/>
<area shape="rect" id="node46" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#ac130322a5abb1ff763b7c1a55405a35e" title=" " alt="" coords="425,233,597,289"/>
<area shape="rect" id="node46" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a3b9eac1824d365dce715fb17c33cb96f" title=" " alt="" coords="425,233,597,289"/>
<area shape="rect" id="node47" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a61d30113d13304c664057118b92a5931" title=" " alt="" coords="911,183,1083,239"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/iterator/begin.html#" title=" " alt="" coords="1181,56,1261,83"/>
<area shape="rect" id="node5" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/iterator/distance.html#" title=" " alt="" coords="1172,107,1269,133"/>
<area shape="rect" id="node6" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/iterator/end.html#" title=" " alt="" coords="1186,157,1255,184"/>
<area shape="rect" id="node7" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/manip/endl.html#" title=" " alt="" coords="1185,489,1257,516"/>
<area shape="rect" id="node8" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/utility/program/exit.html#" title=" " alt="" coords="1187,767,1255,793"/>
<area shape="rect" id="node9" href="$d8/d77/namespacemachine__learning.html#abe6b58ec16abe0f6f8ac195e04aa8abd" title=" " alt="" coords="1144,423,1297,465"/>
<area shape="rect" id="node9" href="$d8/d77/namespacemachine__learning.html#aa4bbf61e65f8cd297255fa94b983d078" title=" " alt="" coords="1144,423,1297,465"/>
<area shape="rect" id="node10" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/max_element.html#" title=" " alt="" coords="1157,5,1284,32"/>
<area shape="rect" id="node12" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a8f8eb4423c57a00b0ab46de226bc6509" title=" " alt="" coords="416,615,605,657"/>
<area shape="rect" id="node27" href="$d5/d91/namespacesorting.html#aedfb88e2d6fff1871f038221fe5870fe" title=" " alt="" coords="698,796,807,823"/>
<area shape="rect" id="node32" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a8d983ebb3225a9901b713a0f05b44aba" title=" " alt="" coords="667,1413,839,1469"/>
<area shape="rect" id="node13" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#acd397b51fcf8f690b03e406ada8c9d13" title=" " alt="" coords="653,248,852,304"/>
<area shape="rect" id="node14" href="$d8/d77/namespacemachine__learning.html#a8b3b06a63bd16b91237c85a295309774" title=" " alt="" coords="914,314,1081,355"/>
<area shape="rect" id="node16" href="$d8/d77/namespacemachine__learning.html#a7491744dcfc8844338d55065d0cd0c79" title=" " alt="" coords="907,481,1087,508"/>
<area shape="rect" id="node18" href="$d8/d77/namespacemachine__learning.html#a62a418f243cd52b49f59015dddff188e" title=" " alt="" coords="669,709,836,750"/>
<area shape="rect" id="node23" href="$d8/d77/namespacemachine__learning.html#a6ef38e5947aef609f908bfbfeaf11d75" title=" " alt="" coords="900,533,1095,574"/>
<area shape="rect" id="node12" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a2be1b52bb9f57486f9a436f35c9089c0" title=" " alt="" coords="416,615,605,657"/>
<area shape="rect" id="node27" href="$d5/d91/namespacesorting.html#a7bfe11bd4703eacd1dab93f25ec639c5" title=" " alt="" coords="698,796,807,823"/>
<area shape="rect" id="node32" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a650c677fd6512665741ddd9b7983275d" title=" " alt="" coords="667,1413,839,1469"/>
<area shape="rect" id="node13" href="$d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a361a45f3c3d8347d79103bf182d0570b" title=" " alt="" coords="653,248,852,304"/>
<area shape="rect" id="node14" href="$d8/d77/namespacemachine__learning.html#ad0bdc88e5f1be47c46c0f0c8ebf754bb" title=" " alt="" coords="914,314,1081,355"/>
<area shape="rect" id="node16" href="$d8/d77/namespacemachine__learning.html#a5342906d42b80fc6b6b3ad17bf00fcb9" title=" " alt="" coords="907,481,1087,508"/>
<area shape="rect" id="node18" href="$d8/d77/namespacemachine__learning.html#af801bf30591ca6b2c38ff4fed0ded23f" title=" " alt="" coords="669,709,836,750"/>
<area shape="rect" id="node23" href="$d8/d77/namespacemachine__learning.html#acafa3e62b686aebdbad81c4f89913f43" title=" " alt="" coords="900,533,1095,574"/>
<area shape="rect" id="node24" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/min.html#" title=" " alt="" coords="1186,1184,1255,1211"/>
<area shape="rect" id="node25" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/chrono/high_resolution_clock/now.html#" title=" " alt="" coords="660,970,845,1011"/>
<area shape="rect" id="node26" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/resize.html#" title=" " alt="" coords="689,1036,816,1063"/>
<area shape="rect" id="node28" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="1163,1235,1278,1261"/>
<area shape="rect" id="node29" href="$d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" title=" " alt="" coords="673,328,833,355"/>
<area shape="rect" id="node30" href="$d8/d77/namespacemachine__learning.html#ac7d9b358f1ef2ba2a1d475a5452ec41f" title=" " alt="" coords="901,431,1094,457"/>
<area shape="rect" id="node31" href="$d8/d77/namespacemachine__learning.html#a4d136cbf20e3126ed9b934ab2d03f18b" title=" " alt="" coords="665,379,840,421"/>
<area shape="rect" id="node29" href="$d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" title=" " alt="" coords="673,328,833,355"/>
<area shape="rect" id="node30" href="$d8/d77/namespacemachine__learning.html#a89fde571b38f9483576594f66572958a" title=" " alt="" coords="901,431,1094,457"/>
<area shape="rect" id="node31" href="$d8/d77/namespacemachine__learning.html#ac1bdaa2a724b4ce6a6bb371a5dbe2e7e" title=" " alt="" coords="665,379,840,421"/>
<area shape="rect" id="node15" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/emplace_back.html#" title=" " alt="" coords="909,263,1086,289"/>
<area shape="rect" id="node17" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/push_back.html#" title=" " alt="" coords="1143,540,1299,567"/>
<area shape="rect" id="node19" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/chrono/system_clock/now.html#" title=" " alt="" coords="929,650,1066,691"/>
@@ -38,12 +38,12 @@
<area shape="rect" id="node35" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ifstream/close.html#" title=" " alt="" coords="931,1828,1064,1855"/>
<area shape="rect" id="node36" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ios/eof.html#" title=" " alt="" coords="937,1289,1057,1316"/>
<area shape="rect" id="node37" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/basic_string/getline.html#" title=" " alt="" coords="954,1340,1041,1367"/>
<area shape="rect" id="node38" href="$d8/d77/namespacemachine__learning.html#a725d4ccceda4f32c96348ba1d593cd3c" title=" " alt="" coords="914,1391,1081,1433"/>
<area shape="rect" id="node38" href="$d8/d77/namespacemachine__learning.html#a496302e3371aa7b478cb7d5917904bdd" title=" " alt="" coords="914,1391,1081,1433"/>
<area shape="rect" id="node39" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ifstream/is_open.html#" title=" " alt="" coords="923,1457,1072,1484"/>
<area shape="rect" id="node40" href="$d8/d77/namespacemachine__learning.html#a05b9445c6ab65053b9bf9897a96af82d" title=" " alt="" coords="907,1122,1088,1163"/>
<area shape="rect" id="node40" href="$d8/d77/namespacemachine__learning.html#ac332d152078e96311e43ac5e7183ea26" title=" " alt="" coords="907,1122,1088,1163"/>
<area shape="rect" id="node42" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ifstream/open.html#" title=" " alt="" coords="931,1508,1063,1535"/>
<area shape="rect" id="node43" href="$d8/d77/namespacemachine__learning.html#a4dd9a9df9f8f05327bcf7b58b0a86576" title=" " alt="" coords="901,1559,1093,1585"/>
<area shape="rect" id="node44" href="$d8/d77/namespacemachine__learning.html#ad9d119e7520fa5c2d2428433f578c0bc" title=" " alt="" coords="919,1610,1076,1651"/>
<area shape="rect" id="node43" href="$d8/d77/namespacemachine__learning.html#ae10178b082f0205c326550877d998e5d" title=" " alt="" coords="901,1559,1093,1585"/>
<area shape="rect" id="node44" href="$d8/d77/namespacemachine__learning.html#a912cf68863063a38d6e63545be5eb093" title=" " alt="" coords="919,1610,1076,1651"/>
<area shape="rect" id="node45" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/basic_string/stof.html#" title=" " alt="" coords="961,1676,1033,1703"/>
<area shape="rect" id="node41" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/max.html#" title=" " alt="" coords="1185,1129,1257,1156"/>
</map>

View File

@@ -1 +1 @@
31b89e1f94e860862bc0261c78377ca5
baefa18d0e1f19a5d103539f42ced42b

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: main Pages: 1 -->
<!--zoomable 1395 -->
@@ -82,7 +82,7 @@ var sectionId = 'dynsection-5';
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a1b42d24ad7bedbfa8e5b59fe96987a44" target="_top" xlink:title=" ">
<g id="a_node3"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a50480fccfb39de20ca47f1bf51ecb6ec" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="677,-1310.5 677,-1329.5 811,-1329.5 811,-1310.5 677,-1310.5"/>
<text text-anchor="middle" x="744" y="-1317.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::argmax</text>
</a>
@@ -114,7 +114,7 @@ var sectionId = 'dynsection-5';
<!-- Node46 -->
<g id="node46" class="node">
<title>Node46</title>
<g id="a_node46"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#ac130322a5abb1ff763b7c1a55405a35e" target="_top" xlink:title=" ">
<g id="a_node46"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a3b9eac1824d365dce715fb17c33cb96f" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="314.5,-1174.5 314.5,-1215.5 443.5,-1215.5 443.5,-1174.5 314.5,-1174.5"/>
<text text-anchor="start" x="322.5" y="-1203.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="start" x="322.5" y="-1192.5" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork</text>
@@ -223,7 +223,7 @@ var sectionId = 'dynsection-5';
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><a xlink:href="../../d8/d77/namespacemachine__learning.html#abe6b58ec16abe0f6f8ac195e04aa8abd" target="_top" xlink:title=" ">
<g id="a_node9"><a xlink:href="../../d8/d77/namespacemachine__learning.html#aa4bbf61e65f8cd297255fa94b983d078" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="854,-1043 854,-1073 969,-1073 969,-1043 854,-1043"/>
<text text-anchor="start" x="862" y="-1061" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::get</text>
<text text-anchor="middle" x="911.5" y="-1050" font-family="Helvetica,sans-Serif" font-size="10.00">_shape</text>
@@ -254,7 +254,7 @@ var sectionId = 'dynsection-5';
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a8f8eb4423c57a00b0ab46de226bc6509" target="_top" xlink:title=" ">
<g id="a_node12"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a2be1b52bb9f57486f9a436f35c9089c0" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="308,-899 308,-929 450,-929 450,-899 308,-899"/>
<text text-anchor="start" x="316" y="-917" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="middle" x="379" y="-906" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork::fit</text>
@@ -270,7 +270,7 @@ var sectionId = 'dynsection-5';
<!-- Node27 -->
<g id="node27" class="node">
<title>Node27</title>
<g id="a_node27"><a xlink:href="../../d5/d91/namespacesorting.html#aedfb88e2d6fff1871f038221fe5870fe" target="_top" xlink:title=" ">
<g id="a_node27"><a xlink:href="../../d5/d91/namespacesorting.html#a7bfe11bd4703eacd1dab93f25ec639c5" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="519.5,-774.5 519.5,-793.5 601.5,-793.5 601.5,-774.5 519.5,-774.5"/>
<text text-anchor="middle" x="560.5" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">sorting::shuffle</text>
</a>
@@ -285,7 +285,7 @@ var sectionId = 'dynsection-5';
<!-- Node32 -->
<g id="node32" class="node">
<title>Node32</title>
<g id="a_node32"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a8d983ebb3225a9901b713a0f05b44aba" target="_top" xlink:title=" ">
<g id="a_node32"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a650c677fd6512665741ddd9b7983275d" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="496,-289.5 496,-330.5 625,-330.5 625,-289.5 496,-289.5"/>
<text text-anchor="start" x="504" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="start" x="504" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork</text>
@@ -326,7 +326,7 @@ var sectionId = 'dynsection-5';
<!-- Node13 -->
<g id="node13" class="node">
<title>Node13</title>
<g id="a_node13"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#acd397b51fcf8f690b03e406ada8c9d13" target="_top" xlink:title=" ">
<g id="a_node13"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a361a45f3c3d8347d79103bf182d0570b" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="486,-1163.5 486,-1204.5 635,-1204.5 635,-1163.5 486,-1163.5"/>
<text text-anchor="start" x="494" y="-1192.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="start" x="494" y="-1181.5" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork</text>
@@ -343,7 +343,7 @@ var sectionId = 'dynsection-5';
<!-- Node14 -->
<g id="node14" class="node">
<title>Node14</title>
<g id="a_node14"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a8b3b06a63bd16b91237c85a295309774" target="_top" xlink:title=" ">
<g id="a_node14"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ad0bdc88e5f1be47c46c0f0c8ebf754bb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="681.5,-1125 681.5,-1155 806.5,-1155 806.5,-1125 681.5,-1125"/>
<text text-anchor="start" x="689.5" y="-1143" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::apply</text>
<text text-anchor="middle" x="744" y="-1132" font-family="Helvetica,sans-Serif" font-size="10.00">_function</text>
@@ -359,7 +359,7 @@ var sectionId = 'dynsection-5';
<!-- Node16 -->
<g id="node16" class="node">
<title>Node16</title>
<g id="a_node16"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a7491744dcfc8844338d55065d0cd0c79" target="_top" xlink:title=" ">
<g id="a_node16"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5342906d42b80fc6b6b3ad17bf00fcb9" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="676.5,-1010.5 676.5,-1029.5 811.5,-1029.5 811.5,-1010.5 676.5,-1010.5"/>
<text text-anchor="middle" x="744" y="-1017.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::multiply</text>
</a>
@@ -374,7 +374,7 @@ var sectionId = 'dynsection-5';
<!-- Node18 -->
<g id="node18" class="node">
<title>Node18</title>
<g id="a_node18"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a62a418f243cd52b49f59015dddff188e" target="_top" xlink:title=" ">
<g id="a_node18"><a xlink:href="../../d8/d77/namespacemachine__learning.html#af801bf30591ca6b2c38ff4fed0ded23f" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="498,-829 498,-859 623,-859 623,-829 498,-829"/>
<text text-anchor="start" x="506" y="-847" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::equal</text>
<text text-anchor="middle" x="560.5" y="-836" font-family="Helvetica,sans-Serif" font-size="10.00">_shuffle</text>
@@ -390,7 +390,7 @@ var sectionId = 'dynsection-5';
<!-- Node23 -->
<g id="node23" class="node">
<title>Node23</title>
<g id="a_node23"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a6ef38e5947aef609f908bfbfeaf11d75" target="_top" xlink:title=" ">
<g id="a_node23"><a xlink:href="../../d8/d77/namespacemachine__learning.html#acafa3e62b686aebdbad81c4f89913f43" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="671,-961 671,-991 817,-991 817,-961 671,-961"/>
<text text-anchor="start" x="679" y="-979" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::hadamard</text>
<text text-anchor="middle" x="744" y="-968" font-family="Helvetica,sans-Serif" font-size="10.00">_product</text>
@@ -473,7 +473,7 @@ var sectionId = 'dynsection-5';
<!-- Node29 -->
<g id="node29" class="node">
<title>Node29</title>
<g id="a_node29"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" target="_top" xlink:title=" ">
<g id="a_node29"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="500.5,-1125.5 500.5,-1144.5 620.5,-1144.5 620.5,-1125.5 500.5,-1125.5"/>
<text text-anchor="middle" x="560.5" y="-1132.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::sum</text>
</a>
@@ -488,7 +488,7 @@ var sectionId = 'dynsection-5';
<!-- Node30 -->
<g id="node30" class="node">
<title>Node30</title>
<g id="a_node30"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ac7d9b358f1ef2ba2a1d475a5452ec41f" target="_top" xlink:title=" ">
<g id="a_node30"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a89fde571b38f9483576594f66572958a" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="671.5,-1048.5 671.5,-1067.5 816.5,-1067.5 816.5,-1048.5 671.5,-1048.5"/>
<text text-anchor="middle" x="744" y="-1055.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::transpose</text>
</a>
@@ -503,7 +503,7 @@ var sectionId = 'dynsection-5';
<!-- Node31 -->
<g id="node31" class="node">
<title>Node31</title>
<g id="a_node31"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a4d136cbf20e3126ed9b934ab2d03f18b" target="_top" xlink:title=" ">
<g id="a_node31"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ac1bdaa2a724b4ce6a6bb371a5dbe2e7e" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="495,-1076 495,-1106 626,-1106 626,-1076 495,-1076"/>
<text text-anchor="start" x="503" y="-1094" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::zeroes</text>
<text text-anchor="middle" x="560.5" y="-1083" font-family="Helvetica,sans-Serif" font-size="10.00">_initialization</text>
@@ -793,7 +793,7 @@ var sectionId = 'dynsection-5';
<!-- Node38 -->
<g id="node38" class="node">
<title>Node38</title>
<g id="a_node38"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a725d4ccceda4f32c96348ba1d593cd3c" target="_top" xlink:title=" ">
<g id="a_node38"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a496302e3371aa7b478cb7d5917904bdd" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="681.5,-317 681.5,-347 806.5,-347 806.5,-317 681.5,-317"/>
<text text-anchor="start" x="689.5" y="-335" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::insert</text>
<text text-anchor="middle" x="744" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">_element</text>
@@ -824,7 +824,7 @@ var sectionId = 'dynsection-5';
<!-- Node40 -->
<g id="node40" class="node">
<title>Node40</title>
<g id="a_node40"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a05b9445c6ab65053b9bf9897a96af82d" target="_top" xlink:title=" ">
<g id="a_node40"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ac332d152078e96311e43ac5e7183ea26" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="676,-519 676,-549 812,-549 812,-519 676,-519"/>
<text text-anchor="start" x="684" y="-537" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::minmax</text>
<text text-anchor="middle" x="744" y="-526" font-family="Helvetica,sans-Serif" font-size="10.00">_scaler</text>
@@ -855,7 +855,7 @@ var sectionId = 'dynsection-5';
<!-- Node43 -->
<g id="node43" class="node">
<title>Node43</title>
<g id="a_node43"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a4dd9a9df9f8f05327bcf7b58b0a86576" target="_top" xlink:title=" ">
<g id="a_node43"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ae10178b082f0205c326550877d998e5d" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="672,-202.5 672,-221.5 816,-221.5 816,-202.5 672,-202.5"/>
<text text-anchor="middle" x="744" y="-209.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::pop_back</text>
</a>
@@ -870,7 +870,7 @@ var sectionId = 'dynsection-5';
<!-- Node44 -->
<g id="node44" class="node">
<title>Node44</title>
<g id="a_node44"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ad9d119e7520fa5c2d2428433f578c0bc" target="_top" xlink:title=" ">
<g id="a_node44"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a912cf68863063a38d6e63545be5eb093" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="685,-153 685,-183 803,-183 803,-153 685,-153"/>
<text text-anchor="start" x="693" y="-171" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::pop</text>
<text text-anchor="middle" x="744" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">_front</text>

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: main Pages: 1 -->
<svg width="978pt" height="1395pt"
@@ -36,7 +36,7 @@
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a1b42d24ad7bedbfa8e5b59fe96987a44" target="_top" xlink:title=" ">
<g id="a_node3"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a50480fccfb39de20ca47f1bf51ecb6ec" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="677,-1310.5 677,-1329.5 811,-1329.5 811,-1310.5 677,-1310.5"/>
<text text-anchor="middle" x="744" y="-1317.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::argmax</text>
</a>
@@ -68,7 +68,7 @@
<!-- Node46 -->
<g id="node46" class="node">
<title>Node46</title>
<g id="a_node46"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#ac130322a5abb1ff763b7c1a55405a35e" target="_top" xlink:title=" ">
<g id="a_node46"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a3b9eac1824d365dce715fb17c33cb96f" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="314.5,-1174.5 314.5,-1215.5 443.5,-1215.5 443.5,-1174.5 314.5,-1174.5"/>
<text text-anchor="start" x="322.5" y="-1203.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="start" x="322.5" y="-1192.5" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork</text>
@@ -177,7 +177,7 @@
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><a xlink:href="../../d8/d77/namespacemachine__learning.html#abe6b58ec16abe0f6f8ac195e04aa8abd" target="_top" xlink:title=" ">
<g id="a_node9"><a xlink:href="../../d8/d77/namespacemachine__learning.html#aa4bbf61e65f8cd297255fa94b983d078" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="854,-1043 854,-1073 969,-1073 969,-1043 854,-1043"/>
<text text-anchor="start" x="862" y="-1061" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::get</text>
<text text-anchor="middle" x="911.5" y="-1050" font-family="Helvetica,sans-Serif" font-size="10.00">_shape</text>
@@ -208,7 +208,7 @@
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a8f8eb4423c57a00b0ab46de226bc6509" target="_top" xlink:title=" ">
<g id="a_node12"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a2be1b52bb9f57486f9a436f35c9089c0" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="308,-899 308,-929 450,-929 450,-899 308,-899"/>
<text text-anchor="start" x="316" y="-917" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="middle" x="379" y="-906" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork::fit</text>
@@ -224,7 +224,7 @@
<!-- Node27 -->
<g id="node27" class="node">
<title>Node27</title>
<g id="a_node27"><a xlink:href="../../d5/d91/namespacesorting.html#aedfb88e2d6fff1871f038221fe5870fe" target="_top" xlink:title=" ">
<g id="a_node27"><a xlink:href="../../d5/d91/namespacesorting.html#a7bfe11bd4703eacd1dab93f25ec639c5" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="519.5,-774.5 519.5,-793.5 601.5,-793.5 601.5,-774.5 519.5,-774.5"/>
<text text-anchor="middle" x="560.5" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">sorting::shuffle</text>
</a>
@@ -239,7 +239,7 @@
<!-- Node32 -->
<g id="node32" class="node">
<title>Node32</title>
<g id="a_node32"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a8d983ebb3225a9901b713a0f05b44aba" target="_top" xlink:title=" ">
<g id="a_node32"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a650c677fd6512665741ddd9b7983275d" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="496,-289.5 496,-330.5 625,-330.5 625,-289.5 496,-289.5"/>
<text text-anchor="start" x="504" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="start" x="504" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork</text>
@@ -280,7 +280,7 @@
<!-- Node13 -->
<g id="node13" class="node">
<title>Node13</title>
<g id="a_node13"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#acd397b51fcf8f690b03e406ada8c9d13" target="_top" xlink:title=" ">
<g id="a_node13"><a xlink:href="../../d4/df4/classmachine__learning_1_1neural__network_1_1_neural_network.html#a361a45f3c3d8347d79103bf182d0570b" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="486,-1163.5 486,-1204.5 635,-1204.5 635,-1163.5 486,-1163.5"/>
<text text-anchor="start" x="494" y="-1192.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::neural</text>
<text text-anchor="start" x="494" y="-1181.5" font-family="Helvetica,sans-Serif" font-size="10.00">_network::NeuralNetwork</text>
@@ -297,7 +297,7 @@
<!-- Node14 -->
<g id="node14" class="node">
<title>Node14</title>
<g id="a_node14"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a8b3b06a63bd16b91237c85a295309774" target="_top" xlink:title=" ">
<g id="a_node14"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ad0bdc88e5f1be47c46c0f0c8ebf754bb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="681.5,-1125 681.5,-1155 806.5,-1155 806.5,-1125 681.5,-1125"/>
<text text-anchor="start" x="689.5" y="-1143" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::apply</text>
<text text-anchor="middle" x="744" y="-1132" font-family="Helvetica,sans-Serif" font-size="10.00">_function</text>
@@ -313,7 +313,7 @@
<!-- Node16 -->
<g id="node16" class="node">
<title>Node16</title>
<g id="a_node16"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a7491744dcfc8844338d55065d0cd0c79" target="_top" xlink:title=" ">
<g id="a_node16"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5342906d42b80fc6b6b3ad17bf00fcb9" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="676.5,-1010.5 676.5,-1029.5 811.5,-1029.5 811.5,-1010.5 676.5,-1010.5"/>
<text text-anchor="middle" x="744" y="-1017.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::multiply</text>
</a>
@@ -328,7 +328,7 @@
<!-- Node18 -->
<g id="node18" class="node">
<title>Node18</title>
<g id="a_node18"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a62a418f243cd52b49f59015dddff188e" target="_top" xlink:title=" ">
<g id="a_node18"><a xlink:href="../../d8/d77/namespacemachine__learning.html#af801bf30591ca6b2c38ff4fed0ded23f" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="498,-829 498,-859 623,-859 623,-829 498,-829"/>
<text text-anchor="start" x="506" y="-847" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::equal</text>
<text text-anchor="middle" x="560.5" y="-836" font-family="Helvetica,sans-Serif" font-size="10.00">_shuffle</text>
@@ -344,7 +344,7 @@
<!-- Node23 -->
<g id="node23" class="node">
<title>Node23</title>
<g id="a_node23"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a6ef38e5947aef609f908bfbfeaf11d75" target="_top" xlink:title=" ">
<g id="a_node23"><a xlink:href="../../d8/d77/namespacemachine__learning.html#acafa3e62b686aebdbad81c4f89913f43" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="671,-961 671,-991 817,-991 817,-961 671,-961"/>
<text text-anchor="start" x="679" y="-979" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::hadamard</text>
<text text-anchor="middle" x="744" y="-968" font-family="Helvetica,sans-Serif" font-size="10.00">_product</text>
@@ -427,7 +427,7 @@
<!-- Node29 -->
<g id="node29" class="node">
<title>Node29</title>
<g id="a_node29"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" target="_top" xlink:title=" ">
<g id="a_node29"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="500.5,-1125.5 500.5,-1144.5 620.5,-1144.5 620.5,-1125.5 500.5,-1125.5"/>
<text text-anchor="middle" x="560.5" y="-1132.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::sum</text>
</a>
@@ -442,7 +442,7 @@
<!-- Node30 -->
<g id="node30" class="node">
<title>Node30</title>
<g id="a_node30"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ac7d9b358f1ef2ba2a1d475a5452ec41f" target="_top" xlink:title=" ">
<g id="a_node30"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a89fde571b38f9483576594f66572958a" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="671.5,-1048.5 671.5,-1067.5 816.5,-1067.5 816.5,-1048.5 671.5,-1048.5"/>
<text text-anchor="middle" x="744" y="-1055.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::transpose</text>
</a>
@@ -457,7 +457,7 @@
<!-- Node31 -->
<g id="node31" class="node">
<title>Node31</title>
<g id="a_node31"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a4d136cbf20e3126ed9b934ab2d03f18b" target="_top" xlink:title=" ">
<g id="a_node31"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ac1bdaa2a724b4ce6a6bb371a5dbe2e7e" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="495,-1076 495,-1106 626,-1106 626,-1076 495,-1076"/>
<text text-anchor="start" x="503" y="-1094" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::zeroes</text>
<text text-anchor="middle" x="560.5" y="-1083" font-family="Helvetica,sans-Serif" font-size="10.00">_initialization</text>
@@ -747,7 +747,7 @@
<!-- Node38 -->
<g id="node38" class="node">
<title>Node38</title>
<g id="a_node38"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a725d4ccceda4f32c96348ba1d593cd3c" target="_top" xlink:title=" ">
<g id="a_node38"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a496302e3371aa7b478cb7d5917904bdd" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="681.5,-317 681.5,-347 806.5,-347 806.5,-317 681.5,-317"/>
<text text-anchor="start" x="689.5" y="-335" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::insert</text>
<text text-anchor="middle" x="744" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">_element</text>
@@ -778,7 +778,7 @@
<!-- Node40 -->
<g id="node40" class="node">
<title>Node40</title>
<g id="a_node40"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a05b9445c6ab65053b9bf9897a96af82d" target="_top" xlink:title=" ">
<g id="a_node40"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ac332d152078e96311e43ac5e7183ea26" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="676,-519 676,-549 812,-549 812,-519 676,-519"/>
<text text-anchor="start" x="684" y="-537" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::minmax</text>
<text text-anchor="middle" x="744" y="-526" font-family="Helvetica,sans-Serif" font-size="10.00">_scaler</text>
@@ -809,7 +809,7 @@
<!-- Node43 -->
<g id="node43" class="node">
<title>Node43</title>
<g id="a_node43"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a4dd9a9df9f8f05327bcf7b58b0a86576" target="_top" xlink:title=" ">
<g id="a_node43"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ae10178b082f0205c326550877d998e5d" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="672,-202.5 672,-221.5 816,-221.5 816,-202.5 672,-202.5"/>
<text text-anchor="middle" x="744" y="-209.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::pop_back</text>
</a>
@@ -824,7 +824,7 @@
<!-- Node44 -->
<g id="node44" class="node">
<title>Node44</title>
<g id="a_node44"><a xlink:href="../../d8/d77/namespacemachine__learning.html#ad9d119e7520fa5c2d2428433f578c0bc" target="_top" xlink:title=" ">
<g id="a_node44"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a912cf68863063a38d6e63545be5eb093" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="685,-153 685,-183 803,-183 803,-153 685,-153"/>
<text text-anchor="start" x="693" y="-171" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::pop</text>
<text text-anchor="middle" x="744" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">_front</text>

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: machine_learning::neural_network::activations::relu Pages: 1 -->
<svg width="230pt" height="57pt"

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: backtracking/subset_sum.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d2/d5a/subset__sum_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -93,12 +93,11 @@ $(document).ready(function(){initNavTree('d2/d5a/subset__sum_8cpp.html','../../'
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">subset_sum.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">subset_sum.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Implementation of the <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a> problem.
<p>Implementation of the <a href="https://en.wikipedia.org/wiki/Subset_sum_problem" target="_blank">Subset Sum</a> problem.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;cassert&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
@@ -110,16 +109,16 @@ Include dependency graph for subset_sum.cpp:</div>
</div>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:db/dc0/namespacebacktracking"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/dc0/namespacebacktracking.html">backtracking</a></td></tr>
<tr class="memitem:db/dc0/namespacebacktracking"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/dc0/namespacebacktracking.html">backtracking</a></td></tr>
<tr class="memdesc:db/dc0/namespacebacktracking"><td class="mdescLeft">&#160;</td><td class="mdescRight">Backtracking algorithms. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:de/d95/namespace_subsets"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d95/namespace_subsets.html">Subsets</a></td></tr>
<tr class="memdesc:de/d95/namespace_subsets"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for the <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a> problem. <br /></td></tr>
<tr class="memitem:de/d95/namespace_subsets"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d95/namespace_subsets.html">Subsets</a></td></tr>
<tr class="memdesc:de/d95/namespace_subsets"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for the <a href="https://en.wikipedia.org/wiki/Subset_sum_problem" target="_blank">Subset Sum</a> problem. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a7cb50d36a59427a33f64a266dac83d99"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d5a/subset__sum_8cpp.html#a7cb50d36a59427a33f64a266dac83d99">backtracking::subset_sum::number_of_subsets</a> (int32_t sum, const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; int32_t &gt; &amp;in_arr)</td></tr>
<tr class="memdesc:a7cb50d36a59427a33f64a266dac83d99"><td class="mdescLeft">&#160;</td><td class="mdescRight">The main function implements count of subsets. <a href="../../d2/d5a/subset__sum_8cpp.html#a7cb50d36a59427a33f64a266dac83d99">More...</a><br /></td></tr>
@@ -132,10 +131,10 @@ Functions</h2></td></tr>
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implementation of the <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a> problem. </p>
<p>We are given an array and a sum value. The algorithm finds all the subsets of that array with sum equal to the given sum and return such subsets count. This approach will have exponential time complexity. </p><dl class="section author"><dt>Author</dt><dd><a href="https://github.com/Swastyy">Swastika Gupta</a> </dd></dl>
<div class="textblock"><p >Implementation of the <a href="https://en.wikipedia.org/wiki/Subset_sum_problem" target="_blank">Subset Sum</a> problem. </p>
<p >We are given an array and a sum value. The algorithm finds all the subsets of that array with sum equal to the given sum and return such subsets count. This approach will have exponential time complexity. </p><dl class="section author"><dt>Author</dt><dd><a href="https://github.com/Swastyy" target="_blank">Swastika Gupta</a> </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
@@ -153,10 +152,10 @@ Functions</h2></td></tr>
<p>Main function. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
<div class="fragment"><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="../../d2/d5a/subset__sum_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> {</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <a class="code hl_function" href="../../d2/d5a/subset__sum_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span>}</div>
<div class="ttc" id="asubset__sum_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d2/d5a/subset__sum_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Test implementations.</div><div class="ttdef"><b>Definition:</b> subset_sum.cpp:57</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -167,7 +166,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a7cb50d36a59427a33f64a266dac83d99"></a>
<a id="a7cb50d36a59427a33f64a266dac83d99" name="a7cb50d36a59427a33f64a266dac83d99"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cb50d36a59427a33f64a266dac83d99">&#9670;&nbsp;</a></span>number_of_subsets()</h2>
<div class="memitem">
@@ -202,24 +201,24 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>count of the number of subsets with required sum </dd></dl>
<div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; {</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; int32_t nelement = in_arr.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; uint64_t count_of_subset = 0;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">for</span> (int32_t i = 0; i &lt; (1 &lt;&lt; (nelement)); i++) {</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; int32_t <a class="code" href="../../d3/d84/word__break_8cpp.html#a272b0f5cdb4e41fd6dee4538b808c06a">check</a> = 0;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">for</span> (int32_t j = 0; j &lt; nelement; j++) {</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span> (i &amp; (1 &lt;&lt; j)) {</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="../../d3/d84/word__break_8cpp.html#a272b0f5cdb4e41fd6dee4538b808c06a">check</a> += (in_arr[j]);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">if</span> (check == <a class="code" href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44">sum</a>) {</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; count_of_subset++;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> count_of_subset;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div>
<div class="ttc" id="anamespacemachine__learning_html_a5305cc18d11943d3dc0d66e70d7e9c44"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44">machine_learning::sum</a></div><div class="ttdeci">T sum(const std::vector&lt; std::valarray&lt; T &gt;&gt; &amp;A)</div><div class="ttdef"><b>Definition:</b> vector_ops.hpp:232</div></div>
<div class="fragment"><div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> int32_t nelement = in_arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> uint64_t count_of_subset = 0;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordflow">for</span> (int32_t i = 0; i &lt; (1 &lt;&lt; (nelement)); i++) {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> int32_t <a class="code hl_function" href="../../d3/d84/word__break_8cpp.html#a272b0f5cdb4e41fd6dee4538b808c06a">check</a> = 0;</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">for</span> (int32_t j = 0; j &lt; nelement; j++) {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">if</span> (i &amp; (1 &lt;&lt; j)) {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <a class="code hl_function" href="../../d3/d84/word__break_8cpp.html#a272b0f5cdb4e41fd6dee4538b808c06a">check</a> += (in_arr[j]);</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> }</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> }</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">if</span> (check == <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">sum</a>) {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> count_of_subset++;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> }</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> }</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordflow">return</span> count_of_subset;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span>}</div>
<div class="ttc" id="anamespacemachine__learning_html_a6f1c98c016ad34ff3d9f39372161bd35"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">machine_learning::sum</a></div><div class="ttdeci">T sum(const std::vector&lt; std::valarray&lt; T &gt; &gt; &amp;A)</div><div class="ttdef"><b>Definition:</b> vector_ops.hpp:232</div></div>
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/size.html">std::vector::size</a></div><div class="ttdeci">T size(T... args)</div></div>
<div class="ttc" id="aword__break_8cpp_html_a272b0f5cdb4e41fd6dee4538b808c06a"><div class="ttname"><a href="../../d3/d84/word__break_8cpp.html#a272b0f5cdb4e41fd6dee4538b808c06a">dynamic_programming::word_break::check</a></div><div class="ttdeci">bool check(const std::string &amp;s, const std::unordered_set&lt; std::string &gt; &amp;strSet, int pos, std::vector&lt; int &gt; *dp)</div><div class="ttdoc">Function that checks if the string passed in param can be segmented from position 'pos',...</div><div class="ttdef"><b>Definition:</b> word_break.cpp:80</div></div>
</div><!-- fragment --><div class="dynheader">
@@ -231,7 +230,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="aa8dca7b867074164d5f45b0f3851269d"></a>
<a id="aa8dca7b867074164d5f45b0f3851269d" name="aa8dca7b867074164d5f45b0f3851269d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f3851269d">&#9670;&nbsp;</a></span>test()</h2>
<div class="memitem">
@@ -256,47 +255,47 @@ Here is the call graph for this function:</div>
<p>Test implementations. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// 1st test</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;1st test &quot;</span>;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int32_t&gt;</a> array1 = {-7, -3, -2, 5, 8}; <span class="comment">// input array</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; assert(backtracking::subset_sum::number_of_subsets(0, array1) ==</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; 2); <span class="comment">// first argument in subset_sum function is the required sum and</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// second is the input array</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="comment">// 2nd test</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;2nd test &quot;</span>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int32_t&gt;</a> array2 = {1, 2, 3, 3};</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; assert(backtracking::subset_sum::number_of_subsets(6, array2) ==</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 3); <span class="comment">// here we are expecting 3 subsets which sum up to 6 i.e.</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">// {(1,2,3),(1,2,3),(3,3)}</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// 3rd test</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;3rd test &quot;</span>;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int32_t&gt;</a> array3 = {1, 1, 1, 1};</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; assert(backtracking::subset_sum::number_of_subsets(1, array3) ==</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; 4); <span class="comment">// here we are expecting 4 subsets which sum up to 1 i.e.</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// {(1),(1),(1),(1)}</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">// 4th test</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;4th test &quot;</span>;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int32_t&gt;</a> array4 = {3, 3, 3, 3};</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; assert(backtracking::subset_sum::number_of_subsets(6, array4) ==</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; 6); <span class="comment">// here we are expecting 6 subsets which sum up to 6 i.e.</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// {(3,3),(3,3),(3,3),(3,3),(3,3),(3,3)}</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">// Test 5</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;5th test &quot;</span>;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int32_t&gt;</a> array5 = {};</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; assert(backtracking::subset_sum::number_of_subsets(6, array5) ==</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; 0); <span class="comment">// here we are expecting 0 subsets which sum up to 6 i.e. we</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// cannot select anything from an empty array</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> {</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// 1st test</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;1st test &quot;</span>;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int32_t&gt;</a> array1 = {-7, -3, -2, 5, 8}; <span class="comment">// input array</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> assert(backtracking::subset_sum::number_of_subsets(0, array1) ==</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> 2); <span class="comment">// first argument in subset_sum function is the required sum and</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// second is the input array</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// 2nd test</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;2nd test &quot;</span>;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int32_t&gt;</a> array2 = {1, 2, 3, 3};</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> assert(backtracking::subset_sum::number_of_subsets(6, array2) ==</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> 3); <span class="comment">// here we are expecting 3 subsets which sum up to 6 i.e.</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// {(1,2,3),(1,2,3),(3,3)}</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// 3rd test</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;3rd test &quot;</span>;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int32_t&gt;</a> array3 = {1, 1, 1, 1};</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> assert(backtracking::subset_sum::number_of_subsets(1, array3) ==</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> 4); <span class="comment">// here we are expecting 4 subsets which sum up to 1 i.e.</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// {(1),(1),(1),(1)}</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// 4th test</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;4th test &quot;</span>;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int32_t&gt;</a> array4 = {3, 3, 3, 3};</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> assert(backtracking::subset_sum::number_of_subsets(6, array4) ==</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> 6); <span class="comment">// here we are expecting 6 subsets which sum up to 6 i.e.</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// {(3,3),(3,3),(3,3),(3,3),(3,3),(3,3)}</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// Test 5</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;5th test &quot;</span>;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int32_t&gt;</a> array5 = {};</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> assert(backtracking::subset_sum::number_of_subsets(6, array5) ==</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> 0); <span class="comment">// here we are expecting 0 subsets which sum up to 6 i.e. we</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// cannot select anything from an empty array</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span>}</div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
<div class="ttc" id="aendl_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a></div><div class="ttdeci">T endl(T... args)</div></div>
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a></div></div>
@@ -315,7 +314,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_c11585dfcef32a26e29098facab6c144.html">backtracking</a></li><li class="navelem"><a class="el" href="../../d2/d5a/subset__sum_8cpp.html">subset_sum.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -1,5 +1,5 @@
<map id="backtracking::subset_sum::number_of_subsets" name="backtracking::subset_sum::number_of_subsets">
<area shape="rect" id="node1" title="The main function implements count of subsets." alt="" coords="5,29,184,71"/>
<area shape="rect" id="node2" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="255,11,369,38"/>
<area shape="rect" id="node3" href="$d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" title=" " alt="" coords="232,62,392,89"/>
<area shape="rect" id="node3" href="$d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" title=" " alt="" coords="232,62,392,89"/>
</map>

View File

@@ -1 +1 @@
a0525aaac8cd2f6c9197faa4903dd32e
acd8218375b484f9843c7f692b97092f

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: backtracking::subset_sum::number_of_subsets Pages: 1 -->
<svg width="298pt" height="71pt"
@@ -43,7 +43,7 @@
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" target="_top" xlink:title=" ">
<g id="a_node3"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="170,-0.5 170,-19.5 290,-19.5 290,-0.5 170,-0.5"/>
<text text-anchor="middle" x="230" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::sum</text>
</a>

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: test Pages: 1 -->
<svg width="131pt" height="28pt"

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: main Pages: 1 -->
<svg width="205pt" height="28pt"

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: sorting/merge_sort.cpp Pages: 1 -->
<svg width="127pt" height="84pt"

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: search/binary_search.cpp Pages: 1 -->
<svg width="139pt" height="84pt"

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: dynamic_programming/word_break.cpp Pages: 1 -->
<svg width="414pt" height="95pt"

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: ciphers/elliptic_curve_key_exchange.cpp Pages: 1 -->
<svg width="359pt" height="207pt"

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: range_queries/persistent_seg_tree_lazy_prop.cpp Pages: 1 -->
<svg width="197pt" height="95pt"

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: search/median_search.cpp Pages: 1 -->
<svg width="269pt" height="84pt"

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: range_queries::heavy_light_decomposition::HLD&lt; X &gt; Class Template Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -95,8 +95,7 @@ $(document).ready(function(){initNavTree('d2/d8a/classrange__queries_1_1heavy__l
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="../../dd/dfc/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">range_queries::heavy_light_decomposition::HLD&lt; X &gt; Class Template Reference</div> </div>
<div class="headertitle"><div class="title">range_queries::heavy_light_decomposition::HLD&lt; X &gt; Class Template Reference</div></div>
</div><!--header-->
<div class="contents">
@@ -111,11 +110,11 @@ Inheritance diagram for range_queries::heavy_light_decomposition::HLD&lt; X &gt;
<div class="dynheader">
Collaboration diagram for range_queries::heavy_light_decomposition::HLD&lt; X &gt;:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../dc/dd9/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d__coll__graph.svg" width="100%" height="511"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../dc/dd9/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d__coll__graph.svg" width="360" height="147"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="../../graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a6e486767434e44076c1ac374a22da726"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a6e486767434e44076c1ac374a22da726">HLD</a> (int nodes)</td></tr>
<tr class="memdesc:a6e486767434e44076c1ac374a22da726"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class parameterized constructor. Resizes the and initilizes the data members. <a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a6e486767434e44076c1ac374a22da726">More...</a><br /></td></tr>
@@ -155,7 +154,7 @@ Public Member Functions</h2></td></tr>
<tr class="memdesc:ae2b407e64aaf9878fbee7ee6efe9c7d4 inherit pub_methods_classrange__queries_1_1heavy__light__decomposition_1_1_tree"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function returns the least common ancestor of two nodes. <a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4">More...</a><br /></td></tr>
<tr class="separator:ae2b407e64aaf9878fbee7ee6efe9c7d4 inherit pub_methods_classrange__queries_1_1heavy__light__decomposition_1_1_tree"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:af64848d6630c39d0f09ce2359cc7c4f8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">dfs_hc</a> (int u, int p=-1)</td></tr>
<tr class="memdesc:af64848d6630c39d0f09ce2359cc7c4f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility function to assign heavy child to each node (-1 for a leaf node) <a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">More...</a><br /></td></tr>
@@ -170,30 +169,28 @@ Private Member Functions</h2></td></tr>
<tr class="memdesc:a7d5b40c076347a6aabfb37a0590f2f24"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility function to break down a path query into two chain queries. <a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">More...</a><br /></td></tr>
<tr class="separator:a7d5b40c076347a6aabfb37a0590f2f24"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a722cc7cf2c3e4d15583601a48b09776f"><td class="memItemLeft" align="right" valign="top"><a id="a722cc7cf2c3e4d15583601a48b09776f"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">label</a></td></tr>
<tr class="memitem:a722cc7cf2c3e4d15583601a48b09776f"><td class="memItemLeft" align="right" valign="top"><a id="a722cc7cf2c3e4d15583601a48b09776f" name="a722cc7cf2c3e4d15583601a48b09776f"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>label</b></td></tr>
<tr class="memdesc:a722cc7cf2c3e4d15583601a48b09776f"><td class="mdescLeft">&#160;</td><td class="mdescRight">utility member to assign labels in <a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8" title="Utility function to lable the nodes so that heavy chains have a contigous lable.">dfs_labels()</a> <br /></td></tr>
<tr class="separator:a722cc7cf2c3e4d15583601a48b09776f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa86a91ae0cd7898990a8170a2f2c9cda"><td class="memItemLeft" align="right" valign="top"><a id="aa86a91ae0cd7898990a8170a2f2c9cda"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a></td></tr>
<tr class="memitem:aa86a91ae0cd7898990a8170a2f2c9cda"><td class="memItemLeft" align="right" valign="top"><a id="aa86a91ae0cd7898990a8170a2f2c9cda" name="aa86a91ae0cd7898990a8170a2f2c9cda"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>h_label</b></td></tr>
<tr class="memdesc:aa86a91ae0cd7898990a8170a2f2c9cda"><td class="mdescLeft">&#160;</td><td class="mdescRight">stores the label of a node <br /></td></tr>
<tr class="separator:aa86a91ae0cd7898990a8170a2f2c9cda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84424f180f12b514eaab57a6aa20b104"><td class="memItemLeft" align="right" valign="top"><a id="a84424f180f12b514eaab57a6aa20b104"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a></td></tr>
<tr class="memitem:a84424f180f12b514eaab57a6aa20b104"><td class="memItemLeft" align="right" valign="top"><a id="a84424f180f12b514eaab57a6aa20b104" name="a84424f180f12b514eaab57a6aa20b104"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>h_heavychlid</b></td></tr>
<tr class="memdesc:a84424f180f12b514eaab57a6aa20b104"><td class="mdescLeft">&#160;</td><td class="mdescRight">stores the heavy child of a node <br /></td></tr>
<tr class="separator:a84424f180f12b514eaab57a6aa20b104"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b336474d17eff1aa4be73d4068dc725"><td class="memItemLeft" align="right" valign="top"><a id="a1b336474d17eff1aa4be73d4068dc725"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a></td></tr>
<tr class="memitem:a1b336474d17eff1aa4be73d4068dc725"><td class="memItemLeft" align="right" valign="top"><a id="a1b336474d17eff1aa4be73d4068dc725" name="a1b336474d17eff1aa4be73d4068dc725"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>h_parent</b></td></tr>
<tr class="memdesc:a1b336474d17eff1aa4be73d4068dc725"><td class="mdescLeft">&#160;</td><td class="mdescRight">stores the top of the heavy chain from a node <br /></td></tr>
<tr class="separator:a1b336474d17eff1aa4be73d4068dc725"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename X&gt;<br />
class range_queries::heavy_light_decomposition::HLD&lt; X &gt;</h3>
<p>The Heavy-Light Decomposition class. </p>
<div class="textblock"><div class="compoundTemplParams">template&lt;typename X&gt;<br />
class range_queries::heavy_light_decomposition::HLD&lt; X &gt;</div><p >The Heavy-Light Decomposition class. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">the</td><td>data type of the values stored in the tree nodes </td></tr>
@@ -201,7 +198,7 @@ class range_queries::heavy_light_decomposition::HLD&lt; X &gt;</h3>
</dd>
</dl>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a6e486767434e44076c1ac374a22da726"></a>
<a id="a6e486767434e44076c1ac374a22da726" name="a6e486767434e44076c1ac374a22da726"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e486767434e44076c1ac374a22da726">&#9670;&nbsp;</a></span>HLD()</h2>
<div class="memitem">
@@ -234,29 +231,25 @@ template&lt;typename X &gt; </div>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; : Tree&lt;X&gt;(nodes), SG&lt;X&gt;(nodes) {</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">/* Initialization and resize vectors */</span></div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">label</a> = 0;</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/assign.html">assign</a>(<a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree&lt;X&gt;::t_nodes</a>, -1);</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/assign.html">assign</a>(<a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree&lt;X&gt;::t_nodes</a>, -1);</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/resize.html">resize</a>(<a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree&lt;X&gt;::t_nodes</a>);</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/iota.html">iota</a>(<a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>(), <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/end.html">end</a>(), 0);</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div>
<div class="ttc" id="aassign_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/assign.html">std::vector::assign</a></div><div class="ttdeci">T assign(T... args)</div></div>
<div class="ttc" id="abegin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/begin.html">std::vector::begin</a></div><div class="ttdeci">T begin(T... args)</div></div>
<div class="fragment"><div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> : Tree&lt;X&gt;(nodes), SG&lt;X&gt;(nodes) {</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="comment">/* Initialization and resize vectors */</span></div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">label</a> = 0;</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>.assign(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree&lt;X&gt;::t_nodes</a>, -1);</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>.assign(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree&lt;X&gt;::t_nodes</a>, -1);</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>.resize(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree&lt;X&gt;::t_nodes</a>);</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/iota.html">iota</a>(<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>.begin(), <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>.end(), 0);</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a1b336474d17eff1aa4be73d4068dc725"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">range_queries::heavy_light_decomposition::HLD::h_parent</a></div><div class="ttdeci">std::vector&lt; int &gt; h_parent</div><div class="ttdoc">stores the top of the heavy chain from a node</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:341</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a722cc7cf2c3e4d15583601a48b09776f"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">range_queries::heavy_light_decomposition::HLD::label</a></div><div class="ttdeci">int label</div><div class="ttdoc">utility member to assign labels in dfs_labels()</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:338</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a84424f180f12b514eaab57a6aa20b104"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">range_queries::heavy_light_decomposition::HLD::h_heavychlid</a></div><div class="ttdeci">std::vector&lt; int &gt; h_heavychlid</div><div class="ttdoc">stores the heavy child of a node</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:340</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_aa86a91ae0cd7898990a8170a2f2c9cda"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">range_queries::heavy_light_decomposition::HLD::h_label</a></div><div class="ttdeci">std::vector&lt; int &gt; h_label</div><div class="ttdoc">stores the label of a node</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:339</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ae4630fa70a80a1dc65a875488a67178a"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">range_queries::heavy_light_decomposition::Tree::t_nodes</a></div><div class="ttdeci">const int t_nodes</div><div class="ttdoc">number of nodes</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:84</div></div>
<div class="ttc" id="aend_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/end.html">std::vector::end</a></div><div class="ttdeci">T end(T... args)</div></div>
<div class="ttc" id="aiota_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/iota.html">std::iota</a></div><div class="ttdeci">T iota(T... args)</div></div>
<div class="ttc" id="aresize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/resize.html">std::vector::resize</a></div><div class="ttdeci">T resize(T... args)</div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a7d5b40c076347a6aabfb37a0590f2f24"></a>
<a id="a7d5b40c076347a6aabfb37a0590f2f24" name="a7d5b40c076347a6aabfb37a0590f2f24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d5b40c076347a6aabfb37a0590f2f24">&#9670;&nbsp;</a></span>chain_query()</h2>
<div class="memitem">
@@ -301,25 +294,25 @@ template&lt;typename X &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the sum of ndoe values in the simple path from a to b </dd></dl>
<div class="fragment"><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; X ret = <a class="code" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#aa7f93971a9f891e0bbb7023081f379d5">SG&lt;X&gt;::sret_init</a>;</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[a] &lt; <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[b]) {</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(a, b);</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; }</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[a] &gt;= <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[b]) {</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordtype">int</span> l = <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[<a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]];</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordtype">int</span> r = <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[a];</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[<a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]] &lt; <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[b]) {</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; l += <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[b] - <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[<a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]];</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; ret = <a class="code" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74">SG&lt;X&gt;::combine</a>(ret, <a class="code" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a1fda852e6e522707fd97f61cdb0a2591">SG&lt;X&gt;::query</a>(l, r));</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; a = <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a350157a5fb79f76fceae33fc84171203">Tree&lt;X&gt;::t_par</a>[<a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]][0];</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (a == -1) {</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> {</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> X ret = <a class="code hl_variable" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#aa7f93971a9f891e0bbb7023081f379d5">SG&lt;X&gt;::sret_init</a>;</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[a] &lt; <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[b]) {</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(a, b);</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> }</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> <span class="keywordflow">while</span> (<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[a] &gt;= <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[b]) {</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> <span class="keywordtype">int</span> l = <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]];</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> <span class="keywordtype">int</span> r = <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[a];</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]] &lt; <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[b]) {</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> l += <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[b] - <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree&lt;X&gt;::t_depth</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]];</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> }</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> ret = <a class="code hl_function" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74">SG&lt;X&gt;::combine</a>(ret, <a class="code hl_function" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a1fda852e6e522707fd97f61cdb0a2591">SG&lt;X&gt;::query</a>(l, r));</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> a = <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a350157a5fb79f76fceae33fc84171203">Tree&lt;X&gt;::t_par</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]][0];</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> <span class="keywordflow">if</span> (a == -1) {</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> }</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> }</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <span class="keywordflow">return</span> ret;</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_a1fda852e6e522707fd97f61cdb0a2591"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a1fda852e6e522707fd97f61cdb0a2591">range_queries::heavy_light_decomposition::SG::query</a></div><div class="ttdeci">X query(int l, int r)</div><div class="ttdoc">Make a range query from node label l to node label r.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:305</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_a41c733f5f5e262b308f7cb95c88c1e74"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74">range_queries::heavy_light_decomposition::SG::combine</a></div><div class="ttdeci">X combine(X lhs, X rhs)</div><div class="ttdoc">Function that specifies the type of operation involved when segments are combined.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:274</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_aa7f93971a9f891e0bbb7023081f379d5"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#aa7f93971a9f891e0bbb7023081f379d5">range_queries::heavy_light_decomposition::SG::sret_init</a></div><div class="ttdeci">X sret_init</div><div class="ttdoc">inital query return value</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:264</div></div>
@@ -335,7 +328,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="af64848d6630c39d0f09ce2359cc7c4f8"></a>
<a id="af64848d6630c39d0f09ce2359cc7c4f8" name="af64848d6630c39d0f09ce2359cc7c4f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af64848d6630c39d0f09ce2359cc7c4f8">&#9670;&nbsp;</a></span>dfs_hc()</h2>
<div class="memitem">
@@ -380,26 +373,32 @@ template&lt;typename X &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordtype">int</span> hc_size = -1, hc_id = -1;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;v : <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">Tree&lt;X&gt;::t_adj</a>[u]) {</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span> (v ^ p) {</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">dfs_hc</a>(v, u);</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ada1494fccbc7f1f07b2f9be9f7e07ad5">Tree&lt;X&gt;::t_size</a>[v] &gt; hc_size) {</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; hc_size = <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ada1494fccbc7f1f07b2f9be9f7e07ad5">Tree&lt;X&gt;::t_size</a>[v];</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; hc_id = v;</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] = hc_id;</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> {</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> <span class="keywordtype">int</span> hc_size = -1, hc_id = -1;</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;v : <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">Tree&lt;X&gt;::t_adj</a>[u]) {</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> <span class="keywordflow">if</span> (v ^ p) {</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">dfs_hc</a>(v, u);</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ada1494fccbc7f1f07b2f9be9f7e07ad5">Tree&lt;X&gt;::t_size</a>[v] &gt; hc_size) {</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> hc_size = <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ada1494fccbc7f1f07b2f9be9f7e07ad5">Tree&lt;X&gt;::t_size</a>[v];</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> hc_id = v;</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> }</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> }</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> }</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] = hc_id;</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_af64848d6630c39d0f09ce2359cc7c4f8"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">range_queries::heavy_light_decomposition::HLD::dfs_hc</a></div><div class="ttdeci">void dfs_hc(int u, int p=-1)</div><div class="ttdoc">Utility function to assign heavy child to each node (-1 for a leaf node)</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:350</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ab1aeaefa1bd97b867c652ba916fbdb43"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">range_queries::heavy_light_decomposition::Tree::t_adj</a></div><div class="ttdeci">std::vector&lt; std::list&lt; int &gt; &gt; t_adj</div><div class="ttdoc">an adjacency list to stores the tree edges</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:83</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ada1494fccbc7f1f07b2f9be9f7e07ad5"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ada1494fccbc7f1f07b2f9be9f7e07ad5">range_queries::heavy_light_decomposition::Tree::t_size</a></div><div class="ttdeci">std::vector&lt; int &gt; t_size</div><div class="ttdoc">a vector to store the subtree size rooted at node</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:89</div></div>
</div><!-- fragment -->
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_af64848d6630c39d0f09ce2359cc7c4f8_cgraph.svg" width="162" height="91"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<a id="a0579062b384e54b611b80c6337c7f2c8"></a>
</div>
</div>
<a id="a0579062b384e54b611b80c6337c7f2c8" name="a0579062b384e54b611b80c6337c7f2c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0579062b384e54b611b80c6337c7f2c8">&#9670;&nbsp;</a></span>dfs_labels()</h2>
<div class="memitem">
@@ -444,22 +443,28 @@ template&lt;typename X &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[u] = <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">label</a>++;</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] != -1) {</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(<a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u], u);</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;v : <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">Tree&lt;X&gt;::t_adj</a>[u]) {</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">if</span> (v ^ p and v ^ <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]) {</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(v, u);</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> {</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[u] = <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">label</a>++;</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] != -1) {</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u], u);</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> }</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;v : <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">Tree&lt;X&gt;::t_adj</a>[u]) {</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <span class="keywordflow">if</span> (v ^ p and v ^ <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]) {</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(v, u);</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> }</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> }</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a0579062b384e54b611b80c6337c7f2c8"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">range_queries::heavy_light_decomposition::HLD::dfs_labels</a></div><div class="ttdeci">void dfs_labels(int u, int p=-1)</div><div class="ttdoc">Utility function to lable the nodes so that heavy chains have a contigous lable.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:390</div></div>
</div><!-- fragment -->
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_a0579062b384e54b611b80c6337c7f2c8_cgraph.svg" width="162" height="91"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<a id="a2dfbda148aad0bfaba2ebfda9ebc915a"></a>
</div>
</div>
<a id="a2dfbda148aad0bfaba2ebfda9ebc915a" name="a2dfbda148aad0bfaba2ebfda9ebc915a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2dfbda148aad0bfaba2ebfda9ebc915a">&#9670;&nbsp;</a></span>dfs_par()</h2>
<div class="memitem">
@@ -504,22 +509,28 @@ template&lt;typename X &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] != -1) {</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[<a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]] = <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[u];</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(<a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u], u);</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;v : <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">Tree&lt;X&gt;::t_adj</a>[u]) {</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">if</span> (v ^ p and v ^ <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]) {</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(v, u);</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> {</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] != -1) {</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]] = <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[u];</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u], u);</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> }</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;v : <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">Tree&lt;X&gt;::t_adj</a>[u]) {</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <span class="keywordflow">if</span> (v ^ p and v ^ <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]) {</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(v, u);</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> }</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> }</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a2dfbda148aad0bfaba2ebfda9ebc915a"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">range_queries::heavy_light_decomposition::HLD::dfs_par</a></div><div class="ttdeci">void dfs_par(int u, int p=-1)</div><div class="ttdoc">Utility function to assign highest parent that can be reached though heavy chains.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:371</div></div>
</div><!-- fragment -->
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_a2dfbda148aad0bfaba2ebfda9ebc915a_cgraph.svg" width="162" height="91"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<a id="ae9e979edd69678b85665c01e2ee97828"></a>
</div>
</div>
<a id="ae9e979edd69678b85665c01e2ee97828" name="ae9e979edd69678b85665c01e2ee97828"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae9e979edd69678b85665c01e2ee97828">&#9670;&nbsp;</a></span>init()</h2>
<div class="memitem">
@@ -546,24 +557,24 @@ template&lt;typename X &gt; </div>
<p>This function must be called after the tree adjacency list and node values are populated The function initializes the required parametes, and populates the segment tree. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ad22d760a5a33545a70e7ea5e1786c8dc">Tree&lt;X&gt;::init</a>();</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; </div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="comment">// Fill the heavy child, greatest parent, and labels</span></div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">label</a> = 0;</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">dfs_hc</a>(<a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">Tree&lt;X&gt;::t_root</a>);</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(<a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">Tree&lt;X&gt;::t_root</a>);</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(<a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">Tree&lt;X&gt;::t_root</a>);</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; </div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="comment">// Segment Tree Initialization</span></div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; Tree&lt;X&gt;::t_nodes; i++) {</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG&lt;X&gt;::s_tree</a>[<a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[i] + <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree&lt;X&gt;::t_nodes</a>] = <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree&lt;X&gt;::t_val</a>[i];</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree&lt;X&gt;::t_nodes</a> - 1; i &gt; 0; i--) {</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG&lt;X&gt;::s_tree</a>[i] =</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74">SG&lt;X&gt;::combine</a>(<a class="code" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG&lt;X&gt;::s_tree</a>[i &lt;&lt; 1], <a class="code" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG&lt;X&gt;::s_tree</a>[i &lt;&lt; 1 | 1]);</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> {</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> <a class="code hl_function" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ad22d760a5a33545a70e7ea5e1786c8dc">Tree&lt;X&gt;::init</a>();</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> </div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <span class="comment">// Fill the heavy child, greatest parent, and labels</span></div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">label</a> = 0;</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">dfs_hc</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">Tree&lt;X&gt;::t_root</a>);</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">Tree&lt;X&gt;::t_root</a>);</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">Tree&lt;X&gt;::t_root</a>);</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> </div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="comment">// Segment Tree Initialization</span></div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; Tree&lt;X&gt;::t_nodes; i++) {</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> <a class="code hl_variable" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG&lt;X&gt;::s_tree</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[i] + <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree&lt;X&gt;::t_nodes</a>] = <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree&lt;X&gt;::t_val</a>[i];</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> }</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree&lt;X&gt;::t_nodes</a> - 1; i &gt; 0; i--) {</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <a class="code hl_variable" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG&lt;X&gt;::s_tree</a>[i] =</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <a class="code hl_function" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74">SG&lt;X&gt;::combine</a>(<a class="code hl_variable" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG&lt;X&gt;::s_tree</a>[i &lt;&lt; 1], <a class="code hl_variable" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG&lt;X&gt;::s_tree</a>[i &lt;&lt; 1 | 1]);</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> }</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_afbf8a9cb9449d5ca844f4e141a801e6a"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">range_queries::heavy_light_decomposition::SG::s_tree</a></div><div class="ttdeci">std::vector&lt; X &gt; s_tree</div><div class="ttdoc">Everything here is private, and can only be accessed through the methods, in the derived class (HLD)</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:262</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_a135b7952593c9b1aae38fcaf1cc1abf7"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">range_queries::heavy_light_decomposition::Tree::t_val</a></div><div class="ttdeci">std::vector&lt; X &gt; t_val</div><div class="ttdoc">values of nodes</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:92</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_aa6c37e840355b9fb2105181c578694e8"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">range_queries::heavy_light_decomposition::Tree::t_root</a></div><div class="ttdeci">int t_root</div><div class="ttdoc">the root of the tree</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:91</div></div>
@@ -571,13 +582,13 @@ template&lt;typename X &gt; </div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_ae9e979edd69678b85665c01e2ee97828_cgraph.svg" width="559" height="427"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_ae9e979edd69678b85665c01e2ee97828_cgraph.svg" width="559" height="511"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="a4dfbf5d9df825eeb63b294c6849bdcab"></a>
<a id="a4dfbf5d9df825eeb63b294c6849bdcab" name="a4dfbf5d9df825eeb63b294c6849bdcab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4dfbf5d9df825eeb63b294c6849bdcab">&#9670;&nbsp;</a></span>query()</h2>
<div class="memitem">
@@ -622,14 +633,14 @@ template&lt;typename X &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the sum of node values in the simple path from a to b </dd></dl>
<div class="fragment"><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; {</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordtype">int</span> lc = <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4">Tree&lt;X&gt;::lca</a>(a, b);</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; X ret = <a class="code" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#aa7f93971a9f891e0bbb7023081f379d5">SG&lt;X&gt;::sret_init</a>;</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; assert(lc != -1);</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; ret += <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">chain_query</a>(a, lc);</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; ret += <a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">chain_query</a>(b, lc);</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span> ret - <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree&lt;X&gt;::t_val</a>[lc];</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> {</div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> <span class="keywordtype">int</span> lc = <a class="code hl_function" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4">Tree&lt;X&gt;::lca</a>(a, b);</div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> X ret = <a class="code hl_variable" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#aa7f93971a9f891e0bbb7023081f379d5">SG&lt;X&gt;::sret_init</a>;</div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> assert(lc != -1);</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> ret += <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">chain_query</a>(a, lc);</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> ret += <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">chain_query</a>(b, lc);</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> <span class="keywordflow">return</span> ret - <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree&lt;X&gt;::t_val</a>[lc];</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a7d5b40c076347a6aabfb37a0590f2f24"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">range_queries::heavy_light_decomposition::HLD::chain_query</a></div><div class="ttdeci">X chain_query(int a, int b)</div><div class="ttdoc">Utility function to break down a path query into two chain queries.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:409</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ae2b407e64aaf9878fbee7ee6efe9c7d4"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4">range_queries::heavy_light_decomposition::Tree::lca</a></div><div class="ttdeci">int lca(int a, int b)</div><div class="ttdoc">The function returns the least common ancestor of two nodes.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:229</div></div>
</div><!-- fragment --><div class="dynheader">
@@ -641,7 +652,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a9f1cb54ed09fde931bf3220d75ee4c57"></a>
<a id="a9f1cb54ed09fde931bf3220d75ee4c57" name="a9f1cb54ed09fde931bf3220d75ee4c57"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f1cb54ed09fde931bf3220d75ee4c57">&#9670;&nbsp;</a></span>update()</h2>
<div class="memitem">
@@ -686,11 +697,11 @@ template&lt;typename X &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; X diff = val - <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree&lt;X&gt;::t_val</a>[<a class="code" href="../../d1/df3/hash__search_8cpp.html#a8ca8dcb494104d273679e219e53d0555">node</a>];</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c">SG&lt;X&gt;::update</a>(<a class="code" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[<a class="code" href="../../d5/da1/structnode.html">node</a>], diff);</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree&lt;X&gt;::t_val</a>[<a class="code" href="../../d1/df3/hash__search_8cpp.html#a8ca8dcb494104d273679e219e53d0555">node</a>] = val;</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> {</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> X diff = val - <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree&lt;X&gt;::t_val</a>[<a class="code hl_typedef" href="../../d1/df3/hash__search_8cpp.html#a8ca8dcb494104d273679e219e53d0555">node</a>];</div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <a class="code hl_function" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c">SG&lt;X&gt;::update</a>(<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[<a class="code hl_class" href="../../d5/da1/structnode.html">node</a>], diff);</div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree&lt;X&gt;::t_val</a>[<a class="code hl_typedef" href="../../d1/df3/hash__search_8cpp.html#a8ca8dcb494104d273679e219e53d0555">node</a>] = val;</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_a3c75bf5770790f8eba8cc92227b5400c"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c">range_queries::heavy_light_decomposition::SG::update</a></div><div class="ttdeci">void update(int p, X v)</div><div class="ttdoc">Update the value at a node.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:293</div></div>
<div class="ttc" id="ahash__search_8cpp_html_a8ca8dcb494104d273679e219e53d0555"><div class="ttname"><a href="../../d1/df3/hash__search_8cpp.html#a8ca8dcb494104d273679e219e53d0555">node</a></div><div class="ttdeci">struct list node</div></div>
<div class="ttc" id="astructnode_html"><div class="ttname"><a href="../../d5/da1/structnode.html">node</a></div><div class="ttdef"><b>Definition:</b> avltree.cpp:13</div></div>
@@ -712,7 +723,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dd/d69/namespacerange__queries.html">range_queries</a></li><li class="navelem"><b>heavy_light_decomposition</b></li><li class="navelem"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">HLD</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -0,0 +1,3 @@
<map id="range_queries::heavy_light_decomposition::HLD::dfs_labels" name="range_queries::heavy_light_decomposition::HLD::dfs_labels">
<area shape="rect" id="node1" title="Utility function to lable the nodes so that heavy chains have a contigous lable." alt="" coords="5,29,156,85"/>
</map>

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: range_queries::heavy_light_decomposition::HLD::dfs_labels Pages: 1 -->
<svg width="121pt" height="68pt"
viewBox="0.00 0.00 121.00 68.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 64)">
<title>range_queries::heavy_light_decomposition::HLD::dfs_labels</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-64 117,-64 117,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title="Utility function to lable the nodes so that heavy chains have a contigous lable.">
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-41.5 113,-41.5 113,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="56.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M35.92,-41.86C33.67,-51.54 40.53,-60 56.5,-60 66.48,-60 72.9,-56.7 75.77,-51.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.25,-52.24 77.08,-41.86 72.31,-51.32 79.25,-52.24"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,3 @@
<map id="range_queries::heavy_light_decomposition::HLD::dfs_par" name="range_queries::heavy_light_decomposition::HLD::dfs_par">
<area shape="rect" id="node1" title="Utility function to assign highest parent that can be reached though heavy chains." alt="" coords="5,29,156,85"/>
</map>

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: range_queries::heavy_light_decomposition::HLD::dfs_par Pages: 1 -->
<svg width="121pt" height="68pt"
viewBox="0.00 0.00 121.00 68.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 64)">
<title>range_queries::heavy_light_decomposition::HLD::dfs_par</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-64 117,-64 117,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title="Utility function to assign highest parent that can be reached though heavy chains.">
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-41.5 113,-41.5 113,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="56.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M35.92,-41.86C33.67,-51.54 40.53,-60 56.5,-60 66.48,-60 72.9,-56.7 75.77,-51.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.25,-52.24 77.08,-41.86 72.31,-51.32 79.25,-52.24"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

Some files were not shown because too many files have changed in this diff Show More