Documentation for 8b1eab204b

This commit is contained in:
realstealthninja
2024-11-04 12:43:05 +00:00
parent 4fb6e622e9
commit a7bccf7d01
6732 changed files with 153919 additions and 365711 deletions

View File

@@ -1,5 +1,5 @@
<map id="machine_learning::adaline" name="machine_learning::adaline">
<area shape="rect" id="Node000001" title=" " alt="" coords="5,94,177,120"/>
<area shape="rect" id="Node000002" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector.html" title=" " alt="" coords="18,5,164,31"/>
<area shape="rect" id="Node000002" title=" " alt="" coords="18,5,164,31"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="94,47,94,94,88,94,88,47"/>
</map>

View File

@@ -1 +1 @@
bf28e6affa6d7d482f9836ce87321f78
51c5feecf8fa742ba289f67074bdf6f5

View File

@@ -31,7 +31,7 @@
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector.html" xlink:title=" ">
<g id="a_Node000002"><a xlink:title=" ">
<polygon fill="white" stroke="#666666" points="118.75,-85.75 9.75,-85.75 9.75,-66.5 118.75,-66.5 118.75,-85.75"/>
<text text-anchor="middle" x="64.25" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector&lt; double &gt;</text>
</a>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -20,7 +20,7 @@
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector.html" xlink:title=" ">
<g id="a_Node000002"><a xlink:title=" ">
<polygon fill="white" stroke="#666666" points="118.75,-85.75 9.75,-85.75 9.75,-66.5 118.75,-66.5 118.75,-85.75"/>
<text text-anchor="middle" x="64.25" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector&lt; double &gt;</text>
</a>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -1,3 +1,4 @@
<!-- HTML header for doxygen 1.12.0-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
@@ -5,10 +6,15 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: divide_and_conquer/karatsuba_algorithm_for_fast_multiplication.cpp File Reference</title>
<title>TheAlgorithms/C++: divide_and_conquer/karatsuba_algorithm_for_fast_multiplication.cpp File Reference</title>
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@xpack-3rd-party/doxygen-awesome-css@2.2.0-1/doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">
DoxygenAwesomeDarkModeToggle.init()
</script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
@@ -18,14 +24,24 @@
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<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"],
});
<script type="text/javascript">
window.MathJax = {
options: {
ignoreHtmlClass: 'tex2jax_ignore',
processHtmlClass: 'tex2jax_process'
},
loader: {
load: ['[tex]/ams']
},
tex: {
macros: {},
packages: ['base','configmacros','ams']
}
};
</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>
<script type="text/javascript" id="MathJax-script" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../doxygen-awesome.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
@@ -33,10 +49,11 @@ MathJax.Hub.Config({
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../project_logo.png"/></td>
<td id="projectalign">
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
<div id="projectname">TheAlgorithms/C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
<div id="projectbrief">All the algorithms implemented in C++</div>
</td>
</tr>
</tbody>
@@ -122,11 +139,13 @@ Include dependency graph for karatsuba_algorithm_for_fast_multiplication.cpp:</d
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d0/d2c/karatsuba__algorithm__for__fast__multiplication_8cpp__incl.svg" width="336" height="140"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div><table class="memberdecls">
</div>
<p><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/dba/namespacedivide__and__conquer.html">divide_and_conquer</a></td></tr>
<tr class="memdesc:dd/dba/namespacedivide__and__conquer"><td class="mdescLeft">&#160;</td><td class="mdescRight">for <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a> <br /></td></tr>
<tr class="memdesc:dd/dba/namespacedivide__and__conquer"><td class="mdescLeft">&#160;</td><td class="mdescRight">for std::vector <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a></td></tr>
<tr class="memdesc:de/d41/namespacekaratsuba__algorithm"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for the <a href="https://en.wikipedia.org/wiki/Karatsuba_algorithm" target="_blank">Karatsuba algorithm for fast multiplication</a> implementation. <br /></td></tr>
@@ -134,13 +153,13 @@ Namespaces</h2></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ad76f5cac3ef8dc034f6abb99b64c2b20" id="r_ad76f5cac3ef8dc034f6abb99b64c2b20"><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="#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> first, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> second)</td></tr>
<tr class="memitem:ad76f5cac3ef8dc034f6abb99b64c2b20" id="r_ad76f5cac3ef8dc034f6abb99b64c2b20"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a> (std::string first, std::string second)</td></tr>
<tr class="memdesc:ad76f5cac3ef8dc034f6abb99b64c2b20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Binary addition. <br /></td></tr>
<tr class="separator:ad76f5cac3ef8dc034f6abb99b64c2b20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad9e3edfe156b59fc06a5585403fe0d6" id="r_aad9e3edfe156b59fc06a5585403fe0d6"><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="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &amp;str, int64_t x1, int64_t x2, int64_t n)</td></tr>
<tr class="memitem:aad9e3edfe156b59fc06a5585403fe0d6" id="r_aad9e3edfe156b59fc06a5585403fe0d6"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a> (const std::string &amp;str, int64_t x1, int64_t x2, int64_t n)</td></tr>
<tr class="memdesc:aad9e3edfe156b59fc06a5585403fe0d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wrapper function for substr that considers leading zeros. <br /></td></tr>
<tr class="separator:aad9e3edfe156b59fc06a5585403fe0d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a890d2f26855ada3b9f1d43aec70a86" id="r_a7a890d2f26855ada3b9f1d43aec70a86"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> str1, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> str2)</td></tr>
<tr class="memitem:a7a890d2f26855ada3b9f1d43aec70a86" id="r_a7a890d2f26855ada3b9f1d43aec70a86"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a> (std::string str1, std::string str2)</td></tr>
<tr class="memdesc:a7a890d2f26855ada3b9f1d43aec70a86"><td class="mdescLeft">&#160;</td><td class="mdescRight">The main function implements Karatsuba's algorithm for fast multiplication. <br /></td></tr>
<tr class="separator:a7a890d2f26855ada3b9f1d43aec70a86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8dca7b867074164d5f45b0f3851269d" id="r_aa8dca7b867074164d5f45b0f3851269d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa8dca7b867074164d5f45b0f3851269d">test</a> ()</td></tr>
@@ -155,6 +174,8 @@ Functions</h2></td></tr>
<p>Given two strings in binary notation we want to multiply them and return the value. Simple approach is to multiply bits one by one which will give the time complexity of around O(n^2). To make it more efficient we will be using Karatsuba algorithm to find the product which will solve the problem O(nlogn) of time. </p><dl class="section author"><dt>Author</dt><dd><a href="https://github.com/Swastyy" target="_blank">Swastika Gupta</a> </dd>
<dd>
<a href="https://github.com/poypoyan" target="_blank">Ameer Carlo Lubang</a> </dd></dl>
<p class="definition">Definition in file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="ad76f5cac3ef8dc034f6abb99b64c2b20" name="ad76f5cac3ef8dc034f6abb99b64c2b20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad76f5cac3ef8dc034f6abb99b64c2b20">&#9670;&#160;</a></span>add_strings()</h2>
@@ -163,14 +184,14 @@ Functions</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> divide_and_conquer::karatsuba_algorithm::add_strings </td>
<td class="memname">std::string divide_and_conquer::karatsuba_algorithm::add_strings </td>
<td>(</td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></td> <td class="paramname"><span class="paramname"><em>first</em></span>, </td>
<td class="paramtype">std::string</td> <td class="paramname"><span class="paramname"><em>first</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></td> <td class="paramname"><span class="paramname"><em>second</em></span>&#160;)</td>
<td class="paramtype">std::string</td> <td class="paramname"><span class="paramname"><em>second</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
@@ -184,13 +205,15 @@ Functions</h2></td></tr>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the sum binary string </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00037">37</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 37</span> {</div>
<div class="line"><span class="lineno"> 38</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>; <span class="comment">// to store the resulting sum bits</span></div>
<div class="line"><span class="lineno"> 38</span> std::string <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>; <span class="comment">// to store the resulting sum bits</span></div>
<div class="line"><span class="lineno"> 39</span> </div>
<div class="line"><span class="lineno"> 40</span> <span class="comment">// make the string lengths equal</span></div>
<div class="line"><span class="lineno"> 41</span> int64_t len1 = first.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/size.html">size</a>();</div>
<div class="line"><span class="lineno"> 42</span> int64_t len2 = second.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/size.html">size</a>();</div>
<div class="line"><span class="lineno"> 43</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> zero = <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><span class="lineno"> 41</span> int64_t len1 = first.size();</div>
<div class="line"><span class="lineno"> 42</span> int64_t len2 = second.size();</div>
<div class="line"><span class="lineno"> 43</span> std::string zero = <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">if</span> (len1 &lt; len2) {</div>
<div class="line"><span class="lineno"> 45</span> <span class="keywordflow">for</span> (int64_t i = 0; i &lt; len2 - len1; i++) {</div>
<div class="line"><span class="lineno"> 46</span> zero += first;</div>
@@ -205,11 +228,11 @@ Functions</h2></td></tr>
<div class="line"><span class="lineno"> 55</span> }</div>
<div class="line"><span class="lineno"> 56</span> }</div>
<div class="line"><span class="lineno"> 57</span> </div>
<div class="line"><span class="lineno"> 58</span> int64_t length = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a>(len1, len2);</div>
<div class="line"><span class="lineno"> 58</span> int64_t length = std::max(len1, len2);</div>
<div class="line"><span class="lineno"> 59</span> int64_t carry = 0;</div>
<div class="line"><span class="lineno"> 60</span> <span class="keywordflow">for</span> (int64_t i = length - 1; i &gt;= 0; i--) {</div>
<div class="line"><span class="lineno"> 61</span> int64_t firstBit = first.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/at.html">at</a>(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><span class="lineno"> 62</span> int64_t secondBit = second.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/at.html">at</a>(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><span class="lineno"> 61</span> int64_t firstBit = first.at(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><span class="lineno"> 62</span> int64_t secondBit = second.at(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><span class="lineno"> 63</span> </div>
<div class="line"><span class="lineno"> 64</span> int64_t <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">sum</a> = (char(firstBit ^ secondBit ^ carry)) + <span class="charliteral">&#39;0&#39;</span>; <span class="comment">// sum of 3 bits</span></div>
<div class="line"><span class="lineno"> 65</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>.insert(<a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>.begin(), sum);</div>
@@ -223,18 +246,9 @@ Functions</h2></td></tr>
<div class="line"><span class="lineno"> 73</span> }</div>
<div class="line"><span class="lineno"> 74</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"><span class="lineno"> 75</span>}</div>
<div class="ttc" id="aat_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string/at.html">std::string::at</a></div><div class="ttdeci">T at(T... args)</div></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="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:77</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 class="ttc" id="anamespacemachine__learning_html_a6f1c98c016ad34ff3d9f39372161bd35"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">machine_learning::sum</a></div><div class="ttdeci">T sum(const std::vector&lt; std::valarray&lt; T &gt; &gt; &amp;A)</div><div class="ttdef"><b>Definition</b> vector_ops.hpp:232</div></div>
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string/size.html">std::string::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="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_ad76f5cac3ef8dc034f6abb99b64c2b20_cgraph.svg" width="316" height="135"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div class="ttc" id="afibonacci__sum_8cpp_html_aadb40ac4c74a7efc0680b83eeee138aa"><div class="ttname"><a href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">math::fibonacci_sum::result</a></div><div class="ttdeci">uint64_t result(uint64_t n)</div><div class="ttdef"><b>Definition</b> <a href="../../de/dc3/fibonacci__sum_8cpp_source.html#l00077">fibonacci_sum.cpp:77</a></div></div>
<div class="ttc" id="anamespacemachine__learning_html_a6f1c98c016ad34ff3d9f39372161bd35"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">machine_learning::sum</a></div><div class="ttdeci">T sum(const std::vector&lt; std::valarray&lt; T &gt; &gt; &amp;A)</div><div class="ttdef"><b>Definition</b> <a href="../../d8/d95/vector__ops_8hpp_source.html#l00232">vector_ops.hpp:232</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a7a890d2f26855ada3b9f1d43aec70a86" name="a7a890d2f26855ada3b9f1d43aec70a86"></a>
@@ -246,12 +260,12 @@ Here is the call graph for this function:</div>
<tr>
<td class="memname">int64_t divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm </td>
<td>(</td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></td> <td class="paramname"><span class="paramname"><em>str1</em></span>, </td>
<td class="paramtype">std::string</td> <td class="paramname"><span class="paramname"><em>str1</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></td> <td class="paramname"><span class="paramname"><em>str2</em></span>&#160;)</td>
<td class="paramtype">std::string</td> <td class="paramname"><span class="paramname"><em>str2</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
@@ -265,10 +279,12 @@ Here is the call graph for this function:</div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the product number value </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00112">112</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 112</span> {</div>
<div class="line"><span class="lineno"> 113</span> int64_t len1 = str1.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/size.html">size</a>();</div>
<div class="line"><span class="lineno"> 114</span> int64_t len2 = str2.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/size.html">size</a>();</div>
<div class="line"><span class="lineno"> 115</span> int64_t n = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a>(len1, len2);</div>
<div class="line"><span class="lineno"> 113</span> int64_t len1 = str1.size();</div>
<div class="line"><span class="lineno"> 114</span> int64_t len2 = str2.size();</div>
<div class="line"><span class="lineno"> 115</span> int64_t n = std::max(len1, len2);</div>
<div class="line"><span class="lineno"> 116</span> </div>
<div class="line"><span class="lineno"> 117</span> <span class="keywordflow">if</span> (n == 0) {</div>
<div class="line"><span class="lineno"> 118</span> <span class="keywordflow">return</span> 0;</div>
@@ -280,11 +296,11 @@ Here is the call graph for this function:</div>
<div class="line"><span class="lineno"> 124</span> int64_t fh = n / 2; <span class="comment">// first half of string</span></div>
<div class="line"><span class="lineno"> 125</span> int64_t sh = n - fh; <span class="comment">// second half of string</span></div>
<div class="line"><span class="lineno"> 126</span> </div>
<div class="line"><span class="lineno"> 127</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> Xl = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, 0, fh, n); <span class="comment">// first half of first string</span></div>
<div class="line"><span class="lineno"> 128</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> Xr = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, fh, sh, n); <span class="comment">// second half of first string</span></div>
<div class="line"><span class="lineno"> 127</span> std::string Xl = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, 0, fh, n); <span class="comment">// first half of first string</span></div>
<div class="line"><span class="lineno"> 128</span> std::string Xr = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, fh, sh, n); <span class="comment">// second half of first string</span></div>
<div class="line"><span class="lineno"> 129</span> </div>
<div class="line"><span class="lineno"> 130</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> Yl = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, 0, fh, n); <span class="comment">// first half of second string</span></div>
<div class="line"><span class="lineno"> 131</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> Yr = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, fh, sh, n); <span class="comment">// second half of second string</span></div>
<div class="line"><span class="lineno"> 130</span> std::string Yl = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, 0, fh, n); <span class="comment">// first half of second string</span></div>
<div class="line"><span class="lineno"> 131</span> std::string Yr = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, fh, sh, n); <span class="comment">// second half of second string</span></div>
<div class="line"><span class="lineno"> 132</span> </div>
<div class="line"><span class="lineno"> 133</span> <span class="comment">// calculating the three products of inputs of size n/2 recursively</span></div>
<div class="line"><span class="lineno"> 134</span> int64_t product1 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(Xl, Yl);</div>
@@ -297,14 +313,9 @@ Here is the call graph for this function:</div>
<div class="line"><span class="lineno"> 141</span> (product3 - product1 - product2) * (1 &lt;&lt; sh) +</div>
<div class="line"><span class="lineno"> 142</span> product2; <span class="comment">// combining the three products to get the final result.</span></div>
<div class="line"><span class="lineno"> 143</span>}</div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aad9e3edfe156b59fc06a5585403fe0d6"><div class="ttname"><a href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a></div><div class="ttdeci">std::string safe_substr(const std::string &amp;str, int64_t x1, int64_t x2, int64_t n)</div><div class="ttdoc">Wrapper function for substr that considers leading zeros.</div><div class="ttdef"><b>Definition</b> karatsuba_algorithm_for_fast_multiplication.cpp:86</div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aad9e3edfe156b59fc06a5585403fe0d6"><div class="ttname"><a href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a></div><div class="ttdeci">std::string safe_substr(const std::string &amp;str, int64_t x1, int64_t x2, int64_t n)</div><div class="ttdoc">Wrapper function for substr that considers leading zeros.</div><div class="ttdef"><b>Definition</b> <a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00086">karatsuba_algorithm_for_fast_multiplication.cpp:86</a></div></div>
<div class="ttc" id="anamespacekaratsuba__algorithm_html"><div class="ttname"><a href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a></div><div class="ttdoc">Functions for the Karatsuba algorithm for fast multiplication implementation.</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="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_a7a890d2f26855ada3b9f1d43aec70a86_cgraph.svg" width="523" height="276"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div><!-- fragment -->
</div>
</div>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
@@ -324,17 +335,14 @@ 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>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00181">181</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 181</span> {</div>
<div class="line"><span class="lineno"> 182</span> <a class="code hl_function" href="#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><span class="lineno"> 183</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 184</span>}</div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition</b> karatsuba_algorithm_for_fast_multiplication.cpp:151</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="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg" width="271" height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition</b> <a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00151">karatsuba_algorithm_for_fast_multiplication.cpp:151</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aad9e3edfe156b59fc06a5585403fe0d6" name="aad9e3edfe156b59fc06a5585403fe0d6"></a>
@@ -344,9 +352,9 @@ Here is the call graph for this function:</div>
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> divide_and_conquer::karatsuba_algorithm::safe_substr </td>
<td class="memname">std::string divide_and_conquer::karatsuba_algorithm::safe_substr </td>
<td>(</td>
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &amp;</td> <td class="paramname"><span class="paramname"><em>str</em></span>, </td>
<td class="paramtype">const std::string &amp;</td> <td class="paramname"><span class="paramname"><em>str</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -379,11 +387,13 @@ Here is the call graph for this function:</div>
<dl class="section return"><dt>Returns</dt><dd>the "safe" substring for the algorithm <em>without</em> leading zeros </dd>
<dd>
"0" if substring spans to leading zeros only </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00086">86</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 86</span> {</div>
<div class="line"><span class="lineno"> 87</span> int64_t len = str.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/size.html">size</a>();</div>
<div class="line"><span class="lineno"> 87</span> int64_t len = str.size();</div>
<div class="line"><span class="lineno"> 88</span> </div>
<div class="line"><span class="lineno"> 89</span> <span class="keywordflow">if</span> (len &gt;= n) {</div>
<div class="line"><span class="lineno"> 90</span> <span class="keywordflow">return</span> str.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/substr.html">substr</a>(x1, x2);</div>
<div class="line"><span class="lineno"> 90</span> <span class="keywordflow">return</span> str.substr(x1, x2);</div>
<div class="line"><span class="lineno"> 91</span> }</div>
<div class="line"><span class="lineno"> 92</span> </div>
<div class="line"><span class="lineno"> 93</span> int64_t y1 = x1 - (n - len); <span class="comment">// index in str of first char of substring of &quot;whole&quot; string</span></div>
@@ -392,18 +402,12 @@ Here is the call graph for this function:</div>
<div class="line"><span class="lineno"> 96</span> <span class="keywordflow">if</span> (y2 &lt; 0) {</div>
<div class="line"><span class="lineno"> 97</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><span class="lineno"> 98</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (y1 &lt; 0) {</div>
<div class="line"><span class="lineno"> 99</span> <span class="keywordflow">return</span> str.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/substr.html">substr</a>(0, y2 + 1);</div>
<div class="line"><span class="lineno"> 99</span> <span class="keywordflow">return</span> str.substr(0, y2 + 1);</div>
<div class="line"><span class="lineno"> 100</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><span class="lineno"> 101</span> <span class="keywordflow">return</span> str.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/substr.html">substr</a>(y1, x2);</div>
<div class="line"><span class="lineno"> 101</span> <span class="keywordflow">return</span> str.substr(y1, x2);</div>
<div class="line"><span class="lineno"> 102</span> }</div>
<div class="line"><span class="lineno"> 103</span>}</div>
<div class="ttc" id="asubstr_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string/substr.html">std::string::substr</a></div><div class="ttdeci">T substr(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="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_aad9e3edfe156b59fc06a5585403fe0d6_cgraph.svg" width="328" height="100"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div><!-- fragment -->
</div>
</div>
<a id="aa8dca7b867074164d5f45b0f3851269d" name="aa8dca7b867074164d5f45b0f3851269d"></a>
@@ -431,39 +435,34 @@ 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 class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00151">151</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 151</span> {</div>
<div class="line"><span class="lineno"> 152</span> <span class="comment">// 1st test</span></div>
<div class="line"><span class="lineno"> 153</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> s11 = <span class="stringliteral">&quot;1&quot;</span>; <span class="comment">// 1</span></div>
<div class="line"><span class="lineno"> 154</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> s12 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><span class="lineno"> 155</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;1st test... &quot;</span>;</div>
<div class="line"><span class="lineno"> 153</span> std::string s11 = <span class="stringliteral">&quot;1&quot;</span>; <span class="comment">// 1</span></div>
<div class="line"><span class="lineno"> 154</span> std::string s12 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><span class="lineno"> 155</span> std::cout &lt;&lt; <span class="stringliteral">&quot;1st test... &quot;</span>;</div>
<div class="line"><span class="lineno"> 156</span> assert(divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm(</div>
<div class="line"><span class="lineno"> 157</span> s11, s12) == 10);</div>
<div class="line"><span class="lineno"> 158</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"><span class="lineno"> 158</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 159</span> </div>
<div class="line"><span class="lineno"> 160</span> <span class="comment">// 2nd test</span></div>
<div class="line"><span class="lineno"> 161</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> s21 = <span class="stringliteral">&quot;11&quot;</span>; <span class="comment">// 3</span></div>
<div class="line"><span class="lineno"> 162</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> s22 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><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;2nd test... &quot;</span>;</div>
<div class="line"><span class="lineno"> 161</span> std::string s21 = <span class="stringliteral">&quot;11&quot;</span>; <span class="comment">// 3</span></div>
<div class="line"><span class="lineno"> 162</span> std::string s22 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><span class="lineno"> 163</span> std::cout &lt;&lt; <span class="stringliteral">&quot;2nd test... &quot;</span>;</div>
<div class="line"><span class="lineno"> 164</span> assert(divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm(</div>
<div class="line"><span class="lineno"> 165</span> s21, s22) == 30);</div>
<div class="line"><span class="lineno"> 166</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"><span class="lineno"> 166</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 167</span> </div>
<div class="line"><span class="lineno"> 168</span> <span class="comment">// 3rd test</span></div>
<div class="line"><span class="lineno"> 169</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> s31 = <span class="stringliteral">&quot;110&quot;</span>; <span class="comment">// 6</span></div>
<div class="line"><span class="lineno"> 170</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> s32 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><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;3rd test... &quot;</span>;</div>
<div class="line"><span class="lineno"> 169</span> std::string s31 = <span class="stringliteral">&quot;110&quot;</span>; <span class="comment">// 6</span></div>
<div class="line"><span class="lineno"> 170</span> std::string s32 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><span class="lineno"> 171</span> std::cout &lt;&lt; <span class="stringliteral">&quot;3rd test... &quot;</span>;</div>
<div class="line"><span class="lineno"> 172</span> assert(divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm(</div>
<div class="line"><span class="lineno"> 173</span> s31, s32) == 60);</div>
<div class="line"><span class="lineno"> 174</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"><span class="lineno"> 174</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 175</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><!-- 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="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.svg" width="174" height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->

View File

@@ -1,20 +0,0 @@
<map id="divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm" name="divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm">
<area shape="rect" id="Node000001" title="The main function implements Karatsuba&#39;s algorithm for fast multiplication." alt="" coords="5,94,152,150"/>
<area shape="rect" id="Node000002" href="$da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20" title="Binary addition." alt="" coords="200,61,346,116"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="152,107,184,101,185,106,153,112"/>
<area shape="rect" id="Node000004" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/max.html#" title=" " alt="" coords="420,6,492,32"/>
<area shape="poly" id="edge6_Node000001_Node000004" title=" " alt="" coords="102,92,144,53,170,36,199,22,252,8,307,3,360,4,405,8,404,14,359,9,308,9,253,14,201,27,173,40,148,58,106,96"/>
<area shape="rect" id="Node000005" 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="400,141,511,167"/>
<area shape="poly" id="edge11_Node000001_Node000005" title=" " alt="" coords="152,125,384,145,384,150,152,131"/>
<area shape="rect" id="Node000006" href="$da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6" title="Wrapper function for substr that considers leading zeros." alt="" coords="200,215,346,271"/>
<area shape="poly" id="edge7_Node000001_Node000006" title=" " alt="" coords="126,148,216,205,213,209,123,153"/>
<area shape="poly" id="edge2_Node000002_Node000002" title=" " alt="" coords="236,60,237,50,243,42,256,36,273,34,292,37,304,44,302,48,291,42,273,39,257,41,247,46,242,52,242,60"/>
<area shape="rect" id="Node000003" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/basic_string/at.html#" title=" " alt="" coords="406,76,505,101"/>
<area shape="poly" id="edge3_Node000002_Node000003" title=" " alt="" coords="346,86,391,86,391,91,346,91"/>
<area shape="poly" id="edge4_Node000002_Node000004" title=" " alt="" coords="345,58,405,35,407,40,347,63"/>
<area shape="poly" id="edge5_Node000002_Node000005" title=" " alt="" coords="347,112,404,133,402,138,346,117"/>
<area shape="poly" id="edge9_Node000006_Node000005" title=" " alt="" coords="330,212,413,171,415,176,332,217"/>
<area shape="poly" id="edge8_Node000006_Node000006" title=" " alt="" coords="236,215,237,205,243,196,256,191,273,189,292,191,304,198,302,203,291,196,273,194,257,196,247,200,242,207,242,215"/>
<area shape="rect" id="Node000007" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/basic_string/substr.html#" title=" " alt="" coords="394,230,517,256"/>
<area shape="poly" id="edge10_Node000006_Node000007" title=" " alt="" coords="346,240,378,240,378,246,346,246"/>
</map>

View File

@@ -1,206 +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 12.1.2 (20240928.0832)
-->
<!-- Title: divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm Pages: 1 -->
<svg width="392pt" height="207pt"
viewBox="0.00 0.00 392.00 207.23" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 203.23)">
<title>divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="The main function implements Karatsuba&#39;s algorithm for fast multiplication.">
<polygon fill="#999999" stroke="#666666" points="109.75,-132.75 0,-132.75 0,-91 109.75,-91 109.75,-132.75"/>
<text text-anchor="start" x="8" y="-119.25" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="8" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">::karatsuba_algorithm</text>
<text text-anchor="middle" x="54.88" y="-96.75" font-family="Helvetica,sans-Serif" font-size="10.00">::karatsuba_algorithm</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20" target="_top" xlink:title="Binary addition.">
<polygon fill="white" stroke="#666666" points="255.5,-157.75 145.75,-157.75 145.75,-116 255.5,-116 255.5,-157.75"/>
<text text-anchor="start" x="153.75" y="-144.25" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="153.75" y="-133" font-family="Helvetica,sans-Serif" font-size="10.00">::karatsuba_algorithm</text>
<text text-anchor="middle" x="200.62" y="-121.75" font-family="Helvetica,sans-Serif" font-size="10.00">::add_strings</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.22,-121.33C118.11,-122.7 126.3,-124.12 134.38,-125.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="133.74,-128.97 144.19,-127.23 134.94,-122.07 133.74,-128.97"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_Node000004"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/max.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="364.88,-198.5 310.62,-198.5 310.62,-179.25 364.88,-179.25 364.88,-198.5"/>
<text text-anchor="middle" x="337.75" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">std::max</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge6_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge6_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M74.12,-133.02C90.76,-150.59 117.06,-174.35 145.75,-184.88 196.37,-203.44 259.72,-200.04 299.22,-195.09"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="299.5,-198.58 308.93,-193.76 298.55,-191.64 299.5,-198.58"/>
</a>
</g>
</g>
<!-- Node5 -->
<g id="Node000005" class="node">
<title>Node5</title>
<g id="a_Node000005"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/size.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="379.5,-97.5 296,-97.5 296,-78.25 379.5,-78.25 379.5,-97.5"/>
<text text-anchor="middle" x="337.75" y="-84" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge11_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge11_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.03,-107.25C160.21,-102.96 234.38,-96.62 284.08,-92.38"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="284.36,-95.86 294.02,-91.53 283.76,-88.89 284.36,-95.86"/>
</a>
</g>
</g>
<!-- Node6 -->
<g id="Node000006" class="node">
<title>Node6</title>
<g id="a_Node000006"><a xlink:href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6" target="_top" xlink:title="Wrapper function for substr that considers leading zeros.">
<polygon fill="white" stroke="#666666" points="255.5,-41.75 145.75,-41.75 145.75,0 255.5,0 255.5,-41.75"/>
<text text-anchor="start" x="153.75" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="153.75" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">::karatsuba_algorithm</text>
<text text-anchor="middle" x="200.62" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">::safe_substr</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node6 -->
<g id="edge7_Node000001_Node000006" class="edge">
<title>Node1&#45;&gt;Node6</title>
<g id="a_edge7_Node000001_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M89.58,-90.54C109.58,-77.88 135.15,-61.69 156.6,-48.11"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="158.28,-51.19 164.85,-42.89 154.53,-45.28 158.28,-51.19"/>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node2 -->
<g id="edge2_Node000002_Node000002" class="edge">
<title>Node2&#45;&gt;Node2</title>
<g id="a_edge2_Node000002_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M175.32,-158.07C172.91,-167.55 181.34,-175.75 200.62,-175.75 211.77,-175.75 219.3,-173.01 223.19,-168.86"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="226.49,-170.09 225.56,-159.54 219.71,-168.37 226.49,-170.09"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/at.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="374.62,-146.5 300.88,-146.5 300.88,-127.25 374.62,-127.25 374.62,-146.5"/>
<text text-anchor="middle" x="337.75" y="-133" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::at</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge3_Node000002_Node000003" class="edge">
<title>Node2&#45;&gt;Node3</title>
<g id="a_edge3_Node000002_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M255.81,-136.88C266.81,-136.88 278.3,-136.88 289.05,-136.88"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="288.86,-140.38 298.86,-136.88 288.86,-133.38 288.86,-140.38"/>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node4 -->
<g id="edge4_Node000002_Node000004" class="edge">
<title>Node2&#45;&gt;Node4</title>
<g id="a_edge4_Node000002_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M255.81,-157.73C270.75,-163.48 286.61,-169.58 300.29,-174.85"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="298.74,-178 309.33,-178.32 301.25,-171.46 298.74,-178"/>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node5 -->
<g id="edge5_Node000002_Node000005" class="edge">
<title>Node2&#45;&gt;Node5</title>
<g id="a_edge5_Node000002_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M255.81,-117.23C270.03,-112.07 285.08,-106.61 298.3,-101.82"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="299.27,-105.19 307.48,-98.49 296.89,-98.61 299.27,-105.19"/>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node5 -->
<g id="edge9_Node000006_Node000005" class="edge">
<title>Node6&#45;&gt;Node5</title>
<g id="a_edge9_Node000006_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M244.38,-42.07C264.55,-52.07 288.14,-63.77 306.43,-72.84"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="304.65,-75.87 315.16,-77.17 307.76,-69.59 304.65,-75.87"/>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge8_Node000006_Node000006" class="edge">
<title>Node6&#45;&gt;Node6</title>
<g id="a_edge8_Node000006_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M175.32,-42.07C172.91,-51.55 181.34,-59.75 200.62,-59.75 211.77,-59.75 219.3,-57.01 223.19,-52.86"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="226.49,-54.09 225.56,-43.54 219.71,-52.37 226.49,-54.09"/>
</a>
</g>
</g>
<!-- Node7 -->
<g id="Node000007" class="node">
<title>Node7</title>
<g id="a_Node000007"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/substr.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="384,-30.5 291.5,-30.5 291.5,-11.25 384,-11.25 384,-30.5"/>
<text text-anchor="middle" x="337.75" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::substr</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node7 -->
<g id="edge10_Node000006_Node000007" class="edge">
<title>Node6&#45;&gt;Node7</title>
<g id="a_edge10_Node000006_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M255.81,-20.88C263.7,-20.88 271.85,-20.88 279.79,-20.88"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="279.72,-24.38 289.72,-20.88 279.72,-17.38 279.72,-24.38"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 9.7 KiB

View File

@@ -1,180 +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 12.1.2 (20240928.0832)
-->
<!-- Title: divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm Pages: 1 -->
<svg width="392pt" height="207pt"
viewBox="0.00 0.00 392.00 207.23" 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 203.23)">
<title>divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="The main function implements Karatsuba&#39;s algorithm for fast multiplication.">
<polygon fill="#999999" stroke="#666666" points="109.75,-132.75 0,-132.75 0,-91 109.75,-91 109.75,-132.75"/>
<text text-anchor="start" x="8" y="-119.25" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="8" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">::karatsuba_algorithm</text>
<text text-anchor="middle" x="54.88" y="-96.75" font-family="Helvetica,sans-Serif" font-size="10.00">::karatsuba_algorithm</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20" target="_top" xlink:title="Binary addition.">
<polygon fill="white" stroke="#666666" points="255.5,-157.75 145.75,-157.75 145.75,-116 255.5,-116 255.5,-157.75"/>
<text text-anchor="start" x="153.75" y="-144.25" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="153.75" y="-133" font-family="Helvetica,sans-Serif" font-size="10.00">::karatsuba_algorithm</text>
<text text-anchor="middle" x="200.62" y="-121.75" font-family="Helvetica,sans-Serif" font-size="10.00">::add_strings</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.22,-121.33C118.11,-122.7 126.3,-124.12 134.38,-125.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="133.74,-128.97 144.19,-127.23 134.94,-122.07 133.74,-128.97"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_Node000004"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/max.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="364.88,-198.5 310.62,-198.5 310.62,-179.25 364.88,-179.25 364.88,-198.5"/>
<text text-anchor="middle" x="337.75" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">std::max</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge6_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge6_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M74.12,-133.02C90.76,-150.59 117.06,-174.35 145.75,-184.88 196.37,-203.44 259.72,-200.04 299.22,-195.09"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="299.5,-198.58 308.93,-193.76 298.55,-191.64 299.5,-198.58"/>
</a>
</g>
</g>
<!-- Node5 -->
<g id="Node000005" class="node">
<title>Node5</title>
<g id="a_Node000005"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/size.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="379.5,-97.5 296,-97.5 296,-78.25 379.5,-78.25 379.5,-97.5"/>
<text text-anchor="middle" x="337.75" y="-84" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge11_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge11_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.03,-107.25C160.21,-102.96 234.38,-96.62 284.08,-92.38"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="284.36,-95.86 294.02,-91.53 283.76,-88.89 284.36,-95.86"/>
</a>
</g>
</g>
<!-- Node6 -->
<g id="Node000006" class="node">
<title>Node6</title>
<g id="a_Node000006"><a xlink:href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6" target="_top" xlink:title="Wrapper function for substr that considers leading zeros.">
<polygon fill="white" stroke="#666666" points="255.5,-41.75 145.75,-41.75 145.75,0 255.5,0 255.5,-41.75"/>
<text text-anchor="start" x="153.75" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="153.75" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">::karatsuba_algorithm</text>
<text text-anchor="middle" x="200.62" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">::safe_substr</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node6 -->
<g id="edge7_Node000001_Node000006" class="edge">
<title>Node1&#45;&gt;Node6</title>
<g id="a_edge7_Node000001_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M89.58,-90.54C109.58,-77.88 135.15,-61.69 156.6,-48.11"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="158.28,-51.19 164.85,-42.89 154.53,-45.28 158.28,-51.19"/>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node2 -->
<g id="edge2_Node000002_Node000002" class="edge">
<title>Node2&#45;&gt;Node2</title>
<g id="a_edge2_Node000002_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M175.32,-158.07C172.91,-167.55 181.34,-175.75 200.62,-175.75 211.77,-175.75 219.3,-173.01 223.19,-168.86"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="226.49,-170.09 225.56,-159.54 219.71,-168.37 226.49,-170.09"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/at.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="374.62,-146.5 300.88,-146.5 300.88,-127.25 374.62,-127.25 374.62,-146.5"/>
<text text-anchor="middle" x="337.75" y="-133" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::at</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge3_Node000002_Node000003" class="edge">
<title>Node2&#45;&gt;Node3</title>
<g id="a_edge3_Node000002_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M255.81,-136.88C266.81,-136.88 278.3,-136.88 289.05,-136.88"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="288.86,-140.38 298.86,-136.88 288.86,-133.38 288.86,-140.38"/>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node4 -->
<g id="edge4_Node000002_Node000004" class="edge">
<title>Node2&#45;&gt;Node4</title>
<g id="a_edge4_Node000002_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M255.81,-157.73C270.75,-163.48 286.61,-169.58 300.29,-174.85"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="298.74,-178 309.33,-178.32 301.25,-171.46 298.74,-178"/>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node5 -->
<g id="edge5_Node000002_Node000005" class="edge">
<title>Node2&#45;&gt;Node5</title>
<g id="a_edge5_Node000002_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M255.81,-117.23C270.03,-112.07 285.08,-106.61 298.3,-101.82"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="299.27,-105.19 307.48,-98.49 296.89,-98.61 299.27,-105.19"/>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node5 -->
<g id="edge9_Node000006_Node000005" class="edge">
<title>Node6&#45;&gt;Node5</title>
<g id="a_edge9_Node000006_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M244.38,-42.07C264.55,-52.07 288.14,-63.77 306.43,-72.84"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="304.65,-75.87 315.16,-77.17 307.76,-69.59 304.65,-75.87"/>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge8_Node000006_Node000006" class="edge">
<title>Node6&#45;&gt;Node6</title>
<g id="a_edge8_Node000006_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M175.32,-42.07C172.91,-51.55 181.34,-59.75 200.62,-59.75 211.77,-59.75 219.3,-57.01 223.19,-52.86"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="226.49,-54.09 225.56,-43.54 219.71,-52.37 226.49,-54.09"/>
</a>
</g>
</g>
<!-- Node7 -->
<g id="Node000007" class="node">
<title>Node7</title>
<g id="a_Node000007"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/substr.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="384,-30.5 291.5,-30.5 291.5,-11.25 384,-11.25 384,-30.5"/>
<text text-anchor="middle" x="337.75" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::substr</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node7 -->
<g id="edge10_Node000006_Node000007" class="edge">
<title>Node6&#45;&gt;Node7</title>
<g id="a_edge10_Node000006_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M255.81,-20.88C263.7,-20.88 271.85,-20.88 279.79,-20.88"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="279.72,-24.38 289.72,-20.88 279.72,-17.38 279.72,-24.38"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -1,5 +0,0 @@
<map id="test" name="test">
<area shape="rect" id="Node000001" title="Self&#45;test implementations." alt="" coords="5,5,49,31"/>
<area shape="rect" id="Node000002" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/manip/endl.html#" title=" " alt="" coords="97,5,168,31"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="49,16,81,16,81,21,49,21"/>
</map>

