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++: data_structures::queue_using_array::Queue_Array 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('d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -94,21 +94,14 @@ $(document).ready(function(){initNavTree('d6/d04/classdata__structures_1_1queue_
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="../../d8/dba/classdata__structures_1_1queue__using__array_1_1_queue___array-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">data_structures::queue_using_array::Queue_Array Class Reference</div> </div>
<div class="headertitle"><div class="title">data_structures::queue_using_array::Queue_Array Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a class="el" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html" title="Queue_Array class containing the main data and also index of head and tail of the array.">Queue_Array</a> class containing the main data and also index of head and tail of the array.
<a href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#details">More...</a></p>
<div class="dynheader">
Collaboration diagram for data_structures::queue_using_array::Queue_Array:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../db/d0f/classdata__structures_1_1queue__using__array_1_1_queue___array__coll__graph.svg" width="196" height="246"><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:a4dc64488c36f84d927365fa8d1933663"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a4dc64488c36f84d927365fa8d1933663">enqueue</a> (const int16_t &amp;)</td></tr>
<tr class="memdesc:a4dc64488c36f84d927365fa8d1933663"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add element to the first of the queue. <a href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a4dc64488c36f84d927365fa8d1933663">More...</a><br /></td></tr>
@@ -120,25 +113,25 @@ Public Member Functions</h2></td></tr>
<tr class="memdesc:a688b7ea064739ea9fa66bf64bf4ae631"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show all saved data. <a href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a688b7ea064739ea9fa66bf64bf4ae631">More...</a><br /></td></tr>
<tr class="separator:a688b7ea064739ea9fa66bf64bf4ae631"><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:a2f676f2f249eb36dfd49711a03e9e67e"><td class="memItemLeft" align="right" valign="top"><a id="a2f676f2f249eb36dfd49711a03e9e67e"></a>
int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> {-1}</td></tr>
<tr class="memitem:a2f676f2f249eb36dfd49711a03e9e67e"><td class="memItemLeft" align="right" valign="top"><a id="a2f676f2f249eb36dfd49711a03e9e67e" name="a2f676f2f249eb36dfd49711a03e9e67e"></a>
int8_t&#160;</td><td class="memItemRight" valign="bottom"><b>front</b> {-1}</td></tr>
<tr class="memdesc:a2f676f2f249eb36dfd49711a03e9e67e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Index of head of the array. <br /></td></tr>
<tr class="separator:a2f676f2f249eb36dfd49711a03e9e67e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9883dfcceede9a42227d2d313ae86f85"><td class="memItemLeft" align="right" valign="top"><a id="a9883dfcceede9a42227d2d313ae86f85"></a>
int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a> {-1}</td></tr>
<tr class="memitem:a9883dfcceede9a42227d2d313ae86f85"><td class="memItemLeft" align="right" valign="top"><a id="a9883dfcceede9a42227d2d313ae86f85" name="a9883dfcceede9a42227d2d313ae86f85"></a>
int8_t&#160;</td><td class="memItemRight" valign="bottom"><b>rear</b> {-1}</td></tr>
<tr class="memdesc:a9883dfcceede9a42227d2d313ae86f85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Index of tail of the array. <br /></td></tr>
<tr class="separator:a9883dfcceede9a42227d2d313ae86f85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae69a0bf6c9921b37c516c8a4d2fb904d"><td class="memItemLeft" align="right" valign="top"><a id="ae69a0bf6c9921b37c516c8a4d2fb904d"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; int16_t, <a class="el" href="../../d8/df0/queue__using__array_8cpp.html#a2d49e79bd164c298912db252970520d8">max_size</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a> {}</td></tr>
<tr class="memitem:ae69a0bf6c9921b37c516c8a4d2fb904d"><td class="memItemLeft" align="right" valign="top"><a id="ae69a0bf6c9921b37c516c8a4d2fb904d" name="ae69a0bf6c9921b37c516c8a4d2fb904d"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; int16_t, <a class="el" href="../../d8/df0/queue__using__array_8cpp.html#a2d49e79bd164c298912db252970520d8">max_size</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>arr</b> {}</td></tr>
<tr class="memdesc:ae69a0bf6c9921b37c516c8a4d2fb904d"><td class="mdescLeft">&#160;</td><td class="mdescRight">All stored data. <br /></td></tr>
<tr class="separator:ae69a0bf6c9921b37c516c8a4d2fb904d"><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="el" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html" title="Queue_Array class containing the main data and also index of head and tail of the array.">Queue_Array</a> class containing the main data and also index of head and tail of the array. </p>
<div class="textblock"><p ><a class="el" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html" title="Queue_Array class containing the main data and also index of head and tail of the array.">Queue_Array</a> class containing the main data and also index of head and tail of the array. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a2aaf88c9954ef3ab686f8e4bfbd87622"></a>
<a id="a2aaf88c9954ef3ab686f8e4bfbd87622" name="a2aaf88c9954ef3ab686f8e4bfbd87622"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2aaf88c9954ef3ab686f8e4bfbd87622">&#9670;&nbsp;</a></span>dequeue()</h2>
<div class="memitem">
@@ -154,37 +147,30 @@ int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="..
</div><div class="memdoc">
<p>Delete element from back of the queue. </p>
<p>Remove element that is located at the first of the queue.</p>
<p >Remove element that is located at the first of the queue.</p>
<dl class="section return"><dt>Returns</dt><dd>data that is deleted if queue is not empty </dd></dl>
<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; int8_t d{0};</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> == -1) {</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</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;\nstack is empty &quot;</span>;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> == <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a>) {</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; d = <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/at.html">at</a>(<a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a>);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> = <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a> = -1;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; d = <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/at.html">at</a>(<a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a>++);</div>
<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; </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> d;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div>
<div class="ttc" id="aat_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/array/at.html">std::array::at</a></div><div class="ttdeci">T at(T... args)</div></div>
<div class="fragment"><div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> {</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> int8_t d{0};</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> == -1) {</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</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;\nstack is empty &quot;</span>;</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> == <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a>) {</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> d = <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>.at(<a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a>);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> = <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a> = -1;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> d = <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>.at(<a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a>++);</div>
<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> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordflow">return</span> d;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</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="aclassdata__structures_1_1queue__using__array_1_1_queue___array_html_a2f676f2f249eb36dfd49711a03e9e67e"><div class="ttname"><a href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">data_structures::queue_using_array::Queue_Array::front</a></div><div class="ttdeci">int8_t front</div><div class="ttdoc">Index of head of the array.</div><div class="ttdef"><b>Definition:</b> queue_using_array.cpp:49</div></div>
<div class="ttc" id="aclassdata__structures_1_1queue__using__array_1_1_queue___array_html_a9883dfcceede9a42227d2d313ae86f85"><div class="ttname"><a href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">data_structures::queue_using_array::Queue_Array::rear</a></div><div class="ttdeci">int8_t rear</div><div class="ttdoc">Index of tail of the array.</div><div class="ttdef"><b>Definition:</b> queue_using_array.cpp:50</div></div>
<div class="ttc" id="aclassdata__structures_1_1queue__using__array_1_1_queue___array_html_ae69a0bf6c9921b37c516c8a4d2fb904d"><div class="ttname"><a href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">data_structures::queue_using_array::Queue_Array::arr</a></div><div class="ttdeci">std::array&lt; int16_t, max_size &gt; arr</div><div class="ttdoc">All stored data.</div><div class="ttdef"><b>Definition:</b> queue_using_array.cpp:51</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="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array_a2aaf88c9954ef3ab686f8e4bfbd87622_cgraph.svg" width="340" height="67"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div><!-- fragment -->
</div>
</div>
</div>
</div>
<a id="a688b7ea064739ea9fa66bf64bf4ae631"></a>
<a id="a688b7ea064739ea9fa66bf64bf4ae631" name="a688b7ea064739ea9fa66bf64bf4ae631"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a688b7ea064739ea9fa66bf64bf4ae631">&#9670;&nbsp;</a></span>display()</h2>
<div class="memitem">
@@ -200,24 +186,18 @@ Here is the call graph for this function:</div>
</div><div class="memdoc">
<p>Show all saved data. </p>
<p>Utility function to show all elements in the queue. </p>
<div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> == -1) {</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; <span class="stringliteral">&quot;\nStack is empty&quot;</span>;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">for</span> (int16_t i{<a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a>}; i &lt;= <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a>; ++i) <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/at.html">at</a>(i) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</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;}</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="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array_a688b7ea064739ea9fa66bf64bf4ae631_cgraph.svg" width="340" height="67"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<p >Utility function to show all elements in the queue. </p>
<div class="fragment"><div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> {</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> == -1) {</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; <span class="stringliteral">&quot;\nStack is empty&quot;</span>;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">for</span> (int16_t i{<a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a>}; i &lt;= <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a>; ++i) <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_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>.at(i) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</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>}</div>
</div><!-- fragment -->
</div>
</div>
</div>
</div>
<a id="a4dc64488c36f84d927365fa8d1933663"></a>
<a id="a4dc64488c36f84d927365fa8d1933663" name="a4dc64488c36f84d927365fa8d1933663"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4dc64488c36f84d927365fa8d1933663">&#9670;&nbsp;</a></span>enqueue()</h2>
<div class="memitem">
@@ -234,33 +214,26 @@ Here is the call graph for this function:</div>
</div><div class="memdoc">
<p>Add element to the first of the queue. </p>
<p>Adds new element to the end of the queue.</p>
<p >Adds new element to the end of the queue.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ele</td><td>to be added to the end of the queue </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a> == <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/size.html">size</a>() - 1) {</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/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nStack is full&quot;</span>;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> == -1 &amp;&amp; <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a> == -1) {</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> = 0;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a> = 0;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>[<a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a>] = ele;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a> &lt; <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/size.html">size</a>()) {</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; ++<a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a>;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>[<a class="code" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a>] = ele;</div>
<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;}</div>
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/array/size.html">std::array::size</a></div><div class="ttdeci">T size(T... args)</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="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array_a4dc64488c36f84d927365fa8d1933663_cgraph.svg" width="354" height="67"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="fragment"><div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> {</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a> == <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>.size() - 1) {</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/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nStack is full&quot;</span>;</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> == -1 &amp;&amp; <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a> == -1) {</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a2f676f2f249eb36dfd49711a03e9e67e">front</a> = 0;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a> = 0;</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>[<a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a>] = ele;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a> &lt; <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>.size()) {</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> ++<a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a>;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#ae69a0bf6c9921b37c516c8a4d2fb904d">arr</a>[<a class="code hl_variable" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html#a9883dfcceede9a42227d2d313ae86f85">rear</a>] = ele;</div>
<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>}</div>
</div><!-- fragment -->
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
@@ -272,7 +245,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="../../d5/d3c/namespacedata__structures.html">data_structures</a></li><li class="navelem"><b>queue_using_array</b></li><li class="navelem"><a class="el" href="../../d6/d04/classdata__structures_1_1queue__using__array_1_1_queue___array.html">Queue_Array</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,4 +0,0 @@
<map id="data_structures::queue_using_array::Queue_Array::dequeue" name="data_structures::queue_using_array::Queue_Array::dequeue">
<area shape="rect" id="node1" title="Delete element from back of the queue." alt="" coords="5,5,191,61"/>
<area shape="rect" id="node2" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/array/at.html#" title=" " alt="" coords="239,20,335,47"/>
</map>

View File

@@ -1,39 +0,0 @@
<?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)
-->
<!-- Title: data_structures::queue_using_array::Queue_Array::dequeue Pages: 1 -->
<svg width="255pt" height="50pt"
viewBox="0.00 0.00 255.00 50.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 46)">
<title>data_structures::queue_using_array::Queue_Array::dequeue</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-46 251,-46 251,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title="Delete element from back of the queue.">
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-41.5 139,-41.5 139,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">data_structures::queue</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_using_array::Queue_Array</text>
<text text-anchor="middle" x="69.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::dequeue</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/array/at.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="175,-11.5 175,-30.5 247,-30.5 247,-11.5 175,-11.5"/>
<text text-anchor="middle" x="211" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::array::at</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="M139.02,-21C147.74,-21 156.49,-21 164.72,-21"/>
<polygon fill="midnightblue" stroke="midnightblue" points="164.82,-24.5 174.82,-21 164.82,-17.5 164.82,-24.5"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -1,4 +0,0 @@
<map id="data_structures::queue_using_array::Queue_Array::enqueue" name="data_structures::queue_using_array::Queue_Array::enqueue">
<area shape="rect" id="node1" title="Add element to the first of the queue." alt="" coords="5,5,191,61"/>
<area shape="rect" id="node2" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/array/size.html#" title=" " alt="" coords="239,20,348,47"/>
</map>

View File

@@ -1,39 +0,0 @@
<?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)
-->
<!-- Title: data_structures::queue_using_array::Queue_Array::enqueue Pages: 1 -->
<svg width="265pt" height="50pt"
viewBox="0.00 0.00 265.00 50.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 46)">
<title>data_structures::queue_using_array::Queue_Array::enqueue</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-46 261,-46 261,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title="Add element to the first of the queue.">
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-41.5 139,-41.5 139,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">data_structures::queue</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_using_array::Queue_Array</text>
<text text-anchor="middle" x="69.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::enqueue</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/array/size.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="175,-11.5 175,-30.5 257,-30.5 257,-11.5 175,-11.5"/>
<text text-anchor="middle" x="216" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::array::size</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="M139.36,-21C147.95,-21 156.6,-21 164.83,-21"/>
<polygon fill="midnightblue" stroke="midnightblue" points="164.99,-24.5 174.99,-21 164.99,-17.5 164.99,-24.5"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -1,4 +0,0 @@
<map id="data_structures::queue_using_array::Queue_Array::display" name="data_structures::queue_using_array::Queue_Array::display">
<area shape="rect" id="node1" title="Show all saved data." alt="" coords="5,5,191,61"/>
<area shape="rect" id="node2" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/array/at.html#" title=" " alt="" coords="239,20,335,47"/>
</map>

View File

