blob: 26d54a684947d32983aef940d1eb8b77e0e1ab7e [file] [log] [blame]
<!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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>datasketches-cpp: req/include/req_sketch.hpp 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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">datasketches-cpp
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- 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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_0449671fe79755ed26e25ef166543162.html">req</a></li><li class="navelem"><a class="el" href="dir_33f2f37c686242631bbdb651f95cf35d.html">include</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">req_sketch.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * KIND, either express or implied. See the License for the</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * under the License.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifndef REQ_SKETCH_HPP_</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#define REQ_SKETCH_HPP_</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;req_common.hpp&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;req_compactor.hpp&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;quantiles_sorted_view.hpp&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;optional.hpp&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacedatasketches.html">datasketches</a> {</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword">template</span>&lt;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">typename</span> T,</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">typename</span> Comparator = std::less&lt;T&gt;, <span class="comment">// strict weak ordering function (see C++ named requirements: Compare)</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">typename</span> Allocator = std::allocator&lt;T&gt;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;&gt;</div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classdatasketches_1_1req__sketch.html"> 79</a></span>&#160;<span class="keyword">class </span><a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a> {</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">using</span> value_type = T;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">using</span> comparator = Comparator;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">using</span> allocator_type = Allocator;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">using</span> Compactor = req_compactor&lt;T, Comparator, Allocator&gt;;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">using</span> AllocCompactor = <span class="keyword">typename</span> std::allocator_traits&lt;Allocator&gt;::template rebind_alloc&lt;Compactor&gt;;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">using</span> vector_double = <span class="keyword">typename</span> quantiles_sorted_view&lt;T, Comparator, Allocator&gt;::vector_double;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classdatasketches_1_1req__sketch.html#a4c80d2361c940f99df9f850615c2dcbe"> 92</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classdatasketches_1_1req__sketch.html#a4c80d2361c940f99df9f850615c2dcbe">quantile_return_type</a> = <span class="keyword">typename</span> <a class="code" href="classdatasketches_1_1quantiles__sorted__view.html#a5ab4905c4f3ebeb14de4e7a2f5d92832">quantiles_sorted_view&lt;T, Comparator, Allocator&gt;::quantile_return_type</a>;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classdatasketches_1_1req__sketch.html#a732d80ecaa19aab05f65ca62bdf0452c"> 103</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classdatasketches_1_1req__sketch.html#a732d80ecaa19aab05f65ca62bdf0452c">req_sketch</a>(uint16_t k, <span class="keywordtype">bool</span> hra = <span class="keyword">true</span>, <span class="keyword">const</span> Comparator&amp; comparator = Comparator(),</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">const</span> Allocator&amp; allocator = Allocator());</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a>(<span class="keyword">const</span> <a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a>&amp; other);</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a>(<a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a>&amp;&amp; other) noexcept;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; ~<a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a>();</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a>&amp; <a class="code" href="classdatasketches_1_1req__sketch.html#ab6e85db46b1d76086d5e9b5065b74a46">operator=</a>(<span class="keyword">const</span> <a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a>&amp; other);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a>&amp; <a class="code" href="classdatasketches_1_1req__sketch.html#ab6e85db46b1d76086d5e9b5065b74a46">operator=</a>(<a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a>&amp;&amp; other);</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TT, <span class="keyword">typename</span> CC, <span class="keyword">typename</span> AA&gt;</div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classdatasketches_1_1req__sketch.html#a1943668612ea073d2f6381ee8c2ddfbd"> 141</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classdatasketches_1_1req__sketch.html#a1943668612ea073d2f6381ee8c2ddfbd">req_sketch</a>(<span class="keyword">const</span> <a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch&lt;TT, CC, AA&gt;</a>&amp; other, <span class="keyword">const</span> Comparator&amp; comparator = Comparator(),</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> Allocator&amp; allocator = Allocator());</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; uint16_t <a class="code" href="classdatasketches_1_1req__sketch.html#a59f4c39b9f2e762e8e3445ef89e1d264">get_k</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classdatasketches_1_1req__sketch.html#af6177b85206272c56ee75747bb885735">is_HRA</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classdatasketches_1_1req__sketch.html#a5a2b7a58dc85678d08752945ff655362">is_empty</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; </div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; uint64_t <a class="code" href="classdatasketches_1_1req__sketch.html#af857be9469a7565252626f27e1f9d74d">get_n</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; uint32_t <a class="code" href="classdatasketches_1_1req__sketch.html#a31fa76458d81a17dbebfcb828e531f14">get_num_retained</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classdatasketches_1_1req__sketch.html#ae95a04b1d7dccb3d9b3f3c3d087aa8e6">is_estimation_mode</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> FwdT&gt;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classdatasketches_1_1req__sketch.html#a5200c74c52ee0f76d0d34c1ca6aec65c">update</a>(FwdT&amp;&amp; item);</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; </div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> FwdSk&gt;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classdatasketches_1_1req__sketch.html#a49bb19e78f36fb72b8496cd6cff71fec">merge</a>(FwdSk&amp;&amp; other);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; </div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keyword">const</span> T&amp; <a class="code" href="classdatasketches_1_1req__sketch.html#af2fa890815acf3a1418ea8eee466075c">get_min_item</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; </div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keyword">const</span> T&amp; <a class="code" href="classdatasketches_1_1req__sketch.html#a687ed2123bdc7e67fbda0c081e3acf21">get_max_item</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; Comparator <a class="code" href="classdatasketches_1_1req__sketch.html#a076f89979daa6471a3868cb97ea99b40">get_comparator</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; </div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; Allocator <a class="code" href="classdatasketches_1_1req__sketch.html#a9d85cf47c4ecd0580ec623c42006dd1b">get_allocator</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; </div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">double</span> <a class="code" href="classdatasketches_1_1req__sketch.html#a849dfa06c183fd2fdfe4fe4a7e29d918">get_rank</a>(<span class="keyword">const</span> T&amp; item, <span class="keywordtype">bool</span> inclusive = <span class="keyword">true</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; </div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; vector_double <a class="code" href="classdatasketches_1_1req__sketch.html#a44226b755e73883ea2c128876e35b1d1">get_PMF</a>(<span class="keyword">const</span> T* split_points, uint32_t size, <span class="keywordtype">bool</span> inclusive = <span class="keyword">true</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; </div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; vector_double <a class="code" href="classdatasketches_1_1req__sketch.html#a20a4d992209b2aa58614c998d143705c">get_CDF</a>(<span class="keyword">const</span> T* split_points, uint32_t size, <span class="keywordtype">bool</span> inclusive = <span class="keyword">true</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; </div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="classdatasketches_1_1req__sketch.html#a4c80d2361c940f99df9f850615c2dcbe">quantile_return_type</a> <a class="code" href="classdatasketches_1_1req__sketch.html#ac02fcfb6e706148458a2ef89390223a9">get_quantile</a>(<span class="keywordtype">double</span> rank, <span class="keywordtype">bool</span> inclusive = <span class="keyword">true</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; </div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">double</span> <a class="code" href="classdatasketches_1_1req__sketch.html#a978630658d411c9c79fffa5909f5c8d0">get_rank_lower_bound</a>(<span class="keywordtype">double</span> rank, uint8_t num_std_dev) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; </div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordtype">double</span> <a class="code" href="classdatasketches_1_1req__sketch.html#a750349aa79dff6db2d13857ab50248bb">get_rank_upper_bound</a>(<span class="keywordtype">double</span> rank, uint8_t num_std_dev) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; </div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classdatasketches_1_1req__sketch.html#a899bef2c5e0ea489ed4b023d2b9900ee">get_RSE</a>(uint16_t k, <span class="keywordtype">double</span> rank, <span class="keywordtype">bool</span> hra, uint64_t n);</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; </div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TT = T, <span class="keyword">typename</span> SerDe = serde&lt;T&gt;, <span class="keyword">typename</span> std::enable_if&lt;std::is_arithmetic&lt;TT&gt;::value, <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classdatasketches_1_1req__sketch.html#ad9a5259d93d148b5c2050d68e7788716">get_serialized_size_bytes</a>(<span class="keyword">const</span> SerDe&amp; sd = SerDe()) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; </div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TT = T, <span class="keyword">typename</span> SerDe = serde&lt;T&gt;, <span class="keyword">typename</span> std::enable_if&lt;!std::is_arithmetic&lt;TT&gt;::value, <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classdatasketches_1_1req__sketch.html#ad9a5259d93d148b5c2050d68e7788716"> 336</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classdatasketches_1_1req__sketch.html#ad9a5259d93d148b5c2050d68e7788716">get_serialized_size_bytes</a>(<span class="keyword">const</span> SerDe&amp; sd = SerDe()) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; </div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> SerDe = serde&lt;T&gt;&gt;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classdatasketches_1_1req__sketch.html#a538940c100e4353b3671ad452d3d3056">serialize</a>(std::ostream&amp; os, <span class="keyword">const</span> SerDe&amp; sd = SerDe()) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; </div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// This is a convenience alias for users</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="comment">// The type returned by the following serialize method</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keyword">using</span> vector_bytes = std::vector&lt;uint8_t, typename std::allocator_traits&lt;Allocator&gt;::template rebind_alloc&lt;uint8_t&gt;&gt;;</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; </div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> SerDe = serde&lt;T&gt;&gt;</div>
<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classdatasketches_1_1req__sketch.html#a1d0c269c23926e93b1c7a9c00e86af97"> 359</a></span>&#160; vector_bytes <a class="code" href="classdatasketches_1_1req__sketch.html#a1d0c269c23926e93b1c7a9c00e86af97">serialize</a>(<span class="keywordtype">unsigned</span> header_size_bytes = 0, <span class="keyword">const</span> SerDe&amp; sd = SerDe()) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; </div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> SerDe = serde&lt;T&gt;&gt;</div>
<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classdatasketches_1_1req__sketch.html#a1936c2c39faaf2c19243949a57cec8e0"> 370</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a> <a class="code" href="classdatasketches_1_1req__sketch.html#a1936c2c39faaf2c19243949a57cec8e0">deserialize</a>(std::istream&amp; is, <span class="keyword">const</span> SerDe&amp; sd = SerDe(),</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">const</span> Comparator&amp; comparator = Comparator(), <span class="keyword">const</span> Allocator&amp; allocator = Allocator());</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; </div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> SerDe = serde&lt;T&gt;&gt;</div>
<div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classdatasketches_1_1req__sketch.html#ae7e9fdcb69c547de681bb6f10ae5ef3e"> 383</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a> <a class="code" href="classdatasketches_1_1req__sketch.html#ae7e9fdcb69c547de681bb6f10ae5ef3e">deserialize</a>(<span class="keyword">const</span> <span class="keywordtype">void</span>* bytes, <span class="keywordtype">size_t</span> size, <span class="keyword">const</span> SerDe&amp; sd = SerDe(),</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keyword">const</span> Comparator&amp; comparator = Comparator(), <span class="keyword">const</span> Allocator&amp; allocator = Allocator());</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; </div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; string&lt;Allocator&gt; <a class="code" href="classdatasketches_1_1req__sketch.html#a592a7af55659ff803b26a45552a68dda">to_string</a>(<span class="keywordtype">bool</span> print_levels = <span class="keyword">false</span>, <span class="keywordtype">bool</span> print_items = <span class="keyword">false</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; </div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keyword">class </span>const_iterator;</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; </div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; const_iterator <a class="code" href="classdatasketches_1_1req__sketch.html#ad5c959a538216a09ab28c5283585956c">begin</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; </div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; const_iterator <a class="code" href="classdatasketches_1_1req__sketch.html#ae11e60e117300685401961e36f196f7a">end</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; </div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="classdatasketches_1_1quantiles__sorted__view.html">quantiles_sorted_view&lt;T, Comparator, Allocator&gt;</a> <a class="code" href="classdatasketches_1_1req__sketch.html#a0a9c9c240dd591017fd6a80e147b7c00">get_sorted_view</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; </div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; Comparator comparator_;</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; Allocator allocator_;</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; uint16_t k_;</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordtype">bool</span> hra_;</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; uint32_t max_nom_size_;</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; uint32_t num_retained_;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; uint64_t n_;</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; std::vector&lt;Compactor, AllocCompactor&gt; compactors_;</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; optional&lt;T&gt; min_item_;</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; optional&lt;T&gt; max_item_;</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">mutable</span> <a class="code" href="classdatasketches_1_1quantiles__sorted__view.html">quantiles_sorted_view&lt;T, Comparator, Allocator&gt;</a>* sorted_view_;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; </div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordtype">void</span> setup_sorted_view() <span class="keyword">const</span>; <span class="comment">// modifies mutable state</span></div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordtype">void</span> reset_sorted_view();</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; </div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> LAZY_COMPRESSION = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; </div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint8_t SERIAL_VERSION = 1;</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint8_t FAMILY = 17;</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> PREAMBLE_SIZE_BYTES = 8;</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keyword">enum</span> flags { RESERVED1, RESERVED2, IS_EMPTY, IS_HIGH_RANK, RAW_ITEMS, IS_LEVEL_ZERO_SORTED };</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; </div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">double</span> FIXED_RSE_FACTOR = 0.084;</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> relative_rse_factor();</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; </div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; uint8_t get_num_levels() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordtype">void</span> grow();</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordtype">void</span> update_max_nom_size();</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordtype">void</span> update_num_retained();</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordtype">void</span> compress();</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; </div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> get_rank_lb(uint16_t k, uint8_t num_levels, <span class="keywordtype">double</span> rank, uint8_t num_std_dev, uint64_t n, <span class="keywordtype">bool</span> hra);</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> get_rank_ub(uint16_t k, uint8_t num_levels, <span class="keywordtype">double</span> rank, uint8_t num_std_dev, uint64_t n, <span class="keywordtype">bool</span> hra);</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> is_exact_rank(uint16_t k, uint8_t num_levels, <span class="keywordtype">double</span> rank, uint64_t n, <span class="keywordtype">bool</span> hra);</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; </div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="comment">// for deserialization</span></div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="classdatasketches_1_1req__sketch.html">req_sketch</a>(uint16_t k, <span class="keywordtype">bool</span> hra, uint64_t n,</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; optional&lt;T&gt;&amp;&amp; min_item, optional&lt;T&gt;&amp;&amp; max_item,</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; std::vector&lt;Compactor, AllocCompactor&gt;&amp;&amp; compactors, <span class="keyword">const</span> Comparator&amp; comparator);</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; </div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> check_preamble_ints(uint8_t preamble_ints, uint8_t num_levels);</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> check_serial_version(uint8_t serial_version);</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> check_family_id(uint8_t family_id);</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; </div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; template&lt;typename TT = T, typename std::enable_if&lt;std::is_floating_point&lt;TT&gt;::value, <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> check_update_item(<span class="keyword">const</span> TT&amp; item) {</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> !std::isnan(item);</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; </div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; template&lt;typename TT = T, typename std::enable_if&lt;!std::is_floating_point&lt;TT&gt;::value, <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> check_update_item(<span class="keyword">const</span> TT&amp;) {</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; </div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="comment">// for type converting constructor</span></div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> TT, <span class="keyword">typename</span> CC, <span class="keyword">typename</span> AA&gt; <span class="keyword">friend</span> <span class="keyword">class </span>req_sketch;</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;};</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; </div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> C, <span class="keyword">typename</span> A&gt;</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="keyword">class </span>req_sketch&lt;T, C, A&gt;::const_iterator {</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keyword">using</span> iterator_category = std::input_iterator_tag;</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keyword">using</span> value_type = std::pair&lt;const T&amp;, const uint64_t&gt;;</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">using</span> difference_type = void;</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keyword">using</span> pointer = <span class="keyword">const</span> return_value_holder&lt;value_type&gt;;</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keyword">using</span> reference = <span class="keyword">const</span> value_type;</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; </div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; const_iterator&amp; operator++();</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; const_iterator&amp; operator++(<span class="keywordtype">int</span>);</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> const_iterator&amp; other) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> const_iterator&amp; other) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; reference operator*() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; pointer operator-&gt;() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keyword">using</span> LevelsIterator = <span class="keyword">typename</span> std::vector&lt;Compactor, AllocCompactor&gt;::const_iterator;</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; LevelsIterator levels_it_;</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; LevelsIterator levels_end_;</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keyword">const</span> T* compactor_it_;</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span>req_sketch&lt;T, C, A&gt;;</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; const_iterator(LevelsIterator <a class="code" href="classdatasketches_1_1req__sketch.html#ad5c959a538216a09ab28c5283585956c">begin</a>, LevelsIterator <a class="code" href="classdatasketches_1_1req__sketch.html#ae11e60e117300685401961e36f196f7a">end</a>);</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;};</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; </div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;} <span class="comment">/* namespace datasketches */</span></div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; </div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="preprocessor">#include &quot;req_sketch_impl.hpp&quot;</span></div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; </div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclassdatasketches_1_1quantiles__sorted__view_html"><div class="ttname"><a href="classdatasketches_1_1quantiles__sorted__view.html">datasketches::quantiles_sorted_view</a></div><div class="ttdoc">Sorted view for quantiles sketches (REQ, KLL and Quantiles)</div><div class="ttdef"><b>Definition:</b> quantiles_sorted_view.hpp:38</div></div>
<div class="ttc" id="aclassdatasketches_1_1quantiles__sorted__view_html_a5ab4905c4f3ebeb14de4e7a2f5d92832"><div class="ttname"><a href="classdatasketches_1_1quantiles__sorted__view.html#a5ab4905c4f3ebeb14de4e7a2f5d92832">datasketches::quantiles_sorted_view::quantile_return_type</a></div><div class="ttdeci">typename std::conditional&lt; std::is_arithmetic&lt; T &gt;::value, T, const T &amp; &gt;::type quantile_return_type</div><div class="ttdoc">Quantile return type.</div><div class="ttdef"><b>Definition:</b> quantiles_sorted_view.hpp:93</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html">datasketches::req_sketch</a></div><div class="ttdoc">Relative Error Quantiles Sketch.</div><div class="ttdef"><b>Definition:</b> req_sketch.hpp:79</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a076f89979daa6471a3868cb97ea99b40"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a076f89979daa6471a3868cb97ea99b40">datasketches::req_sketch::get_comparator</a></div><div class="ttdeci">Comparator get_comparator() const</div><div class="ttdoc">Returns an instance of the comparator for this sketch.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:224</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a0a9c9c240dd591017fd6a80e147b7c00"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a0a9c9c240dd591017fd6a80e147b7c00">datasketches::req_sketch::get_sorted_view</a></div><div class="ttdeci">quantiles_sorted_view&lt; T, Comparator, Allocator &gt; get_sorted_view() const</div><div class="ttdoc">Gets the sorted view of this sketch.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:269</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a1936c2c39faaf2c19243949a57cec8e0"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a1936c2c39faaf2c19243949a57cec8e0">datasketches::req_sketch::deserialize</a></div><div class="ttdeci">static req_sketch deserialize(std::istream &amp;is, const SerDe &amp;sd=SerDe(), const Comparator &amp;comparator=Comparator(), const Allocator &amp;allocator=Allocator())</div><div class="ttdoc">This method deserializes a sketch from a given stream.</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a1943668612ea073d2f6381ee8c2ddfbd"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a1943668612ea073d2f6381ee8c2ddfbd">datasketches::req_sketch::req_sketch</a></div><div class="ttdeci">req_sketch(const req_sketch&lt; TT, CC, AA &gt; &amp;other, const Comparator &amp;comparator=Comparator(), const Allocator &amp;allocator=Allocator())</div><div class="ttdoc">Type converting constructor.</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a1d0c269c23926e93b1c7a9c00e86af97"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a1d0c269c23926e93b1c7a9c00e86af97">datasketches::req_sketch::serialize</a></div><div class="ttdeci">vector_bytes serialize(unsigned header_size_bytes=0, const SerDe &amp;sd=SerDe()) const</div><div class="ttdoc">This method serializes the sketch as a vector of bytes.</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a20a4d992209b2aa58614c998d143705c"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a20a4d992209b2aa58614c998d143705c">datasketches::req_sketch::get_CDF</a></div><div class="ttdeci">vector_double get_CDF(const T *split_points, uint32_t size, bool inclusive=true) const</div><div class="ttdoc">Returns an approximation to the Cumulative Distribution Function (CDF), which is the cumulative analo...</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:251</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a31fa76458d81a17dbebfcb828e531f14"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a31fa76458d81a17dbebfcb828e531f14">datasketches::req_sketch::get_num_retained</a></div><div class="ttdeci">uint32_t get_num_retained() const</div><div class="ttdoc">Returns the number of retained items in the sketch.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:159</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a44226b755e73883ea2c128876e35b1d1"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a44226b755e73883ea2c128876e35b1d1">datasketches::req_sketch::get_PMF</a></div><div class="ttdeci">vector_double get_PMF(const T *split_points, uint32_t size, bool inclusive=true) const</div><div class="ttdoc">Returns an approximation to the Probability Mass Function (PMF) of the input stream given a set of sp...</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:244</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a49bb19e78f36fb72b8496cd6cff71fec"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a49bb19e78f36fb72b8496cd6cff71fec">datasketches::req_sketch::merge</a></div><div class="ttdeci">void merge(FwdSk &amp;&amp;other)</div><div class="ttdoc">Merges another sketch into this one.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:188</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a4c80d2361c940f99df9f850615c2dcbe"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a4c80d2361c940f99df9f850615c2dcbe">datasketches::req_sketch::quantile_return_type</a></div><div class="ttdeci">typename quantiles_sorted_view&lt; T, Comparator, Allocator &gt;::quantile_return_type quantile_return_type</div><div class="ttdoc">Quantile return type.</div><div class="ttdef"><b>Definition:</b> req_sketch.hpp:92</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a5200c74c52ee0f76d0d34c1ca6aec65c"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a5200c74c52ee0f76d0d34c1ca6aec65c">datasketches::req_sketch::update</a></div><div class="ttdeci">void update(FwdT &amp;&amp;item)</div><div class="ttdoc">Updates this sketch with the given data item.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:170</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a538940c100e4353b3671ad452d3d3056"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a538940c100e4353b3671ad452d3d3056">datasketches::req_sketch::serialize</a></div><div class="ttdeci">void serialize(std::ostream &amp;os, const SerDe &amp;sd=SerDe()) const</div><div class="ttdoc">This method serializes the sketch into a given stream in a binary form.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:369</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a592a7af55659ff803b26a45552a68dda"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a592a7af55659ff803b26a45552a68dda">datasketches::req_sketch::to_string</a></div><div class="ttdeci">string&lt; Allocator &gt; to_string(bool print_levels=false, bool print_items=false) const</div><div class="ttdoc">Prints a summary of the sketch.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:631</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a59f4c39b9f2e762e8e3445ef89e1d264"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a59f4c39b9f2e762e8e3445ef89e1d264">datasketches::req_sketch::get_k</a></div><div class="ttdeci">uint16_t get_k() const</div><div class="ttdoc">Returns configured parameter K.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:139</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a5a2b7a58dc85678d08752945ff655362"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a5a2b7a58dc85678d08752945ff655362">datasketches::req_sketch::is_empty</a></div><div class="ttdeci">bool is_empty() const</div><div class="ttdoc">Returns true if this sketch is empty.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:149</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a687ed2123bdc7e67fbda0c081e3acf21"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a687ed2123bdc7e67fbda0c081e3acf21">datasketches::req_sketch::get_max_item</a></div><div class="ttdeci">const T &amp; get_max_item() const</div><div class="ttdoc">Returns the max item of the stream.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:218</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a732d80ecaa19aab05f65ca62bdf0452c"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a732d80ecaa19aab05f65ca62bdf0452c">datasketches::req_sketch::req_sketch</a></div><div class="ttdeci">req_sketch(uint16_t k, bool hra=true, const Comparator &amp;comparator=Comparator(), const Allocator &amp;allocator=Allocator())</div><div class="ttdoc">Constructor.</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a750349aa79dff6db2d13857ab50248bb"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a750349aa79dff6db2d13857ab50248bb">datasketches::req_sketch::get_rank_upper_bound</a></div><div class="ttdeci">double get_rank_upper_bound(double rank, uint8_t num_std_dev) const</div><div class="ttdoc">Returns an approximate upper bound of the given normalized rank.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:289</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a849dfa06c183fd2fdfe4fe4a7e29d918"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a849dfa06c183fd2fdfe4fe4a7e29d918">datasketches::req_sketch::get_rank</a></div><div class="ttdeci">double get_rank(const T &amp;item, bool inclusive=true) const</div><div class="ttdoc">Returns an approximation to the normalized rank of the given item from 0 to 1 inclusive.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:234</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a899bef2c5e0ea489ed4b023d2b9900ee"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a899bef2c5e0ea489ed4b023d2b9900ee">datasketches::req_sketch::get_RSE</a></div><div class="ttdeci">static double get_RSE(uint16_t k, double rank, bool hra, uint64_t n)</div><div class="ttdoc">Returns an a priori estimate of relative standard error (RSE, expressed as a number in [0,...</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:294</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a978630658d411c9c79fffa5909f5c8d0"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a978630658d411c9c79fffa5909f5c8d0">datasketches::req_sketch::get_rank_lower_bound</a></div><div class="ttdeci">double get_rank_lower_bound(double rank, uint8_t num_std_dev) const</div><div class="ttdoc">Returns an approximate lower bound of the given normalized rank.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:284</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_a9d85cf47c4ecd0580ec623c42006dd1b"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#a9d85cf47c4ecd0580ec623c42006dd1b">datasketches::req_sketch::get_allocator</a></div><div class="ttdeci">Allocator get_allocator() const</div><div class="ttdoc">Returns an instance of the allocator for this sketch.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:229</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_ab6e85db46b1d76086d5e9b5065b74a46"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#ab6e85db46b1d76086d5e9b5065b74a46">datasketches::req_sketch::operator=</a></div><div class="ttdeci">req_sketch &amp; operator=(const req_sketch &amp;other)</div><div class="ttdoc">Copy assignment.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:81</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_ac02fcfb6e706148458a2ef89390223a9"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#ac02fcfb6e706148458a2ef89390223a9">datasketches::req_sketch::get_quantile</a></div><div class="ttdeci">quantile_return_type get_quantile(double rank, bool inclusive=true) const</div><div class="ttdoc">Returns an approximate quantile of the given normalized rank.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:258</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_ad5c959a538216a09ab28c5283585956c"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#ad5c959a538216a09ab28c5283585956c">datasketches::req_sketch::begin</a></div><div class="ttdeci">const_iterator begin() const</div><div class="ttdoc">Iterator pointing to the first item in the sketch.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:724</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_ad9a5259d93d148b5c2050d68e7788716"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#ad9a5259d93d148b5c2050d68e7788716">datasketches::req_sketch::get_serialized_size_bytes</a></div><div class="ttdeci">size_t get_serialized_size_bytes(const SerDe &amp;sd=SerDe()) const</div><div class="ttdoc">Computes size needed to serialize the current state of the sketch.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:334</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_ae11e60e117300685401961e36f196f7a"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#ae11e60e117300685401961e36f196f7a">datasketches::req_sketch::end</a></div><div class="ttdeci">const_iterator end() const</div><div class="ttdoc">Iterator pointing to the past-the-end item in the sketch.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:729</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_ae7e9fdcb69c547de681bb6f10ae5ef3e"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#ae7e9fdcb69c547de681bb6f10ae5ef3e">datasketches::req_sketch::deserialize</a></div><div class="ttdeci">static req_sketch deserialize(const void *bytes, size_t size, const SerDe &amp;sd=SerDe(), const Comparator &amp;comparator=Comparator(), const Allocator &amp;allocator=Allocator())</div><div class="ttdoc">This method deserializes a sketch from a given array of bytes.</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_ae95a04b1d7dccb3d9b3f3c3d087aa8e6"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#ae95a04b1d7dccb3d9b3f3c3d087aa8e6">datasketches::req_sketch::is_estimation_mode</a></div><div class="ttdeci">bool is_estimation_mode() const</div><div class="ttdoc">Returns true if this sketch is in estimation mode.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:164</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_af2fa890815acf3a1418ea8eee466075c"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#af2fa890815acf3a1418ea8eee466075c">datasketches::req_sketch::get_min_item</a></div><div class="ttdeci">const T &amp; get_min_item() const</div><div class="ttdoc">Returns the min item of the stream.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:212</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_af6177b85206272c56ee75747bb885735"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#af6177b85206272c56ee75747bb885735">datasketches::req_sketch::is_HRA</a></div><div class="ttdeci">bool is_HRA() const</div><div class="ttdoc">Returns configured parameter High Rank Accuracy.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:144</div></div>
<div class="ttc" id="aclassdatasketches_1_1req__sketch_html_af857be9469a7565252626f27e1f9d74d"><div class="ttname"><a href="classdatasketches_1_1req__sketch.html#af857be9469a7565252626f27e1f9d74d">datasketches::req_sketch::get_n</a></div><div class="ttdeci">uint64_t get_n() const</div><div class="ttdoc">Returns the length of the input stream.</div><div class="ttdef"><b>Definition:</b> req_sketch_impl.hpp:154</div></div>
<div class="ttc" id="anamespacedatasketches_html"><div class="ttname"><a href="namespacedatasketches.html">datasketches</a></div><div class="ttdoc">DataSketches namespace.</div><div class="ttdef"><b>Definition:</b> binomial_bounds.hpp:38</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.1
</small></address>
</body>
</html>