View File

@@ -1,65 +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 12.1.2 (20240928.0832)
-->
<!-- Title: test Pages: 1 -->
<svg width="130pt" height="27pt"
viewBox="0.00 0.00 130.00 27.25" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 23.25)">
<title>test</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Self&#45;test implementations.">
<polygon fill="#999999" stroke="#666666" points="32.5,-19.25 0,-19.25 0,0 32.5,0 32.5,-19.25"/>
<text text-anchor="middle" x="16.25" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">test</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/manip/endl.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="122,-19.25 68.5,-19.25 68.5,0 122,0 122,-19.25"/>
<text text-anchor="middle" x="95.25" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::endl</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M32.83,-9.62C39.78,-9.62 48.3,-9.62 56.75,-9.62"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="56.56,-13.13 66.56,-9.63 56.56,-6.13 56.56,-13.13"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

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 12.1.2 (20240928.0832)
-->
<!-- Title: test Pages: 1 -->
<svg width="130pt" height="27pt"
viewBox="0.00 0.00 130.00 27.25" 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 23.25)">
<title>test</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Self&#45;test implementations.">
<polygon fill="#999999" stroke="#666666" points="32.5,-19.25 0,-19.25 0,0 32.5,0 32.5,-19.25"/>
<text text-anchor="middle" x="16.25" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">test</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/manip/endl.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="122,-19.25 68.5,-19.25 68.5,0 122,0 122,-19.25"/>
<text text-anchor="middle" x="95.25" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::endl</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M32.83,-9.62C39.78,-9.62 48.3,-9.62 56.75,-9.62"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="56.56,-13.13 66.56,-9.63 56.56,-6.13 56.56,-13.13"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,8 +0,0 @@
<map id="divide_and_conquer::karatsuba_algorithm::safe_substr" name="divide_and_conquer::karatsuba_algorithm::safe_substr">
<area shape="rect" id="Node000001" title="Wrapper function for substr that considers leading zeros." alt="" coords="5,29,152,85"/>
<area shape="poly" id="edge1_Node000001_Node000001" title=" " alt="" coords="42,29,43,19,49,10,61,5,79,3,98,5,110,12,107,17,96,10,78,8,63,10,52,14,48,21,47,29"/>
<area shape="rect" id="Node000002" 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="206,19,317,45"/>
<area shape="poly" id="edge2_Node000001_Node000002" title=" " alt="" coords="152,44,190,39,191,44,152,50"/>
<area shape="rect" id="Node000003" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/basic_string/substr.html#" title=" " alt="" coords="200,68,323,94"/>
<area shape="poly" id="edge3_Node000001_Node000003" title=" " alt="" coords="152,64,185,68,184,74,152,69"/>
</map>