@@ -1,39 +0,0 @@
<?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)
-->
<!-- Title: data_structures::queue_using_array::Queue_Array::display Pages: 1 -->
<svg width="255pt" height="50pt"
viewBox="0.00 0.00 255.00 50.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 46)">
<title>data_structures::queue_using_array::Queue_Array::display</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-46 251,-46 251,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title="Show all saved data.">
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-41.5 139,-41.5 139,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">data_structures::queue</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_using_array::Queue_Array</text>
<text text-anchor="middle" x="69.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::display</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/array/at.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="175,-11.5 175,-30.5 247,-30.5 247,-11.5 175,-11.5"/>
<text text-anchor="middle" x="211" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::array::at</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="M139.02,-21C147.74,-21 156.49,-21 164.72,-21"/>
<polygon fill="midnightblue" stroke="midnightblue" points="164.82,-24.5 174.82,-21 164.82,-17.5 164.82,-24.5"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.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++: dynamic_programming/cut_rod.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('d6/d10/cut__rod_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -93,8 +93,7 @@ $(document).ready(function(){initNavTree('d6/d10/cut__rod_8cpp.html','../../');
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">cut_rod.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">cut_rod.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
@@ -111,16 +110,16 @@ Include dependency graph for cut_rod.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:dd/d24/namespacedynamic__programming"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d24/namespacedynamic__programming.html">dynamic_programming</a></td></tr>
<tr class="memitem:dd/d24/namespacedynamic__programming"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d24/namespacedynamic__programming.html">dynamic_programming</a></td></tr>
<tr class="memdesc:dd/d24/namespacedynamic__programming"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dynamic Programming algorithms. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d8/d36/namespacecut__rod"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d36/namespacecut__rod.html">cut_rod</a></td></tr>
<tr class="memitem:d8/d36/namespacecut__rod"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d36/namespacecut__rod.html">cut_rod</a></td></tr>
<tr class="memdesc:d8/d36/namespacecut__rod"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implementation of cutting a rod 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:a1cc523a30c18c63eac58220c3c494cfa"><td class="memTemplParams" colspan="2">template&lt;size_t T&gt; </td></tr>
<tr class="memitem:a1cc523a30c18c63eac58220c3c494cfa"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d6/d10/cut__rod_8cpp.html#a1cc523a30c18c63eac58220c3c494cfa">dynamic_programming::cut_rod::maxProfitByCuttingRod</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; int, T &gt; &amp;price, const uint64_t &amp;n)</td></tr>
@@ -134,16 +133,16 @@ 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 cutting a rod problem. </p>
<p>Given a rod of length n inches and an array of prices that contains prices of all pieces of size&lt;=n. Determine the maximum profit obtainable by cutting up the rod and selling the pieces.</p>
<div class="textblock"><p >Implementation of cutting a rod problem. </p>
<p >Given a rod of length n inches and an array of prices that contains prices of all pieces of size&lt;=n. Determine the maximum profit obtainable by cutting up the rod and selling the pieces.</p>
<h3><a class="anchor" id="autotoc_md62"></a>
Algorithm</h3>
<p>The idea is to break the given rod into every smaller piece as possible and then check profit for each piece, by calculating maximum profit for smaller pieces we will build the solution for larger pieces in bottom-up manner.</p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/Anmol3299">Anmol</a> </dd>
<p >The idea is to break the given rod into every smaller piece as possible and then check profit for each piece, by calculating maximum profit for smaller pieces we will build the solution for larger pieces in bottom-up manner.</p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/Anmol3299" target="_blank">Anmol</a> </dd>
<dd>
<a href="https://github.com/Pardeep009">Pardeep</a> </dd></dl>
<a href="https://github.com/Pardeep009" target="_blank">Pardeep</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">
@@ -161,11 +160,11 @@ Algorithm</h3>
<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="l00110"></a><span class="lineno"> 110</span>&#160; {</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">// Testing</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="../../d6/d10/cut__rod_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>();</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> {</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// Testing</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <a class="code hl_function" href="../../d6/d10/cut__rod_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>();</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span>}</div>
<div class="ttc" id="acut__rod_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d6/d10/cut__rod_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Function to test above algorithm.</div><div class="ttdef"><b>Definition:</b> cut_rod.cpp:71</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -176,7 +175,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a1cc523a30c18c63eac58220c3c494cfa"></a>
<a id="a1cc523a30c18c63eac58220c3c494cfa" name="a1cc523a30c18c63eac58220c3c494cfa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1cc523a30c18c63eac58220c3c494cfa">&#9670;&nbsp;</a></span>maxProfitByCuttingRod()</h2>
<div class="memitem">
@@ -225,26 +224,26 @@ template&lt;size_t T&gt; </div>
</table>
</dd>
</dl>
<div class="fragment"><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; <span class="keywordtype">int</span> *profit =</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">new</span> <span class="keywordtype">int</span>[n + 1]; <span class="comment">// profit[i] will hold maximum profit for i inch rod</span></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; profit[0] = 0; <span class="comment">// if length of rod is zero, then no profit</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// outer loop will select size of rod, starting from 1 inch to n inch rod.</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// inner loop will evaluate the maximum profit we can get for i inch rod by</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// making every possible cut on it and will store it in profit[i].</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 1; i &lt;= n; i++) {</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">int</span> q = INT_MIN;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 1; j &lt;= i; j++) {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; q = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a>(q, price[j - 1] + profit[i - j]);</div>
<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; profit[i] = q;</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; <span class="keyword">const</span> int16_t <a class="code" href="../../d7/d35/matrix__exponentiation_8cpp.html#ad8389ed58fd0ec66df248014775ad1fa">ans</a> = profit[n];</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">delete</span>[] profit;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d7/d35/matrix__exponentiation_8cpp.html#ad8389ed58fd0ec66df248014775ad1fa">ans</a>; <span class="comment">// returning maximum profit</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div>
<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> *profit =</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">new</span> <span class="keywordtype">int</span>[n + 1]; <span class="comment">// profit[i] will hold maximum profit for i inch rod</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> profit[0] = 0; <span class="comment">// if length of rod is zero, then no profit</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// outer loop will select size of rod, starting from 1 inch to n inch rod.</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// inner loop will evaluate the maximum profit we can get for i inch rod by</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// making every possible cut on it and will store it in profit[i].</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 1; i &lt;= n; i++) {</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordtype">int</span> q = INT_MIN;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 1; j &lt;= i; j++) {</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> q = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a>(q, price[j - 1] + profit[i - j]);</div>
<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> profit[i] = q;</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> <span class="keyword">const</span> int16_t <a class="code hl_function" href="../../d7/d35/matrix__exponentiation_8cpp.html#ad8389ed58fd0ec66df248014775ad1fa">ans</a> = profit[n];</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">delete</span>[] profit;</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="../../d7/d35/matrix__exponentiation_8cpp.html#ad8389ed58fd0ec66df248014775ad1fa">ans</a>; <span class="comment">// returning maximum profit</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span>}</div>
<div class="ttc" id="amatrix__exponentiation_8cpp_html_ad8389ed58fd0ec66df248014775ad1fa"><div class="ttname"><a href="../../d7/d35/matrix__exponentiation_8cpp.html#ad8389ed58fd0ec66df248014775ad1fa">ans</a></div><div class="ttdeci">ll ans(ll n)</div><div class="ttdef"><b>Definition:</b> matrix_exponentiation.cpp:91</div></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">
@@ -256,7 +255,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">
@@ -281,40 +280,40 @@ Here is the call graph for this function:</div>
<p>Function to test above algorithm. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><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; <span class="comment">// Test 1</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> int16_t n1 = 8; <span class="comment">// size of rod</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;int32_t, n1&gt;</a> price1 = {1,2,4,6,8,45,21,9}; <span class="comment">// price array</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> int64_t max_profit1 =</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="../../d6/d10/cut__rod_8cpp.html#a1cc523a30c18c63eac58220c3c494cfa">dynamic_programming::cut_rod::maxProfitByCuttingRod</a>(price1, n1);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> int64_t expected_max_profit1 = 47;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; assert(max_profit1 == expected_max_profit1);</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/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Maximum profit with &quot;</span> &lt;&lt; n1 &lt;&lt; <span class="stringliteral">&quot; inch road is &quot;</span> &lt;&lt; max_profit1</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</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="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">// Test 2</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> int16_t n2 = 30; <span class="comment">// size of rod</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/array.html">std::array&lt;int32_t, n2&gt;</a> price2 = {</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; 1, 5, 8, 9, 10, 17, 17, 20, 24, 30, <span class="comment">// price array</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; 41, 42, 43, 44, 45, 46, 47, 48, 49, 50};</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">const</span> int64_t max_profit2=</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="../../d6/d10/cut__rod_8cpp.html#a1cc523a30c18c63eac58220c3c494cfa">dynamic_programming::cut_rod::maxProfitByCuttingRod</a>(price2, n2);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> int32_t expected_max_profit2 = 90;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; assert(max_profit2 == expected_max_profit2);</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;Maximum profit with &quot;</span> &lt;&lt; n2 &lt;&lt; <span class="stringliteral">&quot; inch road is &quot;</span> &lt;&lt; max_profit2</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</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="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// Test 3</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> int16_t n3 = 5; <span class="comment">// size of rod</span></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/container/array.html">std::array&lt;int32_t, n3&gt;</a> price3 = {2,9,17,23,45}; <span class="comment">// price array</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">const</span> int64_t max_profit3 =</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="../../d6/d10/cut__rod_8cpp.html#a1cc523a30c18c63eac58220c3c494cfa">dynamic_programming::cut_rod::maxProfitByCuttingRod</a>(price3, n3);</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> int64_t expected_max_profit3 = 45;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; assert(max_profit3 == expected_max_profit3);</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/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Maximum profit with &quot;</span> &lt;&lt; n3 &lt;&lt; <span class="stringliteral">&quot; inch road is &quot;</span> &lt;&lt; max_profit3</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</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="l00104"></a><span class="lineno"> 104</span>&#160;}</div>
<div class="fragment"><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> <span class="comment">// Test 1</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">const</span> int16_t n1 = 8; <span class="comment">// size of rod</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;int32_t, n1&gt;</a> price1 = {1,2,4,6,8,45,21,9}; <span class="comment">// price array</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">const</span> int64_t max_profit1 =</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <a class="code hl_function" href="../../d6/d10/cut__rod_8cpp.html#a1cc523a30c18c63eac58220c3c494cfa">dynamic_programming::cut_rod::maxProfitByCuttingRod</a>(price1, n1);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">const</span> int64_t expected_max_profit1 = 47;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> assert(max_profit1 == expected_max_profit1);</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</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;Maximum profit with &quot;</span> &lt;&lt; n1 &lt;&lt; <span class="stringliteral">&quot; inch road is &quot;</span> &lt;&lt; max_profit1</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</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">// Test 2</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">const</span> int16_t n2 = 30; <span class="comment">// size of rod</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/array.html">std::array&lt;int32_t, n2&gt;</a> price2 = {</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> 1, 5, 8, 9, 10, 17, 17, 20, 24, 30, <span class="comment">// price array</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> 41, 42, 43, 44, 45, 46, 47, 48, 49, 50};</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">const</span> int64_t max_profit2=</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <a class="code hl_function" href="../../d6/d10/cut__rod_8cpp.html#a1cc523a30c18c63eac58220c3c494cfa">dynamic_programming::cut_rod::maxProfitByCuttingRod</a>(price2, n2);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">const</span> int32_t expected_max_profit2 = 90;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> assert(max_profit2 == expected_max_profit2);</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;Maximum profit with &quot;</span> &lt;&lt; n2 &lt;&lt; <span class="stringliteral">&quot; inch road is &quot;</span> &lt;&lt; max_profit2</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</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="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// Test 3</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">const</span> int16_t n3 = 5; <span class="comment">// size of rod</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/container/array.html">std::array&lt;int32_t, n3&gt;</a> price3 = {2,9,17,23,45}; <span class="comment">// price array</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">const</span> int64_t max_profit3 =</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <a class="code hl_function" href="../../d6/d10/cut__rod_8cpp.html#a1cc523a30c18c63eac58220c3c494cfa">dynamic_programming::cut_rod::maxProfitByCuttingRod</a>(price3, n3);</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">const</span> int64_t expected_max_profit3 = 45;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> assert(max_profit3 == expected_max_profit3);</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/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Maximum profit with &quot;</span> &lt;&lt; n3 &lt;&lt; <span class="stringliteral">&quot; inch road is &quot;</span> &lt;&lt; max_profit3</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</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="l00104" name="l00104"></a><span class="lineno"> 104</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="acut__rod_8cpp_html_a1cc523a30c18c63eac58220c3c494cfa"><div class="ttname"><a href="../../d6/d10/cut__rod_8cpp.html#a1cc523a30c18c63eac58220c3c494cfa">dynamic_programming::cut_rod::maxProfitByCuttingRod</a></div><div class="ttdeci">int maxProfitByCuttingRod(const std::array&lt; int, T &gt; &amp;price, const uint64_t &amp;n)</div><div class="ttdoc">Cuts the rod in different pieces and stores the maximum profit for each piece of the rod.</div><div class="ttdef"><b>Definition:</b> cut_rod.cpp:44</div></div>
@@ -334,7 +333,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_8a20dd5bfd5341a725342bf72b6b686f.html">dynamic_programming</a></li><li class="navelem"><a class="el" href="../../d6/d10/cut__rod_8cpp.html">cut_rod.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: dynamic_programming::cut_rod::maxProfitByCuttingRod Pages: 1 -->
<svg width="263pt" height="71pt"

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: 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

@@ -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/dnf_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('d6/d1a/dnf__sort_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -93,12 +93,11 @@ $(document).ready(function(){initNavTree('d6/d1a/dnf__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">dnf_sort.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">dnf_sort.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Implementation of the <a href="https://www.geeksforgeeks.org/sort-an-array-of-0s-1s-and-2s/">DNF sort</a> implementation.
<p>Implementation of the <a href="https://www.geeksforgeeks.org/sort-an-array-of-0s-1s-and-2s/" target="_blank">DNF 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 />
@@ -111,21 +110,21 @@ Include dependency graph for dnf_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>
<tr class="memitem:d9/d75/namespacednf__sort"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d75/namespacednf__sort.html">dnf_sort</a></td></tr>
<tr class="memdesc:d9/d75/namespacednf__sort"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for the <a href="https://en.wikipedia.org/wiki/Dutch_national_flag_problem">DNF sort</a> implementation. <br /></td></tr>
<tr class="memitem:d9/d75/namespacednf__sort"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d75/namespacednf__sort.html">dnf_sort</a></td></tr>
<tr class="memdesc:d9/d75/namespacednf__sort"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for the <a href="https://en.wikipedia.org/wiki/Dutch_national_flag_problem" target="_blank">DNF sort</a> implementation. <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:a60688fc307dbb4b71969dfc191e1e67b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a60688fc307dbb4b71969dfc191e1e67b"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d6/d1a/dnf__sort_8cpp.html#a60688fc307dbb4b71969dfc191e1e67b">sorting::dnf_sort::dnfSort</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; T &gt; &amp;in_arr)</td></tr>
<tr class="memdesc:a60688fc307dbb4b71969dfc191e1e67b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The main function implements DNF sort. <a href="../../d6/d1a/dnf__sort_8cpp.html#a60688fc307dbb4b71969dfc191e1e67b">More...</a><br /></td></tr>
<tr class="separator:a60688fc307dbb4b71969dfc191e1e67b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a621767fe711db64fe57a2ac4987b11f0"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a621767fe711db64fe57a2ac4987b11f0"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d6/d1a/dnf__sort_8cpp.html#a621767fe711db64fe57a2ac4987b11f0">sorting::dnf_sort::dnfSort</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; T &gt; &amp;in_arr)</td></tr>
<tr class="memdesc:a621767fe711db64fe57a2ac4987b11f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">The main function implements DNF sort. <a href="../../d6/d1a/dnf__sort_8cpp.html#a621767fe711db64fe57a2ac4987b11f0">More...</a><br /></td></tr>
<tr class="separator:a621767fe711db64fe57a2ac4987b11f0"><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="../../d6/d1a/dnf__sort_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a> ()</td></tr>
<tr class="memdesc:aa8dca7b867074164d5f45b0f3851269d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Self-test implementations. <a href="../../d6/d1a/dnf__sort_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">More...</a><br /></td></tr>
<tr class="separator:aa8dca7b867074164d5f45b0f3851269d"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -134,11 +133,11 @@ 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://www.geeksforgeeks.org/sort-an-array-of-0s-1s-and-2s/">DNF sort</a> implementation. </p>
<p>C++ program to sort an array with 0, 1 and 2 in a single pass(DNF sort). Since one traversal of the array is there hence it works in O(n) time complexity. </p><dl class="section author"><dt>Author</dt><dd><a href="https://github.com/heysujal">Sujal Gupta</a> </dd></dl>
<div class="textblock"><p >Implementation of the <a href="https://www.geeksforgeeks.org/sort-an-array-of-0s-1s-and-2s/" target="_blank">DNF sort</a> implementation. </p>
<p >C++ program to sort an array with 0, 1 and 2 in a single pass(DNF sort). Since one traversal of the array is there hence it works in O(n) time complexity. </p><dl class="section author"><dt>Author</dt><dd><a href="https://github.com/heysujal" target="_blank">Sujal Gupta</a> </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a60688fc307dbb4b71969dfc191e1e67b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60688fc307dbb4b71969dfc191e1e67b">&#9670;&nbsp;</a></span>dnfSort()</h2>
<a id="a621767fe711db64fe57a2ac4987b11f0" name="a621767fe711db64fe57a2ac4987b11f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a621767fe711db64fe57a2ac4987b11f0">&#9670;&nbsp;</a></span>dnfSort()</h2>
<div class="memitem">
<div class="memproto">
@@ -146,7 +145,7 @@ Functions</h2></td></tr>
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/container/vector.html">std::vector</a>&lt;T&gt; sorting::dnf_sort::dnfSort </td>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; T &gt; sorting::dnf_sort::dnfSort </td>
<td>(</td>
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>in_arr</em></td><td>)</td>
@@ -170,46 +169,46 @@ 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="l00036"></a><span class="lineno"> 36</span>&#160; {</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;T&gt;</a> arr(in_arr);</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; uint64_t lo = 0;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; uint64_t hi = arr.size() - 1;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; uint64_t mid = 0;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; </div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Iterate till all the elements</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// are sorted</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">while</span> (mid &lt;= hi) {</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">switch</span> (arr[mid]) {</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// If the element is 0</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> 0:</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(arr[lo++], arr[mid++]);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">break</span>;</div>
<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">// If the element is 1 .</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> 1:</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; mid++;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">break</span>;</div>
<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="comment">// If the element is 2</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> 2:</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(arr[mid], arr[hi--]);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">break</span>;</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; }</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> arr;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</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/container/vector.html">std::vector&lt;T&gt;</a> arr(in_arr);</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> uint64_t lo = 0;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> uint64_t hi = arr.size() - 1;</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> uint64_t mid = 0;</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="comment">// Iterate till all the elements</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// are sorted</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">while</span> (mid &lt;= hi) {</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">switch</span> (arr[mid]) {</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// If the element is 0</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordflow">case</span> 0:</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(arr[lo++], arr[mid++]);</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// If the element is 1 .</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">case</span> 1:</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> mid++;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">break</span>;</div>
<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">// If the element is 2</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordflow">case</span> 2:</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(arr[mid], arr[hi--]);</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">break</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> }</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">return</span> arr;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</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 class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a></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="../../d6/d1a/dnf__sort_8cpp_a60688fc307dbb4b71969dfc191e1e67b_cgraph.svg" width="299" height="95"><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="../../d6/d1a/dnf__sort_8cpp_a621767fe711db64fe57a2ac4987b11f0_cgraph.svg" width="299" height="95"><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="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">
@@ -227,11 +226,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="l00106"></a><span class="lineno"> 106</span>&#160; {</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="../../d6/d1a/dnf__sort_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// execute the test</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;}</div>
<div class="ttc" id="adnf__sort_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d6/d1a/dnf__sort_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition:</b> dnf_sort.cpp:71</div></div>
<div class="fragment"><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_function" href="../../d6/d1a/dnf__sort_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// execute the test</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span>}</div>
<div class="ttc" id="adnf__sort_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d6/d1a/dnf__sort_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition:</b> dnf_sort.cpp:73</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -241,7 +240,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">
@@ -266,39 +265,39 @@ Here is the call graph for this function:</div>
<p>Self-test implementations. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><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; <span class="comment">// 1st test</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// [1, 0, 2, 1] return [0, 1, 1, 2]</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint64_t&gt;</a> array1 = {0, 1, 1, 2};</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;Test 1... &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;uint64_t&gt;</a> arr1 = <a class="code" href="../../d6/d1a/dnf__sort_8cpp.html#a60688fc307dbb4b71969dfc191e1e67b">sorting::dnf_sort::dnfSort</a>(array1);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</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>(arr1), <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr1)));</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</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="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// 2nd test</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// [1, 0, 0, 1, 1, 0, 2, 1] return [0, 0, 0, 1, 1, 1, 1, 2]</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint64_t&gt;</a> array2 = {1, 0, 0, 1, 1, 0, 2, 1};</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</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... &quot;</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/container/vector.html">std::vector&lt;uint64_t&gt;</a> arr2 = <a class="code" href="../../d6/d1a/dnf__sort_8cpp.html#a60688fc307dbb4b71969dfc191e1e67b">sorting::dnf_sort::dnfSort</a>(array2);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</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>(arr2), <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr2)));</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_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="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// 3rd test</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// [1, 1, 0, 0, 1, 2, 2, 0, 2, 1] return [0, 0, 0, 1, 1, 1, 1, 2, 2, 2]</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/container/vector.html">std::vector&lt;uint64_t&gt;</a> array3 = {1, 1, 0, 0, 1, 2, 2, 0, 2, 1};</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/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 3... &quot;</span>;</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/container/vector.html">std::vector&lt;uint64_t&gt;</a> arr3 = <a class="code" href="../../d6/d1a/dnf__sort_8cpp.html#a60688fc307dbb4b71969dfc191e1e67b">sorting::dnf_sort::dnfSort</a>(array3);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</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>(arr3), <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr3)));</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/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="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// 4th test</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">// [2, 2, 2, 0, 0, 1, 1] return [0, 0, 1, 1, 2, 2, 2]</span></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/container/vector.html">std::vector&lt;uint64_t&gt;</a> array4 = {2, 2, 2, 0, 0, 1, 1};</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;Test 4... &quot;</span>;</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/container/vector.html">std::vector&lt;uint64_t&gt;</a> arr4 = <a class="code" href="../../d6/d1a/dnf__sort_8cpp.html#a60688fc307dbb4b71969dfc191e1e67b">sorting::dnf_sort::dnfSort</a>(array4);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</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>(arr4), <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr4)));</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</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="l00100"></a><span class="lineno"> 100</span>&#160;}</div>
<div class="fragment"><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">// 1st test</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// [1, 0, 2, 1] return [0, 1, 1, 2]</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;uint64_t&gt;</a> array1 = {0, 1, 1, 2};</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</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... &quot;</span>;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</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 = <a class="code hl_function" href="../../d6/d1a/dnf__sort_8cpp.html#a621767fe711db64fe57a2ac4987b11f0">sorting::dnf_sort::dnfSort</a>(array1);</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</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>(arr1), <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr1)));</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> <span class="comment">// 2nd test</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// [1, 0, 0, 1, 1, 0, 2, 1] return [0, 0, 0, 1, 1, 1, 1, 2]</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/container/vector.html">std::vector&lt;uint64_t&gt;</a> array2 = {1, 0, 0, 1, 1, 0, 2, 1};</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/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 2... &quot;</span>;</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/container/vector.html">std::vector&lt;uint64_t&gt;</a> arr2 = <a class="code hl_function" href="../../d6/d1a/dnf__sort_8cpp.html#a621767fe711db64fe57a2ac4987b11f0">sorting::dnf_sort::dnfSort</a>(array2);</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</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>(arr2), <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr2)));</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;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="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// 3rd test</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// [1, 1, 0, 0, 1, 2, 2, 0, 2, 1] return [0, 0, 0, 1, 1, 1, 1, 2, 2, 2]</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/container/vector.html">std::vector&lt;uint64_t&gt;</a> array3 = {1, 1, 0, 0, 1, 2, 2, 0, 2, 1};</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;Test 3... &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;uint64_t&gt;</a> arr3 = <a class="code hl_function" href="../../d6/d1a/dnf__sort_8cpp.html#a621767fe711db64fe57a2ac4987b11f0">sorting::dnf_sort::dnfSort</a>(array3);</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</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>(arr3), <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr3)));</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</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="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// 4th test</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// [2, 2, 2, 0, 0, 1, 1] return [0, 0, 1, 1, 2, 2, 2]</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/container/vector.html">std::vector&lt;uint64_t&gt;</a> array4 = {2, 2, 2, 0, 0, 1, 1};</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</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 4... &quot;</span>;</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</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> arr4 = <a class="code hl_function" href="../../d6/d1a/dnf__sort_8cpp.html#a621767fe711db64fe57a2ac4987b11f0">sorting::dnf_sort::dnfSort</a>(array4);</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</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>(arr4), <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr4)));</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/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="l00102" name="l00102"></a><span class="lineno"> 102</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="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>
<div class="ttc" id="adnf__sort_8cpp_html_a60688fc307dbb4b71969dfc191e1e67b"><div class="ttname"><a href="../../d6/d1a/dnf__sort_8cpp.html#a60688fc307dbb4b71969dfc191e1e67b">sorting::dnf_sort::dnfSort</a></div><div class="ttdeci">std::vector&lt; T &gt; dnfSort(const std::vector&lt; T &gt; &amp;in_arr)</div><div class="ttdoc">The main function implements DNF sort.</div><div class="ttdef"><b>Definition:</b> dnf_sort.cpp:36</div></div>
<div class="ttc" id="adnf__sort_8cpp_html_a621767fe711db64fe57a2ac4987b11f0"><div class="ttname"><a href="../../d6/d1a/dnf__sort_8cpp.html#a621767fe711db64fe57a2ac4987b11f0">sorting::dnf_sort::dnfSort</a></div><div class="ttdeci">std::vector&lt; T &gt; dnfSort(const std::vector&lt; T &gt; &amp;in_arr)</div><div class="ttdoc">The main function implements DNF sort.</div><div class="ttdef"><b>Definition:</b> dnf_sort.cpp:38</div></div>
<div class="ttc" id="aend_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a></div><div class="ttdeci">T end(T... args)</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="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>
@@ -317,7 +316,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="../../d6/d1a/dnf__sort_8cpp.html">dnf_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 dnf__sort_8cpp =
[
[ "dnfSort", "d6/d1a/dnf__sort_8cpp.html#a60688fc307dbb4b71969dfc191e1e67b", null ],
[ "dnfSort", "d6/d1a/dnf__sort_8cpp.html#a621767fe711db64fe57a2ac4987b11f0", null ],
[ "main", "d6/d1a/dnf__sort_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4", null ],
[ "test", "d6/d1a/dnf__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: sorting::dnf_sort::dnfSort Pages: 1 -->
<svg width="224pt" height="71pt"

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.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: test Pages: 1 -->
<svg width="153pt" height="142pt"

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.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: main Pages: 1 -->
<svg width="227pt" height="142pt"

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.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: sorting/bubble_sort.cpp Pages: 1 -->
<svg width="130pt" height="84pt"

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 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++: 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('da/d5a/class_complex.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -90,33 +90,32 @@ $(document).ready(function(){initNavTree('da/d5a/class_complex.html','../../');
</div>
<div class="header">
<div class="headertitle">
<div class="title">Complex Member List</div> </div>
<div class="headertitle"><div class="title">Complex Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../da/d5a/class_complex.html">Complex</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#ae5b51b749ea4964104b9527af9d8f556">abs</a>() const</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#ae1e03712837450549e0c9b4017533a41">arg</a>() const</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#ae1e03712837450549e0c9b4017533a41">arg</a>() const</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#a3cfc522c782726f49ee20af17b77f867">Complex</a>(double x=0.f, double y=0.f, bool is_polar=false)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#a466cd7b664cc6a864937ceb3dead1323">Complex</a>(const Complex &amp;other)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#a466cd7b664cc6a864937ceb3dead1323">Complex</a>(const Complex &amp;other)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>im</b> (defined in <a class="el" href="../../da/d5a/class_complex.html">Complex</a>)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#af8aacf982e2e6c142921bc850f6dc974">imag</a>() const</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#af8aacf982e2e6c142921bc850f6dc974">imag</a>() const</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#aa9b4a7d6083ca7040ddd4fe93db5c19d">operator*</a>(const Complex &amp;other)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#a820afcbb330df716577459d7a3aa3a1c">operator+</a>(const Complex &amp;other)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#a820afcbb330df716577459d7a3aa3a1c">operator+</a>(const Complex &amp;other)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#a36739619a07b5478bcd8a28ad2f8b7da">operator-</a>(const Complex &amp;other)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#ac38437c10eb798f176c384a695171b90">operator/</a>(const Complex &amp;other)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#a889215b7b004a3e7ec4d785ca5e7a2ba">operator=</a>(const Complex &amp;other)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#a8d5427f6c42c15283031d73e1418c59d">operator~</a>() const</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#ac38437c10eb798f176c384a695171b90">operator/</a>(const Complex &amp;other)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#a4ac9f529d54cacf2969f2c7179b4c4ac">operator=</a>(const Complex &amp;other)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#a8d5427f6c42c15283031d73e1418c59d">operator~</a>() const</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>re</b> (defined in <a class="el" href="../../da/d5a/class_complex.html">Complex</a>)</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#a312e4b19146128408fb06e0150b0faf6">real</a>() const</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../da/d5a/class_complex.html#a312e4b19146128408fb06e0150b0faf6">real</a>() const</td><td class="entry"><a class="el" href="../../da/d5a/class_complex.html">Complex</a></td><td class="entry"><span class="mlabel">inline</span></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: numerical_methods/lu_decomposition.h Pages: 1 -->
<svg width="196pt" height="95pt"

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.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++: ciphers::HillCipher 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('d6/d26/classciphers_1_1_hill_cipher.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -94,25 +94,24 @@ $(document).ready(function(){initNavTree('d6/d26/classciphers_1_1_hill_cipher.ht
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pri-static-methods">Static Private Member Functions</a> &#124;
<a href="../../d0/dd5/classciphers_1_1_hill_cipher-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ciphers::HillCipher Class Reference</div> </div>
<div class="headertitle"><div class="title">ciphers::HillCipher Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Implementation of <a href="https://en.wikipedia.org/wiki/Hill_cipher">Hill Cipher</a> algorithm.
<p>Implementation of <a href="https://en.wikipedia.org/wiki/Hill_cipher" target="_blank">Hill Cipher</a> algorithm.
<a href="../../d6/d26/classciphers_1_1_hill_cipher.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a7ca10cd1a0e8e3732391e0427d2d0213"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a7ca10cd1a0e8e3732391e0427d2d0213">generate_encryption_key</a> (size_t size, int limit1=0, int limit2=10)</td></tr>
<tr class="memdesc:a7ca10cd1a0e8e3732391e0427d2d0213"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate encryption matrix of a given size. Larger size matrices are difficult to generate but provide more security. Important conditions are: <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a7ca10cd1a0e8e3732391e0427d2d0213">More...</a><br /></td></tr>
<tr class="separator:a7ca10cd1a0e8e3732391e0427d2d0213"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb2c4dc2b8a59d3dfe0fa22c2adc086b"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#abb2c4dc2b8a59d3dfe0fa22c2adc086b">generate_decryption_key</a> (<a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt; const &amp;encrypt_key)</td></tr>
<tr class="memdesc:abb2c4dc2b8a59d3dfe0fa22c2adc086b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate decryption matrix from an encryption matrix key. <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#abb2c4dc2b8a59d3dfe0fa22c2adc086b">More...</a><br /></td></tr>
<tr class="separator:abb2c4dc2b8a59d3dfe0fa22c2adc086b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14bfcd14af6cd853130cbacd32e35c13"><td class="memItemLeft" align="right" valign="top">static <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt;, <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a14bfcd14af6cd853130cbacd32e35c13">generate_keys</a> (size_t size, int limit1=0, int limit2=10)</td></tr>
<tr class="memdesc:a14bfcd14af6cd853130cbacd32e35c13"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate encryption and decryption key pair. <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a14bfcd14af6cd853130cbacd32e35c13">More...</a><br /></td></tr>
<tr class="separator:a14bfcd14af6cd853130cbacd32e35c13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a642f70fb54cb50b00fb6df7c3f2b120e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a642f70fb54cb50b00fb6df7c3f2b120e">generate_encryption_key</a> (size_t size, int limit1=0, int limit2=10)</td></tr>
<tr class="memdesc:a642f70fb54cb50b00fb6df7c3f2b120e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate encryption matrix of a given size. Larger size matrices are difficult to generate but provide more security. Important conditions are: <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a642f70fb54cb50b00fb6df7c3f2b120e">More...</a><br /></td></tr>
<tr class="separator:a642f70fb54cb50b00fb6df7c3f2b120e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab02c7563889bf1e363deb8e21967b706"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#ab02c7563889bf1e363deb8e21967b706">generate_decryption_key</a> (<a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt; const &amp;encrypt_key)</td></tr>
<tr class="memdesc:ab02c7563889bf1e363deb8e21967b706"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate decryption matrix from an encryption matrix key. <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#ab02c7563889bf1e363deb8e21967b706">More...</a><br /></td></tr>
<tr class="separator:ab02c7563889bf1e363deb8e21967b706"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a405b0a28d66a61239d3565d5256f9cb5"><td class="memItemLeft" align="right" valign="top">static <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt;, <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a405b0a28d66a61239d3565d5256f9cb5">generate_keys</a> (size_t size, int limit1=0, int limit2=10)</td></tr>
<tr class="memdesc:a405b0a28d66a61239d3565d5256f9cb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate encryption and decryption key pair. <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a405b0a28d66a61239d3565d5256f9cb5">More...</a><br /></td></tr>
<tr class="separator:a405b0a28d66a61239d3565d5256f9cb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8bbb6e4a5749f6008b06602d5103917"><td class="memItemLeft" align="right" valign="top">static const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#aa8bbb6e4a5749f6008b06602d5103917">encrypt_text</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &amp;text, const <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt; &amp;encrypt_key)</td></tr>
<tr class="memdesc:aa8bbb6e4a5749f6008b06602d5103917"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encrypt a given text using a given key. <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#aa8bbb6e4a5749f6008b06602d5103917">More...</a><br /></td></tr>
<tr class="separator:aa8bbb6e4a5749f6008b06602d5103917"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -120,7 +119,7 @@ Static Public Member Functions</h2></td></tr>
<tr class="memdesc:a427acfac1dbff3f48a2b071d449d965b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrypt a given text using a given key. <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a427acfac1dbff3f48a2b071d449d965b">More...</a><br /></td></tr>
<tr class="separator:a427acfac1dbff3f48a2b071d449d965b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-static-methods" name="pri-static-methods"></a>
Static Private Member Functions</h2></td></tr>
<tr class="memitem:a629be41c1ab78850963e4ce14e1d11d9"><td class="memTemplParams" colspan="2">template&lt;typename T1 , typename T2 &gt; </td></tr>
<tr class="memitem:a629be41c1ab78850963e4ce14e1d11d9"><td class="memTemplItemLeft" align="right" valign="top">static const T2&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a629be41c1ab78850963e4ce14e1d11d9">rand_range</a> (T1 a, T1 b)</td></tr>
@@ -132,11 +131,11 @@ Static Private Member Functions</h2></td></tr>
<tr class="separator:a716d0313141499d16f57c0c107f04395"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7760f3665651a0a37937c79c62f219c0"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a7760f3665651a0a37937c79c62f219c0"><td class="memTemplItemLeft" align="right" valign="top">static const T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a7760f3665651a0a37937c79c62f219c0">gcd</a> (T a, T b)</td></tr>
<tr class="memdesc:a7760f3665651a0a37937c79c62f219c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute <a href="https://en.wikipedia.org/wiki/Greatest_common_divisor">GCD</a> of two integers using Euler's algorithm. <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a7760f3665651a0a37937c79c62f219c0">More...</a><br /></td></tr>
<tr class="memdesc:a7760f3665651a0a37937c79c62f219c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute <a href="https://en.wikipedia.org/wiki/Greatest_common_divisor" target="_blank">GCD</a> of two integers using Euler's algorithm. <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a7760f3665651a0a37937c79c62f219c0">More...</a><br /></td></tr>
<tr class="separator:a7760f3665651a0a37937c79c62f219c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40efd842a5cc44c233641ac2df13b0c0"><td class="memItemLeft" align="right" valign="top">static const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a40efd842a5cc44c233641ac2df13b0c0">mat_mul</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; uint8_t &gt; &amp;vector, const <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt; &amp;key)</td></tr>
<tr class="memdesc:a40efd842a5cc44c233641ac2df13b0c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">helper function to perform vector multiplication with encryption or decryption matrix <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a40efd842a5cc44c233641ac2df13b0c0">More...</a><br /></td></tr>
<tr class="separator:a40efd842a5cc44c233641ac2df13b0c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad36cbcc7a458b3f3a2af0c4aa1126590"><td class="memItemLeft" align="right" valign="top">static const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad36cbcc7a458b3f3a2af0c4aa1126590">mat_mul</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; uint8_t &gt; &amp;vector, const <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt; &amp;key)</td></tr>
<tr class="memdesc:ad36cbcc7a458b3f3a2af0c4aa1126590"><td class="mdescLeft">&#160;</td><td class="mdescRight">helper function to perform vector multiplication with encryption or decryption matrix <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad36cbcc7a458b3f3a2af0c4aa1126590">More...</a><br /></td></tr>
<tr class="separator:ad36cbcc7a458b3f3a2af0c4aa1126590"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12f727cca9e21f9539cd74b6603adf0c"><td class="memItemLeft" align="right" valign="top">static char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a12f727cca9e21f9539cd74b6603adf0c">get_idx_char</a> (const uint8_t idx)</td></tr>
<tr class="memdesc:a12f727cca9e21f9539cd74b6603adf0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the character at a given index in the <a class="el" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>. <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a12f727cca9e21f9539cd74b6603adf0c">More...</a><br /></td></tr>
<tr class="separator:a12f727cca9e21f9539cd74b6603adf0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -146,17 +145,16 @@ Static Private Member Functions</h2></td></tr>
<tr class="memitem:ad667fa0860977f6d6d443fa1dbcd80aa"><td class="memItemLeft" align="right" valign="top">static const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad667fa0860977f6d6d443fa1dbcd80aa">codec</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &amp;text, const <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt; &amp;key)</td></tr>
<tr class="memdesc:ad667fa0860977f6d6d443fa1dbcd80aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience function to perform block cipher operations. The operations are identical for both encryption and decryption. <a href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad667fa0860977f6d6d443fa1dbcd80aa">More...</a><br /></td></tr>
<tr class="separator:ad667fa0860977f6d6d443fa1dbcd80aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a4cdbd4d4dad9efe2ed309bd466dd4b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a5a4cdbd4d4dad9efe2ed309bd466dd4b"><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; double &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a5a4cdbd4d4dad9efe2ed309bd466dd4b">get_inverse</a> (<a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; T &gt; const &amp;A)</td></tr>
<tr class="separator:a5a4cdbd4d4dad9efe2ed309bd466dd4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63e7b8e92dff8b9260d6d21c31ecebd0"><td class="memItemLeft" align="right" valign="top"><a id="a63e7b8e92dff8b9260d6d21c31ecebd0"></a>
static int&#160;</td><td class="memItemRight" valign="bottom"><b>modulo</b> (int a, int b)</td></tr>
<tr class="memitem:a2eb58750b978a93ac5e6eb29e3e570b7"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a2eb58750b978a93ac5e6eb29e3e570b7"><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; double &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a2eb58750b978a93ac5e6eb29e3e570b7">get_inverse</a> (<a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; T &gt; const &amp;A)</td></tr>
<tr class="separator:a2eb58750b978a93ac5e6eb29e3e570b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63e7b8e92dff8b9260d6d21c31ecebd0"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a63e7b8e92dff8b9260d6d21c31ecebd0">modulo</a> (int a, int b)</td></tr>
<tr class="separator:a63e7b8e92dff8b9260d6d21c31ecebd0"><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/Hill_cipher">Hill Cipher</a> algorithm. </p>
<div class="textblock"><p >Implementation of <a href="https://en.wikipedia.org/wiki/Hill_cipher" target="_blank">Hill Cipher</a> algorithm. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ad667fa0860977f6d6d443fa1dbcd80aa"></a>
<a id="ad667fa0860977f6d6d443fa1dbcd80aa" name="ad667fa0860977f6d6d443fa1dbcd80aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad667fa0860977f6d6d443fa1dbcd80aa">&#9670;&nbsp;</a></span>codec()</h2>
<div class="memitem">
@@ -199,40 +197,40 @@ static int&#160;</td><td class="memItemRight" valign="bottom"><b>modulo</b> (int
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>encrypted/decrypted output </dd></dl>
<div class="fragment"><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordtype">size_t</span> text_len = text.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/size.html">length</a>();</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordtype">size_t</span> key_len = key.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="comment">// length of output string must be a multiple of key_len</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">// create output string and initialize with &#39;\0&#39; character</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordtype">size_t</span> L2 = text_len % key_len == 0</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; ? text_len</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; : text_len + key_len - (text_len % key_len);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> coded_text(L2, <span class="charliteral">&#39;\0&#39;</span>);</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; </div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="comment">// temporary array for batch processing</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor">#pragma parallel omp for private(i)</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; L2 - key_len + 1; i += key_len) {</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;uint8_t&gt;</a> batch_int(key_len);</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; key_len; j++) {</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; batch_int[j] = <a class="code" href="../../d6/d26/classciphers_1_1_hill_cipher.html#ae77cad522fa44b8c985779a7188d2f41">get_char_idx</a>(text[i + j]);</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; </div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; batch_int = <a class="code" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a40efd842a5cc44c233641ac2df13b0c0">mat_mul</a>(batch_int, key);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; key_len; j++) {</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; coded_text[i + j] =</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>[batch_int[j]]; <span class="comment">// get character at key</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; </div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> coded_text;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> {</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keywordtype">size_t</span> text_len = text.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/size.html">length</a>();</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="keywordtype">size_t</span> key_len = key.<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="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="comment">// length of output string must be a multiple of key_len</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="comment">// create output string and initialize with &#39;\0&#39; character</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keywordtype">size_t</span> L2 = text_len % key_len == 0</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> ? text_len</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> : text_len + key_len - (text_len % key_len);</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> coded_text(L2, <span class="charliteral">&#39;\0&#39;</span>);</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> </div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <span class="comment">// temporary array for batch processing</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="preprocessor">#pragma parallel omp for private(i)</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keywordflow">for</span> (i = 0; i &lt; L2 - key_len + 1; i += key_len) {</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;uint8_t&gt;</a> batch_int(key_len);</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; key_len; j++) {</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> batch_int[j] = <a class="code hl_function" href="../../d6/d26/classciphers_1_1_hill_cipher.html#ae77cad522fa44b8c985779a7188d2f41">get_char_idx</a>(text[i + j]);</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> }</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> </div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> batch_int = <a class="code hl_function" href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad36cbcc7a458b3f3a2af0c4aa1126590">mat_mul</a>(batch_int, key);</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> </div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; key_len; j++) {</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> coded_text[i + j] =</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <a class="code hl_variable" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>[batch_int[j]]; <span class="comment">// get character at key</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> }</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> }</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> </div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordflow">return</span> coded_text;</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> }</div>
<div class="ttc" id="abasic_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div></div>
<div class="ttc" id="aclassciphers_1_1_hill_cipher_html_a40efd842a5cc44c233641ac2df13b0c0"><div class="ttname"><a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a40efd842a5cc44c233641ac2df13b0c0">ciphers::HillCipher::mat_mul</a></div><div class="ttdeci">static const std::valarray&lt; uint8_t &gt; mat_mul(const std::valarray&lt; uint8_t &gt; &amp;vector, const matrix&lt; int &gt; &amp;key)</div><div class="ttdoc">helper function to perform vector multiplication with encryption or decryption matrix</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:159</div></div>
<div class="ttc" id="aclassciphers_1_1_hill_cipher_html_ad36cbcc7a458b3f3a2af0c4aa1126590"><div class="ttname"><a href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad36cbcc7a458b3f3a2af0c4aa1126590">ciphers::HillCipher::mat_mul</a></div><div class="ttdeci">static const std::valarray&lt; uint8_t &gt; mat_mul(const std::valarray&lt; uint8_t &gt; &amp;vector, const matrix&lt; int &gt; &amp;key)</div><div class="ttdoc">helper function to perform vector multiplication with encryption or decryption matrix</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:159</div></div>
<div class="ttc" id="aclassciphers_1_1_hill_cipher_html_ae77cad522fa44b8c985779a7188d2f41"><div class="ttname"><a href="../../d6/d26/classciphers_1_1_hill_cipher.html#ae77cad522fa44b8c985779a7188d2f41">ciphers::HillCipher::get_char_idx</a></div><div class="ttdeci">static uint8_t get_char_idx(const char ch)</div><div class="ttdoc">Get the index of a character in the STRKEY.</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:190</div></div>
<div class="ttc" id="anamespaceciphers_html_ab9aec0ccf4b6809f652bb540be87c216"><div class="ttname"><a href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">ciphers::STRKEY</a></div><div class="ttdeci">static const char * STRKEY</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:73</div></div>
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string/size.html">std::string::length</a></div><div class="ttdeci">T length(T... args)</div></div>
@@ -246,7 +244,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a427acfac1dbff3f48a2b071d449d965b"></a>
<a id="a427acfac1dbff3f48a2b071d449d965b" name="a427acfac1dbff3f48a2b071d449d965b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a427acfac1dbff3f48a2b071d449d965b">&#9670;&nbsp;</a></span>decrypt_text()</h2>
<div class="memitem">
@@ -289,9 +287,9 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>decrypted text </dd></dl>
<div class="fragment"><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="keywordflow">return</span> <a class="code" href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad667fa0860977f6d6d443fa1dbcd80aa">codec</a>(text, decrypt_key);</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div>
<div class="fragment"><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="keywordflow">return</span> <a class="code hl_function" href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad667fa0860977f6d6d443fa1dbcd80aa">codec</a>(text, decrypt_key);</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> }</div>
<div class="ttc" id="aclassciphers_1_1_hill_cipher_html_ad667fa0860977f6d6d443fa1dbcd80aa"><div class="ttname"><a href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad667fa0860977f6d6d443fa1dbcd80aa">ciphers::HillCipher::codec</a></div><div class="ttdeci">static const std::string codec(const std::string &amp;text, const matrix&lt; int &gt; &amp;key)</div><div class="ttdoc">Convenience function to perform block cipher operations. The operations are identical for both encryp...</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:210</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -302,7 +300,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="aa8bbb6e4a5749f6008b06602d5103917"></a>
<a id="aa8bbb6e4a5749f6008b06602d5103917" name="aa8bbb6e4a5749f6008b06602d5103917"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8bbb6e4a5749f6008b06602d5103917">&#9670;&nbsp;</a></span>encrypt_text()</h2>
<div class="memitem">
@@ -345,9 +343,9 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>encrypted text </dd></dl>
<div class="fragment"><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad667fa0860977f6d6d443fa1dbcd80aa">codec</a>(text, encrypt_key);</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> {</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad667fa0860977f6d6d443fa1dbcd80aa">codec</a>(text, encrypt_key);</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> }</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -357,7 +355,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a7760f3665651a0a37937c79c62f219c0"></a>
<a id="a7760f3665651a0a37937c79c62f219c0" name="a7760f3665651a0a37937c79c62f219c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7760f3665651a0a37937c79c62f219c0">&#9670;&nbsp;</a></span>gcd()</h2>
<div class="memitem">
@@ -393,7 +391,7 @@ template&lt;typename T &gt; </div>
</table>
</div><div class="memdoc">
<p>Compute <a href="https://en.wikipedia.org/wiki/Greatest_common_divisor">GCD</a> of two integers using Euler's algorithm. </p>
<p>Compute <a href="https://en.wikipedia.org/wiki/Greatest_common_divisor" target="_blank">GCD</a> of two integers using Euler's algorithm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">a</td><td>first number </td></tr>
@@ -402,18 +400,18 @@ template&lt;typename T &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>GCD of \(a\) and \(b\) </dd></dl>
<div class="fragment"><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">if</span> (b &gt; a) <span class="comment">// ensure always a &lt; b</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</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="l00141"></a><span class="lineno"> 141</span>&#160; </div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">while</span> (b != 0) {</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; T tmp = b;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; b = a % b;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; a = tmp;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; </div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> a;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div>
<div class="fragment"><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">if</span> (b &gt; a) <span class="comment">// ensure always a &lt; b</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</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="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keywordflow">while</span> (b != 0) {</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> T tmp = b;</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> b = a % b;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> a = tmp;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> }</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">return</span> a;</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</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>
@@ -424,8 +422,8 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="abb2c4dc2b8a59d3dfe0fa22c2adc086b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb2c4dc2b8a59d3dfe0fa22c2adc086b">&#9670;&nbsp;</a></span>generate_decryption_key()</h2>
<a id="ab02c7563889bf1e363deb8e21967b706" name="ab02c7563889bf1e363deb8e21967b706"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab02c7563889bf1e363deb8e21967b706">&#9670;&nbsp;</a></span>generate_decryption_key()</h2>
<div class="memitem">
<div class="memproto">
@@ -434,7 +432,7 @@ Here is the call graph for this function:</div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt;int&gt; ciphers::HillCipher::generate_decryption_key </td>
<td class="memname">static <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt; ciphers::HillCipher::generate_decryption_key </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt; const &amp;&#160;</td>
<td class="paramname"><em>encrypt_key</em></td><td>)</td>
@@ -456,49 +454,49 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Decryption martix </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="keywordtype">size_t</span> size = encrypt_key.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordtype">int</span> L = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/byte/strlen.html">std::strlen</a>(<a class="code" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; </div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;int&gt;</a> decrypt_key(size, <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;int&gt;</a>(size));</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordtype">int</span> det_encrypt = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(<a class="code" href="../../d1/dbe/lu__decomposition_8h.html#a3108d43bd32c6fb3b3c158476c51ba7f">determinant_lu</a>(encrypt_key));</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; </div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordtype">int</span> mat_determinant = det_encrypt &lt; 0 ? det_encrypt % L : det_encrypt;</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; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;double&gt;</a> tmp_inverse = <a class="code" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a5a4cdbd4d4dad9efe2ed309bd466dd4b">get_inverse</a>(encrypt_key);</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordtype">double</span> d2 = <a class="code" href="../../d1/dbe/lu__decomposition_8h.html#a3108d43bd32c6fb3b3c158476c51ba7f">determinant_lu</a>(decrypt_key);</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; </div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="comment">// find co-prime factor for inversion</span></div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordtype">int</span> det_inv = -1;</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; L; i++) {</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (modulo(mat_determinant * i, L) == 1) {</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; det_inv = i;</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div>
<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; </div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (det_inv == -1) {</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</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;Could not find a co-prime for inversion\n&quot;</span>;</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/program/exit.html">std::exit</a>(EXIT_FAILURE);</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; </div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; mat_determinant = det_inv * det_encrypt;</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; <span class="comment">// perform modular inverse of encryption matrix</span></div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="preprocessor">#pragma parallel omp for private(i)</span></div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; size; i++) {</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; size; j++) {</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordtype">int</span> temp = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/round.html">std::round</a>(tmp_inverse[i][j] * mat_determinant);</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; decrypt_key[i][j] = modulo(temp, L);</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div>
<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; <span class="keywordflow">return</span> decrypt_key;</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</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="keywordtype">size_t</span> size = encrypt_key.<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="l00373" name="l00373"></a><span class="lineno"> 373</span> <span class="keywordtype">int</span> L = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/byte/strlen.html">std::strlen</a>(<a class="code hl_variable" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>);</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> </div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;int&gt;</a> decrypt_key(size, <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;int&gt;</a>(size));</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <span class="keywordtype">int</span> det_encrypt = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(<a class="code hl_function" href="../../d1/dbe/lu__decomposition_8h.html#a3108d43bd32c6fb3b3c158476c51ba7f">determinant_lu</a>(encrypt_key));</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> </div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> <span class="keywordtype">int</span> mat_determinant = det_encrypt &lt; 0 ? det_encrypt % L : det_encrypt;</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> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;double&gt;</a> tmp_inverse = <a class="code hl_function" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a2eb58750b978a93ac5e6eb29e3e570b7">get_inverse</a>(encrypt_key);</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> <span class="keywordtype">double</span> d2 = <a class="code hl_function" href="../../d1/dbe/lu__decomposition_8h.html#a3108d43bd32c6fb3b3c158476c51ba7f">determinant_lu</a>(decrypt_key);</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> </div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> <span class="comment">// find co-prime factor for inversion</span></div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> <span class="keywordtype">int</span> det_inv = -1;</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; L; i++) {</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> <span class="keywordflow">if</span> (modulo(mat_determinant * i, L) == 1) {</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> det_inv = i;</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> }</div>
<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> </div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> <span class="keywordflow">if</span> (det_inv == -1) {</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</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;Could not find a co-prime for inversion\n&quot;</span>;</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/program/exit.html">std::exit</a>(EXIT_FAILURE);</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> }</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> </div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> mat_determinant = det_inv * det_encrypt;</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> <span class="comment">// perform modular inverse of encryption matrix</span></div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span><span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span><span class="preprocessor">#pragma parallel omp for private(i)</span></div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> <span class="keywordflow">for</span> (i = 0; i &lt; size; i++) {</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; size; j++) {</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> <span class="keywordtype">int</span> temp = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/round.html">std::round</a>(tmp_inverse[i][j] * mat_determinant);</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> decrypt_key[i][j] = modulo(temp, L);</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> }</div>
<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> <span class="keywordflow">return</span> decrypt_key;</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</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::cerr</a></div></div>
<div class="ttc" id="aclassciphers_1_1_hill_cipher_html_a5a4cdbd4d4dad9efe2ed309bd466dd4b"><div class="ttname"><a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a5a4cdbd4d4dad9efe2ed309bd466dd4b">ciphers::HillCipher::get_inverse</a></div><div class="ttdeci">static matrix&lt; double &gt; get_inverse(matrix&lt; T &gt; const &amp;A)</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:250</div></div>
<div class="ttc" id="aclassciphers_1_1_hill_cipher_html_a2eb58750b978a93ac5e6eb29e3e570b7"><div class="ttname"><a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a2eb58750b978a93ac5e6eb29e3e570b7">ciphers::HillCipher::get_inverse</a></div><div class="ttdeci">static matrix&lt; double &gt; get_inverse(matrix&lt; T &gt; const &amp;A)</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:250</div></div>
<div class="ttc" id="aexit_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/program/exit.html">std::exit</a></div><div class="ttdeci">T exit(T... args)</div></div>
<div class="ttc" id="alu__decomposition_8h_html_a3108d43bd32c6fb3b3c158476c51ba7f"><div class="ttname"><a href="../../d1/dbe/lu__decomposition_8h.html#a3108d43bd32c6fb3b3c158476c51ba7f">determinant_lu</a></div><div class="ttdeci">double determinant_lu(const matrix&lt; T &gt; &amp;A)</div><div class="ttdef"><b>Definition:</b> lu_decomposition.h:90</div></div>
<div class="ttc" id="around_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/round.html">std::round</a></div><div class="ttdeci">T round(T... args)</div></div>
@@ -507,8 +505,8 @@ Here is the call graph for this function:</div>
</div><!-- fragment -->
</div>
</div>
<a id="a7ca10cd1a0e8e3732391e0427d2d0213"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ca10cd1a0e8e3732391e0427d2d0213">&#9670;&nbsp;</a></span>generate_encryption_key()</h2>
<a id="a642f70fb54cb50b00fb6df7c3f2b120e" name="a642f70fb54cb50b00fb6df7c3f2b120e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a642f70fb54cb50b00fb6df7c3f2b120e">&#9670;&nbsp;</a></span>generate_encryption_key()</h2>
<div class="memitem">
<div class="memproto">
@@ -517,7 +515,7 @@ Here is the call graph for this function:</div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt;int&gt; ciphers::HillCipher::generate_encryption_key </td>
<td class="memname">static <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt; ciphers::HillCipher::generate_encryption_key </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
@@ -561,38 +559,38 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Encryption martix </dd></dl>
<div class="fragment"><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;int&gt;</a> encrypt_key(size, <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;int&gt;</a>(size));</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;int&gt;</a> min_mat = encrypt_key;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordtype">int</span> mat_determinant = -1; <span class="comment">// because matrix has only ints, the</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="comment">// determinant will also be an int</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">int</span> L = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/byte/strlen.html">std::strlen</a>(<a class="code" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>);</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; </div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordtype">double</span> dd;</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">do</span> {</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="comment">// keeping the random number range smaller generates better</span></div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="comment">// defined matrices with more ease of cracking</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; dd = <a class="code" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a629be41c1ab78850963e4ce14e1d11d9">rand_range</a>(&amp;encrypt_key, limit1, limit2);</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; mat_determinant = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(dd);</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; </div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (mat_determinant &lt; 0)</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; mat_determinant = (mat_determinant % L);</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; } <span class="keywordflow">while</span> (std::abs(dd) &gt; 1e3 || <span class="comment">// while ill-defined</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; dd &lt; 0.1 || <span class="comment">// while singular or negative determinant</span></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; !<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/isfinite.html">std::isfinite</a>(dd) || <span class="comment">// while determinant is not finite</span></div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a7760f3665651a0a37937c79c62f219c0">gcd</a>(mat_determinant, L) != 1); <span class="comment">// while no common factors</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="comment">// std::cout &lt;&lt;</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; </div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span> encrypt_key;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> {</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;int&gt;</a> encrypt_key(size, <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;int&gt;</a>(size));</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;int&gt;</a> min_mat = encrypt_key;</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> <span class="keywordtype">int</span> mat_determinant = -1; <span class="comment">// because matrix has only ints, the</span></div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> <span class="comment">// determinant will also be an int</span></div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> <span class="keywordtype">int</span> L = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/byte/strlen.html">std::strlen</a>(<a class="code hl_variable" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>);</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> </div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> <span class="keywordtype">double</span> dd;</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="comment">// keeping the random number range smaller generates better</span></div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> <span class="comment">// defined matrices with more ease of cracking</span></div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> dd = <a class="code hl_function" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a629be41c1ab78850963e4ce14e1d11d9">rand_range</a>(&amp;encrypt_key, limit1, limit2);</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> mat_determinant = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(dd);</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> </div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <span class="keywordflow">if</span> (mat_determinant &lt; 0)</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> mat_determinant = (mat_determinant % L);</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> } <span class="keywordflow">while</span> (std::abs(dd) &gt; 1e3 || <span class="comment">// while ill-defined</span></div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> dd &lt; 0.1 || <span class="comment">// while singular or negative determinant</span></div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> !<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/isfinite.html">std::isfinite</a>(dd) || <span class="comment">// while determinant is not finite</span></div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> <a class="code hl_function" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a7760f3665651a0a37937c79c62f219c0">gcd</a>(mat_determinant, L) != 1); <span class="comment">// while no common factors</span></div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> <span class="comment">// std::cout &lt;&lt;</span></div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> </div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> <span class="keywordflow">return</span> encrypt_key;</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> }</div>
<div class="ttc" id="aclassciphers_1_1_hill_cipher_html_a629be41c1ab78850963e4ce14e1d11d9"><div class="ttname"><a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a629be41c1ab78850963e4ce14e1d11d9">ciphers::HillCipher::rand_range</a></div><div class="ttdeci">static const T2 rand_range(T1 a, T1 b)</div><div class="ttdoc">Function to generate a random integer in a given interval.</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:92</div></div>
<div class="ttc" id="aclassciphers_1_1_hill_cipher_html_a7760f3665651a0a37937c79c62f219c0"><div class="ttname"><a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a7760f3665651a0a37937c79c62f219c0">ciphers::HillCipher::gcd</a></div><div class="ttdeci">static const T gcd(T a, T b)</div><div class="ttdoc">Compute GCD of two integers using Euler's algorithm.</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:138</div></div>
<div class="ttc" id="aisfinite_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/isfinite.html">std::isfinite</a></div><div class="ttdeci">T isfinite(T... args)</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a14bfcd14af6cd853130cbacd32e35c13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a14bfcd14af6cd853130cbacd32e35c13">&#9670;&nbsp;</a></span>generate_keys()</h2>
<a id="a405b0a28d66a61239d3565d5256f9cb5" name="a405b0a28d66a61239d3565d5256f9cb5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a405b0a28d66a61239d3565d5256f9cb5">&#9670;&nbsp;</a></span>generate_keys()</h2>
<div class="memitem">
<div class="memproto">
@@ -601,7 +599,7 @@ Here is the call graph for this function:</div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt;<a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt;int&gt;, <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt;int&gt; &gt; ciphers::HillCipher::generate_keys </td>
<td class="memname">static <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt;, <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; int &gt; &gt; ciphers::HillCipher::generate_keys </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
@@ -642,24 +640,24 @@ Here is the call graph for this function:</div>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt;matrix&lt;int&gt;, matrix&lt;int&gt;&gt; encryption and decryption keys as a pair</dd></dl>
<dl class="section see"><dt>See also</dt><dd>::generate_encryption_key </dd></dl>
<div class="fragment"><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;int&gt;</a> encrypt_key = <a class="code" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a7ca10cd1a0e8e3732391e0427d2d0213">generate_encryption_key</a>(size);</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;int&gt;</a> decrypt_key = <a class="code" href="../../d6/d26/classciphers_1_1_hill_cipher.html#abb2c4dc2b8a59d3dfe0fa22c2adc086b">generate_decryption_key</a>(encrypt_key);</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordtype">double</span> det2 = <a class="code" href="../../d1/dbe/lu__decomposition_8h.html#a3108d43bd32c6fb3b3c158476c51ba7f">determinant_lu</a>(decrypt_key);</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">while</span> (std::abs(det2) &lt; 0.1 || std::abs(det2) &gt; 1e3) {</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; encrypt_key = <a class="code" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a7ca10cd1a0e8e3732391e0427d2d0213">generate_encryption_key</a>(size, limit1, limit2);</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; decrypt_key = <a class="code" href="../../d6/d26/classciphers_1_1_hill_cipher.html#abb2c4dc2b8a59d3dfe0fa22c2adc086b">generate_decryption_key</a>(encrypt_key);</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; det2 = <a class="code" href="../../d1/dbe/lu__decomposition_8h.html#a3108d43bd32c6fb3b3c158476c51ba7f">determinant_lu</a>(decrypt_key);</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">return</span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair/make_pair.html">std::make_pair</a>(encrypt_key, decrypt_key);</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div>
<div class="ttc" id="aclassciphers_1_1_hill_cipher_html_a7ca10cd1a0e8e3732391e0427d2d0213"><div class="ttname"><a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a7ca10cd1a0e8e3732391e0427d2d0213">ciphers::HillCipher::generate_encryption_key</a></div><div class="ttdeci">static matrix&lt; int &gt; generate_encryption_key(size_t size, int limit1=0, int limit2=10)</div><div class="ttdoc">Generate encryption matrix of a given size. Larger size matrices are difficult to generate but provid...</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:339</div></div>
<div class="ttc" id="aclassciphers_1_1_hill_cipher_html_abb2c4dc2b8a59d3dfe0fa22c2adc086b"><div class="ttname"><a href="../../d6/d26/classciphers_1_1_hill_cipher.html#abb2c4dc2b8a59d3dfe0fa22c2adc086b">ciphers::HillCipher::generate_decryption_key</a></div><div class="ttdeci">static matrix&lt; int &gt; generate_decryption_key(matrix&lt; int &gt; const &amp;encrypt_key)</div><div class="ttdoc">Generate decryption matrix from an encryption matrix key.</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:371</div></div>
<div class="fragment"><div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> {</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;int&gt;</a> encrypt_key = <a class="code hl_function" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a642f70fb54cb50b00fb6df7c3f2b120e">generate_encryption_key</a>(size);</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;int&gt;</a> decrypt_key = <a class="code hl_function" href="../../d6/d26/classciphers_1_1_hill_cipher.html#ab02c7563889bf1e363deb8e21967b706">generate_decryption_key</a>(encrypt_key);</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <span class="keywordtype">double</span> det2 = <a class="code hl_function" href="../../d1/dbe/lu__decomposition_8h.html#a3108d43bd32c6fb3b3c158476c51ba7f">determinant_lu</a>(decrypt_key);</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <span class="keywordflow">while</span> (std::abs(det2) &lt; 0.1 || std::abs(det2) &gt; 1e3) {</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> encrypt_key = <a class="code hl_function" href="../../d6/d26/classciphers_1_1_hill_cipher.html#a642f70fb54cb50b00fb6df7c3f2b120e">generate_encryption_key</a>(size, limit1, limit2);</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> decrypt_key = <a class="code hl_function" href="../../d6/d26/classciphers_1_1_hill_cipher.html#ab02c7563889bf1e363deb8e21967b706">generate_decryption_key</a>(encrypt_key);</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> det2 = <a class="code hl_function" href="../../d1/dbe/lu__decomposition_8h.html#a3108d43bd32c6fb3b3c158476c51ba7f">determinant_lu</a>(decrypt_key);</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> }</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <span class="keywordflow">return</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair/make_pair.html">std::make_pair</a>(encrypt_key, decrypt_key);</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> }</div>
<div class="ttc" id="aclassciphers_1_1_hill_cipher_html_a642f70fb54cb50b00fb6df7c3f2b120e"><div class="ttname"><a href="../../d6/d26/classciphers_1_1_hill_cipher.html#a642f70fb54cb50b00fb6df7c3f2b120e">ciphers::HillCipher::generate_encryption_key</a></div><div class="ttdeci">static matrix&lt; int &gt; generate_encryption_key(size_t size, int limit1=0, int limit2=10)</div><div class="ttdoc">Generate encryption matrix of a given size. Larger size matrices are difficult to generate but provid...</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:339</div></div>
<div class="ttc" id="aclassciphers_1_1_hill_cipher_html_ab02c7563889bf1e363deb8e21967b706"><div class="ttname"><a href="../../d6/d26/classciphers_1_1_hill_cipher.html#ab02c7563889bf1e363deb8e21967b706">ciphers::HillCipher::generate_decryption_key</a></div><div class="ttdeci">static matrix&lt; int &gt; generate_decryption_key(matrix&lt; int &gt; const &amp;encrypt_key)</div><div class="ttdoc">Generate decryption matrix from an encryption matrix key.</div><div class="ttdef"><b>Definition:</b> hill_cipher.cpp:371</div></div>
<div class="ttc" id="amake_pair_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/pair/make_pair.html">std::make_pair</a></div><div class="ttdeci">T make_pair(T... args)</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae77cad522fa44b8c985779a7188d2f41"></a>
<a id="ae77cad522fa44b8c985779a7188d2f41" name="ae77cad522fa44b8c985779a7188d2f41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae77cad522fa44b8c985779a7188d2f41">&#9670;&nbsp;</a></span>get_char_idx()</h2>
<div class="memitem">
@@ -691,17 +689,17 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>index of character </dd></dl>
<div class="fragment"><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordtype">size_t</span> L = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/byte/strlen.html">std::strlen</a>(<a class="code" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>);</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; </div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> idx = 0; idx &lt;= L; idx++)</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>[idx] == ch)</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> idx;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; </div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cerr</a> &lt;&lt; __func__ &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; __LINE__ &lt;&lt; <span class="stringliteral">&quot;: (&quot;</span> &lt;&lt; ch</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) Should not reach here!\n&quot;</span>;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> {</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keywordtype">size_t</span> L = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/byte/strlen.html">std::strlen</a>(<a class="code hl_variable" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>);</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> idx = 0; idx &lt;= L; idx++)</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>[idx] == ch)</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keywordflow">return</span> idx;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> </div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cerr</a> &lt;&lt; __func__ &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; __LINE__ &lt;&lt; <span class="stringliteral">&quot;: (&quot;</span> &lt;&lt; ch</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> &lt;&lt; <span class="stringliteral">&quot;) Should not reach here!\n&quot;</span>;</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> }</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -711,7 +709,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a12f727cca9e21f9539cd74b6603adf0c"></a>
<a id="a12f727cca9e21f9539cd74b6603adf0c" name="a12f727cca9e21f9539cd74b6603adf0c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12f727cca9e21f9539cd74b6603adf0c">&#9670;&nbsp;</a></span>get_idx_char()</h2>
<div class="memitem">
@@ -743,12 +741,12 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>character at the index </dd></dl>
<div class="fragment"><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>[idx]; }</div>
<div class="fragment"><div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span>{ <span class="keywordflow">return</span> <a class="code hl_variable" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>[idx]; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a5a4cdbd4d4dad9efe2ed309bd466dd4b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a4cdbd4d4dad9efe2ed309bd466dd4b">&#9670;&nbsp;</a></span>get_inverse()</h2>
<a id="a2eb58750b978a93ac5e6eb29e3e570b7" name="a2eb58750b978a93ac5e6eb29e3e570b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2eb58750b978a93ac5e6eb29e3e570b7">&#9670;&nbsp;</a></span>get_inverse()</h2>
<div class="memitem">
<div class="memproto">
@@ -759,7 +757,7 @@ template&lt;typename T &gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt;double&gt; ciphers::HillCipher::get_inverse </td>
<td class="memname">static <a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; double &gt; ciphers::HillCipher::get_inverse </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d1/dbe/lu__decomposition_8h.html#aed8766713ee9b561a4acdcdff5f90ea5">matrix</a>&lt; T &gt; const &amp;&#160;</td>
<td class="paramname"><em>A</em></td><td>)</td>
@@ -772,83 +770,83 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Get matrix inverse using Row-transformations. Given matrix must be a square and non-singular. </p><dl class="section return"><dt>Returns</dt><dd>inverse matrix </dd></dl>
<div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="comment">// Assuming A is square matrix</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = A.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; </div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;double&gt;</a> inverse(N, <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;double&gt;</a>(N));</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row &lt; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row++) {</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col = 0; col &lt; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; col++) {</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="comment">// create identity matrix</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; inverse[row][col] = (row == col) ? 1.f : 0.f;</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; </div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> (A.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() != A[0].<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()) {</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</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;A must be a square matrix!&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="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> inverse;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; </div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="comment">// preallocate a temporary matrix identical to A</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;double&gt;</a> temp(N, <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;double&gt;</a>(N));</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row &lt; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row++) {</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col = 0; col &lt; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; col++)</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; temp[row][col] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(A[row][col]);</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; </div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="comment">// start transformations</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row &lt; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row++) {</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row2 = row; row2 &lt; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> &amp;&amp; temp[row][row] == 0; row2++) {</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">// this to ensure diagonal elements are not 0</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; temp[row] = temp[row] + temp[row2];</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; inverse[row] = inverse[row] + inverse[row2];</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; </div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col2 = row; col2 &lt; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> &amp;&amp; temp[row][row] == 0; col2++) {</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// this to further ensure diagonal elements are not 0</span></div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row2 = 0; row2 &lt; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row2++) {</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; temp[row2][row] = temp[row2][row] + temp[row2][col2];</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; inverse[row2][row] =</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; inverse[row2][row] + inverse[row2][col2];</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; </div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">if</span> (temp[row][row] == 0) {</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">// Probably a low-rank matrix and hence singular</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</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;Low-rank matrix, no inverse!&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="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> inverse;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">// set diagonal to 1</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordtype">double</span> divisor = temp[row][row];</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; temp[row] = temp[row] / divisor;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; inverse[row] = inverse[row] / divisor;</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="comment">// Row transformations</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row2 = 0; row2 &lt; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row2++) {</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (row2 == row)</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordtype">double</span> factor = temp[row2][row];</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; temp[row2] = temp[row2] - factor * temp[row];</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; inverse[row2] = inverse[row2] - factor * inverse[row];</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; </div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> inverse;</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div>
<p >Get matrix inverse using Row-transformations. Given matrix must be a square and non-singular. </p><dl class="section return"><dt>Returns</dt><dd>inverse matrix </dd></dl>
<div class="fragment"><div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> {</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="comment">// Assuming A is square matrix</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keywordtype">size_t</span> <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = A.<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="l00253" name="l00253"></a><span class="lineno"> 253</span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;double&gt;</a> inverse(N, <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;double&gt;</a>(N));</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row &lt; <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row++) {</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col = 0; col &lt; <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; col++) {</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <span class="comment">// create identity matrix</span></div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> inverse[row][col] = (row == col) ? 1.f : 0.f;</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> }</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> }</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> </div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keywordflow">if</span> (A.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() != A[0].<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="l00263" name="l00263"></a><span class="lineno"> 263</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;A must be a square matrix!&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="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="keywordflow">return</span> inverse;</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> }</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> </div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="comment">// preallocate a temporary matrix identical to A</span></div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix&lt;double&gt;</a> temp(N, <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray&lt;double&gt;</a>(N));</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row &lt; <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row++) {</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col = 0; col &lt; <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; col++)</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> temp[row][col] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(A[row][col]);</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> }</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> </div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="comment">// start transformations</span></div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row &lt; <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row++) {</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row2 = row; row2 &lt; <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> &amp;&amp; temp[row][row] == 0; row2++) {</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <span class="comment">// this to ensure diagonal elements are not 0</span></div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> temp[row] = temp[row] + temp[row2];</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> inverse[row] = inverse[row] + inverse[row2];</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> }</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> </div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col2 = row; col2 &lt; <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> &amp;&amp; temp[row][row] == 0; col2++) {</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="comment">// this to further ensure diagonal elements are not 0</span></div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row2 = 0; row2 &lt; <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row2++) {</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> temp[row2][row] = temp[row2][row] + temp[row2][col2];</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> inverse[row2][row] =</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> inverse[row2][row] + inverse[row2][col2];</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> }</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> }</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> </div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="keywordflow">if</span> (temp[row][row] == 0) {</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="comment">// Probably a low-rank matrix and hence singular</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</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;Low-rank matrix, no inverse!&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="l00294" name="l00294"></a><span class="lineno"> 294</span> <span class="keywordflow">return</span> inverse;</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> }</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> </div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="comment">// set diagonal to 1</span></div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="keywordtype">double</span> divisor = temp[row][row];</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> temp[row] = temp[row] / divisor;</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> inverse[row] = inverse[row] / divisor;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="comment">// Row transformations</span></div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row2 = 0; row2 &lt; <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row2++) {</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keywordflow">if</span> (row2 == row)</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> <span class="keywordtype">double</span> factor = temp[row2][row];</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> temp[row2] = temp[row2] - factor * temp[row];</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> inverse[row2] = inverse[row2] - factor * inverse[row];</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> }</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> }</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> </div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <span class="keywordflow">return</span> inverse;</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> }</div>
<div class="ttc" id="adata__structures_2sparse__table_8cpp_html_a10f3ffb3f6f7e1b83d556b9c8de89a5d"><div class="ttname"><a href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">data_structures::sparse_table::N</a></div><div class="ttdeci">constexpr uint32_t N</div><div class="ttdoc">A struct to represent sparse table for min() as their invariant function, for the given array A....</div><div class="ttdef"><b>Definition:</b> sparse_table.cpp:47</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><!-- 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="../../d6/d26/classciphers_1_1_hill_cipher_a5a4cdbd4d4dad9efe2ed309bd466dd4b_cgraph.svg" width="304" 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="../../d6/d26/classciphers_1_1_hill_cipher_a2eb58750b978a93ac5e6eb29e3e570b7_cgraph.svg" width="304" height="88"><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="a40efd842a5cc44c233641ac2df13b0c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40efd842a5cc44c233641ac2df13b0c0">&#9670;&nbsp;</a></span>mat_mul()</h2>
<a id="ad36cbcc7a458b3f3a2af0c4aa1126590" name="ad36cbcc7a458b3f3a2af0c4aa1126590"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad36cbcc7a458b3f3a2af0c4aa1126590">&#9670;&nbsp;</a></span>mat_mul()</h2>
<div class="memitem">
<div class="memproto">
@@ -857,7 +855,7 @@ Here is the call graph for this function:</div>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt;uint8_t&gt; ciphers::HillCipher::mat_mul </td>
<td class="memname">static const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray</a>&lt; uint8_t &gt; ciphers::HillCipher::mat_mul </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; uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>vector</em>, </td>
@@ -890,31 +888,73 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>corresponding encrypted or decrypted text </dd></dl>
<div class="fragment"><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</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/numeric/valarray.html">std::valarray&lt;uint8_t&gt;</a> out(vector); <span class="comment">// make a copy</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; <span class="keywordtype">size_t</span> L = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/byte/strlen.html">std::strlen</a>(<a class="code" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>);</div>
<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; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; key.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); i++) {</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordtype">int</span> tmp = 0;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; vector.size(); j++) {</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; tmp += key[i][j] * vector[j];</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; out[i] = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(tmp % L);</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; </div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> out;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</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/numeric/valarray.html">std::valarray&lt;uint8_t&gt;</a> out(vector); <span class="comment">// make a copy</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> <span class="keywordtype">size_t</span> L = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/byte/strlen.html">std::strlen</a>(<a class="code hl_variable" href="../../d6/d4e/namespaceciphers.html#ab9aec0ccf4b6809f652bb540be87c216">STRKEY</a>);</div>
<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> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; key.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); i++) {</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keywordtype">int</span> tmp = 0;</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; vector.size(); j++) {</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> tmp += key[i][j] * vector[j];</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> }</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> out[i] = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(tmp % L);</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> }</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">return</span> out;</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</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="../../d6/d26/classciphers_1_1_hill_cipher_a40efd842a5cc44c233641ac2df13b0c0_cgraph.svg" width="304" 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="../../d6/d26/classciphers_1_1_hill_cipher_ad36cbcc7a458b3f3a2af0c4aa1126590_cgraph.svg" width="304" height="88"><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="a716d0313141499d16f57c0c107f04395"></a>
<a id="a63e7b8e92dff8b9260d6d21c31ecebd0" name="a63e7b8e92dff8b9260d6d21c31ecebd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63e7b8e92dff8b9260d6d21c31ecebd0">&#9670;&nbsp;</a></span>modulo()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static int ciphers::HillCipher::modulo </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> {</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="keywordtype">int</span> ret = a % b;</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <span class="keywordflow">if</span> (ret &lt; 0)</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> ret += b;</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="keywordflow">return</span> ret;</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a716d0313141499d16f57c0c107f04395" name="a716d0313141499d16f57c0c107f04395"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a716d0313141499d16f57c0c107f04395">&#9670;&nbsp;</a></span>rand_range() <span class="overload">[1/2]</span></h2>
<div class="memitem">
@@ -974,15 +1014,15 @@ template&lt;typename T1 , typename T2 &gt; </div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>determinant of generated random matrix</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>There will need to be a balance between the matrix size and the range of random numbers. If the matrix is large, the range of random numbers must be small to have a well defined keys. Or if the matrix is smaller, the random numbers range can be larger. For an 8x8 matrix, range should be no more than \([0,10]\) </dd></dl>
<div class="fragment"><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; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">M</a>-&gt;size(); i++) {</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">M</a>[0][0].size(); j++) {</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">M</a>[0][i][j] = rand_range&lt;T1, T2&gt;(a, b);</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</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; <span class="keywordflow">return</span> <a class="code" href="../../d1/dbe/lu__decomposition_8h.html#a3108d43bd32c6fb3b3c158476c51ba7f">determinant_lu</a>(*M);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
<div class="fragment"><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> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">M</a>-&gt;size(); i++) {</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">M</a>[0][0].size(); j++) {</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">M</a>[0][i][j] = rand_range&lt;T1, T2&gt;(a, b);</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> }</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</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> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d1/dbe/lu__decomposition_8h.html#a3108d43bd32c6fb3b3c158476c51ba7f">determinant_lu</a>(*M);</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> }</div>
<div class="ttc" id="adata__structures_2sparse__table_8cpp_html_af7db62f21983565c64d5d42d2a49888e"><div class="ttname"><a href="../../d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">data_structures::sparse_table::M</a></div><div class="ttdeci">constexpr uint8_t M</div><div class="ttdoc">ceil(log2(N)).</div><div class="ttdef"><b>Definition:</b> sparse_table.cpp:48</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -993,7 +1033,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a629be41c1ab78850963e4ce14e1d11d9"></a>
<a id="a629be41c1ab78850963e4ce14e1d11d9" name="a629be41c1ab78850963e4ce14e1d11d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a629be41c1ab78850963e4ce14e1d11d9">&#9670;&nbsp;</a></span>rand_range() <span class="overload">[2/2]</span></h2>
<div class="memitem">
@@ -1044,13 +1084,13 @@ template&lt;typename T1 , typename T2 &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>random integer in the interval \([a,b)\) </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="comment">// generate random number between 0 and 1</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">long</span> <span class="keywordtype">double</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span> <span class="keywordtype">double</span><span class="keyword">&gt;</span>(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a>()) / RAND_MAX;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// scale and return random number as integer</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>T2<span class="keyword">&gt;</span>(r * (b - a) + a);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</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="comment">// generate random number between 0 and 1</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordtype">long</span> <span class="keywordtype">double</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span> <span class="keywordtype">double</span><span class="keyword">&gt;</span>(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a>()) / RAND_MAX;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// scale and return random number as integer</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>T2<span class="keyword">&gt;</span>(r * (b - a) + a);</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> }</div>
<div class="ttc" id="arand_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a></div><div class="ttdeci">T rand(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -1070,7 +1110,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="../../d6/d4e/namespaceciphers.html">ciphers</a></li><li class="navelem"><a class="el" href="../../d6/d26/classciphers_1_1_hill_cipher.html">HillCipher</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

