Files
rippled/Number_8h_source.html
2026-02-04 06:53:36 -08:00

980 lines
186 KiB
HTML
Raw 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.

<!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.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>rippled: Number.h Source File</title>
<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>
<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>
<link href="doxygen.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="projectalign">
<div id="projectname">rippled
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
<!-- 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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_0103a8ad82dcc2c51f5cde661b4b5cb7.html">xrpl</a></li><li class="navelem"><a class="el" href="dir_f534ca90a4985f34ab325acfbcd39b84.html">basics</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">Number.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span> </div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="preprocessor">#include &lt;xrpl/beast/utility/instrumentation.h&gt;</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span> </div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/cstdint.html">cstdint</a>&gt;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/functional.html">functional</a>&gt;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/limits.html">limits</a>&gt;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/optional.html">optional</a>&gt;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/ostream.html">ostream</a>&gt;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;<a class="codeRef" href="http://en.cppreference.com/w/cpp/header/string.html">string</a>&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacexrpl.html">xrpl</a> {</div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="keyword">class </span>Number;</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><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><a class="code hl_function" href="namespacexrpl.html#a35ce7572092b98720a52fa343c6f2fa9">to_string</a>(Number <span class="keyword">const</span>&amp; amount);</div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="keyword">constexpr</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;int&gt;</a></div>
<div class="foldopen" id="foldopen00021" data-start="{" data-end="}">
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="namespacexrpl.html#a8861b5952e8e1912afca157d54a38d78"> 21</a></span><a class="code hl_function" href="namespacexrpl.html#a8861b5952e8e1912afca157d54a38d78">logTen</a>(T value)</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span>{</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="keywordtype">int</span> log = 0;</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keywordflow">while</span> (value &gt;= 10 &amp;&amp; value % 10 == 0)</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> {</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> value /= 10;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> ++log;</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> }</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordflow">if</span> (value == 1)</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keywordflow">return</span> log;</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="keywordflow">return</span> <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::nullopt</a>;</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span>}</div>
</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="keyword">constexpr</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00036" data-start="{" data-end="}">
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="namespacexrpl.html#aa609454f90d5eb85c622b787219d069c"> 36</a></span><a class="code hl_function" href="namespacexrpl.html#aa609454f90d5eb85c622b787219d069c">isPowerOfTen</a>(T value)</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span>{</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacexrpl.html#a8861b5952e8e1912afca157d54a38d78">logTen</a>(value).<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/utility/optional/operator_bool.html">has_value</a>();</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span>}</div>
</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</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="structxrpl_1_1MantissaRange.html"> 70</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structxrpl_1_1MantissaRange.html">MantissaRange</a></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span>{</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="structxrpl_1_1MantissaRange.html#a40179916ebaf305e2ebe5d22aa6740d7"> 72</a></span> <span class="keyword">using </span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">rep</a> = <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a>;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2a0b64e613fbbea29706141a2e1a08ffa5"> 73</a></span> <span class="keyword">enum</span> <a class="code hl_enumeration" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2">mantissa_scale</a> { <a class="code hl_enumvalue" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2a159d6fc6b77bffdac828a75a473aea42">small</a>, <a class="code hl_enumvalue" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2a0b64e613fbbea29706141a2e1a08ffa5">large</a> };</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> </div>
<div class="foldopen" id="foldopen00075" data-start="{" data-end="}">
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="structxrpl_1_1MantissaRange.html#a97dd7200854e70532f806259c5976e80"> 75</a></span> <span class="keyword">explicit</span> <span class="keyword">constexpr</span> <a class="code hl_function" href="structxrpl_1_1MantissaRange.html#a97dd7200854e70532f806259c5976e80">MantissaRange</a>(<a class="code hl_enumeration" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2">mantissa_scale</a> scale_)</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> : <a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a6e5cafa1836416d4069e77a8fb54363c">min</a>(<a class="code hl_function" href="structxrpl_1_1MantissaRange.html#abf6fe863255fa655ce7d55373389c55c">getMin</a>(scale_)), <a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a5605e543c0da8e19ea6f1447b393cc7d">max</a>(<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a6e5cafa1836416d4069e77a8fb54363c">min</a> * 10 - 1), <a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#aea1c72494866d67e120bd23737080a7e">log</a>(<a class="code hl_function" href="namespacexrpl.html#a8861b5952e8e1912afca157d54a38d78">logTen</a>(<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a6e5cafa1836416d4069e77a8fb54363c">min</a>).value_or(-1)), <a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a7647e186ea279480ec4603047e12ae6d">scale</a>(scale_)</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> {</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> }</div>
</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="structxrpl_1_1MantissaRange.html#a6e5cafa1836416d4069e77a8fb54363c"> 80</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">rep</a> <a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a6e5cafa1836416d4069e77a8fb54363c">min</a>;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="structxrpl_1_1MantissaRange.html#a5605e543c0da8e19ea6f1447b393cc7d"> 81</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">rep</a> <a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a5605e543c0da8e19ea6f1447b393cc7d">max</a>;</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="structxrpl_1_1MantissaRange.html#aea1c72494866d67e120bd23737080a7e"> 82</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#aea1c72494866d67e120bd23737080a7e">log</a>;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="structxrpl_1_1MantissaRange.html#a7647e186ea279480ec4603047e12ae6d"> 83</a></span> <a class="code hl_enumeration" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2">mantissa_scale</a> <a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a7647e186ea279480ec4603047e12ae6d">scale</a>;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">rep</a></div>
<div class="foldopen" id="foldopen00087" data-start="{" data-end="}">
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="structxrpl_1_1MantissaRange.html#abf6fe863255fa655ce7d55373389c55c"> 87</a></span> <a class="code hl_function" href="structxrpl_1_1MantissaRange.html#abf6fe863255fa655ce7d55373389c55c">getMin</a>(<a class="code hl_enumeration" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2">mantissa_scale</a> scale_)</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> {</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordflow">switch</span> (scale_)</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> {</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2a159d6fc6b77bffdac828a75a473aea42">small</a>:</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">return</span> 1&#39;000&#39;000&#39;000&#39;000&#39;000ULL;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2a0b64e613fbbea29706141a2e1a08ffa5">large</a>:</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">return</span> 1&#39;000&#39;000&#39;000&#39;000&#39;000&#39;000ULL;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// Since this can never be called outside a non-constexpr</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// context, this throw assures that the build fails if an</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// invalid scale is used.</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">throw</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/error/runtime_error.html">std::runtime_error</a>(<span class="stringliteral">&quot;Unknown mantissa scale&quot;</span>);</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> }</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> }</div>
</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span>};</div>
</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment">// Like std::integral, but only 64-bit integral types.</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="conceptxrpl_1_1Integral64.html"> 106</a></span><span class="keyword">concept </span><a class="code hl_concept" href="conceptxrpl_1_1Integral64.html">Integral64</a> = <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::is_same_v&lt;T, std::int64_t&gt;</a> || <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::is_same_v&lt;T, std::uint64_t&gt;</a>;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="foldopen" id="foldopen00206" data-start="{" data-end="};">
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html"> 206</a></span><span class="keyword">class </span><a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span>{</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a3e899a2315bdca222c4f12e8a244c281"> 208</a></span> <span class="keyword">using </span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">rep</a> = <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::int64_t</a>;</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a67e66cfedbb2ff6c670917e4872da14f"> 209</a></span> <span class="keyword">using </span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> = <a class="code hl_typedef" href="structxrpl_1_1MantissaRange.html#a40179916ebaf305e2ebe5d22aa6740d7">MantissaRange::rep</a>;</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> </div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#ae6da4d1edef20960bc7d37aa0a731fe0"> 211</a></span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classxrpl_1_1Number.html#ae6da4d1edef20960bc7d37aa0a731fe0">negative_</a>{<span class="keyword">false</span>};</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6"> 212</a></span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> <a class="code hl_variable" href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6">mantissa_</a>{0};</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#ac901dca6c4ae9b77298650a82ad606f3"> 213</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="classxrpl_1_1Number.html#ac901dca6c4ae9b77298650a82ad606f3">exponent_</a>{<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/types/numeric_limits/lowest.html">std::numeric_limits&lt;int&gt;::lowest</a>()};</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="comment">// The range for the exponent when normalized</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a7cf828e636abd921b2ff2bca7a7bc8b8"> 217</a></span> <span class="keyword">constexpr</span> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="classxrpl_1_1Number.html#a7cf828e636abd921b2ff2bca7a7bc8b8">minExponent</a> = -32768;</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#aa41a4f7784291ffd76634c7fc567f6fb"> 218</a></span> <span class="keyword">constexpr</span> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="classxrpl_1_1Number.html#aa41a4f7784291ffd76634c7fc567f6fb">maxExponent</a> = 32768;</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> </div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8"> 220</a></span> <span class="keyword">constexpr</span> <span class="keyword">static</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> <a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a> = <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/types/numeric_limits/max.html">std::numeric_limits&lt;rep&gt;::max</a>();</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">static_assert</span>(<a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a> == 9&#39;223&#39;372&#39;036&#39;854&#39;775&#39;807);</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <span class="keyword">static_assert</span>(-<a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a> == <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/types/numeric_limits/min.html">std::numeric_limits&lt;rep&gt;::min</a>() + 1);</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> </div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="comment">// May need to make unchecked private</span></div>
<div class="foldopen" id="foldopen00225" data-start="{" data-end="};">
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"><a class="line" href="structxrpl_1_1Number_1_1unchecked.html"> 225</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structxrpl_1_1Number_1_1unchecked.html">unchecked</a></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> {</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"><a class="line" href="structxrpl_1_1Number_1_1unchecked.html#a33fe59a110af886858d4e3988051e856"> 227</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="structxrpl_1_1Number_1_1unchecked.html#a33fe59a110af886858d4e3988051e856">unchecked</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> };</div>
</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> </div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="comment">// Like unchecked, normalized is used with the ctors that take an</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="comment">// internalrep mantissa. Unlike unchecked, those ctors will normalize the</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="comment">// value.</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="comment">// Only unit tests are expected to use this class</span></div>
<div class="foldopen" id="foldopen00234" data-start="{" data-end="};">
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"><a class="line" href="structxrpl_1_1Number_1_1normalized.html"> 234</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structxrpl_1_1Number_1_1normalized.html">normalized</a></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> {</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"><a class="line" href="structxrpl_1_1Number_1_1normalized.html#afc6c3deddbff53614ae4e1c5a8d2b2b7"> 236</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="structxrpl_1_1Number_1_1normalized.html#afc6c3deddbff53614ae4e1c5a8d2b2b7">normalized</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> };</div>
</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> </div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c"> 239</a></span> <span class="keyword">explicit</span> <span class="keyword">constexpr</span> <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> </div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">rep</a> <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>);</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keyword">explicit</span> <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">rep</a> <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>);</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keyword">explicit</span> <span class="keyword">constexpr</span> <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number</a>(<span class="keywordtype">bool</span> negative, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>, <a class="code hl_struct" href="structxrpl_1_1Number_1_1unchecked.html">unchecked</a>) <span class="keyword">noexcept</span>;</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="comment">// Assume unsigned values are... unsigned. i.e. positive</span></div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keyword">explicit</span> <span class="keyword">constexpr</span> <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>, <a class="code hl_struct" href="structxrpl_1_1Number_1_1unchecked.html">unchecked</a>) <span class="keyword">noexcept</span>;</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="comment">// Only unit tests are expected to use this ctor</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <span class="keyword">explicit</span> <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number</a>(<span class="keywordtype">bool</span> negative, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>, <a class="code hl_struct" href="structxrpl_1_1Number_1_1normalized.html">normalized</a>);</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="comment">// Assume unsigned values are... unsigned. i.e. positive</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> <span class="keyword">explicit</span> <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>, <a class="code hl_struct" href="structxrpl_1_1Number_1_1normalized.html">normalized</a>);</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> </div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="keyword">constexpr</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">rep</a></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>() const noexcept;</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> constexpr <span class="keywordtype">int</span></div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>() const noexcept;</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> </div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> constexpr <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> operator+() const noexcept;</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> constexpr <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> operator-() const noexcept;</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>&amp;</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> operator++();</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> operator++(<span class="keywordtype">int</span>);</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>&amp;</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> operator--();</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> operator--(<span class="keywordtype">int</span>);</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> </div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>&amp;</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> operator+=(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> const&amp; x);</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>&amp;</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> operator-=(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> const&amp; x);</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> </div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>&amp;</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> operator*=(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> const&amp; x);</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>&amp;</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> operator/=(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> const&amp; x);</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> </div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> static <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <a class="code hl_function" href="classxrpl_1_1Number.html#ac64ccc5f642ddbfcdd59d5e22b9185a7">min</a>() noexcept;</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> static <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a6b53fc8d0ce290926d72e247b95f4d30">max</a>() noexcept;</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> static <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <a class="code hl_function" href="classxrpl_1_1Number.html#ae30cef79b02481287824413ac35f4595">lowest</a>() noexcept;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> </div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> explicit</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> operator <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">rep</a>() const; <span class="comment">// round to nearest, even on tie</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> </div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> friend constexpr <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00295" data-start="{" data-end="};">
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#aab550f116e2d1270ef59d8541c35d1e9"> 295</a></span> operator==(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> const&amp; x, <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> const&amp; y) noexcept</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> {</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="keywordflow">return</span> x.negative_ == y.negative_ &amp;&amp; x.mantissa_ == y.mantissa_ &amp;&amp; x.exponent_ == y.exponent_;</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> }</div>
</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> </div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <span class="keyword">friend</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00301" data-start="{" data-end="};">
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a8246d4c14aa2bf7aa9a46c76eb671443"> 301</a></span> <a class="code hl_friend" href="classxrpl_1_1Number.html#a8246d4c14aa2bf7aa9a46c76eb671443">operator!=</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> {</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keywordflow">return</span> !(x == y);</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> }</div>
</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</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="classxrpl_1_1Number.html#a093f23a479cd1866c672060e14ccbb4e"> 306</a></span> <span class="keyword">friend</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span></div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <a class="code hl_friend" href="classxrpl_1_1Number.html#a093f23a479cd1866c672060e14ccbb4e">operator&lt;</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> {</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> <span class="comment">// If the two amounts have different signs (zero is treated as positive)</span></div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> <span class="comment">// then the comparison is true iff the left is negative.</span></div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> lneg = x.negative_;</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> rneg = y.negative_;</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> </div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> <span class="keywordflow">if</span> (lneg != rneg)</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="keywordflow">return</span> lneg;</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> </div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="comment">// Both have same sign and the left is zero: the right must be</span></div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="comment">// greater than 0.</span></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> <span class="keywordflow">if</span> (x.mantissa_ == 0)</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="keywordflow">return</span> y.mantissa_ &gt; 0;</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> </div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> <span class="comment">// Both have same sign, the right is zero and the left is non-zero.</span></div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <span class="keywordflow">if</span> (y.mantissa_ == 0)</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> </div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <span class="comment">// Both have the same sign, compare by exponents:</span></div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keywordflow">if</span> (x.exponent_ &gt; y.exponent_)</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> <span class="keywordflow">return</span> lneg;</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> <span class="keywordflow">if</span> (x.exponent_ &lt; y.exponent_)</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> <span class="keywordflow">return</span> !lneg;</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> </div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> <span class="comment">// If equal exponents, compare mantissas</span></div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> <span class="keywordflow">return</span> x.mantissa_ &lt; y.mantissa_;</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> }</div>
</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> </div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> <span class="keyword">constexpr</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen00338" data-start="{" data-end="}">
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#abac88bc4caeeaddc6829b42af4363e75"> 338</a></span> <a class="code hl_function" href="classxrpl_1_1Number.html#abac88bc4caeeaddc6829b42af4363e75">signum</a>() const noexcept</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> {</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classxrpl_1_1Number.html#ae6da4d1edef20960bc7d37aa0a731fe0">negative_</a> ? -1 : (<a class="code hl_variable" href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6">mantissa_</a> ? 1 : 0);</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> }</div>
</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> </div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a3d6e8e71ee3641f8d21041d3ade5aed0">truncate</a>() const noexcept;</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> </div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> friend constexpr <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00347" data-start="{" data-end="};">
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#ab21071a0810e1b48acacb7bc52f0025e"> 347</a></span> operator&gt;(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> const&amp; x, <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> const&amp; y) noexcept</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> {</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="keywordflow">return</span> y &lt; x;</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> }</div>
</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> </div>
<div class="foldopen" id="foldopen00352" data-start="{" data-end="};">
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#af160b78055e721a7c9b46c9556b8cc5b"> 352</a></span> <span class="keyword">friend</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span></div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> <a class="code hl_friend" href="classxrpl_1_1Number.html#af160b78055e721a7c9b46c9556b8cc5b">operator&lt;=</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> {</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="keywordflow">return</span> !(y &lt; x);</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="l00358" name="l00358"></a><span class="lineno"> 358</span> <span class="keyword">friend</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00359" data-start="{" data-end="};">
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a95f708454f6da9e5f04f380273b0eb78"> 359</a></span> <a class="code hl_friend" href="classxrpl_1_1Number.html#a95f708454f6da9e5f04f380273b0eb78">operator&gt;=</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> {</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <span class="keywordflow">return</span> !(x &lt; y);</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> }</div>
</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> </div>
<div class="foldopen" id="foldopen00364" data-start="{" data-end="};">
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#ab09940caeba7ca6f6c57f4dc5220f4f1"> 364</a></span> <span class="keyword">friend</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a>&amp;</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <a class="code hl_friend" href="classxrpl_1_1Number.html#ab09940caeba7ca6f6c57f4dc5220f4f1">operator&lt;&lt;</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a>&amp; os, <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x)</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> {</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> <span class="keywordflow">return</span> os &lt;&lt; <a class="code hl_friend" href="classxrpl_1_1Number.html#a3f93a0fd9a95f114e3ab7d12ea0a1f7d">to_string</a>(x);</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> }</div>
</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> </div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> <span class="keyword">friend</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> <a class="code hl_friend" href="classxrpl_1_1Number.html#a3f93a0fd9a95f114e3ab7d12ea0a1f7d">to_string</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; amount);</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> </div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> <span class="keyword">friend</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <a class="code hl_friend" href="classxrpl_1_1Number.html#af59083b29186c11c2808135c5ff075b8">root</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> f, <span class="keywordtype">unsigned</span> d);</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> </div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <span class="keyword">friend</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <a class="code hl_friend" href="classxrpl_1_1Number.html#ab83e07ef7e17606d7bcaeabe05ec1236">root2</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> f);</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> </div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="comment">// Thread local rounding control. Default is to_nearest</span></div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95aefac6c5bd63a85dcee4fc69baf788d40"> 380</a></span> <span class="keyword">enum</span> <a class="code hl_enumeration" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95">rounding_mode</a> { <a class="code hl_enumvalue" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95aa1683b7e2939668142366896b111931a">to_nearest</a>, <a class="code hl_enumvalue" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95aa0120ec63f8c549bc0bf1c945e36e779">towards_zero</a>, <a class="code hl_enumvalue" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95aefac6c5bd63a85dcee4fc69baf788d40">downward</a>, <a class="code hl_enumvalue" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95aaf71effcd4dcf7bc7c89bb51e27e8b17">upward</a> };</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> <span class="keyword">static</span> <a class="code hl_enumeration" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95">rounding_mode</a></div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a0c71d26d6de400ed12cf3923157aca31">getround</a>();</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> <span class="comment">// Returns previously set mode</span></div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> <span class="keyword">static</span> <a class="code hl_enumeration" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95">rounding_mode</a></div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a274b459d7478df80795caed8a56d4f00">setround</a>(<a class="code hl_enumeration" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95">rounding_mode</a> mode);</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> </div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <span class="keyword">static</span> <a class="code hl_enumeration" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2">MantissaRange::mantissa_scale</a></div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> <a class="code hl_function" href="classxrpl_1_1Number.html#ac138187ff4d421f4158228642551756c">getMantissaScale</a>();</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a89a1e2cc1d2d69c86bbb03340284a6b7">setMantissaScale</a>(<a class="code hl_enumeration" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2">MantissaRange::mantissa_scale</a> scale);</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> </div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code hl_typedef" href="classxrpl_1_1Number.html#a67e66cfedbb2ff6c670917e4872da14f">internalrep</a></div>
<div class="foldopen" id="foldopen00401" data-start="{" data-end="}">
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a1be401c2cd91d8311dbc55bf6038a492"> 401</a></span> <a class="code hl_function" href="classxrpl_1_1Number.html#a1be401c2cd91d8311dbc55bf6038a492">minMantissa</a>()</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> {</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classxrpl_1_1Number.html#ab2381c12707d6e7e9a7704b4733ae3af">range_</a>.get().min;</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> }</div>
</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> </div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code hl_typedef" href="classxrpl_1_1Number.html#a67e66cfedbb2ff6c670917e4872da14f">internalrep</a></div>
<div class="foldopen" id="foldopen00407" data-start="{" data-end="}">
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a992a7b726b84f3e57bdba64acc107ba9"> 407</a></span> <a class="code hl_function" href="classxrpl_1_1Number.html#a992a7b726b84f3e57bdba64acc107ba9">maxMantissa</a>()</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> {</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classxrpl_1_1Number.html#ab2381c12707d6e7e9a7704b4733ae3af">range_</a>.get().max;</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> }</div>
</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> </div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen00413" data-start="{" data-end="}">
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#ae9df36fbc7e4a5663ce40454d30999ce"> 413</a></span> <a class="code hl_function" href="classxrpl_1_1Number.html#ae9df36fbc7e4a5663ce40454d30999ce">mantissaLog</a>()</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> {</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classxrpl_1_1Number.html#ab2381c12707d6e7e9a7704b4733ae3af">range_</a>.get().log;</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> }</div>
</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> </div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> <span class="keyword">constexpr</span> <span class="keyword">static</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a0981e6287c63318941d3b12d5c51c419">oneSmall</a>();</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> <span class="keyword">constexpr</span> <span class="keyword">static</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> <a class="code hl_function" href="classxrpl_1_1Number.html#ae07fcd3fb3a2d61a8c4491e43c3d99b2">oneLarge</a>();</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> </div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> <span class="comment">// And one is needed because it needs to choose between oneSmall and</span></div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <span class="comment">// oneLarge based on the current range</span></div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <span class="keyword">static</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> <a class="code hl_function" href="classxrpl_1_1Number.html#ad7b3dcf0314ef5327550516bdb1fa7d2">one</a>();</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> </div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <span class="keyword">template</span> &lt;Integral64 T&gt;</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> [[nodiscard]]</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;T, int&gt;</a></div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a48a40dabffeda7599db182132de1dc6c">normalizeToRange</a>(T <a class="code hl_function" href="classxrpl_1_1Number.html#a1be401c2cd91d8311dbc55bf6038a492">minMantissa</a>, T <a class="code hl_function" href="classxrpl_1_1Number.html#a992a7b726b84f3e57bdba64acc107ba9">maxMantissa</a>) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> </div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a73b1712a4714d18b02c0b9158a3ac201"> 436</a></span> <span class="keyword">static</span> <span class="keyword">thread_local</span> <a class="code hl_enumeration" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95">rounding_mode</a> <a class="code hl_variable" href="classxrpl_1_1Number.html#a73b1712a4714d18b02c0b9158a3ac201">mode_</a>;</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <span class="comment">// The available ranges for mantissa</span></div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> </div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a484ed599d53a6c6f57cd6b6163dca4d6"> 439</a></span> <span class="keyword">constexpr</span> <span class="keyword">static</span> <a class="code hl_struct" href="structxrpl_1_1MantissaRange.html">MantissaRange</a> <a class="code hl_variable" href="classxrpl_1_1Number.html#a484ed599d53a6c6f57cd6b6163dca4d6">smallRange</a>{<a class="code hl_enumvalue" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2a159d6fc6b77bffdac828a75a473aea42">MantissaRange::small</a>};</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="keyword">static_assert</span>(<a class="code hl_function" href="namespacexrpl.html#aa609454f90d5eb85c622b787219d069c">isPowerOfTen</a>(<a class="code hl_variable" href="classxrpl_1_1Number.html#a484ed599d53a6c6f57cd6b6163dca4d6">smallRange</a>.<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a6e5cafa1836416d4069e77a8fb54363c">min</a>));</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="keyword">static_assert</span>(<a class="code hl_variable" href="classxrpl_1_1Number.html#a484ed599d53a6c6f57cd6b6163dca4d6">smallRange</a>.<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a6e5cafa1836416d4069e77a8fb54363c">min</a> == 1&#39;000&#39;000&#39;000&#39;000&#39;000LL);</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <span class="keyword">static_assert</span>(<a class="code hl_variable" href="classxrpl_1_1Number.html#a484ed599d53a6c6f57cd6b6163dca4d6">smallRange</a>.<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a5605e543c0da8e19ea6f1447b393cc7d">max</a> == 9&#39;999&#39;999&#39;999&#39;999&#39;999LL);</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="keyword">static_assert</span>(<a class="code hl_variable" href="classxrpl_1_1Number.html#a484ed599d53a6c6f57cd6b6163dca4d6">smallRange</a>.<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#aea1c72494866d67e120bd23737080a7e">log</a> == 15);</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> <span class="keyword">static_assert</span>(<a class="code hl_variable" href="classxrpl_1_1Number.html#a484ed599d53a6c6f57cd6b6163dca4d6">smallRange</a>.<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a6e5cafa1836416d4069e77a8fb54363c">min</a> &lt; <a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a>);</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <span class="keyword">static_assert</span>(<a class="code hl_variable" href="classxrpl_1_1Number.html#a484ed599d53a6c6f57cd6b6163dca4d6">smallRange</a>.<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a5605e543c0da8e19ea6f1447b393cc7d">max</a> &lt; <a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a>);</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#ace04e61c20eedabf3ead4454049d9126"> 446</a></span> <span class="keyword">constexpr</span> <span class="keyword">static</span> <a class="code hl_struct" href="structxrpl_1_1MantissaRange.html">MantissaRange</a> <a class="code hl_variable" href="classxrpl_1_1Number.html#ace04e61c20eedabf3ead4454049d9126">largeRange</a>{<a class="code hl_enumvalue" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2a0b64e613fbbea29706141a2e1a08ffa5">MantissaRange::large</a>};</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <span class="keyword">static_assert</span>(<a class="code hl_function" href="namespacexrpl.html#aa609454f90d5eb85c622b787219d069c">isPowerOfTen</a>(<a class="code hl_variable" href="classxrpl_1_1Number.html#ace04e61c20eedabf3ead4454049d9126">largeRange</a>.<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a6e5cafa1836416d4069e77a8fb54363c">min</a>));</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <span class="keyword">static_assert</span>(<a class="code hl_variable" href="classxrpl_1_1Number.html#ace04e61c20eedabf3ead4454049d9126">largeRange</a>.<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a6e5cafa1836416d4069e77a8fb54363c">min</a> == 1&#39;000&#39;000&#39;000&#39;000&#39;000&#39;000ULL);</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <span class="keyword">static_assert</span>(<a class="code hl_variable" href="classxrpl_1_1Number.html#ace04e61c20eedabf3ead4454049d9126">largeRange</a>.<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a5605e543c0da8e19ea6f1447b393cc7d">max</a> == <a class="code hl_typedef" href="classxrpl_1_1Number.html#a67e66cfedbb2ff6c670917e4872da14f">internalrep</a>(9&#39;999&#39;999&#39;999&#39;999&#39;999&#39;999ULL));</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> <span class="keyword">static_assert</span>(<a class="code hl_variable" href="classxrpl_1_1Number.html#ace04e61c20eedabf3ead4454049d9126">largeRange</a>.<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#aea1c72494866d67e120bd23737080a7e">log</a> == 18);</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> <span class="keyword">static_assert</span>(<a class="code hl_variable" href="classxrpl_1_1Number.html#ace04e61c20eedabf3ead4454049d9126">largeRange</a>.<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a6e5cafa1836416d4069e77a8fb54363c">min</a> &lt; <a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a>);</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> <span class="keyword">static_assert</span>(<a class="code hl_variable" href="classxrpl_1_1Number.html#ace04e61c20eedabf3ead4454049d9126">largeRange</a>.<a class="code hl_variable" href="structxrpl_1_1MantissaRange.html#a5605e543c0da8e19ea6f1447b393cc7d">max</a> &gt; <a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a>);</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> </div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <span class="comment">// The range for the mantissa when normalized.</span></div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <span class="comment">// Use reference_wrapper to avoid making copies, and prevent accidentally</span></div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="comment">// changing the values inside the range.</span></div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#ab2381c12707d6e7e9a7704b4733ae3af"> 457</a></span> <span class="keyword">static</span> <span class="keyword">thread_local</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper.html">std::reference_wrapper&lt;MantissaRange const&gt;</a> <a class="code hl_variable" href="classxrpl_1_1Number.html#ab2381c12707d6e7e9a7704b4733ae3af">range_</a>;</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> </div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> <a class="code hl_function" href="classxrpl_1_1Number.html#ad471bfbafa5464af9c8b498e125d9873">normalize</a>();</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> </div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a3328c67dc592a6c82505643458bbe430"> 470</a></span> <a class="code hl_function" href="classxrpl_1_1Number.html#a3328c67dc592a6c82505643458bbe430">normalize</a>(</div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> <span class="keywordtype">bool</span>&amp; negative,</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> T&amp; <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>,</div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <span class="keywordtype">int</span>&amp; <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>,</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classxrpl_1_1Number.html#a1be401c2cd91d8311dbc55bf6038a492">minMantissa</a>,</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classxrpl_1_1Number.html#a992a7b726b84f3e57bdba64acc107ba9">maxMantissa</a>);</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> </div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <span class="keyword">friend</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> <a class="code hl_friend" href="classxrpl_1_1Number.html#a4f3e98cecc5435852a47d61a2d80d02f">doNormalize</a>(</div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <span class="keywordtype">bool</span>&amp; negative,</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> T&amp; <a class="code hl_variable" href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6">mantissa_</a>,</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> <span class="keywordtype">int</span>&amp; <a class="code hl_variable" href="classxrpl_1_1Number.html#ac901dca6c4ae9b77298650a82ad606f3">exponent_</a>,</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">MantissaRange::rep</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classxrpl_1_1Number.html#a1be401c2cd91d8311dbc55bf6038a492">minMantissa</a>,</div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">MantissaRange::rep</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classxrpl_1_1Number.html#a992a7b726b84f3e57bdba64acc107ba9">maxMantissa</a>);</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> </div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> <span class="keywordtype">bool</span></div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> <a class="code hl_function" href="classxrpl_1_1Number.html#aa164f49489cb861950f4477b1f19a211">isnormal</a>() const noexcept;</div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> </div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> <span class="comment">// Copy the number, but modify the exponent by &quot;exponentDelta&quot;. Because the</span></div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> <span class="comment">// mantissa doesn&#39;t change, the result will be &quot;mostly&quot; normalized, but the</span></div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> <span class="comment">// exponent could go out of range, so it will be checked.</span></div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a80f5761398748f4d740631511d344701">shiftExponent</a>(<span class="keywordtype">int</span> exponentDelta) const;</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> </div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> <span class="comment">// Safely convert rep (int64) mantissa to internalrep (uint64). If the rep</span></div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> <span class="comment">// is negative, returns the positive value. This takes a little extra work</span></div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> <span class="comment">// because converting std::numeric_limits&lt;std::int64_t&gt;::min() flirts with</span></div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> <span class="comment">// UB, and can vary across compilers.</span></div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> static <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a></div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a966f5eca09ff61f50f0c377dea86c798">externalToInternal</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">rep</a> <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>);</div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> </div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> class <a class="code hl_class" href="classxrpl_1_1Number_1_1Guard.html">Guard</a>;</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="foldopen00505" data-start="{" data-end="}">
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a0609cf6c7fccc8110af6a49a024df589"> 505</a></span>inline constexpr <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>::<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>(<span class="keywordtype">bool</span> negative, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>, <a class="code hl_struct" href="structxrpl_1_1Number_1_1unchecked.html">unchecked</a>) noexcept</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> : <a class="code hl_variable" href="classxrpl_1_1Number.html#ae6da4d1edef20960bc7d37aa0a731fe0">negative_</a>(negative), <a class="code hl_variable" href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6">mantissa_</a>{<a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>}, <a class="code hl_variable" href="classxrpl_1_1Number.html#ac901dca6c4ae9b77298650a82ad606f3">exponent_</a>{<a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>}</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span>{</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span>}</div>
</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</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="classxrpl_1_1Number.html#a3b76facdee6f73564373a8732d33c526"> 510</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number::Number</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>, <a class="code hl_struct" href="structxrpl_1_1Number_1_1unchecked.html">unchecked</a>) noexcept</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> : <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number</a>(<span class="keyword">false</span>, <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>, <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>, <a class="code hl_struct" href="structxrpl_1_1Number_1_1unchecked.html">unchecked</a>{})</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</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="l00515" name="l00515"></a><span class="lineno"><a class="line" href="namespacexrpl.html#a37264e625a18dabd56787db7fedd5e75"> 515</a></span><span class="keyword">constexpr</span> <span class="keyword">static</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <a class="code hl_variable" href="namespacexrpl.html#a37264e625a18dabd56787db7fedd5e75">numZero</a>{};</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> </div>
<div class="foldopen" id="foldopen00517" data-start="{" data-end="}">
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a038dcb6cd9a6f0c4c9dc991258d7bdbd"> 517</a></span><span class="keyword">inline</span> <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number::Number</a>(<span class="keywordtype">bool</span> negative, <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>, <a class="code hl_struct" href="structxrpl_1_1Number_1_1normalized.html">normalized</a>)</div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> : <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>(negative, <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>, <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>, <a class="code hl_struct" href="structxrpl_1_1Number_1_1unchecked.html">unchecked</a>{})</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span>{</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> <a class="code hl_function" href="classxrpl_1_1Number.html#ad471bfbafa5464af9c8b498e125d9873">normalize</a>();</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span>}</div>
</div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> </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="classxrpl_1_1Number.html#a31b4e505357c0994561f1b00b9fce89c"> 523</a></span><span class="keyword">inline</span> <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number::Number</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> mantissa, <span class="keywordtype">int</span> exponent, <a class="code hl_struct" href="structxrpl_1_1Number_1_1normalized.html">normalized</a>) : <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>(false, mantissa, exponent, <a class="code hl_struct" href="structxrpl_1_1Number_1_1normalized.html">normalized</a>{})</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span>{</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span>}</div>
</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> </div>
<div class="foldopen" id="foldopen00527" data-start="{" data-end="}">
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a8051d5e9b1ef04ce5acba074819fed4d"> 527</a></span><span class="keyword">inline</span> <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number::Number</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">rep</a> mantissa, <span class="keywordtype">int</span> exponent)</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> : <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>(mantissa &lt; 0, externalToInternal(mantissa), exponent, <a class="code hl_struct" href="structxrpl_1_1Number_1_1normalized.html">normalized</a>{})</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span>{</div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span>}</div>
</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> </div>
<div class="foldopen" id="foldopen00532" data-start="{" data-end="}">
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#ab433fcec28ecf57dea22710141fc22a4"> 532</a></span><span class="keyword">inline</span> <a class="code hl_function" href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">Number::Number</a>(<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">rep</a> mantissa) : <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>{mantissa, 0}</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span>{</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span>}</div>
</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> </div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">Number::rep</a></div>
<div class="foldopen" id="foldopen00542" data-start="{" data-end="}">
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3"> 542</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">Number::mantissa</a>() const noexcept</div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span>{</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> <span class="keyword">auto</span> m = <a class="code hl_variable" href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6">mantissa_</a>;</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> <span class="keywordflow">if</span> (m &gt; <a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a>)</div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> {</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> XRPL_ASSERT_PARTS(</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> !<a class="code hl_function" href="classxrpl_1_1Number.html#aa164f49489cb861950f4477b1f19a211">isnormal</a>() || (m % 10 == 0 &amp;&amp; m / 10 &lt;= <a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a>),</div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> <span class="stringliteral">&quot;xrpl::Number::mantissa&quot;</span>,</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> <span class="stringliteral">&quot;large normalized mantissa has no remainder&quot;</span>);</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> m /= 10;</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> }</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> <span class="keyword">auto</span> <span class="keyword">const</span> <a class="code hl_function" href="namespacexrpl.html#aca8d3524fa9df703978f872ca8bf8c5a">sign</a> = <a class="code hl_variable" href="classxrpl_1_1Number.html#ae6da4d1edef20960bc7d37aa0a731fe0">negative_</a> ? -1 : 1;</div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacexrpl.html#aca8d3524fa9df703978f872ca8bf8c5a">sign</a> * <span class="keyword">static_cast&lt;</span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">Number::rep</a><span class="keyword">&gt;</span>(m);</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="l00562" name="l00562"></a><span class="lineno"> 562</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen00563" data-start="{" data-end="}">
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358"> 563</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">Number::exponent</a>() const noexcept</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span>{</div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> <span class="keyword">auto</span> e = <a class="code hl_variable" href="classxrpl_1_1Number.html#ac901dca6c4ae9b77298650a82ad606f3">exponent_</a>;</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6">mantissa_</a> &gt; <a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a>)</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> {</div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> XRPL_ASSERT_PARTS(</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> !<a class="code hl_function" href="classxrpl_1_1Number.html#aa164f49489cb861950f4477b1f19a211">isnormal</a>() || (<a class="code hl_variable" href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6">mantissa_</a> % 10 == 0 &amp;&amp; <a class="code hl_variable" href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6">mantissa_</a> / 10 &lt;= <a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a>),</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> <span class="stringliteral">&quot;xrpl::Number::exponent&quot;</span>,</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span> <span class="stringliteral">&quot;large normalized mantissa has no remainder&quot;</span>);</div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> ++e;</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> }</div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> <span class="keywordflow">return</span> e;</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span>}</div>
</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> </div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00578" data-start="{" data-end="}">
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a7e74431e27ce46a0fef1bbe2bfd4c167"> 578</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#a7e74431e27ce46a0fef1bbe2bfd4c167">Number::operator+</a>() const noexcept</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span>{</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span>}</div>
</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> </div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></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="classxrpl_1_1Number.html#a5fe9717e45f2af1100c98e48e675ce78"> 584</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#a5fe9717e45f2af1100c98e48e675ce78">Number::operator-</a>() const noexcept</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span>{</div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6">mantissa_</a> == 0)</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> <span class="keywordflow">return</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>{};</div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> <span class="keyword">auto</span> x = *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> x.<a class="code hl_variable" href="classxrpl_1_1Number.html#ae6da4d1edef20960bc7d37aa0a731fe0">negative_</a> = !x.negative_;</div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> <span class="keywordflow">return</span> x;</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span>}</div>
</div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> </div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span><span class="keyword">inline</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>&amp;</div>
<div class="foldopen" id="foldopen00594" data-start="{" data-end="}">
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a03e477cf32a66e5a136e5edfacd71994"> 594</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#a03e477cf32a66e5a136e5edfacd71994">Number::operator++</a>()</div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span>{</div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> *<span class="keyword">this</span> += <a class="code hl_function" href="classxrpl_1_1Number.html#ad7b3dcf0314ef5327550516bdb1fa7d2">one</a>();</div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span>}</div>
</div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> </div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span><span class="keyword">inline</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00601" data-start="{" data-end="}">
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a845d683210e009f712ef52e6521cde1c"> 601</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#a03e477cf32a66e5a136e5edfacd71994">Number::operator++</a>(<span class="keywordtype">int</span>)</div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span>{</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> <span class="keyword">auto</span> x = *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> ++(*this);</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> <span class="keywordflow">return</span> x;</div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span>}</div>
</div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> </div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span><span class="keyword">inline</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>&amp;</div>
<div class="foldopen" id="foldopen00609" data-start="{" data-end="}">
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a7ea1c37054f1738dabf2b0a8032d3171"> 609</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#a7ea1c37054f1738dabf2b0a8032d3171">Number::operator--</a>()</div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span>{</div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span> *<span class="keyword">this</span> -= <a class="code hl_function" href="classxrpl_1_1Number.html#ad7b3dcf0314ef5327550516bdb1fa7d2">one</a>();</div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</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="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</span><span class="keyword">inline</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00616" data-start="{" data-end="}">
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a3bad68958b4ec0439be78d2926a535ef"> 616</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#a7ea1c37054f1738dabf2b0a8032d3171">Number::operator--</a>(<span class="keywordtype">int</span>)</div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span>{</div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> <span class="keyword">auto</span> x = *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> --(*this);</div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> <span class="keywordflow">return</span> x;</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span>}</div>
</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> </div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span><span class="keyword">inline</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>&amp;</div>
<div class="foldopen" id="foldopen00624" data-start="{" data-end="}">
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#abee8ba813c8f780de67121b088749569"> 624</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#abee8ba813c8f780de67121b088749569">Number::operator-=</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x)</div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span>{</div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> <span class="keywordflow">return</span> *<span class="keyword">this</span> += -x;</div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span>}</div>
</div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span> </div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span><span class="keyword">inline</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00630" data-start="{" data-end="}">
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"><a class="line" href="namespacexrpl.html#ac6211defd9b1dd3fafb2c18c1aef9b29"> 630</a></span><a class="code hl_function" href="namespacexrpl.html#a2ad07fee9dccb808b0ea4d63c933b138">operator+</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y)</div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span>{</div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> <span class="keyword">auto</span> z = x;</div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span> z += y;</div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> <span class="keywordflow">return</span> z;</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span>}</div>
</div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> </div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span><span class="keyword">inline</span> Number</div>
<div class="foldopen" id="foldopen00638" data-start="{" data-end="}">
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"><a class="line" href="namespacexrpl.html#a341da9ace25260efeda15c921f1dbf90"> 638</a></span><a class="code hl_function" href="namespacexrpl.html#a341da9ace25260efeda15c921f1dbf90">operator-</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y)</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span>{</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> <span class="keyword">auto</span> z = x;</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> z -= y;</div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> <span class="keywordflow">return</span> z;</div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span>}</div>
</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> </div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span><span class="keyword">inline</span> Number</div>
<div class="foldopen" id="foldopen00646" data-start="{" data-end="}">
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"><a class="line" href="namespacexrpl.html#a6c5adc6e0dafc4169a6407718d8d626b"> 646</a></span><a class="code hl_function" href="namespacexrpl.html#a6c5adc6e0dafc4169a6407718d8d626b">operator*</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y)</div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span>{</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> <span class="keyword">auto</span> z = x;</div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> z *= y;</div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> <span class="keywordflow">return</span> z;</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span>}</div>
</div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> </div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span><span class="keyword">inline</span> Number</div>
<div class="foldopen" id="foldopen00654" data-start="{" data-end="}">
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"><a class="line" href="namespacexrpl.html#a41a6396d3d97e469da8448799a22041b"> 654</a></span><a class="code hl_function" href="namespacexrpl.html#a41a6396d3d97e469da8448799a22041b">operator/</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y)</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span>{</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> <span class="keyword">auto</span> z = x;</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> z /= y;</div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> <span class="keywordflow">return</span> z;</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span>}</div>
</div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> </div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span><span class="keyword">inline</span> Number</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="classxrpl_1_1Number.html#ac64ccc5f642ddbfcdd59d5e22b9185a7"> 662</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#ac64ccc5f642ddbfcdd59d5e22b9185a7">Number::min</a>() noexcept</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span>{</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> <span class="keywordflow">return</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>{<span class="keyword">false</span>, <a class="code hl_variable" href="classxrpl_1_1Number.html#ab2381c12707d6e7e9a7704b4733ae3af">range_</a>.get().<a class="code hl_function" href="classxrpl_1_1Number.html#ac64ccc5f642ddbfcdd59d5e22b9185a7">min</a>, <a class="code hl_variable" href="classxrpl_1_1Number.html#a7cf828e636abd921b2ff2bca7a7bc8b8">minExponent</a>, <a class="code hl_struct" href="structxrpl_1_1Number_1_1unchecked.html">unchecked</a>{}};</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span>}</div>
</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> </div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span><span class="keyword">inline</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00668" data-start="{" data-end="}">
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a6b53fc8d0ce290926d72e247b95f4d30"> 668</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#a6b53fc8d0ce290926d72e247b95f4d30">Number::max</a>() noexcept</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span>{</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> <span class="keywordflow">return</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>{<span class="keyword">false</span>, <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/algorithm/min.html">std::min</a>(<a class="code hl_variable" href="classxrpl_1_1Number.html#ab2381c12707d6e7e9a7704b4733ae3af">range_</a>.get().max, <a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a>), <a class="code hl_variable" href="classxrpl_1_1Number.html#aa41a4f7784291ffd76634c7fc567f6fb">maxExponent</a>, <a class="code hl_struct" href="structxrpl_1_1Number_1_1unchecked.html">unchecked</a>{}};</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span>}</div>
</div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> </div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span><span class="keyword">inline</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></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="classxrpl_1_1Number.html#ae30cef79b02481287824413ac35f4595"> 674</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#ae30cef79b02481287824413ac35f4595">Number::lowest</a>() noexcept</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span>{</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> <span class="keywordflow">return</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>{<span class="keyword">true</span>, <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/algorithm/min.html">std::min</a>(<a class="code hl_variable" href="classxrpl_1_1Number.html#ab2381c12707d6e7e9a7704b4733ae3af">range_</a>.get().max, <a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a>), <a class="code hl_variable" href="classxrpl_1_1Number.html#aa41a4f7784291ffd76634c7fc567f6fb">maxExponent</a>, <a class="code hl_struct" href="structxrpl_1_1Number_1_1unchecked.html">unchecked</a>{}};</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span>}</div>
</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> </div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span><span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00680" data-start="{" data-end="}">
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#aa164f49489cb861950f4477b1f19a211"> 680</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#aa164f49489cb861950f4477b1f19a211">Number::isnormal</a>() const noexcept</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span>{</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> <a class="code hl_struct" href="structxrpl_1_1MantissaRange.html">MantissaRange</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="namespacexrpl.html#a34fabf5c9fc5c30e86623b6a5eb0ac7d">range</a> = <a class="code hl_variable" href="classxrpl_1_1Number.html#ab2381c12707d6e7e9a7704b4733ae3af">range_</a>;</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> <span class="keyword">auto</span> <span class="keyword">const</span> abs_m = <a class="code hl_variable" href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6">mantissa_</a>;</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> <span class="keywordflow">return</span> *<span class="keyword">this</span> == <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>{} ||</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> (<a class="code hl_function" href="namespacexrpl.html#a34fabf5c9fc5c30e86623b6a5eb0ac7d">range</a>.min &lt;= abs_m &amp;&amp; abs_m &lt;= <a class="code hl_function" href="namespacexrpl.html#a34fabf5c9fc5c30e86623b6a5eb0ac7d">range</a>.max &amp;&amp; (abs_m &lt;= <a class="code hl_variable" href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">maxRep</a> || abs_m % 10 == 0) &amp;&amp; <a class="code hl_variable" href="classxrpl_1_1Number.html#a7cf828e636abd921b2ff2bca7a7bc8b8">minExponent</a> &lt;= <a class="code hl_variable" href="classxrpl_1_1Number.html#ac901dca6c4ae9b77298650a82ad606f3">exponent_</a> &amp;&amp;</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> <a class="code hl_variable" href="classxrpl_1_1Number.html#ac901dca6c4ae9b77298650a82ad606f3">exponent_</a> &lt;= <a class="code hl_variable" href="classxrpl_1_1Number.html#aa41a4f7784291ffd76634c7fc567f6fb">maxExponent</a>);</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span>}</div>
</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> </div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span><span class="keyword">template</span> &lt;Integral64 T&gt;</div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span><a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;T, int&gt;</a></div>
<div class="foldopen" id="foldopen00691" data-start="{" data-end="}">
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"><a class="line" href="classxrpl_1_1Number.html#a48a40dabffeda7599db182132de1dc6c"> 691</a></span><a class="code hl_function" href="classxrpl_1_1Number.html#a48a40dabffeda7599db182132de1dc6c">Number::normalizeToRange</a>(T <a class="code hl_variable" href="namespacexrpl.html#a2a721bcaa03cd7eb61b1bdc1d95c9ef0">minMantissa</a>, T <a class="code hl_variable" href="namespacexrpl.html#aa0e63a106d5965ddfbf3c6a18b722bc7">maxMantissa</a>)<span class="keyword"> const</span></div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> <span class="keywordtype">bool</span> negative = <a class="code hl_variable" href="classxrpl_1_1Number.html#ae6da4d1edef20960bc7d37aa0a731fe0">negative_</a>;</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">internalrep</a> <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a> = <a class="code hl_variable" href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6">mantissa_</a>;</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> <span class="keywordtype">int</span> <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a> = <a class="code hl_variable" href="classxrpl_1_1Number.html#ac901dca6c4ae9b77298650a82ad606f3">exponent_</a>;</div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> </div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span> <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (<a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::is_unsigned_v&lt;T&gt;</a>)</div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"> 698</span> XRPL_ASSERT_PARTS(!negative, <span class="stringliteral">&quot;xrpl::Number::normalizeToRange&quot;</span>, <span class="stringliteral">&quot;Number is non-negative for unsigned range.&quot;</span>);</div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span> <a class="code hl_function" href="classxrpl_1_1Number.html#ad471bfbafa5464af9c8b498e125d9873">Number::normalize</a>(negative, <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>, <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>, <a class="code hl_function" href="classxrpl_1_1Number.html#a1be401c2cd91d8311dbc55bf6038a492">minMantissa</a>, <a class="code hl_function" href="classxrpl_1_1Number.html#a992a7b726b84f3e57bdba64acc107ba9">maxMantissa</a>);</div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span> </div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno"> 701</span> <span class="keyword">auto</span> <span class="keyword">const</span> <a class="code hl_function" href="namespacexrpl.html#aca8d3524fa9df703978f872ca8bf8c5a">sign</a> = negative ? -1 : 1;</div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"> 702</span> <span class="keywordflow">return</span> <a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/utility/pair/make_pair.html">std::make_pair</a>(<span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(<a class="code hl_function" href="namespacexrpl.html#aca8d3524fa9df703978f872ca8bf8c5a">sign</a> * <a class="code hl_function" href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">mantissa</a>), <a class="code hl_function" href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">exponent</a>);</div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno"> 703</span>}</div>
</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"> 704</span> </div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00706" data-start="{" data-end="}">
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"><a class="line" href="namespacexrpl.html#ab8c3ab80a860de11f3803c7da500418a"> 706</a></span><a class="code hl_function" href="namespacexrpl.html#ab8c3ab80a860de11f3803c7da500418a">abs</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> x) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span>{</div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> <span class="keywordflow">if</span> (x &lt; <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>{})</div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span> x = -x;</div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"> 710</span> <span class="keywordflow">return</span> x;</div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span>}</div>
</div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span> </div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span><span class="comment">// Returns f^n</span></div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span><span class="comment">// Uses a log_2(n) number of multiplications</span></div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"> 715</span> </div>
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"> 716</span>Number</div>
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"> 717</span><a class="code hl_function" href="namespacexrpl.html#a5dcb604ca5c6c6fdde47b8d7c20bec54">power</a>(Number <span class="keyword">const</span>&amp; f, <span class="keywordtype">unsigned</span> n);</div>
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno"> 718</span> </div>
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"> 719</span><span class="comment">// Returns f^(1/d)</span></div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span><span class="comment">// Uses NewtonRaphson iterations until the result stops changing</span></div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span><span class="comment">// to find the root of the polynomial g(x) = x^d - f</span></div>
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"> 722</span> </div>
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno"> 723</span>Number</div>
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno"> 724</span><a class="code hl_function" href="namespacexrpl.html#a5a08adf1bad37c44d2ada7ae983dd12f">root</a>(Number f, <span class="keywordtype">unsigned</span> d);</div>
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno"> 725</span> </div>
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno"> 726</span>Number</div>
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"> 727</span><a class="code hl_function" href="namespacexrpl.html#ab334d11f65b71b91e2c6c907090398cb">root2</a>(Number f);</div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"> 728</span> </div>
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno"> 729</span><span class="comment">// Returns f^(n/d)</span></div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno"> 730</span> </div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno"> 731</span>Number</div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span><a class="code hl_function" href="namespacexrpl.html#a5dcb604ca5c6c6fdde47b8d7c20bec54">power</a>(Number <span class="keyword">const</span>&amp; f, <span class="keywordtype">unsigned</span> n, <span class="keywordtype">unsigned</span> d);</div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span> </div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno"> 734</span><span class="comment">// Return 0 if abs(x) &lt; limit, else returns x</span></div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"> 735</span> </div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno"> 736</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> Number</div>
<div class="foldopen" id="foldopen00737" data-start="{" data-end="}">
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno"><a class="line" href="namespacexrpl.html#ad18df7bd6f8278f85ab255aab39c6ae5"> 737</a></span><a class="code hl_function" href="namespacexrpl.html#ad18df7bd6f8278f85ab255aab39c6ae5">squelch</a>(<a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; limit) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span>{</div>
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno"> 739</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="namespacexrpl.html#ab8c3ab80a860de11f3803c7da500418a">abs</a>(x) &lt; limit)</div>
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno"> 740</span> <span class="keywordflow">return</span> <a class="code hl_class" href="classxrpl_1_1Number.html">Number</a>{};</div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno"> 741</span> <span class="keywordflow">return</span> x;</div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno"> 742</span>}</div>
</div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno"> 743</span> </div>
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno"> 744</span><span class="keyword">inline</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div>
<div class="foldopen" id="foldopen00745" data-start="{" data-end="}">
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno"><a class="line" href="namespacexrpl.html#a2d7202dba9e9a2b66ed288fb685ccfd6"> 745</a></span><a class="code hl_function" href="namespacexrpl.html#a35ce7572092b98720a52fa343c6f2fa9">to_string</a>(<a class="code hl_enumeration" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2">MantissaRange::mantissa_scale</a> <span class="keyword">const</span>&amp; scale)</div>
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno"> 746</span>{</div>
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno"> 747</span> <span class="keywordflow">switch</span> (scale)</div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno"> 748</span> {</div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"> 749</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2a159d6fc6b77bffdac828a75a473aea42">MantissaRange::small</a>:</div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"> 750</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;small&quot;</span>;</div>
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno"> 751</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2a0b64e613fbbea29706141a2e1a08ffa5">MantissaRange::large</a>:</div>
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno"> 752</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;large&quot;</span>;</div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> <span class="keywordflow">throw</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/error/runtime_error.html">std::runtime_error</a>(<span class="stringliteral">&quot;Bad scale&quot;</span>);</div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"> 755</span> }</div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span>}</div>
</div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span> </div>
<div class="foldopen" id="foldopen00758" data-start="{" data-end="};">
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno"><a class="line" href="classxrpl_1_1saveNumberRoundMode.html"> 758</a></span><span class="keyword">class </span><a class="code hl_class" href="classxrpl_1_1saveNumberRoundMode.html">saveNumberRoundMode</a></div>
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno"> 759</span>{</div>
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno"><a class="line" href="classxrpl_1_1saveNumberRoundMode.html#a3b95c30dcc97da21509afa7c45bf4a38"> 760</a></span> <a class="code hl_enumeration" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95">Number::rounding_mode</a> <a class="code hl_variable" href="classxrpl_1_1saveNumberRoundMode.html#a3b95c30dcc97da21509afa7c45bf4a38">mode_</a>;</div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"> 761</span> </div>
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"> 762</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00763" data-start="{" data-end="}">
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"><a class="line" href="classxrpl_1_1saveNumberRoundMode.html#aab239e255c0f7afc1f866cb04d8be6d2"> 763</a></span> <a class="code hl_function" href="classxrpl_1_1saveNumberRoundMode.html#aab239e255c0f7afc1f866cb04d8be6d2">~saveNumberRoundMode</a>()</div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</span> {</div>
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno"> 765</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a274b459d7478df80795caed8a56d4f00">Number::setround</a>(<a class="code hl_variable" href="classxrpl_1_1saveNumberRoundMode.html#a3b95c30dcc97da21509afa7c45bf4a38">mode_</a>);</div>
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</span> }</div>
</div>
<div class="foldopen" id="foldopen00767" data-start="{" data-end="}">
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"><a class="line" href="classxrpl_1_1saveNumberRoundMode.html#a96ebfee898eb50d645db1389322ba40f"> 767</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="classxrpl_1_1saveNumberRoundMode.html#a96ebfee898eb50d645db1389322ba40f">saveNumberRoundMode</a>(<a class="code hl_enumeration" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95">Number::rounding_mode</a> mode) noexcept : <a class="code hl_variable" href="classxrpl_1_1saveNumberRoundMode.html#a3b95c30dcc97da21509afa7c45bf4a38">mode_</a>{mode}</div>
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno"> 768</span> {</div>
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"> 769</span> }</div>
</div>
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"><a class="line" href="classxrpl_1_1saveNumberRoundMode.html#aeec05ec68eaaf9cc65ebf00414abc787"> 770</a></span> <a class="code hl_function" href="classxrpl_1_1saveNumberRoundMode.html#aeec05ec68eaaf9cc65ebf00414abc787">saveNumberRoundMode</a>(<a class="code hl_class" href="classxrpl_1_1saveNumberRoundMode.html">saveNumberRoundMode</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> <a class="code hl_class" href="classxrpl_1_1saveNumberRoundMode.html">saveNumberRoundMode</a>&amp;</div>
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"><a class="line" href="classxrpl_1_1saveNumberRoundMode.html#afc606d02272caeeaf62eda72478d344c"> 772</a></span> <a class="code hl_function" href="classxrpl_1_1saveNumberRoundMode.html#afc606d02272caeeaf62eda72478d344c">operator=</a>(<a class="code hl_class" href="classxrpl_1_1saveNumberRoundMode.html">saveNumberRoundMode</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"> 773</span>};</div>
</div>
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"> 774</span> </div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno"> 775</span><span class="comment">// saveNumberRoundMode doesn&#39;t do quite enough for us. What we want is a</span></div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</span><span class="comment">// Number::RoundModeGuard that sets the new mode and restores the old mode</span></div>
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno"> 777</span><span class="comment">// when it leaves scope. Since Number doesn&#39;t have that facility, we&#39;ll</span></div>
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno"> 778</span><span class="comment">// build it here.</span></div>
<div class="foldopen" id="foldopen00779" data-start="{" data-end="};">
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno"><a class="line" href="classxrpl_1_1NumberRoundModeGuard.html"> 779</a></span><span class="keyword">class </span><a class="code hl_class" href="classxrpl_1_1NumberRoundModeGuard.html">NumberRoundModeGuard</a></div>
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno"> 780</span>{</div>
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno"><a class="line" href="classxrpl_1_1NumberRoundModeGuard.html#ac3ae2713cd2c95535776abb2441dbcd7"> 781</a></span> <a class="code hl_class" href="classxrpl_1_1saveNumberRoundMode.html">saveNumberRoundMode</a> <a class="code hl_variable" href="classxrpl_1_1NumberRoundModeGuard.html#ac3ae2713cd2c95535776abb2441dbcd7">saved_</a>;</div>
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno"> 782</span> </div>
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno"> 783</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00784" data-start="{" data-end="}">
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno"><a class="line" href="classxrpl_1_1NumberRoundModeGuard.html#aa90dc7614c6457359b78e47402298ffd"> 784</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="classxrpl_1_1NumberRoundModeGuard.html#aa90dc7614c6457359b78e47402298ffd">NumberRoundModeGuard</a>(<a class="code hl_enumeration" href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95">Number::rounding_mode</a> mode) noexcept : <a class="code hl_variable" href="classxrpl_1_1NumberRoundModeGuard.html#ac3ae2713cd2c95535776abb2441dbcd7">saved_</a>{<a class="code hl_function" href="classxrpl_1_1Number.html#a274b459d7478df80795caed8a56d4f00">Number::setround</a>(mode)}</div>
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno"> 785</span> {</div>
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno"> 786</span> }</div>
</div>
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno"> 787</span> </div>
<div class="line"><a id="l00788" name="l00788"></a><span class="lineno"><a class="line" href="classxrpl_1_1NumberRoundModeGuard.html#a74869c9c99644cb3effe261768e05f1c"> 788</a></span> <a class="code hl_function" href="classxrpl_1_1NumberRoundModeGuard.html#a74869c9c99644cb3effe261768e05f1c">NumberRoundModeGuard</a>(<a class="code hl_class" href="classxrpl_1_1NumberRoundModeGuard.html">NumberRoundModeGuard</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno"> 789</span> </div>
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno"> 790</span> <a class="code hl_class" href="classxrpl_1_1NumberRoundModeGuard.html">NumberRoundModeGuard</a>&amp;</div>
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno"><a class="line" href="classxrpl_1_1NumberRoundModeGuard.html#a631bb7eb98880117bd7a8c4955f824af"> 791</a></span> <a class="code hl_function" href="classxrpl_1_1NumberRoundModeGuard.html#a631bb7eb98880117bd7a8c4955f824af">operator=</a>(<a class="code hl_class" href="classxrpl_1_1NumberRoundModeGuard.html">NumberRoundModeGuard</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"> 792</span>};</div>
</div>
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno"> 793</span> </div>
<div class="foldopen" id="foldopen00799" data-start="{" data-end="};">
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno"><a class="line" href="classxrpl_1_1NumberMantissaScaleGuard.html"> 799</a></span><span class="keyword">class </span><a class="code hl_class" href="classxrpl_1_1NumberMantissaScaleGuard.html">NumberMantissaScaleGuard</a></div>
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno"> 800</span>{</div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"><a class="line" href="classxrpl_1_1NumberMantissaScaleGuard.html#a19d3c46222a70770ee5c2648f9b4a0ae"> 801</a></span> <a class="code hl_enumeration" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2">MantissaRange::mantissa_scale</a> <span class="keyword">const</span> <a class="code hl_variable" href="classxrpl_1_1NumberMantissaScaleGuard.html#a19d3c46222a70770ee5c2648f9b4a0ae">saved_</a>;</div>
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno"> 802</span> </div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00804" data-start="{" data-end="}">
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"><a class="line" href="classxrpl_1_1NumberMantissaScaleGuard.html#a05658a19953ce08f1a101e8c9646b0a6"> 804</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="classxrpl_1_1NumberMantissaScaleGuard.html#a05658a19953ce08f1a101e8c9646b0a6">NumberMantissaScaleGuard</a>(<a class="code hl_enumeration" href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2">MantissaRange::mantissa_scale</a> scale) noexcept : <a class="code hl_variable" href="classxrpl_1_1NumberMantissaScaleGuard.html#a19d3c46222a70770ee5c2648f9b4a0ae">saved_</a>{<a class="code hl_function" href="classxrpl_1_1Number.html#ac138187ff4d421f4158228642551756c">Number::getMantissaScale</a>()}</div>
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> {</div>
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a89a1e2cc1d2d69c86bbb03340284a6b7">Number::setMantissaScale</a>(scale);</div>
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span> }</div>
</div>
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span> </div>
<div class="foldopen" id="foldopen00809" data-start="{" data-end="}">
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"><a class="line" href="classxrpl_1_1NumberMantissaScaleGuard.html#aabffb0286a9c5ff6f9185799902794a4"> 809</a></span> <a class="code hl_function" href="classxrpl_1_1NumberMantissaScaleGuard.html#aabffb0286a9c5ff6f9185799902794a4">~NumberMantissaScaleGuard</a>()</div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno"> 810</span> {</div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"> 811</span> <a class="code hl_function" href="classxrpl_1_1Number.html#a89a1e2cc1d2d69c86bbb03340284a6b7">Number::setMantissaScale</a>(<a class="code hl_variable" href="classxrpl_1_1NumberMantissaScaleGuard.html#a19d3c46222a70770ee5c2648f9b4a0ae">saved_</a>);</div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"> 812</span> }</div>
</div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"> 813</span> </div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"><a class="line" href="classxrpl_1_1NumberMantissaScaleGuard.html#aa2ef4e0a612b2aa82322ed2c94afae20"> 814</a></span> <a class="code hl_function" href="classxrpl_1_1NumberMantissaScaleGuard.html#aa2ef4e0a612b2aa82322ed2c94afae20">NumberMantissaScaleGuard</a>(<a class="code hl_class" href="classxrpl_1_1NumberMantissaScaleGuard.html">NumberMantissaScaleGuard</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"> 815</span> </div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span> <a class="code hl_class" href="classxrpl_1_1NumberMantissaScaleGuard.html">NumberMantissaScaleGuard</a>&amp;</div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"><a class="line" href="classxrpl_1_1NumberMantissaScaleGuard.html#ae5a65abe6790e21814f8487284930683"> 817</a></span> <a class="code hl_function" href="classxrpl_1_1NumberMantissaScaleGuard.html#ae5a65abe6790e21814f8487284930683">operator=</a>(<a class="code hl_class" href="classxrpl_1_1NumberMantissaScaleGuard.html">NumberMantissaScaleGuard</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"> 818</span>};</div>
</div>
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno"> 819</span> </div>
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"> 820</span>} <span class="comment">// namespace xrpl</span></div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a></div></div>
<div class="ttc" id="abasic_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div></div>
<div class="ttc" id="aclassxrpl_1_1NumberMantissaScaleGuard_html"><div class="ttname"><a href="classxrpl_1_1NumberMantissaScaleGuard.html">xrpl::NumberMantissaScaleGuard</a></div><div class="ttdoc">Sets the new scale and restores the old scale when it leaves scope.</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00799">Number.h:800</a></div></div>
<div class="ttc" id="aclassxrpl_1_1NumberMantissaScaleGuard_html_a05658a19953ce08f1a101e8c9646b0a6"><div class="ttname"><a href="classxrpl_1_1NumberMantissaScaleGuard.html#a05658a19953ce08f1a101e8c9646b0a6">xrpl::NumberMantissaScaleGuard::NumberMantissaScaleGuard</a></div><div class="ttdeci">NumberMantissaScaleGuard(MantissaRange::mantissa_scale scale) noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00804">Number.h:804</a></div></div>
<div class="ttc" id="aclassxrpl_1_1NumberMantissaScaleGuard_html_a19d3c46222a70770ee5c2648f9b4a0ae"><div class="ttname"><a href="classxrpl_1_1NumberMantissaScaleGuard.html#a19d3c46222a70770ee5c2648f9b4a0ae">xrpl::NumberMantissaScaleGuard::saved_</a></div><div class="ttdeci">MantissaRange::mantissa_scale const saved_</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00801">Number.h:801</a></div></div>
<div class="ttc" id="aclassxrpl_1_1NumberMantissaScaleGuard_html_aa2ef4e0a612b2aa82322ed2c94afae20"><div class="ttname"><a href="classxrpl_1_1NumberMantissaScaleGuard.html#aa2ef4e0a612b2aa82322ed2c94afae20">xrpl::NumberMantissaScaleGuard::NumberMantissaScaleGuard</a></div><div class="ttdeci">NumberMantissaScaleGuard(NumberMantissaScaleGuard const &amp;)=delete</div></div>
<div class="ttc" id="aclassxrpl_1_1NumberMantissaScaleGuard_html_aabffb0286a9c5ff6f9185799902794a4"><div class="ttname"><a href="classxrpl_1_1NumberMantissaScaleGuard.html#aabffb0286a9c5ff6f9185799902794a4">xrpl::NumberMantissaScaleGuard::~NumberMantissaScaleGuard</a></div><div class="ttdeci">~NumberMantissaScaleGuard()</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00809">Number.h:809</a></div></div>
<div class="ttc" id="aclassxrpl_1_1NumberMantissaScaleGuard_html_ae5a65abe6790e21814f8487284930683"><div class="ttname"><a href="classxrpl_1_1NumberMantissaScaleGuard.html#ae5a65abe6790e21814f8487284930683">xrpl::NumberMantissaScaleGuard::operator=</a></div><div class="ttdeci">NumberMantissaScaleGuard &amp; operator=(NumberMantissaScaleGuard const &amp;)=delete</div></div>
<div class="ttc" id="aclassxrpl_1_1NumberRoundModeGuard_html"><div class="ttname"><a href="classxrpl_1_1NumberRoundModeGuard.html">xrpl::NumberRoundModeGuard</a></div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00779">Number.h:780</a></div></div>
<div class="ttc" id="aclassxrpl_1_1NumberRoundModeGuard_html_a631bb7eb98880117bd7a8c4955f824af"><div class="ttname"><a href="classxrpl_1_1NumberRoundModeGuard.html#a631bb7eb98880117bd7a8c4955f824af">xrpl::NumberRoundModeGuard::operator=</a></div><div class="ttdeci">NumberRoundModeGuard &amp; operator=(NumberRoundModeGuard const &amp;)=delete</div></div>
<div class="ttc" id="aclassxrpl_1_1NumberRoundModeGuard_html_a74869c9c99644cb3effe261768e05f1c"><div class="ttname"><a href="classxrpl_1_1NumberRoundModeGuard.html#a74869c9c99644cb3effe261768e05f1c">xrpl::NumberRoundModeGuard::NumberRoundModeGuard</a></div><div class="ttdeci">NumberRoundModeGuard(NumberRoundModeGuard const &amp;)=delete</div></div>
<div class="ttc" id="aclassxrpl_1_1NumberRoundModeGuard_html_aa90dc7614c6457359b78e47402298ffd"><div class="ttname"><a href="classxrpl_1_1NumberRoundModeGuard.html#aa90dc7614c6457359b78e47402298ffd">xrpl::NumberRoundModeGuard::NumberRoundModeGuard</a></div><div class="ttdeci">NumberRoundModeGuard(Number::rounding_mode mode) noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00784">Number.h:784</a></div></div>
<div class="ttc" id="aclassxrpl_1_1NumberRoundModeGuard_html_ac3ae2713cd2c95535776abb2441dbcd7"><div class="ttname"><a href="classxrpl_1_1NumberRoundModeGuard.html#ac3ae2713cd2c95535776abb2441dbcd7">xrpl::NumberRoundModeGuard::saved_</a></div><div class="ttdeci">saveNumberRoundMode saved_</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00781">Number.h:781</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_1_1Guard_html"><div class="ttname"><a href="classxrpl_1_1Number_1_1Guard.html">xrpl::Number::Guard</a></div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00067">Number.cpp:68</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html"><div class="ttname"><a href="classxrpl_1_1Number.html">xrpl::Number</a></div><div class="ttdoc">Number is a floating point type that can represent a wide range of values.</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00206">Number.h:207</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a03e477cf32a66e5a136e5edfacd71994"><div class="ttname"><a href="classxrpl_1_1Number.html#a03e477cf32a66e5a136e5edfacd71994">xrpl::Number::operator++</a></div><div class="ttdeci">Number &amp; operator++()</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00594">Number.h:594</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a093f23a479cd1866c672060e14ccbb4e"><div class="ttname"><a href="classxrpl_1_1Number.html#a093f23a479cd1866c672060e14ccbb4e">xrpl::Number::operator&lt;</a></div><div class="ttdeci">friend constexpr bool operator&lt;(Number const &amp;x, Number const &amp;y) noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00306">Number.h:307</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a0981e6287c63318941d3b12d5c51c419"><div class="ttname"><a href="classxrpl_1_1Number.html#a0981e6287c63318941d3b12d5c51c419">xrpl::Number::oneSmall</a></div><div class="ttdeci">static constexpr Number oneSmall()</div><div class="ttdoc">oneSmall is needed because the ranges are private</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00327">Number.cpp:327</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a0c71d26d6de400ed12cf3923157aca31"><div class="ttname"><a href="classxrpl_1_1Number.html#a0c71d26d6de400ed12cf3923157aca31">xrpl::Number::getround</a></div><div class="ttdeci">static rounding_mode getround()</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00033">Number.cpp:33</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a10e51120e8e4f1f3a08d5211069658f6"><div class="ttname"><a href="classxrpl_1_1Number.html#a10e51120e8e4f1f3a08d5211069658f6">xrpl::Number::mantissa_</a></div><div class="ttdeci">internalrep mantissa_</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00212">Number.h:212</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a1be401c2cd91d8311dbc55bf6038a492"><div class="ttname"><a href="classxrpl_1_1Number.html#a1be401c2cd91d8311dbc55bf6038a492">xrpl::Number::minMantissa</a></div><div class="ttdeci">static internalrep minMantissa()</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00401">Number.h:401</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a223cbe5eabe0bea1d9156f05c971e5c3"><div class="ttname"><a href="classxrpl_1_1Number.html#a223cbe5eabe0bea1d9156f05c971e5c3">xrpl::Number::mantissa</a></div><div class="ttdeci">constexpr rep mantissa() const noexcept</div><div class="ttdoc">Returns the mantissa of the external view of the Number.</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00542">Number.h:542</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a274b459d7478df80795caed8a56d4f00"><div class="ttname"><a href="classxrpl_1_1Number.html#a274b459d7478df80795caed8a56d4f00">xrpl::Number::setround</a></div><div class="ttdeci">static rounding_mode setround(rounding_mode mode)</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00039">Number.cpp:39</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a3328c67dc592a6c82505643458bbe430"><div class="ttname"><a href="classxrpl_1_1Number.html#a3328c67dc592a6c82505643458bbe430">xrpl::Number::normalize</a></div><div class="ttdeci">static void normalize(bool &amp;negative, T &amp;mantissa, int &amp;exponent, internalrep const &amp;minMantissa, internalrep const &amp;maxMantissa)</div><div class="ttdoc">Normalize Number components to an arbitrary range.</div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a3d6e8e71ee3641f8d21041d3ade5aed0"><div class="ttname"><a href="classxrpl_1_1Number.html#a3d6e8e71ee3641f8d21041d3ade5aed0">xrpl::Number::truncate</a></div><div class="ttdeci">Number truncate() const noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00805">Number.cpp:805</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a3f93a0fd9a95f114e3ab7d12ea0a1f7d"><div class="ttname"><a href="classxrpl_1_1Number.html#a3f93a0fd9a95f114e3ab7d12ea0a1f7d">xrpl::Number::to_string</a></div><div class="ttdeci">friend std::string to_string(Number const &amp;amount)</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00823">Number.cpp:823</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a40e08f75077897215c66d102b5b75f95"><div class="ttname"><a href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95">xrpl::Number::rounding_mode</a></div><div class="ttdeci">rounding_mode</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00380">Number.h:380</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a40e08f75077897215c66d102b5b75f95aa0120ec63f8c549bc0bf1c945e36e779"><div class="ttname"><a href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95aa0120ec63f8c549bc0bf1c945e36e779">xrpl::Number::towards_zero</a></div><div class="ttdeci">@ towards_zero</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00380">Number.h:380</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a40e08f75077897215c66d102b5b75f95aa1683b7e2939668142366896b111931a"><div class="ttname"><a href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95aa1683b7e2939668142366896b111931a">xrpl::Number::to_nearest</a></div><div class="ttdeci">@ to_nearest</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00380">Number.h:380</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a40e08f75077897215c66d102b5b75f95aaf71effcd4dcf7bc7c89bb51e27e8b17"><div class="ttname"><a href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95aaf71effcd4dcf7bc7c89bb51e27e8b17">xrpl::Number::upward</a></div><div class="ttdeci">@ upward</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00380">Number.h:380</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a40e08f75077897215c66d102b5b75f95aefac6c5bd63a85dcee4fc69baf788d40"><div class="ttname"><a href="classxrpl_1_1Number.html#a40e08f75077897215c66d102b5b75f95aefac6c5bd63a85dcee4fc69baf788d40">xrpl::Number::downward</a></div><div class="ttdeci">@ downward</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00380">Number.h:380</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a484ed599d53a6c6f57cd6b6163dca4d6"><div class="ttname"><a href="classxrpl_1_1Number.html#a484ed599d53a6c6f57cd6b6163dca4d6">xrpl::Number::smallRange</a></div><div class="ttdeci">static constexpr MantissaRange smallRange</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00439">Number.h:439</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a48a40dabffeda7599db182132de1dc6c"><div class="ttname"><a href="classxrpl_1_1Number.html#a48a40dabffeda7599db182132de1dc6c">xrpl::Number::normalizeToRange</a></div><div class="ttdeci">std::pair&lt; T, int &gt; normalizeToRange(T minMantissa, T maxMantissa) const</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00691">Number.h:691</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a4f3e98cecc5435852a47d61a2d80d02f"><div class="ttname"><a href="classxrpl_1_1Number.html#a4f3e98cecc5435852a47d61a2d80d02f">xrpl::Number::doNormalize</a></div><div class="ttdeci">friend void doNormalize(bool &amp;negative, T &amp;mantissa_, int &amp;exponent_, MantissaRange::rep const &amp;minMantissa, MantissaRange::rep const &amp;maxMantissa)</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00355">Number.cpp:355</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a5b91f73f5bb83bdca17bcd2378b612f8"><div class="ttname"><a href="classxrpl_1_1Number.html#a5b91f73f5bb83bdca17bcd2378b612f8">xrpl::Number::maxRep</a></div><div class="ttdeci">static constexpr internalrep maxRep</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00220">Number.h:220</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a5fe9717e45f2af1100c98e48e675ce78"><div class="ttname"><a href="classxrpl_1_1Number.html#a5fe9717e45f2af1100c98e48e675ce78">xrpl::Number::operator-</a></div><div class="ttdeci">constexpr Number operator-() const noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00584">Number.h:584</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a67e66cfedbb2ff6c670917e4872da14f"><div class="ttname"><a href="classxrpl_1_1Number.html#a67e66cfedbb2ff6c670917e4872da14f">xrpl::Number::internalrep</a></div><div class="ttdeci">MantissaRange::rep internalrep</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00209">Number.h:209</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a6b53fc8d0ce290926d72e247b95f4d30"><div class="ttname"><a href="classxrpl_1_1Number.html#a6b53fc8d0ce290926d72e247b95f4d30">xrpl::Number::max</a></div><div class="ttdeci">static Number max() noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00668">Number.h:668</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a73b1712a4714d18b02c0b9158a3ac201"><div class="ttname"><a href="classxrpl_1_1Number.html#a73b1712a4714d18b02c0b9158a3ac201">xrpl::Number::mode_</a></div><div class="ttdeci">static thread_local rounding_mode mode_</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00436">Number.h:436</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a7cf828e636abd921b2ff2bca7a7bc8b8"><div class="ttname"><a href="classxrpl_1_1Number.html#a7cf828e636abd921b2ff2bca7a7bc8b8">xrpl::Number::minExponent</a></div><div class="ttdeci">static constexpr int minExponent</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00217">Number.h:217</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a7e74431e27ce46a0fef1bbe2bfd4c167"><div class="ttname"><a href="classxrpl_1_1Number.html#a7e74431e27ce46a0fef1bbe2bfd4c167">xrpl::Number::operator+</a></div><div class="ttdeci">constexpr Number operator+() const noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00578">Number.h:578</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a7ea1c37054f1738dabf2b0a8032d3171"><div class="ttname"><a href="classxrpl_1_1Number.html#a7ea1c37054f1738dabf2b0a8032d3171">xrpl::Number::operator--</a></div><div class="ttdeci">Number &amp; operator--()</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00609">Number.h:609</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a80f5761398748f4d740631511d344701"><div class="ttname"><a href="classxrpl_1_1Number.html#a80f5761398748f4d740631511d344701">xrpl::Number::shiftExponent</a></div><div class="ttdeci">Number shiftExponent(int exponentDelta) const</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00481">Number.cpp:481</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a8246d4c14aa2bf7aa9a46c76eb671443"><div class="ttname"><a href="classxrpl_1_1Number.html#a8246d4c14aa2bf7aa9a46c76eb671443">xrpl::Number::operator!=</a></div><div class="ttdeci">friend constexpr bool operator!=(Number const &amp;x, Number const &amp;y) noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00301">Number.h:301</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a89a1e2cc1d2d69c86bbb03340284a6b7"><div class="ttname"><a href="classxrpl_1_1Number.html#a89a1e2cc1d2d69c86bbb03340284a6b7">xrpl::Number::setMantissaScale</a></div><div class="ttdeci">static void setMantissaScale(MantissaRange::mantissa_scale scale)</div><div class="ttdoc">Changes which mantissa scale is used for normalization.</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00051">Number.cpp:51</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a95f708454f6da9e5f04f380273b0eb78"><div class="ttname"><a href="classxrpl_1_1Number.html#a95f708454f6da9e5f04f380273b0eb78">xrpl::Number::operator&gt;=</a></div><div class="ttdeci">friend constexpr bool operator&gt;=(Number const &amp;x, Number const &amp;y) noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00359">Number.h:359</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a966f5eca09ff61f50f0c377dea86c798"><div class="ttname"><a href="classxrpl_1_1Number.html#a966f5eca09ff61f50f0c377dea86c798">xrpl::Number::externalToInternal</a></div><div class="ttdeci">static internalrep externalToInternal(rep mantissa)</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00308">Number.cpp:308</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_a992a7b726b84f3e57bdba64acc107ba9"><div class="ttname"><a href="classxrpl_1_1Number.html#a992a7b726b84f3e57bdba64acc107ba9">xrpl::Number::maxMantissa</a></div><div class="ttdeci">static internalrep maxMantissa()</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00407">Number.h:407</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_aa164f49489cb861950f4477b1f19a211"><div class="ttname"><a href="classxrpl_1_1Number.html#aa164f49489cb861950f4477b1f19a211">xrpl::Number::isnormal</a></div><div class="ttdeci">bool isnormal() const noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00680">Number.h:680</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_aa4058fefe18f86063240cfd2ba985358"><div class="ttname"><a href="classxrpl_1_1Number.html#aa4058fefe18f86063240cfd2ba985358">xrpl::Number::exponent</a></div><div class="ttdeci">constexpr int exponent() const noexcept</div><div class="ttdoc">Returns the exponent of the external view of the Number.</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00563">Number.h:563</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_aa41a4f7784291ffd76634c7fc567f6fb"><div class="ttname"><a href="classxrpl_1_1Number.html#aa41a4f7784291ffd76634c7fc567f6fb">xrpl::Number::maxExponent</a></div><div class="ttdeci">static constexpr int maxExponent</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00218">Number.h:218</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ab09940caeba7ca6f6c57f4dc5220f4f1"><div class="ttname"><a href="classxrpl_1_1Number.html#ab09940caeba7ca6f6c57f4dc5220f4f1">xrpl::Number::operator&lt;&lt;</a></div><div class="ttdeci">friend std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, Number const &amp;x)</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00364">Number.h:365</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ab2381c12707d6e7e9a7704b4733ae3af"><div class="ttname"><a href="classxrpl_1_1Number.html#ab2381c12707d6e7e9a7704b4733ae3af">xrpl::Number::range_</a></div><div class="ttdeci">static thread_local std::reference_wrapper&lt; MantissaRange const &gt; range_</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00457">Number.h:457</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ab83e07ef7e17606d7bcaeabe05ec1236"><div class="ttname"><a href="classxrpl_1_1Number.html#ab83e07ef7e17606d7bcaeabe05ec1236">xrpl::Number::root2</a></div><div class="ttdeci">friend Number root2(Number f)</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l01010">Number.cpp:1010</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_abac88bc4caeeaddc6829b42af4363e75"><div class="ttname"><a href="classxrpl_1_1Number.html#abac88bc4caeeaddc6829b42af4363e75">xrpl::Number::signum</a></div><div class="ttdeci">constexpr int signum() const noexcept</div><div class="ttdoc">Return the sign of the amount.</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00338">Number.h:338</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_abee8ba813c8f780de67121b088749569"><div class="ttname"><a href="classxrpl_1_1Number.html#abee8ba813c8f780de67121b088749569">xrpl::Number::operator-=</a></div><div class="ttdeci">Number &amp; operator-=(Number const &amp;x)</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00624">Number.h:624</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ac138187ff4d421f4158228642551756c"><div class="ttname"><a href="classxrpl_1_1Number.html#ac138187ff4d421f4158228642551756c">xrpl::Number::getMantissaScale</a></div><div class="ttdeci">static MantissaRange::mantissa_scale getMantissaScale()</div><div class="ttdoc">Returns which mantissa scale is currently in use for normalization.</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00045">Number.cpp:45</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ac64ccc5f642ddbfcdd59d5e22b9185a7"><div class="ttname"><a href="classxrpl_1_1Number.html#ac64ccc5f642ddbfcdd59d5e22b9185a7">xrpl::Number::min</a></div><div class="ttdeci">static Number min() noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00662">Number.h:662</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ac901dca6c4ae9b77298650a82ad606f3"><div class="ttname"><a href="classxrpl_1_1Number.html#ac901dca6c4ae9b77298650a82ad606f3">xrpl::Number::exponent_</a></div><div class="ttdeci">int exponent_</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00213">Number.h:213</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ace04e61c20eedabf3ead4454049d9126"><div class="ttname"><a href="classxrpl_1_1Number.html#ace04e61c20eedabf3ead4454049d9126">xrpl::Number::largeRange</a></div><div class="ttdeci">static constexpr MantissaRange largeRange</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00446">Number.h:446</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ad471bfbafa5464af9c8b498e125d9873"><div class="ttname"><a href="classxrpl_1_1Number.html#ad471bfbafa5464af9c8b498e125d9873">xrpl::Number::normalize</a></div><div class="ttdeci">void normalize()</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00471">Number.cpp:471</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ad7b3dcf0314ef5327550516bdb1fa7d2"><div class="ttname"><a href="classxrpl_1_1Number.html#ad7b3dcf0314ef5327550516bdb1fa7d2">xrpl::Number::one</a></div><div class="ttdeci">static Number one()</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00343">Number.cpp:343</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_adbf347c98a775ae3c4bde68d36d6e36c"><div class="ttname"><a href="classxrpl_1_1Number.html#adbf347c98a775ae3c4bde68d36d6e36c">xrpl::Number::Number</a></div><div class="ttdeci">constexpr Number()=default</div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ae07fcd3fb3a2d61a8c4491e43c3d99b2"><div class="ttname"><a href="classxrpl_1_1Number.html#ae07fcd3fb3a2d61a8c4491e43c3d99b2">xrpl::Number::oneLarge</a></div><div class="ttdeci">static constexpr Number oneLarge()</div><div class="ttdoc">oneLarge is needed because the ranges are private</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00335">Number.cpp:335</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ae30cef79b02481287824413ac35f4595"><div class="ttname"><a href="classxrpl_1_1Number.html#ae30cef79b02481287824413ac35f4595">xrpl::Number::lowest</a></div><div class="ttdeci">static Number lowest() noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00674">Number.h:674</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ae6da4d1edef20960bc7d37aa0a731fe0"><div class="ttname"><a href="classxrpl_1_1Number.html#ae6da4d1edef20960bc7d37aa0a731fe0">xrpl::Number::negative_</a></div><div class="ttdeci">bool negative_</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00211">Number.h:211</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_ae9df36fbc7e4a5663ce40454d30999ce"><div class="ttname"><a href="classxrpl_1_1Number.html#ae9df36fbc7e4a5663ce40454d30999ce">xrpl::Number::mantissaLog</a></div><div class="ttdeci">static int mantissaLog()</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00413">Number.h:413</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_af160b78055e721a7c9b46c9556b8cc5b"><div class="ttname"><a href="classxrpl_1_1Number.html#af160b78055e721a7c9b46c9556b8cc5b">xrpl::Number::operator&lt;=</a></div><div class="ttdeci">friend constexpr bool operator&lt;=(Number const &amp;x, Number const &amp;y) noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00352">Number.h:353</a></div></div>
<div class="ttc" id="aclassxrpl_1_1Number_html_af59083b29186c11c2808135c5ff075b8"><div class="ttname"><a href="classxrpl_1_1Number.html#af59083b29186c11c2808135c5ff075b8">xrpl::Number::root</a></div><div class="ttdeci">friend Number root(Number f, unsigned d)</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00938">Number.cpp:938</a></div></div>
<div class="ttc" id="aclassxrpl_1_1saveNumberRoundMode_html"><div class="ttname"><a href="classxrpl_1_1saveNumberRoundMode.html">xrpl::saveNumberRoundMode</a></div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00758">Number.h:759</a></div></div>
<div class="ttc" id="aclassxrpl_1_1saveNumberRoundMode_html_a3b95c30dcc97da21509afa7c45bf4a38"><div class="ttname"><a href="classxrpl_1_1saveNumberRoundMode.html#a3b95c30dcc97da21509afa7c45bf4a38">xrpl::saveNumberRoundMode::mode_</a></div><div class="ttdeci">Number::rounding_mode mode_</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00760">Number.h:760</a></div></div>
<div class="ttc" id="aclassxrpl_1_1saveNumberRoundMode_html_a96ebfee898eb50d645db1389322ba40f"><div class="ttname"><a href="classxrpl_1_1saveNumberRoundMode.html#a96ebfee898eb50d645db1389322ba40f">xrpl::saveNumberRoundMode::saveNumberRoundMode</a></div><div class="ttdeci">saveNumberRoundMode(Number::rounding_mode mode) noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00767">Number.h:767</a></div></div>
<div class="ttc" id="aclassxrpl_1_1saveNumberRoundMode_html_aab239e255c0f7afc1f866cb04d8be6d2"><div class="ttname"><a href="classxrpl_1_1saveNumberRoundMode.html#aab239e255c0f7afc1f866cb04d8be6d2">xrpl::saveNumberRoundMode::~saveNumberRoundMode</a></div><div class="ttdeci">~saveNumberRoundMode()</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00763">Number.h:763</a></div></div>
<div class="ttc" id="aclassxrpl_1_1saveNumberRoundMode_html_aeec05ec68eaaf9cc65ebf00414abc787"><div class="ttname"><a href="classxrpl_1_1saveNumberRoundMode.html#aeec05ec68eaaf9cc65ebf00414abc787">xrpl::saveNumberRoundMode::saveNumberRoundMode</a></div><div class="ttdeci">saveNumberRoundMode(saveNumberRoundMode const &amp;)=delete</div></div>
<div class="ttc" id="aclassxrpl_1_1saveNumberRoundMode_html_afc606d02272caeeaf62eda72478d344c"><div class="ttname"><a href="classxrpl_1_1saveNumberRoundMode.html#afc606d02272caeeaf62eda72478d344c">xrpl::saveNumberRoundMode::operator=</a></div><div class="ttdeci">saveNumberRoundMode &amp; operator=(saveNumberRoundMode const &amp;)=delete</div></div>
<div class="ttc" id="aconceptxrpl_1_1Integral64_html"><div class="ttname"><a href="conceptxrpl_1_1Integral64.html">xrpl::Integral64</a></div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00106">Number.h:106</a></div></div>
<div class="ttc" id="acstdint_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/cstdint.html">cstdint</a></div></div>
<div class="ttc" id="afunctional_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/functional.html">functional</a></div></div>
<div class="ttc" id="ainteger_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint64_t</a></div></div>
<div class="ttc" id="ais_same_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/is_same.html">std::is_same_v</a></div><div class="ttdeci">T is_same_v</div></div>
<div class="ttc" id="alimits_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/limits.html">limits</a></div></div>
<div class="ttc" id="alowest_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/numeric_limits/lowest.html">std::numeric_limits::lowest</a></div><div class="ttdeci">T lowest(T... args)</div></div>
<div class="ttc" id="amake_pair_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/pair/make_pair.html">std::make_pair</a></div><div class="ttdeci">T make_pair(T... args)</div></div>
<div class="ttc" id="amax_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/numeric_limits/max.html">std::numeric_limits::max</a></div><div class="ttdeci">T max(T... args)</div></div>
<div class="ttc" id="amin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/numeric_limits/min.html">std::numeric_limits::min</a></div><div class="ttdeci">T min(T... args)</div></div>
<div class="ttc" id="anamespacexrpl_html"><div class="ttname"><a href="namespacexrpl.html">xrpl</a></div><div class="ttdoc">Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.</div><div class="ttdef"><b>Definition</b> <a href="algorithm_8h_source.html#l00005">algorithm.h:5</a></div></div>
<div class="ttc" id="anamespacexrpl_html_a2a721bcaa03cd7eb61b1bdc1d95c9ef0"><div class="ttname"><a href="namespacexrpl.html#a2a721bcaa03cd7eb61b1bdc1d95c9ef0">xrpl::minMantissa</a></div><div class="ttdeci">static std::int64_t constexpr minMantissa</div><div class="ttdef"><b>Definition</b> <a href="IOUAmount_8cpp_source.html#l00048">IOUAmount.cpp:48</a></div></div>
<div class="ttc" id="anamespacexrpl_html_a2ad07fee9dccb808b0ea4d63c933b138"><div class="ttname"><a href="namespacexrpl.html#a2ad07fee9dccb808b0ea4d63c933b138">xrpl::operator+</a></div><div class="ttdeci">constexpr base_uint&lt; Bits, Tag &gt; operator+(base_uint&lt; Bits, Tag &gt; const &amp;a, base_uint&lt; Bits, Tag &gt; const &amp;b)</div><div class="ttdef"><b>Definition</b> <a href="base__uint_8h_source.html#l00589">base_uint.h:589</a></div></div>
<div class="ttc" id="anamespacexrpl_html_a341da9ace25260efeda15c921f1dbf90"><div class="ttname"><a href="namespacexrpl.html#a341da9ace25260efeda15c921f1dbf90">xrpl::operator-</a></div><div class="ttdeci">Number operator-(Number const &amp;x, Number const &amp;y)</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00638">Number.h:638</a></div></div>
<div class="ttc" id="anamespacexrpl_html_a34fabf5c9fc5c30e86623b6a5eb0ac7d"><div class="ttname"><a href="namespacexrpl.html#a34fabf5c9fc5c30e86623b6a5eb0ac7d">xrpl::range</a></div><div class="ttdeci">ClosedInterval&lt; T &gt; range(T low, T high)</div><div class="ttdoc">Create a closed range interval.</div><div class="ttdef"><b>Definition</b> <a href="RangeSet_8h_source.html#l00034">RangeSet.h:34</a></div></div>
<div class="ttc" id="anamespacexrpl_html_a35ce7572092b98720a52fa343c6f2fa9"><div class="ttname"><a href="namespacexrpl.html#a35ce7572092b98720a52fa343c6f2fa9">xrpl::to_string</a></div><div class="ttdeci">std::string to_string(base_uint&lt; Bits, Tag &gt; const &amp;a)</div><div class="ttdef"><b>Definition</b> <a href="base__uint_8h_source.html#l00597">base_uint.h:597</a></div></div>
<div class="ttc" id="anamespacexrpl_html_a37264e625a18dabd56787db7fedd5e75"><div class="ttname"><a href="namespacexrpl.html#a37264e625a18dabd56787db7fedd5e75">xrpl::numZero</a></div><div class="ttdeci">static constexpr Number numZero</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00515">Number.h:515</a></div></div>
<div class="ttc" id="anamespacexrpl_html_a41a6396d3d97e469da8448799a22041b"><div class="ttname"><a href="namespacexrpl.html#a41a6396d3d97e469da8448799a22041b">xrpl::operator/</a></div><div class="ttdeci">Number operator/(Number const &amp;x, Number const &amp;y)</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00654">Number.h:654</a></div></div>
<div class="ttc" id="anamespacexrpl_html_a5a08adf1bad37c44d2ada7ae983dd12f"><div class="ttname"><a href="namespacexrpl.html#a5a08adf1bad37c44d2ada7ae983dd12f">xrpl::root</a></div><div class="ttdeci">Number root(Number f, unsigned d)</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00938">Number.cpp:938</a></div></div>
<div class="ttc" id="anamespacexrpl_html_a5dcb604ca5c6c6fdde47b8d7c20bec54"><div class="ttname"><a href="namespacexrpl.html#a5dcb604ca5c6c6fdde47b8d7c20bec54">xrpl::power</a></div><div class="ttdeci">Number power(Number const &amp;f, unsigned n)</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00915">Number.cpp:915</a></div></div>
<div class="ttc" id="anamespacexrpl_html_a6c5adc6e0dafc4169a6407718d8d626b"><div class="ttname"><a href="namespacexrpl.html#a6c5adc6e0dafc4169a6407718d8d626b">xrpl::operator*</a></div><div class="ttdeci">Number operator*(Number const &amp;x, Number const &amp;y)</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00646">Number.h:646</a></div></div>
<div class="ttc" id="anamespacexrpl_html_a8861b5952e8e1912afca157d54a38d78"><div class="ttname"><a href="namespacexrpl.html#a8861b5952e8e1912afca157d54a38d78">xrpl::logTen</a></div><div class="ttdeci">constexpr std::optional&lt; int &gt; logTen(T value)</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00021">Number.h:21</a></div></div>
<div class="ttc" id="anamespacexrpl_html_aa0e63a106d5965ddfbf3c6a18b722bc7"><div class="ttname"><a href="namespacexrpl.html#aa0e63a106d5965ddfbf3c6a18b722bc7">xrpl::maxMantissa</a></div><div class="ttdeci">static std::int64_t constexpr maxMantissa</div><div class="ttdef"><b>Definition</b> <a href="IOUAmount_8cpp_source.html#l00049">IOUAmount.cpp:49</a></div></div>
<div class="ttc" id="anamespacexrpl_html_aa609454f90d5eb85c622b787219d069c"><div class="ttname"><a href="namespacexrpl.html#aa609454f90d5eb85c622b787219d069c">xrpl::isPowerOfTen</a></div><div class="ttdeci">constexpr bool isPowerOfTen(T value)</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00036">Number.h:36</a></div></div>
<div class="ttc" id="anamespacexrpl_html_ab334d11f65b71b91e2c6c907090398cb"><div class="ttname"><a href="namespacexrpl.html#ab334d11f65b71b91e2c6c907090398cb">xrpl::root2</a></div><div class="ttdeci">Number root2(Number f)</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l01010">Number.cpp:1010</a></div></div>
<div class="ttc" id="anamespacexrpl_html_ab8c3ab80a860de11f3803c7da500418a"><div class="ttname"><a href="namespacexrpl.html#ab8c3ab80a860de11f3803c7da500418a">xrpl::abs</a></div><div class="ttdeci">constexpr Number abs(Number x) noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00706">Number.h:706</a></div></div>
<div class="ttc" id="anamespacexrpl_html_aca8d3524fa9df703978f872ca8bf8c5a"><div class="ttname"><a href="namespacexrpl.html#aca8d3524fa9df703978f872ca8bf8c5a">xrpl::sign</a></div><div class="ttdeci">Buffer sign(PublicKey const &amp;pk, SecretKey const &amp;sk, Slice const &amp;message)</div><div class="ttdoc">Generate a signature for a message.</div><div class="ttdef"><b>Definition</b> <a href="SecretKey_8cpp_source.html#l00228">SecretKey.cpp:228</a></div></div>
<div class="ttc" id="anamespacexrpl_html_ad18df7bd6f8278f85ab255aab39c6ae5"><div class="ttname"><a href="namespacexrpl.html#ad18df7bd6f8278f85ab255aab39c6ae5">xrpl::squelch</a></div><div class="ttdeci">constexpr Number squelch(Number const &amp;x, Number const &amp;limit) noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00737">Number.h:737</a></div></div>
<div class="ttc" id="aoperator_bool_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/optional/operator_bool.html">std::optional::has_value</a></div><div class="ttdeci">T has_value(T... args)</div></div>
<div class="ttc" id="aoptional_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/optional.html">optional</a></div></div>
<div class="ttc" id="aostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/ostream.html">ostream</a></div></div>
<div class="ttc" id="apair_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a></div></div>
<div class="ttc" id="areference_wrapper_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper.html">std::reference_wrapper</a></div></div>
<div class="ttc" id="aruntime_error_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/error/runtime_error.html">std::runtime_error</a></div></div>
<div class="ttc" id="astring_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/string.html">string</a></div></div>
<div class="ttc" id="astructxrpl_1_1MantissaRange_html"><div class="ttname"><a href="structxrpl_1_1MantissaRange.html">xrpl::MantissaRange</a></div><div class="ttdoc">MantissaRange defines a range for the mantissa of a normalized Number.</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00070">Number.h:71</a></div></div>
<div class="ttc" id="astructxrpl_1_1MantissaRange_html_a20f7a2bea468b1da813e45c7881e29f2"><div class="ttname"><a href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2">xrpl::MantissaRange::mantissa_scale</a></div><div class="ttdeci">mantissa_scale</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00073">Number.h:73</a></div></div>
<div class="ttc" id="astructxrpl_1_1MantissaRange_html_a20f7a2bea468b1da813e45c7881e29f2a0b64e613fbbea29706141a2e1a08ffa5"><div class="ttname"><a href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2a0b64e613fbbea29706141a2e1a08ffa5">xrpl::MantissaRange::large</a></div><div class="ttdeci">@ large</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00073">Number.h:73</a></div></div>
<div class="ttc" id="astructxrpl_1_1MantissaRange_html_a20f7a2bea468b1da813e45c7881e29f2a159d6fc6b77bffdac828a75a473aea42"><div class="ttname"><a href="structxrpl_1_1MantissaRange.html#a20f7a2bea468b1da813e45c7881e29f2a159d6fc6b77bffdac828a75a473aea42">xrpl::MantissaRange::small</a></div><div class="ttdeci">@ small</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00073">Number.h:73</a></div></div>
<div class="ttc" id="astructxrpl_1_1MantissaRange_html_a40179916ebaf305e2ebe5d22aa6740d7"><div class="ttname"><a href="structxrpl_1_1MantissaRange.html#a40179916ebaf305e2ebe5d22aa6740d7">xrpl::MantissaRange::rep</a></div><div class="ttdeci">std::uint64_t rep</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00072">Number.h:72</a></div></div>
<div class="ttc" id="astructxrpl_1_1MantissaRange_html_a5605e543c0da8e19ea6f1447b393cc7d"><div class="ttname"><a href="structxrpl_1_1MantissaRange.html#a5605e543c0da8e19ea6f1447b393cc7d">xrpl::MantissaRange::max</a></div><div class="ttdeci">rep max</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00081">Number.h:81</a></div></div>
<div class="ttc" id="astructxrpl_1_1MantissaRange_html_a6e5cafa1836416d4069e77a8fb54363c"><div class="ttname"><a href="structxrpl_1_1MantissaRange.html#a6e5cafa1836416d4069e77a8fb54363c">xrpl::MantissaRange::min</a></div><div class="ttdeci">rep min</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00080">Number.h:80</a></div></div>
<div class="ttc" id="astructxrpl_1_1MantissaRange_html_a7647e186ea279480ec4603047e12ae6d"><div class="ttname"><a href="structxrpl_1_1MantissaRange.html#a7647e186ea279480ec4603047e12ae6d">xrpl::MantissaRange::scale</a></div><div class="ttdeci">mantissa_scale scale</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00083">Number.h:83</a></div></div>
<div class="ttc" id="astructxrpl_1_1MantissaRange_html_a97dd7200854e70532f806259c5976e80"><div class="ttname"><a href="structxrpl_1_1MantissaRange.html#a97dd7200854e70532f806259c5976e80">xrpl::MantissaRange::MantissaRange</a></div><div class="ttdeci">constexpr MantissaRange(mantissa_scale scale_)</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00075">Number.h:75</a></div></div>
<div class="ttc" id="astructxrpl_1_1MantissaRange_html_abf6fe863255fa655ce7d55373389c55c"><div class="ttname"><a href="structxrpl_1_1MantissaRange.html#abf6fe863255fa655ce7d55373389c55c">xrpl::MantissaRange::getMin</a></div><div class="ttdeci">static constexpr rep getMin(mantissa_scale scale_)</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00087">Number.h:87</a></div></div>
<div class="ttc" id="astructxrpl_1_1MantissaRange_html_aea1c72494866d67e120bd23737080a7e"><div class="ttname"><a href="structxrpl_1_1MantissaRange.html#aea1c72494866d67e120bd23737080a7e">xrpl::MantissaRange::log</a></div><div class="ttdeci">int log</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00082">Number.h:82</a></div></div>
<div class="ttc" id="astructxrpl_1_1Number_1_1normalized_html"><div class="ttname"><a href="structxrpl_1_1Number_1_1normalized.html">xrpl::Number::normalized</a></div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00234">Number.h:235</a></div></div>
<div class="ttc" id="astructxrpl_1_1Number_1_1normalized_html_afc6c3deddbff53614ae4e1c5a8d2b2b7"><div class="ttname"><a href="structxrpl_1_1Number_1_1normalized.html#afc6c3deddbff53614ae4e1c5a8d2b2b7">xrpl::Number::normalized::normalized</a></div><div class="ttdeci">normalized()=default</div></div>
<div class="ttc" id="astructxrpl_1_1Number_1_1unchecked_html"><div class="ttname"><a href="structxrpl_1_1Number_1_1unchecked.html">xrpl::Number::unchecked</a></div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00225">Number.h:226</a></div></div>
<div class="ttc" id="astructxrpl_1_1Number_1_1unchecked_html_a33fe59a110af886858d4e3988051e856"><div class="ttname"><a href="structxrpl_1_1Number_1_1unchecked.html#a33fe59a110af886858d4e3988051e856">xrpl::Number::unchecked::unchecked</a></div><div class="ttdeci">unchecked()=default</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>