View File

@@ -1,94 +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 12.1.2 (20240928.0832)
-->
<!-- Title: divide_and_conquer::karatsuba_algorithm::safe_substr Pages: 1 -->
<svg width="246pt" height="75pt"
viewBox="0.00 0.00 246.25 74.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 70.5)">
<title>divide_and_conquer::karatsuba_algorithm::safe_substr</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Wrapper function for substr that considers leading zeros.">
<polygon fill="#999999" stroke="#666666" points="109.75,-48.5 0,-48.5 0,-6.75 109.75,-6.75 109.75,-48.5"/>
<text text-anchor="start" x="8" y="-35" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="8" y="-23.75" font-family="Helvetica,sans-Serif" font-size="10.00">::karatsuba_algorithm</text>
<text text-anchor="middle" x="54.88" y="-12.5" font-family="Helvetica,sans-Serif" font-size="10.00">::safe_substr</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1_Node000001_Node000001" class="edge">
<title>Node1&#45;&gt;Node1</title>
<g id="a_edge1_Node000001_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M29.57,-48.82C27.16,-58.3 35.59,-66.5 54.88,-66.5 66.02,-66.5 73.55,-63.76 77.44,-59.61"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="80.74,-60.84 79.81,-50.29 73.96,-59.12 80.74,-60.84"/>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/size.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="233.75,-56.25 150.25,-56.25 150.25,-37 233.75,-37 233.75,-56.25"/>
<text text-anchor="middle" x="192" y="-42.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge2_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge2_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.06,-35.24C119.56,-36.58 129.43,-37.97 138.87,-39.29"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="138.23,-42.74 148.62,-40.67 139.21,-35.81 138.23,-42.74"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/substr.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="238.25,-19.25 145.75,-19.25 145.75,0 238.25,0 238.25,-19.25"/>
<text text-anchor="middle" x="192" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::substr</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge3_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge3_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.06,-20.41C118.04,-19.34 126.29,-18.25 134.32,-17.18"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="134.54,-20.68 143.99,-15.89 133.61,-13.74 134.54,-20.68"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -1,68 +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 12.1.2 (20240928.0832)
-->
<!-- Title: divide_and_conquer::karatsuba_algorithm::safe_substr Pages: 1 -->
<svg width="246pt" height="75pt"
viewBox="0.00 0.00 246.25 74.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 70.5)">
<title>divide_and_conquer::karatsuba_algorithm::safe_substr</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Wrapper function for substr that considers leading zeros.">
<polygon fill="#999999" stroke="#666666" points="109.75,-48.5 0,-48.5 0,-6.75 109.75,-6.75 109.75,-48.5"/>
<text text-anchor="start" x="8" y="-35" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="8" y="-23.75" font-family="Helvetica,sans-Serif" font-size="10.00">::karatsuba_algorithm</text>
<text text-anchor="middle" x="54.88" y="-12.5" font-family="Helvetica,sans-Serif" font-size="10.00">::safe_substr</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1_Node000001_Node000001" class="edge">
<title>Node1&#45;&gt;Node1</title>
<g id="a_edge1_Node000001_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M29.57,-48.82C27.16,-58.3 35.59,-66.5 54.88,-66.5 66.02,-66.5 73.55,-63.76 77.44,-59.61"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="80.74,-60.84 79.81,-50.29 73.96,-59.12 80.74,-60.84"/>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/size.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="233.75,-56.25 150.25,-56.25 150.25,-37 233.75,-37 233.75,-56.25"/>
<text text-anchor="middle" x="192" y="-42.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge2_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge2_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.06,-35.24C119.56,-36.58 129.43,-37.97 138.87,-39.29"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="138.23,-42.74 148.62,-40.67 139.21,-35.81 138.23,-42.74"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/substr.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="238.25,-19.25 145.75,-19.25 145.75,0 238.25,0 238.25,-19.25"/>
<text text-anchor="middle" x="192" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::substr</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge3_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge3_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.06,-20.41C118.04,-19.34 126.29,-18.25 134.32,-17.18"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="134.54,-20.68 143.99,-15.89 133.61,-13.74 134.54,-20.68"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -1,10 +0,0 @@
<map id="divide_and_conquer::karatsuba_algorithm::add_strings" name="divide_and_conquer::karatsuba_algorithm::add_strings">
<area shape="rect" id="Node000001" title="Binary addition." alt="" coords="5,40,152,95"/>
<area shape="poly" id="edge1_Node000001_Node000001" title=" " alt="" coords="43,39,44,29,50,21,62,15,79,13,97,16,109,23,106,27,96,21,78,18,63,20,53,25,49,31,49,39"/>
<area shape="rect" id="Node000002" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/string/basic_string/at.html#" title=" " alt="" coords="206,5,304,31"/>
<area shape="poly" id="edge2_Node000001_Node000002" title=" " alt="" coords="151,44,191,33,193,38,153,50"/>
<area shape="rect" id="Node000003" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/max.html#" title=" " alt="" coords="219,55,292,80"/>
<area shape="poly" id="edge3_Node000001_Node000003" title=" " alt="" coords="152,65,203,65,203,70,152,70"/>
<area shape="rect" id="Node000004" 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="200,104,311,130"/>
<area shape="poly" id="edge4_Node000001_Node000004" title=" " alt="" coords="153,85,193,97,191,102,151,91"/>
</map>

