Files
rippled/Number_8h_source.html
2025-11-04 00:36:48 -08:00

640 lines
107 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">#ifndef XRPL_BASICS_NUMBER_H_INCLUDED</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define XRPL_BASICS_NUMBER_H_INCLUDED</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</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="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/limits.html">limits</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/ostream.html">ostream</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/string.html">string</a>&gt;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceripple.html">ripple</a> {</div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="keyword">class </span>Number;</div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><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="l00014" name="l00014"></a><span class="lineno"> 14</span><a class="code hl_function" href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">to_string</a>(Number <span class="keyword">const</span>&amp; amount);</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
<div class="foldopen" id="foldopen00016" data-start="{" data-end="};">
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html"> 16</a></span><span class="keyword">class </span><a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span>{</div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a8d2697ce4073b76f05e0480a9b454a66"> 18</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="l00019" name="l00019"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f"> 19</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="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a>{0};</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a62582b28d9183e7618fec0f0458331ab"> 20</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="classripple_1_1Number.html#a62582b28d9183e7618fec0f0458331ab">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="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// The range for the mantissa when normalized</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a550732b6c726cffc8a742569fe76aa6e"> 24</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">std::int64_t</a> <a class="code hl_variable" href="classripple_1_1Number.html#a550732b6c726cffc8a742569fe76aa6e">minMantissa</a> = 1&#39;000&#39;000&#39;000&#39;000&#39;000LL;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a18f3cb87112cf4436f8730a4f3333550"> 25</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">std::int64_t</a> <a class="code hl_variable" href="classripple_1_1Number.html#a18f3cb87112cf4436f8730a4f3333550">maxMantissa</a> = 9&#39;999&#39;999&#39;999&#39;999&#39;999LL;</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// The range for the exponent when normalized</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a72928c9b23a8c2b07024d2d3ff5eed73"> 28</a></span> <span class="keyword">constexpr</span> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="classripple_1_1Number.html#a72928c9b23a8c2b07024d2d3ff5eed73">minExponent</a> = -32768;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a388d646cceab9673a0edb81206e1e106"> 29</a></span> <span class="keyword">constexpr</span> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="classripple_1_1Number.html#a388d646cceab9673a0edb81206e1e106">maxExponent</a> = 32768;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="foldopen" id="foldopen00031" data-start="{" data-end="};">
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="structripple_1_1Number_1_1unchecked.html"> 31</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structripple_1_1Number_1_1unchecked.html">unchecked</a></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> {</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="structripple_1_1Number_1_1unchecked.html#a4b5ae38df8445354cb1e89089962245a"> 33</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="structripple_1_1Number_1_1unchecked.html#a4b5ae38df8445354cb1e89089962245a">unchecked</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> };</div>
</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#ac796fb449f3e3573c8d923bd3a905599"> 36</a></span> <span class="keyword">explicit</span> <span class="keyword">constexpr</span> <a class="code hl_function" href="classripple_1_1Number.html#ac796fb449f3e3573c8d923bd3a905599">Number</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <a class="code hl_function" href="classripple_1_1Number.html#ac796fb449f3e3573c8d923bd3a905599">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="classripple_1_1Number.html#aa072c34be5b612f33b61787ad8f09d0b">mantissa</a>);</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">explicit</span> <a class="code hl_function" href="classripple_1_1Number.html#ac796fb449f3e3573c8d923bd3a905599">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="classripple_1_1Number.html#aa072c34be5b612f33b61787ad8f09d0b">mantissa</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="classripple_1_1Number.html#a596b96835970375f7f93f272600939d2">exponent</a>);</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">explicit</span> <span class="keyword">constexpr</span> <a class="code hl_function" href="classripple_1_1Number.html#ac796fb449f3e3573c8d923bd3a905599">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="classripple_1_1Number.html#aa072c34be5b612f33b61787ad8f09d0b">mantissa</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="classripple_1_1Number.html#a596b96835970375f7f93f272600939d2">exponent</a>, <a class="code hl_struct" href="structripple_1_1Number_1_1unchecked.html">unchecked</a>) <span class="keyword">noexcept</span>;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</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="l00043" name="l00043"></a><span class="lineno"> 43</span> <a class="code hl_function" href="classripple_1_1Number.html#aa072c34be5b612f33b61787ad8f09d0b">mantissa</a>() const noexcept;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> constexpr <span class="keywordtype">int</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <a class="code hl_function" href="classripple_1_1Number.html#a596b96835970375f7f93f272600939d2">exponent</a>() const noexcept;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> constexpr <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> operator+() const noexcept;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> constexpr <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> operator-() const noexcept;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a>&amp;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> operator++();</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> operator++(<span class="keywordtype">int</span>);</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a>&amp;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> operator--();</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> operator--(<span class="keywordtype">int</span>);</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a>&amp;</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> operator+=(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> const&amp; x);</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a>&amp;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> operator-=(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> const&amp; x);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a>&amp;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> operator*=(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> const&amp; x);</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a>&amp;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> operator/=(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> const&amp; x);</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> static constexpr <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <a class="code hl_function" href="classripple_1_1Number.html#aabd1f9077e531f1e897d14b03ff1890b">min</a>() noexcept;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> static constexpr <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <a class="code hl_function" href="classripple_1_1Number.html#a6223254bb40f9a21dbdd8b360faaf401">max</a>() noexcept;</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> static constexpr <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <a class="code hl_function" href="classripple_1_1Number.html#aa3b9d51977cfb03cfaedd03295a85411">lowest</a>() noexcept;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> explicit</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</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="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> friend constexpr <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00086" data-start="{" data-end="};">
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#aab550f116e2d1270ef59d8541c35d1e9"> 86</a></span> operator==(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> const&amp; x, <a class="code hl_class" href="classripple_1_1Number.html">Number</a> const&amp; y) noexcept</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> {</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">return</span> x.mantissa_ == y.mantissa_ &amp;&amp; x.exponent_ == y.exponent_;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> }</div>
</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">friend</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00092" data-start="{" data-end="};">
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a8246d4c14aa2bf7aa9a46c76eb671443"> 92</a></span> <a class="code hl_friend" href="classripple_1_1Number.html#a8246d4c14aa2bf7aa9a46c76eb671443">operator!=</a>(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> {</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">return</span> !(x == y);</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> }</div>
</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="foldopen" id="foldopen00097" data-start="{" data-end="};">
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a093f23a479cd1866c672060e14ccbb4e"> 97</a></span> <span class="keyword">friend</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <a class="code hl_friend" href="classripple_1_1Number.html#a093f23a479cd1866c672060e14ccbb4e">operator&lt;</a>(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> {</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// If the two amounts have different signs (zero is treated as positive)</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// then the comparison is true iff the left is negative.</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> lneg = x.mantissa_ &lt; 0;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> rneg = y.mantissa_ &lt; 0;</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">if</span> (lneg != rneg)</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keywordflow">return</span> lneg;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// Both have same sign and the left is zero: the right must be</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// greater than 0.</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">if</span> (x.mantissa_ == 0)</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordflow">return</span> y.mantissa_ &gt; 0;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</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="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">if</span> (y.mantissa_ == 0)</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// Both have the same sign, compare by exponents:</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">if</span> (x.exponent_ &gt; y.exponent_)</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">return</span> lneg;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">if</span> (x.exponent_ &lt; y.exponent_)</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">return</span> !lneg;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="comment">// If equal exponents, compare mantissas</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">return</span> x.mantissa_ &lt; y.mantissa_;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> }</div>
</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keyword">constexpr</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen00129" data-start="{" data-end="}">
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#ad462e6e286e9be4019dd3389fbb0a8aa"> 129</a></span> <a class="code hl_function" href="classripple_1_1Number.html#ad462e6e286e9be4019dd3389fbb0a8aa">signum</a>() const noexcept</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> {</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">return</span> (<a class="code hl_variable" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a> &lt; 0) ? -1 : (<a class="code hl_variable" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a> ? 1 : 0);</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> }</div>
</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00135" data-start="{" data-end="}">
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a441d4a3d4e818af1c34478cefd219b16"> 135</a></span> <a class="code hl_function" href="classripple_1_1Number.html#a441d4a3d4e818af1c34478cefd219b16">truncate</a>() const noexcept</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> {</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classripple_1_1Number.html#a62582b28d9183e7618fec0f0458331ab">exponent_</a> &gt;= 0 || <a class="code hl_variable" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a> == 0)</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a> ret = *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keywordflow">while</span> (ret.<a class="code hl_variable" href="classripple_1_1Number.html#a62582b28d9183e7618fec0f0458331ab">exponent_</a> &lt; 0 &amp;&amp; ret.<a class="code hl_variable" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a> != 0)</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> {</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> ret.<a class="code hl_variable" href="classripple_1_1Number.html#a62582b28d9183e7618fec0f0458331ab">exponent_</a> += 1;</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> ret.<a class="code hl_variable" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a> /= <a class="code hl_typedef" href="classripple_1_1Number.html#a8d2697ce4073b76f05e0480a9b454a66">rep</a>(10);</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> }</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// We are guaranteed that normalize() will never throw an exception</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="comment">// because exponent is either negative or zero at this point.</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> ret.<a class="code hl_function" href="classripple_1_1Number.html#a5fefb45b369635e7803f4f8d3f9b9dd4">normalize</a>();</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">return</span> ret;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> }</div>
</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keyword">friend</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00153" data-start="{" data-end="};">
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#ab21071a0810e1b48acacb7bc52f0025e"> 153</a></span> <a class="code hl_friend" href="classripple_1_1Number.html#ab21071a0810e1b48acacb7bc52f0025e">operator&gt;</a>(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> {</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keywordflow">return</span> y &lt; x;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> }</div>
</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="foldopen" id="foldopen00158" data-start="{" data-end="};">
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#af160b78055e721a7c9b46c9556b8cc5b"> 158</a></span> <span class="keyword">friend</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <a class="code hl_friend" href="classripple_1_1Number.html#af160b78055e721a7c9b46c9556b8cc5b">operator&lt;=</a>(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> {</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="keywordflow">return</span> !(y &lt; x);</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> }</div>
</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keyword">friend</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00165" data-start="{" data-end="};">
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a95f708454f6da9e5f04f380273b0eb78"> 165</a></span> <a class="code hl_friend" href="classripple_1_1Number.html#a95f708454f6da9e5f04f380273b0eb78">operator&gt;=</a>(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> {</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="keywordflow">return</span> !(x &lt; y);</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> }</div>
</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> </div>
<div class="foldopen" id="foldopen00170" data-start="{" data-end="};">
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#ab09940caeba7ca6f6c57f4dc5220f4f1"> 170</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="l00171" name="l00171"></a><span class="lineno"> 171</span> <a class="code hl_friend" href="classripple_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="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x)</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> {</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">return</span> os &lt;&lt; <a class="code hl_function" href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">to_string</a>(x);</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> }</div>
</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="comment">// Thread local rounding control. Default is to_nearest</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534a25a8f50fce6cbdd3a8c0a3aa20126324"> 177</a></span> <span class="keyword">enum</span> <a class="code hl_enumeration" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534">rounding_mode</a> { <a class="code hl_enumvalue" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534afb083653be2726415a0832efd2d66e95">to_nearest</a>, <a class="code hl_enumvalue" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534afed3119e1980867324d399f42cbf548d">towards_zero</a>, <a class="code hl_enumvalue" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534a25a8f50fce6cbdd3a8c0a3aa20126324">downward</a>, <a class="code hl_enumvalue" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534ade4db21da96eedd46544ea52ce11a6f2">upward</a> };</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="keyword">static</span> <a class="code hl_enumeration" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534">rounding_mode</a></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <a class="code hl_function" href="classripple_1_1Number.html#a69a91a7aca13639e1705b7fb94ee78d5">getround</a>();</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// Returns previously set mode</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keyword">static</span> <a class="code hl_enumeration" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534">rounding_mode</a></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <a class="code hl_function" href="classripple_1_1Number.html#a9f2a0df7ad0f278908643927a19592f2">setround</a>(<a class="code hl_enumeration" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534">rounding_mode</a> mode);</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a5a2b36707b7dc7204982e873fcc50bac"> 185</a></span> <span class="keyword">static</span> <span class="keyword">thread_local</span> <a class="code hl_enumeration" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534">rounding_mode</a> <a class="code hl_variable" href="classripple_1_1Number.html#a5a2b36707b7dc7204982e873fcc50bac">mode_</a>;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> </div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <a class="code hl_function" href="classripple_1_1Number.html#a5fefb45b369635e7803f4f8d3f9b9dd4">normalize</a>();</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <a class="code hl_function" href="classripple_1_1Number.html#a014fb6ab35fb927939c085dccb43422d">isnormal</a>() const noexcept;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> class <a class="code hl_class" href="classripple_1_1Number_1_1Guard.html">Guard</a>;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span>};</div>
</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="foldopen" id="foldopen00195" data-start="{" data-end="}">
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a621a99957f30f7510792a980659c0ba8"> 195</a></span>inline constexpr <a class="code hl_class" href="classripple_1_1Number.html">Number</a>::<a class="code hl_class" href="classripple_1_1Number.html">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="classripple_1_1Number.html#aa072c34be5b612f33b61787ad8f09d0b">mantissa</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="classripple_1_1Number.html#a596b96835970375f7f93f272600939d2">exponent</a>, <a class="code hl_struct" href="structripple_1_1Number_1_1unchecked.html">unchecked</a>) noexcept</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> : <a class="code hl_variable" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a>{<a class="code hl_function" href="classripple_1_1Number.html#aa072c34be5b612f33b61787ad8f09d0b">mantissa</a>}, <a class="code hl_variable" href="classripple_1_1Number.html#a62582b28d9183e7618fec0f0458331ab">exponent_</a>{<a class="code hl_function" href="classripple_1_1Number.html#a596b96835970375f7f93f272600939d2">exponent</a>}</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span>{</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span>}</div>
</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> </div>
<div class="foldopen" id="foldopen00200" data-start="{" data-end="}">
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#ab040038f23e7e4834afb3dce00de1f2d"> 200</a></span><span class="keyword">inline</span> <a class="code hl_function" href="classripple_1_1Number.html#ac796fb449f3e3573c8d923bd3a905599">Number::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="classripple_1_1Number.html#aa072c34be5b612f33b61787ad8f09d0b">mantissa</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="classripple_1_1Number.html#a596b96835970375f7f93f272600939d2">exponent</a>)</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> : <a class="code hl_variable" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a>{<a class="code hl_function" href="classripple_1_1Number.html#aa072c34be5b612f33b61787ad8f09d0b">mantissa</a>}, <a class="code hl_variable" href="classripple_1_1Number.html#a62582b28d9183e7618fec0f0458331ab">exponent_</a>{<a class="code hl_function" href="classripple_1_1Number.html#a596b96835970375f7f93f272600939d2">exponent</a>}</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span>{</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <a class="code hl_function" href="classripple_1_1Number.html#a5fefb45b369635e7803f4f8d3f9b9dd4">normalize</a>();</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span>}</div>
</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</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="classripple_1_1Number.html#a24be31cc59ba96b0f0aa1b5853978a69"> 206</a></span><span class="keyword">inline</span> <a class="code hl_function" href="classripple_1_1Number.html#ac796fb449f3e3573c8d923bd3a905599">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="classripple_1_1Number.html">Number</a>{mantissa, 0}</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"> 208</span>}</div>
</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> </div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</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="foldopen00211" data-start="{" data-end="}">
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#aa072c34be5b612f33b61787ad8f09d0b"> 211</a></span><a class="code hl_function" href="classripple_1_1Number.html#aa072c34be5b612f33b61787ad8f09d0b">Number::mantissa</a>() const noexcept</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span>{</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a>;</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span>}</div>
</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> </div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen00217" data-start="{" data-end="}">
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a596b96835970375f7f93f272600939d2"> 217</a></span><a class="code hl_function" href="classripple_1_1Number.html#a596b96835970375f7f93f272600939d2">Number::exponent</a>() const noexcept</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span>{</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1Number.html#a62582b28d9183e7618fec0f0458331ab">exponent_</a>;</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span>}</div>
</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> </div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00223" data-start="{" data-end="}">
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a5a888598ad27ced944609bd97c01074f"> 223</a></span><a class="code hl_function" href="classripple_1_1Number.html#a5a888598ad27ced944609bd97c01074f">Number::operator+</a>() const noexcept</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span>{</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span>}</div>
</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> </div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00229" data-start="{" data-end="}">
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#aae97ee4226241b86b95ca189f9aad931"> 229</a></span><a class="code hl_function" href="classripple_1_1Number.html#aae97ee4226241b86b95ca189f9aad931">Number::operator-</a>() const noexcept</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span>{</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keyword">auto</span> x = *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> x.<a class="code hl_variable" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a> = -x.mantissa_;</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keywordflow">return</span> x;</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span>}</div>
</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"> 236</span><span class="keyword">inline</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a>&amp;</div>
<div class="foldopen" id="foldopen00237" data-start="{" data-end="}">
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a6f9979d5fff8ff53e99073e1132197c3"> 237</a></span><a class="code hl_function" href="classripple_1_1Number.html#a6f9979d5fff8ff53e99073e1132197c3">Number::operator++</a>()</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span>{</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> *<span class="keyword">this</span> += <a class="code hl_class" href="classripple_1_1Number.html">Number</a>{1000000000000000, -15, <a class="code hl_struct" href="structripple_1_1Number_1_1unchecked.html">unchecked</a>{}};</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span>}</div>
</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> </div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="keyword">inline</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00244" data-start="{" data-end="}">
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#ac59066a8d77e6f9e5ebe0c84f6d452a5"> 244</a></span><a class="code hl_function" href="classripple_1_1Number.html#a6f9979d5fff8ff53e99073e1132197c3">Number::operator++</a>(<span class="keywordtype">int</span>)</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span>{</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="keyword">auto</span> x = *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> ++(*this);</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="keywordflow">return</span> x;</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span>}</div>
</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">inline</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a>&amp;</div>
<div class="foldopen" id="foldopen00252" data-start="{" data-end="}">
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a36a61583c949cde0bdf0672a989c9d98"> 252</a></span><a class="code hl_function" href="classripple_1_1Number.html#a36a61583c949cde0bdf0672a989c9d98">Number::operator--</a>()</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span>{</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> *<span class="keyword">this</span> -= <a class="code hl_class" href="classripple_1_1Number.html">Number</a>{1000000000000000, -15, <a class="code hl_struct" href="structripple_1_1Number_1_1unchecked.html">unchecked</a>{}};</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span>}</div>
</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> </div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span><span class="keyword">inline</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00259" data-start="{" data-end="}">
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#aaa856efc726a74fec931a08b702dc18c"> 259</a></span><a class="code hl_function" href="classripple_1_1Number.html#a36a61583c949cde0bdf0672a989c9d98">Number::operator--</a>(<span class="keywordtype">int</span>)</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span>{</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keyword">auto</span> x = *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> --(*this);</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordflow">return</span> x;</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span>}</div>
</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> </div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span><span class="keyword">inline</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a>&amp;</div>
<div class="foldopen" id="foldopen00267" data-start="{" data-end="}">
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#aada02a76d0a9931b7eaded26bbfef9a8"> 267</a></span><a class="code hl_function" href="classripple_1_1Number.html#aada02a76d0a9931b7eaded26bbfef9a8">Number::operator-=</a>(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x)</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> <span class="keywordflow">return</span> *<span class="keyword">this</span> += -x;</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span>}</div>
</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> </div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span><span class="keyword">inline</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00273" data-start="{" data-end="}">
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"><a class="line" href="namespaceripple.html#a5ec29876f979444d36ff43dcd082eee2"> 273</a></span><a class="code hl_function" href="namespaceripple.html#ace0e9e05ea99ff46933e70502b74de95">operator+</a>(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y)</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span>{</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keyword">auto</span> z = x;</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> z += y;</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <span class="keywordflow">return</span> z;</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span>}</div>
</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> </div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span><span class="keyword">inline</span> Number</div>
<div class="foldopen" id="foldopen00281" data-start="{" data-end="}">
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"><a class="line" href="namespaceripple.html#ac73696ba9cf84191fe3d33d6ef9043c7"> 281</a></span><a class="code hl_function" href="namespaceripple.html#ac73696ba9cf84191fe3d33d6ef9043c7">operator-</a>(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y)</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span>{</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keyword">auto</span> z = x;</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> z -= y;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keywordflow">return</span> z;</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span>}</div>
</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> </div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span><span class="keyword">inline</span> Number</div>
<div class="foldopen" id="foldopen00289" data-start="{" data-end="}">
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"><a class="line" href="namespaceripple.html#a53153d8804db569b5a7a451b505ad1f9"> 289</a></span><a class="code hl_function" href="namespaceripple.html#a53153d8804db569b5a7a451b505ad1f9">operator*</a>(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y)</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span>{</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="keyword">auto</span> z = x;</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> z *= y;</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="keywordflow">return</span> z;</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span>}</div>
</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> </div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span><span class="keyword">inline</span> Number</div>
<div class="foldopen" id="foldopen00297" data-start="{" data-end="}">
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"><a class="line" href="namespaceripple.html#af5b7520bece89a94f965377ea78621f3"> 297</a></span><a class="code hl_function" href="namespaceripple.html#af5b7520bece89a94f965377ea78621f3">operator/</a>(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; y)</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span>{</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keyword">auto</span> z = x;</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> z /= y;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="keywordflow">return</span> z;</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span>}</div>
</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> </div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> Number</div>
<div class="foldopen" id="foldopen00305" data-start="{" data-end="}">
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#aabd1f9077e531f1e897d14b03ff1890b"> 305</a></span><a class="code hl_function" href="classripple_1_1Number.html#aabd1f9077e531f1e897d14b03ff1890b">Number::min</a>() noexcept</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span>{</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <span class="keywordflow">return</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a>{<a class="code hl_variable" href="classripple_1_1Number.html#a550732b6c726cffc8a742569fe76aa6e">minMantissa</a>, <a class="code hl_variable" href="classripple_1_1Number.html#a72928c9b23a8c2b07024d2d3ff5eed73">minExponent</a>, <a class="code hl_struct" href="structripple_1_1Number_1_1unchecked.html">unchecked</a>{}};</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span>}</div>
</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> </div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00311" data-start="{" data-end="}">
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a6223254bb40f9a21dbdd8b360faaf401"> 311</a></span><a class="code hl_function" href="classripple_1_1Number.html#a6223254bb40f9a21dbdd8b360faaf401">Number::max</a>() noexcept</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span>{</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordflow">return</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a>{<a class="code hl_variable" href="classripple_1_1Number.html#a18f3cb87112cf4436f8730a4f3333550">maxMantissa</a>, <a class="code hl_variable" href="classripple_1_1Number.html#a388d646cceab9673a0edb81206e1e106">maxExponent</a>, <a class="code hl_struct" href="structripple_1_1Number_1_1unchecked.html">unchecked</a>{}};</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span>}</div>
</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> </div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00317" data-start="{" data-end="}">
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#aa3b9d51977cfb03cfaedd03295a85411"> 317</a></span><a class="code hl_function" href="classripple_1_1Number.html#aa3b9d51977cfb03cfaedd03295a85411">Number::lowest</a>() noexcept</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span>{</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> <span class="keywordflow">return</span> -<a class="code hl_class" href="classripple_1_1Number.html">Number</a>{<a class="code hl_variable" href="classripple_1_1Number.html#a18f3cb87112cf4436f8730a4f3333550">maxMantissa</a>, <a class="code hl_variable" href="classripple_1_1Number.html#a388d646cceab9673a0edb81206e1e106">maxExponent</a>, <a class="code hl_struct" href="structripple_1_1Number_1_1unchecked.html">unchecked</a>{}};</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span>}</div>
</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="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00323" data-start="{" data-end="}">
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"><a class="line" href="classripple_1_1Number.html#a014fb6ab35fb927939c085dccb43422d"> 323</a></span><a class="code hl_function" href="classripple_1_1Number.html#a014fb6ab35fb927939c085dccb43422d">Number::isnormal</a>() const noexcept</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span>{</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="keyword">auto</span> <span class="keyword">const</span> abs_m = <a class="code hl_variable" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a> &lt; 0 ? -<a class="code hl_variable" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a> : <a class="code hl_variable" href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">mantissa_</a>;</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classripple_1_1Number.html#a550732b6c726cffc8a742569fe76aa6e">minMantissa</a> &lt;= abs_m &amp;&amp; abs_m &lt;= <a class="code hl_variable" href="classripple_1_1Number.html#a18f3cb87112cf4436f8730a4f3333550">maxMantissa</a> &amp;&amp;</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <a class="code hl_variable" href="classripple_1_1Number.html#a72928c9b23a8c2b07024d2d3ff5eed73">minExponent</a> &lt;= <a class="code hl_variable" href="classripple_1_1Number.html#a62582b28d9183e7618fec0f0458331ab">exponent_</a> &amp;&amp; <a class="code hl_variable" href="classripple_1_1Number.html#a62582b28d9183e7618fec0f0458331ab">exponent_</a> &lt;= <a class="code hl_variable" href="classripple_1_1Number.html#a388d646cceab9673a0edb81206e1e106">maxExponent</a>;</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span>}</div>
</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> </div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a></div>
<div class="foldopen" id="foldopen00331" data-start="{" data-end="}">
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"><a class="line" href="namespaceripple.html#afd19ced6c417571e8762d1d3cd89be0b"> 331</a></span><a class="code hl_function" href="namespaceripple.html#afd19ced6c417571e8762d1d3cd89be0b">abs</a>(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> x) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span>{</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> <span class="keywordflow">if</span> (x &lt; <a class="code hl_class" href="classripple_1_1Number.html">Number</a>{})</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> x = -x;</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> <span class="keywordflow">return</span> x;</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span>}</div>
</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> </div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span><span class="comment">// Returns f^n</span></div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span><span class="comment">// Uses a log_2(n) number of multiplications</span></div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> </div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span>Number</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span><a class="code hl_function" href="namespaceripple.html#aa91f6bf62bcd2aa44e01926c3a160abd">power</a>(Number <span class="keyword">const</span>&amp; f, <span class="keywordtype">unsigned</span> n);</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> </div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span><span class="comment">// Returns f^(1/d)</span></div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span><span class="comment">// Uses NewtonRaphson iterations until the result stops changing</span></div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span><span class="comment">// to find the root of the polynomial g(x) = x^d - f</span></div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> </div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span>Number</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span><a class="code hl_function" href="namespaceripple.html#acdc87ea9c4ad1742d4aeebac963e8570">root</a>(Number f, <span class="keywordtype">unsigned</span> d);</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> </div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span>Number</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span><a class="code hl_function" href="namespaceripple.html#aecb9ae1add070266b1be59ff570ec713">root2</a>(Number f);</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> </div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span><span class="comment">// Returns f^(n/d)</span></div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> </div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span>Number</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span><a class="code hl_function" href="namespaceripple.html#aa91f6bf62bcd2aa44e01926c3a160abd">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="l00358" name="l00358"></a><span class="lineno"> 358</span> </div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span><span class="comment">// Return 0 if abs(x) &lt; limit, else returns x</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="keyword">inline</span> <span class="keyword">constexpr</span> Number</div>
<div class="foldopen" id="foldopen00362" data-start="{" data-end="}">
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"><a class="line" href="namespaceripple.html#af5659b42b02bf5cb8c8dfdbf8d496c74"> 362</a></span><a class="code hl_function" href="namespaceripple.html#af5659b42b02bf5cb8c8dfdbf8d496c74">squelch</a>(<a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; x, <a class="code hl_class" href="classripple_1_1Number.html">Number</a> <span class="keyword">const</span>&amp; limit) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span>{</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="namespaceripple.html#afd19ced6c417571e8762d1d3cd89be0b">abs</a>(x) &lt; limit)</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordflow">return</span> <a class="code hl_class" href="classripple_1_1Number.html">Number</a>{};</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> <span class="keywordflow">return</span> x;</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span>}</div>
</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> </div>
<div class="foldopen" id="foldopen00369" data-start="{" data-end="};">
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"><a class="line" href="classripple_1_1saveNumberRoundMode.html"> 369</a></span><span class="keyword">class </span><a class="code hl_class" href="classripple_1_1saveNumberRoundMode.html">saveNumberRoundMode</a></div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span>{</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"><a class="line" href="classripple_1_1saveNumberRoundMode.html#a87d61a5e3bfd9fdbd79eaa875ccaf184"> 371</a></span> <a class="code hl_enumeration" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534">Number::rounding_mode</a> <a class="code hl_variable" href="classripple_1_1saveNumberRoundMode.html#a87d61a5e3bfd9fdbd79eaa875ccaf184">mode_</a>;</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">public</span>:</div>
<div class="foldopen" id="foldopen00374" data-start="{" data-end="}">
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"><a class="line" href="classripple_1_1saveNumberRoundMode.html#a44f3df6f7b106588588a05ab276358b6"> 374</a></span> <a class="code hl_function" href="classripple_1_1saveNumberRoundMode.html#a44f3df6f7b106588588a05ab276358b6">~saveNumberRoundMode</a>()</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> <a class="code hl_function" href="classripple_1_1Number.html#a9f2a0df7ad0f278908643927a19592f2">Number::setround</a>(<a class="code hl_variable" href="classripple_1_1saveNumberRoundMode.html#a87d61a5e3bfd9fdbd79eaa875ccaf184">mode_</a>);</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> }</div>
</div>
<div class="foldopen" id="foldopen00378" data-start="{" data-end="}">
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"><a class="line" href="classripple_1_1saveNumberRoundMode.html#a257df14ddb6f7bfb5c9302a44e46879f"> 378</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="classripple_1_1saveNumberRoundMode.html#a257df14ddb6f7bfb5c9302a44e46879f">saveNumberRoundMode</a>(<a class="code hl_enumeration" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534">Number::rounding_mode</a> mode) noexcept</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> : <a class="code hl_variable" href="classripple_1_1saveNumberRoundMode.html#a87d61a5e3bfd9fdbd79eaa875ccaf184">mode_</a>{mode}</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> {</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> }</div>
</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"><a class="line" href="classripple_1_1saveNumberRoundMode.html#ab1f0ab3806964ed58eac90d6f96c980d"> 382</a></span> <a class="code hl_function" href="classripple_1_1saveNumberRoundMode.html#ab1f0ab3806964ed58eac90d6f96c980d">saveNumberRoundMode</a>(<a class="code hl_class" href="classripple_1_1saveNumberRoundMode.html">saveNumberRoundMode</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> <a class="code hl_class" href="classripple_1_1saveNumberRoundMode.html">saveNumberRoundMode</a>&amp;</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"><a class="line" href="classripple_1_1saveNumberRoundMode.html#a5ea74bb00f4d88e4b486dca8656231df"> 384</a></span> <a class="code hl_function" href="classripple_1_1saveNumberRoundMode.html#a5ea74bb00f4d88e4b486dca8656231df">operator=</a>(<a class="code hl_class" href="classripple_1_1saveNumberRoundMode.html">saveNumberRoundMode</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span>};</div>
</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> </div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</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="l00388" name="l00388"></a><span class="lineno"> 388</span><span class="comment">// Number::RoundModeGuard that sets the new mode and restores the old mode</span></div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</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="l00390" name="l00390"></a><span class="lineno"> 390</span><span class="comment">// build it here.</span></div>
<div class="foldopen" id="foldopen00391" data-start="{" data-end="};">
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"><a class="line" href="classripple_1_1NumberRoundModeGuard.html"> 391</a></span><span class="keyword">class </span><a class="code hl_class" href="classripple_1_1NumberRoundModeGuard.html">NumberRoundModeGuard</a></div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span>{</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"><a class="line" href="classripple_1_1NumberRoundModeGuard.html#a96c5fa6f67b98901d94492ac406f84b9"> 393</a></span> <a class="code hl_class" href="classripple_1_1saveNumberRoundMode.html">saveNumberRoundMode</a> <a class="code hl_variable" href="classripple_1_1NumberRoundModeGuard.html#a96c5fa6f67b98901d94492ac406f84b9">saved_</a>;</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> </div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00396" data-start="{" data-end="}">
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"><a class="line" href="classripple_1_1NumberRoundModeGuard.html#adb1687faa506176a06cc0241f7f67b70"> 396</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="classripple_1_1NumberRoundModeGuard.html#adb1687faa506176a06cc0241f7f67b70">NumberRoundModeGuard</a>(<a class="code hl_enumeration" href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534">Number::rounding_mode</a> mode) noexcept</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> : <a class="code hl_variable" href="classripple_1_1NumberRoundModeGuard.html#a96c5fa6f67b98901d94492ac406f84b9">saved_</a>{<a class="code hl_function" href="classripple_1_1Number.html#a9f2a0df7ad0f278908643927a19592f2">Number::setround</a>(mode)}</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> {</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> }</div>
</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> </div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"><a class="line" href="classripple_1_1NumberRoundModeGuard.html#a4c860943220098f06707040cd7781696"> 401</a></span> <a class="code hl_function" href="classripple_1_1NumberRoundModeGuard.html#a4c860943220098f06707040cd7781696">NumberRoundModeGuard</a>(<a class="code hl_class" href="classripple_1_1NumberRoundModeGuard.html">NumberRoundModeGuard</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</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> <a class="code hl_class" href="classripple_1_1NumberRoundModeGuard.html">NumberRoundModeGuard</a>&amp;</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"><a class="line" href="classripple_1_1NumberRoundModeGuard.html#a8e158e375bf70e342a7f816695a83114"> 404</a></span> <a class="code hl_function" href="classripple_1_1NumberRoundModeGuard.html#a8e158e375bf70e342a7f816695a83114">operator=</a>(<a class="code hl_class" href="classripple_1_1NumberRoundModeGuard.html">NumberRoundModeGuard</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span>};</div>
</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> </div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span>} <span class="comment">// namespace ripple</span></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="preprocessor">#endif </span><span class="comment">// XRPL_BASICS_NUMBER_H_INCLUDED</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="aclassripple_1_1NumberRoundModeGuard_html"><div class="ttname"><a href="classripple_1_1NumberRoundModeGuard.html">ripple::NumberRoundModeGuard</a></div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00391">Number.h:392</a></div></div>
<div class="ttc" id="aclassripple_1_1NumberRoundModeGuard_html_a4c860943220098f06707040cd7781696"><div class="ttname"><a href="classripple_1_1NumberRoundModeGuard.html#a4c860943220098f06707040cd7781696">ripple::NumberRoundModeGuard::NumberRoundModeGuard</a></div><div class="ttdeci">NumberRoundModeGuard(NumberRoundModeGuard const &amp;)=delete</div></div>
<div class="ttc" id="aclassripple_1_1NumberRoundModeGuard_html_a8e158e375bf70e342a7f816695a83114"><div class="ttname"><a href="classripple_1_1NumberRoundModeGuard.html#a8e158e375bf70e342a7f816695a83114">ripple::NumberRoundModeGuard::operator=</a></div><div class="ttdeci">NumberRoundModeGuard &amp; operator=(NumberRoundModeGuard const &amp;)=delete</div></div>
<div class="ttc" id="aclassripple_1_1NumberRoundModeGuard_html_a96c5fa6f67b98901d94492ac406f84b9"><div class="ttname"><a href="classripple_1_1NumberRoundModeGuard.html#a96c5fa6f67b98901d94492ac406f84b9">ripple::NumberRoundModeGuard::saved_</a></div><div class="ttdeci">saveNumberRoundMode saved_</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00393">Number.h:393</a></div></div>
<div class="ttc" id="aclassripple_1_1NumberRoundModeGuard_html_adb1687faa506176a06cc0241f7f67b70"><div class="ttname"><a href="classripple_1_1NumberRoundModeGuard.html#adb1687faa506176a06cc0241f7f67b70">ripple::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#l00396">Number.h:396</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_1_1Guard_html"><div class="ttname"><a href="classripple_1_1Number_1_1Guard.html">ripple::Number::Guard</a></div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00045">Number.cpp:46</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html"><div class="ttname"><a href="classripple_1_1Number.html">ripple::Number</a></div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00016">Number.h:17</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a014fb6ab35fb927939c085dccb43422d"><div class="ttname"><a href="classripple_1_1Number.html#a014fb6ab35fb927939c085dccb43422d">ripple::Number::isnormal</a></div><div class="ttdeci">constexpr bool isnormal() const noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00323">Number.h:323</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a093f23a479cd1866c672060e14ccbb4e"><div class="ttname"><a href="classripple_1_1Number.html#a093f23a479cd1866c672060e14ccbb4e">ripple::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#l00097">Number.h:98</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a18f3cb87112cf4436f8730a4f3333550"><div class="ttname"><a href="classripple_1_1Number.html#a18f3cb87112cf4436f8730a4f3333550">ripple::Number::maxMantissa</a></div><div class="ttdeci">static constexpr std::int64_t maxMantissa</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00025">Number.h:25</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a33e3d8e7a95979bd1eb22c59703c8534"><div class="ttname"><a href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534">ripple::Number::rounding_mode</a></div><div class="ttdeci">rounding_mode</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00177">Number.h:177</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a33e3d8e7a95979bd1eb22c59703c8534a25a8f50fce6cbdd3a8c0a3aa20126324"><div class="ttname"><a href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534a25a8f50fce6cbdd3a8c0a3aa20126324">ripple::Number::downward</a></div><div class="ttdeci">@ downward</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00177">Number.h:177</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a33e3d8e7a95979bd1eb22c59703c8534ade4db21da96eedd46544ea52ce11a6f2"><div class="ttname"><a href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534ade4db21da96eedd46544ea52ce11a6f2">ripple::Number::upward</a></div><div class="ttdeci">@ upward</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00177">Number.h:177</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a33e3d8e7a95979bd1eb22c59703c8534afb083653be2726415a0832efd2d66e95"><div class="ttname"><a href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534afb083653be2726415a0832efd2d66e95">ripple::Number::to_nearest</a></div><div class="ttdeci">@ to_nearest</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00177">Number.h:177</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a33e3d8e7a95979bd1eb22c59703c8534afed3119e1980867324d399f42cbf548d"><div class="ttname"><a href="classripple_1_1Number.html#a33e3d8e7a95979bd1eb22c59703c8534afed3119e1980867324d399f42cbf548d">ripple::Number::towards_zero</a></div><div class="ttdeci">@ towards_zero</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00177">Number.h:177</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a36a61583c949cde0bdf0672a989c9d98"><div class="ttname"><a href="classripple_1_1Number.html#a36a61583c949cde0bdf0672a989c9d98">ripple::Number::operator--</a></div><div class="ttdeci">Number &amp; operator--()</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00252">Number.h:252</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a388d646cceab9673a0edb81206e1e106"><div class="ttname"><a href="classripple_1_1Number.html#a388d646cceab9673a0edb81206e1e106">ripple::Number::maxExponent</a></div><div class="ttdeci">static constexpr int maxExponent</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00029">Number.h:29</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a441d4a3d4e818af1c34478cefd219b16"><div class="ttname"><a href="classripple_1_1Number.html#a441d4a3d4e818af1c34478cefd219b16">ripple::Number::truncate</a></div><div class="ttdeci">Number truncate() const noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00135">Number.h:135</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a550732b6c726cffc8a742569fe76aa6e"><div class="ttname"><a href="classripple_1_1Number.html#a550732b6c726cffc8a742569fe76aa6e">ripple::Number::minMantissa</a></div><div class="ttdeci">static constexpr std::int64_t minMantissa</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00024">Number.h:24</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a596b96835970375f7f93f272600939d2"><div class="ttname"><a href="classripple_1_1Number.html#a596b96835970375f7f93f272600939d2">ripple::Number::exponent</a></div><div class="ttdeci">constexpr int exponent() const noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00217">Number.h:217</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a5a2b36707b7dc7204982e873fcc50bac"><div class="ttname"><a href="classripple_1_1Number.html#a5a2b36707b7dc7204982e873fcc50bac">ripple::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#l00185">Number.h:185</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a5a888598ad27ced944609bd97c01074f"><div class="ttname"><a href="classripple_1_1Number.html#a5a888598ad27ced944609bd97c01074f">ripple::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#l00223">Number.h:223</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a5fefb45b369635e7803f4f8d3f9b9dd4"><div class="ttname"><a href="classripple_1_1Number.html#a5fefb45b369635e7803f4f8d3f9b9dd4">ripple::Number::normalize</a></div><div class="ttdeci">void normalize()</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00159">Number.cpp:159</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a6223254bb40f9a21dbdd8b360faaf401"><div class="ttname"><a href="classripple_1_1Number.html#a6223254bb40f9a21dbdd8b360faaf401">ripple::Number::max</a></div><div class="ttdeci">static constexpr Number max() noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00311">Number.h:311</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a62582b28d9183e7618fec0f0458331ab"><div class="ttname"><a href="classripple_1_1Number.html#a62582b28d9183e7618fec0f0458331ab">ripple::Number::exponent_</a></div><div class="ttdeci">int exponent_</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00020">Number.h:20</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a69a91a7aca13639e1705b7fb94ee78d5"><div class="ttname"><a href="classripple_1_1Number.html#a69a91a7aca13639e1705b7fb94ee78d5">ripple::Number::getround</a></div><div class="ttdeci">static rounding_mode getround()</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00028">Number.cpp:28</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a6f9979d5fff8ff53e99073e1132197c3"><div class="ttname"><a href="classripple_1_1Number.html#a6f9979d5fff8ff53e99073e1132197c3">ripple::Number::operator++</a></div><div class="ttdeci">Number &amp; operator++()</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00237">Number.h:237</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a72928c9b23a8c2b07024d2d3ff5eed73"><div class="ttname"><a href="classripple_1_1Number.html#a72928c9b23a8c2b07024d2d3ff5eed73">ripple::Number::minExponent</a></div><div class="ttdeci">static constexpr int minExponent</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00028">Number.h:28</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a8246d4c14aa2bf7aa9a46c76eb671443"><div class="ttname"><a href="classripple_1_1Number.html#a8246d4c14aa2bf7aa9a46c76eb671443">ripple::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#l00092">Number.h:92</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a8d2697ce4073b76f05e0480a9b454a66"><div class="ttname"><a href="classripple_1_1Number.html#a8d2697ce4073b76f05e0480a9b454a66">ripple::Number::rep</a></div><div class="ttdeci">std::int64_t rep</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00018">Number.h:18</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a95f708454f6da9e5f04f380273b0eb78"><div class="ttname"><a href="classripple_1_1Number.html#a95f708454f6da9e5f04f380273b0eb78">ripple::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#l00165">Number.h:165</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_a9f2a0df7ad0f278908643927a19592f2"><div class="ttname"><a href="classripple_1_1Number.html#a9f2a0df7ad0f278908643927a19592f2">ripple::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#l00034">Number.cpp:34</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_aa072c34be5b612f33b61787ad8f09d0b"><div class="ttname"><a href="classripple_1_1Number.html#aa072c34be5b612f33b61787ad8f09d0b">ripple::Number::mantissa</a></div><div class="ttdeci">constexpr rep mantissa() const noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00211">Number.h:211</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_aa3b9d51977cfb03cfaedd03295a85411"><div class="ttname"><a href="classripple_1_1Number.html#aa3b9d51977cfb03cfaedd03295a85411">ripple::Number::lowest</a></div><div class="ttdeci">static constexpr Number lowest() noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00317">Number.h:317</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_aabd1f9077e531f1e897d14b03ff1890b"><div class="ttname"><a href="classripple_1_1Number.html#aabd1f9077e531f1e897d14b03ff1890b">ripple::Number::min</a></div><div class="ttdeci">static constexpr Number min() noexcept</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00305">Number.h:305</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_aada02a76d0a9931b7eaded26bbfef9a8"><div class="ttname"><a href="classripple_1_1Number.html#aada02a76d0a9931b7eaded26bbfef9a8">ripple::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#l00267">Number.h:267</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_aae97ee4226241b86b95ca189f9aad931"><div class="ttname"><a href="classripple_1_1Number.html#aae97ee4226241b86b95ca189f9aad931">ripple::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#l00229">Number.h:229</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_ab09940caeba7ca6f6c57f4dc5220f4f1"><div class="ttname"><a href="classripple_1_1Number.html#ab09940caeba7ca6f6c57f4dc5220f4f1">ripple::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#l00170">Number.h:171</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_ab21071a0810e1b48acacb7bc52f0025e"><div class="ttname"><a href="classripple_1_1Number.html#ab21071a0810e1b48acacb7bc52f0025e">ripple::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#l00153">Number.h:153</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_ac796fb449f3e3573c8d923bd3a905599"><div class="ttname"><a href="classripple_1_1Number.html#ac796fb449f3e3573c8d923bd3a905599">ripple::Number::Number</a></div><div class="ttdeci">constexpr Number()=default</div></div>
<div class="ttc" id="aclassripple_1_1Number_html_ad462e6e286e9be4019dd3389fbb0a8aa"><div class="ttname"><a href="classripple_1_1Number.html#ad462e6e286e9be4019dd3389fbb0a8aa">ripple::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#l00129">Number.h:129</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_ae8914a365ad9ca852b2d8dbdd43abb6f"><div class="ttname"><a href="classripple_1_1Number.html#ae8914a365ad9ca852b2d8dbdd43abb6f">ripple::Number::mantissa_</a></div><div class="ttdeci">rep mantissa_</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00019">Number.h:19</a></div></div>
<div class="ttc" id="aclassripple_1_1Number_html_af160b78055e721a7c9b46c9556b8cc5b"><div class="ttname"><a href="classripple_1_1Number.html#af160b78055e721a7c9b46c9556b8cc5b">ripple::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#l00158">Number.h:159</a></div></div>
<div class="ttc" id="aclassripple_1_1saveNumberRoundMode_html"><div class="ttname"><a href="classripple_1_1saveNumberRoundMode.html">ripple::saveNumberRoundMode</a></div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00369">Number.h:370</a></div></div>
<div class="ttc" id="aclassripple_1_1saveNumberRoundMode_html_a257df14ddb6f7bfb5c9302a44e46879f"><div class="ttname"><a href="classripple_1_1saveNumberRoundMode.html#a257df14ddb6f7bfb5c9302a44e46879f">ripple::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#l00378">Number.h:378</a></div></div>
<div class="ttc" id="aclassripple_1_1saveNumberRoundMode_html_a44f3df6f7b106588588a05ab276358b6"><div class="ttname"><a href="classripple_1_1saveNumberRoundMode.html#a44f3df6f7b106588588a05ab276358b6">ripple::saveNumberRoundMode::~saveNumberRoundMode</a></div><div class="ttdeci">~saveNumberRoundMode()</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00374">Number.h:374</a></div></div>
<div class="ttc" id="aclassripple_1_1saveNumberRoundMode_html_a5ea74bb00f4d88e4b486dca8656231df"><div class="ttname"><a href="classripple_1_1saveNumberRoundMode.html#a5ea74bb00f4d88e4b486dca8656231df">ripple::saveNumberRoundMode::operator=</a></div><div class="ttdeci">saveNumberRoundMode &amp; operator=(saveNumberRoundMode const &amp;)=delete</div></div>
<div class="ttc" id="aclassripple_1_1saveNumberRoundMode_html_a87d61a5e3bfd9fdbd79eaa875ccaf184"><div class="ttname"><a href="classripple_1_1saveNumberRoundMode.html#a87d61a5e3bfd9fdbd79eaa875ccaf184">ripple::saveNumberRoundMode::mode_</a></div><div class="ttdeci">Number::rounding_mode mode_</div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00371">Number.h:371</a></div></div>
<div class="ttc" id="aclassripple_1_1saveNumberRoundMode_html_ab1f0ab3806964ed58eac90d6f96c980d"><div class="ttname"><a href="classripple_1_1saveNumberRoundMode.html#ab1f0ab3806964ed58eac90d6f96c980d">ripple::saveNumberRoundMode::saveNumberRoundMode</a></div><div class="ttdeci">saveNumberRoundMode(saveNumberRoundMode const &amp;)=delete</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="ainteger_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/integer.html">std::int64_t</a></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="anamespaceripple_html"><div class="ttname"><a href="namespaceripple.html">ripple</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#l00006">algorithm.h:6</a></div></div>
<div class="ttc" id="anamespaceripple_html_a53153d8804db569b5a7a451b505ad1f9"><div class="ttname"><a href="namespaceripple.html#a53153d8804db569b5a7a451b505ad1f9">ripple::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#l00289">Number.h:289</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa91f6bf62bcd2aa44e01926c3a160abd"><div class="ttname"><a href="namespaceripple.html#aa91f6bf62bcd2aa44e01926c3a160abd">ripple::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#l00594">Number.cpp:594</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac124fe6744b7fe887dec949b56b16d50"><div class="ttname"><a href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">ripple::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#l00611">base_uint.h:611</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac73696ba9cf84191fe3d33d6ef9043c7"><div class="ttname"><a href="namespaceripple.html#ac73696ba9cf84191fe3d33d6ef9043c7">ripple::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#l00281">Number.h:281</a></div></div>
<div class="ttc" id="anamespaceripple_html_acdc87ea9c4ad1742d4aeebac963e8570"><div class="ttname"><a href="namespaceripple.html#acdc87ea9c4ad1742d4aeebac963e8570">ripple::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#l00617">Number.cpp:617</a></div></div>
<div class="ttc" id="anamespaceripple_html_ace0e9e05ea99ff46933e70502b74de95"><div class="ttname"><a href="namespaceripple.html#ace0e9e05ea99ff46933e70502b74de95">ripple::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#l00603">base_uint.h:603</a></div></div>
<div class="ttc" id="anamespaceripple_html_aecb9ae1add070266b1be59ff570ec713"><div class="ttname"><a href="namespaceripple.html#aecb9ae1add070266b1be59ff570ec713">ripple::root2</a></div><div class="ttdeci">Number root2(Number f)</div><div class="ttdef"><b>Definition</b> <a href="Number_8cpp_source.html#l00682">Number.cpp:682</a></div></div>
<div class="ttc" id="anamespaceripple_html_af5659b42b02bf5cb8c8dfdbf8d496c74"><div class="ttname"><a href="namespaceripple.html#af5659b42b02bf5cb8c8dfdbf8d496c74">ripple::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#l00362">Number.h:362</a></div></div>
<div class="ttc" id="anamespaceripple_html_af5b7520bece89a94f965377ea78621f3"><div class="ttname"><a href="namespaceripple.html#af5b7520bece89a94f965377ea78621f3">ripple::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#l00297">Number.h:297</a></div></div>
<div class="ttc" id="anamespaceripple_html_afd19ced6c417571e8762d1d3cd89be0b"><div class="ttname"><a href="namespaceripple.html#afd19ced6c417571e8762d1d3cd89be0b">ripple::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#l00331">Number.h:331</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="astring_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/string.html">string</a></div></div>
<div class="ttc" id="astructripple_1_1Number_1_1unchecked_html"><div class="ttname"><a href="structripple_1_1Number_1_1unchecked.html">ripple::Number::unchecked</a></div><div class="ttdef"><b>Definition</b> <a href="Number_8h_source.html#l00031">Number.h:32</a></div></div>
<div class="ttc" id="astructripple_1_1Number_1_1unchecked_html_a4b5ae38df8445354cb1e89089962245a"><div class="ttname"><a href="structripple_1_1Number_1_1unchecked.html#a4b5ae38df8445354cb1e89089962245a">ripple::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>