@@ -4,14 +4,13 @@ var classciphers_1_1_hill_cipher =
[ "decrypt_text", "d6/d26/classciphers_1_1_hill_cipher.html#a427acfac1dbff3f48a2b071d449d965b", null ],
[ "encrypt_text", "d6/d26/classciphers_1_1_hill_cipher.html#aa8bbb6e4a5749f6008b06602d5103917", null ],
[ "gcd", "d6/d26/classciphers_1_1_hill_cipher.html#a7760f3665651a0a37937c79c62f219c0", null ],
[ "generate_decryption_key", "d6/d26/classciphers_1_1_hill_cipher.html#abb2c4dc2b8a59d3dfe0fa22c2adc086b", null ],
[ "generate_encryption_key", "d6/d26/classciphers_1_1_hill_cipher.html#a7ca10cd1a0e8e3732391e0427d2d0213", null ],
[ "generate_keys", "d6/d26/classciphers_1_1_hill_cipher.html#a14bfcd14af6cd853130cbacd32e35c13", null ],
[ "generate_decryption_key", "d6/d26/classciphers_1_1_hill_cipher.html#ab02c7563889bf1e363deb8e21967b706", null ],
[ "generate_encryption_key", "d6/d26/classciphers_1_1_hill_cipher.html#a642f70fb54cb50b00fb6df7c3f2b120e", null ],
[ "generate_keys", "d6/d26/classciphers_1_1_hill_cipher.html#a405b0a28d66a61239d3565d5256f9cb5", null ],
[ "get_char_idx", "d6/d26/classciphers_1_1_hill_cipher.html#ae77cad522fa44b8c985779a7188d2f41", null ],
[ "get_idx_char", "d6/d26/classciphers_1_1_hill_cipher.html#a12f727cca9e21f9539cd74b6603adf0c", null ],
[ "get_inverse", "d6/d26/classciphers_1_1_hill_cipher.html#a5a4cdbd4d4dad9efe2ed309bd466dd4b", null ],
[ "mat_mul", "d6/d26/classciphers_1_1_hill_cipher.html#a40efd842a5cc44c233641ac2df13b0c0", null ],
[ "modulo", "d6/d26/classciphers_1_1_hill_cipher.html#a63e7b8e92dff8b9260d6d21c31ecebd0", null ],
[ "get_inverse", "d6/d26/classciphers_1_1_hill_cipher.html#a2eb58750b978a93ac5e6eb29e3e570b7", null ],
[ "mat_mul", "d6/d26/classciphers_1_1_hill_cipher.html#ad36cbcc7a458b3f3a2af0c4aa1126590", null ],
[ "rand_range", "d6/d26/classciphers_1_1_hill_cipher.html#a716d0313141499d16f57c0c107f04395", null ],
[ "rand_range", "d6/d26/classciphers_1_1_hill_cipher.html#a629be41c1ab78850963e4ce14e1d11d9", 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: ciphers::HillCipher::get_inverse Pages: 1 -->
<svg width="228pt" height="66pt"

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -3,7 +3,7 @@
<area shape="rect" id="node2" href="$d6/d26/classciphers_1_1_hill_cipher.html#ad667fa0860977f6d6d443fa1dbcd80aa" title="Convenience function to perform block cipher operations. The operations are identical for both encryp..." alt="" coords="184,93,315,135"/>
<area shape="rect" id="node3" href="$d6/d26/classciphers_1_1_hill_cipher.html#ae77cad522fa44b8c985779a7188d2f41" title="Get the index of a character in the STRKEY." alt="" coords="363,5,493,47"/>
<area shape="rect" id="node5" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/basic_string/size.html#" title=" " alt="" coords="366,71,490,98"/>
<area shape="rect" id="node6" href="$d6/d26/classciphers_1_1_hill_cipher.html#a40efd842a5cc44c233641ac2df13b0c0" title="helper function to perform vector multiplication with encryption or decryption matrix" alt="" coords="363,123,493,164"/>
<area shape="rect" id="node6" href="$d6/d26/classciphers_1_1_hill_cipher.html#ad36cbcc7a458b3f3a2af0c4aa1126590" title="helper function to perform vector multiplication with encryption or decryption matrix" alt="" coords="363,123,493,164"/>
<area shape="rect" id="node7" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="541,158,656,185"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/byte/strlen.html#" title=" " alt="" coords="559,103,639,130"/>
</map>

View File

@@ -1 +1 @@
0cd668ab83784d1d4a2b3fceadf486b3
cacc384c953975f6764caf695b0c62d5

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::HillCipher::decrypt_text Pages: 1 -->
<svg width="496pt" height="145pt"
@@ -69,7 +69,7 @@
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a xlink:href="../../d6/d26/classciphers_1_1_hill_cipher.html#a40efd842a5cc44c233641ac2df13b0c0" target="_top" xlink:title="helper function to perform vector multiplication with encryption or decryption matrix">
<g id="a_node6"><a xlink:href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad36cbcc7a458b3f3a2af0c4aa1126590" target="_top" xlink:title="helper function to perform vector multiplication with encryption or decryption matrix">
<polygon fill="white" stroke="black" points="268,-18.14 268,-48.14 366,-48.14 366,-18.14 268,-18.14"/>
<text text-anchor="start" x="276" y="-36.14" font-family="Helvetica,sans-Serif" font-size="10.00">ciphers::HillCipher</text>
<text text-anchor="middle" x="317" y="-25.14" font-family="Helvetica,sans-Serif" font-size="10.00">::mat_mul</text>

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.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: ciphers::HillCipher::rand_range Pages: 1 -->
<svg width="197pt" 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: ciphers::HillCipher::rand_range Pages: 1 -->
<svg width="477pt" height="53pt"

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.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: ciphers::HillCipher::gcd Pages: 1 -->
<svg width="222pt" height="28pt"

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -3,7 +3,7 @@
<area shape="rect" id="node2" href="$d6/d26/classciphers_1_1_hill_cipher.html#ad667fa0860977f6d6d443fa1dbcd80aa" title="Convenience function to perform block cipher operations. The operations are identical for both encryp..." alt="" coords="184,93,315,135"/>
<area shape="rect" id="node3" href="$d6/d26/classciphers_1_1_hill_cipher.html#ae77cad522fa44b8c985779a7188d2f41" title="Get the index of a character in the STRKEY." alt="" coords="363,5,493,47"/>
<area shape="rect" id="node5" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/basic_string/size.html#" title=" " alt="" coords="366,71,490,98"/>
<area shape="rect" id="node6" href="$d6/d26/classciphers_1_1_hill_cipher.html#a40efd842a5cc44c233641ac2df13b0c0" title="helper function to perform vector multiplication with encryption or decryption matrix" alt="" coords="363,123,493,164"/>
<area shape="rect" id="node6" href="$d6/d26/classciphers_1_1_hill_cipher.html#ad36cbcc7a458b3f3a2af0c4aa1126590" title="helper function to perform vector multiplication with encryption or decryption matrix" alt="" coords="363,123,493,164"/>
<area shape="rect" id="node7" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="541,158,656,185"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/byte/strlen.html#" title=" " alt="" coords="559,103,639,130"/>
</map>

View File

@@ -1 +1 @@
4919afd3b515b2fef6644a5ddbafdb3f
50b6d83d3d0ff27b6232642f06c128e1

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::HillCipher::encrypt_text Pages: 1 -->
<svg width="496pt" height="145pt"
@@ -69,7 +69,7 @@
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a xlink:href="../../d6/d26/classciphers_1_1_hill_cipher.html#a40efd842a5cc44c233641ac2df13b0c0" target="_top" xlink:title="helper function to perform vector multiplication with encryption or decryption matrix">
<g id="a_node6"><a xlink:href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad36cbcc7a458b3f3a2af0c4aa1126590" target="_top" xlink:title="helper function to perform vector multiplication with encryption or decryption matrix">
<polygon fill="white" stroke="black" points="268,-18.14 268,-48.14 366,-48.14 366,-18.14 268,-18.14"/>
<text text-anchor="start" x="276" y="-36.14" font-family="Helvetica,sans-Serif" font-size="10.00">ciphers::HillCipher</text>
<text text-anchor="middle" x="317" y="-25.14" font-family="Helvetica,sans-Serif" font-size="10.00">::mat_mul</text>

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.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: ciphers::HillCipher::mat_mul Pages: 1 -->
<svg width="228pt" height="66pt"

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -2,7 +2,7 @@
<area shape="rect" id="node1" title="Convenience function to perform block cipher operations. The operations are identical for both encryp..." alt="" coords="5,93,136,135"/>
<area shape="rect" id="node2" href="$d6/d26/classciphers_1_1_hill_cipher.html#ae77cad522fa44b8c985779a7188d2f41" title="Get the index of a character in the STRKEY." alt="" coords="184,5,315,47"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/basic_string/size.html#" title=" " alt="" coords="187,71,311,98"/>
<area shape="rect" id="node5" href="$d6/d26/classciphers_1_1_hill_cipher.html#a40efd842a5cc44c233641ac2df13b0c0" title="helper function to perform vector multiplication with encryption or decryption matrix" alt="" coords="184,123,315,164"/>
<area shape="rect" id="node5" href="$d6/d26/classciphers_1_1_hill_cipher.html#ad36cbcc7a458b3f3a2af0c4aa1126590" title="helper function to perform vector multiplication with encryption or decryption matrix" alt="" coords="184,123,315,164"/>
<area shape="rect" id="node6" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="363,158,477,185"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/byte/strlen.html#" title=" " alt="" coords="380,103,460,130"/>
</map>

View File

@@ -1 +1 @@
35fef77fb23db5b708418a70400952e6
9629277b92c4b82b44929679f89e95c6

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::HillCipher::codec Pages: 1 -->
<svg width="362pt" height="145pt"
@@ -53,7 +53,7 @@
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><a xlink:href="../../d6/d26/classciphers_1_1_hill_cipher.html#a40efd842a5cc44c233641ac2df13b0c0" target="_top" xlink:title="helper function to perform vector multiplication with encryption or decryption matrix">
<g id="a_node5"><a xlink:href="../../d6/d26/classciphers_1_1_hill_cipher.html#ad36cbcc7a458b3f3a2af0c4aa1126590" target="_top" xlink:title="helper function to perform vector multiplication with encryption or decryption matrix">
<polygon fill="white" stroke="black" points="134,-18.14 134,-48.14 232,-48.14 232,-18.14 134,-18.14"/>
<text text-anchor="start" x="142" y="-36.14" font-family="Helvetica,sans-Serif" font-size="10.00">ciphers::HillCipher</text>
<text text-anchor="middle" x="183" y="-25.14" font-family="Helvetica,sans-Serif" font-size="10.00">::mat_mul</text>

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.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::HillCipher::get_char_idx Pages: 1 -->
<svg width="202pt" height="39pt"

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.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++: dynamic_programming/house_robber.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('d6/d26/house__robber_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -93,12 +93,11 @@ $(document).ready(function(){initNavTree('d6/d26/house__robber_8cpp.html','../..
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">house_robber.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">house_robber.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Implementation of <a href="https://labuladong.gitbook.io/algo-en/i.-dynamic-programming/houserobber">House Robber Problem</a> algorithm.
<p>Implementation of <a href="https://labuladong.gitbook.io/algo-en/i.-dynamic-programming/houserobber" target="_blank">House Robber Problem</a> algorithm.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;cassert&gt;</code><br />
<code>#include &lt;climits&gt;</code><br />
@@ -111,16 +110,16 @@ Include dependency graph for house_robber.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:dd/d24/namespacedynamic__programming"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d24/namespacedynamic__programming.html">dynamic_programming</a></td></tr>
<tr class="memitem:dd/d24/namespacedynamic__programming"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d24/namespacedynamic__programming.html">dynamic_programming</a></td></tr>
<tr class="memdesc:dd/d24/namespacedynamic__programming"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dynamic Programming algorithms. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d2/de1/namespacehouse__robber"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de1/namespacehouse__robber.html">house_robber</a></td></tr>
<tr class="memdesc:d2/de1/namespacehouse__robber"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for the <a href="https://labuladong.gitbook.io/algo-en/i.-dynamic-programming/houserobber">House Robber</a> algorithm. <br /></td></tr>
<tr class="memitem:d2/de1/namespacehouse__robber"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/de1/namespacehouse__robber.html">house_robber</a></td></tr>
<tr class="memdesc:d2/de1/namespacehouse__robber"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for the <a href="https://labuladong.gitbook.io/algo-en/i.-dynamic-programming/houserobber" target="_blank">House Robber</a> 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:a1e497c3e3f169afe5baaae6a5d40cbc8"><td class="memItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d26/house__robber_8cpp.html#a1e497c3e3f169afe5baaae6a5d40cbc8">dynamic_programming::house_robber::houseRobber</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; uint32_t &gt; &amp;money, const uint32_t &amp;n)</td></tr>
<tr class="memdesc:a1e497c3e3f169afe5baaae6a5d40cbc8"><td class="mdescLeft">&#160;</td><td class="mdescRight">The main function that implements the House Robber algorithm using dynamic programming. <a href="../../d6/d26/house__robber_8cpp.html#a1e497c3e3f169afe5baaae6a5d40cbc8">More...</a><br /></td></tr>
@@ -133,10 +132,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 <a href="https://labuladong.gitbook.io/algo-en/i.-dynamic-programming/houserobber">House Robber Problem</a> algorithm. </p>
<p><a class="el" href="../../dd/d4f/class_solution.html">Solution</a> of House robber problem uses a dynamic programming concept that works in \(O(n)\) time and works in \(O(1)\) space. </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 <a href="https://labuladong.gitbook.io/algo-en/i.-dynamic-programming/houserobber" target="_blank">House Robber Problem</a> algorithm. </p>
<p ><a class="el" href="../../dd/d4f/class_solution.html">Solution</a> of House robber problem uses a dynamic programming concept that works in \(O(n)\) time and works in \(O(1)\) space. </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="a1e497c3e3f169afe5baaae6a5d40cbc8"></a>
<a id="a1e497c3e3f169afe5baaae6a5d40cbc8" name="a1e497c3e3f169afe5baaae6a5d40cbc8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e497c3e3f169afe5baaae6a5d40cbc8">&#9670;&nbsp;</a></span>houseRobber()</h2>
<div class="memitem">
@@ -171,28 +170,28 @@ Functions</h2></td></tr>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>maximum amount of money that can be robbed </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">if</span> (n == 0) { <span class="comment">// if there is no house</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (n == 1) { <span class="comment">// if there is only one house</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> money[0];</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> (n == 2) { <span class="comment">// if there are two houses, one with the maximum amount of</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// money will be robbed</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</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>(money[0], money[1]);</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; uint32_t max_value = 0; <span class="comment">// contains maximum stolen value at the end</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint32_t value1 = money[0];</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uint32_t value2 = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a>(money[0], money[1]);</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span> (uint32_t i = 2; i &lt; n; i++) {</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; max_value = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a>(money[i] + value1, value2);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; value1 = value2;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; value2 = max_value;</div>
<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; </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> max_value;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</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">if</span> (n == 0) { <span class="comment">// if there is no house</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> }</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">if</span> (n == 1) { <span class="comment">// if there is only one house</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">return</span> money[0];</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> (n == 2) { <span class="comment">// if there are two houses, one with the maximum amount of</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// money will be robbed</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</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>(money[0], money[1]);</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> uint32_t max_value = 0; <span class="comment">// contains maximum stolen value at the end</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> uint32_t value1 = money[0];</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> uint32_t value2 = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a>(money[0], money[1]);</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordflow">for</span> (uint32_t i = 2; i &lt; n; i++) {</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> max_value = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a>(money[i] + value1, value2);</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> value1 = value2;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> value2 = max_value;</div>
<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> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordflow">return</span> max_value;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span>}</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>
@@ -203,7 +202,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">
@@ -221,10 +220,10 @@ 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="l00111"></a><span class="lineno"> 111</span>&#160; {</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="../../d6/d26/house__robber_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;}</div>
<div class="fragment"><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> <a class="code hl_function" href="../../d6/d26/house__robber_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span>}</div>
<div class="ttc" id="ahouse__robber_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d6/d26/house__robber_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition:</b> house_robber.cpp:66</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -235,7 +234,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">
@@ -260,46 +259,46 @@ Here is the call graph for this function:</div>
<p>Self-test implementations. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// Test 1</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">// [1, 2, 3, 1] return 4</span></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/container/vector.html">std::vector&lt;uint32_t&gt;</a> array1 = {1, 2, 3, 1};</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/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 1... &quot;</span>;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; assert(</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; dynamic_programming::house_robber::houseRobber(array1, array1.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()) ==</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; 4); <span class="comment">// here the two non-adjacent houses that are robbed are first and</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// third with total sum money as 4</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;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="l00076"></a><span class="lineno"> 76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// Test 2</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// [6, 7, 1, 3, 8, 2, 4] return 19</span></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/container/vector.html">std::vector&lt;uint32_t&gt;</a> array2 = {6, 7, 1, 3, 8, 2, 4};</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;Test 2... &quot;</span>;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; assert(</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; dynamic_programming::house_robber::houseRobber(array2, array2.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()) ==</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; 19); <span class="comment">// here the four non-adjacent houses that are robbed are first,</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// third, fifth and seventh with total sum money as 19</span></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_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="l00086"></a><span class="lineno"> 86</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// Test 3</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="comment">// [] return 0</span></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/vector.html">std::vector&lt;uint32_t&gt;</a> array3 = {};</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; <span class="stringliteral">&quot;Test 3... &quot;</span>;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; assert(</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; dynamic_programming::house_robber::houseRobber(array3, array3.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()) ==</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; 0); <span class="comment">// since there is no house no money can be robbed</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</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="l00095"></a><span class="lineno"> 95</span>&#160; </div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// Test 4</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// [2,7,9,3,1] return 12</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint32_t&gt;</a> array4 = {2, 7, 9, 3, 1};</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</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 4... &quot;</span>;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; assert(</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; dynamic_programming::house_robber::houseRobber(array4, array4.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()) ==</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; 12); <span class="comment">// here the three non-adjacent houses that are robbed are first,</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// third and fifth with total sum money as 12</span></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&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="l00105"></a><span class="lineno"> 105</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> {</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// Test 1</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// [1, 2, 3, 1] return 4</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint32_t&gt;</a> array1 = {1, 2, 3, 1};</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</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... &quot;</span>;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> assert(</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> dynamic_programming::house_robber::houseRobber(array1, array1.<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="l00073" name="l00073"></a><span class="lineno"> 73</span> 4); <span class="comment">// here the two non-adjacent houses that are robbed are first and</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// third with total sum money as 4</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;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="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="comment">// Test 2</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// [6, 7, 1, 3, 8, 2, 4] return 19</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint32_t&gt;</a> array2 = {6, 7, 1, 3, 8, 2, 4};</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;Test 2... &quot;</span>;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> assert(</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> dynamic_programming::house_robber::houseRobber(array2, array2.<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="l00083" name="l00083"></a><span class="lineno"> 83</span> 19); <span class="comment">// here the four non-adjacent houses that are robbed are first,</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// third, fifth and seventh with total sum money as 19</span></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_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="l00086" name="l00086"></a><span class="lineno"> 86</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// Test 3</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// [] return 0</span></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/vector.html">std::vector&lt;uint32_t&gt;</a> array3 = {};</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; <span class="stringliteral">&quot;Test 3... &quot;</span>;</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> assert(</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> dynamic_programming::house_robber::houseRobber(array3, array3.<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="l00093" name="l00093"></a><span class="lineno"> 93</span> 0); <span class="comment">// since there is no house no money can be robbed</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</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="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// Test 4</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// [2,7,9,3,1] return 12</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint32_t&gt;</a> array4 = {2, 7, 9, 3, 1};</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</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 4... &quot;</span>;</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> assert(</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> dynamic_programming::house_robber::houseRobber(array4, array4.<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="l00102" name="l00102"></a><span class="lineno"> 102</span> 12); <span class="comment">// here the three non-adjacent houses that are robbed are first,</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// third and fifth with total sum money as 12</span></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&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="l00105" name="l00105"></a><span class="lineno"> 105</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="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>
@@ -319,7 +318,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_8a20dd5bfd5341a725342bf72b6b686f.html">dynamic_programming</a></li><li class="navelem"><a class="el" href="../../d6/d26/house__robber_8cpp.html">house_robber.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: dynamic_programming::house_robber::houseRobber Pages: 1 -->
<svg width="247pt" height="57pt"

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 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="163pt" 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="237pt" height="66pt"

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -1,4 +0,0 @@
<map id="binary_search_tree&lt; T &gt;::bst_node" name="binary_search_tree&lt; T &gt;::bst_node">
<area shape="rect" id="node1" title="A struct to represent a node in the Binary Search Tree." alt="" coords="24,124,160,165"/>
<area shape="rect" id="node2" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/memory/unique_ptr.html" title=" " alt="" coords="5,5,179,47"/>
</map>

View File

@@ -1 +0,0 @@
b28bd0aaeb6b9a8ada7979dc2b2ce620

View File

@@ -1,41 +0,0 @@
<?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)
-->
<!-- Title: binary_search_tree&lt; T &gt;::bst_node Pages: 1 -->
<svg width="138pt" height="128pt"
viewBox="0.00 0.00 138.00 128.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 124)">
<title>binary_search_tree&lt; T &gt;::bst_node</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-124 134,-124 134,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title="A struct to represent a node in the Binary Search Tree.">
<polygon fill="#bfbfbf" stroke="black" points="14,-0.5 14,-30.5 116,-30.5 116,-0.5 14,-0.5"/>
<text text-anchor="start" x="22" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">binary_search_tree</text>
<text text-anchor="middle" x="65" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; T &gt;::bst_node</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html" xlink:title=" ">
<polygon fill="white" stroke="black" points="0,-89.5 0,-119.5 130,-119.5 130,-89.5 0,-89.5"/>
<text text-anchor="start" x="8" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::unique_ptr&lt; binary</text>
<text text-anchor="middle" x="65" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00">_search_tree::bst_node &gt;</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1" class="edge">
<title>Node2&#45;&gt;Node1</title>
<path fill="none" stroke="#9a32cd" stroke-dasharray="5,2" d="M65,-79.09C65,-63.44 65,-43.68 65,-30.6"/>
<polygon fill="#9a32cd" stroke="#9a32cd" points="61.5,-79.13 65,-89.13 68.5,-79.13 61.5,-79.13"/>
<text text-anchor="middle" x="75" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00"> left</text>
<text text-anchor="middle" x="75" y="-52" font-family="Helvetica,sans-Serif" font-size="10.00">right</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 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++: ciphers/caesar_cipher.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('d6/d2c/caesar__cipher_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -93,12 +93,11 @@ $(document).ready(function(){initNavTree('d6/d2c/caesar__cipher_8cpp.html','../.
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">caesar_cipher.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">caesar_cipher.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Implementation of <a href="https://en.wikipedia.org/wiki/Caesar_cipher">Caesar cipher</a> algorithm.
<p>Implementation of <a href="https://en.wikipedia.org/wiki/Caesar_cipher" target="_blank">Caesar cipher</a> algorithm.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
@@ -110,16 +109,16 @@ Include dependency graph for caesar_cipher.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:d6/d4e/namespaceciphers"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d4e/namespaceciphers.html">ciphers</a></td></tr>
<tr class="memdesc:d6/d4e/namespaceciphers"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a href="https://en.wikipedia.org/wiki/Base64">Base64 Encoding and Decoding</a> <br /></td></tr>
<tr class="memitem:d6/d4e/namespaceciphers"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d4e/namespaceciphers.html">ciphers</a></td></tr>
<tr class="memdesc:d6/d4e/namespaceciphers"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a href="https://en.wikipedia.org/wiki/Base64" target="_blank">Base64 Encoding and Decoding</a> <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dd/d81/namespacecaesar"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d81/namespacecaesar.html">caesar</a></td></tr>
<tr class="memdesc:dd/d81/namespacecaesar"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for <a href="https://en.wikipedia.org/wiki/Caesar_cipher">Caesar cipher</a> algorithm. <br /></td></tr>
<tr class="memitem:dd/d81/namespacecaesar"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d81/namespacecaesar.html">caesar</a></td></tr>
<tr class="memdesc:dd/d81/namespacecaesar"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for <a href="https://en.wikipedia.org/wiki/Caesar_cipher" target="_blank">Caesar cipher</a> 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:ac3381121289548640b1c27a58a8524c3"><td class="memItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d2c/caesar__cipher_8cpp.html#ac3381121289548640b1c27a58a8524c3">ciphers::caesar::encrypt</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &amp;text, const int &amp;shift)</td></tr>
<tr class="separator:ac3381121289548640b1c27a58a8524c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -131,20 +130,20 @@ 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/Caesar_cipher">Caesar cipher</a> algorithm. </p>
<p>In cryptography, a Caesar cipher, also known as Caesar's cipher, the shift cipher, Caesar's code or Caesar shift, is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet. For example, with a left shift of 3, D would be replaced by A, E would become B, and so on. The method is named after Julius Caesar, who used it in his private correspondence.</p>
<div class="textblock"><p >Implementation of <a href="https://en.wikipedia.org/wiki/Caesar_cipher" target="_blank">Caesar cipher</a> algorithm. </p>
<p >In cryptography, a Caesar cipher, also known as Caesar's cipher, the shift cipher, Caesar's code or Caesar shift, is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet. For example, with a left shift of 3, D would be replaced by A, E would become B, and so on. The method is named after Julius Caesar, who used it in his private correspondence.</p>
<h3><a class="anchor" id="autotoc_md0"></a>
Algorithm</h3>
<p>The encryption can also be represented using modular arithmetic by first transforming the letters into numbers, according to the scheme, A → 0, B → 1, ..., Z → 25. Encryption of a letter x by a shift n can be described mathematically as, </p><p class="formulaDsp">
<p >The encryption can also be represented using modular arithmetic by first transforming the letters into numbers, according to the scheme, A → 0, B → 1, ..., Z → 25. Encryption of a letter x by a shift n can be described mathematically as, </p><p class="formulaDsp">
\[ E(x) = (x + n)\;\mbox{mod}\; 26\]
</p>
<p> while decryption can be described as, </p><p class="formulaDsp">
\[ D(x) = (x - n) \;\mbox{mod}\; 26\]
</p>
<dl class="section note"><dt>Note</dt><dd>This program implements caesar cipher for only uppercase English alphabet characters (i.e. A-Z).</dd></dl>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/imdeep2905">Deep Raval</a> </dd></dl>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/imdeep2905" target="_blank">Deep Raval</a> </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a355e69511cd2006b5c4c80ae95b71056"></a>
<a id="a355e69511cd2006b5c4c80ae95b71056" name="a355e69511cd2006b5c4c80ae95b71056"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a355e69511cd2006b5c4c80ae95b71056">&#9670;&nbsp;</a></span>decrypt()</h2>
<div class="memitem">
@@ -169,7 +168,7 @@ Algorithm</h3>
</tr>
</table>
</div><div class="memdoc">
<p>Decrypt given text using caesar cipher. </p><dl class="params"><dt>Parameters</dt><dd>
<p >Decrypt given text using caesar cipher. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">text</td><td>text to be decrypted </td></tr>
<tr><td class="paramname">shift</td><td>number of shifts to be applied </td></tr>
@@ -177,19 +176,19 @@ Algorithm</h3>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>new decrypted text </dd></dl>
<div class="fragment"><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; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> decrypted_text = <span class="stringliteral">&quot;&quot;</span>; <span class="comment">// Empty string to store decrypted text</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">char</span> c : text) { <span class="comment">// Going through each character</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">int</span> place_value = get_value(c); <span class="comment">// Getting value of character (i.e. 0-25)</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; place_value = (place_value - shift) % 26;<span class="comment">// Applying decryption formula</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span>(place_value &lt; 0) { <span class="comment">// Handling case where remainder is negative </span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; place_value = place_value + 26;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">char</span> new_char = get_char(place_value); <span class="comment">// Getting original character from decrypted value (i.e. A-Z)</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; decrypted_text += new_char; <span class="comment">// Appending decrypted character</span></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> decrypted_text; <span class="comment">// Returning decrypted text</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
<div class="fragment"><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> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> decrypted_text = <span class="stringliteral">&quot;&quot;</span>; <span class="comment">// Empty string to store decrypted text</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordflow">for</span> (<span class="keywordtype">char</span> c : text) { <span class="comment">// Going through each character</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keywordtype">int</span> place_value = get_value(c); <span class="comment">// Getting value of character (i.e. 0-25)</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> place_value = (place_value - shift) % 26;<span class="comment">// Applying decryption formula</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">if</span>(place_value &lt; 0) { <span class="comment">// Handling case where remainder is negative </span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> place_value = place_value + 26;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> }</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordtype">char</span> new_char = get_char(place_value); <span class="comment">// Getting original character from decrypted value (i.e. A-Z)</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> decrypted_text += new_char; <span class="comment">// Appending decrypted character</span></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> decrypted_text; <span class="comment">// Returning decrypted text</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> }</div>
<div class="ttc" id="abasic_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -200,7 +199,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="ac3381121289548640b1c27a58a8524c3"></a>
<a id="ac3381121289548640b1c27a58a8524c3" name="ac3381121289548640b1c27a58a8524c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac3381121289548640b1c27a58a8524c3">&#9670;&nbsp;</a></span>encrypt()</h2>
<div class="memitem">
@@ -225,7 +224,7 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Encrypt given text using caesar cipher. </p><dl class="params"><dt>Parameters</dt><dd>
<p >Encrypt given text using caesar cipher. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">text</td><td>text to be encrypted </td></tr>
<tr><td class="paramname">shift</td><td>number of shifts to be applied </td></tr>
@@ -233,16 +232,16 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>new encrypted text </dd></dl>
<div class="fragment"><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; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> encrypted_text = <span class="stringliteral">&quot;&quot;</span>; <span class="comment">// Empty string to store encrypted text</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">char</span> c : text) { <span class="comment">// Going through each character</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">int</span> place_value = get_value(c); <span class="comment">// Getting value of character (i.e. 0-25)</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; place_value = (place_value + shift) % 26; <span class="comment">// Applying encryption formula</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">char</span> new_char = get_char(place_value); <span class="comment">// Getting new character from new value (i.e. A-Z)</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; encrypted_text += new_char; <span class="comment">// Appending encrypted character</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> encrypted_text; <span class="comment">// Returning encrypted text</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div>
<div class="fragment"><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> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> encrypted_text = <span class="stringliteral">&quot;&quot;</span>; <span class="comment">// Empty string to store encrypted text</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">for</span> (<span class="keywordtype">char</span> c : text) { <span class="comment">// Going through each character</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordtype">int</span> place_value = get_value(c); <span class="comment">// Getting value of character (i.e. 0-25)</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> place_value = (place_value + shift) % 26; <span class="comment">// Applying encryption formula</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keywordtype">char</span> new_char = get_char(place_value); <span class="comment">// Getting new character from new value (i.e. A-Z)</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> encrypted_text += new_char; <span class="comment">// Appending encrypted character</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> }</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">return</span> encrypted_text; <span class="comment">// Returning encrypted text</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> }</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -252,7 +251,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">
@@ -267,12 +266,12 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Driver Code </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; <span class="comment">// Testing</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="../../d6/d2c/caesar__cipher_8cpp.html#ae1a3968e7947464bee7714f6d43b7002">test</a>();</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;}</div>
<p >Driver Code </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> <span class="comment">// Testing</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <a class="code hl_function" href="../../d6/d2c/caesar__cipher_8cpp.html#ae1a3968e7947464bee7714f6d43b7002">test</a>();</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span>}</div>
<div class="ttc" id="acaesar__cipher_8cpp_html_ae1a3968e7947464bee7714f6d43b7002"><div class="ttname"><a href="../../d6/d2c/caesar__cipher_8cpp.html#ae1a3968e7947464bee7714f6d43b7002">test</a></div><div class="ttdeci">void test()</div><div class="ttdef"><b>Definition:</b> caesar_cipher.cpp:100</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -283,7 +282,7 @@ Here is the call graph for this function:</div>
</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">
@@ -297,25 +296,25 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Function to test above algorithm </p>
<div class="fragment"><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">// Test 1</span></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/string/basic_string.html">std::string</a> text1 = <span class="stringliteral">&quot;ALANTURING&quot;</span>;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> encrypted1 = <a class="code" href="../../d6/d2c/caesar__cipher_8cpp.html#ac3381121289548640b1c27a58a8524c3">ciphers::caesar::encrypt</a>(text1, 17);</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/string/basic_string.html">std::string</a> decrypted1 = <a class="code" href="../../d6/d2c/caesar__cipher_8cpp.html#a355e69511cd2006b5c4c80ae95b71056">ciphers::caesar::decrypt</a>(encrypted1, 17);</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; assert(text1 == decrypted1);</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; <span class="stringliteral">&quot;Original text : &quot;</span> &lt;&lt; text1;</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; , Encrypted text (with shift = 21) : &quot;</span> &lt;&lt; encrypted1;</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; <span class="stringliteral">&quot; , Decrypted text : &quot;</span>&lt;&lt; decrypted1 &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; <span class="comment">// Test 2</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> text2 = <span class="stringliteral">&quot;HELLOWORLD&quot;</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/string/basic_string.html">std::string</a> encrypted2 = <a class="code" href="../../d6/d2c/caesar__cipher_8cpp.html#ac3381121289548640b1c27a58a8524c3">ciphers::caesar::encrypt</a>(text2, 1729);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> decrypted2 = <a class="code" href="../../d6/d2c/caesar__cipher_8cpp.html#a355e69511cd2006b5c4c80ae95b71056">ciphers::caesar::decrypt</a>(encrypted2, 1729);</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; assert(text2 == decrypted2);</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</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;Original text : &quot;</span> &lt;&lt; text2;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</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; , Encrypted text (with shift = 1729) : &quot;</span> &lt;&lt; encrypted2;</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; , Decrypted text : &quot;</span>&lt;&lt; decrypted2 &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="l00117"></a><span class="lineno"> 117</span>&#160;}</div>
<p >Function to test above algorithm </p>
<div class="fragment"><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">// Test 1</span></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/string/basic_string.html">std::string</a> text1 = <span class="stringliteral">&quot;ALANTURING&quot;</span>;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> encrypted1 = <a class="code hl_function" href="../../d6/d2c/caesar__cipher_8cpp.html#ac3381121289548640b1c27a58a8524c3">ciphers::caesar::encrypt</a>(text1, 17);</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/string/basic_string.html">std::string</a> decrypted1 = <a class="code hl_function" href="../../d6/d2c/caesar__cipher_8cpp.html#a355e69511cd2006b5c4c80ae95b71056">ciphers::caesar::decrypt</a>(encrypted1, 17);</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> assert(text1 == decrypted1);</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; <span class="stringliteral">&quot;Original text : &quot;</span> &lt;&lt; text1;</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; , Encrypted text (with shift = 21) : &quot;</span> &lt;&lt; encrypted1;</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; <span class="stringliteral">&quot; , Decrypted text : &quot;</span>&lt;&lt; decrypted1 &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> <span class="comment">// Test 2</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> text2 = <span class="stringliteral">&quot;HELLOWORLD&quot;</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/string/basic_string.html">std::string</a> encrypted2 = <a class="code hl_function" href="../../d6/d2c/caesar__cipher_8cpp.html#ac3381121289548640b1c27a58a8524c3">ciphers::caesar::encrypt</a>(text2, 1729);</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> decrypted2 = <a class="code hl_function" href="../../d6/d2c/caesar__cipher_8cpp.html#a355e69511cd2006b5c4c80ae95b71056">ciphers::caesar::decrypt</a>(encrypted2, 1729);</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> assert(text2 == decrypted2);</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</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;Original text : &quot;</span> &lt;&lt; text2;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</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; , Encrypted text (with shift = 1729) : &quot;</span> &lt;&lt; encrypted2;</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; , Decrypted text : &quot;</span>&lt;&lt; decrypted2 &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="l00117" name="l00117"></a><span class="lineno"> 117</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="acaesar__cipher_8cpp_html_a355e69511cd2006b5c4c80ae95b71056"><div class="ttname"><a href="../../d6/d2c/caesar__cipher_8cpp.html#a355e69511cd2006b5c4c80ae95b71056">ciphers::caesar::decrypt</a></div><div class="ttdeci">std::string decrypt(const std::string &amp;text, const int &amp;shift)</div><div class="ttdef"><b>Definition:</b> caesar_cipher.cpp:81</div></div>
<div class="ttc" id="acaesar__cipher_8cpp_html_ac3381121289548640b1c27a58a8524c3"><div class="ttname"><a href="../../d6/d2c/caesar__cipher_8cpp.html#ac3381121289548640b1c27a58a8524c3">ciphers::caesar::encrypt</a></div><div class="ttdeci">std::string encrypt(const std::string &amp;text, const int &amp;shift)</div><div class="ttdef"><b>Definition:</b> caesar_cipher.cpp:65</div></div>
@@ -335,7 +334,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_4d6e05837bf820fb089a8a8cdf2f42b7.html">ciphers</a></li><li class="navelem"><a class="el" href="../../d6/d2c/caesar__cipher_8cpp.html">caesar_cipher.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: ciphers::caesar::decrypt Pages: 1 -->
<svg width="131pt" height="46pt"

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.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: ciphers::caesar::encrypt Pages: 1 -->
<svg width="131pt" height="46pt"

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.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: 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

@@ -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/fenwick_tree.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('d6/d2e/fenwick__tree_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -93,8 +93,7 @@ $(document).ready(function(){initNavTree('d6/d2e/fenwick__tree_8cpp.html','../..
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">fenwick_tree.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">fenwick_tree.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
@@ -110,21 +109,21 @@ Include dependency graph for fenwick_tree.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="../../dd/d91/class_fenwick_tree.html">FenwickTree</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="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:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d2e/fenwick__tree_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>Fenwick tree. </p>
<p>A Fenwick tree or binary indexed tree is a data structure that can efficiently update elements and calculate prefix sums in a table of numbers. </p>
<div class="textblock"><p >Fenwick tree. </p>
<p >A Fenwick tree or binary indexed tree is a data structure that can efficiently update elements and calculate prefix sums in a table of numbers. </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">
@@ -139,23 +138,23 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<p>Main function </p>
<div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">int</span> n = 5;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> arr = {1, 2, 3, 4, 5};</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="../../dd/d91/class_fenwick_tree.html">FenwickTree</a> fenwick_tree(arr);</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; assert(fenwick_tree.sum_range(0, 0) == 1);</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; assert(fenwick_tree.sum_range(0, 1) == 3);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; assert(fenwick_tree.sum_range(0, 2) == 6);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; fenwick_tree.update(0, 6);</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; assert(fenwick_tree.sum_range(0, 0) == 6);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; assert(fenwick_tree.sum_range(0, 1) == 8);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; assert(fenwick_tree.sum_range(0, 2) == 11);</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;}</div>
<p >Main function </p>
<div class="fragment"><div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> {</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keywordtype">int</span> n = 5;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> arr = {1, 2, 3, 4, 5};</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <a class="code hl_class" href="../../dd/d91/class_fenwick_tree.html">FenwickTree</a> fenwick_tree(arr);</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> assert(fenwick_tree.sum_range(0, 0) == 1);</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> assert(fenwick_tree.sum_range(0, 1) == 3);</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> assert(fenwick_tree.sum_range(0, 2) == 6);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> fenwick_tree.update(0, 6);</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> assert(fenwick_tree.sum_range(0, 0) == 6);</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> assert(fenwick_tree.sum_range(0, 1) == 8);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> assert(fenwick_tree.sum_range(0, 2) == 11);</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span>}</div>
<div class="ttc" id="aclass_fenwick_tree_html"><div class="ttname"><a href="../../dd/d91/class_fenwick_tree.html">FenwickTree</a></div><div class="ttdef"><b>Definition:</b> fenwick_tree.cpp:17</div></div>
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt; int &gt;</a></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>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -171,7 +170,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_074119ce3a874b57120c49a0cc4bb5ad.html">range_queries</a></li><li class="navelem"><a class="el" href="../../d6/d2e/fenwick__tree_8cpp.html">fenwick_tree.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: main Pages: 1 -->
<svg width="496pt" height="66pt"

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.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++: machine_learning::adaline 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('d6/d30/classmachine__learning_1_1adaline.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -96,18 +96,11 @@ $(document).ready(function(){initNavTree('d6/d30/classmachine__learning_1_1adali
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="../../d9/d21/classmachine__learning_1_1adaline-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">machine_learning::adaline Class Reference</div> </div>
<div class="headertitle"><div class="title">machine_learning::adaline Class Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Collaboration diagram for machine_learning::adaline:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../da/dd3/classmachine__learning_1_1adaline__coll__graph.svg" width="188" height="127"><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:a0acbe32aaab897e7939e5b0454035b8c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html#a0acbe32aaab897e7939e5b0454035b8c">adaline</a> (int num_features, const double <a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html#a28160d17e492597a2f112e0d38551cda">eta</a>=0.01f, const double <a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html#aa23d60262f917f35836ef4b1c1d9f7d3">accuracy</a>=1e-5)</td></tr>
<tr class="separator:a0acbe32aaab897e7939e5b0454035b8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -121,33 +114,33 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a082f758fb55fe19f22b3df66f89b2325"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325">activation</a> (double x)</td></tr>
<tr class="separator:a082f758fb55fe19f22b3df66f89b2325"><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:ac8a9c2aaaa63b0f27ea176857e1e7d56"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56">check_size_match</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; double &gt; &amp;x)</td></tr>
<tr class="separator:ac8a9c2aaaa63b0f27ea176857e1e7d56"><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:a28160d17e492597a2f112e0d38551cda"><td class="memItemLeft" align="right" valign="top"><a id="a28160d17e492597a2f112e0d38551cda"></a>
const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html#a28160d17e492597a2f112e0d38551cda">eta</a></td></tr>
<tr class="memitem:a28160d17e492597a2f112e0d38551cda"><td class="memItemLeft" align="right" valign="top"><a id="a28160d17e492597a2f112e0d38551cda" name="a28160d17e492597a2f112e0d38551cda"></a>
const double&#160;</td><td class="memItemRight" valign="bottom"><b>eta</b></td></tr>
<tr class="memdesc:a28160d17e492597a2f112e0d38551cda"><td class="mdescLeft">&#160;</td><td class="mdescRight">learning rate of the algorithm <br /></td></tr>
<tr class="separator:a28160d17e492597a2f112e0d38551cda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa23d60262f917f35836ef4b1c1d9f7d3"><td class="memItemLeft" align="right" valign="top"><a id="aa23d60262f917f35836ef4b1c1d9f7d3"></a>
const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html#aa23d60262f917f35836ef4b1c1d9f7d3">accuracy</a></td></tr>
<tr class="memitem:aa23d60262f917f35836ef4b1c1d9f7d3"><td class="memItemLeft" align="right" valign="top"><a id="aa23d60262f917f35836ef4b1c1d9f7d3" name="aa23d60262f917f35836ef4b1c1d9f7d3"></a>
const double&#160;</td><td class="memItemRight" valign="bottom"><b>accuracy</b></td></tr>
<tr class="memdesc:aa23d60262f917f35836ef4b1c1d9f7d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">model fit convergence accuracy <br /></td></tr>
<tr class="separator:aa23d60262f917f35836ef4b1c1d9f7d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4cd8fe438032fedaa66f93bfd66f5492"><td class="memItemLeft" align="right" valign="top"><a id="a4cd8fe438032fedaa66f93bfd66f5492"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a></td></tr>
<tr class="memitem:a4cd8fe438032fedaa66f93bfd66f5492"><td class="memItemLeft" align="right" valign="top"><a id="a4cd8fe438032fedaa66f93bfd66f5492" name="a4cd8fe438032fedaa66f93bfd66f5492"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>weights</b></td></tr>
<tr class="memdesc:a4cd8fe438032fedaa66f93bfd66f5492"><td class="mdescLeft">&#160;</td><td class="mdescRight">weights of the neural network <br /></td></tr>
<tr class="separator:a4cd8fe438032fedaa66f93bfd66f5492"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="friends" name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a1d821a24e1503d468c95d4acedca58b3"><td class="memItemLeft" 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="memItemRight" valign="bottom"><a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html#a1d821a24e1503d468c95d4acedca58b3">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, const <a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html">adaline</a> &amp;ada)</td></tr>
<tr class="separator:a1d821a24e1503d468c95d4acedca58b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae347040516e995c8fb8ca2e5c0496daa"><td class="memItemLeft" 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="memItemRight" valign="bottom"><a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html#ae347040516e995c8fb8ca2e5c0496daa">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, const <a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html">adaline</a> &amp;ada)</td></tr>
<tr class="separator:ae347040516e995c8fb8ca2e5c0496daa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a0acbe32aaab897e7939e5b0454035b8c"></a>
<a id="a0acbe32aaab897e7939e5b0454035b8c" name="a0acbe32aaab897e7939e5b0454035b8c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0acbe32aaab897e7939e5b0454035b8c">&#9670;&nbsp;</a></span>adaline()</h2>
<div class="memitem">
@@ -186,7 +179,7 @@ Friends</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<p>Default constructor </p><dl class="params"><dt>Parameters</dt><dd>
<p >Default constructor </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">num_features</td><td>number of features present </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">eta</td><td>learning rate (optional, default=0.1) </td></tr>
@@ -194,28 +187,28 @@ Friends</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; : <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a28160d17e492597a2f112e0d38551cda">eta</a>(<a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a28160d17e492597a2f112e0d38551cda">eta</a>), <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#aa23d60262f917f35836ef4b1c1d9f7d3">accuracy</a>(<a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#aa23d60262f917f35836ef4b1c1d9f7d3">accuracy</a>) {</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a28160d17e492597a2f112e0d38551cda">eta</a> &lt;= 0) {</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::cerr</a> &lt;&lt; <span class="stringliteral">&quot;learning rate should be positive and nonzero&quot;</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</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="l00061"></a><span class="lineno"> 61</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/program/exit.html">std::exit</a>(EXIT_FAILURE);</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; </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a> = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;double&gt;</a>(</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; num_features +</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; 1); <span class="comment">// additional weight is for the constant bias term</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">// initialize with random weights in the range [-50, 49]</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">double</span> &amp;weight : <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>) weight = 1.f;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// weights[i] = (static_cast&lt;double&gt;(std::rand() % 100) - 50);</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> : <a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a28160d17e492597a2f112e0d38551cda">eta</a>(<a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a28160d17e492597a2f112e0d38551cda">eta</a>), <a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#aa23d60262f917f35836ef4b1c1d9f7d3">accuracy</a>(<a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#aa23d60262f917f35836ef4b1c1d9f7d3">accuracy</a>) {</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a28160d17e492597a2f112e0d38551cda">eta</a> &lt;= 0) {</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::cerr</a> &lt;&lt; <span class="stringliteral">&quot;learning rate should be positive and nonzero&quot;</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</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="l00061" name="l00061"></a><span class="lineno"> 61</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/program/exit.html">std::exit</a>(EXIT_FAILURE);</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> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a> = <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;double&gt;</a>(</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> num_features +</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> 1); <span class="comment">// additional weight is for the constant bias term</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// initialize with random weights in the range [-50, 49]</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">for</span> (<span class="keywordtype">double</span> &amp;weight : <a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>) weight = 1.f;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// weights[i] = (static_cast&lt;double&gt;(std::rand() % 100) - 50);</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::cerr</a></div></div>
<div class="ttc" id="aclassmachine__learning_1_1adaline_html_a28160d17e492597a2f112e0d38551cda"><div class="ttname"><a href="../../d6/d30/classmachine__learning_1_1adaline.html#a28160d17e492597a2f112e0d38551cda">machine_learning::adaline::eta</a></div><div class="ttdeci">const double eta</div><div class="ttdoc">learning rate of the algorithm</div><div class="ttdef"><b>Definition:</b> adaline_learning.cpp:207</div></div>
<div class="ttc" id="aclassmachine__learning_1_1adaline_html_a4cd8fe438032fedaa66f93bfd66f5492"><div class="ttname"><a href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">machine_learning::adaline::weights</a></div><div class="ttdeci">std::vector&lt; double &gt; weights</div><div class="ttdoc">weights of the neural network</div><div class="ttdef"><b>Definition:</b> adaline_learning.cpp:209</div></div>
<div class="ttc" id="aclassmachine__learning_1_1adaline_html_aa23d60262f917f35836ef4b1c1d9f7d3"><div class="ttname"><a href="../../d6/d30/classmachine__learning_1_1adaline.html#aa23d60262f917f35836ef4b1c1d9f7d3">machine_learning::adaline::accuracy</a></div><div class="ttdeci">const double accuracy</div><div class="ttdoc">model fit convergence accuracy</div><div class="ttdef"><b>Definition:</b> adaline_learning.cpp:208</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="aexit_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/program/exit.html">std::exit</a></div><div class="ttdeci">T exit(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&lt; double &gt;</a></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>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -226,7 +219,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a082f758fb55fe19f22b3df66f89b2325"></a>
<a id="a082f758fb55fe19f22b3df66f89b2325" name="a082f758fb55fe19f22b3df66f89b2325"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a082f758fb55fe19f22b3df66f89b2325">&#9670;&nbsp;</a></span>activation()</h2>
<div class="memitem">
@@ -249,7 +242,7 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Defines activation function as Heaviside's step function. </p><p class="formulaDsp">
<p >Defines activation function as Heaviside's step function. </p><p class="formulaDsp">
\[ f(x) = \begin{cases} -1 &amp; \forall x \le 0\\ 1 &amp; \forall x &gt; 0 \end{cases} \]
</p>
<dl class="params"><dt>Parameters</dt><dd>
@@ -259,11 +252,11 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>activation output </dd></dl>
<div class="fragment"><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;{ <span class="keywordflow">return</span> x &gt; 0 ? 1 : -1; }</div>
<div class="fragment"><div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span>{ <span class="keywordflow">return</span> x &gt; 0 ? 1 : -1; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ac8a9c2aaaa63b0f27ea176857e1e7d56"></a>
<a id="ac8a9c2aaaa63b0f27ea176857e1e7d56" name="ac8a9c2aaaa63b0f27ea176857e1e7d56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8a9c2aaaa63b0f27ea176857e1e7d56">&#9670;&nbsp;</a></span>check_size_match()</h2>
<div class="memitem">
@@ -286,7 +279,7 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>convenient function to check if input feature vector size matches the model weights size </p><dl class="params"><dt>Parameters</dt><dd>
<p >convenient function to check if input feature vector size matches the model weights size </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>fecture vector to check </td></tr>
</table>
@@ -295,16 +288,16 @@ Here is the call graph for this function:</div>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> size matches </dd>
<dd>
<code>false</code> size does not match </dd></dl>
<div class="fragment"><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span> (x.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() != (<a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() - 1)) {</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cerr</a> &lt;&lt; __func__ &lt;&lt; <span class="stringliteral">&quot;: &quot;</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; &lt;&lt; <span class="stringliteral">&quot;Number of features in x does not match the feature &quot;</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="stringliteral">&quot;dimension in model!&quot;</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</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="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> {</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">if</span> (x.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() != (<a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>.size() - 1)) {</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cerr</a> &lt;&lt; __func__ &lt;&lt; <span class="stringliteral">&quot;: &quot;</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> &lt;&lt; <span class="stringliteral">&quot;Number of features in x does not match the feature &quot;</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="stringliteral">&quot;dimension in model!&quot;</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</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="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</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> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> }</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">
Here is the call graph for this function:</div>
@@ -315,7 +308,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a74e3c6c037b67895014414c5d75465e5"></a>
<a id="a74e3c6c037b67895014414c5d75465e5" name="a74e3c6c037b67895014414c5d75465e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74e3c6c037b67895014414c5d75465e5">&#9670;&nbsp;</a></span>fit() <span class="overload">[1/2]</span></h2>
<div class="memitem">
@@ -348,7 +341,7 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Update the weights of the model using supervised learning for one feature vector </p><dl class="params"><dt>Parameters</dt><dd>
<p >Update the weights of the model using supervised learning for one feature vector </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>feature vector </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>known output value </td></tr>
@@ -356,36 +349,36 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>correction factor </dd></dl>
<div class="fragment"><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; <span class="keywordflow">if</span> (!<a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56">check_size_match</a>(x)) {</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="comment">/* output of the model with current weights */</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordtype">int</span> p = <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#ab11242d9ad5b03a75911e29b04f78fd3">predict</a>(x);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">int</span> prediction_error = y - p; <span class="comment">// error in estimation</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">double</span> correction_factor = <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a28160d17e492597a2f112e0d38551cda">eta</a> * prediction_error;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">/* update each weight, the last weight is the bias term */</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; x.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); i++) {</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>[i] += correction_factor * x[i];</div>
<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; <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>[x.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()] += correction_factor; <span class="comment">// update bias</span></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; <span class="keywordflow">return</span> correction_factor;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div>
<div class="fragment"><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> <span class="keywordflow">if</span> (!<a class="code hl_function" href="../../d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56">check_size_match</a>(x)) {</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> }</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="comment">/* output of the model with current weights */</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordtype">int</span> p = <a class="code hl_function" href="../../d6/d30/classmachine__learning_1_1adaline.html#ab11242d9ad5b03a75911e29b04f78fd3">predict</a>(x);</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keywordtype">int</span> prediction_error = y - p; <span class="comment">// error in estimation</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="keywordtype">double</span> correction_factor = <a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a28160d17e492597a2f112e0d38551cda">eta</a> * prediction_error;</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="comment">/* update each weight, the last weight is the bias term */</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; x.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); i++) {</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>[i] += correction_factor * x[i];</div>
<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> <a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>[x.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()] += correction_factor; <span class="comment">// update bias</span></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> <span class="keywordflow">return</span> correction_factor;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> }</div>
<div class="ttc" id="aclassmachine__learning_1_1adaline_html_ab11242d9ad5b03a75911e29b04f78fd3"><div class="ttname"><a href="../../d6/d30/classmachine__learning_1_1adaline.html#ab11242d9ad5b03a75911e29b04f78fd3">machine_learning::adaline::predict</a></div><div class="ttdeci">int predict(const std::vector&lt; double &gt; &amp;x, double *out=nullptr)</div><div class="ttdef"><b>Definition:</b> adaline_learning.cpp:95</div></div>
<div class="ttc" id="aclassmachine__learning_1_1adaline_html_ac8a9c2aaaa63b0f27ea176857e1e7d56"><div class="ttname"><a href="../../d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56">machine_learning::adaline::check_size_match</a></div><div class="ttdeci">bool check_size_match(const std::vector&lt; double &gt; &amp;x)</div><div class="ttdef"><b>Definition:</b> adaline_learning.cpp:196</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="../../d6/d30/classmachine__learning_1_1adaline_a74e3c6c037b67895014414c5d75465e5_cgraph.svg" width="100%" height="577"><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="../../d6/d30/classmachine__learning_1_1adaline_a74e3c6c037b67895014414c5d75465e5_cgraph.svg" width="100%" height="542"><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="a8d61f9ed872eef26bca39388cbda6a91"></a>
<a id="a8d61f9ed872eef26bca39388cbda6a91" name="a8d61f9ed872eef26bca39388cbda6a91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d61f9ed872eef26bca39388cbda6a91">&#9670;&nbsp;</a></span>fit() <span class="overload">[2/2]</span></h2>
<div class="memitem">
@@ -420,55 +413,55 @@ template&lt;size_t N&gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Update the weights of the model using supervised learning for an array of vectors. </p><dl class="params"><dt>Parameters</dt><dd>
<p >Update the weights of the model using supervised learning for an array of vectors. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">X</td><td>array of feature vector </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>known output value for each feature vector </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordtype">double</span> avg_pred_error = 1.f;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; </div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">int</span> iter = 0;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">for</span> (iter = 0; (iter &lt; <a class="code" href="../../d9/d66/group__machine__learning.html#ga5118e5cbc4f0886e27b3a7a2544dded1">MAX_ITER</a>) &amp;&amp; (avg_pred_error &gt; <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#aa23d60262f917f35836ef4b1c1d9f7d3">accuracy</a>);</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; iter++) {</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; avg_pred_error = 0.f;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// perform fit for each sample</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; i++) {</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">double</span> err = <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a74e3c6c037b67895014414c5d75465e5">fit</a>(X[i], Y[i]);</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; avg_pred_error += std::abs(err);</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; avg_pred_error /= <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="comment">// Print updates every 200th iteration</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="comment">// if (iter % 100 == 0)</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</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;\tIter &quot;</span> &lt;&lt; iter &lt;&lt; <span class="stringliteral">&quot;: Training weights: &quot;</span> &lt;&lt; *<span class="keyword">this</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\tAvg error: &quot;</span> &lt;&lt; avg_pred_error &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="l00165"></a><span class="lineno"> 165</span>&#160; }</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; </div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">if</span> (iter &lt; <a class="code" href="../../d9/d66/group__machine__learning.html#ga5118e5cbc4f0886e27b3a7a2544dded1">MAX_ITER</a>) {</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</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;Converged after &quot;</span> &lt;&lt; iter &lt;&lt; <span class="stringliteral">&quot; iterations.&quot;</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</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="l00170"></a><span class="lineno"> 170</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</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;Did not converge after &quot;</span> &lt;&lt; iter &lt;&lt; <span class="stringliteral">&quot; iterations.&quot;</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</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="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
<div class="fragment"><div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> {</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordtype">double</span> avg_pred_error = 1.f;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordtype">int</span> iter = 0;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keywordflow">for</span> (iter = 0; (iter &lt; <a class="code hl_variable" href="../../d9/d66/group__machine__learning.html#ga5118e5cbc4f0886e27b3a7a2544dded1">MAX_ITER</a>) &amp;&amp; (avg_pred_error &gt; <a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#aa23d60262f917f35836ef4b1c1d9f7d3">accuracy</a>);</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> iter++) {</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> avg_pred_error = 0.f;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="comment">// perform fit for each sample</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; i++) {</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordtype">double</span> err = <a class="code hl_function" href="../../d6/d30/classmachine__learning_1_1adaline.html#a74e3c6c037b67895014414c5d75465e5">fit</a>(X[i], Y[i]);</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> avg_pred_error += std::abs(err);</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> avg_pred_error /= <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>;</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> </div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="comment">// Print updates every 200th iteration</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="comment">// if (iter % 100 == 0)</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</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;\tIter &quot;</span> &lt;&lt; iter &lt;&lt; <span class="stringliteral">&quot;: Training weights: &quot;</span> &lt;&lt; *<span class="keyword">this</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> &lt;&lt; <span class="stringliteral">&quot;\tAvg error: &quot;</span> &lt;&lt; avg_pred_error &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="l00165" name="l00165"></a><span class="lineno"> 165</span> }</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="keywordflow">if</span> (iter &lt; <a class="code hl_variable" href="../../d9/d66/group__machine__learning.html#ga5118e5cbc4f0886e27b3a7a2544dded1">MAX_ITER</a>) {</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</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;Converged after &quot;</span> &lt;&lt; iter &lt;&lt; <span class="stringliteral">&quot; iterations.&quot;</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</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="l00170" name="l00170"></a><span class="lineno"> 170</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</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;Did not converge after &quot;</span> &lt;&lt; iter &lt;&lt; <span class="stringliteral">&quot; iterations.&quot;</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</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="l00173" name="l00173"></a><span class="lineno"> 173</span> }</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> }</div>
<div class="ttc" id="aclassmachine__learning_1_1adaline_html_a74e3c6c037b67895014414c5d75465e5"><div class="ttname"><a href="../../d6/d30/classmachine__learning_1_1adaline.html#a74e3c6c037b67895014414c5d75465e5">machine_learning::adaline::fit</a></div><div class="ttdeci">double fit(const std::vector&lt; double &gt; &amp;x, const int &amp;y)</div><div class="ttdef"><b>Definition:</b> adaline_learning.cpp:119</div></div>
<div class="ttc" id="adata__structures_2sparse__table_8cpp_html_a10f3ffb3f6f7e1b83d556b9c8de89a5d"><div class="ttname"><a href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">data_structures::sparse_table::N</a></div><div class="ttdeci">constexpr uint32_t N</div><div class="ttdoc">A struct to represent sparse table for min() as their invariant function, for the given array A....</div><div class="ttdef"><b>Definition:</b> sparse_table.cpp:47</div></div>
<div class="ttc" id="agroup__machine__learning_html_ga5118e5cbc4f0886e27b3a7a2544dded1"><div class="ttname"><a href="../../d9/d66/group__machine__learning.html#ga5118e5cbc4f0886e27b3a7a2544dded1">MAX_ITER</a></div><div class="ttdeci">constexpr int MAX_ITER</div><div class="ttdef"><b>Definition:</b> adaline_learning.cpp:40</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="../../d6/d30/classmachine__learning_1_1adaline_a8d61f9ed872eef26bca39388cbda6a91_cgraph.svg" width="100%" height="600"><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="../../d6/d30/classmachine__learning_1_1adaline_a8d61f9ed872eef26bca39388cbda6a91_cgraph.svg" width="100%" height="578"><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="ab11242d9ad5b03a75911e29b04f78fd3"></a>
<a id="ab11242d9ad5b03a75911e29b04f78fd3" name="ab11242d9ad5b03a75911e29b04f78fd3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab11242d9ad5b03a75911e29b04f78fd3">&#9670;&nbsp;</a></span>predict()</h2>
<div class="memitem">
@@ -501,7 +494,7 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>predict the output of the model for given set of features </p><dl class="params"><dt>Parameters</dt><dd>
<p >predict the output of the model for given set of features </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>input vector </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>optional argument to return neuron output before applying activation function (optional, <code>nullptr</code> to ignore) </td></tr>
@@ -509,23 +502,22 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>model prediction output </dd></dl>
<div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56">check_size_match</a>(x)) {</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> 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; </div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">double</span> y = <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>(); <span class="comment">// assign bias value</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="comment">// for (int i = 0; i &lt; x.size(); i++) y += x[i] * weights[i];</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; y = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/inner_product.html">std::inner_product</a>(x.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>(), x.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/end.html">end</a>(), <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>(), y);</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">if</span> (out != <span class="keyword">nullptr</span>) { <span class="comment">// if out variable is provided</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; *out = y;</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; </div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325">activation</a>(y); <span class="comment">// quantizer: apply ADALINE threshold function</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div>
<div class="ttc" id="aback_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/back.html">std::vector::back</a></div><div class="ttdeci">T back(T... args)</div></div>
<div class="fragment"><div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> {</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="../../d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56">check_size_match</a>(x)) {</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">return</span> 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> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordtype">double</span> y = <a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>.back(); <span class="comment">// assign bias value</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// for (int i = 0; i &lt; x.size(); i++) y += x[i] * weights[i];</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> y = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/inner_product.html">std::inner_product</a>(x.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>(), x.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/end.html">end</a>(), <a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>.begin(), y);</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">if</span> (out != <span class="keyword">nullptr</span>) { <span class="comment">// if out variable is provided</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> *out = y;</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> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325">activation</a>(y); <span class="comment">// quantizer: apply ADALINE threshold function</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> }</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="ttc" id="aclassmachine__learning_1_1adaline_html_a082f758fb55fe19f22b3df66f89b2325"><div class="ttname"><a href="../../d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325">machine_learning::adaline::activation</a></div><div class="ttdeci">int activation(double x)</div><div class="ttdef"><b>Definition:</b> adaline_learning.cpp:186</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>
@@ -533,15 +525,15 @@ Here is the call graph for this function:</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="../../d6/d30/classmachine__learning_1_1adaline_ab11242d9ad5b03a75911e29b04f78fd3_cgraph.svg" width="576" height="323"><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="../../d6/d30/classmachine__learning_1_1adaline_ab11242d9ad5b03a75911e29b04f78fd3_cgraph.svg" width="576" height="272"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="a1d821a24e1503d468c95d4acedca58b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d821a24e1503d468c95d4acedca58b3">&#9670;&nbsp;</a></span>operator&lt;&lt;</h2>
<a id="ae347040516e995c8fb8ca2e5c0496daa" name="ae347040516e995c8fb8ca2e5c0496daa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae347040516e995c8fb8ca2e5c0496daa">&#9670;&nbsp;</a></span>operator&lt;&lt;</h2>
<div class="memitem">
<div class="memproto">
@@ -550,7 +542,7 @@ Here is the call graph for this function:</div>
<td class="mlabels-left">
<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; 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; 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>
@@ -573,18 +565,18 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Operator to print the weights of the model </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; out &lt;&lt; <span class="stringliteral">&quot;&lt;&quot;</span>;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; ada.<a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); i++) {</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; out &lt;&lt; ada.<a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>[i];</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> (i &lt; ada.<a class="code" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() - 1) {</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; out &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</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; out &lt;&lt; <span class="stringliteral">&quot;&gt;&quot;</span>;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> out;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
<p >Operator to print the weights of the model </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> out &lt;&lt; <span class="stringliteral">&quot;&lt;&quot;</span>;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; ada.<a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>.size(); i++) {</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> out &lt;&lt; ada.<a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>[i];</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordflow">if</span> (i &lt; ada.<a class="code hl_variable" href="../../d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492">weights</a>.size() - 1) {</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> out &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</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> out &lt;&lt; <span class="stringliteral">&quot;&gt;&quot;</span>;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordflow">return</span> out;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> }</div>
</div><!-- fragment -->
</div>
</div>
@@ -597,7 +589,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="../../d8/d77/namespacemachine__learning.html">machine_learning</a></li><li class="navelem"><a class="el" href="../../d6/d30/classmachine__learning_1_1adaline.html">adaline</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

@@ -6,7 +6,7 @@ var classmachine__learning_1_1adaline =
[ "fit", "d6/d30/classmachine__learning_1_1adaline.html#a74e3c6c037b67895014414c5d75465e5", null ],
[ "fit", "d6/d30/classmachine__learning_1_1adaline.html#a8d61f9ed872eef26bca39388cbda6a91", null ],
[ "predict", "d6/d30/classmachine__learning_1_1adaline.html#ab11242d9ad5b03a75911e29b04f78fd3", null ],
[ "operator<<", "d6/d30/classmachine__learning_1_1adaline.html#a1d821a24e1503d468c95d4acedca58b3", null ],
[ "operator<<", "d6/d30/classmachine__learning_1_1adaline.html#ae347040516e995c8fb8ca2e5c0496daa", null ],
[ "accuracy", "d6/d30/classmachine__learning_1_1adaline.html#aa23d60262f917f35836ef4b1c1d9f7d3", null ],
[ "eta", "d6/d30/classmachine__learning_1_1adaline.html#a28160d17e492597a2f112e0d38551cda", null ],
[ "weights", "d6/d30/classmachine__learning_1_1adaline.html#a4cd8fe438032fedaa66f93bfd66f5492", 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::adaline::adaline Pages: 1 -->
<svg width="231pt" height="66pt"

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -1,12 +1,11 @@
<map id="machine_learning::adaline::fit" name="machine_learning::adaline::fit">
<area shape="rect" id="node1" title=" " alt="" coords="5,60,201,87"/>
<area shape="rect" id="node2" href="$d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56" title=" " alt="" coords="475,53,652,94"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="700,5,815,32"/>
<area shape="rect" id="node5" href="$d6/d30/classmachine__learning_1_1adaline.html#ab11242d9ad5b03a75911e29b04f78fd3" title=" " alt="" coords="249,162,427,203"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/manip/endl.html#" title=" " alt="" coords="721,60,793,87"/>
<area shape="rect" id="node6" href="$d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325" title=" " alt="" coords="475,221,652,262"/>
<area shape="rect" id="node7" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/back.html#" title=" " alt="" coords="504,287,623,313"/>
<area shape="rect" id="node8" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/begin.html#" title=" " alt="" coords="501,337,625,364"/>
<area shape="rect" id="node9" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/end.html#" title=" " alt="" coords="507,119,620,145"/>
<area shape="rect" id="node10" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/inner_product.html#" title=" " alt="" coords="499,169,628,196"/>
<area shape="rect" id="node1" title=" " alt="" coords="5,71,201,98"/>
<area shape="rect" id="node2" href="$d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56" title=" " alt="" coords="475,5,652,47"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="700,67,815,94"/>
<area shape="rect" id="node5" href="$d6/d30/classmachine__learning_1_1adaline.html#ab11242d9ad5b03a75911e29b04f78fd3" title=" " alt="" coords="249,144,427,185"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/manip/endl.html#" title=" " alt="" coords="721,13,793,39"/>
<area shape="rect" id="node6" href="$d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325" title=" " alt="" coords="475,224,652,265"/>
<area shape="rect" id="node7" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/begin.html#" title=" " alt="" coords="501,290,625,317"/>
<area shape="rect" id="node8" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/end.html#" title=" " alt="" coords="507,122,620,149"/>
<area shape="rect" id="node9" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/inner_product.html#" title=" " alt="" coords="499,173,628,199"/>
</map>

View File

@@ -1 +1 @@
8b6210a506fc8d9d55fa685d0df1efea
036900b9d6578fdbb3fad8376e41967c

View File

@@ -1,10 +1,10 @@
<?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::adaline::fit Pages: 1 -->
<!--zoomable 277 -->
<!--zoomable 242 -->
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.edge:hover path { stroke: red; }
@@ -47,20 +47,20 @@ if (edges && edges.length) {
<script type="text/javascript">
var viewWidth = 615;
var viewHeight = 277;
var sectionId = 'dynsection-3';
var viewHeight = 242;
var sectionId = 'dynsection-2';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<title>machine_learning::adaline::fit</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-273 611,-273 611,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-237.5 611,-237.5 611,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,-208.5 0,-227.5 147,-227.5 147,-208.5 0,-208.5"/>
<text text-anchor="middle" x="73.5" y="-215.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline::fit</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-164.5 0,-183.5 147,-183.5 147,-164.5 0,-164.5"/>
<text text-anchor="middle" x="73.5" y="-171.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline::fit</text>
</a>
</g>
</g>
@@ -77,39 +77,39 @@ var sectionId = 'dynsection-3';
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M147.24,-218C204.38,-218 283.7,-218 341.63,-218"/>
<polygon fill="midnightblue" stroke="midnightblue" points="341.82,-221.5 351.82,-218 341.82,-214.5 341.82,-221.5"/>
<path fill="none" stroke="midnightblue" d="M147.16,-183.39C159.13,-184.93 171.41,-186.51 183,-188 235.99,-194.81 295.71,-202.45 341.62,-208.31"/>
<polygon fill="midnightblue" stroke="midnightblue" points="341.43,-211.82 351.8,-209.61 342.32,-204.87 341.43,-211.82"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="521,-249.5 521,-268.5 607,-268.5 607,-249.5 521,-249.5"/>
<text text-anchor="middle" x="564" y="-256.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
<polygon fill="white" stroke="black" points="521,-167.5 521,-186.5 607,-186.5 607,-167.5 521,-167.5"/>
<text text-anchor="middle" x="564" y="-174.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge11" class="edge">
<g id="edge10" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M143.6,-227.52C156.67,-229.15 170.24,-230.72 183,-232 299.67,-243.66 436.98,-252.12 510.4,-256.22"/>
<polygon fill="midnightblue" stroke="midnightblue" points="510.58,-259.73 520.76,-256.79 510.97,-252.75 510.58,-259.73"/>
<path fill="none" stroke="midnightblue" d="M147.11,-174.45C246.58,-175.06 422.87,-176.14 510.51,-176.68"/>
<polygon fill="midnightblue" stroke="midnightblue" points="510.73,-180.18 520.75,-176.74 510.77,-173.18 510.73,-180.18"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#ab11242d9ad5b03a75911e29b04f78fd3" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="183,-121 183,-151 316,-151 316,-121 183,-121"/>
<text text-anchor="start" x="191" y="-139" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="249.5" y="-128" font-family="Helvetica,sans-Serif" font-size="10.00">::predict</text>
<polygon fill="white" stroke="black" points="183,-99 183,-129 316,-129 316,-99 183,-99"/>
<text text-anchor="start" x="191" y="-117" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="249.5" y="-106" font-family="Helvetica,sans-Serif" font-size="10.00">::predict</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node1&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M94.8,-208.43C122.29,-195.48 171.97,-172.07 207.41,-155.36"/>
<polygon fill="midnightblue" stroke="midnightblue" points="208.99,-158.49 216.54,-151.06 206.01,-152.16 208.99,-158.49"/>
<path fill="none" stroke="midnightblue" d="M102.07,-164.49C126.97,-155.91 164.32,-143.03 195.06,-132.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="196.48,-135.64 204.79,-129.07 194.19,-129.02 196.48,-135.64"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
@@ -129,90 +129,75 @@ var sectionId = 'dynsection-3';
<!-- Node2&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node2&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M472.12,-233.03C487.72,-237.49 504.62,-242.32 519.56,-246.59"/>
<polygon fill="midnightblue" stroke="midnightblue" points="518.98,-250.06 529.56,-249.45 520.91,-243.33 518.98,-250.06"/>
<path fill="none" stroke="midnightblue" d="M472.12,-202.97C487.72,-198.51 504.62,-193.68 519.56,-189.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="520.91,-192.67 529.56,-186.55 518.98,-185.94 520.91,-192.67"/>
</g>
<!-- Node5&#45;&gt;Node2 -->
<g id="edge8" class="edge">
<g id="edge7" class="edge">
<title>Node5&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M274.99,-151.1C295.22,-163.24 324.91,-180.31 352,-193 356.38,-195.05 360.99,-197.07 365.64,-199.02"/>
<polygon fill="midnightblue" stroke="midnightblue" points="364.6,-202.38 375.19,-202.9 367.24,-195.89 364.6,-202.38"/>
<path fill="none" stroke="midnightblue" d="M274.78,-129.12C303.72,-147.15 352.22,-177.35 384.53,-197.47"/>
<polygon fill="midnightblue" stroke="midnightblue" points="382.85,-200.54 393.19,-202.86 386.55,-194.6 382.85,-200.54"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="352,-77 352,-107 485,-107 485,-77 352,-77"/>
<text text-anchor="start" x="360" y="-95" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="418.5" y="-84" font-family="Helvetica,sans-Serif" font-size="10.00">::activation</text>
<polygon fill="white" stroke="black" points="352,-39 352,-69 485,-69 485,-39 352,-39"/>
<text text-anchor="start" x="360" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="418.5" y="-46" font-family="Helvetica,sans-Serif" font-size="10.00">::activation</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M307.5,-120.98C321.4,-117.32 336.39,-113.37 350.7,-109.6"/>
<polygon fill="midnightblue" stroke="midnightblue" points="351.69,-112.96 360.47,-107.03 349.91,-106.19 351.69,-112.96"/>
<path fill="none" stroke="midnightblue" d="M292.64,-98.86C314.98,-90.83 342.59,-80.91 366.17,-72.44"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.43,-75.71 375.66,-69.03 365.07,-69.12 367.43,-75.71"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="374,-38.5 374,-57.5 463,-57.5 463,-38.5 374,-38.5"/>
<text text-anchor="middle" x="418.5" y="-45.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::back</text>
<g id="a_node7"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/begin.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="372,-0.5 372,-19.5 465,-19.5 465,-0.5 372,-0.5"/>
<text text-anchor="middle" x="418.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::begin</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node7 -->
<g id="edge6" class="edge">
<title>Node5&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M268.87,-120.87C288.42,-105.42 320.76,-81.69 352,-67 356.96,-64.67 362.26,-62.56 367.62,-60.67"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.87,-63.94 377.28,-57.5 366.68,-57.29 368.87,-63.94"/>
<path fill="none" stroke="midnightblue" d="M264.52,-98.89C282.89,-79.95 316.91,-47.7 352,-29 356.22,-26.75 360.74,-24.74 365.35,-22.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="366.65,-26.2 374.9,-19.56 364.31,-19.6 366.65,-26.2"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/begin.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="372,-0.5 372,-19.5 465,-19.5 465,-0.5 372,-0.5"/>
<text text-anchor="middle" x="418.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::begin</text>
<g id="a_node8"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="376,-126.5 376,-145.5 461,-145.5 461,-126.5 376,-126.5"/>
<text text-anchor="middle" x="418.5" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node8 -->
<g id="edge7" class="edge">
<g id="edge8" class="edge">
<title>Node5&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M260.79,-120.81C277.31,-97.58 311.98,-53.37 352,-29 355.43,-26.91 359.1,-25.04 362.88,-23.37"/>
<polygon fill="midnightblue" stroke="midnightblue" points="364.43,-26.53 372.47,-19.62 361.88,-20.01 364.43,-26.53"/>
<path fill="none" stroke="midnightblue" d="M316.02,-122.63C332.51,-124.8 349.99,-127.11 365.7,-129.18"/>
<polygon fill="midnightblue" stroke="midnightblue" points="365.37,-132.66 375.75,-130.5 366.29,-125.72 365.37,-132.66"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="376,-164.5 376,-183.5 461,-183.5 461,-164.5 376,-164.5"/>
<text text-anchor="middle" x="418.5" y="-171.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
<g id="a_node9"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/inner_product.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="370,-88.5 370,-107.5 467,-107.5 467,-88.5 370,-88.5"/>
<text text-anchor="middle" x="418.5" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::inner_product</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node9 -->
<g id="edge9" class="edge">
<title>Node5&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M316.02,-150.91C332.51,-154.66 349.99,-158.64 365.7,-162.21"/>
<polygon fill="midnightblue" stroke="midnightblue" points="365.22,-165.69 375.75,-164.5 366.77,-158.87 365.22,-165.69"/>
</g>
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/inner_product.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="370,-126.5 370,-145.5 467,-145.5 467,-126.5 370,-126.5"/>
<text text-anchor="middle" x="418.5" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::inner_product</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node10 -->
<g id="edge10" class="edge">
<title>Node5&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M316.02,-136C330.51,-136 345.75,-136 359.9,-136"/>
<polygon fill="midnightblue" stroke="midnightblue" points="359.97,-139.5 369.97,-136 359.97,-132.5 359.97,-139.5"/>
<path fill="none" stroke="midnightblue" d="M316.02,-107.72C330.51,-106.33 345.75,-104.87 359.9,-103.52"/>
<polygon fill="midnightblue" stroke="midnightblue" points="360.35,-106.99 369.97,-102.55 359.69,-100.02 360.35,-106.99"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -1,20 +1,20 @@
<?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::adaline::fit Pages: 1 -->
<svg width="615pt" height="277pt"
viewBox="0.00 0.00 615.00 277.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 273)">
<svg width="615pt" height="242pt"
viewBox="0.00 0.00 615.00 241.50" 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 237.5)">
<title>machine_learning::adaline::fit</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-273 611,-273 611,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-237.5 611,-237.5 611,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,-208.5 0,-227.5 147,-227.5 147,-208.5 0,-208.5"/>
<text text-anchor="middle" x="73.5" y="-215.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline::fit</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-164.5 0,-183.5 147,-183.5 147,-164.5 0,-164.5"/>
<text text-anchor="middle" x="73.5" y="-171.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline::fit</text>
</a>
</g>
</g>
@@ -31,39 +31,39 @@
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M147.24,-218C204.38,-218 283.7,-218 341.63,-218"/>
<polygon fill="midnightblue" stroke="midnightblue" points="341.82,-221.5 351.82,-218 341.82,-214.5 341.82,-221.5"/>
<path fill="none" stroke="midnightblue" d="M147.16,-183.39C159.13,-184.93 171.41,-186.51 183,-188 235.99,-194.81 295.71,-202.45 341.62,-208.31"/>
<polygon fill="midnightblue" stroke="midnightblue" points="341.43,-211.82 351.8,-209.61 342.32,-204.87 341.43,-211.82"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="521,-249.5 521,-268.5 607,-268.5 607,-249.5 521,-249.5"/>
<text text-anchor="middle" x="564" y="-256.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
<polygon fill="white" stroke="black" points="521,-167.5 521,-186.5 607,-186.5 607,-167.5 521,-167.5"/>
<text text-anchor="middle" x="564" y="-174.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge11" class="edge">
<g id="edge10" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M143.6,-227.52C156.67,-229.15 170.24,-230.72 183,-232 299.67,-243.66 436.98,-252.12 510.4,-256.22"/>
<polygon fill="midnightblue" stroke="midnightblue" points="510.58,-259.73 520.76,-256.79 510.97,-252.75 510.58,-259.73"/>
<path fill="none" stroke="midnightblue" d="M147.11,-174.45C246.58,-175.06 422.87,-176.14 510.51,-176.68"/>
<polygon fill="midnightblue" stroke="midnightblue" points="510.73,-180.18 520.75,-176.74 510.77,-173.18 510.73,-180.18"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#ab11242d9ad5b03a75911e29b04f78fd3" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="183,-121 183,-151 316,-151 316,-121 183,-121"/>
<text text-anchor="start" x="191" y="-139" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="249.5" y="-128" font-family="Helvetica,sans-Serif" font-size="10.00">::predict</text>
<polygon fill="white" stroke="black" points="183,-99 183,-129 316,-129 316,-99 183,-99"/>
<text text-anchor="start" x="191" y="-117" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="249.5" y="-106" font-family="Helvetica,sans-Serif" font-size="10.00">::predict</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node1&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M94.8,-208.43C122.29,-195.48 171.97,-172.07 207.41,-155.36"/>
<polygon fill="midnightblue" stroke="midnightblue" points="208.99,-158.49 216.54,-151.06 206.01,-152.16 208.99,-158.49"/>
<path fill="none" stroke="midnightblue" d="M102.07,-164.49C126.97,-155.91 164.32,-143.03 195.06,-132.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="196.48,-135.64 204.79,-129.07 194.19,-129.02 196.48,-135.64"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
@@ -83,90 +83,75 @@
<!-- Node2&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node2&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M472.12,-233.03C487.72,-237.49 504.62,-242.32 519.56,-246.59"/>
<polygon fill="midnightblue" stroke="midnightblue" points="518.98,-250.06 529.56,-249.45 520.91,-243.33 518.98,-250.06"/>
<path fill="none" stroke="midnightblue" d="M472.12,-202.97C487.72,-198.51 504.62,-193.68 519.56,-189.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="520.91,-192.67 529.56,-186.55 518.98,-185.94 520.91,-192.67"/>
</g>
<!-- Node5&#45;&gt;Node2 -->
<g id="edge8" class="edge">
<g id="edge7" class="edge">
<title>Node5&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M274.99,-151.1C295.22,-163.24 324.91,-180.31 352,-193 356.38,-195.05 360.99,-197.07 365.64,-199.02"/>
<polygon fill="midnightblue" stroke="midnightblue" points="364.6,-202.38 375.19,-202.9 367.24,-195.89 364.6,-202.38"/>
<path fill="none" stroke="midnightblue" d="M274.78,-129.12C303.72,-147.15 352.22,-177.35 384.53,-197.47"/>
<polygon fill="midnightblue" stroke="midnightblue" points="382.85,-200.54 393.19,-202.86 386.55,-194.6 382.85,-200.54"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="352,-77 352,-107 485,-107 485,-77 352,-77"/>
<text text-anchor="start" x="360" y="-95" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="418.5" y="-84" font-family="Helvetica,sans-Serif" font-size="10.00">::activation</text>
<polygon fill="white" stroke="black" points="352,-39 352,-69 485,-69 485,-39 352,-39"/>
<text text-anchor="start" x="360" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="418.5" y="-46" font-family="Helvetica,sans-Serif" font-size="10.00">::activation</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M307.5,-120.98C321.4,-117.32 336.39,-113.37 350.7,-109.6"/>
<polygon fill="midnightblue" stroke="midnightblue" points="351.69,-112.96 360.47,-107.03 349.91,-106.19 351.69,-112.96"/>
<path fill="none" stroke="midnightblue" d="M292.64,-98.86C314.98,-90.83 342.59,-80.91 366.17,-72.44"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.43,-75.71 375.66,-69.03 365.07,-69.12 367.43,-75.71"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="374,-38.5 374,-57.5 463,-57.5 463,-38.5 374,-38.5"/>
<text text-anchor="middle" x="418.5" y="-45.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::back</text>
<g id="a_node7"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/begin.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="372,-0.5 372,-19.5 465,-19.5 465,-0.5 372,-0.5"/>
<text text-anchor="middle" x="418.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::begin</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node7 -->
<g id="edge6" class="edge">
<title>Node5&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M268.87,-120.87C288.42,-105.42 320.76,-81.69 352,-67 356.96,-64.67 362.26,-62.56 367.62,-60.67"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.87,-63.94 377.28,-57.5 366.68,-57.29 368.87,-63.94"/>
<path fill="none" stroke="midnightblue" d="M264.52,-98.89C282.89,-79.95 316.91,-47.7 352,-29 356.22,-26.75 360.74,-24.74 365.35,-22.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="366.65,-26.2 374.9,-19.56 364.31,-19.6 366.65,-26.2"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/begin.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="372,-0.5 372,-19.5 465,-19.5 465,-0.5 372,-0.5"/>
<text text-anchor="middle" x="418.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::begin</text>
<g id="a_node8"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="376,-126.5 376,-145.5 461,-145.5 461,-126.5 376,-126.5"/>
<text text-anchor="middle" x="418.5" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node8 -->
<g id="edge7" class="edge">
<g id="edge8" class="edge">
<title>Node5&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M260.79,-120.81C277.31,-97.58 311.98,-53.37 352,-29 355.43,-26.91 359.1,-25.04 362.88,-23.37"/>
<polygon fill="midnightblue" stroke="midnightblue" points="364.43,-26.53 372.47,-19.62 361.88,-20.01 364.43,-26.53"/>
<path fill="none" stroke="midnightblue" d="M316.02,-122.63C332.51,-124.8 349.99,-127.11 365.7,-129.18"/>
<polygon fill="midnightblue" stroke="midnightblue" points="365.37,-132.66 375.75,-130.5 366.29,-125.72 365.37,-132.66"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="376,-164.5 376,-183.5 461,-183.5 461,-164.5 376,-164.5"/>
<text text-anchor="middle" x="418.5" y="-171.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
<g id="a_node9"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/inner_product.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="370,-88.5 370,-107.5 467,-107.5 467,-88.5 370,-88.5"/>
<text text-anchor="middle" x="418.5" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::inner_product</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node9 -->
<g id="edge9" class="edge">
<title>Node5&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M316.02,-150.91C332.51,-154.66 349.99,-158.64 365.7,-162.21"/>
<polygon fill="midnightblue" stroke="midnightblue" points="365.22,-165.69 375.75,-164.5 366.77,-158.87 365.22,-165.69"/>
</g>
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/inner_product.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="370,-126.5 370,-145.5 467,-145.5 467,-126.5 370,-126.5"/>
<text text-anchor="middle" x="418.5" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::inner_product</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node10 -->
<g id="edge10" class="edge">
<title>Node5&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M316.02,-136C330.51,-136 345.75,-136 359.9,-136"/>
<polygon fill="midnightblue" stroke="midnightblue" points="359.97,-139.5 369.97,-136 359.97,-132.5 359.97,-139.5"/>
<path fill="none" stroke="midnightblue" d="M316.02,-107.72C330.51,-106.33 345.75,-104.87 359.9,-103.52"/>
<polygon fill="midnightblue" stroke="midnightblue" points="360.35,-106.99 369.97,-102.55 359.69,-100.02 360.35,-106.99"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@@ -1,13 +1,12 @@
<map id="machine_learning::adaline::fit" name="machine_learning::adaline::fit">
<area shape="rect" id="node1" title=" " alt="" coords="5,170,201,196"/>
<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="965,336,1037,363"/>
<area shape="rect" id="node3" href="$d6/d30/classmachine__learning_1_1adaline.html#a74e3c6c037b67895014414c5d75465e5" title=" " alt="" coords="249,275,445,302"/>
<area shape="rect" id="node4" href="$d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56" title=" " alt="" coords="719,356,896,397"/>
<area shape="rect" id="node5" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="944,391,1059,418"/>
<area shape="rect" id="node6" href="$d6/d30/classmachine__learning_1_1adaline.html#ab11242d9ad5b03a75911e29b04f78fd3" title=" " alt="" coords="493,238,671,280"/>
<area shape="rect" id="node7" href="$d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325" title=" " alt="" coords="719,238,896,280"/>
<area shape="rect" id="node8" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/back.html#" title=" " alt="" coords="748,304,867,331"/>
<area shape="rect" id="node9" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/begin.html#" title=" " alt="" coords="745,86,869,112"/>
<area shape="rect" id="node10" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/end.html#" title=" " alt="" coords="751,136,864,163"/>
<area shape="rect" id="node11" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/inner_product.html#" title=" " alt="" coords="743,187,872,214"/>
<area shape="rect" id="node1" title=" " alt="" coords="5,140,201,167"/>
<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="965,284,1037,311"/>
<area shape="rect" id="node3" href="$d6/d30/classmachine__learning_1_1adaline.html#a74e3c6c037b67895014414c5d75465e5" title=" " alt="" coords="249,245,445,272"/>
<area shape="rect" id="node4" href="$d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56" title=" " alt="" coords="719,303,896,345"/>
<area shape="rect" id="node5" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="944,339,1059,365"/>
<area shape="rect" id="node6" href="$d6/d30/classmachine__learning_1_1adaline.html#ab11242d9ad5b03a75911e29b04f78fd3" title=" " alt="" coords="493,209,671,250"/>
<area shape="rect" id="node7" href="$d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325" title=" " alt="" coords="719,238,896,279"/>
<area shape="rect" id="node8" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/begin.html#" title=" " alt="" coords="745,85,869,112"/>
<area shape="rect" id="node9" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/end.html#" title=" " alt="" coords="751,136,864,163"/>
<area shape="rect" id="node10" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/inner_product.html#" title=" " alt="" coords="743,187,872,213"/>
</map>

View File

@@ -1 +1 @@
71eabe4a8b1d6c8b964a28f62d59cfc3
bdd9d9d1cc6a29b3171561fd1ca642ed

View File

@@ -1,10 +1,10 @@
<?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::adaline::fit Pages: 1 -->
<!--zoomable 317 -->
<!--zoomable 278 -->
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.edge:hover path { stroke: red; }
@@ -47,20 +47,20 @@ if (edges && edges.length) {
<script type="text/javascript">
var viewWidth = 798;
var viewHeight = 317;
var sectionId = 'dynsection-4';
var viewHeight = 278;
var sectionId = 'dynsection-3';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<title>machine_learning::adaline::fit</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-313.32 794,-313.32 794,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-274.02 794,-274.02 794,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,-166.5 0,-185.5 147,-185.5 147,-166.5 0,-166.5"/>
<text text-anchor="middle" x="73.5" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline::fit</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-149.5 0,-168.5 147,-168.5 147,-149.5 0,-149.5"/>
<text text-anchor="middle" x="73.5" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline::fit</text>
</a>
</g>
</g>
@@ -76,23 +76,23 @@ var sectionId = 'dynsection-4';
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M91.02,-185.74C165.7,-228.36 476.39,-390.56 668,-258 730.78,-214.57 743.09,-113.78 745.46,-70.9"/>
<polygon fill="midnightblue" stroke="midnightblue" points="748.97,-70.79 745.89,-60.65 741.97,-70.49 748.97,-70.79"/>
<path fill="none" stroke="midnightblue" d="M93.13,-168.57C170.89,-207.04 474.42,-342.55 668,-219 720.32,-185.6 738.09,-107.05 743.66,-70.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="747.13,-70.89 745.02,-60.51 740.2,-69.94 747.13,-70.89"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#a74e3c6c037b67895014414c5d75465e5" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="183,-87.5 183,-106.5 330,-106.5 330,-87.5 183,-87.5"/>
<text text-anchor="middle" x="256.5" y="-94.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline::fit</text>
<polygon fill="white" stroke="black" points="183,-70.5 183,-89.5 330,-89.5 330,-70.5 183,-70.5"/>
<text text-anchor="middle" x="256.5" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline::fit</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="M96.33,-166.47C128.27,-152.53 187.88,-126.51 224.39,-110.58"/>
<polygon fill="midnightblue" stroke="midnightblue" points="225.82,-113.77 233.59,-106.56 223.02,-107.36 225.82,-113.77"/>
<path fill="none" stroke="midnightblue" d="M96.33,-149.47C128.27,-135.53 187.88,-109.51 224.39,-93.58"/>
<polygon fill="midnightblue" stroke="midnightblue" points="225.82,-96.77 233.59,-89.56 223.02,-90.36 225.82,-96.77"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
@@ -107,8 +107,8 @@ var sectionId = 'dynsection-4';
<!-- Node3&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M307.01,-87.47C364.09,-76.49 458.57,-58.31 524.87,-45.55"/>
<polygon fill="midnightblue" stroke="midnightblue" points="525.69,-48.96 534.85,-43.63 524.37,-42.08 525.69,-48.96"/>
<path fill="none" stroke="midnightblue" d="M324.04,-70.49C381.5,-62.29 464.5,-50.43 524.55,-41.85"/>
<polygon fill="midnightblue" stroke="midnightblue" points="525.32,-45.28 534.73,-40.4 524.33,-38.35 525.32,-45.28"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
@@ -120,26 +120,26 @@ var sectionId = 'dynsection-4';
</g>
</g>
<!-- Node3&#45;&gt;Node5 -->
<g id="edge13" class="edge">
<g id="edge12" class="edge">
<title>Node3&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M276.71,-87.33C298.09,-76.83 333.88,-60.1 366,-49 439.25,-23.68 458.1,-15.63 535,-6 593.65,1.34 608.91,-4.49 668,-6 676.38,-6.21 685.26,-6.56 693.91,-6.96"/>
<path fill="none" stroke="midnightblue" d="M283.11,-70.35C304.94,-62.35 337.25,-51.02 366,-43 440.06,-22.34 458.56,-14.27 535,-6 593.77,0.36 608.91,-4.49 668,-6 676.38,-6.21 685.26,-6.56 693.91,-6.96"/>
<polygon fill="midnightblue" stroke="midnightblue" points="693.76,-10.45 703.92,-7.45 694.1,-3.46 693.76,-10.45"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#ab11242d9ad5b03a75911e29b04f78fd3" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="366,-104 366,-134 499,-134 499,-104 366,-104"/>
<text text-anchor="start" x="374" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="432.5" y="-111" font-family="Helvetica,sans-Serif" font-size="10.00">::predict</text>
<polygon fill="white" stroke="black" points="366,-87 366,-117 499,-117 499,-87 366,-87"/>
<text text-anchor="start" x="374" y="-105" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="432.5" y="-94" font-family="Helvetica,sans-Serif" font-size="10.00">::predict</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node3&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M330.03,-106.17C338.54,-107.25 347.25,-108.35 355.8,-109.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="355.39,-112.9 365.75,-110.69 356.27,-105.96 355.39,-112.9"/>
<path fill="none" stroke="midnightblue" d="M330.03,-89.17C338.54,-90.25 347.25,-91.35 355.8,-92.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="355.39,-95.9 365.75,-93.69 356.27,-88.96 355.39,-95.9"/>
</g>
<!-- Node4&#45;&gt;Node2 -->
<g id="edge4" class="edge">
@@ -154,86 +154,71 @@ var sectionId = 'dynsection-4';
<polygon fill="midnightblue" stroke="midnightblue" points="694.52,-21.07 703.91,-16.16 693.51,-14.14 694.52,-21.07"/>
</g>
<!-- Node6&#45;&gt;Node4 -->
<g id="edge10" class="edge">
<g id="edge9" class="edge">
<title>Node6&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M454.98,-103.98C475.06,-90.36 506.2,-70.27 535,-56 539.21,-53.91 543.64,-51.89 548.12,-49.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="549.47,-53.19 557.36,-46.12 546.78,-46.72 549.47,-53.19"/>
<path fill="none" stroke="midnightblue" d="M464.3,-86.93C484.27,-77.36 510.96,-64.95 535,-55 539.21,-53.26 543.59,-51.51 548,-49.8"/>
<polygon fill="midnightblue" stroke="midnightblue" points="549.57,-52.95 557.67,-46.12 547.08,-46.41 549.57,-52.95"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="535,-104 535,-134 668,-134 668,-104 535,-104"/>
<text text-anchor="start" x="543" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="601.5" y="-111" font-family="Helvetica,sans-Serif" font-size="10.00">::activation</text>
<polygon fill="white" stroke="black" points="535,-65 535,-95 668,-95 668,-65 535,-65"/>
<text text-anchor="start" x="543" y="-83" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="601.5" y="-72" font-family="Helvetica,sans-Serif" font-size="10.00">::activation</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node7 -->
<g id="edge7" class="edge">
<title>Node6&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M499.02,-119C507.5,-119 516.23,-119 524.85,-119"/>
<polygon fill="midnightblue" stroke="midnightblue" points="524.89,-122.5 534.89,-119 524.89,-115.5 524.89,-122.5"/>
<path fill="none" stroke="midnightblue" d="M499.02,-93.37C507.5,-92.25 516.23,-91.1 524.85,-89.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="525.43,-93.42 534.89,-88.64 524.52,-86.48 525.43,-93.42"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="557,-65.5 557,-84.5 646,-84.5 646,-65.5 557,-65.5"/>
<text text-anchor="middle" x="601.5" y="-72.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::back</text>
<g id="a_node8"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/begin.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="555,-190.5 555,-209.5 648,-209.5 648,-190.5 555,-190.5"/>
<text text-anchor="middle" x="601.5" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::begin</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node8 -->
<g id="edge8" class="edge">
<title>Node6&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M490.5,-103.98C511.36,-98.49 534.67,-92.34 554.45,-87.13"/>
<polygon fill="midnightblue" stroke="midnightblue" points="555.37,-90.51 564.15,-84.58 553.58,-83.74 555.37,-90.51"/>
<path fill="none" stroke="midnightblue" d="M449.05,-117.23C467.92,-134.91 501.39,-163.85 535,-181 539.5,-183.3 544.32,-185.35 549.22,-187.19"/>
<polygon fill="midnightblue" stroke="midnightblue" points="548.11,-190.51 558.71,-190.45 550.39,-183.89 548.11,-190.51"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/begin.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="555,-229.5 555,-248.5 648,-248.5 648,-229.5 555,-229.5"/>
<text text-anchor="middle" x="601.5" y="-236.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::begin</text>
<g id="a_node9"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="559,-152.5 559,-171.5 644,-171.5 644,-152.5 559,-152.5"/>
<text text-anchor="middle" x="601.5" y="-159.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node9 -->
<g id="edge9" class="edge">
<g id="edge10" class="edge">
<title>Node6&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M444.55,-134.04C461.55,-156.12 496.24,-197.15 535,-220 538.67,-222.16 542.61,-224.1 546.66,-225.82"/>
<polygon fill="midnightblue" stroke="midnightblue" points="545.66,-229.18 556.25,-229.46 548.15,-222.64 545.66,-229.18"/>
<path fill="none" stroke="midnightblue" d="M468.4,-117.12C487.82,-125.27 512.55,-135.23 535,-143 541.54,-145.26 548.51,-147.48 555.37,-149.56"/>
<polygon fill="midnightblue" stroke="midnightblue" points="554.7,-153.01 565.28,-152.5 556.68,-146.3 554.7,-153.01"/>
</g>
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="559,-191.5 559,-210.5 644,-210.5 644,-191.5 559,-191.5"/>
<text text-anchor="middle" x="601.5" y="-198.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
<g id="a_node10"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/inner_product.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="553,-114.5 553,-133.5 650,-133.5 650,-114.5 553,-114.5"/>
<text text-anchor="middle" x="601.5" y="-121.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::inner_product</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node10 -->
<g id="edge11" class="edge">
<title>Node6&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M453.95,-134.04C473.82,-148.06 505.25,-168.75 535,-182 540.14,-184.29 545.62,-186.38 551.15,-188.27"/>
<polygon fill="midnightblue" stroke="midnightblue" points="550.49,-191.74 561.08,-191.46 552.63,-185.07 550.49,-191.74"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/inner_product.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="553,-153.5 553,-172.5 650,-172.5 650,-153.5 553,-153.5"/>
<text text-anchor="middle" x="601.5" y="-160.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::inner_product</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node11 -->
<g id="edge12" class="edge">
<title>Node6&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M490.5,-134.02C511.36,-139.51 534.67,-145.66 554.45,-150.87"/>
<polygon fill="midnightblue" stroke="midnightblue" points="553.58,-154.26 564.15,-153.42 555.37,-147.49 553.58,-154.26"/>
<path fill="none" stroke="midnightblue" d="M499.02,-110.63C513.51,-112.54 528.75,-114.55 542.9,-116.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="542.6,-119.9 552.97,-117.74 543.52,-112.96 542.6,-119.9"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,20 +1,20 @@
<?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::adaline::fit Pages: 1 -->
<svg width="798pt" height="317pt"
viewBox="0.00 0.00 798.00 317.32" 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 313.32)">
<svg width="798pt" height="278pt"
viewBox="0.00 0.00 798.00 278.02" 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 274.02)">
<title>machine_learning::adaline::fit</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-313.32 794,-313.32 794,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-274.02 794,-274.02 794,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,-166.5 0,-185.5 147,-185.5 147,-166.5 0,-166.5"/>
<text text-anchor="middle" x="73.5" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline::fit</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-149.5 0,-168.5 147,-168.5 147,-149.5 0,-149.5"/>
<text text-anchor="middle" x="73.5" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline::fit</text>
</a>
</g>
</g>
@@ -30,23 +30,23 @@
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M91.02,-185.74C165.7,-228.36 476.39,-390.56 668,-258 730.78,-214.57 743.09,-113.78 745.46,-70.9"/>
<polygon fill="midnightblue" stroke="midnightblue" points="748.97,-70.79 745.89,-60.65 741.97,-70.49 748.97,-70.79"/>
<path fill="none" stroke="midnightblue" d="M93.13,-168.57C170.89,-207.04 474.42,-342.55 668,-219 720.32,-185.6 738.09,-107.05 743.66,-70.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="747.13,-70.89 745.02,-60.51 740.2,-69.94 747.13,-70.89"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#a74e3c6c037b67895014414c5d75465e5" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="183,-87.5 183,-106.5 330,-106.5 330,-87.5 183,-87.5"/>
<text text-anchor="middle" x="256.5" y="-94.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline::fit</text>
<polygon fill="white" stroke="black" points="183,-70.5 183,-89.5 330,-89.5 330,-70.5 183,-70.5"/>
<text text-anchor="middle" x="256.5" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline::fit</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="M96.33,-166.47C128.27,-152.53 187.88,-126.51 224.39,-110.58"/>
<polygon fill="midnightblue" stroke="midnightblue" points="225.82,-113.77 233.59,-106.56 223.02,-107.36 225.82,-113.77"/>
<path fill="none" stroke="midnightblue" d="M96.33,-149.47C128.27,-135.53 187.88,-109.51 224.39,-93.58"/>
<polygon fill="midnightblue" stroke="midnightblue" points="225.82,-96.77 233.59,-89.56 223.02,-90.36 225.82,-96.77"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
@@ -61,8 +61,8 @@
<!-- Node3&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M307.01,-87.47C364.09,-76.49 458.57,-58.31 524.87,-45.55"/>
<polygon fill="midnightblue" stroke="midnightblue" points="525.69,-48.96 534.85,-43.63 524.37,-42.08 525.69,-48.96"/>
<path fill="none" stroke="midnightblue" d="M324.04,-70.49C381.5,-62.29 464.5,-50.43 524.55,-41.85"/>
<polygon fill="midnightblue" stroke="midnightblue" points="525.32,-45.28 534.73,-40.4 524.33,-38.35 525.32,-45.28"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
@@ -74,26 +74,26 @@
</g>
</g>
<!-- Node3&#45;&gt;Node5 -->
<g id="edge13" class="edge">
<g id="edge12" class="edge">
<title>Node3&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M276.71,-87.33C298.09,-76.83 333.88,-60.1 366,-49 439.25,-23.68 458.1,-15.63 535,-6 593.65,1.34 608.91,-4.49 668,-6 676.38,-6.21 685.26,-6.56 693.91,-6.96"/>
<path fill="none" stroke="midnightblue" d="M283.11,-70.35C304.94,-62.35 337.25,-51.02 366,-43 440.06,-22.34 458.56,-14.27 535,-6 593.77,0.36 608.91,-4.49 668,-6 676.38,-6.21 685.26,-6.56 693.91,-6.96"/>
<polygon fill="midnightblue" stroke="midnightblue" points="693.76,-10.45 703.92,-7.45 694.1,-3.46 693.76,-10.45"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#ab11242d9ad5b03a75911e29b04f78fd3" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="366,-104 366,-134 499,-134 499,-104 366,-104"/>
<text text-anchor="start" x="374" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="432.5" y="-111" font-family="Helvetica,sans-Serif" font-size="10.00">::predict</text>
<polygon fill="white" stroke="black" points="366,-87 366,-117 499,-117 499,-87 366,-87"/>
<text text-anchor="start" x="374" y="-105" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="432.5" y="-94" font-family="Helvetica,sans-Serif" font-size="10.00">::predict</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node3&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M330.03,-106.17C338.54,-107.25 347.25,-108.35 355.8,-109.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="355.39,-112.9 365.75,-110.69 356.27,-105.96 355.39,-112.9"/>
<path fill="none" stroke="midnightblue" d="M330.03,-89.17C338.54,-90.25 347.25,-91.35 355.8,-92.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="355.39,-95.9 365.75,-93.69 356.27,-88.96 355.39,-95.9"/>
</g>
<!-- Node4&#45;&gt;Node2 -->
<g id="edge4" class="edge">
@@ -108,86 +108,71 @@
<polygon fill="midnightblue" stroke="midnightblue" points="694.52,-21.07 703.91,-16.16 693.51,-14.14 694.52,-21.07"/>
</g>
<!-- Node6&#45;&gt;Node4 -->
<g id="edge10" class="edge">
<g id="edge9" class="edge">
<title>Node6&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M454.98,-103.98C475.06,-90.36 506.2,-70.27 535,-56 539.21,-53.91 543.64,-51.89 548.12,-49.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="549.47,-53.19 557.36,-46.12 546.78,-46.72 549.47,-53.19"/>
<path fill="none" stroke="midnightblue" d="M464.3,-86.93C484.27,-77.36 510.96,-64.95 535,-55 539.21,-53.26 543.59,-51.51 548,-49.8"/>
<polygon fill="midnightblue" stroke="midnightblue" points="549.57,-52.95 557.67,-46.12 547.08,-46.41 549.57,-52.95"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="535,-104 535,-134 668,-134 668,-104 535,-104"/>
<text text-anchor="start" x="543" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="601.5" y="-111" font-family="Helvetica,sans-Serif" font-size="10.00">::activation</text>
<polygon fill="white" stroke="black" points="535,-65 535,-95 668,-95 668,-65 535,-65"/>
<text text-anchor="start" x="543" y="-83" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="601.5" y="-72" font-family="Helvetica,sans-Serif" font-size="10.00">::activation</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node7 -->
<g id="edge7" class="edge">
<title>Node6&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M499.02,-119C507.5,-119 516.23,-119 524.85,-119"/>
<polygon fill="midnightblue" stroke="midnightblue" points="524.89,-122.5 534.89,-119 524.89,-115.5 524.89,-122.5"/>
<path fill="none" stroke="midnightblue" d="M499.02,-93.37C507.5,-92.25 516.23,-91.1 524.85,-89.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="525.43,-93.42 534.89,-88.64 524.52,-86.48 525.43,-93.42"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="557,-65.5 557,-84.5 646,-84.5 646,-65.5 557,-65.5"/>
<text text-anchor="middle" x="601.5" y="-72.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::back</text>
<g id="a_node8"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/begin.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="555,-190.5 555,-209.5 648,-209.5 648,-190.5 555,-190.5"/>
<text text-anchor="middle" x="601.5" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::begin</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node8 -->
<g id="edge8" class="edge">
<title>Node6&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M490.5,-103.98C511.36,-98.49 534.67,-92.34 554.45,-87.13"/>
<polygon fill="midnightblue" stroke="midnightblue" points="555.37,-90.51 564.15,-84.58 553.58,-83.74 555.37,-90.51"/>
<path fill="none" stroke="midnightblue" d="M449.05,-117.23C467.92,-134.91 501.39,-163.85 535,-181 539.5,-183.3 544.32,-185.35 549.22,-187.19"/>
<polygon fill="midnightblue" stroke="midnightblue" points="548.11,-190.51 558.71,-190.45 550.39,-183.89 548.11,-190.51"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/begin.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="555,-229.5 555,-248.5 648,-248.5 648,-229.5 555,-229.5"/>
<text text-anchor="middle" x="601.5" y="-236.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::begin</text>
<g id="a_node9"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="559,-152.5 559,-171.5 644,-171.5 644,-152.5 559,-152.5"/>
<text text-anchor="middle" x="601.5" y="-159.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node9 -->
<g id="edge9" class="edge">
<g id="edge10" class="edge">
<title>Node6&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M444.55,-134.04C461.55,-156.12 496.24,-197.15 535,-220 538.67,-222.16 542.61,-224.1 546.66,-225.82"/>
<polygon fill="midnightblue" stroke="midnightblue" points="545.66,-229.18 556.25,-229.46 548.15,-222.64 545.66,-229.18"/>
<path fill="none" stroke="midnightblue" d="M468.4,-117.12C487.82,-125.27 512.55,-135.23 535,-143 541.54,-145.26 548.51,-147.48 555.37,-149.56"/>
<polygon fill="midnightblue" stroke="midnightblue" points="554.7,-153.01 565.28,-152.5 556.68,-146.3 554.7,-153.01"/>
</g>
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="559,-191.5 559,-210.5 644,-210.5 644,-191.5 559,-191.5"/>
<text text-anchor="middle" x="601.5" y="-198.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
<g id="a_node10"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/inner_product.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="553,-114.5 553,-133.5 650,-133.5 650,-114.5 553,-114.5"/>
<text text-anchor="middle" x="601.5" y="-121.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::inner_product</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node10 -->
<g id="edge11" class="edge">
<title>Node6&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M453.95,-134.04C473.82,-148.06 505.25,-168.75 535,-182 540.14,-184.29 545.62,-186.38 551.15,-188.27"/>
<polygon fill="midnightblue" stroke="midnightblue" points="550.49,-191.74 561.08,-191.46 552.63,-185.07 550.49,-191.74"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/inner_product.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="553,-153.5 553,-172.5 650,-172.5 650,-153.5 553,-153.5"/>
<text text-anchor="middle" x="601.5" y="-160.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::inner_product</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node11 -->
<g id="edge12" class="edge">
<title>Node6&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M490.5,-134.02C511.36,-139.51 534.67,-145.66 554.45,-150.87"/>
<polygon fill="midnightblue" stroke="midnightblue" points="553.58,-154.26 564.15,-153.42 555.37,-147.49 553.58,-154.26"/>
<path fill="none" stroke="midnightblue" d="M499.02,-110.63C513.51,-112.54 528.75,-114.55 542.9,-116.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="542.6,-119.9 552.97,-117.74 543.52,-112.96 542.6,-119.9"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -1,11 +1,10 @@
<map id="machine_learning::adaline::predict" name="machine_learning::adaline::predict">
<area shape="rect" id="node1" title=" " alt="" coords="5,144,183,185"/>
<area shape="rect" id="node1" title=" " alt="" coords="5,123,183,164"/>
<area shape="rect" id="node2" href="$d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325" title=" " alt="" coords="231,5,408,47"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/back.html#" title=" " alt="" coords="260,71,379,98"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/begin.html#" title=" " alt="" coords="257,122,381,149"/>
<area shape="rect" id="node5" href="$d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56" title=" " alt="" coords="231,173,408,215"/>
<area shape="rect" id="node8" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/end.html#" title=" " alt="" coords="263,239,376,266"/>
<area shape="rect" id="node9" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/inner_product.html#" title=" " alt="" coords="255,290,384,317"/>
<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="477,155,549,182"/>
<area shape="rect" id="node7" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="456,206,571,233"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/begin.html#" title=" " alt="" coords="257,71,381,98"/>
<area shape="rect" id="node4" href="$d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56" title=" " alt="" coords="231,123,408,164"/>
<area shape="rect" id="node7" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/end.html#" title=" " alt="" coords="263,189,376,215"/>
<area shape="rect" id="node8" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/inner_product.html#" title=" " alt="" coords="255,239,384,266"/>
<area shape="rect" id="node5" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/manip/endl.html#" title=" " alt="" coords="477,105,549,131"/>
<area shape="rect" id="node6" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="456,155,571,182"/>
</map>

View File

@@ -1 +1 @@
96d5977dedfc09d3eb73183ac35dd2d5
22f982f5058dacb9655e4e4277102442

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: machine_learning::adaline::predict Pages: 1 -->
<svg width="432pt" height="242pt"
viewBox="0.00 0.00 432.00 241.50" 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 237.5)">
<svg width="432pt" height="204pt"
viewBox="0.00 0.00 432.00 203.50" 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 199.5)">
<title>machine_learning::adaline::predict</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-237.5 428,-237.5 428,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-199.5 428,-199.5 428,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,-99 0,-129 133,-129 133,-99 0,-99"/>
<text text-anchor="start" x="8" y="-117" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="66.5" y="-106" font-family="Helvetica,sans-Serif" font-size="10.00">::predict</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-77 0,-107 133,-107 133,-77 0,-77"/>
<text text-anchor="start" x="8" y="-95" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="66.5" y="-84" font-family="Helvetica,sans-Serif" font-size="10.00">::predict</text>
</a>
</g>
</g>
@@ -23,121 +23,106 @@
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#a082f758fb55fe19f22b3df66f89b2325" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="169,-203 169,-233 302,-233 302,-203 169,-203"/>
<text text-anchor="start" x="177" y="-221" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="235.5" y="-210" font-family="Helvetica,sans-Serif" font-size="10.00">::activation</text>
<polygon fill="white" stroke="black" points="169,-165 169,-195 302,-195 302,-165 169,-165"/>
<text text-anchor="start" x="177" y="-183" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="235.5" y="-172" font-family="Helvetica,sans-Serif" font-size="10.00">::activation</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="M83.65,-129.06C102.82,-146.32 136.31,-174.59 169,-193 172.64,-195.05 176.48,-197 180.4,-198.84"/>
<polygon fill="midnightblue" stroke="midnightblue" points="179.08,-202.08 189.64,-202.92 181.91,-195.68 179.08,-202.08"/>
<path fill="none" stroke="midnightblue" d="M88.98,-107.02C109.06,-120.64 140.2,-140.73 169,-155 173.21,-157.09 177.64,-159.11 182.12,-161.05"/>
<polygon fill="midnightblue" stroke="midnightblue" points="180.78,-164.28 191.36,-164.88 183.47,-157.81 180.78,-164.28"/>
</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/container/vector/back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="191,-164.5 191,-183.5 280,-183.5 280,-164.5 191,-164.5"/>
<text text-anchor="middle" x="235.5" y="-171.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::back</text>
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/begin.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="189,-126.5 189,-145.5 282,-145.5 282,-126.5 189,-126.5"/>
<text text-anchor="middle" x="235.5" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::begin</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="M102.4,-129.12C121.82,-137.27 146.55,-147.23 169,-155 175.54,-157.26 182.51,-159.48 189.37,-161.56"/>
<polygon fill="midnightblue" stroke="midnightblue" points="188.7,-165.01 199.28,-164.5 190.68,-158.3 188.7,-165.01"/>
<path fill="none" stroke="midnightblue" d="M124.5,-107.02C145.36,-112.51 168.67,-118.66 188.45,-123.87"/>
<polygon fill="midnightblue" stroke="midnightblue" points="187.58,-127.26 198.15,-126.42 189.37,-120.49 187.58,-127.26"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/begin.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="189,-126.5 189,-145.5 282,-145.5 282,-126.5 189,-126.5"/>
<text text-anchor="middle" x="235.5" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::begin</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M133.02,-122.63C148.17,-124.63 164.14,-126.73 178.82,-128.67"/>
<polygon fill="midnightblue" stroke="midnightblue" points="178.38,-132.14 188.75,-129.97 179.3,-125.2 178.38,-132.14"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56" target="_top" xlink:title=" ">
<g id="a_node4"><a xlink:href="../../d6/d30/classmachine__learning_1_1adaline.html#ac8a9c2aaaa63b0f27ea176857e1e7d56" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="169,-77 169,-107 302,-107 302,-77 169,-77"/>
<text text-anchor="start" x="177" y="-95" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::adaline</text>
<text text-anchor="middle" x="235.5" y="-84" font-family="Helvetica,sans-Serif" font-size="10.00">::check_size_match</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node1&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M133.02,-105.37C141.5,-104.25 150.23,-103.1 158.85,-101.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="159.43,-105.42 168.89,-100.64 158.52,-98.48 159.43,-105.42"/>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M133.02,-92C141.5,-92 150.23,-92 158.85,-92"/>
<polygon fill="midnightblue" stroke="midnightblue" points="158.89,-95.5 168.89,-92 158.89,-88.5 158.89,-95.5"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="193,-38.5 193,-57.5 278,-57.5 278,-38.5 193,-38.5"/>
<text text-anchor="middle" x="235.5" y="-45.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node7 -->
<g id="edge6" class="edge">
<title>Node1&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M124.5,-76.98C145.36,-71.49 168.67,-65.34 188.45,-60.13"/>
<polygon fill="midnightblue" stroke="midnightblue" points="189.37,-63.51 198.15,-57.58 187.58,-56.74 189.37,-63.51"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="193,-38.5 193,-57.5 278,-57.5 278,-38.5 193,-38.5"/>
<text text-anchor="middle" x="235.5" y="-45.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
<g id="a_node8"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/inner_product.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="187,-0.5 187,-19.5 284,-19.5 284,-0.5 187,-0.5"/>
<text text-anchor="middle" x="235.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::inner_product</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node8 -->
<g id="edge7" class="edge">
<title>Node1&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M97.19,-98.8C117.16,-88.94 144.26,-76.25 169,-67 175.04,-64.74 181.48,-62.58 187.86,-60.58"/>
<polygon fill="midnightblue" stroke="midnightblue" points="189.24,-63.83 197.8,-57.59 187.22,-57.12 189.24,-63.83"/>
<path fill="none" stroke="midnightblue" d="M87.95,-76.96C107.82,-62.94 139.25,-42.25 169,-29 174.14,-26.71 179.62,-24.62 185.15,-22.73"/>
<polygon fill="midnightblue" stroke="midnightblue" points="186.63,-25.93 195.08,-19.54 184.49,-19.26 186.63,-25.93"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/inner_product.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="187,-0.5 187,-19.5 284,-19.5 284,-0.5 187,-0.5"/>
<text text-anchor="middle" x="235.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::inner_product</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node9 -->
<g id="edge8" class="edge">
<title>Node1&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M81.52,-98.89C99.89,-79.95 133.91,-47.7 169,-29 173.22,-26.75 177.74,-24.74 182.35,-22.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="183.65,-26.2 191.9,-19.56 181.31,-19.6 183.65,-26.2"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/manip/endl.html#" xlink:title=" ">
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/manip/endl.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="354,-101.5 354,-120.5 408,-120.5 408,-101.5 354,-101.5"/>
<text text-anchor="middle" x="381" y="-108.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::endl</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node6</title>
<!-- Node4&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M302.37,-100.72C316.65,-102.61 331.23,-104.54 343.85,-106.21"/>
<polygon fill="midnightblue" stroke="midnightblue" points="343.57,-109.71 353.94,-107.55 344.49,-102.77 343.57,-109.71"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size.html#" xlink:title=" ">
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="338,-63.5 338,-82.5 424,-82.5 424,-63.5 338,-63.5"/>
<text text-anchor="middle" x="381" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node7 -->
<g id="edge6" class="edge">
<title>Node5&#45;&gt;Node7</title>
<!-- Node4&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node4&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M302.37,-83.28C310.96,-82.14 319.66,-80.99 327.98,-79.89"/>
<polygon fill="midnightblue" stroke="midnightblue" points="328.45,-83.36 337.91,-78.57 327.54,-76.42 328.45,-83.36"/>
</g>

Before

Width:  |  Height:  |  Size: 7.3 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: machine_learning::adaline::check_size_match Pages: 1 -->
<svg width="263pt" height="66pt"

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -1,4 +0,0 @@
<map id="statistics::stats_computer1&lt; T &gt;" name="statistics::stats_computer1&lt; T &gt;">
<area shape="rect" id="node1" title=" " alt="" coords="5,95,215,121"/>
<area shape="rect" id="node2" title=" " alt="" coords="91,5,129,32"/>
</map>

View File

@@ -1 +0,0 @@
c8bfb023f7b53f00969b5a91d8cb3e3a

View File

@@ -1,38 +0,0 @@
<?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)
-->
<!-- Title: statistics::stats_computer1&lt; T &gt; Pages: 1 -->
<svg width="165pt" height="95pt"
viewBox="0.00 0.00 165.00 95.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 91)">
<title>statistics::stats_computer1&lt; T &gt;</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-91 161,-91 161,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 157,-19.5 157,-0.5 0,-0.5"/>
<text text-anchor="middle" x="78.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">statistics::stats_computer1&lt; T &gt;</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:title=" ">
<polygon fill="white" stroke="#bfbfbf" points="64,-67.5 64,-86.5 93,-86.5 93,-67.5 64,-67.5"/>
<text text-anchor="middle" x="78.5" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00">T</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1" class="edge">
<title>Node2&#45;&gt;Node1</title>
<path fill="none" stroke="#9a32cd" stroke-dasharray="5,2" d="M78.5,-57.04C78.5,-44.67 78.5,-29.12 78.5,-19.63"/>
<polygon fill="#9a32cd" stroke="#9a32cd" points="75,-57.23 78.5,-67.23 82,-57.23 75,-57.23"/>
<text text-anchor="middle" x="83.5" y="-41" font-family="Helvetica,sans-Serif" font-size="10.00"> K</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.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: numerical_methods/newton_raphson_method.cpp Pages: 1 -->
<svg width="241pt" height="95pt"

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++: data_structures/sparse_table.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('d6/d42/data__structures_2sparse__table_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -95,12 +95,11 @@ $(document).ready(function(){initNavTree('d6/d42/data__structures_2sparse__table
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">sparse_table.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">sparse_table.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Implementation of <a href="https://brilliant.org/wiki/sparse-table/">Sparse Table</a> for <code><a class="el" href="../../da/d52/minimum__edit__distance_8cpp.html#a0138c226bd79ffe6d839c787cfc60347" title="Takes input of the cost of three operations: Insert, Replace and Delete and return the minimum cost a...">min()</a></code> function.
<p>Implementation of <a href="https://brilliant.org/wiki/sparse-table/" target="_blank">Sparse Table</a> for <code><a class="el" href="../../da/d52/minimum__edit__distance_8cpp.html#a0138c226bd79ffe6d839c787cfc60347" title="Takes input of the cost of three operations: Insert, Replace and Delete and return the minimum cost a...">min()</a></code> function.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;array&gt;</code><br />
<code>#include &lt;cassert&gt;</code><br />
@@ -112,21 +111,21 @@ Include dependency graph for sparse_table.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">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d37/structdata__structures_1_1sparse__table_1_1_sparse__table.html">data_structures::sparse_table::Sparse_table</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:d5/d3c/namespacedata__structures"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d3c/namespacedata__structures.html">data_structures</a></td></tr>
<tr class="memitem:d5/d3c/namespacedata__structures"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d3c/namespacedata__structures.html">data_structures</a></td></tr>
<tr class="memdesc:d5/d3c/namespacedata__structures"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data Structures algorithms. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d9/d55/namespacesparse__table"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d55/namespacesparse__table.html">sparse_table</a></td></tr>
<tr class="memdesc:d9/d55/namespacesparse__table"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for Implementation of <a href="https://brilliant.org/wiki/sparse-table/">Sparse Table</a> <br /></td></tr>
<tr class="memitem:d9/d55/namespacesparse__table"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d55/namespacesparse__table.html">sparse_table</a></td></tr>
<tr class="memdesc:d9/d55/namespacesparse__table"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for Implementation of <a href="https://brilliant.org/wiki/sparse-table/" target="_blank">Sparse Table</a> <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:aa8dca7b867074164d5f45b0f3851269d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a> ()</td></tr>
<tr class="memdesc:aa8dca7b867074164d5f45b0f3851269d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Self-test implementations. <a href="../../d6/d42/data__structures_2sparse__table_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">More...</a><br /></td></tr>
@@ -135,25 +134,25 @@ Functions</h2></td></tr>
<tr class="memdesc:a0ddf1224851353fc92bfbff6f499fa97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main function. <a href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">More...</a><br /></td></tr>
<tr class="separator:a0ddf1224851353fc92bfbff6f499fa97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a10f3ffb3f6f7e1b83d556b9c8de89a5d"><td class="memItemLeft" align="right" valign="top">constexpr uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">data_structures::sparse_table::N</a> = 12345</td></tr>
<tr class="memdesc:a10f3ffb3f6f7e1b83d556b9c8de89a5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">A struct to represent sparse table for <code><a class="el" href="../../da/d52/minimum__edit__distance_8cpp.html#a0138c226bd79ffe6d839c787cfc60347" title="Takes input of the cost of three operations: Insert, Replace and Delete and return the minimum cost a...">min()</a></code> as their invariant function, for the given array <code>A</code>. The answer to queries are stored in the array ST. <a href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">More...</a><br /></td></tr>
<tr class="separator:a10f3ffb3f6f7e1b83d556b9c8de89a5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7db62f21983565c64d5d42d2a49888e"><td class="memItemLeft" align="right" valign="top"><a id="af7db62f21983565c64d5d42d2a49888e"></a>
constexpr uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">data_structures::sparse_table::M</a> = 14</td></tr>
<tr class="memitem:af7db62f21983565c64d5d42d2a49888e"><td class="memItemLeft" align="right" valign="top"><a id="af7db62f21983565c64d5d42d2a49888e" name="af7db62f21983565c64d5d42d2a49888e"></a>
constexpr uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>data_structures::sparse_table::M</b> = 14</td></tr>
<tr class="memdesc:af7db62f21983565c64d5d42d2a49888e"><td class="mdescLeft">&#160;</td><td class="mdescRight">ceil(log2(N)). <br /></td></tr>
<tr class="separator:af7db62f21983565c64d5d42d2a49888e"><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://brilliant.org/wiki/sparse-table/">Sparse Table</a> for <code><a class="el" href="../../da/d52/minimum__edit__distance_8cpp.html#a0138c226bd79ffe6d839c787cfc60347" title="Takes input of the cost of three operations: Insert, Replace and Delete and return the minimum cost a...">min()</a></code> function. </p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/manncodes">Mann Patel</a></dd></dl>
<div class="textblock"><p >Implementation of <a href="https://brilliant.org/wiki/sparse-table/" target="_blank">Sparse Table</a> for <code><a class="el" href="../../da/d52/minimum__edit__distance_8cpp.html#a0138c226bd79ffe6d839c787cfc60347" title="Takes input of the cost of three operations: Insert, Replace and Delete and return the minimum cost a...">min()</a></code> function. </p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/manncodes" target="_blank">Mann Patel</a></dd></dl>
<p>Sparse Table is a data structure, that allows answering range queries. It can answer most range queries in O(logn), but its true power is answering range minimum queries (or equivalent range maximum queries). For those queries it can compute the answer in O(1) time. The only drawback of this data structure is, that it can only be used on immutable arrays. This means, that the array cannot be changed between two queries.</p>
<p>If any element in the array changes, the complete data structure has to be recomputed.</p>
<p >If any element in the array changes, the complete data structure has to be recomputed.</p>
<dl class="todo"><dt><b><a class="el" href="../../dd/da0/todo.html#_todo000004">Todo:</a></b></dt><dd>make stress tests.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This sparse table is made for <code>min(a1,a2,...an)</code> duplicate invariant function. This implementation can be changed to other functions like <code><a class="el" href="../../d4/da0/gcd__iterative__euclidean_8cpp.html#ae48807fa2b7000afae599e67f327545e">gcd()</a></code>, <code><a class="el" href="../../d4/d21/least__common__multiple_8cpp.html#aa8d0e241db517813725e721a152e3a25">lcm()</a></code>, and <code>max()</code> by changing a few lines of code. </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a0ddf1224851353fc92bfbff6f499fa97"></a>
<a id="a0ddf1224851353fc92bfbff6f499fa97" name="a0ddf1224851353fc92bfbff6f499fa97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ddf1224851353fc92bfbff6f499fa97">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
@@ -188,10 +187,10 @@ constexpr uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="e
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
<div class="fragment"><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; <a class="code" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;}</div>
<div class="fragment"><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> <a class="code hl_function" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span>}</div>
<div class="ttc" id="adata__structures_2sparse__table_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d6/d42/data__structures_2sparse__table_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition:</b> sparse_table.cpp:128</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -202,7 +201,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">
@@ -227,41 +226,41 @@ Here is the call graph for this function:</div>
<p>Self-test implementations. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<p>&lt; array on which RMQ will be performed.</p>
<p>&lt; size of self test's array</p>
<p>&lt; declaring sparse tree</p>
<p>&lt; copying array to the struct</p>
<p>&lt; passing the array's size to the struct</p>
<p>&lt; precomputing sparse tree</p>
<p>&lt; as 1 is smallest from 1..9</p>
<p>&lt; as 2 is smallest from 2..6</p>
<p>&lt; as 3 is smallest from 3..8</p>
<div class="fragment"><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">/* We take an array as an input on which we need to perform the ranged</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> * minimum queries[RMQ](https://en.wikipedia.org/wiki/Range_minimum_query).</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> */</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/container/array.html">std::array&lt;int64_t, 10&gt;</a> testcase = {</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; 1, 2, 3, 4, 5,</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; 6, 7, 8, 9, 10}; <span class="comment">///&lt; array on which RMQ will be performed.</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordtype">size_t</span> testcase_size =</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">sizeof</span>(testcase) / <span class="keyword">sizeof</span>(testcase[0]); <span class="comment">///&lt; size of self test&#39;s array</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; </div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="../../da/d37/structdata__structures_1_1sparse__table_1_1_sparse__table.html">data_structures::sparse_table::Sparse_table</a></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; st{}; <span class="comment">///&lt; declaring sparse tree</span></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; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/copy.html">std::copy</a>(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(testcase), <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(testcase),</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(st.A)); <span class="comment">///&lt; copying array to the struct</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; st.n = testcase_size; <span class="comment">///&lt; passing the array&#39;s size to the struct</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; st.buildST(); <span class="comment">///&lt; precomputing sparse tree</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// pass queries of the form: [l,r]</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; assert(st.query(1, 9) == 1); <span class="comment">///&lt; as 1 is smallest from 1..9</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; assert(st.query(2, 6) == 2); <span class="comment">///&lt; as 2 is smallest from 2..6</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; assert(st.query(3, 8) == 3); <span class="comment">///&lt; as 3 is smallest from 3..8</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; <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;Self-test implementations 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="l00153"></a><span class="lineno"> 153</span>&#160;}</div>
<p >&lt; array on which RMQ will be performed.</p>
<p >&lt; size of self test's array</p>
<p >&lt; declaring sparse tree</p>
<p >&lt; copying array to the struct</p>
<p >&lt; passing the array's size to the struct</p>
<p >&lt; precomputing sparse tree</p>
<p >&lt; as 1 is smallest from 1..9</p>
<p >&lt; as 2 is smallest from 2..6</p>
<p >&lt; as 3 is smallest from 3..8</p>
<div class="fragment"><div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> {</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="comment">/* We take an array as an input on which we need to perform the ranged</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment"> * minimum queries[RMQ](https://en.wikipedia.org/wiki/Range_minimum_query).</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> */</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;int64_t, 10&gt;</a> testcase = {</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> 1, 2, 3, 4, 5,</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> 6, 7, 8, 9, 10}; <span class="comment">///&lt; array on which RMQ will be performed.</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordtype">size_t</span> testcase_size =</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keyword">sizeof</span>(testcase) / <span class="keyword">sizeof</span>(testcase[0]); <span class="comment">///&lt; size of self test&#39;s array</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> </div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <a class="code hl_struct" href="../../da/d37/structdata__structures_1_1sparse__table_1_1_sparse__table.html">data_structures::sparse_table::Sparse_table</a></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> st{}; <span class="comment">///&lt; declaring sparse tree</span></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> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/copy.html">std::copy</a>(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(testcase), <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(testcase),</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(st.A)); <span class="comment">///&lt; copying array to the struct</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> st.n = testcase_size; <span class="comment">///&lt; passing the array&#39;s size to the struct</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> st.buildST(); <span class="comment">///&lt; precomputing sparse tree</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="comment">// pass queries of the form: [l,r]</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> assert(st.query(1, 9) == 1); <span class="comment">///&lt; as 1 is smallest from 1..9</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> assert(st.query(2, 6) == 2); <span class="comment">///&lt; as 2 is smallest from 2..6</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> assert(st.query(3, 8) == 3); <span class="comment">///&lt; as 3 is smallest from 3..8</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> <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;Self-test implementations 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="l00153" name="l00153"></a><span class="lineno"> 153</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>
@@ -279,7 +278,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a10f3ffb3f6f7e1b83d556b9c8de89a5d"></a>
<a id="a10f3ffb3f6f7e1b83d556b9c8de89a5d" name="a10f3ffb3f6f7e1b83d556b9c8de89a5d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10f3ffb3f6f7e1b83d556b9c8de89a5d">&#9670;&nbsp;</a></span>N</h2>
<div class="memitem">
@@ -300,7 +299,7 @@ Here is the call graph for this function:</div>
</div><div class="memdoc">
<p>A struct to represent sparse table for <code><a class="el" href="../../da/d52/minimum__edit__distance_8cpp.html#a0138c226bd79ffe6d839c787cfc60347" title="Takes input of the cost of three operations: Insert, Replace and Delete and return the minimum cost a...">min()</a></code> as their invariant function, for the given array <code>A</code>. The answer to queries are stored in the array ST. </p>
<p>the maximum size of the array. </p>
<p >the maximum size of the array. </p>
</div>
</div>
@@ -310,7 +309,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_2e746e9d06bf2d8ff842208bcc6ebcfc.html">data_structures</a></li><li class="navelem"><a class="el" href="../../d6/d42/data__structures_2sparse__table_8cpp.html">sparse_table.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 data__structures_2sparse__table_8cpp =
[
[ "Sparse_table", "da/d37/structdata__structures_1_1sparse__table_1_1_sparse__table.html", "da/d37/structdata__structures_1_1sparse__table_1_1_sparse__table" ],
[ "data_structures::sparse_table::Sparse_table", "da/d37/structdata__structures_1_1sparse__table_1_1_sparse__table.html", "da/d37/structdata__structures_1_1sparse__table_1_1_sparse__table" ],
[ "main", "d6/d42/data__structures_2sparse__table_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97", null ],
[ "test", "d6/d42/data__structures_2sparse__table_8cpp.html#aa8dca7b867074164d5f45b0f3851269d", null ],
[ "M", "d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e", 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="211pt" height="142pt"

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.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: test Pages: 1 -->
<svg width="137pt" height="142pt"

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.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++: math/miller_rabin.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('d6/d42/miller__rabin_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -92,8 +92,7 @@ $(document).ready(function(){initNavTree('d6/d42/miller__rabin_8cpp.html','../..
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">miller_rabin.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">miller_rabin.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;cassert&gt;</code><br />
@@ -107,11 +106,11 @@ Include dependency graph for miller_rabin.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:a798398d5bfd375a3c0ce68100842f6f5"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a798398d5bfd375a3c0ce68100842f6f5"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5">reverse_binary</a> (T num)</td></tr>
<tr class="separator:a798398d5bfd375a3c0ce68100842f6f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a091662a787d5ad4866713021f580fddb"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a091662a787d5ad4866713021f580fddb"><td class="memTemplItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb">reverse_binary</a> (T num)</td></tr>
<tr class="separator:a091662a787d5ad4866713021f580fddb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6c2c67ea416d0e80003a88623f98b29"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad6c2c67ea416d0e80003a88623f98b29"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d6/d42/miller__rabin_8cpp.html#ad6c2c67ea416d0e80003a88623f98b29">modular_exponentiation</a> (T base, const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; T &gt; &amp;rev_binary_exponent, T mod)</td></tr>
<tr class="separator:ad6c2c67ea416d0e80003a88623f98b29"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -127,10 +126,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>Copyright 2020 </p><dl class="section author"><dt>Author</dt><dd>tjgurwara99</dd></dl>
<div class="textblock"><p >Copyright 2020 </p><dl class="section author"><dt>Author</dt><dd>tjgurwara99</dd></dl>
<p>A basic implementation of Miller-Rabin primality test. </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">
@@ -145,11 +144,11 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<p>Main function </p>
<div class="fragment"><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="code" href="../../d6/d42/miller__rabin_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9">tests</a>();</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;}</div>
<p >Main function </p>
<div class="fragment"><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_function" href="../../d6/d42/miller__rabin_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9">tests</a>();</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span>}</div>
<div class="ttc" id="amiller__rabin_8cpp_html_a88ec9ad42717780d6caaff9d3d6977f9"><div class="ttname"><a href="../../d6/d42/miller__rabin_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9">tests</a></div><div class="ttdeci">void tests()</div><div class="ttdef"><b>Definition:</b> miller_rabin.cpp:157</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -160,7 +159,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a901288288ef5ebe8e97414cc30797cce"></a>
<a id="a901288288ef5ebe8e97414cc30797cce" name="a901288288ef5ebe8e97414cc30797cce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a901288288ef5ebe8e97414cc30797cce">&#9670;&nbsp;</a></span>miller_rabin_primality_test()</h2>
<div class="memitem">
@@ -187,7 +186,7 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Function that test (probabilistically) whether a given number is a prime based on the Miller-Rabin Primality Test. </p><dl class="params"><dt>Parameters</dt><dd>
<p >Function that test (probabilistically) whether a given number is a prime based on the Miller-Rabin Primality Test. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">num</td><td>number to be tested for primality. </td></tr>
<tr><td class="paramname">repeats</td><td>number of repetitions for the test to increase probability of correct result. </td></tr>
@@ -198,33 +197,33 @@ template&lt;typename T &gt; </div>
<dd>
'true' if num is (probably) prime</dd></dl>
<p>\detail First we check whether the num input is less than 4, if so we can determine whether this is a prime or composite by checking for 2 and 3. Next we check whether this num is odd (as all primes greater than 2 are odd). Next we write our num in the following format \(num = 2^r \cdot d + 1\). After finding r and d for our input num, we use for loop repeat number of times inside which we check the miller conditions using the function miller_test. If miller_test returns false then the number is composite After the loop finishes completely without issuing a false return call, we can conclude that this number is probably prime. </p>
<div class="fragment"><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; <span class="keywordflow">if</span> (num &lt;= 4) {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">// If num == 2 or num == 3 then prime</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (num == 2 || num == 3) {</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<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; }</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">// If num is even then not prime</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (num % 2 == 0) {</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="comment">// Finding d and r in num = 2^r * d + 1</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; T d = num - 1, r = 0;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">while</span> (d % 2 == 0) {</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; d = d / 2;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; r++;</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; </div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">for</span> (T i = 0; i &lt; repeats; ++i) {</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="../../d6/d42/miller__rabin_8cpp.html#a6f9c31c1047aa3191676d64571d4c506">miller_test</a>(d, num)) {</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;}</div>
<div class="fragment"><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> <span class="keywordflow">if</span> (num &lt;= 4) {</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="comment">// If num == 2 or num == 3 then prime</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">if</span> (num == 2 || num == 3) {</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<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> }</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="comment">// If num is even then not prime</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">if</span> (num % 2 == 0) {</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> }</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="comment">// Finding d and r in num = 2^r * d + 1</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> T d = num - 1, r = 0;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordflow">while</span> (d % 2 == 0) {</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> d = d / 2;</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> r++;</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> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keywordflow">for</span> (T i = 0; i &lt; repeats; ++i) {</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="../../d6/d42/miller__rabin_8cpp.html#a6f9c31c1047aa3191676d64571d4c506">miller_test</a>(d, num)) {</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> }</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> }</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span>}</div>
<div class="ttc" id="amiller__rabin_8cpp_html_a6f9c31c1047aa3191676d64571d4c506"><div class="ttname"><a href="../../d6/d42/miller__rabin_8cpp.html#a6f9c31c1047aa3191676d64571d4c506">miller_test</a></div><div class="ttdeci">bool miller_test(T d, T num)</div><div class="ttdef"><b>Definition:</b> miller_rabin.cpp:73</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -235,7 +234,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a6f9c31c1047aa3191676d64571d4c506"></a>
<a id="a6f9c31c1047aa3191676d64571d4c506" name="a6f9c31c1047aa3191676d64571d4c506"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f9c31c1047aa3191676d64571d4c506">&#9670;&nbsp;</a></span>miller_test()</h2>
<div class="memitem">
@@ -262,7 +261,7 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Function for testing the conditions that are satisfied when a number is prime. </p><dl class="params"><dt>Parameters</dt><dd>
<p >Function for testing the conditions that are satisfied when a number is prime. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">d</td><td>number such that \(d \cdot 2^r = n - 1\) where \(n = num\) parameter and \(r \geq 1\) </td></tr>
<tr><td class="paramname">num</td><td>number being tested for primality. </td></tr>
@@ -272,39 +271,39 @@ template&lt;typename T &gt; </div>
<dl class="section return"><dt>Returns</dt><dd>'false' if n is composite </dd>
<dd>
'true' if n is (probably) prime. </dd></dl>
<div class="fragment"><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">// random number seed</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/numeric/random/random_device.html">std::random_device</a> rd_seed;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// random number generator</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/mersenne_twister_engine.html">std::mt19937</a> gen(rd_seed());</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// Uniformly distributed range [2, num - 2] for random numbers</span></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/numeric/random/uniform_int_distribution.html">std::uniform_int_distribution&lt;&gt;</a> distribution(2, num - 2);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// Random number generated in the range [2, num -2].</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; T random = distribution(gen);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">// vector for reverse binary of the power</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/container/vector.html">std::vector&lt;T&gt;</a> <a class="code" href="../../de/dc3/fibonacci__sum_8cpp.html#a7cf5feaf168b88e74544da59ed830311">power</a> = <a class="code" href="../../d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5">reverse_binary</a>(d);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// x = random ^ d % num</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; T x = <a class="code" href="../../d6/d42/miller__rabin_8cpp.html#ad6c2c67ea416d0e80003a88623f98b29">modular_exponentiation</a>(random, power, num);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// miller conditions</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span> (x == 1 || x == num - 1) {</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; </div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">while</span> (d != num - 1) {</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; x = (x * x) % num;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; d *= 2;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (x == 1) {</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</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; <span class="keywordflow">if</span> (x == num - 1) {</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</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="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div>
<div class="fragment"><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">// random number seed</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/numeric/random/random_device.html">std::random_device</a> rd_seed;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// random number generator</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/mersenne_twister_engine.html">std::mt19937</a> gen(rd_seed());</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// Uniformly distributed range [2, num - 2] for random numbers</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution.html">std::uniform_int_distribution&lt;&gt;</a> distribution(2, num - 2);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// Random number generated in the range [2, num -2].</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> T random = distribution(gen);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// vector for reverse binary of the power</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/container/vector.html">std::vector&lt;T&gt;</a> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#a7cf5feaf168b88e74544da59ed830311">power</a> = <a class="code hl_function" href="../../d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb">reverse_binary</a>(d);</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// x = random ^ d % num</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> T x = <a class="code hl_function" href="../../d6/d42/miller__rabin_8cpp.html#ad6c2c67ea416d0e80003a88623f98b29">modular_exponentiation</a>(random, power, num);</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// miller conditions</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordflow">if</span> (x == 1 || x == num - 1) {</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</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> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordflow">while</span> (d != num - 1) {</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> x = (x * x) % num;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> d *= 2;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">if</span> (x == 1) {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">return</span> <span class="keyword">false</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> <span class="keywordflow">if</span> (x == num - 1) {</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordflow">return</span> <span class="keyword">true</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="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span>}</div>
<div class="ttc" id="afibonacci__sum_8cpp_html_a7cf5feaf168b88e74544da59ed830311"><div class="ttname"><a href="../../de/dc3/fibonacci__sum_8cpp.html#a7cf5feaf168b88e74544da59ed830311">math::fibonacci_sum::power</a></div><div class="ttdeci">math::fibonacci_sum::matrix power(math::fibonacci_sum::matrix T, uint64_t ex)</div><div class="ttdef"><b>Definition:</b> fibonacci_sum.cpp:57</div></div>
<div class="ttc" id="amersenne_twister_engine_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/random/mersenne_twister_engine.html">std::mt19937</a></div></div>
<div class="ttc" id="amiller__rabin_8cpp_html_a798398d5bfd375a3c0ce68100842f6f5"><div class="ttname"><a href="../../d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5">reverse_binary</a></div><div class="ttdeci">std::vector&lt; T &gt; reverse_binary(T num)</div><div class="ttdef"><b>Definition:</b> miller_rabin.cpp:19</div></div>
<div class="ttc" id="amiller__rabin_8cpp_html_a091662a787d5ad4866713021f580fddb"><div class="ttname"><a href="../../d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb">reverse_binary</a></div><div class="ttdeci">std::vector&lt; T &gt; reverse_binary(T num)</div><div class="ttdef"><b>Definition:</b> miller_rabin.cpp:19</div></div>
<div class="ttc" id="amiller__rabin_8cpp_html_ad6c2c67ea416d0e80003a88623f98b29"><div class="ttname"><a href="../../d6/d42/miller__rabin_8cpp.html#ad6c2c67ea416d0e80003a88623f98b29">modular_exponentiation</a></div><div class="ttdeci">T modular_exponentiation(T base, const std::vector&lt; T &gt; &amp;rev_binary_exponent, T mod)</div><div class="ttdef"><b>Definition:</b> miller_rabin.cpp:43</div></div>
<div class="ttc" id="arandom_device_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/random/random_device.html">std::random_device</a></div></div>
<div class="ttc" id="auniform_int_distribution_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution.html">std::uniform_int_distribution</a></div></div>
@@ -318,7 +317,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="ad6c2c67ea416d0e80003a88623f98b29"></a>
<a id="ad6c2c67ea416d0e80003a88623f98b29" name="ad6c2c67ea416d0e80003a88623f98b29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6c2c67ea416d0e80003a88623f98b29">&#9670;&nbsp;</a></span>modular_exponentiation()</h2>
<div class="memitem">
@@ -351,7 +350,7 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Function for modular exponentiation. This function is an efficient modular exponentiation function. It can be used with any big integer library such as Boost multiprecision to give result any modular exponentiation problem relatively quickly. </p><dl class="params"><dt>Parameters</dt><dd>
<p >Function for modular exponentiation. This function is an efficient modular exponentiation function. It can be used with any big integer library such as Boost multiprecision to give result any modular exponentiation problem relatively quickly. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>number being raised to a power as integer </td></tr>
<tr><td class="paramname">rev_binary_exponent</td><td>reverse binary of the power the base is being raised to </td></tr>
@@ -360,25 +359,25 @@ template&lt;typename T &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>r the modular exponentiation of \(a^{n} \equiv r \mod{m}\) where \(n\) is the base 10 representation of rev_binary_exponent and \(m = mod \) parameter. </dd></dl>
<div class="fragment"><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; <span class="keywordflow">if</span> (mod == 1)</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; T b = 1;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (rev_binary_exponent.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() == 0)</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> b;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; T A = base;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (rev_binary_exponent[0] == 1)</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; b = base;</div>
<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="keywordflow">for</span> (<span class="keyword">typename</span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;T&gt;::const_iterator</a> it =</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; rev_binary_exponent.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">cbegin</a>() + 1;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; it != rev_binary_exponent.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/end.html">cend</a>(); ++it) {</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; A = A * A % mod;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span> (*it == 1)</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; b = A * b % mod;</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="keywordflow">return</span> b;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div>
<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="keywordflow">if</span> (mod == 1)</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> T b = 1;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordflow">if</span> (rev_binary_exponent.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() == 0)</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordflow">return</span> b;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> T A = base;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordflow">if</span> (rev_binary_exponent[0] == 1)</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> b = base;</div>
<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="keywordflow">for</span> (<span class="keyword">typename</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;T&gt;::const_iterator</a> it =</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> rev_binary_exponent.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">cbegin</a>() + 1;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> it != rev_binary_exponent.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/end.html">cend</a>(); ++it) {</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> A = A * A % mod;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">if</span> (*it == 1)</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> b = A * b % mod;</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="keywordflow">return</span> b;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span>}</div>
<div class="ttc" id="abegin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/begin.html">std::vector::cbegin</a></div><div class="ttdeci">T cbegin(T... args)</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::cend</a></div><div class="ttdeci">T cend(T... args)</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>
@@ -391,8 +390,8 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="a798398d5bfd375a3c0ce68100842f6f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a798398d5bfd375a3c0ce68100842f6f5">&#9670;&nbsp;</a></span>reverse_binary()</h2>
<a id="a091662a787d5ad4866713021f580fddb" name="a091662a787d5ad4866713021f580fddb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a091662a787d5ad4866713021f580fddb">&#9670;&nbsp;</a></span>reverse_binary()</h2>
<div class="memitem">
<div class="memproto">
@@ -400,7 +399,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/container/vector.html">std::vector</a>&lt;T&gt; reverse_binary </td>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; T &gt; reverse_binary </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>num</em></td><td>)</td>
@@ -408,27 +407,27 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Function to give a binary representation of a number in reverse order </p><dl class="params"><dt>Parameters</dt><dd>
<p >Function to give a binary representation of a number in reverse order </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">num</td><td>integer number that we want to convert </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>result vector of the number input in reverse binary </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="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;T&gt;</a> <a class="code" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; T temp = num;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">while</span> (temp &gt; 0) {</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>.push_back(temp % 2);</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; temp = temp / 2;</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="keywordflow">return</span> <a class="code" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</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_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;T&gt;</a> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> T temp = num;</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <span class="keywordflow">while</span> (temp &gt; 0) {</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>.push_back(temp % 2);</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> temp = temp / 2;</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="keywordflow">return</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span>}</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>
</div>
<a id="a88ec9ad42717780d6caaff9d3d6977f9"></a>
<a id="a88ec9ad42717780d6caaff9d3d6977f9" name="a88ec9ad42717780d6caaff9d3d6977f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88ec9ad42717780d6caaff9d3d6977f9">&#9670;&nbsp;</a></span>tests()</h2>
<div class="memitem">
@@ -442,29 +441,29 @@ template&lt;typename T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
<p>Functions for testing the <a class="el" href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test()</a> function with some assert statements. </p>
<div class="fragment"><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">// First test on 2</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; assert(((<span class="keywordtype">void</span>)<span class="stringliteral">&quot;2 is prime but function says otherwise.\n&quot;</span>,</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test</a>(2, 1) == <span class="keyword">true</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; <span class="stringliteral">&quot;First test passes.&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="l00162"></a><span class="lineno"> 162</span>&#160; <span class="comment">// Second test on 5</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; assert(((<span class="keywordtype">void</span>)<span class="stringliteral">&quot;5 should be prime but the function says otherwise.\n&quot;</span>,</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test</a>(5, 3) == <span class="keyword">true</span>));</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/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Second test passes.&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="l00166"></a><span class="lineno"> 166</span>&#160; <span class="comment">// Third test on 23</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; assert(((<span class="keywordtype">void</span>)<span class="stringliteral">&quot;23 should be prime but the function says otherwise.\n&quot;</span>,</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test</a>(23, 3) == <span class="keyword">true</span>));</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</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;Third test passes.&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="l00170"></a><span class="lineno"> 170</span>&#160; <span class="comment">// Fourth test on 16</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; assert(((<span class="keywordtype">void</span>)<span class="stringliteral">&quot;16 is not a prime but the function says otherwise.\n&quot;</span>,</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test</a>(16, 3) == <span class="keyword">false</span>));</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</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;Fourth test passes.&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="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">// Fifth test on 27</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; assert(((<span class="keywordtype">void</span>)<span class="stringliteral">&quot;27 is not a prime but the function says otherwise.\n&quot;</span>,</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test</a>(27, 3) == <span class="keyword">false</span>));</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</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;Fifth test passes.&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="l00178"></a><span class="lineno"> 178</span>&#160;}</div>
<p >Functions for testing the <a class="el" href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test()</a> function with some assert statements. </p>
<div class="fragment"><div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> {</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// First test on 2</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> assert(((<span class="keywordtype">void</span>)<span class="stringliteral">&quot;2 is prime but function says otherwise.\n&quot;</span>,</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <a class="code hl_function" href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test</a>(2, 1) == <span class="keyword">true</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; <span class="stringliteral">&quot;First test passes.&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="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="comment">// Second test on 5</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> assert(((<span class="keywordtype">void</span>)<span class="stringliteral">&quot;5 should be prime but the function says otherwise.\n&quot;</span>,</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <a class="code hl_function" href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test</a>(5, 3) == <span class="keyword">true</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/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Second test passes.&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="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="comment">// Third test on 23</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> assert(((<span class="keywordtype">void</span>)<span class="stringliteral">&quot;23 should be prime but the function says otherwise.\n&quot;</span>,</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <a class="code hl_function" href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test</a>(23, 3) == <span class="keyword">true</span>));</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</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;Third test passes.&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="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="comment">// Fourth test on 16</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> assert(((<span class="keywordtype">void</span>)<span class="stringliteral">&quot;16 is not a prime but the function says otherwise.\n&quot;</span>,</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <a class="code hl_function" href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test</a>(16, 3) == <span class="keyword">false</span>));</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</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;Fourth test passes.&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="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="comment">// Fifth test on 27</span></div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> assert(((<span class="keywordtype">void</span>)<span class="stringliteral">&quot;27 is not a prime but the function says otherwise.\n&quot;</span>,</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <a class="code hl_function" href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test</a>(27, 3) == <span class="keyword">false</span>));</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</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;Fifth test passes.&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="l00178" name="l00178"></a><span class="lineno"> 178</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="amiller__rabin_8cpp_html_a901288288ef5ebe8e97414cc30797cce"><div class="ttname"><a href="../../d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce">miller_rabin_primality_test</a></div><div class="ttdeci">bool miller_rabin_primality_test(T num, T repeats)</div><div class="ttdef"><b>Definition:</b> miller_rabin.cpp:125</div></div>
@@ -483,7 +482,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="../../d6/d42/miller__rabin_8cpp.html">miller_rabin.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

@@ -4,6 +4,6 @@ var miller__rabin_8cpp =
[ "miller_rabin_primality_test", "d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce", null ],
[ "miller_test", "d6/d42/miller__rabin_8cpp.html#a6f9c31c1047aa3191676d64571d4c506", null ],
[ "modular_exponentiation", "d6/d42/miller__rabin_8cpp.html#ad6c2c67ea416d0e80003a88623f98b29", null ],
[ "reverse_binary", "d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5", null ],
[ "reverse_binary", "d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb", null ],
[ "tests", "d6/d42/miller__rabin_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9", null ]
];

View File

@@ -1,7 +1,7 @@
<map id="miller_test" name="miller_test">
<area shape="rect" id="node1" title=" " alt="" coords="5,81,88,108"/>
<area shape="rect" id="node2" href="$d6/d42/miller__rabin_8cpp.html#ad6c2c67ea416d0e80003a88623f98b29" title=" " alt="" coords="136,56,300,83"/>
<area shape="rect" id="node6" href="$d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5" title=" " alt="" coords="163,107,273,133"/>
<area shape="rect" id="node6" href="$d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb" title=" " alt="" coords="163,107,273,133"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/begin.html#" title=" " alt="" coords="348,5,479,32"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/end.html#" title=" " alt="" coords="353,56,473,83"/>
<area shape="rect" id="node5" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="356,107,471,133"/>

View File

@@ -1 +1 @@
c5fee0ee70a773a30c3c41c7cba5b57f
3696233b119566a689220026c8472b4c

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: miller_test Pages: 1 -->
<svg width="363pt" height="104pt"
@@ -36,7 +36,7 @@
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5" target="_top" xlink:title=" ">
<g id="a_node6"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="118,-0.5 118,-19.5 201,-19.5 201,-0.5 118,-0.5"/>
<text text-anchor="middle" x="159.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">reverse_binary</text>
</a>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -4,7 +4,7 @@
<area shape="rect" id="node3" href="$d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce" title=" " alt="" coords="104,81,281,108"/>
<area shape="rect" id="node4" href="$d6/d42/miller__rabin_8cpp.html#a6f9c31c1047aa3191676d64571d4c506" title=" " alt="" coords="329,81,412,108"/>
<area shape="rect" id="node5" href="$d6/d42/miller__rabin_8cpp.html#ad6c2c67ea416d0e80003a88623f98b29" title=" " alt="" coords="460,56,624,83"/>
<area shape="rect" id="node9" href="$d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5" title=" " alt="" coords="487,107,597,133"/>
<area shape="rect" id="node9" href="$d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb" title=" " alt="" coords="487,107,597,133"/>
<area shape="rect" id="node6" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/begin.html#" title=" " alt="" coords="672,5,803,32"/>
<area shape="rect" id="node7" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/end.html#" title=" " alt="" coords="677,56,797,83"/>
<area shape="rect" id="node8" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="680,107,795,133"/>

View File

@@ -1 +1 @@
65a72c6f2c9201faf41eaeab67574744
9fcc72b258854c6f347a48296f05abcd

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: tests Pages: 1 -->
<!--zoomable 104 -->
@@ -127,7 +127,7 @@ var sectionId = 'dynsection-5';
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5" target="_top" xlink:title=" ">
<g id="a_node9"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="361,-0.5 361,-19.5 444,-19.5 444,-0.5 361,-0.5"/>
<text text-anchor="middle" x="402.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">reverse_binary</text>
</a>

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: tests Pages: 1 -->
<svg width="606pt" height="104pt"
@@ -81,7 +81,7 @@
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5" target="_top" xlink:title=" ">
<g id="a_node9"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="361,-0.5 361,-19.5 444,-19.5 444,-0.5 361,-0.5"/>
<text text-anchor="middle" x="402.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">reverse_binary</text>
</a>

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -2,7 +2,7 @@
<area shape="rect" id="node1" title=" " alt="" coords="5,81,183,108"/>
<area shape="rect" id="node2" href="$d6/d42/miller__rabin_8cpp.html#a6f9c31c1047aa3191676d64571d4c506" title=" " alt="" coords="231,81,313,108"/>
<area shape="rect" id="node3" href="$d6/d42/miller__rabin_8cpp.html#ad6c2c67ea416d0e80003a88623f98b29" title=" " alt="" coords="361,56,525,83"/>
<area shape="rect" id="node7" href="$d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5" title=" " alt="" coords="388,107,499,133"/>
<area shape="rect" id="node7" href="$d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb" title=" " alt="" coords="388,107,499,133"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/begin.html#" title=" " alt="" coords="573,5,704,32"/>
<area shape="rect" id="node5" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/end.html#" title=" " alt="" coords="579,56,699,83"/>
<area shape="rect" id="node6" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="581,107,696,133"/>

View File

@@ -1 +1 @@
9bf3495f5c03c79c183699c451ed4705
69ad08c11a13bf0b99ef6ce79a383d92

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: miller_rabin_primality_test Pages: 1 -->
<!--zoomable 104 -->
@@ -97,7 +97,7 @@ var sectionId = 'dynsection-2';
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5" target="_top" xlink:title=" ">
<g id="a_node7"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="287,-0.5 287,-19.5 370,-19.5 370,-0.5 287,-0.5"/>
<text text-anchor="middle" x="328.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">reverse_binary</text>
</a>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 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: miller_rabin_primality_test Pages: 1 -->
<svg width="532pt" height="104pt"
@@ -51,7 +51,7 @@
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5" target="_top" xlink:title=" ">
<g id="a_node7"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="287,-0.5 287,-19.5 370,-19.5 370,-0.5 287,-0.5"/>
<text text-anchor="middle" x="328.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">reverse_binary</text>
</a>

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.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: modular_exponentiation Pages: 1 -->
<svg width="265pt" height="104pt"

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -5,7 +5,7 @@
<area shape="rect" id="node4" href="$d6/d42/miller__rabin_8cpp.html#a901288288ef5ebe8e97414cc30797cce" title=" " alt="" coords="203,81,380,108"/>
<area shape="rect" id="node5" href="$d6/d42/miller__rabin_8cpp.html#a6f9c31c1047aa3191676d64571d4c506" title=" " alt="" coords="428,81,511,108"/>
<area shape="rect" id="node6" href="$d6/d42/miller__rabin_8cpp.html#ad6c2c67ea416d0e80003a88623f98b29" title=" " alt="" coords="559,56,723,83"/>
<area shape="rect" id="node10" href="$d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5" title=" " alt="" coords="585,107,696,133"/>
<area shape="rect" id="node10" href="$d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb" title=" " alt="" coords="585,107,696,133"/>
<area shape="rect" id="node7" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/begin.html#" title=" " alt="" coords="771,5,901,32"/>
<area shape="rect" id="node8" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/end.html#" title=" " alt="" coords="776,56,896,83"/>
<area shape="rect" id="node9" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="779,107,893,133"/>

View File

@@ -1 +1 @@
b1a74e50db091d8dc6b45bd010c90879
e773ef910863ab94031dc2c87f7b8873

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 104 -->
@@ -142,7 +142,7 @@ var sectionId = 'dynsection-1';
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5" target="_top" xlink:title=" ">
<g id="a_node10"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="435,-0.5 435,-19.5 518,-19.5 518,-0.5 435,-0.5"/>
<text text-anchor="middle" x="476.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">reverse_binary</text>
</a>

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: main Pages: 1 -->
<svg width="680pt" height="104pt"
@@ -96,7 +96,7 @@
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a798398d5bfd375a3c0ce68100842f6f5" target="_top" xlink:title=" ">
<g id="a_node10"><a xlink:href="../../d6/d42/miller__rabin_8cpp.html#a091662a787d5ad4866713021f580fddb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="435,-0.5 435,-19.5 518,-19.5 518,-0.5 435,-0.5"/>
<text text-anchor="middle" x="476.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">reverse_binary</text>
</a>

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

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