View File

@@ -1,112 +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 12.1.2 (20240928.0832)
-->
<!-- Title: divide_and_conquer::karatsuba_algorithm::add_strings Pages: 1 -->
<svg width="237pt" height="101pt"
viewBox="0.00 0.00 237.25 101.25" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 97.25)">
<title>divide_and_conquer::karatsuba_algorithm::add_strings</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Binary addition.">
<polygon fill="#999999" stroke="#666666" points="109.75,-67.5 0,-67.5 0,-25.75 109.75,-25.75 109.75,-67.5"/>
<text text-anchor="start" x="8" y="-54" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="8" y="-42.75" font-family="Helvetica,sans-Serif" font-size="10.00">::karatsuba_algorithm</text>
<text text-anchor="middle" x="54.88" y="-31.5" font-family="Helvetica,sans-Serif" font-size="10.00">::add_strings</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1_Node000001_Node000001" class="edge">
<title>Node1&#45;&gt;Node1</title>
<g id="a_edge1_Node000001_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M30.4,-67.82C28.07,-77.3 36.22,-85.5 54.88,-85.5 65.66,-85.5 72.93,-82.76 76.7,-78.61"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="80.01,-79.83 78.99,-69.29 73.21,-78.17 80.01,-79.83"/>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/at.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="224.38,-93.25 150.62,-93.25 150.62,-74 224.38,-74 224.38,-93.25"/>
<text text-anchor="middle" x="187.5" y="-79.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::at</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge2_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge2_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.14,-61.99C120.01,-64.79 130.23,-67.69 139.86,-70.42"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="138.81,-73.75 149.38,-73.11 140.72,-67.02 138.81,-73.75"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/max.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="214.62,-56.25 160.38,-56.25 160.38,-37 214.62,-37 214.62,-56.25"/>
<text text-anchor="middle" x="187.5" y="-42.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::max</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge3_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge3_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.14,-46.62C123.07,-46.62 136.6,-46.62 148.61,-46.62"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="148.53,-50.13 158.53,-46.63 148.53,-43.13 148.53,-50.13"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_Node000004"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/size.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="229.25,-19.25 145.75,-19.25 145.75,0 229.25,0 229.25,-19.25"/>
<text text-anchor="middle" x="187.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge4_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge4_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.14,-31.26C120.01,-28.46 130.23,-25.56 139.86,-22.83"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="140.72,-26.23 149.38,-20.14 138.81,-19.5 140.72,-26.23"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -1,86 +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 12.1.2 (20240928.0832)
-->
<!-- Title: divide_and_conquer::karatsuba_algorithm::add_strings Pages: 1 -->
<svg width="237pt" height="101pt"
viewBox="0.00 0.00 237.25 101.25" 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 97.25)">
<title>divide_and_conquer::karatsuba_algorithm::add_strings</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Binary addition.">
<polygon fill="#999999" stroke="#666666" points="109.75,-67.5 0,-67.5 0,-25.75 109.75,-25.75 109.75,-67.5"/>
<text text-anchor="start" x="8" y="-54" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="8" y="-42.75" font-family="Helvetica,sans-Serif" font-size="10.00">::karatsuba_algorithm</text>
<text text-anchor="middle" x="54.88" y="-31.5" font-family="Helvetica,sans-Serif" font-size="10.00">::add_strings</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1_Node000001_Node000001" class="edge">
<title>Node1&#45;&gt;Node1</title>
<g id="a_edge1_Node000001_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M30.4,-67.82C28.07,-77.3 36.22,-85.5 54.88,-85.5 65.66,-85.5 72.93,-82.76 76.7,-78.61"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="80.01,-79.83 78.99,-69.29 73.21,-78.17 80.01,-79.83"/>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/at.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="224.38,-93.25 150.62,-93.25 150.62,-74 224.38,-74 224.38,-93.25"/>
<text text-anchor="middle" x="187.5" y="-79.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::at</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge2_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge2_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.14,-61.99C120.01,-64.79 130.23,-67.69 139.86,-70.42"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="138.81,-73.75 149.38,-73.11 140.72,-67.02 138.81,-73.75"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/max.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="214.62,-56.25 160.38,-56.25 160.38,-37 214.62,-37 214.62,-56.25"/>
<text text-anchor="middle" x="187.5" y="-42.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::max</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge3_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge3_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.14,-46.62C123.07,-46.62 136.6,-46.62 148.61,-46.62"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="148.53,-50.13 158.53,-46.63 148.53,-43.13 148.53,-50.13"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_Node000004"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/string/basic_string/size.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="229.25,-19.25 145.75,-19.25 145.75,0 229.25,0 229.25,-19.25"/>
<text text-anchor="middle" x="187.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::string::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge4_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge4_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M110.14,-31.26C120.01,-28.46 130.23,-25.56 139.86,-22.83"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="140.72,-26.23 149.38,-20.14 138.81,-19.5 140.72,-26.23"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -1,7 +0,0 @@
<map id="main" name="main">
<area shape="rect" id="Node000001" title="Main function." alt="" coords="5,5,55,31"/>
<area shape="rect" id="Node000002" href="$da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d" title="Self&#45;test implementations." alt="" coords="103,5,146,31"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="55,16,87,16,87,21,55,21"/>
<area shape="rect" id="Node000003" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/manip/endl.html#" title=" " alt="" coords="194,5,265,31"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="146,16,178,16,178,21,146,21"/>
</map>

