Files
C-Plus-Plus/da/d41/uint128__t_8hpp_source.html
2025-09-01 02:25:37 +00:00

1016 lines
165 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- 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.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TheAlgorithms/C++: ciphers/uint128_t.hpp 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="../../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.14.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('../../',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</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">
$(function(){initNavTree('da/d41/uint128__t_8hpp_source.html','../../',''); });
</script>
<div id="container">
<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">uint128_t.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../da/d41/uint128__t_8hpp.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="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;algorithm&gt;</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;cstdint&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &lt;ostream&gt;</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &lt;string&gt;</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;utility&gt;</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#ifdef _MSC_VER</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;intrin.h&gt;</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#ifndef CIPHERS_UINT128_T_HPP_</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="../../da/d41/uint128__t_8hpp.html#acce684d03a24f9c13a9ed36de6d24a57"> 21</a></span><span class="preprocessor">#define CIPHERS_UINT128_T_HPP_</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="keyword">class </span><a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>;</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="keyword">template</span> &lt;&gt;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="../../d2/dd4/structstd_1_1is__integral_3_01uint128__t_01_4.html"> 25</a></span><span class="keyword">struct </span>std::is_integral&lt;<a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>&gt; : std::true_type {};</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="keyword">template</span> &lt;&gt;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="../../d2/dfc/structstd_1_1is__arithmetic_3_01uint128__t_01_4.html"> 27</a></span><span class="keyword">struct </span>std::is_arithmetic&lt;<a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>&gt; : std::true_type {};</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="keyword">template</span> &lt;&gt;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="../../d5/d25/structstd_1_1is__unsigned_3_01uint128__t_01_4.html"> 29</a></span><span class="keyword">struct </span>std::is_unsigned&lt;<a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>&gt; : std::true_type {};</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span></div>
<div class="foldopen" id="foldopen00038" data-start="{" data-end="}">
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="../../da/d41/uint128__t_8hpp.html#a3ff77262ffd6743df5b808d41382a6f3"> 38</a></span>std::string <a class="code hl_function" href="../../da/d41/uint128__t_8hpp.html#a3ff77262ffd6743df5b808d41382a6f3">add</a>(<span class="keyword">const</span> std::string &amp;first, <span class="keyword">const</span> std::string &amp;second) {</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> std::string third;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> int16_t sum = 0, carry = 0;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">for</span> (int32_t i = <span class="keyword">static_cast&lt;</span>int32_t<span class="keyword">&gt;</span>(first.size()) - 1,</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> j = <span class="keyword">static_cast&lt;</span>int32_t<span class="keyword">&gt;</span>(second.size()) - 1;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> i &gt;= 0 || j &gt;= 0; --i, --j) {</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> sum = ((i &gt;= 0 ? first[i] - <span class="charliteral">&#39;0&#39;</span> : 0) + (j &gt;= 0 ? second[j] - <span class="charliteral">&#39;0&#39;</span> : 0) +</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> carry);</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> carry = sum / 10;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> sum %= 10;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> third.push_back(sum + <span class="charliteral">&#39;0&#39;</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">if</span> (carry) {</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> third.push_back(<span class="charliteral">&#39;1&#39;</span>);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> }</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> std::reverse(third.begin(), third.end());</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">return</span> third;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span>}</div>
</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span></div>
<div class="foldopen" id="foldopen00060" data-start="{" data-end="};">
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html"> 60</a></span><span class="keyword">class </span>uint128_t {</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> uint64_t f{}, s{}; </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span></div>
<div class="foldopen" id="foldopen00070" data-start="{" data-end="}">
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a857a3c69c1e775a1bd3935c2bfbb02df"> 70</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a857a3c69c1e775a1bd3935c2bfbb02df">__get_integer_from_string</a>(<span class="keyword">const</span> std::string &amp;str) {</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> this-&gt;f = this-&gt;s = 0;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keywordflow">if</span> (str.size() &gt; 1 &amp;&amp; str[1] == <span class="charliteral">&#39;x&#39;</span>) { <span class="comment">// if hexadecimal</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = 2; i &lt; str.size(); ++i) {</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> *<span class="keyword">this</span> *= 16LL;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordflow">if</span> (str[i] &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; str[i] &lt;= <span class="charliteral">&#39;9&#39;</span>) {</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> *<span class="keyword">this</span> += (str[i] - <span class="charliteral">&#39;0&#39;</span>);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str[i] &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; str[i] &lt;= <span class="charliteral">&#39;F&#39;</span>) {</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> *<span class="keyword">this</span> += (str[i] - <span class="charliteral">&#39;A&#39;</span> + 10);</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str[i] &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; str[i] &lt;= <span class="charliteral">&#39;f&#39;</span>) {</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> *<span class="keyword">this</span> += (str[i] - <span class="charliteral">&#39;a&#39;</span> + 10);</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> }</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> }</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> } <span class="keywordflow">else</span> { <span class="comment">// if decimal</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;x : str) {</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> *<span class="keyword">this</span> *= 10LL;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> *<span class="keyword">this</span> += (x - <span class="charliteral">&#39;0&#39;</span>);</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> }</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> }</div>
</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#adce2432b148fe18179a5ea272f4eb040"> 101</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#adce2432b148fe18179a5ea272f4eb040">uint128_t</a>(T low) : s(low) {}</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span></div>
<div class="foldopen" id="foldopen00107" data-start="{" data-end="}">
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a0b6612186d8f678452e011d08ee1f5ac"> 107</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a0b6612186d8f678452e011d08ee1f5ac">uint128_t</a>(<span class="keyword">const</span> std::string &amp;str) {</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a857a3c69c1e775a1bd3935c2bfbb02df">__get_integer_from_string</a>(str);</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> }</div>
</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a95ac8be8f414fcbce09301b912f5079d"> 116</a></span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a95ac8be8f414fcbce09301b912f5079d">uint128_t</a>(<span class="keyword">const</span> uint64_t high, <span class="keyword">const</span> uint64_t low) : f(high), s(low) {}</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a60bf2739c93bb1cd41654fd60c76ae6b"> 122</a></span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a60bf2739c93bb1cd41654fd60c76ae6b">uint128_t</a>(<span class="keyword">const</span> uint128_t &amp;num) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a7d56143b2e291e8087188192533d2e3c"> 128</a></span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a7d56143b2e291e8087188192533d2e3c">uint128_t</a>(uint128_t &amp;&amp;num) noexcept : f(num.f), s(num.s) {}</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a4147188abcdcdb12c61bfbe4e4c0a363"> 133</a></span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a4147188abcdcdb12c61bfbe4e4c0a363">~uint128_t</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span></div>
<div class="foldopen" id="foldopen00140" data-start="{" data-end="}">
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#af139bb6e630f1a61919f180978611cd2"> 140</a></span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#af139bb6e630f1a61919f180978611cd2">_lez</a>() {</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="preprocessor">#ifndef _MSC_VER</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keywordflow">if</span> (f) {</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keywordflow">return</span> __builtin_clzll(f);</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> }</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keywordflow">return</span> 64 + __builtin_clzll(s);</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> r = 0;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> _BitScanForward64(&amp;r, f);</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">if</span> (r == 64) {</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> l = 0;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> _BitScanForward64(&amp;l, s);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">return</span> 64 + l;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> }</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="keywordflow">return</span> r;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> }</div>
</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span></div>
<div class="foldopen" id="foldopen00163" data-start="{" data-end="}">
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a7d2285a8a6e20b77f82f1f0351afe76e"> 163</a></span> <span class="keyword">inline</span> uint32_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a7d2285a8a6e20b77f82f1f0351afe76e">_trz</a>() {</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="preprocessor">#ifndef _MSC_VER</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">if</span> (f) {</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keywordflow">return</span> __builtin_ctzll(f);</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="keywordflow">return</span> 64 + __builtin_ctzll(s);</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> r = 0;</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> _BitScanReverse64(&amp;r, s);</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keywordflow">if</span> (r == 64) {</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> l = 0;</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> _BitScanReverse64(&amp;l, f);</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keywordflow">return</span> 64 + l;</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> }</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="keywordflow">return</span> r;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> }</div>
</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a6d45302022ef7f5195458f41b8aedb6e"> 185</a></span> <span class="keyword">inline</span> <span class="keyword">explicit</span> <span class="keyword">operator</span> bool()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (f || s); }</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span></div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00194" data-start="{" data-end="}">
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a75767cb2b6fd47ecb1f721755fdc7639"> 194</a></span> <span class="keyword">inline</span> <span class="keyword">explicit</span> <span class="keyword">operator</span> T()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(s);</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> }</div>
</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#aa69e1064c0b0b1df1c61acd2ea04fabd"> 202</a></span> <span class="keyword">inline</span> uint64_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#aa69e1064c0b0b1df1c61acd2ea04fabd">lower</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> s; }</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a1ee2f1ffbd9984faad34883eb45e9705"> 208</a></span> <span class="keyword">inline</span> uint64_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a1ee2f1ffbd9984faad34883eb45e9705">upper</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> f; }</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00218" data-start="{" data-end="}">
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#ac924cc09bbb919532dc42f1f93f6f544"> 218</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#ac924cc09bbb919532dc42f1f93f6f544">operator=</a>(<span class="keyword">const</span> T &amp;p) {</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> this-&gt;s = p;</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> }</div>
</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span></div>
<div class="foldopen" id="foldopen00228" data-start="{" data-end="}">
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#abae08ef3c1d6dc512edd68ca68327f74"> 228</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#abae08ef3c1d6dc512edd68ca68327f74">operator=</a>(<span class="keyword">const</span> std::string &amp;p) {</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> this-&gt;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a857a3c69c1e775a1bd3935c2bfbb02df">__get_integer_from_string</a>(p);</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> }</div>
</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#ab6aa4d14ed52c7c640468c45350da0c5"> 238</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#ab6aa4d14ed52c7c640468c45350da0c5">operator=</a>(<span class="keyword">const</span> uint128_t &amp;p) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a3c4a7e775a0820196fc08303bbeed44a"> 243</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a3c4a7e775a0820196fc08303bbeed44a">operator=</a>(uint128_t &amp;&amp;p) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span></div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00253" data-start="{" data-end="}">
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a5133f854a93efe47fd1f0f6a9589856d"> 253</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a5133f854a93efe47fd1f0f6a9589856d">operator+</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="keywordflow">return</span> uint128_t(f + (p + s &lt; s), p + s);</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> }</div>
</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span></div>
<div class="foldopen" id="foldopen00262" data-start="{" data-end="}">
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a0fd125cc2b7702370a4aefa740d57606"> 262</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a0fd125cc2b7702370a4aefa740d57606">operator+</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordflow">return</span> uint128_t(f + (p.s + s &lt; s) + p.f, p.s + s);</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> }</div>
</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span></div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00274" data-start="{" data-end="}">
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a55a3f122c4d982c60c2eb9fc09b9e004"> 274</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a55a3f122c4d982c60c2eb9fc09b9e004">operator+=</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keywordtype">bool</span> app = p + s &lt; s;</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> this-&gt;f += app;</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> this-&gt;s += p;</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> }</div>
</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span></div>
<div class="foldopen" id="foldopen00286" data-start="{" data-end="}">
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a9704e6a4d32750461bff663e40e537cb"> 286</a></span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a9704e6a4d32750461bff663e40e537cb">operator+=</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <span class="keywordtype">bool</span> app = p.s + s &lt; s;</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> f = f + app + p.f;</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> s = p.s + s;</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> }</div>
</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span></div>
<div class="foldopen" id="foldopen00297" data-start="{" data-end="}">
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#ac8d293d20cdf65c48d8d1e0ba7034c8e"> 297</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#ac8d293d20cdf65c48d8d1e0ba7034c8e">operator++</a>() {</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> *<span class="keyword">this</span> += 1;</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> }</div>
</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span></div>
<div class="foldopen" id="foldopen00306" data-start="{" data-end="}">
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#af71990a1fba93a5528ddb1e6662bffd6"> 306</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#af71990a1fba93a5528ddb1e6662bffd6">operator++</a>(<span class="keywordtype">int</span>) {</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> ++*<span class="keyword">this</span>;</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> }</div>
</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span></div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00319" data-start="{" data-end="}">
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a6824700c9c732a4200e7493fe7ed0eec"> 319</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a6824700c9c732a4200e7493fe7ed0eec">operator-</a>(<span class="keyword">const</span> T &amp;p) {</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="keywordtype">bool</span> app = p &gt; s;</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> <span class="keywordflow">return</span> uint128_t(f - app, s - p);</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> }</div>
</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span></div>
<div class="foldopen" id="foldopen00329" data-start="{" data-end="}">
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a81a568510e6d0b0950133dd9fc37fc0c"> 329</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a81a568510e6d0b0950133dd9fc37fc0c">operator-</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> <span class="keywordtype">bool</span> app = p.s &gt; s;</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> <span class="keywordflow">return</span> uint128_t(f - p.f - app, s - p.s);</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> }</div>
</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span></div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a07945fe010079a35e18812636d5c70c3"> 338</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a07945fe010079a35e18812636d5c70c3">operator-</a>() { <span class="keywordflow">return</span> ~*<span class="keyword">this</span> + uint128_t(1); }</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span></div>
<div class="foldopen" id="foldopen00344" data-start="{" data-end="}">
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a1d390c6ea5450680dcaff341235f0fed"> 344</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a1d390c6ea5450680dcaff341235f0fed">operator--</a>() {</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> *<span class="keyword">this</span> -= 1;</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> }</div>
</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span></div>
<div class="foldopen" id="foldopen00353" data-start="{" data-end="}">
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a6f2499a97b351adf66a14778ccbb13d1"> 353</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a6f2499a97b351adf66a14778ccbb13d1">operator--</a>(<span class="keywordtype">int</span>) {</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> --*<span class="keyword">this</span>;</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> }</div>
</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span></div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00366" data-start="{" data-end="}">
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a0a4623fae71566dfcf2e742c8c156798"> 366</a></span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a0a4623fae71566dfcf2e742c8c156798">operator-=</a>(<span class="keyword">const</span> T &amp;p) {</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> <span class="keywordtype">bool</span> app = p &gt; s;</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> f -= app;</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> s -= p;</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> }</div>
</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span></div>
<div class="foldopen" id="foldopen00378" data-start="{" data-end="}">
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#abea727c69c2acd74ffe21464199d27c8"> 378</a></span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#abea727c69c2acd74ffe21464199d27c8">operator-=</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="keywordtype">bool</span> app = p.s &gt; s;</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> f = f - p.f - app;</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> s = s - p.s;</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> }</div>
</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span></div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00393" data-start="{" data-end="}">
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a488e65a14d4c32a096011aa4725cdb30"> 393</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a488e65a14d4c32a096011aa4725cdb30">operator*</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <span class="keywordflow">return</span> *<span class="keyword">this</span> * uint128_t(p);</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> }</div>
</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span></div>
<div class="foldopen" id="foldopen00402" data-start="{" data-end="}">
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a44e472cf685cac6edc5172eac2e66860"> 402</a></span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a44e472cf685cac6edc5172eac2e66860">operator*</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> uint64_t f_first = s &gt;&gt; 32, f_second = s &amp; 0xFFFFFFFF,</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> s_first = p.s &gt;&gt; 32, s_second = p.s &amp; 0xFFFFFFFF;</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> uint64_t fi = f_first * s_first, se = f_first * s_second,</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> th = s_first * f_second, fo = s_second * f_second;</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> uint64_t tmp = ((se &amp; 0xFFFFFFFF) &lt;&lt; 32), tmp2 = (th &amp; 0xFFFFFFFF)</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> &lt;&lt; 32;</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <span class="keywordtype">int</span> cc = (tmp + tmp2 &lt; tmp);</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> tmp += tmp2;</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> cc += (tmp + fo &lt; tmp);</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> uint64_t carry = fi + (se &gt;&gt; 32) + (th &gt;&gt; 32);</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> <span class="keywordflow">return</span> uint128_t(this-&gt;f * p.s + this-&gt;s * p.f + carry + cc, tmp + fo);</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> }</div>
</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span></div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00424" data-start="{" data-end="}">
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a3016b71f92a0c7e090a7c5b6a3935092"> 424</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a3016b71f92a0c7e090a7c5b6a3935092">operator*=</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> *<span class="keyword">this</span> *= uint128_t(p);</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> }</div>
</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span></div>
<div class="foldopen" id="foldopen00434" data-start="{" data-end="}">
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a96fc7c2df4325bb1a0c22b566bcc6295"> 434</a></span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a96fc7c2df4325bb1a0c22b566bcc6295">operator*=</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> uint64_t f_first = s &gt;&gt; 32, f_second = s &amp; 0xFFFFFFFF,</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> s_first = p.s &gt;&gt; 32, s_second = p.s &amp; 0xFFFFFFFF;</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> uint64_t fi = f_first * s_first, se = f_first * s_second,</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> th = s_first * f_second, fo = s_second * f_second;</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> uint64_t tmp = (se &lt;&lt; 32), tmp2 = (th &lt;&lt; 32);</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="keywordtype">int</span> cc = (tmp + tmp2 &lt; tmp);</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> tmp += tmp2;</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> cc += (tmp + fo &lt; tmp);</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> uint64_t carry = fi + (se &gt;&gt; 32) + (th &gt;&gt; 32);</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> f = this-&gt;f * p.s + this-&gt;s * p.f + carry + cc;</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> s = tmp + fo;</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> }</div>
</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span></div>
<div class="foldopen" id="foldopen00455" data-start="{" data-end="}">
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a8bf81f7f5f5c98f197822ec88e106c6c"> 455</a></span> std::pair&lt;uint128_t, uint128_t&gt; <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a8bf81f7f5f5c98f197822ec88e106c6c">divide</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="keywordflow">if</span> (*<span class="keyword">this</span> &lt; p) { <span class="comment">// if this is less than divisor</span></div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="keywordflow">return</span> {uint128_t(0), *<span class="keyword">this</span>};</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*<span class="keyword">this</span> == p) { <span class="comment">// if this is equal to divisor</span></div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="keywordflow">return</span> {uint128_t(1), uint128_t(0)};</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> }</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> uint128_t tmp = p, tmp2 = *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> uint16_t left = tmp.<a class="code hl_function" href="../../db/d9a/classuint128__t.html#af139bb6e630f1a61919f180978611cd2">_lez</a>() - <a class="code hl_function" href="../../db/d9a/classuint128__t.html#af139bb6e630f1a61919f180978611cd2">_lez</a>();</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> tmp &lt;&lt;= left;</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> uint128_t quotient(0);</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> uint128_t zero(0);</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> <span class="keywordflow">while</span> (tmp2 &gt;= p) {</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> uint16_t shf = tmp2._lez() - tmp.<a class="code hl_function" href="../../db/d9a/classuint128__t.html#af139bb6e630f1a61919f180978611cd2">_lez</a>();</div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> <span class="keywordflow">if</span> (shf) {</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> tmp &gt;&gt;= shf;</div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> quotient &lt;&lt;= shf;</div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> left -= shf;</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> }</div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <span class="keywordflow">if</span> (tmp2 &lt; tmp) {</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> tmp &gt;&gt;= 1;</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> quotient &lt;&lt;= 1;</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> --left;</div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> }</div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> tmp2 -= tmp;</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> ++quotient;</div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> }</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> <span class="keywordflow">return</span> {quotient &lt;&lt; left, tmp2};</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> }</div>
</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span></div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a3072a7e43da3600c345c81bc80c957ee"> 489</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a3072a7e43da3600c345c81bc80c957ee">operator/</a>(<span class="keyword">const</span> uint128_t &amp;p) { <span class="keywordflow">return</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a8bf81f7f5f5c98f197822ec88e106c6c">divide</a>(p).first; }</div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span></div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00499" data-start="{" data-end="}">
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#aed49b24b99293ae6b14ac9850f5deb94"> 499</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#aed49b24b99293ae6b14ac9850f5deb94">operator/</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> uint128_t tmp = *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> tmp /= uint128_t(0, p);</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <span class="keywordflow">return</span> tmp;</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> }</div>
</div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span></div>
<div class="foldopen" id="foldopen00510" data-start="{" data-end="}">
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a300ed88fe2054788cc6e0b6a8fdf66db"> 510</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a300ed88fe2054788cc6e0b6a8fdf66db">operator/=</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> *<span class="keyword">this</span> = <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a8bf81f7f5f5c98f197822ec88e106c6c">divide</a>(p).first;</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> }</div>
</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span></div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00523" data-start="{" data-end="}">
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#aaacb9fda7adcfee224f1b09124c0438b"> 523</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#aaacb9fda7adcfee224f1b09124c0438b">operator/=</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> *<span class="keyword">this</span> /= uint128_t(0, p);</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> }</div>
</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span></div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#abfc6a8765039cacc829a5cd386b5a066"> 533</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#abfc6a8765039cacc829a5cd386b5a066">operator%</a>(<span class="keyword">const</span> uint128_t &amp;p) { <span class="keywordflow">return</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a8bf81f7f5f5c98f197822ec88e106c6c">divide</a>(p).second; }</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span></div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00543" data-start="{" data-end="}">
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#add9938b97fc66560cec2d32e8c83eaad"> 543</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#add9938b97fc66560cec2d32e8c83eaad">operator%</a>(<span class="keyword">const</span> T &amp;p) {</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> <span class="keywordflow">return</span> *<span class="keyword">this</span> % uint128_t(p);</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> }</div>
</div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span></div>
<div class="foldopen" id="foldopen00552" data-start="{" data-end="}">
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a279209a184db20a7ffc8e687fdb05be2"> 552</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a279209a184db20a7ffc8e687fdb05be2">operator%=</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> *<span class="keyword">this</span> = <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a8bf81f7f5f5c98f197822ec88e106c6c">divide</a>(p).second;</div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> }</div>
</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span></div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00565" data-start="{" data-end="}">
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a0500a90bcde5a8254750c361eed9bc40"> 565</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a0500a90bcde5a8254750c361eed9bc40">operator%=</a>(<span class="keyword">const</span> T &amp;p) {</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> *<span class="keyword">this</span> %= uint128_t(p);</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> }</div>
</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span></div>
<div class="foldopen" id="foldopen00575" data-start="{" data-end="}">
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#ac9a4365fb9ea5e2d2c751258f09168a4"> 575</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#ac9a4365fb9ea5e2d2c751258f09168a4">operator&lt;</a>(<span class="keyword">const</span> uint128_t &amp;other) {</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> <span class="keywordflow">return</span> f &lt; other.f || (f == other.f &amp;&amp; s &lt; other.s);</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> }</div>
</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span></div>
<div class="foldopen" id="foldopen00584" data-start="{" data-end="}">
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a16eb351c1d0ed3b89c771c63808e035a"> 584</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a16eb351c1d0ed3b89c771c63808e035a">operator&lt;=</a>(<span class="keyword">const</span> uint128_t &amp;other) {</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> <span class="keywordflow">return</span> f &lt; other.f || (f == other.f &amp;&amp; s &lt;= other.s);</div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> }</div>
</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span></div>
<div class="foldopen" id="foldopen00593" data-start="{" data-end="}">
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a291d2787d668e8d06a7cfab0f5144440"> 593</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a291d2787d668e8d06a7cfab0f5144440">operator&gt;</a>(<span class="keyword">const</span> uint128_t &amp;other) {</div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> <span class="keywordflow">return</span> f &gt; other.f || (f == other.f &amp;&amp; s &gt; other.s);</div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> }</div>
</div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span></div>
<div class="foldopen" id="foldopen00602" data-start="{" data-end="}">
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#ae7af1bad048942eeabc092d8e0194292"> 602</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#ae7af1bad048942eeabc092d8e0194292">operator&gt;=</a>(<span class="keyword">const</span> uint128_t &amp;other) {</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> <span class="keywordflow">return</span> (f &gt; other.f) || (f == other.f &amp;&amp; s &gt;= other.s);</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> }</div>
</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span></div>
<div class="foldopen" id="foldopen00611" data-start="{" data-end="}">
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a7b1de5584505c189664d0edd306e979e"> 611</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a7b1de5584505c189664d0edd306e979e">operator==</a>(<span class="keyword">const</span> uint128_t &amp;other) {</div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span> <span class="keywordflow">return</span> f == other.f &amp;&amp; s == other.s;</div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span> }</div>
</div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span></div>
<div class="foldopen" id="foldopen00620" data-start="{" data-end="}">
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#ab3359b104bbb5a31c11c2027387c4b4e"> 620</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#ab3359b104bbb5a31c11c2027387c4b4e">operator!=</a>(<span class="keyword">const</span> uint128_t &amp;other) {</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> <span class="keywordflow">return</span> f != other.f || s != other.s;</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> }</div>
</div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span></div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#ad24d6fe1fe63f415fee806b377dfa47d"> 628</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#ad24d6fe1fe63f415fee806b377dfa47d">operator!</a>() { <span class="keywordflow">return</span> !f &amp;&amp; !s; }</div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span></div>
<div class="foldopen" id="foldopen00635" data-start="{" data-end="}">
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#ab07413c67d205e406abf3a9f554d59e1"> 635</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#ab07413c67d205e406abf3a9f554d59e1">operator&amp;&amp;</a>(<span class="keyword">const</span> uint128_t &amp;b) {</div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> <span class="keywordflow">return</span> (s || f) &amp;&amp; (b.s || b.f);</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> }</div>
</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span></div>
<div class="foldopen" id="foldopen00644" data-start="{" data-end="}">
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a312509b1c5b3ae5eaaf342f2ba131d03"> 644</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a312509b1c5b3ae5eaaf342f2ba131d03">operator||</a>(<span class="keyword">const</span> uint128_t &amp;b) {</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> <span class="keywordflow">return</span> (s || f) || (b.s || b.f);</div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span> }</div>
</div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span></div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#af4ce01d81a0369218f7d46567d136733"> 652</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#af4ce01d81a0369218f7d46567d136733">operator()</a>() { <span class="keywordflow">return</span> s || f; }</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span></div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00662" data-start="{" data-end="}">
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a56f579c802a6cc16f31e43af274453dc"> 662</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a56f579c802a6cc16f31e43af274453dc">operator&lt;</a>(<span class="keyword">const</span> T other) {</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> <span class="keywordflow">return</span> *<span class="keyword">this</span> &lt; uint128_t(other);</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> }</div>
</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span></div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00674" data-start="{" data-end="}">
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a4562c218813c8705bccb25d8786ca77c"> 674</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a4562c218813c8705bccb25d8786ca77c">operator&lt;=</a>(<span class="keyword">const</span> T other) {</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> <span class="keywordflow">return</span> *<span class="keyword">this</span> &lt;= uint128_t(other);</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> }</div>
</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span></div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00686" data-start="{" data-end="}">
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a82c63f8c18b8d2d255b8b0d373ac7d6e"> 686</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a82c63f8c18b8d2d255b8b0d373ac7d6e">operator&gt;</a>(<span class="keyword">const</span> T other) {</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span> <span class="keywordflow">return</span> *<span class="keyword">this</span> &gt; uint128_t(other);</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> }</div>
</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span></div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00698" data-start="{" data-end="}">
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a334bc710f411f108a0243b24ac73b481"> 698</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a334bc710f411f108a0243b24ac73b481">operator&gt;=</a>(<span class="keyword">const</span> T other) {</div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span> <span class="keywordflow">return</span> *<span class="keyword">this</span> &gt;= uint128_t(other);</div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span> }</div>
</div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno"> 701</span></div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00710" data-start="{" data-end="}">
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a7a95e3accdac1cb38c9767f9550c0896"> 710</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a7a95e3accdac1cb38c9767f9550c0896">operator==</a>(<span class="keyword">const</span> T other) {</div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span> <span class="keywordflow">return</span> *<span class="keyword">this</span> == uint128_t(other);</div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span> }</div>
</div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span></div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00722" data-start="{" data-end="}">
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a7737bb30a5480c7286546b911d82e696"> 722</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a7737bb30a5480c7286546b911d82e696">operator!=</a>(<span class="keyword">const</span> T other) {</div>
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno"> 723</span> <span class="keywordflow">return</span> *<span class="keyword">this</span> != uint128_t(other);</div>
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno"> 724</span> }</div>
</div>
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno"> 725</span></div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00734" data-start="{" data-end="}">
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a0ad881643c707f6ae3c5de3822a8cb8a"> 734</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a0ad881643c707f6ae3c5de3822a8cb8a">operator&amp;&amp;</a>(<span class="keyword">const</span> T b) {</div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"> 735</span> <span class="keywordflow">return</span> (f || s) &amp;&amp; b;</div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno"> 736</span> }</div>
</div>
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno"> 737</span></div>
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno"> 745</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno"> 746</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00747" data-start="{" data-end="}">
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a817b66c32268cf46244058a50db99503"> 747</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a817b66c32268cf46244058a50db99503">operator||</a>(<span class="keyword">const</span> T b) {</div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno"> 748</span> <span class="keywordflow">return</span> (f || s) || b;</div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"> 749</span> }</div>
</div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"> 750</span></div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a43eafd4824666b413befe5edbc90ae7f"> 755</a></span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a43eafd4824666b413befe5edbc90ae7f">operator~</a>() { <span class="keywordflow">return</span> uint128_t(~this-&gt;f, ~this-&gt;s); }</div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span></div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00765" data-start="{" data-end="}">
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a16e7e1211ba6c27e9a229d97fb0d9190"> 765</a></span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a16e7e1211ba6c27e9a229d97fb0d9190">operator&lt;&lt;</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</span> <span class="keywordflow">if</span> (!p) {</div>
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"> 767</span> <span class="keywordflow">return</span> uint128_t(f, s);</div>
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno"> 768</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (p &gt;= 64 &amp;&amp; p &lt;= 128) {</div>
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"> 769</span> <span class="keywordflow">return</span> uint128_t((this-&gt;s &lt;&lt; (p - 64)), 0);</div>
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"> 770</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (p &lt; 64 &amp;&amp; p &gt; 0) {</div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> <span class="keywordflow">return</span> uint128_t((this-&gt;f &lt;&lt; p) + ((this-&gt;s &gt;&gt; (64 - p))),</div>
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"> 772</span> this-&gt;s &lt;&lt; p);</div>
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"> 773</span> }</div>
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"> 774</span> <span class="keywordflow">return</span> uint128_t(0);</div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno"> 775</span> }</div>
</div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</span></div>
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno"> 783</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno"> 784</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00785" data-start="{" data-end="}">
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#aa5b93187b1d199071f204b9987d5d16a"> 785</a></span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#aa5b93187b1d199071f204b9987d5d16a">operator&lt;&lt;=</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno"> 786</span> <span class="keywordflow">if</span> (p) {</div>
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno"> 787</span> <span class="keywordflow">if</span> (p &gt;= 64 &amp;&amp; p &lt;= 128) {</div>
<div class="line"><a id="l00788" name="l00788"></a><span class="lineno"> 788</span> this-&gt;f = (this-&gt;s &lt;&lt; (p - 64));</div>
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno"> 789</span> this-&gt;s = 0;</div>
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno"> 790</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno"> 791</span> f = ((this-&gt;f &lt;&lt; p) + (this-&gt;s &gt;&gt; (64 - p)));</div>
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"> 792</span> s = (this-&gt;s &lt;&lt; p);</div>
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno"> 793</span> }</div>
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno"> 794</span> }</div>
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno"> 795</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno"> 796</span> }</div>
</div>
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno"> 797</span></div>
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"> 804</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00806" data-start="{" data-end="}">
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a6f24982de03e0e3d04ac7f8ae30f5848"> 806</a></span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a6f24982de03e0e3d04ac7f8ae30f5848">operator&gt;&gt;</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span> <span class="keywordflow">if</span> (!p) {</div>
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span> <span class="keywordflow">return</span> uint128_t(this-&gt;f, this-&gt;s);</div>
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"> 809</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (p &gt;= 64 &amp;&amp; p &lt;= 128) {</div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno"> 810</span> <span class="keywordflow">return</span> uint128_t(0, (this-&gt;f &gt;&gt; (p - 64)));</div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"> 811</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (p &lt; 64 &amp;&amp; p &gt; 0) {</div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"> 812</span> <span class="keywordflow">return</span> uint128_t((this-&gt;f &gt;&gt; p),</div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"> 813</span> (this-&gt;s &gt;&gt; p) + (this-&gt;f &lt;&lt; (64 - p)));</div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"> 814</span> }</div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"> 815</span> <span class="keywordflow">return</span> uint128_t(0);</div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span> }</div>
</div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"> 817</span></div>
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"> 824</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno"> 825</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00826" data-start="{" data-end="}">
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a0ae5fc0c2bcc9138b32d7582466aa7f9"> 826</a></span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a0ae5fc0c2bcc9138b32d7582466aa7f9">operator&gt;&gt;=</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno"> 827</span> <span class="keywordflow">if</span> (p) {</div>
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno"> 828</span> <span class="keywordflow">if</span> (p &gt;= 64) {</div>
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno"> 829</span> f = 0;</div>
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno"> 830</span> s = (this-&gt;f &gt;&gt; (p - 64));</div>
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno"> 831</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno"> 832</span> s = (this-&gt;s &gt;&gt; p) + (this-&gt;f &lt;&lt; (64 - p));</div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"> 833</span> f = (this-&gt;f &gt;&gt; p);</div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno"> 834</span> }</div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span> }</div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno"> 836</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno"> 837</span> }</div>
</div>
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno"> 838</span></div>
<div class="foldopen" id="foldopen00844" data-start="{" data-end="}">
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#ad1717d3a38391258befa413b7e2b9244"> 844</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#ad1717d3a38391258befa413b7e2b9244">operator&amp;</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno"> 845</span> <span class="keywordflow">return</span> uint128_t(this-&gt;f &amp; p.f, this-&gt;s &amp; p.s);</div>
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno"> 846</span> }</div>
</div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno"> 847</span></div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"> 855</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00856" data-start="{" data-end="}">
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a9fa81ef0d54ecb9050d0be4249358ca4"> 856</a></span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a9fa81ef0d54ecb9050d0be4249358ca4">operator&amp;</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"> 857</span> uint128_t tmp = *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> <span class="keywordflow">return</span> tmp &amp; uint128_t(p);</div>
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno"> 859</span> }</div>
</div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno"> 860</span></div>
<div class="foldopen" id="foldopen00866" data-start="{" data-end="}">
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#ac7d55ed3bac01075b9cd11cc59508050"> 866</a></span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#ac7d55ed3bac01075b9cd11cc59508050">operator&amp;=</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"> 867</span> this-&gt;f &amp;= p.f;</div>
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno"> 868</span> this-&gt;s &amp;= p.s;</div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno"> 869</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno"> 870</span> }</div>
</div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno"> 871</span></div>
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"> 878</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00880" data-start="{" data-end="}">
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a225146042c6456a3c5595645870ca640"> 880</a></span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a225146042c6456a3c5595645870ca640">operator&amp;=</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span> *<span class="keyword">this</span> &amp;= uint128_t(p);</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"> 882</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"> 883</span> }</div>
</div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno"> 884</span></div>
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno"> 891</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"> 892</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00893" data-start="{" data-end="}">
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a3facc74d6d078604fe2c80d0abfd3304"> 893</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a3facc74d6d078604fe2c80d0abfd3304">operator|</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span> <span class="keywordflow">return</span> uint128_t(p | s);</div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno"> 895</span> }</div>
</div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno"> 896</span></div>
<div class="foldopen" id="foldopen00902" data-start="{" data-end="}">
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a2fda65032d9fdbaf9142a6322654dbdd"> 902</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a2fda65032d9fdbaf9142a6322654dbdd">operator|</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno"> 903</span> <span class="keywordflow">return</span> uint128_t(this-&gt;f | p.f, this-&gt;s | p.s);</div>
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno"> 904</span> }</div>
</div>
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno"> 905</span></div>
<div class="foldopen" id="foldopen00911" data-start="{" data-end="}">
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#ab88330f3c4f3bcde75dc5ef9eb8eb39d"> 911</a></span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#ab88330f3c4f3bcde75dc5ef9eb8eb39d">operator|=</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"> 912</span> f |= p.f;</div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"> 913</span> s |= p.s;</div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno"> 914</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno"> 915</span> }</div>
</div>
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno"> 916</span></div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"> 923</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno"> 924</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00925" data-start="{" data-end="}">
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a6110aa452a6d114fcd2f42d2bc106fee"> 925</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a6110aa452a6d114fcd2f42d2bc106fee">operator|=</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno"> 926</span> s |= p.s;</div>
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno"> 927</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno"> 928</span> }</div>
</div>
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno"> 929</span></div>
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno"> 936</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno"> 937</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00938" data-start="{" data-end="}">
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#aab88fd72d0370b12e4a257e378b82d37"> 938</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#aab88fd72d0370b12e4a257e378b82d37">operator^</a>(<span class="keyword">const</span> T p) {</div>
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno"> 939</span> <span class="keywordflow">return</span> uint128_t(this-&gt;f, this-&gt;s ^ p);</div>
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno"> 940</span> }</div>
</div>
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno"> 941</span></div>
<div class="foldopen" id="foldopen00947" data-start="{" data-end="}">
<div class="line"><a id="l00947" name="l00947"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a9487ed06019d846add5dc8874e41eb8b"> 947</a></span> <span class="keyword">inline</span> uint128_t <a class="code hl_function" href="../../db/d9a/classuint128__t.html#a9487ed06019d846add5dc8874e41eb8b">operator^</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00948" name="l00948"></a><span class="lineno"> 948</span> <span class="keywordflow">return</span> uint128_t(this-&gt;f ^ p.f, this-&gt;s ^ p.s);</div>
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno"> 949</span> }</div>
</div>
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno"> 950</span></div>
<div class="foldopen" id="foldopen00956" data-start="{" data-end="}">
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#ae3f0ef8a3f68d9cbd9d99e772f1a947a"> 956</a></span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#ae3f0ef8a3f68d9cbd9d99e772f1a947a">operator^=</a>(<span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno"> 957</span> f ^= p.f;</div>
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno"> 958</span> s ^= p.s;</div>
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno"> 959</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno"> 960</span> }</div>
</div>
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno"> 961</span></div>
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno"> 968</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno"> 969</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="foldopen" id="foldopen00970" data-start="{" data-end="}">
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a44fd2a4a4cc1d13f93ac222db5a46c67"> 970</a></span> <span class="keyword">inline</span> uint128_t &amp;<a class="code hl_function" href="../../db/d9a/classuint128__t.html#a44fd2a4a4cc1d13f93ac222db5a46c67">operator^=</a>(<span class="keyword">const</span> T &amp;p) {</div>
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno"> 971</span> s ^= p;</div>
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno"> 972</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"> 973</span> }</div>
</div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno"> 974</span></div>
<div class="foldopen" id="foldopen00984" data-start="{" data-end="}">
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno"><a class="line" href="../../db/d9a/classuint128__t.html#a5f2ace9fdcd459f74f8e43ef30a2a953"> 984</a></span> <span class="keyword">friend</span> std::ostream &amp;<a class="code hl_friend" href="../../db/d9a/classuint128__t.html#a5f2ace9fdcd459f74f8e43ef30a2a953">operator&lt;&lt;</a>(std::ostream &amp;op, <span class="keyword">const</span> uint128_t &amp;p) {</div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"> 985</span> <span class="keywordflow">if</span> (!p.f) {</div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"> 986</span> op &lt;&lt; p.s;</div>
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno"> 987</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno"> 988</span> std::string out = <span class="stringliteral">&quot;0&quot;</span>, p_2 = <span class="stringliteral">&quot;1&quot;</span>;</div>
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno"> 989</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 64; ++i) {</div>
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno"> 990</span> <span class="keywordflow">if</span> (p.s &amp; (1LL &lt;&lt; i)) {</div>
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno"> 991</span> out = <a class="code hl_function" href="../../da/d41/uint128__t_8hpp.html#a3ff77262ffd6743df5b808d41382a6f3">add</a>(out, p_2);</div>
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno"> 992</span> }</div>
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"> 993</span> p_2 = <a class="code hl_function" href="../../da/d41/uint128__t_8hpp.html#a3ff77262ffd6743df5b808d41382a6f3">add</a>(p_2, p_2);</div>
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno"> 994</span> }</div>
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno"> 995</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 64; ++i) {</div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno"> 996</span> <span class="keywordflow">if</span> (p.f &amp; (1LL &lt;&lt; i)) {</div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"> 997</span> out = <a class="code hl_function" href="../../da/d41/uint128__t_8hpp.html#a3ff77262ffd6743df5b808d41382a6f3">add</a>(out, p_2);</div>
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno"> 998</span> }</div>
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno"> 999</span> p_2 = <a class="code hl_function" href="../../da/d41/uint128__t_8hpp.html#a3ff77262ffd6743df5b808d41382a6f3">add</a>(p_2, p_2);</div>
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span> }</div>
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span> op &lt;&lt; out;</div>
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span> }</div>
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"> 1003</span> <span class="keywordflow">return</span> op;</div>
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span> }</div>
</div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span>};</div>
</div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> </div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span><span class="comment">// Arithmetic operators</span></div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span><span class="keyword">inline</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> operator+(<span class="keyword">const</span> T &amp;p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) + q;</div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span>}</div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span> </div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span><span class="keyword">inline</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> operator-(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) - q;</div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span>}</div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> </div>
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span><span class="keyword">inline</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> operator*(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) * q;</div>
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span>}</div>
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span> </div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span><span class="keyword">inline</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> operator/(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) / q;</div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span>}</div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span> </div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span><span class="keyword">inline</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> operator%(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) % q;</div>
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span>}</div>
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span> </div>
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"> 1038</span><span class="comment">// Bitwise operators</span></div>
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span><span class="keyword">inline</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> operator&amp;(<span class="keyword">const</span> T &amp;p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) &amp; q;</div>
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"> 1043</span>}</div>
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span> </div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span><span class="keyword">inline</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> operator|(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) | q;</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span>}</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span> </div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span><span class="keyword">inline</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> operator^(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) ^ q;</div>
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span>}</div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span> </div>
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span><span class="comment">// Boolean operators</span></div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span><span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&amp;&amp;(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) &amp;&amp; q;</div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span>}</div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span> </div>
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span><span class="keyword">inline</span> <span class="keywordtype">bool</span> operator||(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) || q;</div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span>}</div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span> </div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span><span class="comment">// Comparison operators</span></div>
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"> 1071</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"> 1073</span><span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) == q;</div>
<div class="line"><a id="l01075" name="l01075"></a><span class="lineno"> 1075</span>}</div>
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"> 1076</span> </div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span><span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) != q;</div>
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span>}</div>
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span> </div>
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"> 1083</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01085" name="l01085"></a><span class="lineno"> 1085</span><span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&lt;(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01086" name="l01086"></a><span class="lineno"> 1086</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) &lt; q;</div>
<div class="line"><a id="l01087" name="l01087"></a><span class="lineno"> 1087</span>}</div>
<div class="line"><a id="l01088" name="l01088"></a><span class="lineno"> 1088</span> </div>
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"> 1089</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span><span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&lt;=(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) &lt;= q;</div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span>}</div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span> </div>
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"> 1097</span><span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&gt;(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"> 1098</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) &gt; q;</div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span>}</div>
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span> </div>
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"> 1101</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span> std::is_integral&lt;T&gt;::value, T&gt;::type&gt;</div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span><span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&gt;=(<span class="keyword">const</span> T p, <span class="keyword">const</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a> &amp;q) {</div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../db/d9a/classuint128__t.html">uint128_t</a>(p) &gt;= q;</div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span>}</div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span> </div>
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span><span class="preprocessor">#endif </span><span class="comment">// CIPHERS_UINT128_T_HPP_</span></div>
<div class="ttc" id="aclassuint128__t_html"><div class="ttname"><a href="../../db/d9a/classuint128__t.html">uint128_t</a></div><div class="ttdoc">class for 128-bit unsigned integer</div><div class="ttdef"><b>Definition</b> <a href="#l00060">uint128_t.hpp:60</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a0500a90bcde5a8254750c361eed9bc40"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a0500a90bcde5a8254750c361eed9bc40">uint128_t::operator%=</a></div><div class="ttdeci">uint128_t &amp; operator%=(const T &amp;p)</div><div class="ttdoc">operator %= for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00565">uint128_t.hpp:565</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a07945fe010079a35e18812636d5c70c3"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a07945fe010079a35e18812636d5c70c3">uint128_t::operator-</a></div><div class="ttdeci">uint128_t operator-()</div><div class="ttdoc">operator - using twos complement</div><div class="ttdef"><b>Definition</b> <a href="#l00338">uint128_t.hpp:338</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a0a4623fae71566dfcf2e742c8c156798"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a0a4623fae71566dfcf2e742c8c156798">uint128_t::operator-=</a></div><div class="ttdeci">uint128_t &amp; operator-=(const T &amp;p)</div><div class="ttdoc">operator -= for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00366">uint128_t.hpp:366</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a0ad881643c707f6ae3c5de3822a8cb8a"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a0ad881643c707f6ae3c5de3822a8cb8a">uint128_t::operator&amp;&amp;</a></div><div class="ttdeci">bool operator&amp;&amp;(const T b)</div><div class="ttdoc">operator &amp;&amp; for other types</div><div class="ttdef"><b>Definition</b> <a href="#l00734">uint128_t.hpp:734</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a0ae5fc0c2bcc9138b32d7582466aa7f9"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a0ae5fc0c2bcc9138b32d7582466aa7f9">uint128_t::operator&gt;&gt;=</a></div><div class="ttdeci">uint128_t &amp; operator&gt;&gt;=(const T p)</div><div class="ttdoc">operator &gt;&gt;= for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00826">uint128_t.hpp:826</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a0b6612186d8f678452e011d08ee1f5ac"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a0b6612186d8f678452e011d08ee1f5ac">uint128_t::uint128_t</a></div><div class="ttdeci">uint128_t(const std::string &amp;str)</div><div class="ttdoc">Parameterized constructor.</div><div class="ttdef"><b>Definition</b> <a href="#l00107">uint128_t.hpp:107</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a0fd125cc2b7702370a4aefa740d57606"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a0fd125cc2b7702370a4aefa740d57606">uint128_t::operator+</a></div><div class="ttdeci">uint128_t operator+(const uint128_t &amp;p)</div><div class="ttdoc">operator + for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00262">uint128_t.hpp:262</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a16e7e1211ba6c27e9a229d97fb0d9190"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a16e7e1211ba6c27e9a229d97fb0d9190">uint128_t::operator&lt;&lt;</a></div><div class="ttdeci">uint128_t operator&lt;&lt;(const T p)</div><div class="ttdoc">operator &lt;&lt; for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00765">uint128_t.hpp:765</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a16eb351c1d0ed3b89c771c63808e035a"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a16eb351c1d0ed3b89c771c63808e035a">uint128_t::operator&lt;=</a></div><div class="ttdeci">bool operator&lt;=(const uint128_t &amp;other)</div><div class="ttdoc">operator &lt;= for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00584">uint128_t.hpp:584</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a1d390c6ea5450680dcaff341235f0fed"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a1d390c6ea5450680dcaff341235f0fed">uint128_t::operator--</a></div><div class="ttdeci">uint128_t &amp; operator--()</div><div class="ttdoc">operator (pre-decrement)</div><div class="ttdef"><b>Definition</b> <a href="#l00344">uint128_t.hpp:344</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a1ee2f1ffbd9984faad34883eb45e9705"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a1ee2f1ffbd9984faad34883eb45e9705">uint128_t::upper</a></div><div class="ttdeci">uint64_t upper() const</div><div class="ttdoc">returns upper 64-bit integer part</div><div class="ttdef"><b>Definition</b> <a href="#l00208">uint128_t.hpp:208</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a225146042c6456a3c5595645870ca640"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a225146042c6456a3c5595645870ca640">uint128_t::operator&amp;=</a></div><div class="ttdeci">uint128_t &amp; operator&amp;=(const T p)</div><div class="ttdoc">operator &amp;= for other types (bitwise operator)</div><div class="ttdef"><b>Definition</b> <a href="#l00880">uint128_t.hpp:880</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a279209a184db20a7ffc8e687fdb05be2"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a279209a184db20a7ffc8e687fdb05be2">uint128_t::operator%=</a></div><div class="ttdeci">uint128_t &amp; operator%=(const uint128_t &amp;p)</div><div class="ttdoc">operator %= for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00552">uint128_t.hpp:552</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a291d2787d668e8d06a7cfab0f5144440"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a291d2787d668e8d06a7cfab0f5144440">uint128_t::operator&gt;</a></div><div class="ttdeci">bool operator&gt;(const uint128_t &amp;other)</div><div class="ttdoc">operator &gt; for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00593">uint128_t.hpp:593</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a2fda65032d9fdbaf9142a6322654dbdd"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a2fda65032d9fdbaf9142a6322654dbdd">uint128_t::operator|</a></div><div class="ttdeci">uint128_t operator|(const uint128_t &amp;p)</div><div class="ttdoc">operator | for uint128_t (bitwise operator)</div><div class="ttdef"><b>Definition</b> <a href="#l00902">uint128_t.hpp:902</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a300ed88fe2054788cc6e0b6a8fdf66db"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a300ed88fe2054788cc6e0b6a8fdf66db">uint128_t::operator/=</a></div><div class="ttdeci">uint128_t &amp; operator/=(const uint128_t &amp;p)</div><div class="ttdoc">operator /= for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00510">uint128_t.hpp:510</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a3016b71f92a0c7e090a7c5b6a3935092"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a3016b71f92a0c7e090a7c5b6a3935092">uint128_t::operator*=</a></div><div class="ttdeci">uint128_t &amp; operator*=(const T p)</div><div class="ttdoc">operator *= for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00424">uint128_t.hpp:424</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a3072a7e43da3600c345c81bc80c957ee"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a3072a7e43da3600c345c81bc80c957ee">uint128_t::operator/</a></div><div class="ttdeci">uint128_t operator/(const uint128_t &amp;p)</div><div class="ttdoc">operator / for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00489">uint128_t.hpp:489</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a312509b1c5b3ae5eaaf342f2ba131d03"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a312509b1c5b3ae5eaaf342f2ba131d03">uint128_t::operator||</a></div><div class="ttdeci">bool operator||(const uint128_t &amp;b)</div><div class="ttdoc">operator || for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00644">uint128_t.hpp:644</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a334bc710f411f108a0243b24ac73b481"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a334bc710f411f108a0243b24ac73b481">uint128_t::operator&gt;=</a></div><div class="ttdeci">bool operator&gt;=(const T other)</div><div class="ttdoc">operator &gt;= for other types</div><div class="ttdef"><b>Definition</b> <a href="#l00698">uint128_t.hpp:698</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a3c4a7e775a0820196fc08303bbeed44a"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a3c4a7e775a0820196fc08303bbeed44a">uint128_t::operator=</a></div><div class="ttdeci">uint128_t &amp; operator=(uint128_t &amp;&amp;p)=default</div><div class="ttdoc">Move assignment operator.</div></div>
<div class="ttc" id="aclassuint128__t_html_a3facc74d6d078604fe2c80d0abfd3304"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a3facc74d6d078604fe2c80d0abfd3304">uint128_t::operator|</a></div><div class="ttdeci">uint128_t operator|(const T p)</div><div class="ttdoc">operator | for other types (bitwise operator)</div><div class="ttdef"><b>Definition</b> <a href="#l00893">uint128_t.hpp:893</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a4147188abcdcdb12c61bfbe4e4c0a363"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a4147188abcdcdb12c61bfbe4e4c0a363">uint128_t::~uint128_t</a></div><div class="ttdeci">~uint128_t()=default</div><div class="ttdoc">Destructor for uint128_t.</div></div>
<div class="ttc" id="aclassuint128__t_html_a43eafd4824666b413befe5edbc90ae7f"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a43eafd4824666b413befe5edbc90ae7f">uint128_t::operator~</a></div><div class="ttdeci">uint128_t operator~()</div><div class="ttdoc">operator ~ for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00755">uint128_t.hpp:755</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a44e472cf685cac6edc5172eac2e66860"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a44e472cf685cac6edc5172eac2e66860">uint128_t::operator*</a></div><div class="ttdeci">uint128_t operator*(const uint128_t &amp;p)</div><div class="ttdoc">operator * for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00402">uint128_t.hpp:402</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a44fd2a4a4cc1d13f93ac222db5a46c67"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a44fd2a4a4cc1d13f93ac222db5a46c67">uint128_t::operator^=</a></div><div class="ttdeci">uint128_t &amp; operator^=(const T &amp;p)</div><div class="ttdoc">operator ^= for other types (bitwise operator)</div><div class="ttdef"><b>Definition</b> <a href="#l00970">uint128_t.hpp:970</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a4562c218813c8705bccb25d8786ca77c"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a4562c218813c8705bccb25d8786ca77c">uint128_t::operator&lt;=</a></div><div class="ttdeci">bool operator&lt;=(const T other)</div><div class="ttdoc">operator &lt;= for other types</div><div class="ttdef"><b>Definition</b> <a href="#l00674">uint128_t.hpp:674</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a488e65a14d4c32a096011aa4725cdb30"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a488e65a14d4c32a096011aa4725cdb30">uint128_t::operator*</a></div><div class="ttdeci">uint128_t operator*(const T p)</div><div class="ttdoc">operator * for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00393">uint128_t.hpp:393</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a5133f854a93efe47fd1f0f6a9589856d"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a5133f854a93efe47fd1f0f6a9589856d">uint128_t::operator+</a></div><div class="ttdeci">uint128_t operator+(const T p)</div><div class="ttdoc">operator + for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00253">uint128_t.hpp:253</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a55a3f122c4d982c60c2eb9fc09b9e004"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a55a3f122c4d982c60c2eb9fc09b9e004">uint128_t::operator+=</a></div><div class="ttdeci">uint128_t &amp; operator+=(const T p)</div><div class="ttdoc">operator += for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00274">uint128_t.hpp:274</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a56f579c802a6cc16f31e43af274453dc"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a56f579c802a6cc16f31e43af274453dc">uint128_t::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const T other)</div><div class="ttdoc">operator &lt; for other types</div><div class="ttdef"><b>Definition</b> <a href="#l00662">uint128_t.hpp:662</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a5f2ace9fdcd459f74f8e43ef30a2a953"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a5f2ace9fdcd459f74f8e43ef30a2a953">uint128_t::operator&lt;&lt;</a></div><div class="ttdeci">friend std::ostream &amp; operator&lt;&lt;(std::ostream &amp;op, const uint128_t &amp;p)</div><div class="ttdoc">operator &lt;&lt; for printing uint128_t integer</div><div class="ttdef"><b>Definition</b> <a href="#l00984">uint128_t.hpp:984</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a60bf2739c93bb1cd41654fd60c76ae6b"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a60bf2739c93bb1cd41654fd60c76ae6b">uint128_t::uint128_t</a></div><div class="ttdeci">uint128_t(const uint128_t &amp;num)=default</div><div class="ttdoc">Copy constructor.</div></div>
<div class="ttc" id="aclassuint128__t_html_a6110aa452a6d114fcd2f42d2bc106fee"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a6110aa452a6d114fcd2f42d2bc106fee">uint128_t::operator|=</a></div><div class="ttdeci">uint128_t &amp; operator|=(const T p)</div><div class="ttdoc">operator |= for other types (bitwise operator)</div><div class="ttdef"><b>Definition</b> <a href="#l00925">uint128_t.hpp:925</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a6824700c9c732a4200e7493fe7ed0eec"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a6824700c9c732a4200e7493fe7ed0eec">uint128_t::operator-</a></div><div class="ttdeci">uint128_t operator-(const T &amp;p)</div><div class="ttdoc">operator - for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00319">uint128_t.hpp:319</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a6f24982de03e0e3d04ac7f8ae30f5848"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a6f24982de03e0e3d04ac7f8ae30f5848">uint128_t::operator&gt;&gt;</a></div><div class="ttdeci">uint128_t operator&gt;&gt;(const T p)</div><div class="ttdoc">operator &gt;&gt; for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00806">uint128_t.hpp:806</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a6f2499a97b351adf66a14778ccbb13d1"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a6f2499a97b351adf66a14778ccbb13d1">uint128_t::operator--</a></div><div class="ttdeci">uint128_t operator--(int)</div><div class="ttdoc">operator (post-decrement)</div><div class="ttdef"><b>Definition</b> <a href="#l00353">uint128_t.hpp:353</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a7737bb30a5480c7286546b911d82e696"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a7737bb30a5480c7286546b911d82e696">uint128_t::operator!=</a></div><div class="ttdeci">bool operator!=(const T other)</div><div class="ttdoc">operator != for other types</div><div class="ttdef"><b>Definition</b> <a href="#l00722">uint128_t.hpp:722</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a7a95e3accdac1cb38c9767f9550c0896"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a7a95e3accdac1cb38c9767f9550c0896">uint128_t::operator==</a></div><div class="ttdeci">bool operator==(const T other)</div><div class="ttdoc">operator == for other types</div><div class="ttdef"><b>Definition</b> <a href="#l00710">uint128_t.hpp:710</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a7b1de5584505c189664d0edd306e979e"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a7b1de5584505c189664d0edd306e979e">uint128_t::operator==</a></div><div class="ttdeci">bool operator==(const uint128_t &amp;other)</div><div class="ttdoc">operator == for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00611">uint128_t.hpp:611</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a7d2285a8a6e20b77f82f1f0351afe76e"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a7d2285a8a6e20b77f82f1f0351afe76e">uint128_t::_trz</a></div><div class="ttdeci">uint32_t _trz()</div><div class="ttdoc">Trailing zeroes in binary.</div><div class="ttdef"><b>Definition</b> <a href="#l00163">uint128_t.hpp:163</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a7d56143b2e291e8087188192533d2e3c"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a7d56143b2e291e8087188192533d2e3c">uint128_t::uint128_t</a></div><div class="ttdeci">uint128_t(uint128_t &amp;&amp;num) noexcept</div><div class="ttdoc">Move constructor.</div><div class="ttdef"><b>Definition</b> <a href="#l00128">uint128_t.hpp:128</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a817b66c32268cf46244058a50db99503"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a817b66c32268cf46244058a50db99503">uint128_t::operator||</a></div><div class="ttdeci">bool operator||(const T b)</div><div class="ttdoc">operator || for other types</div><div class="ttdef"><b>Definition</b> <a href="#l00747">uint128_t.hpp:747</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a81a568510e6d0b0950133dd9fc37fc0c"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a81a568510e6d0b0950133dd9fc37fc0c">uint128_t::operator-</a></div><div class="ttdeci">uint128_t operator-(const uint128_t &amp;p)</div><div class="ttdoc">operator - for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00329">uint128_t.hpp:329</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a82c63f8c18b8d2d255b8b0d373ac7d6e"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a82c63f8c18b8d2d255b8b0d373ac7d6e">uint128_t::operator&gt;</a></div><div class="ttdeci">bool operator&gt;(const T other)</div><div class="ttdoc">operator &gt; for other types</div><div class="ttdef"><b>Definition</b> <a href="#l00686">uint128_t.hpp:686</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a857a3c69c1e775a1bd3935c2bfbb02df"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a857a3c69c1e775a1bd3935c2bfbb02df">uint128_t::__get_integer_from_string</a></div><div class="ttdeci">void __get_integer_from_string(const std::string &amp;str)</div><div class="ttdoc">First and second half of 128 bit number.</div><div class="ttdef"><b>Definition</b> <a href="#l00070">uint128_t.hpp:70</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a8bf81f7f5f5c98f197822ec88e106c6c"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a8bf81f7f5f5c98f197822ec88e106c6c">uint128_t::divide</a></div><div class="ttdeci">std::pair&lt; uint128_t, uint128_t &gt; divide(const uint128_t &amp;p)</div><div class="ttdoc">divide function for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00455">uint128_t.hpp:455</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a9487ed06019d846add5dc8874e41eb8b"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a9487ed06019d846add5dc8874e41eb8b">uint128_t::operator^</a></div><div class="ttdeci">uint128_t operator^(const uint128_t &amp;p)</div><div class="ttdoc">operator ^ for uint128_t (bitwise operator)</div><div class="ttdef"><b>Definition</b> <a href="#l00947">uint128_t.hpp:947</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a95ac8be8f414fcbce09301b912f5079d"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a95ac8be8f414fcbce09301b912f5079d">uint128_t::uint128_t</a></div><div class="ttdeci">uint128_t(const uint64_t high, const uint64_t low)</div><div class="ttdoc">Parameterized constructor.</div><div class="ttdef"><b>Definition</b> <a href="#l00116">uint128_t.hpp:116</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a96fc7c2df4325bb1a0c22b566bcc6295"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a96fc7c2df4325bb1a0c22b566bcc6295">uint128_t::operator*=</a></div><div class="ttdeci">uint128_t &amp; operator*=(const uint128_t &amp;p)</div><div class="ttdoc">operator *= for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00434">uint128_t.hpp:434</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a9704e6a4d32750461bff663e40e537cb"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a9704e6a4d32750461bff663e40e537cb">uint128_t::operator+=</a></div><div class="ttdeci">uint128_t &amp; operator+=(const uint128_t &amp;p)</div><div class="ttdoc">operator += for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00286">uint128_t.hpp:286</a></div></div>
<div class="ttc" id="aclassuint128__t_html_a9fa81ef0d54ecb9050d0be4249358ca4"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#a9fa81ef0d54ecb9050d0be4249358ca4">uint128_t::operator&amp;</a></div><div class="ttdeci">uint128_t operator&amp;(const T p)</div><div class="ttdoc">operator &amp; for other types (bitwise operator)</div><div class="ttdef"><b>Definition</b> <a href="#l00856">uint128_t.hpp:856</a></div></div>
<div class="ttc" id="aclassuint128__t_html_aa5b93187b1d199071f204b9987d5d16a"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#aa5b93187b1d199071f204b9987d5d16a">uint128_t::operator&lt;&lt;=</a></div><div class="ttdeci">uint128_t &amp; operator&lt;&lt;=(const T p)</div><div class="ttdoc">operator &lt;&lt;= for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00785">uint128_t.hpp:785</a></div></div>
<div class="ttc" id="aclassuint128__t_html_aa69e1064c0b0b1df1c61acd2ea04fabd"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#aa69e1064c0b0b1df1c61acd2ea04fabd">uint128_t::lower</a></div><div class="ttdeci">uint64_t lower() const</div><div class="ttdoc">returns lower 64-bit integer part</div><div class="ttdef"><b>Definition</b> <a href="#l00202">uint128_t.hpp:202</a></div></div>
<div class="ttc" id="aclassuint128__t_html_aaacb9fda7adcfee224f1b09124c0438b"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#aaacb9fda7adcfee224f1b09124c0438b">uint128_t::operator/=</a></div><div class="ttdeci">uint128_t &amp; operator/=(const T p)</div><div class="ttdoc">operator /= for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00523">uint128_t.hpp:523</a></div></div>
<div class="ttc" id="aclassuint128__t_html_aab88fd72d0370b12e4a257e378b82d37"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#aab88fd72d0370b12e4a257e378b82d37">uint128_t::operator^</a></div><div class="ttdeci">uint128_t operator^(const T p)</div><div class="ttdoc">operator ^ for other types (bitwise operator)</div><div class="ttdef"><b>Definition</b> <a href="#l00938">uint128_t.hpp:938</a></div></div>
<div class="ttc" id="aclassuint128__t_html_ab07413c67d205e406abf3a9f554d59e1"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#ab07413c67d205e406abf3a9f554d59e1">uint128_t::operator&amp;&amp;</a></div><div class="ttdeci">bool operator&amp;&amp;(const uint128_t &amp;b)</div><div class="ttdoc">operator &amp;&amp; for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00635">uint128_t.hpp:635</a></div></div>
<div class="ttc" id="aclassuint128__t_html_ab3359b104bbb5a31c11c2027387c4b4e"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#ab3359b104bbb5a31c11c2027387c4b4e">uint128_t::operator!=</a></div><div class="ttdeci">bool operator!=(const uint128_t &amp;other)</div><div class="ttdoc">operator != for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00620">uint128_t.hpp:620</a></div></div>
<div class="ttc" id="aclassuint128__t_html_ab6aa4d14ed52c7c640468c45350da0c5"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#ab6aa4d14ed52c7c640468c45350da0c5">uint128_t::operator=</a></div><div class="ttdeci">uint128_t &amp; operator=(const uint128_t &amp;p)=default</div><div class="ttdoc">operator = for uint128_t</div></div>
<div class="ttc" id="aclassuint128__t_html_ab88330f3c4f3bcde75dc5ef9eb8eb39d"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#ab88330f3c4f3bcde75dc5ef9eb8eb39d">uint128_t::operator|=</a></div><div class="ttdeci">uint128_t &amp; operator|=(const uint128_t &amp;p)</div><div class="ttdoc">operator |= for uint128_t (bitwise operator)</div><div class="ttdef"><b>Definition</b> <a href="#l00911">uint128_t.hpp:911</a></div></div>
<div class="ttc" id="aclassuint128__t_html_abae08ef3c1d6dc512edd68ca68327f74"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#abae08ef3c1d6dc512edd68ca68327f74">uint128_t::operator=</a></div><div class="ttdeci">uint128_t &amp; operator=(const std::string &amp;p)</div><div class="ttdoc">operator = for type string</div><div class="ttdef"><b>Definition</b> <a href="#l00228">uint128_t.hpp:228</a></div></div>
<div class="ttc" id="aclassuint128__t_html_abea727c69c2acd74ffe21464199d27c8"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#abea727c69c2acd74ffe21464199d27c8">uint128_t::operator-=</a></div><div class="ttdeci">uint128_t &amp; operator-=(const uint128_t &amp;p)</div><div class="ttdoc">operator -= for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00378">uint128_t.hpp:378</a></div></div>
<div class="ttc" id="aclassuint128__t_html_abfc6a8765039cacc829a5cd386b5a066"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#abfc6a8765039cacc829a5cd386b5a066">uint128_t::operator%</a></div><div class="ttdeci">uint128_t operator%(const uint128_t &amp;p)</div><div class="ttdoc">operator % for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00533">uint128_t.hpp:533</a></div></div>
<div class="ttc" id="aclassuint128__t_html_ac7d55ed3bac01075b9cd11cc59508050"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#ac7d55ed3bac01075b9cd11cc59508050">uint128_t::operator&amp;=</a></div><div class="ttdeci">uint128_t &amp; operator&amp;=(const uint128_t &amp;p)</div><div class="ttdoc">operator &amp;= for uint128_t (bitwise operator)</div><div class="ttdef"><b>Definition</b> <a href="#l00866">uint128_t.hpp:866</a></div></div>
<div class="ttc" id="aclassuint128__t_html_ac8d293d20cdf65c48d8d1e0ba7034c8e"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#ac8d293d20cdf65c48d8d1e0ba7034c8e">uint128_t::operator++</a></div><div class="ttdeci">uint128_t &amp; operator++()</div><div class="ttdoc">pre-increment operator</div><div class="ttdef"><b>Definition</b> <a href="#l00297">uint128_t.hpp:297</a></div></div>
<div class="ttc" id="aclassuint128__t_html_ac924cc09bbb919532dc42f1f93f6f544"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#ac924cc09bbb919532dc42f1f93f6f544">uint128_t::operator=</a></div><div class="ttdeci">uint128_t &amp; operator=(const T &amp;p)</div><div class="ttdoc">operator = for other types</div><div class="ttdef"><b>Definition</b> <a href="#l00218">uint128_t.hpp:218</a></div></div>
<div class="ttc" id="aclassuint128__t_html_ac9a4365fb9ea5e2d2c751258f09168a4"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#ac9a4365fb9ea5e2d2c751258f09168a4">uint128_t::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const uint128_t &amp;other)</div><div class="ttdoc">operator &lt; for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00575">uint128_t.hpp:575</a></div></div>
<div class="ttc" id="aclassuint128__t_html_ad1717d3a38391258befa413b7e2b9244"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#ad1717d3a38391258befa413b7e2b9244">uint128_t::operator&amp;</a></div><div class="ttdeci">uint128_t operator&amp;(const uint128_t &amp;p)</div><div class="ttdoc">operator &amp; for uint128_t (bitwise operator)</div><div class="ttdef"><b>Definition</b> <a href="#l00844">uint128_t.hpp:844</a></div></div>
<div class="ttc" id="aclassuint128__t_html_ad24d6fe1fe63f415fee806b377dfa47d"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#ad24d6fe1fe63f415fee806b377dfa47d">uint128_t::operator!</a></div><div class="ttdeci">bool operator!()</div><div class="ttdoc">operator ! for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00628">uint128_t.hpp:628</a></div></div>
<div class="ttc" id="aclassuint128__t_html_adce2432b148fe18179a5ea272f4eb040"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#adce2432b148fe18179a5ea272f4eb040">uint128_t::uint128_t</a></div><div class="ttdeci">uint128_t(T low)</div><div class="ttdoc">Parameterized constructor.</div><div class="ttdef"><b>Definition</b> <a href="#l00101">uint128_t.hpp:101</a></div></div>
<div class="ttc" id="aclassuint128__t_html_add9938b97fc66560cec2d32e8c83eaad"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#add9938b97fc66560cec2d32e8c83eaad">uint128_t::operator%</a></div><div class="ttdeci">uint128_t operator%(const T &amp;p)</div><div class="ttdoc">operator % for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00543">uint128_t.hpp:543</a></div></div>
<div class="ttc" id="aclassuint128__t_html_ae3f0ef8a3f68d9cbd9d99e772f1a947a"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#ae3f0ef8a3f68d9cbd9d99e772f1a947a">uint128_t::operator^=</a></div><div class="ttdeci">uint128_t &amp; operator^=(const uint128_t &amp;p)</div><div class="ttdoc">operator ^= for uint128_t (bitwise operator)</div><div class="ttdef"><b>Definition</b> <a href="#l00956">uint128_t.hpp:956</a></div></div>
<div class="ttc" id="aclassuint128__t_html_ae7af1bad048942eeabc092d8e0194292"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#ae7af1bad048942eeabc092d8e0194292">uint128_t::operator&gt;=</a></div><div class="ttdeci">bool operator&gt;=(const uint128_t &amp;other)</div><div class="ttdoc">operator &gt;= for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00602">uint128_t.hpp:602</a></div></div>
<div class="ttc" id="aclassuint128__t_html_aed49b24b99293ae6b14ac9850f5deb94"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#aed49b24b99293ae6b14ac9850f5deb94">uint128_t::operator/</a></div><div class="ttdeci">uint128_t operator/(const T p)</div><div class="ttdoc">operator / for uint128_t and other integer types.</div><div class="ttdef"><b>Definition</b> <a href="#l00499">uint128_t.hpp:499</a></div></div>
<div class="ttc" id="aclassuint128__t_html_af139bb6e630f1a61919f180978611cd2"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#af139bb6e630f1a61919f180978611cd2">uint128_t::_lez</a></div><div class="ttdeci">uint32_t _lez()</div><div class="ttdoc">Leading zeroes in binary.</div><div class="ttdef"><b>Definition</b> <a href="#l00140">uint128_t.hpp:140</a></div></div>
<div class="ttc" id="aclassuint128__t_html_af4ce01d81a0369218f7d46567d136733"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#af4ce01d81a0369218f7d46567d136733">uint128_t::operator()</a></div><div class="ttdeci">bool operator()()</div><div class="ttdoc">operator () for uint128_t</div><div class="ttdef"><b>Definition</b> <a href="#l00652">uint128_t.hpp:652</a></div></div>
<div class="ttc" id="aclassuint128__t_html_af71990a1fba93a5528ddb1e6662bffd6"><div class="ttname"><a href="../../db/d9a/classuint128__t.html#af71990a1fba93a5528ddb1e6662bffd6">uint128_t::operator++</a></div><div class="ttdeci">uint128_t operator++(int)</div><div class="ttdoc">post-increment operator</div><div class="ttdef"><b>Definition</b> <a href="#l00306">uint128_t.hpp:306</a></div></div>
<div class="ttc" id="auint128__t_8hpp_html_a3ff77262ffd6743df5b808d41382a6f3"><div class="ttname"><a href="../../da/d41/uint128__t_8hpp.html#a3ff77262ffd6743df5b808d41382a6f3">add</a></div><div class="ttdeci">std::string add(const std::string &amp;first, const std::string &amp;second)</div><div class="ttdoc">Adding two string.</div><div class="ttdef"><b>Definition</b> <a href="#l00038">uint128_t.hpp:38</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="../../dir_4d6e05837bf820fb089a8a8cdf2f42b7.html">ciphers</a></li><li class="navelem"><a href="../../da/d41/uint128__t_8hpp.html">uint128_t.hpp</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.14.0 </li>
</ul>
</div>
</body>
</html>