View File

@@ -1,83 +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 12.1.2 (20240928.0832)
-->
<!-- Title: main Pages: 1 -->
<svg width="203pt" height="27pt"
viewBox="0.00 0.00 203.00 27.25" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 23.25)">
<title>main</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Main function.">
<polygon fill="#999999" stroke="#666666" points="37,-19.25 0,-19.25 0,0 37,0 37,-19.25"/>
<text text-anchor="middle" x="18.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">main</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d" target="_top" xlink:title="Self&#45;test implementations.">
<polygon fill="white" stroke="#666666" points="105.5,-19.25 73,-19.25 73,0 105.5,0 105.5,-19.25"/>
<text text-anchor="middle" x="89.25" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">test</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M37.2,-9.62C44.58,-9.62 53.31,-9.62 61.45,-9.62"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="61.2,-13.13 71.2,-9.63 61.2,-6.13 61.2,-13.13"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/manip/endl.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="195,-19.25 141.5,-19.25 141.5,0 195,0 195,-19.25"/>
<text text-anchor="middle" x="168.25" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::endl</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2_Node000002_Node000003" class="edge">
<title>Node2&#45;&gt;Node3</title>
<g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M105.83,-9.62C112.78,-9.62 121.3,-9.62 129.75,-9.62"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="129.56,-13.13 139.56,-9.63 129.56,-6.13 129.56,-13.13"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -1,57 +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 12.1.2 (20240928.0832)
-->
<!-- Title: main Pages: 1 -->
<svg width="203pt" height="27pt"
viewBox="0.00 0.00 203.00 27.25" 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 23.25)">
<title>main</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Main function.">
<polygon fill="#999999" stroke="#666666" points="37,-19.25 0,-19.25 0,0 37,0 37,-19.25"/>
<text text-anchor="middle" x="18.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">main</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d" target="_top" xlink:title="Self&#45;test implementations.">
<polygon fill="white" stroke="#666666" points="105.5,-19.25 73,-19.25 73,0 105.5,0 105.5,-19.25"/>
<text text-anchor="middle" x="89.25" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">test</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M37.2,-9.62C44.58,-9.62 53.31,-9.62 61.45,-9.62"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="61.2,-13.13 71.2,-9.63 61.2,-6.13 61.2,-13.13"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/manip/endl.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="195,-19.25 141.5,-19.25 141.5,0 195,0 195,-19.25"/>
<text text-anchor="middle" x="168.25" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::endl</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2_Node000002_Node000003" class="edge">
<title>Node2&#45;&gt;Node3</title>
<g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M105.83,-9.62C112.78,-9.62 121.3,-9.62 129.75,-9.62"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="129.56,-13.13 139.56,-9.63 129.56,-6.13 129.56,-13.13"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -0,0 +1,285 @@
<!-- HTML header for doxygen 1.12.0-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TheAlgorithms/C++: divide_and_conquer/karatsuba_algorithm_for_fast_multiplication.cpp Source File</title>
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@xpack-3rd-party/doxygen-awesome-css@2.2.0-1/doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">
DoxygenAwesomeDarkModeToggle.init()
</script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
window.MathJax = {
options: {
ignoreHtmlClass: 'tex2jax_ignore',
processHtmlClass: 'tex2jax_process'
},
loader: {
load: ['[tex]/ams']
},
tex: {
macros: {},
packages: ['base','configmacros','ams']
}
};
</script>
<script type="text/javascript" id="MathJax-script" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../doxygen-awesome.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../project_logo.png"/></td>
<td id="projectalign">
<div id="projectname">TheAlgorithms/C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">All the algorithms implemented in C++</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">karatsuba_algorithm_for_fast_multiplication.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;cassert&gt;</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;cstring&gt;</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;iostream&gt;</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &lt;vector&gt;</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../dd/dba/namespacedivide__and__conquer.html">divide_and_conquer</a> {</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a> {</div>
<div class="foldopen" id="foldopen00037" data-start="{" data-end="}">
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20"> 37</a></span>std::string <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20">add_strings</a>(std::string first, std::string second) {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> std::string result; <span class="comment">// to store the resulting sum bits</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// make the string lengths equal</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> int64_t len1 = first.size();</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> int64_t len2 = second.size();</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> std::string zero = <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">if</span> (len1 &lt; len2) {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">for</span> (int64_t i = 0; i &lt; len2 - len1; i++) {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> zero += first;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> first = zero;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> zero = <span class="stringliteral">&quot;0&quot;</span>; <span class="comment">// Prevents CI from failing</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="keywordflow">else</span> <span class="keywordflow">if</span> (len1 &gt; len2) {</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordflow">for</span> (int64_t i = 0; i &lt; len1 - len2; i++) {</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> zero += second;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> second = zero;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> zero = <span class="stringliteral">&quot;0&quot;</span>; <span class="comment">// Prevents CI from failing</span></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> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> int64_t length = std::max(len1, len2);</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> int64_t carry = 0;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">for</span> (int64_t i = length - 1; i &gt;= 0; i--) {</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> int64_t firstBit = first.at(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> int64_t secondBit = second.at(i) - <span class="charliteral">&#39;0&#39;</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> int64_t sum = (char(firstBit ^ secondBit ^ carry)) + <span class="charliteral">&#39;0&#39;</span>; <span class="comment">// sum of 3 bits</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> result.insert(result.begin(), sum);</div>
<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> carry = char((firstBit &amp; secondBit) | (secondBit &amp; carry) |</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> (firstBit &amp; carry)); <span class="comment">// sum of 3 bits</span></div>
<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> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">if</span> (carry) {</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> result.insert(result.begin(), <span class="charliteral">&#39;1&#39;</span>); <span class="comment">// adding 1 incase of overflow</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> }</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span>}</div>
</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="foldopen" id="foldopen00086" data-start="{" data-end="}">
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6"> 86</a></span>std::string <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">safe_substr</a>(<span class="keyword">const</span> std::string &amp;str, int64_t x1, int64_t x2, int64_t n) {</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> int64_t len = str.size();</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="keywordflow">if</span> (len &gt;= n) {</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keywordflow">return</span> str.substr(x1, x2);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> }</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> int64_t y1 = x1 - (n - len); <span class="comment">// index in str of first char of substring of &quot;whole&quot; string</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> int64_t y2 = (x1 + x2 - 1) - (n - len); <span class="comment">// index in str of last char of substring of &quot;whole&quot; string</span></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="keywordflow">if</span> (y2 &lt; 0) {</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (y1 &lt; 0) {</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">return</span> str.substr(0, y2 + 1);</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keywordflow">return</span> str.substr(y1, x2);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> }</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span>}</div>
</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="foldopen" id="foldopen00112" data-start="{" data-end="}">
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#a7a890d2f26855ada3b9f1d43aec70a86"> 112</a></span>int64_t <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(std::string str1, std::string str2) {</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> int64_t len1 = str1.size();</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> int64_t len2 = str2.size();</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> int64_t n = std::max(len1, len2);</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">if</span> (n == 0) {</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> }</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">if</span> (n == 1) {</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">return</span> (str1[0] - <span class="charliteral">&#39;0&#39;</span>) * (str2[0] - <span class="charliteral">&#39;0&#39;</span>);</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> int64_t fh = n / 2; <span class="comment">// first half of string</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> int64_t sh = n - fh; <span class="comment">// second half of string</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> std::string Xl = <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, 0, fh, n); <span class="comment">// first half of first string</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> std::string Xr = <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, fh, sh, n); <span class="comment">// second half of first string</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> std::string Yl = <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, 0, fh, n); <span class="comment">// first half of second string</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> std::string Yr = <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, fh, sh, n); <span class="comment">// second half of second string</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> <span class="comment">// calculating the three products of inputs of size n/2 recursively</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> int64_t product1 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(Xl, Yl);</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> int64_t product2 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(Xr, Yr);</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> int64_t product3 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a>(Xl, Xr),</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a>(Yl, Yr));</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordflow">return</span> product1 * (1 &lt;&lt; (2 * sh)) +</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> (product3 - product1 - product2) * (1 &lt;&lt; sh) +</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> product2; <span class="comment">// combining the three products to get the final result.</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span>}</div>
</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span>} <span class="comment">// namespace karatsuba_algorithm</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span>} <span class="comment">// namespace divide_and_conquer</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
<div class="foldopen" id="foldopen00151" data-start="{" data-end="}">
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d"> 151</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>() {</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="comment">// 1st test</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> std::string s11 = <span class="stringliteral">&quot;1&quot;</span>; <span class="comment">// 1</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> std::string s12 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> std::cout &lt;&lt; <span class="stringliteral">&quot;1st test... &quot;</span>;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> assert(divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm(</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> s11, s12) == 10);</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// 2nd test</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> std::string s21 = <span class="stringliteral">&quot;11&quot;</span>; <span class="comment">// 3</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> std::string s22 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> std::cout &lt;&lt; <span class="stringliteral">&quot;2nd test... &quot;</span>;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> assert(divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm(</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> s21, s22) == 30);</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="comment">// 3rd test</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> std::string s31 = <span class="stringliteral">&quot;110&quot;</span>; <span class="comment">// 6</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> std::string s32 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> std::cout &lt;&lt; <span class="stringliteral">&quot;3rd test... &quot;</span>;</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> assert(divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm(</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> s31, s32) == 60);</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span>}</div>
</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> </div>
<div class="foldopen" id="foldopen00181" data-start="{" data-end="}">
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 181</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() {</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span>}</div>
</div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_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> <a href="#l00151">karatsuba_algorithm_for_fast_multiplication.cpp:151</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aad9e3edfe156b59fc06a5585403fe0d6"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a></div><div class="ttdeci">std::string safe_substr(const std::string &amp;str, int64_t x1, int64_t x2, int64_t n)</div><div class="ttdoc">Wrapper function for substr that considers leading zeros.</div><div class="ttdef"><b>Definition</b> <a href="#l00086">karatsuba_algorithm_for_fast_multiplication.cpp:86</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_ad76f5cac3ef8dc034f6abb99b64c2b20"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a></div><div class="ttdeci">std::string add_strings(std::string first, std::string second)</div><div class="ttdoc">Binary addition.</div><div class="ttdef"><b>Definition</b> <a href="#l00037">karatsuba_algorithm_for_fast_multiplication.cpp:37</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_ae66f6b31b5ad750f1fe042a706a4e3d4"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a></div><div class="ttdeci">int main()</div><div class="ttdoc">Main function.</div><div class="ttdef"><b>Definition</b> <a href="#l00181">karatsuba_algorithm_for_fast_multiplication.cpp:181</a></div></div>
<div class="ttc" id="anamespacedivide__and__conquer_html"><div class="ttname"><a href="../../dd/dba/namespacedivide__and__conquer.html">divide_and_conquer</a></div><div class="ttdoc">for std::vector</div></div>
<div class="ttc" id="anamespacekaratsuba__algorithm_html"><div class="ttname"><a href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a></div><div class="ttdoc">Functions for the Karatsuba algorithm for fast multiplication implementation.</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_93bc990c5cceb745f78af6949e9ef947.html">divide_and_conquer</a></li><li class="navelem"><a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html">karatsuba_algorithm_for_fast_multiplication.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.12.0 </li>
</ul>
</div>
</body>
</html>

View File

@@ -1,3 +1,4 @@
<!-- HTML header for doxygen 1.12.0-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
@@ -5,10 +6,15 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: spirograph Namespace Reference</title>
<title>TheAlgorithms/C++: spirograph Namespace Reference</title>
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@xpack-3rd-party/doxygen-awesome-css@2.2.0-1/doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">
DoxygenAwesomeDarkModeToggle.init()
</script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
@@ -18,14 +24,24 @@
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<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"],
});
<script type="text/javascript">
window.MathJax = {
options: {
ignoreHtmlClass: 'tex2jax_ignore',
processHtmlClass: 'tex2jax_process'
},
loader: {
load: ['[tex]/ams']
},
tex: {
macros: {},
packages: ['base','configmacros','ams']
}
};
</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>
<script type="text/javascript" id="MathJax-script" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../doxygen-awesome.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
@@ -33,10 +49,11 @@ MathJax.Hub.Config({
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../project_logo.png"/></td>
<td id="projectalign">
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
<div id="projectname">TheAlgorithms/C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
<div id="projectbrief">All the algorithms implemented in C++</div>
</td>
</tr>
</tbody>
@@ -112,8 +129,8 @@ $(function(){initNavTree('da/dd3/namespacespirograph.html','../../'); initResiza
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aeca22dbe4563358960e907a40cd3e1ac" id="r_aeca22dbe4563358960e907a40cd3e1ac"><td class="memTemplParams" colspan="2">template&lt;<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> N&gt; </td></tr>
<tr class="memitem:aeca22dbe4563358960e907a40cd3e1ac"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#aeca22dbe4563358960e907a40cd3e1ac">spirograph</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; double, double &gt;, N &gt; *points, double l, double k, double rot)</td></tr>
<tr class="memitem:aeca22dbe4563358960e907a40cd3e1ac" id="r_aeca22dbe4563358960e907a40cd3e1ac"><td class="memTemplParams" colspan="2">template&lt;std::size_t N&gt; </td></tr>
<tr class="memitem:aeca22dbe4563358960e907a40cd3e1ac"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#aeca22dbe4563358960e907a40cd3e1ac">spirograph</a> (std::array&lt; std::pair&lt; double, double &gt;, N &gt; *points, double l, double k, double rot)</td></tr>
<tr class="separator:aeca22dbe4563358960e907a40cd3e1ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e83a64e8443fff1e5ffdc1c299c1e99" id="r_a8e83a64e8443fff1e5ffdc1c299c1e99"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8e83a64e8443fff1e5ffdc1c299c1e99">test</a> ()</td></tr>
<tr class="memdesc:a8e83a64e8443fff1e5ffdc1c299c1e99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test function to save resulting points to a CSV file. <br /></td></tr>
@@ -128,12 +145,12 @@ Functions</h2></td></tr>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> N&gt; </div>
template&lt;std::size_t N&gt; </div>
<table class="memname">
<tr>
<td class="memname">void spirograph::spirograph </td>
<td>(</td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; double, double &gt;, N &gt; *</td> <td class="paramname"><span class="paramname"><em>points</em></span>, </td>
<td class="paramtype">std::array&lt; std::pair&lt; double, double &gt;, N &gt; *</td> <td class="paramname"><span class="paramname"><em>points</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -177,13 +194,15 @@ y &amp;=&amp; R\left[ (1-k) \sin (t) - l\cdot k\cdot\sin \left(\frac{1-k}{k}t\ri
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">points</td><td>Array of 2D points represented as <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a> </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">points</td><td>Array of 2D points represented as std::pair </td></tr>
<tr><td class="paramdir"></td><td class="paramname">l</td><td>the relative distance of marker from the centre of inner circle and \(0\le l\le1\) </td></tr>
<tr><td class="paramdir"></td><td class="paramname">k</td><td>the ratio of radius of inner circle to outer circle and \(0&lt;k&lt;1\) </td></tr>
<tr><td class="paramdir"></td><td class="paramname">rot</td><td>the number of rotations to perform (can be fractional value) </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="../../da/d77/spirograph_8cpp_source.html#l00070">70</a> of file <a class="el" href="../../da/d77/spirograph_8cpp_source.html">spirograph.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 71</span> {</div>
<div class="line"><span class="lineno"> 72</span> <span class="keywordtype">double</span> dt = rot * 2.f * M_PI / N;</div>
<div class="line"><span class="lineno"> 73</span> <span class="keywordtype">double</span> R = 1.f;</div>
@@ -195,20 +214,13 @@ y &amp;=&amp; R\left[ (1-k) \sin (t) - l\cdot k\cdot\sin \left(\frac{1-k}{k}t\ri
<div class="line"><span class="lineno"> 79</span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="lineno"> 80</span> <span class="keywordflow">for</span> (step = 0; step &lt; N; step++) {</div>
<div class="line"><span class="lineno"> 81</span> <span class="keywordtype">double</span> t = dt * step;</div>
<div class="line"><span class="lineno"> 82</span> <span class="keywordtype">double</span> first = R * (k1 * <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/cos.html">std::cos</a>(t) + l * k * <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/cos.html">std::cos</a>(k1 * t / k));</div>
<div class="line"><span class="lineno"> 83</span> <span class="keywordtype">double</span> second = R * (k1 * <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/sin.html">std::sin</a>(t) - l * k * <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/sin.html">std::sin</a>(k1 * t / k));</div>
<div class="line"><span class="lineno"> 82</span> <span class="keywordtype">double</span> first = R * (k1 * std::cos(t) + l * k * std::cos(k1 * t / k));</div>
<div class="line"><span class="lineno"> 83</span> <span class="keywordtype">double</span> second = R * (k1 * std::sin(t) - l * k * std::sin(k1 * t / k));</div>
<div class="line"><span class="lineno"> 84</span> points[0][step].first = first;</div>
<div class="line"><span class="lineno"> 85</span> points[0][step].second = second;</div>
<div class="line"><span class="lineno"> 86</span> }</div>
<div class="line"><span class="lineno"> 87</span>}</div>
<div class="ttc" id="acos_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/cos.html">std::cos</a></div><div class="ttdeci">T cos(T... args)</div></div>
<div class="ttc" id="asin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/sin.html">std::sin</a></div><div class="ttdeci">T sin(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="../../da/dd3/namespacespirograph_aeca22dbe4563358960e907a40cd3e1ac_cgraph.svg" width="276" height="86"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div><!-- fragment -->
</div>
</div>
<a id="a8e83a64e8443fff1e5ffdc1c299c1e99" name="a8e83a64e8443fff1e5ffdc1c299c1e99"></a>
@@ -227,19 +239,21 @@ Here is the call graph for this function:</div>
</div><div class="memdoc">
<p>Test function to save resulting points to a CSV file. </p>
<p class="definition">Definition at line <a class="el" href="../../da/d77/spirograph_8cpp_source.html#l00093">93</a> of file <a class="el" href="../../da/d77/spirograph_8cpp_source.html">spirograph.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 93</span> {</div>
<div class="line"><span class="lineno"> 94</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> N = 500;</div>
<div class="line"><span class="lineno"> 95</span> <span class="keywordtype">double</span> l = 0.3, k = 0.75, rot = 10.;</div>
<div class="line"><span class="lineno"> 96</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_stringstream.html">std::stringstream</a> fname;</div>
<div class="line"><span class="lineno"> 97</span> fname &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(3) &lt;&lt; <span class="stringliteral">&quot;spirograph_&quot;</span> &lt;&lt; l &lt;&lt; <span class="stringliteral">&quot;_&quot;</span> &lt;&lt; k &lt;&lt; <span class="stringliteral">&quot;_&quot;</span> &lt;&lt; rot</div>
<div class="line"><span class="lineno"> 96</span> std::stringstream fname;</div>
<div class="line"><span class="lineno"> 97</span> fname &lt;&lt; std::setw(3) &lt;&lt; <span class="stringliteral">&quot;spirograph_&quot;</span> &lt;&lt; l &lt;&lt; <span class="stringliteral">&quot;_&quot;</span> &lt;&lt; k &lt;&lt; <span class="stringliteral">&quot;_&quot;</span> &lt;&lt; rot</div>
<div class="line"><span class="lineno"> 98</span> &lt;&lt; <span class="stringliteral">&quot;.csv&quot;</span>;</div>
<div class="line"><span class="lineno"> 99</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ofstream.html">std::ofstream</a> fp(fname.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html">str</a>());</div>
<div class="line"><span class="lineno"> 99</span> std::ofstream fp(fname.str());</div>
<div class="line"><span class="lineno"> 100</span> <span class="keywordflow">if</span> (!fp.is_open()) {</div>
<div class="line"><span class="lineno"> 101</span> perror(fname.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html">str</a>().c_str());</div>
<div class="line"><span class="lineno"> 101</span> perror(fname.str().c_str());</div>
<div class="line"><span class="lineno"> 102</span> exit(EXIT_FAILURE);</div>
<div class="line"><span class="lineno"> 103</span> }</div>
<div class="line"><span class="lineno"> 104</span> </div>
<div class="line"><span class="lineno"> 105</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;std::pair&lt;double, double&gt;</a>, N&gt; points;</div>
<div class="line"><span class="lineno"> 105</span> std::array&lt;std::pair&lt;double, double&gt;, N&gt; points;</div>
<div class="line"><span class="lineno"> 106</span> </div>
<div class="line"><span class="lineno"> 107</span> <a class="code hl_namespace" href="../../da/dd3/namespacespirograph.html">spirograph</a>(&amp;points, l, k, rot);</div>
<div class="line"><span class="lineno"> 108</span> </div>
@@ -252,18 +266,8 @@ Here is the call graph for this function:</div>
<div class="line"><span class="lineno"> 115</span> </div>
<div class="line"><span class="lineno"> 116</span> fp.close();</div>
<div class="line"><span class="lineno"> 117</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_ofstream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ofstream.html">std::ofstream</a></div></div>
<div class="ttc" id="abasic_stringstream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_stringstream.html">std::stringstream</a></div></div>
<div class="ttc" id="anamespacespirograph_html"><div class="ttname"><a href="../../da/dd3/namespacespirograph.html">spirograph</a></div></div>
<div class="ttc" id="asetw_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a></div><div class="ttdeci">T setw(T... args)</div></div>
<div class="ttc" id="astr_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html">std::stringstream::str</a></div><div class="ttdeci">T str(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="../../da/dd3/namespacespirograph_a8e83a64e8443fff1e5ffdc1c299c1e99_cgraph.svg" width="322" height="184"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->

View File

@@ -1,11 +0,0 @@
<map id="spirograph::test" name="spirograph::test">
<area shape="rect" id="Node000001" title="Test function to save resulting points to a CSV file." alt="" coords="5,80,117,106"/>
<area shape="rect" id="Node000002" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ofstream/close.html#" title=" " alt="" coords="172,5,309,31"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="86,77,164,40,179,34,180,39,166,45,88,82"/>
<area shape="rect" id="Node000003" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ofstream/is_open.html#" title=" " alt="" coords="165,55,316,80"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="117,82,149,78,150,83,118,88"/>
<area shape="rect" id="Node000004" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/manip/setw.html#" title=" " alt="" coords="203,104,278,130"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="118,98,188,107,188,113,117,103"/>
<area shape="rect" id="Node000005" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_stringstream/str.html#" title=" " alt="" coords="169,153,312,179"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="89,104,166,140,181,145,179,150,164,145,86,109"/>
</map>

View File

@@ -1 +0,0 @@
bbddb3e33b1c20b2af3fb7bbd3570179

View File

@@ -1,119 +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 12.1.2 (20240928.0832)
-->
<!-- Title: spirograph::test Pages: 1 -->
<svg width="241pt" height="138pt"
viewBox="0.00 0.00 241.00 138.25" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 134.25)">
<title>spirograph::test</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Test function to save resulting points to a CSV file.">
<polygon fill="#999999" stroke="#666666" points="83.5,-74.25 0,-74.25 0,-55 83.5,-55 83.5,-74.25"/>
<text text-anchor="middle" x="41.75" y="-60.75" font-family="Helvetica,sans-Serif" font-size="10.00">spirograph::test</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_ofstream/close.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="227.75,-130.25 124.75,-130.25 124.75,-111 227.75,-111 227.75,-130.25"/>
<text text-anchor="middle" x="176.25" y="-116.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::ofstream::close</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M61.01,-74.62C76.34,-82.78 98.98,-94.28 119.5,-102.62 123.1,-104.09 126.86,-105.51 130.66,-106.88"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="129.33,-110.12 139.92,-110.07 131.61,-103.51 129.33,-110.12"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_ofstream/is_open.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="233,-93.25 119.5,-93.25 119.5,-74 233,-74 233,-93.25"/>
<text text-anchor="middle" x="176.25" y="-79.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::ofstream::is_open</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M83.95,-70.53C91.68,-71.64 99.94,-72.83 108.22,-74.01"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="107.58,-77.46 117.97,-75.41 108.57,-70.53 107.58,-77.46"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_Node000004"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/manip/setw.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="204.5,-56.25 148,-56.25 148,-37 204.5,-37 204.5,-56.25"/>
<text text-anchor="middle" x="176.25" y="-42.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::setw</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M83.95,-59.03C100.86,-56.73 120.33,-54.09 136.93,-51.83"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="136.96,-55.36 146.4,-50.54 136.02,-48.42 136.96,-55.36"/>
</a>
</g>
</g>
<!-- Node5 -->
<g id="Node000005" class="node">
<title>Node5</title>
<g id="a_Node000005"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="229.62,-19.25 122.88,-19.25 122.88,0 229.62,0 229.62,-19.25"/>
<text text-anchor="middle" x="176.25" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::stringstream::str</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge4_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M61.66,-54.61C77,-46.71 99.31,-35.71 119.5,-27.62 123.1,-26.18 126.87,-24.77 130.67,-23.41"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="131.62,-26.79 139.95,-20.23 129.35,-20.17 131.62,-26.79"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -1,93 +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 12.1.2 (20240928.0832)
-->
<!-- Title: spirograph::test Pages: 1 -->
<svg width="241pt" height="138pt"
viewBox="0.00 0.00 241.00 138.25" 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 134.25)">
<title>spirograph::test</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Test function to save resulting points to a CSV file.">
<polygon fill="#999999" stroke="#666666" points="83.5,-74.25 0,-74.25 0,-55 83.5,-55 83.5,-74.25"/>
<text text-anchor="middle" x="41.75" y="-60.75" font-family="Helvetica,sans-Serif" font-size="10.00">spirograph::test</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_ofstream/close.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="227.75,-130.25 124.75,-130.25 124.75,-111 227.75,-111 227.75,-130.25"/>
<text text-anchor="middle" x="176.25" y="-116.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::ofstream::close</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M61.01,-74.62C76.34,-82.78 98.98,-94.28 119.5,-102.62 123.1,-104.09 126.86,-105.51 130.66,-106.88"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="129.33,-110.12 139.92,-110.07 131.61,-103.51 129.33,-110.12"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_ofstream/is_open.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="233,-93.25 119.5,-93.25 119.5,-74 233,-74 233,-93.25"/>
<text text-anchor="middle" x="176.25" y="-79.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::ofstream::is_open</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M83.95,-70.53C91.68,-71.64 99.94,-72.83 108.22,-74.01"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="107.58,-77.46 117.97,-75.41 108.57,-70.53 107.58,-77.46"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_Node000004"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/manip/setw.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="204.5,-56.25 148,-56.25 148,-37 204.5,-37 204.5,-56.25"/>
<text text-anchor="middle" x="176.25" y="-42.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::setw</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M83.95,-59.03C100.86,-56.73 120.33,-54.09 136.93,-51.83"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="136.96,-55.36 146.4,-50.54 136.02,-48.42 136.96,-55.36"/>
</a>
</g>
</g>
<!-- Node5 -->
<g id="Node000005" class="node">
<title>Node5</title>
<g id="a_Node000005"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="229.62,-19.25 122.88,-19.25 122.88,0 229.62,0 229.62,-19.25"/>
<text text-anchor="middle" x="176.25" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::stringstream::str</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge4_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M61.66,-54.61C77,-46.71 99.31,-35.71 119.5,-27.62 123.1,-26.18 126.87,-24.77 130.67,-23.41"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="131.62,-26.79 139.95,-20.23 129.35,-20.17 131.62,-26.79"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -1,7 +0,0 @@
<map id="spirograph::spirograph" name="spirograph::spirograph">
<area shape="rect" id="Node000001" title=" " alt="" coords="5,31,155,56"/>
<area shape="rect" id="Node000002" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/numeric/math/cos.html#" title=" " alt="" coords="203,5,271,31"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="155,29,186,24,187,29,156,34"/>
<area shape="rect" id="Node000003" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/numeric/math/sin.html#" title=" " alt="" coords="205,55,269,80"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="156,52,190,58,189,63,155,58"/>
</map>

View File

@@ -1 +0,0 @@
b842218c4ccc3ef0692aeef90d31b548

View File

@@ -1,83 +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 12.1.2 (20240928.0832)
-->
<!-- Title: spirograph::spirograph Pages: 1 -->
<svg width="207pt" height="64pt"
viewBox="0.00 0.00 207.25 64.25" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 60.25)">
<title>spirograph::spirograph</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title=" ">
<polygon fill="#999999" stroke="#666666" points="112,-37.25 0,-37.25 0,-18 112,-18 112,-37.25"/>
<text text-anchor="middle" x="56" y="-23.75" font-family="Helvetica,sans-Serif" font-size="10.00">spirograph::spirograph</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/numeric/math/cos.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="199.25,-56.25 148,-56.25 148,-37 199.25,-37 199.25,-56.25"/>
<text text-anchor="middle" x="173.62" y="-42.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::cos</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M112.44,-36.74C120.51,-38.06 128.63,-39.4 136.19,-40.64"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="135.58,-44.08 146.01,-42.25 136.71,-37.18 135.58,-44.08"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/numeric/math/sin.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="197.75,-19.25 149.5,-19.25 149.5,0 197.75,0 197.75,-19.25"/>
<text text-anchor="middle" x="173.62" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::sin</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M112.44,-18.99C121.16,-17.64 129.96,-16.27 138.03,-15.01"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="138.41,-18.49 147.75,-13.5 137.33,-11.58 138.41,-18.49"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -1,57 +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 12.1.2 (20240928.0832)
-->
<!-- Title: spirograph::spirograph Pages: 1 -->
<svg width="207pt" height="64pt"
viewBox="0.00 0.00 207.25 64.25" 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 60.25)">
<title>spirograph::spirograph</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title=" ">
<polygon fill="#999999" stroke="#666666" points="112,-37.25 0,-37.25 0,-18 112,-18 112,-37.25"/>
<text text-anchor="middle" x="56" y="-23.75" font-family="Helvetica,sans-Serif" font-size="10.00">spirograph::spirograph</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/numeric/math/cos.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="199.25,-56.25 148,-56.25 148,-37 199.25,-37 199.25,-56.25"/>
<text text-anchor="middle" x="173.62" y="-42.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::cos</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M112.44,-36.74C120.51,-38.06 128.63,-39.4 136.19,-40.64"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="135.58,-44.08 146.01,-42.25 136.71,-37.18 135.58,-44.08"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/numeric/math/sin.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="197.75,-19.25 149.5,-19.25 149.5,0 197.75,0 197.75,-19.25"/>
<text text-anchor="middle" x="173.62" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::sin</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M112.44,-18.99C121.16,-17.64 129.96,-16.27 138.03,-15.01"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="138.41,-18.49 147.75,-13.5 137.33,-11.58 138.41,-18.49"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB