• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<head>
4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5<title>User's Guide</title>
6<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
7<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
8<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
9<link rel="up" href="../accumulators.html" title="Chapter 1. Boost.Accumulators">
10<link rel="prev" href="../accumulators.html" title="Chapter 1. Boost.Accumulators">
11<link rel="next" href="acknowledgements.html" title="Acknowledgements">
12</head>
13<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14<table cellpadding="2" width="100%"><tr>
15<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
16<td align="center"><a href="../../../index.html">Home</a></td>
17<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
18<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
19<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
20<td align="center"><a href="../../../more/index.htm">More</a></td>
21</tr></table>
22<hr>
23<div class="spirit-nav">
24<a accesskey="p" href="../accumulators.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../accumulators.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
25</div>
26<div class="section">
27<div class="titlepage"><div><div><h2 class="title" style="clear: both">
28<a name="accumulators.user_s_guide"></a><a class="link" href="user_s_guide.html" title="User's Guide">User's Guide</a>
29</h2></div></div></div>
30<div class="toc"><dl class="toc">
31<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework">The
32      Accumulators Framework</a></span></dt>
33<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library">The
34      Statistical Accumulators Library</a></span></dt>
35</dl></div>
36<p>
37      This section describes how to use the Boost.Accumulators framework to create
38      new accumulators and how to use the existing statistical accumulators to perform
39      incremental statistical computation. For detailed information regarding specific
40      components in Boost.Accumulators, check the <a class="link" href="reference.html#accumulators_framework_reference" title="Accumulators Framework Reference">Reference</a>
41      section.
42    </p>
43<h3>
44<a name="accumulators.user_s_guide.h0"></a>
45      <span class="phrase"><a name="accumulators.user_s_guide.hello__world_"></a></span><a class="link" href="user_s_guide.html#accumulators.user_s_guide.hello__world_">Hello,
46      World!</a>
47    </h3>
48<p>
49      Below is a complete example of how to use the Accumulators Framework and the
50      Statistical Accumulators to perform an incremental statistical calculation.
51      It calculates the mean and 2nd moment of a sequence of doubles.
52    </p>
53<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
54<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">accumulators</span><span class="special">/</span><span class="identifier">accumulators</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
55<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">accumulators</span><span class="special">/</span><span class="identifier">statistics</span><span class="special">/</span><span class="identifier">stats</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
56<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">accumulators</span><span class="special">/</span><span class="identifier">statistics</span><span class="special">/</span><span class="identifier">mean</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
57<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">accumulators</span><span class="special">/</span><span class="identifier">statistics</span><span class="special">/</span><span class="identifier">moment</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
58<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulators</span><span class="special">;</span>
59
60<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
61<span class="special">{</span>
62    <span class="comment">// Define an accumulator set for calculating the mean and the</span>
63    <span class="comment">// 2nd moment ...</span>
64    <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
65
66    <span class="comment">// push in some data ...</span>
67    <span class="identifier">acc</span><span class="special">(</span><span class="number">1.2</span><span class="special">);</span>
68    <span class="identifier">acc</span><span class="special">(</span><span class="number">2.3</span><span class="special">);</span>
69    <span class="identifier">acc</span><span class="special">(</span><span class="number">3.4</span><span class="special">);</span>
70    <span class="identifier">acc</span><span class="special">(</span><span class="number">4.5</span><span class="special">);</span>
71
72    <span class="comment">// Display the results ...</span>
73    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Mean:   "</span> <span class="special">&lt;&lt;</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">acc</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
74    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Moment: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
75
76    <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
77<span class="special">}</span>
78</pre>
79<p>
80      This program displays the following:
81    </p>
82<pre class="programlisting">Mean:   2.85
83Moment: 9.635
84</pre>
85<div class="section">
86<div class="titlepage"><div><div><h3 class="title">
87<a name="accumulators.user_s_guide.the_accumulators_framework"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework" title="The Accumulators Framework">The
88      Accumulators Framework</a>
89</h3></div></div></div>
90<div class="toc"><dl class="toc">
91<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.using___accumulator_set___">Using
92        <code class="literal">accumulator_set&lt;&gt;</code></a></span></dt>
93<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extracting_results">Extracting
94        Results</a></span></dt>
95<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.passing_optional_parameters">Passing
96        Optional Parameters</a></span></dt>
97<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.weighted_samples">Weighted
98        Samples</a></span></dt>
99<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.numeric_operators_sub_library">Numeric
100        Operators Sub-Library</a></span></dt>
101<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework">Extending
102        the Accumulators Framework</a></span></dt>
103<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.concepts">Concepts</a></span></dt>
104</dl></div>
105<p>
106        The Accumulators Framework is framework for performing incremental calculations.
107        Usage of the framework follows the following pattern:
108      </p>
109<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
110<li class="listitem">
111            Users build a computational object, called an <span class="emphasis"><em><code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code></em></span>,
112            by selecting the computations in which they are interested, or authoring
113            their own computational primitives which fit within the framework.
114          </li>
115<li class="listitem">
116            Users push data into the <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
117            object one sample at a time.
118          </li>
119<li class="listitem">
120            The <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
121            computes the requested quantities in the most efficient method possible,
122            resolving dependencies between requested calculations, possibly caching
123            intermediate results.
124          </li>
125</ul></div>
126<p>
127        The Accumulators Framework defines the utilities needed for defining primitive
128        computational elements, called <span class="emphasis"><em>accumulators</em></span>. It also
129        provides the <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
130        type, described above.
131      </p>
132<h3>
133<a name="accumulators.user_s_guide.the_accumulators_framework.h0"></a>
134        <span class="phrase"><a name="accumulators.user_s_guide.the_accumulators_framework.terminology"></a></span><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.terminology">Terminology</a>
135      </h3>
136<p>
137        The following terms are used in the rest of the documentation.
138      </p>
139<div class="variablelist">
140<p class="title"><b></b></p>
141<dl class="variablelist">
142<dt><span class="term">Sample</span></dt>
143<dd><p>
144              <a name="sample_type"></a>A datum that is pushed into an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>. The type of the
145              sample is the <span class="emphasis"><em>sample type</em></span>.
146            </p></dd>
147<dt><span class="term">Weight</span></dt>
148<dd><p>
149              <a name="weight_type"></a>An optional scalar value passed along with
150              the sample specifying the weight of the sample. Conceptually, each
151              sample is multiplied with its weight. The type of the weight is the
152              <span class="emphasis"><em>weight type</em></span>.
153            </p></dd>
154<dt><span class="term">Feature</span></dt>
155<dd><p>
156              An abstract primitive computational entity. When defining an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>, users specify
157              the features in which they are interested, and the <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
158              figures out which <span class="emphasis"><em>accumulators</em></span> would best provide
159              those features. Features may depend on other features. If they do,
160              the accumulator set figures out which accumulators to add to satisfy
161              the dependencies.
162            </p></dd>
163<dt><span class="term">Accumulator</span></dt>
164<dd><p>
165              A concrete primitive computational entity. An accumulator is a concrete
166              implementation of a feature. It satisfies exactly one abstract feature.
167              Several different accumulators may provide the same feature, but may
168              represent different implementation strategies.
169            </p></dd>
170<dt><span class="term">Accumulator Set</span></dt>
171<dd><p>
172              A collection of accumulators. An accumulator set is specified with
173              a sample type and a list of features. The accumulator set uses this
174              information to generate an ordered set of accumulators depending on
175              the feature dependency graph. An accumulator set accepts samples one
176              datum at a time, propagating them to each accumulator in order. At
177              any point, results can be extracted from the accumulator set.
178            </p></dd>
179<dt><span class="term">Extractor</span></dt>
180<dd><p>
181              A function or function object that can be used to extract a result
182              from an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>.
183            </p></dd>
184</dl>
185</div>
186<h3>
187<a name="accumulators.user_s_guide.the_accumulators_framework.h1"></a>
188        <span class="phrase"><a name="accumulators.user_s_guide.the_accumulators_framework.overview"></a></span><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.overview">Overview</a>
189      </h3>
190<p>
191        Here is a list of the important types and functions in the Accumulator Framework
192        and a brief description of each.
193      </p>
194<div class="table">
195<a name="accumulators.user_s_guide.the_accumulators_framework.t0"></a><p class="title"><b>Table 1.1. Accumulators Toolbox</b></p>
196<div class="table-contents"><table class="table" summary="Accumulators Toolbox">
197<colgroup>
198<col>
199<col>
200</colgroup>
201<thead><tr>
202<th>
203                <p>
204                  Tool
205                </p>
206              </th>
207<th>
208                <p>
209                  Description
210                </p>
211              </th>
212</tr></thead>
213<tbody>
214<tr>
215<td>
216                <p>
217                  <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
218                </p>
219              </td>
220<td>
221                <p>
222                  This is the most important type in the Accumulators Framework.
223                  It is a collection of accumulators. A datum pushed into an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code> is forwarded
224                  to each accumulator, in an order determined by the dependency relationships
225                  between the accumulators. Computational results can be extracted
226                  from an accumulator at any time.
227                </p>
228              </td>
229</tr>
230<tr>
231<td>
232                <p>
233                  <code class="computeroutput"><a class="link" href="../boost/accumulators/depends_on.html" title="Struct template depends_on">depends_on&lt;&gt;</a></code>
234                </p>
235              </td>
236<td>
237                <p>
238                  Used to specify which other features a feature depends on.
239                </p>
240              </td>
241</tr>
242<tr>
243<td>
244                <p>
245                  <code class="computeroutput"><a class="link" href="../boost/accumulators/feature_of.html" title="Struct template feature_of">feature_of&lt;&gt;</a></code>
246                </p>
247              </td>
248<td>
249                <p>
250                  Trait used to tell the Accumulators Framework that, for the purpose
251                  of feature-based dependency resolution, one feature should be treated
252                  the same as another.
253                </p>
254              </td>
255</tr>
256<tr>
257<td>
258                <p>
259                  <code class="computeroutput"><a class="link" href="../boost/accumulators/as_feature.html" title="Struct template as_feature">as_feature&lt;&gt;</a></code>
260                </p>
261              </td>
262<td>
263                <p>
264                  Used to create an alias for a feature. For example, if there are
265                  two features, fast_X and accurate_X, they can be mapped to X(fast)
266                  and X(accurate) with <code class="computeroutput"><a class="link" href="../boost/accumulators/as_feature.html" title="Struct template as_feature">as_feature&lt;&gt;</a></code>.
267                  This is just syntactic sugar.
268                </p>
269              </td>
270</tr>
271<tr>
272<td>
273                <p>
274                  <code class="computeroutput"><a class="link" href="../boost/accumulators/features.html" title="Struct template features">features&lt;&gt;</a></code>
275                </p>
276              </td>
277<td>
278                <p>
279                  An <a href="../../../libs/mpl/index.html" target="_top">MPL</a> sequence.
280                  We can use <code class="computeroutput"><a class="link" href="../boost/accumulators/features.html" title="Struct template features">features&lt;&gt;</a></code>
281                  as the second template parameter when declaring an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>.
282                </p>
283              </td>
284</tr>
285<tr>
286<td>
287                <p>
288                  <code class="computeroutput">external&lt;&gt;</code>
289                </p>
290              </td>
291<td>
292                <p>
293                  Used when declaring an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>.
294                  If the weight type is specified with <code class="computeroutput">external&lt;&gt;</code>,
295                  then the weight accumulators are assumed to reside in a separate
296                  accumulator set which will be passed in with a named parameter.
297                </p>
298              </td>
299</tr>
300<tr>
301<td>
302                <p>
303                  <code class="computeroutput">extractor&lt;&gt;</code>
304                </p>
305              </td>
306<td>
307                <p>
308                  A class template useful for creating an extractor function object.
309                  It is parameterized on a feature, and it has member functions for
310                  extracting from an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
311                  the result corresponding to that feature.
312                </p>
313              </td>
314</tr>
315</tbody>
316</table></div>
317</div>
318<br class="table-break"><div class="section">
319<div class="titlepage"><div><div><h4 class="title">
320<a name="accumulators.user_s_guide.the_accumulators_framework.using___accumulator_set___"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.using___accumulator_set___" title="Using accumulator_set&lt;&gt;">Using
321        <code class="literal">accumulator_set&lt;&gt;</code></a>
322</h4></div></div></div>
323<p>
324          Our tour of the <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
325          class template begins with the forward declaration:
326        </p>
327<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Sample</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Features</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Weight</span> <span class="special">=</span> <span class="keyword">void</span> <span class="special">&gt;</span>
328<span class="keyword">struct</span> <span class="identifier">accumulator_set</span><span class="special">;</span>
329</pre>
330<p>
331          The template parameters have the following meaning:
332        </p>
333<div class="variablelist">
334<p class="title"><b></b></p>
335<dl class="variablelist">
336<dt><span class="term"><code class="computeroutput"><span class="identifier">Sample</span></code></span></dt>
337<dd><p>
338                The type of the data that will be accumulated.
339              </p></dd>
340<dt><span class="term"><code class="computeroutput"><span class="identifier">Features</span></code></span></dt>
341<dd><p>
342                An <a href="../../../libs/mpl/index.html" target="_top">MPL</a> sequence of
343                features to be calculated.
344              </p></dd>
345<dt><span class="term"><code class="computeroutput"><span class="identifier">Weight</span></code></span></dt>
346<dd><p>
347                The type of the (optional) weight paramter.
348              </p></dd>
349</dl>
350</div>
351<p>
352          For example, the following line declares an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
353          that will accept a sequence of doubles one at a time and calculate the
354          min and mean:
355        </p>
356<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span> <span class="keyword">double</span><span class="special">,</span> <span class="identifier">features</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">min</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
357</pre>
358<p>
359          Notice that we use the <code class="computeroutput"><a class="link" href="../boost/accumulators/features.html" title="Struct template features">features&lt;&gt;</a></code>
360          template to specify a list of features to be calculated. <code class="computeroutput"><a class="link" href="../boost/accumulators/features.html" title="Struct template features">features&lt;&gt;</a></code>
361          is an MPL sequence of features.
362        </p>
363<div class="note"><table border="0" summary="Note">
364<tr>
365<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
366<th align="left">Note</th>
367</tr>
368<tr><td align="left" valign="top"><p>
369            <code class="computeroutput"><a class="link" href="../boost/accumulators/features.html" title="Struct template features">features&lt;&gt;</a></code> is a synonym of
370            <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;&gt;</span></code>.
371            In fact, we could use <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;&gt;</span></code> or any MPL sequence if we prefer,
372            and the meaning would be the same.
373          </p></td></tr>
374</table></div>
375<p>
376          Once we have defined an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>,
377          we can then push data into it, and it will calculate the quantities you
378          requested, as shown below.
379        </p>
380<pre class="programlisting"><span class="comment">// push some data into the accumulator_set ...</span>
381<span class="identifier">acc</span><span class="special">(</span><span class="number">1.2</span><span class="special">);</span>
382<span class="identifier">acc</span><span class="special">(</span><span class="number">2.3</span><span class="special">);</span>
383<span class="identifier">acc</span><span class="special">(</span><span class="number">3.4</span><span class="special">);</span>
384</pre>
385<p>
386          Since <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
387          defines its accumulate function to be the function call operator, we might
388          be tempted to use an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
389          as a UnaryFunction to a standard algorithm such as <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span></code>.
390          That's fine as long as we keep in mind that the standard algorithms take
391          UnaryFunction objects by value, which involves making a copy of the <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code> object. Consider the
392          following:
393        </p>
394<pre class="programlisting"><span class="comment">// The data for which we wish to calculate statistical properties:</span>
395<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">data</span><span class="special">(</span> <span class="comment">/* stuff */</span> <span class="special">);</span>
396
397<span class="comment">// The accumulator set which will calculate the properties for us:    </span>
398<span class="identifier">accumulator_set</span><span class="special">&lt;</span> <span class="keyword">double</span><span class="special">,</span> <span class="identifier">features</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">min</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
399
400<span class="comment">// Use std::for_each to accumulate the statistical properties:</span>
401<span class="identifier">acc</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span> <span class="identifier">data</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">data</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">acc</span> <span class="special">);</span>
402</pre>
403<p>
404          Notice how we must assign the return value of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span></code>
405          back to the <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>.
406          This works, but some accumulators are not cheap to copy. For example, the
407          <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail.html" title="Struct template tail">tail</a></code>
408          and <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail_variate.html" title="Struct template tail_variate">tail_variate&lt;&gt;</a></code>
409          accumulators must store a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;&gt;</span></code>, so copying these accumulators
410          involves a dynamic allocation. We might be better off in this case passing
411          the accumulator by reference, with the help of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">()</span></code>. See below:
412        </p>
413<pre class="programlisting"><span class="comment">// The data for which we wish to calculate statistical properties:</span>
414<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">data</span><span class="special">(</span> <span class="comment">/* stuff */</span> <span class="special">);</span>
415
416<span class="comment">// The accumulator set which will calculate the properties for us:</span>
417<span class="identifier">accumulator_set</span><span class="special">&lt;</span> <span class="keyword">double</span><span class="special">,</span> <span class="identifier">features</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">(</span>
418    <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;::</span><span class="identifier">cache_size</span> <span class="special">=</span> <span class="number">4</span> <span class="special">);</span>
419
420<span class="comment">// Use std::for_each to accumulate the statistical properties:</span>
421<span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span> <span class="identifier">data</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">data</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">bind</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">&gt;(</span> <span class="identifier">ref</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="identifier">_1</span> <span class="special">)</span> <span class="special">);</span>
422</pre>
423<p>
424          Notice now that we don't care about the return value of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">()</span></code> anymore because <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">()</span></code> is modifying <code class="computeroutput"><span class="identifier">acc</span></code>
425          directly.
426        </p>
427<div class="note"><table border="0" summary="Note">
428<tr>
429<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
430<th align="left">Note</th>
431</tr>
432<tr><td align="left" valign="top"><p>
433            To use <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">()</span></code>
434            and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">()</span></code>,
435            you must <code class="computeroutput"><span class="preprocessor">#include</span></code>
436            <code class="literal">&lt;boost/bind.hpp&gt;</code> and <code class="literal">&lt;boost/ref.hpp&gt;</code>
437          </p></td></tr>
438</table></div>
439</div>
440<div class="section">
441<div class="titlepage"><div><div><h4 class="title">
442<a name="accumulators.user_s_guide.the_accumulators_framework.extracting_results"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extracting_results" title="Extracting Results">Extracting
443        Results</a>
444</h4></div></div></div>
445<p>
446          Once we have declared an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
447          and pushed data into it, we need to be able to extract results from it.
448          For each feature we can add to an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>,
449          there is a corresponding extractor for fetching its result. Usually, the
450          extractor has the same name as the feature, but in a different namespace.
451          For example, if we accumulate the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">min</span></code>
452          and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">max</span></code> features, we can extract the results
453          with the <code class="computeroutput"><span class="identifier">min</span></code> and <code class="computeroutput"><span class="identifier">max</span></code> extractors, as follows:
454        </p>
455<pre class="programlisting"><span class="comment">// Calculate the minimum and maximum for a sequence of integers.</span>
456<span class="identifier">accumulator_set</span><span class="special">&lt;</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">features</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">min</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">max</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
457<span class="identifier">acc</span><span class="special">(</span> <span class="number">2</span> <span class="special">);</span>
458<span class="identifier">acc</span><span class="special">(</span> <span class="special">-</span><span class="number">1</span> <span class="special">);</span>
459<span class="identifier">acc</span><span class="special">(</span> <span class="number">1</span> <span class="special">);</span>
460
461<span class="comment">// This displays "(-1, 2)"</span>
462<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="char">'('</span> <span class="special">&lt;&lt;</span> <span class="identifier">min</span><span class="special">(</span> <span class="identifier">acc</span> <span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">", "</span> <span class="special">&lt;&lt;</span> <span class="identifier">max</span><span class="special">(</span> <span class="identifier">acc</span> <span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">")\n"</span><span class="special">;</span>
463</pre>
464<p>
465          The extractors are all declared in the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">extract</span></code>
466          namespace, but they are brought into the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulators</span></code>
467          namespace with a <code class="computeroutput"><span class="keyword">using</span></code> declaration.
468        </p>
469<div class="tip"><table border="0" summary="Tip">
470<tr>
471<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../doc/src/images/tip.png"></td>
472<th align="left">Tip</th>
473</tr>
474<tr><td align="left" valign="top"><p>
475            On the Windows platform, <code class="computeroutput"><span class="identifier">min</span></code>
476            and <code class="computeroutput"><span class="identifier">max</span></code> are preprocessor
477            macros defined in <code class="literal">WinDef.h</code>. To use the <code class="computeroutput"><span class="identifier">min</span></code> and <code class="computeroutput"><span class="identifier">max</span></code>
478            extractors, you should either compile with <code class="computeroutput"><span class="identifier">NOMINMAX</span></code>
479            defined, or you should invoke the extractors like: <code class="computeroutput"><span class="special">(</span><span class="identifier">min</span><span class="special">)(</span> <span class="identifier">acc</span> <span class="special">)</span></code>
480            and <code class="computeroutput"><span class="special">(</span><span class="identifier">max</span><span class="special">)(</span> <span class="identifier">acc</span> <span class="special">)</span></code>. The parentheses keep the macro from
481            being invoked.
482          </p></td></tr>
483</table></div>
484<p>
485          Another way to extract a result from an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
486          is with the <code class="computeroutput"><span class="identifier">extract_result</span><span class="special">()</span></code> function. This can be more convenient
487          if there isn't an extractor object handy for a certain feature. The line
488          above which displays results could equally be written as:
489        </p>
490<pre class="programlisting"><span class="comment">// This displays "(-1, 2)"</span>
491<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="char">'('</span>  <span class="special">&lt;&lt;</span> <span class="identifier">extract_result</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">min</span> <span class="special">&gt;(</span> <span class="identifier">acc</span> <span class="special">)</span>
492          <span class="special">&lt;&lt;</span> <span class="string">", "</span> <span class="special">&lt;&lt;</span> <span class="identifier">extract_result</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">max</span> <span class="special">&gt;(</span> <span class="identifier">acc</span> <span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">")\n"</span><span class="special">;</span>
493</pre>
494<p>
495          Finally, we can define our own extractor using the <code class="computeroutput">extractor&lt;&gt;</code>
496          class template. For instance, another way to avoid the <code class="computeroutput"><span class="identifier">min</span></code>
497          / <code class="computeroutput"><span class="identifier">max</span></code> macro business would
498          be to define extractors with names that don't conflict with the macros,
499          like this:
500        </p>
501<pre class="programlisting"><span class="identifier">extractor</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">min</span> <span class="special">&gt;</span> <span class="identifier">min_</span><span class="special">;</span>
502<span class="identifier">extractor</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">min</span> <span class="special">&gt;</span> <span class="identifier">max_</span><span class="special">;</span>
503
504<span class="comment">// This displays "(-1, 2)"</span>
505<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="char">'('</span> <span class="special">&lt;&lt;</span> <span class="identifier">min_</span><span class="special">(</span> <span class="identifier">acc</span> <span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">", "</span> <span class="special">&lt;&lt;</span> <span class="identifier">max_</span><span class="special">(</span> <span class="identifier">acc</span> <span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">")\n"</span><span class="special">;</span>
506</pre>
507</div>
508<div class="section">
509<div class="titlepage"><div><div><h4 class="title">
510<a name="accumulators.user_s_guide.the_accumulators_framework.passing_optional_parameters"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.passing_optional_parameters" title="Passing Optional Parameters">Passing
511        Optional Parameters</a>
512</h4></div></div></div>
513<p>
514          Some accumulators need initialization parameters. In addition, perhaps
515          some auxiliary information needs to be passed into the <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
516          along with each sample. Boost.Accumulators handles these cases with named
517          parameters from the <a href="../../../libs/parameter/index.html" target="_top">Boost.Parameter</a>
518          library.
519        </p>
520<p>
521          For example, consider the <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail.html" title="Struct template tail">tail</a></code> and <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail_variate.html" title="Struct template tail_variate">tail_variate&lt;&gt;</a></code>
522          features. <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail.html" title="Struct template tail">tail</a></code> keeps an ordered list
523          of the largest <code class="literal"><span class="emphasis"><em>N</em></span></code> samples, where
524          <code class="literal"><span class="emphasis"><em>N</em></span></code> can be specified at construction
525          time. Also, the <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail_variate.html" title="Struct template tail_variate">tail_variate&lt;&gt;</a></code>
526          feature, which depends on <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail.html" title="Struct template tail">tail</a></code>, keeps track of some
527          data that is covariate with the <code class="literal"><span class="emphasis"><em>N</em></span></code>
528          samples tracked by <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail.html" title="Struct template tail">tail</a></code>. The code below shows
529          how this all works, and is described in more detail below.
530        </p>
531<pre class="programlisting"><span class="comment">// Define a feature for tracking covariate data</span>
532<span class="keyword">typedef</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_variate</span><span class="special">&lt;</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">,</span> <span class="identifier">left</span> <span class="special">&gt;</span> <span class="identifier">my_tail_variate_tag</span><span class="special">;</span>
533
534<span class="comment">// This will calculate the left tail and my_tail_variate_tag for N == 2</span>
535<span class="comment">// using the tag::tail&lt;left&gt;::cache_size named parameter</span>
536<span class="identifier">accumulator_set</span><span class="special">&lt;</span> <span class="keyword">double</span><span class="special">,</span> <span class="identifier">features</span><span class="special">&lt;</span> <span class="identifier">my_tail_variate_tag</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">(</span>
537    <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;::</span><span class="identifier">cache_size</span> <span class="special">=</span> <span class="number">2</span> <span class="special">);</span>
538
539<span class="comment">// push in some samples and some covariates by using </span>
540<span class="comment">// the covariate1 named parameter</span>
541<span class="identifier">acc</span><span class="special">(</span> <span class="number">1.2</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span>  <span class="number">12</span> <span class="special">);</span>
542<span class="identifier">acc</span><span class="special">(</span> <span class="number">2.3</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="special">-</span><span class="number">23</span> <span class="special">);</span>
543<span class="identifier">acc</span><span class="special">(</span> <span class="number">3.4</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span>  <span class="number">34</span> <span class="special">);</span>
544<span class="identifier">acc</span><span class="special">(</span> <span class="number">4.5</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="special">-</span><span class="number">45</span> <span class="special">);</span>
545
546<span class="comment">// Define an extractor for the my_tail_variate_tag feature</span>
547<span class="identifier">extractor</span><span class="special">&lt;</span> <span class="identifier">my_tail_variate_tag</span> <span class="special">&gt;</span> <span class="identifier">my_tail_variate</span><span class="special">;</span>
548
549<span class="comment">// Write the tail statistic to std::cout. This will print "4.5, 3.4, "</span>
550<span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream_iterator</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">dout</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">,</span> <span class="string">", "</span> <span class="special">);</span>
551<span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span> <span class="identifier">tail</span><span class="special">(</span> <span class="identifier">acc</span> <span class="special">).</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">tail</span><span class="special">(</span> <span class="identifier">acc</span> <span class="special">).</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">dout</span> <span class="special">);</span>
552
553<span class="comment">// Write the tail_variate statistic to std::cout. This will print "-45, 34, "</span>
554<span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream_iterator</span><span class="special">&lt;</span> <span class="keyword">int</span> <span class="special">&gt;</span> <span class="identifier">iout</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">,</span> <span class="string">", "</span> <span class="special">);</span>
555<span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span> <span class="identifier">my_tail_variate</span><span class="special">(</span> <span class="identifier">acc</span> <span class="special">).</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">my_tail_variate</span><span class="special">(</span> <span class="identifier">acc</span> <span class="special">).</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">iout</span> <span class="special">);</span>
556</pre>
557<p>
558          There are several things to note about the code above. First, notice that
559          we didn't have to request that the <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail.html" title="Struct template tail">tail</a></code> feature be calculated.
560          That is implicit because the <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail_variate.html" title="Struct template tail_variate">tail_variate&lt;&gt;</a></code>
561          feature depends on the <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail.html" title="Struct template tail">tail</a></code> feature. Next, notice
562          how the <code class="computeroutput"><span class="identifier">acc</span></code> object is initialized:
563          <code class="computeroutput"><span class="identifier">acc</span><span class="special">(</span>
564          <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;::</span><span class="identifier">cache_size</span> <span class="special">=</span>
565          <span class="number">2</span> <span class="special">)</span></code>.
566          Here, <code class="computeroutput"><span class="identifier">cache_size</span></code> is a named
567          parameter. It is used to tell the <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail.html" title="Struct template tail">tail</a></code> and <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail_variate.html" title="Struct template tail_variate">tail_variate&lt;&gt;</a></code>
568          accumulators how many samples and covariates to store. Conceptually, every
569          construction parameter is made available to every accumulator in an accumulator
570          set.
571        </p>
572<p>
573          We also use a named parameter to pass covariate data into the accumulator
574          set along with the samples. As with the constructor parameters, all parameters
575          to the accumulate function are made available to all the accumulators in
576          the set. In this case, only the accumulator for the <code class="computeroutput"><span class="identifier">my_tail_variate</span></code>
577          feature would be interested in the value of the <code class="computeroutput"><span class="identifier">covariate1</span></code>
578          named parameter.
579        </p>
580<p>
581          We can make one final observation about the example above. Since <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail.html" title="Struct template tail">tail</a></code>
582          and <code class="computeroutput"><a class="link" href="../boost/accumulators/tag/tail_variate.html" title="Struct template tail_variate">tail_variate&lt;&gt;</a></code>
583          are multi-valued features, the result we extract for them is represented
584          as an iterator range. That is why we can say <code class="computeroutput"><span class="identifier">tail</span><span class="special">(</span> <span class="identifier">acc</span> <span class="special">).</span><span class="identifier">begin</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">tail</span><span class="special">(</span> <span class="identifier">acc</span> <span class="special">).</span><span class="identifier">end</span><span class="special">()</span></code>.
585        </p>
586<p>
587          Even the extractors can accept named parameters. In a bit, we'll see a
588          situation where that is useful.
589        </p>
590</div>
591<div class="section">
592<div class="titlepage"><div><div><h4 class="title">
593<a name="accumulators.user_s_guide.the_accumulators_framework.weighted_samples"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.weighted_samples" title="Weighted Samples">Weighted
594        Samples</a>
595</h4></div></div></div>
596<p>
597          Some accumulators, statistical accumulators in particular, deal with data
598          that are <span class="emphasis"><em>weighted</em></span>. Each sample pushed into the accumulator
599          has an associated weight, by which the sample is conceptually multiplied.
600          The Statistical Accumulators Library provides an assortment of these weighted
601          statistical accumulators. And many unweighted statistical accumulators
602          have weighted variants. For instance, the weighted variant of the <code class="computeroutput"><span class="identifier">sum</span></code> accumulator is called <code class="computeroutput"><span class="identifier">weighted_sum</span></code>, and is calculated by accumulating
603          all the samples multiplied by their weights.
604        </p>
605<p>
606          To declare an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
607          that accepts weighted samples, you must specify the type of the weight
608          parameter as the 3rd template parameter, as follows:
609        </p>
610<pre class="programlisting"><span class="comment">// 3rd template parameter 'int' means this is a weighted</span>
611<span class="comment">// accumulator set where the weights have type 'int'</span>
612<span class="identifier">accumulator_set</span><span class="special">&lt;</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">features</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum</span> <span class="special">&gt;,</span> <span class="keyword">int</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
613</pre>
614<p>
615          When you specify a weight, all the accumulators in the set are replaced
616          with their weighted equivalents. For example, the above <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
617          declaration is equivalent to the following:
618        </p>
619<pre class="programlisting"><span class="comment">// Since we specified a weight, tag::sum becomes tag::weighted_sum</span>
620<span class="identifier">accumulator_set</span><span class="special">&lt;</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">features</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_sum</span> <span class="special">&gt;,</span> <span class="keyword">int</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
621</pre>
622<p>
623          When passing samples to the accumulator set, you must also specify the
624          weight of each sample. You can do that with the <code class="computeroutput"><span class="identifier">weight</span></code>
625          named parameter, as follows:
626        </p>
627<pre class="programlisting"><span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">2</span><span class="special">);</span> <span class="comment">//   1 * 2</span>
628<span class="identifier">acc</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">4</span><span class="special">);</span> <span class="comment">//   2 * 4</span>
629<span class="identifier">acc</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">6</span><span class="special">);</span> <span class="comment">// + 3 * 6</span>
630                    <span class="comment">// -------</span>
631                    <span class="comment">// =    28</span>
632</pre>
633<p>
634          You can then extract the result with the <code class="computeroutput"><span class="identifier">sum</span><span class="special">()</span></code> extractor, as follows:
635        </p>
636<pre class="programlisting"><span class="comment">// This prints "28"</span>
637<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
638</pre>
639<div class="note"><table border="0" summary="Note">
640<tr>
641<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
642<th align="left">Note</th>
643</tr>
644<tr><td align="left" valign="top"><p>
645            When working with weighted statistical accumulators from the Statistical
646            Accumulators Library, be sure to include the appropriate header. For
647            instance, <code class="computeroutput"><span class="identifier">weighted_sum</span></code>
648            is defined in <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">accumulators</span><span class="special">/</span><span class="identifier">statistics</span><span class="special">/</span><span class="identifier">weighted_sum</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>.
649          </p></td></tr>
650</table></div>
651</div>
652<div class="section">
653<div class="titlepage"><div><div><h4 class="title">
654<a name="accumulators.user_s_guide.the_accumulators_framework.numeric_operators_sub_library"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.numeric_operators_sub_library" title="Numeric Operators Sub-Library">Numeric
655        Operators Sub-Library</a>
656</h4></div></div></div>
657<p>
658          This section describes the function objects in the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span></code>
659          namespace, which is a sub-library that provides function objects and meta-functions
660          corresponding to the infix operators in C++.
661        </p>
662<p>
663          In the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">operators</span></code> namespace are additional operator
664          overloads for some useful operations not provided by the standard library,
665          such as multiplication of a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;&gt;</span></code> with a scalar.
666        </p>
667<p>
668          In the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span></code> namespace are function object
669          equivalents of the infix operators. These function object types are heterogeneous,
670          and so are more general than the standard ones found in the <code class="literal">&lt;functional&gt;</code>
671          header. They use the Boost.Typeof library to deduce the return types of
672          the infix expressions they evaluate. In addition, they look within the
673          <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">operators</span></code> namespace to consider any additional
674          overloads that might be defined there.
675        </p>
676<p>
677          In the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span></code> namespace are global polymorphic
678          function objects corresponding to the function object types defined in
679          the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span></code> namespace. For example, <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">plus</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></code> is equivalent to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">plus</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">&gt;()(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></code>, and both are equivalent to <code class="computeroutput"><span class="keyword">using</span> <span class="keyword">namespace</span>
680          <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">operators</span><span class="special">;</span>
681          <span class="identifier">a</span> <span class="special">+</span>
682          <span class="identifier">b</span><span class="special">;</span></code>.
683        </p>
684<p>
685          The Numeric Operators Sub-Library also gives several ways to sub-class
686          and a way to sub-class and specialize operations. One way uses tag dispatching
687          on the types of the operands. The other way is based on the compile-time
688          properties of the operands.
689        </p>
690</div>
691<div class="section">
692<div class="titlepage"><div><div><h4 class="title">
693<a name="accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework" title="Extending the Accumulators Framework">Extending
694        the Accumulators Framework</a>
695</h4></div></div></div>
696<div class="toc"><dl class="toc">
697<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator">Defining
698          a New Accumulator</a></span></dt>
699<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_feature">Defining
700          a New Feature</a></span></dt>
701<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_extractor">Defining
702          a New Extractor</a></span></dt>
703<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.controlling_dependencies">Controlling
704          Dependencies</a></span></dt>
705<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.operators_ex">Specializing
706          Numeric Operators</a></span></dt>
707</dl></div>
708<p>
709          This section describes how to extend the Accumulators Framework by defining
710          new accumulators, features and extractors. Also covered are how to control
711          the dependency resolution of features within an accumulator set.
712        </p>
713<div class="section">
714<div class="titlepage"><div><div><h5 class="title">
715<a name="accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator" title="Defining a New Accumulator">Defining
716          a New Accumulator</a>
717</h5></div></div></div>
718<p>
719            All new accumulators must satisfy the <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.concepts.accumulator_concept">Accumulator
720            Concept</a>. Below is a sample class that satisfies the accumulator
721            concept, which simply sums the values of all samples passed into it.
722          </p>
723<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">accumulators</span><span class="special">/</span><span class="identifier">framework</span><span class="special">/</span><span class="identifier">accumulator_base</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
724<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">accumulators</span><span class="special">/</span><span class="identifier">framework</span><span class="special">/</span><span class="identifier">parameters</span><span class="special">/</span><span class="identifier">sample</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
725
726<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>                           <span class="comment">// Putting your accumulators in the</span>
727<span class="keyword">namespace</span> <span class="identifier">accumulators</span> <span class="special">{</span>                    <span class="comment">// impl namespace has some</span>
728<span class="keyword">namespace</span> <span class="identifier">impl</span> <span class="special">{</span>                            <span class="comment">// advantages. See below.</span>
729
730<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Sample</span><span class="special">&gt;</span>
731<span class="keyword">struct</span> <span class="identifier">sum_accumulator</span>                      <span class="comment">// All accumulators should inherit from</span>
732  <span class="special">:</span> <span class="identifier">accumulator_base</span>                        <span class="comment">// accumulator_base.</span>
733<span class="special">{</span>
734    <span class="keyword">typedef</span> <span class="identifier">Sample</span> <span class="identifier">result_type</span><span class="special">;</span>             <span class="comment">// The type returned by result() below.</span>
735
736    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Args</span><span class="special">&gt;</span>                 <span class="comment">// The constructor takes an argument pack.</span>
737    <span class="identifier">sum_accumulator</span><span class="special">(</span><span class="identifier">Args</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">args</span><span class="special">)</span>
738      <span class="special">:</span> <span class="identifier">sum</span><span class="special">(</span><span class="identifier">args</span><span class="special">[</span><span class="identifier">sample</span> <span class="special">|</span> <span class="identifier">Sample</span><span class="special">()])</span>        <span class="comment">// Maybe there is an initial value in the</span>
739    <span class="special">{</span>                                       <span class="comment">// argument pack. ('sample' is defined in</span>
740    <span class="special">}</span>                                       <span class="comment">// sample.hpp, included above.)</span>
741
742    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Args</span><span class="special">&gt;</span>                 <span class="comment">// The accumulate function is the function</span>
743    <span class="keyword">void</span> <span class="keyword">operator</span> <span class="special">()(</span><span class="identifier">Args</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">args</span><span class="special">)</span>     <span class="comment">// call operator, and it also accepts an</span>
744    <span class="special">{</span>                                       <span class="comment">// argument pack.</span>
745        <span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">sum</span> <span class="special">+=</span> <span class="identifier">args</span><span class="special">[</span><span class="identifier">sample</span><span class="special">];</span>
746    <span class="special">}</span>
747
748    <span class="identifier">result_type</span> <span class="identifier">result</span><span class="special">(</span><span class="identifier">dont_care</span><span class="special">)</span> <span class="keyword">const</span>     <span class="comment">// The result function will also be passed</span>
749    <span class="special">{</span>                                       <span class="comment">// an argument pack, but we don't use it here,</span>
750        <span class="keyword">return</span> <span class="keyword">this</span><span class="special">-&gt;</span><span class="identifier">sum</span><span class="special">;</span>                   <span class="comment">// so we use "dont_care" as the argument type.</span>
751    <span class="special">}</span>
752<span class="keyword">private</span><span class="special">:</span>
753    <span class="identifier">Sample</span> <span class="identifier">sum</span><span class="special">;</span>
754<span class="special">};</span>
755
756<span class="special">}}}</span>
757</pre>
758<p>
759            Much of the above should be pretty self-explanatory, except for the use
760            of argument packs which may be confusing if you have never used the
761            <a href="../../../libs/parameter/index.html" target="_top">Boost.Parameter</a>
762            library before. An argument pack is a cluster of values, each of which
763            can be accessed with a key. So <code class="computeroutput"><span class="identifier">args</span><span class="special">[</span><span class="identifier">sample</span><span class="special">]</span></code> extracts from the pack the value associated
764            with the <code class="computeroutput"><span class="identifier">sample</span></code> key.
765            And the cryptic <code class="computeroutput"><span class="identifier">args</span><span class="special">[</span><span class="identifier">sample</span> <span class="special">|</span> <span class="identifier">Sample</span><span class="special">()]</span></code> evaluates to the value associated
766            with the <code class="computeroutput"><span class="identifier">sample</span></code> key if
767            it exists, or a default-constructed <code class="computeroutput"><span class="identifier">Sample</span></code>
768            if it doesn't.
769          </p>
770<p>
771            The example above demonstrates the most common attributes of an accumulator.
772            There are other optional member functions that have special meaning.
773            In particular:
774          </p>
775<div class="variablelist">
776<p class="title"><b>Optional Accumulator Member Functions</b></p>
777<dl class="variablelist">
778<dt><span class="term"><code class="literal">on_drop(Args)</code></span></dt>
779<dd><p>
780                  Defines an action to be taken when this accumulator is dropped.
781                  See the section on <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator.droppable_accumulators">Droppable
782                  Accumulators</a>.
783                </p></dd>
784</dl>
785</div>
786<h4>
787<a name="accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator.h0"></a>
788            <span class="phrase"><a name="accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator.accessing_other_accumulators_in_the_set"></a></span><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator.accessing_other_accumulators_in_the_set">Accessing
789            Other Accumulators in the Set</a>
790          </h4>
791<p>
792            Some accumulators depend on other accumulators within the same accumulator
793            set. In those cases, it is necessary to be able to access those other
794            accumulators. To make this possible, the <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
795            passes a reference to itself when invoking the member functions of its
796            contained accumulators. It can be accessed by using the special <code class="computeroutput"><span class="identifier">accumulator</span></code> key with the argument pack.
797            Consider how we might implement <code class="computeroutput"><span class="identifier">mean_accumulator</span></code>:
798          </p>
799<pre class="programlisting"><span class="comment">// Mean == (Sum / Count)</span>
800<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Sample</span><span class="special">&gt;</span>
801<span class="keyword">struct</span> <span class="identifier">mean_accumulator</span> <span class="special">:</span> <span class="identifier">accumulator_base</span>
802<span class="special">{</span>
803    <span class="keyword">typedef</span> <span class="identifier">Sample</span> <span class="identifier">result_type</span><span class="special">;</span>
804    <span class="identifier">mean_accumulator</span><span class="special">(</span><span class="identifier">dont_care</span><span class="special">)</span> <span class="special">{}</span>
805
806    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Args</span><span class="special">&gt;</span>
807    <span class="identifier">result_type</span> <span class="identifier">result</span><span class="special">(</span><span class="identifier">Args</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">args</span><span class="special">)</span> <span class="keyword">const</span>
808    <span class="special">{</span>
809        <span class="keyword">return</span> <span class="identifier">sum</span><span class="special">(</span><span class="identifier">args</span><span class="special">[</span><span class="identifier">accumulator</span><span class="special">])</span> <span class="special">/</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">args</span><span class="special">[</span><span class="identifier">accumulator</span><span class="special">]);</span>
810    <span class="special">}</span>
811<span class="special">};</span>
812</pre>
813<p>
814            <code class="computeroutput"><span class="identifier">mean</span></code> depends on the
815            <code class="computeroutput"><span class="identifier">sum</span></code> and <code class="computeroutput"><span class="identifier">count</span></code> accumulators. (We'll see in the
816            next section how to specify these dependencies.) The result of the mean
817            accumulator is merely the result of the sum accumulator divided by the
818            result of the count accumulator. Consider how we write that: <code class="computeroutput"><span class="identifier">sum</span><span class="special">(</span><span class="identifier">args</span><span class="special">[</span><span class="identifier">accumulator</span><span class="special">])</span>
819            <span class="special">/</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">args</span><span class="special">[</span><span class="identifier">accumulator</span><span class="special">])</span></code>. The expression <code class="computeroutput"><span class="identifier">args</span><span class="special">[</span><span class="identifier">accumulator</span><span class="special">]</span></code> evaluates to a reference to the <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code> that contains this
820            <code class="computeroutput"><span class="identifier">mean_accumulator</span></code>. It
821            also contains the <code class="computeroutput"><span class="identifier">sum</span></code>
822            and <code class="computeroutput"><span class="identifier">count</span></code> accumulators,
823            and we can access their results with the extractors defined for those
824            features: <code class="computeroutput"><span class="identifier">sum</span></code> and <code class="computeroutput"><span class="identifier">count</span></code>.
825          </p>
826<div class="note"><table border="0" summary="Note">
827<tr>
828<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
829<th align="left">Note</th>
830</tr>
831<tr><td align="left" valign="top"><p>
832              Accumulators that inherit from <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_base.html" title="Struct accumulator_base">accumulator_base</a></code> get
833              an empty <code class="computeroutput"><span class="keyword">operator</span> <span class="special">()</span></code>,
834              so accumulators like <code class="computeroutput"><span class="identifier">mean_accumulator</span></code>
835              above need not define one.
836            </p></td></tr>
837</table></div>
838<p>
839            All the member functions that accept an argument pack have access to
840            the enclosing <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
841            via the <code class="computeroutput"><span class="identifier">accumulator</span></code> key,
842            including the constructor. The accumulators within the set are constructed
843            in an order determined by their interdependencies. As a result, it is
844            safe for an accumulator to access one on which it depends during construction.
845          </p>
846<h4>
847<a name="accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator.h1"></a>
848            <span class="phrase"><a name="accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator.infix_notation_and_the_numeric_operators_sub_library"></a></span><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator.infix_notation_and_the_numeric_operators_sub_library">Infix
849            Notation and the Numeric Operators Sub-Library</a>
850          </h4>
851<p>
852            Although not necessary, it can be a good idea to put your accumulator
853            implementations in the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">impl</span></code>
854            namespace. This namespace pulls in any operators defined in the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">operators</span></code> namespace with a using directive.
855            The Numeric Operators Sub-Library defines some additional overloads that
856            will make your accumulators work with all sorts of data types.
857          </p>
858<p>
859            Consider <code class="computeroutput"><span class="identifier">mean_accumulator</span></code>
860            defined above. It divides the sum of the samples by the count. The type
861            of the count is <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>. What if the sample type doesn't
862            define division by <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>?
863            That's the case for <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;&gt;</span></code>. You might think that if the
864            sample type is <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;&gt;</span></code>,
865            the code would not work, but in fact it does. That's because Numeric
866            Operators Sub-Library defines an overloaded <code class="computeroutput"><span class="keyword">operator</span><span class="special">/</span></code> for <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;&gt;</span></code> and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>.
867            This operator is defined in the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">operators</span></code>
868            namespace and will be found within the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">impl</span></code>
869            namespace. That's why it's a good idea to put your accumulators there.
870          </p>
871<h4>
872<a name="accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator.h2"></a>
873            <span class="phrase"><a name="accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator.droppable_accumulators"></a></span><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_accumulator.droppable_accumulators">Droppable
874            Accumulators</a>
875          </h4>
876<p>
877            The term "droppable" refers to an accumulator that can be removed
878            from the <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>.
879            You can request that an accumulator be made droppable by using the <code class="computeroutput">droppable&lt;&gt;</code> class template.
880          </p>
881<pre class="programlisting"><span class="comment">// calculate sum and count, make sum droppable:</span>
882<span class="identifier">accumulator_set</span><span class="special">&lt;</span> <span class="keyword">double</span><span class="special">,</span> <span class="identifier">features</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">count</span><span class="special">,</span> <span class="identifier">droppable</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
883
884<span class="comment">// add some data</span>
885<span class="identifier">acc</span><span class="special">(</span><span class="number">3.0</span><span class="special">);</span>
886<span class="identifier">acc</span><span class="special">(</span><span class="number">2.0</span><span class="special">);</span>
887
888<span class="comment">// drop the sum (sum is 5 here)</span>
889<span class="identifier">acc</span><span class="special">.</span><span class="identifier">drop</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum</span><span class="special">&gt;();</span>
890
891<span class="comment">// add more data</span>
892<span class="identifier">acc</span><span class="special">(</span><span class="number">1.0</span><span class="special">);</span>
893
894<span class="comment">// This will display "3" and "5"</span>
895<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="char">' '</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">);</span>
896</pre>
897<p>
898            Any accumulators that get added to an accumulator set in order to satisfy
899            dependencies on droppable accumulators are themselves droppable. Consider
900            the following accumulator:
901          </p>
902<pre class="programlisting"><span class="comment">// Sum is not droppable. Mean is droppable. Count, brought in to </span>
903<span class="comment">// satisfy mean's dependencies, is implicitly droppable, too.</span>
904<span class="identifier">accumulator_set</span><span class="special">&lt;</span> <span class="keyword">double</span><span class="special">,</span> <span class="identifier">features</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum</span><span class="special">,</span> <span class="identifier">droppable</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
905</pre>
906<p>
907            <code class="computeroutput"><span class="identifier">mean</span></code> depends on <code class="computeroutput"><span class="identifier">sum</span></code> and <code class="computeroutput"><span class="identifier">count</span></code>.
908            Since <code class="computeroutput"><span class="identifier">mean</span></code> is droppable,
909            so too is <code class="computeroutput"><span class="identifier">count</span></code>. However,
910            we have explicitly requested that <code class="computeroutput"><span class="identifier">sum</span></code>
911            be not droppable, so it isn't. Had we left <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum</span></code>
912            out of the above declaration, the <code class="computeroutput"><span class="identifier">sum</span></code>
913            accumulator would have been implicitly droppable.
914          </p>
915<p>
916            A droppable accumulator is reference counted, and is only really dropped
917            after all the accumulators that depend on it have been dropped. This
918            can lead to some surprising behavior in some situations.
919          </p>
920<pre class="programlisting"><span class="comment">// calculate sum and mean, make mean droppable. </span>
921<span class="identifier">accumulator_set</span><span class="special">&lt;</span> <span class="keyword">double</span><span class="special">,</span> <span class="identifier">features</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum</span><span class="special">,</span> <span class="identifier">droppable</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
922
923<span class="comment">// add some data</span>
924<span class="identifier">acc</span><span class="special">(</span><span class="number">1.0</span><span class="special">);</span>
925<span class="identifier">acc</span><span class="special">(</span><span class="number">2.0</span><span class="special">);</span>
926
927<span class="comment">// drop the mean. mean's reference count</span>
928<span class="comment">// drops to 0, so it's really dropped. So</span>
929<span class="comment">// too, count's reference count drops to 0</span>
930<span class="comment">// and is really dropped.</span>
931<span class="identifier">acc</span><span class="special">.</span><span class="identifier">drop</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span><span class="special">&gt;();</span>
932
933<span class="comment">// add more data. Sum continues to accumulate!</span>
934<span class="identifier">acc</span><span class="special">(</span><span class="number">3.0</span><span class="special">);</span>
935
936<span class="comment">// This will display "6 2 3"</span>
937<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="char">' '</span>
938          <span class="special">&lt;&lt;</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="char">' '</span>
939          <span class="special">&lt;&lt;</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">acc</span><span class="special">);</span>
940</pre>
941<p>
942            Note that at the point at which <code class="computeroutput"><span class="identifier">mean</span></code>
943            is dropped, <code class="computeroutput"><span class="identifier">sum</span></code> is 3,
944            <code class="computeroutput"><span class="identifier">count</span></code> is 2, and therefore
945            <code class="computeroutput"><span class="identifier">mean</span></code> is 1.5. But since
946            <code class="computeroutput"><span class="identifier">sum</span></code> continues to accumulate
947            even after <code class="computeroutput"><span class="identifier">mean</span></code> has been
948            dropped, the value of <code class="computeroutput"><span class="identifier">mean</span></code>
949            continues to change. If you want to remember the value of <code class="computeroutput"><span class="identifier">mean</span></code> at the point it is dropped, you
950            should save its value into a local variable.
951          </p>
952<p>
953            The following rules more precisely specify how droppable and non-droppable
954            accumulators behave within an accumulator set.
955          </p>
956<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
957<li class="listitem">
958                There are two types of accumulators: droppable and non-droppable.
959                The default is non-droppable.
960              </li>
961<li class="listitem">
962                For any feature <code class="computeroutput"><span class="identifier">X</span></code>,
963                both <code class="computeroutput"><span class="identifier">X</span></code> and <code class="computeroutput"><span class="identifier">droppable</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span></code>
964                satisfy the <code class="computeroutput"><span class="identifier">X</span></code> dependency.
965              </li>
966<li class="listitem">
967                If feature <code class="computeroutput"><span class="identifier">X</span></code> depends
968                on <code class="computeroutput"><span class="identifier">Y</span></code> and <code class="computeroutput"><span class="identifier">Z</span></code>, then <code class="computeroutput"><span class="identifier">droppable</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;</span></code> depends on <code class="computeroutput"><span class="identifier">droppable</span><span class="special">&lt;</span><span class="identifier">Y</span><span class="special">&gt;</span></code> and <code class="computeroutput"><span class="identifier">droppable</span><span class="special">&lt;</span><span class="identifier">Z</span><span class="special">&gt;</span></code>.
969              </li>
970<li class="listitem">
971                All accumulators have <code class="computeroutput"><span class="identifier">add_ref</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">drop</span><span class="special">()</span></code> member functions.
972              </li>
973<li class="listitem">
974                For non-droppable accumulators, <code class="computeroutput"><span class="identifier">drop</span><span class="special">()</span></code> is a no-op, and <code class="computeroutput"><span class="identifier">add_ref</span><span class="special">()</span></code> invokes <code class="computeroutput"><span class="identifier">add_ref</span><span class="special">()</span></code> on all accumulators corresponding
975                to the features upon which the current accumulator depends.
976              </li>
977<li class="listitem">
978                Droppable accumulators have a reference count and define <code class="computeroutput"><span class="identifier">add_ref</span><span class="special">()</span></code>
979                and <code class="computeroutput"><span class="identifier">drop</span><span class="special">()</span></code>
980                to manipulate the reference count.
981              </li>
982<li class="listitem">
983                For droppable accumulators, <code class="computeroutput"><span class="identifier">add_ref</span><span class="special">()</span></code> increments the accumulator's reference
984                count, and also <code class="computeroutput"><span class="identifier">add_ref</span><span class="special">()</span></code>'s the accumulators corresponding
985                to the features upon which the current accumulator depends.
986              </li>
987<li class="listitem">
988                For droppable accumulators, <code class="computeroutput"><span class="identifier">drop</span><span class="special">()</span></code> decrements the accumulator's reference
989                count, and also <code class="computeroutput"><span class="identifier">drop</span><span class="special">()</span></code>'s the accumulators corresponding
990                to the features upon which the current accumulator depends.
991              </li>
992<li class="listitem">
993                The accumulator_set constructor walks the list of <span class="bold"><strong>user-specified</strong></span>
994                features and <code class="computeroutput"><span class="identifier">add_ref</span><span class="special">()</span></code>'s the accumulator that corresponds
995                to each of them. (Note: that means that an accumulator that is not
996                user-specified but in the set merely to satisfy a dependency will
997                be dropped as soon as all its dependencies have been dropped. Ones
998                that have been user specified are not dropped until their dependencies
999                have been dropped <span class="bold"><strong>and</strong></span> the user has
1000                explicitly dropped the accumulator.)
1001              </li>
1002<li class="listitem">
1003                Droppable accumulators check their reference count in their accumulate
1004                member function. If the reference count is 0, the function is a no-op.
1005              </li>
1006<li class="listitem">
1007                Users are not allowed to drop a feature that is not user-specified
1008                and marked as droppable.
1009              </li>
1010</ul></div>
1011<p>
1012            And as an optimization:
1013          </p>
1014<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
1015                If the user specifies the non-droppable feature <code class="computeroutput"><span class="identifier">X</span></code>,
1016                which depends on <code class="computeroutput"><span class="identifier">Y</span></code>
1017                and <code class="computeroutput"><span class="identifier">Z</span></code>, then the accumulators
1018                for <code class="computeroutput"><span class="identifier">Y</span></code> and <code class="computeroutput"><span class="identifier">Z</span></code> can be safely made non-droppable,
1019                as well as any accumulators on which they depend.
1020              </li></ul></div>
1021</div>
1022<div class="section">
1023<div class="titlepage"><div><div><h5 class="title">
1024<a name="accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_feature"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_feature" title="Defining a New Feature">Defining
1025          a New Feature</a>
1026</h5></div></div></div>
1027<p>
1028            Once we have implemented an accumulator, we must define a feature for
1029            it so that users can specify the feature when declaring an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>. We typically put
1030            the features into a nested namespace, so that later we can define an
1031            extractor of the same name. All features must satisfy the <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.concepts.feature_concept">Feature
1032            Concept</a>. Using <code class="computeroutput"><a class="link" href="../boost/accumulators/depends_on.html" title="Struct template depends_on">depends_on&lt;&gt;</a></code>
1033            makes satisfying the concept simple. Below is an example of a feature
1034            definition.
1035          </p>
1036<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">accumulators</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tag</span> <span class="special">{</span>
1037
1038<span class="keyword">struct</span> <span class="identifier">mean</span>                         <span class="comment">// Features should inherit from</span>
1039  <span class="special">:</span> <span class="identifier">depends_on</span><span class="special">&lt;</span> <span class="identifier">count</span><span class="special">,</span> <span class="identifier">sum</span> <span class="special">&gt;</span>        <span class="comment">// depends_on&lt;&gt; to specify dependencies</span>
1040<span class="special">{</span>
1041    <span class="comment">// Define a nested typedef called 'impl' that specifies which</span>
1042    <span class="comment">// accumulator implements this feature. </span>
1043    <span class="keyword">typedef</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">impl</span><span class="special">::</span><span class="identifier">mean_accumulator</span><span class="special">&lt;</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">_1</span> <span class="special">&gt;</span> <span class="identifier">impl</span><span class="special">;</span>
1044<span class="special">};</span>
1045
1046<span class="special">}}}</span>
1047</pre>
1048<p>
1049            The only two things we must do to define the <code class="computeroutput"><span class="identifier">mean</span></code>
1050            feature is to specify the dependencies with <code class="computeroutput"><a class="link" href="../boost/accumulators/depends_on.html" title="Struct template depends_on">depends_on&lt;&gt;</a></code>
1051            and define the nested <code class="computeroutput"><span class="identifier">impl</span></code>
1052            typedef. Even features that have no dependencies should inherit from
1053            <code class="computeroutput"><a class="link" href="../boost/accumulators/depends_on.html" title="Struct template depends_on">depends_on&lt;&gt;</a></code>. The nested <code class="computeroutput"><span class="identifier">impl</span></code> type must be an <a href="../../../libs/mpl/doc/refmanual/lambda-expression.html" target="_top">MPL
1054            Lambda Expression</a>. The result of <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply</span><span class="special">&lt;</span> <span class="identifier">impl</span><span class="special">,</span> <em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em> <span class="special">&gt;::</span><span class="identifier">type</span></code> must be be the type of the accumulator
1055            that implements this feature. The use of <a href="../../../libs/mpl/index.html" target="_top">MPL</a>
1056            placeholders like <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">_1</span></code>
1057            make it especially easy to make a template such as <code class="computeroutput"><span class="identifier">mean_accumulator</span><span class="special">&lt;&gt;</span></code> an <a href="../../../libs/mpl/doc/refmanual/lambda-expression.html" target="_top">MPL
1058            Lambda Expression</a>. Here, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">_1</span></code>
1059            will be replaced with the sample type. Had we used <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">_2</span></code>,
1060            it would have been replaced with the weight type.
1061          </p>
1062<p>
1063            What about accumulator types that are not templates? If you have a <code class="computeroutput"><span class="identifier">foo_accumulator</span></code> which is a plain struct
1064            and not a template, you could turn it into an <a href="../../../libs/mpl/doc/refmanual/lambda-expression.html" target="_top">MPL
1065            Lambda Expression</a> using <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">always</span><span class="special">&lt;&gt;</span></code>, like this:
1066          </p>
1067<pre class="programlisting"><span class="comment">// An MPL lambda expression that always evaluates to</span>
1068<span class="comment">// foo_accumulator:</span>
1069<span class="keyword">typedef</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">always</span><span class="special">&lt;</span> <span class="identifier">foo_accumulator</span> <span class="special">&gt;</span> <span class="identifier">impl</span><span class="special">;</span>
1070</pre>
1071<p>
1072            If you are ever unsure, or if you are not comfortable with MPL lambda
1073            expressions, you could always define <code class="computeroutput"><span class="identifier">impl</span></code>
1074            explicitly:
1075          </p>
1076<pre class="programlisting"><span class="comment">// Same as 'typedef mpl::always&lt; foo_accumulator &gt; impl;'</span>
1077<span class="keyword">struct</span> <span class="identifier">impl</span>
1078<span class="special">{</span>
1079    <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Sample</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Weight</span> <span class="special">&gt;</span>
1080    <span class="keyword">struct</span> <span class="identifier">apply</span>
1081    <span class="special">{</span>
1082        <span class="keyword">typedef</span> <span class="identifier">foo_accumulator</span> <span class="identifier">type</span><span class="special">;</span>
1083    <span class="special">};</span>
1084<span class="special">};</span>
1085</pre>
1086<p>
1087            Here, <code class="computeroutput"><span class="identifier">impl</span></code> is a binary
1088            <a href="../../../libs/mpl/doc/refmanual/metafunction-class.html" target="_top">MPL
1089            Metafunction Class</a>, which is a kind of <a href="../../../libs/mpl/doc/refmanual/lambda-expression.html" target="_top">MPL
1090            Lambda Expression</a>. The nested <code class="computeroutput"><span class="identifier">apply</span><span class="special">&lt;&gt;</span></code> template is part of the metafunction
1091            class protocol and tells MPL how to build the accumulator type given
1092            the sample and weight types.
1093          </p>
1094<p>
1095            All features must also provide a nested <code class="computeroutput"><span class="identifier">is_weight_accumulator</span></code>
1096            typedef. It must be either <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
1097            or <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>. <code class="computeroutput"><a class="link" href="../boost/accumulators/depends_on.html" title="Struct template depends_on">depends_on&lt;&gt;</a></code>
1098            provides a default of <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
1099            for all features that inherit from it, but that can be overridden (or
1100            hidden, technically speaking) in the derived type. When the feature represents
1101            an accumulation of information about the weights instead of the samples,
1102            we can mark this feature as such with <code class="computeroutput"><span class="keyword">typedef</span>
1103            <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> <span class="identifier">is_weight_accumulator</span><span class="special">;</span></code>. The weight accumulators are made external
1104            if the weight type is specified using the <code class="computeroutput">external&lt;&gt;</code>
1105            template.
1106          </p>
1107</div>
1108<div class="section">
1109<div class="titlepage"><div><div><h5 class="title">
1110<a name="accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_extractor"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_extractor" title="Defining a New Extractor">Defining
1111          a New Extractor</a>
1112</h5></div></div></div>
1113<p>
1114            Now that we have an accumulator and a feature, the only thing lacking
1115            is a way to get results from the accumulator set. The Accumulators Framework
1116            provides the <code class="computeroutput">extractor&lt;&gt;</code>
1117            class template to make it simple to define an extractor for your feature.
1118            Here's an extractor for the <code class="computeroutput"><span class="identifier">mean</span></code>
1119            feature we defined above:
1120          </p>
1121<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
1122<span class="keyword">namespace</span> <span class="identifier">accumulators</span> <span class="special">{</span>                <span class="comment">// By convention, we put extractors</span>
1123<span class="keyword">namespace</span> <span class="identifier">extract</span> <span class="special">{</span>                     <span class="comment">// in the 'extract' namespace</span>
1124
1125<span class="identifier">extractor</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span> <span class="special">&gt;</span> <span class="keyword">const</span> <span class="identifier">mean</span> <span class="special">=</span> <span class="special">{};</span> <span class="comment">// Simply define our extractor with</span>
1126                                        <span class="comment">// our feature tag, like this.</span>
1127<span class="special">}</span>
1128<span class="keyword">using</span> <span class="identifier">extract</span><span class="special">::</span><span class="identifier">mean</span><span class="special">;</span>                    <span class="comment">// Pull the extractor into the</span>
1129                                        <span class="comment">// enclosing namespace.</span>
1130<span class="special">}}</span>
1131</pre>
1132<p>
1133            Once defined, the <code class="computeroutput"><span class="identifier">mean</span></code>
1134            extractor can be used to extract the result of the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span></code>
1135            feature from an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>.
1136          </p>
1137<p>
1138            Parameterized features complicate this simple picture. Consider the
1139            <code class="computeroutput"><span class="identifier">moment</span></code> feature, for calculating
1140            the <code class="literal"><span class="emphasis"><em>N</em></span></code>-th moment, where <code class="literal"><span class="emphasis"><em>N</em></span></code>
1141            is specified as a template parameter:
1142          </p>
1143<pre class="programlisting"><span class="comment">// An accumulator set for calculating the N-th moment, for N == 2 ...</span>
1144<span class="identifier">accumulator_set</span><span class="special">&lt;</span> <span class="keyword">double</span><span class="special">,</span> <span class="identifier">features</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
1145
1146<span class="comment">// ... add some data ...</span>
1147
1148<span class="comment">// Display the 2nd moment ...</span>
1149<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"2nd moment is "</span> <span class="special">&lt;&lt;</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
1150</pre>
1151<p>
1152            In the expression <code class="computeroutput"><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">)</span></code>,
1153            what is <code class="computeroutput"><span class="identifier">moment</span></code>? It cannot
1154            be an object -- the syntax of C++ will not allow it. Clearly, if we want
1155            to provide this syntax, we must make <code class="computeroutput"><span class="identifier">moment</span></code>
1156            a function template. Here's what the definition of the <code class="computeroutput"><span class="identifier">moment</span></code> extractor looks like:
1157          </p>
1158<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
1159<span class="keyword">namespace</span> <span class="identifier">accumulators</span> <span class="special">{</span>                <span class="comment">// By convention, we put extractors</span>
1160<span class="keyword">namespace</span> <span class="identifier">extract</span> <span class="special">{</span>                     <span class="comment">// in the 'extract' namespace</span>
1161
1162<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulatorSet</span><span class="special">&gt;</span>
1163<span class="keyword">typename</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply</span><span class="special">&lt;</span><span class="identifier">AccumulatorSet</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span><span class="special">::</span><span class="identifier">result_type</span>
1164<span class="identifier">moment</span><span class="special">(</span><span class="identifier">AccumulatorSet</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">acc</span><span class="special">)</span>
1165<span class="special">{</span>
1166    <span class="keyword">return</span> <span class="identifier">extract_result</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">);</span>
1167<span class="special">}</span>
1168
1169<span class="special">}</span>
1170<span class="keyword">using</span> <span class="identifier">extract</span><span class="special">::</span><span class="identifier">moment</span><span class="special">;</span>                  <span class="comment">// Pull the extractor into the</span>
1171                                        <span class="comment">// enclosing namespace.</span>
1172<span class="special">}}</span>
1173</pre>
1174<p>
1175            The return type deserves some explanation. Every <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
1176            type is actually a unary <a href="../../../libs/mpl/doc/refmanual/metafunction-class.html" target="_top">MPL
1177            Metafunction Class</a>. When you <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply</span><span class="special">&lt;&gt;</span></code> an <code class="computeroutput"><a class="link" href="../boost/accumulators/accumulator_set.html" title="Struct template accumulator_set">accumulator_set&lt;&gt;</a></code>
1178            and a feature, the result is the type of the accumulator within the set
1179            that implements that feature. And every accumulator provides a nested
1180            <code class="computeroutput"><span class="identifier">result_type</span></code> typedef that
1181            tells what its return type is. The extractor simply delegates its work
1182            to the <code class="computeroutput"><a class="link" href="reference.html#boost.accumulators.extract_result">extract_result()</a></code>
1183            function.
1184          </p>
1185</div>
1186<div class="section">
1187<div class="titlepage"><div><div><h5 class="title">
1188<a name="accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.controlling_dependencies"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.controlling_dependencies" title="Controlling Dependencies">Controlling
1189          Dependencies</a>
1190</h5></div></div></div>
1191<p>
1192            The feature-based dependency resolution of the Accumulators Framework
1193            is designed to allow multiple different implementation strategies for
1194            each feature. For instance, two different accumulators may calculate
1195            the same quantity with different rounding modes, or using different algorithms
1196            with different size/speed tradeoffs. Other accumulators that depend on
1197            that quantity shouldn't care how it's calculated. The Accumulators Framework
1198            handles this by allowing several different accumulators satisfy the same
1199            feature.
1200          </p>
1201<p>
1202            <span class="bold"><strong>Aliasing feature dependencies with <code class="literal">feature_of&lt;&gt;</code></strong></span>
1203          </p>
1204<p>
1205            Imagine that you would like to implement the hypothetical <span class="emphasis"><em>fubar</em></span>
1206            statistic, and that you know two ways to calculate fubar on a bunch of
1207            samples: an accurate but slow calculation and an approximate but fast
1208            calculation. You might opt to make the accurate calculation the default,
1209            so you implement two accumulators and call them <code class="computeroutput"><span class="identifier">impl</span><span class="special">::</span><span class="identifier">fubar_impl</span></code>
1210            and <code class="computeroutput"><span class="identifier">impl</span><span class="special">::</span><span class="identifier">fast_fubar_impl</span></code>. You would also define
1211            the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fubar</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fast_fubar</span></code>
1212            features as described <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_feature" title="Defining a New Feature">above</a>.
1213            Now, you would like to inform the Accumulators Framework that these two
1214            features are the same from the point of view of dependency resolution.
1215            You can do that with <code class="computeroutput"><a class="link" href="../boost/accumulators/feature_of.html" title="Struct template feature_of">feature_of&lt;&gt;</a></code>,
1216            as follows:
1217          </p>
1218<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">accumulators</span>
1219<span class="special">{</span>
1220    <span class="comment">// For the purposes of feature-based dependency resolution,</span>
1221    <span class="comment">// fast_fubar provides the same feature as fubar</span>
1222    <span class="keyword">template</span><span class="special">&lt;&gt;</span>
1223    <span class="keyword">struct</span> <span class="identifier">feature_of</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fast_fubar</span><span class="special">&gt;</span>
1224      <span class="special">:</span> <span class="identifier">feature_of</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fubar</span><span class="special">&gt;</span>
1225    <span class="special">{</span>
1226    <span class="special">};</span>
1227<span class="special">}}</span>
1228</pre>
1229<p>
1230            The above code instructs the Accumulators Framework that, if another
1231            accumulator in the set depends on the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fubar</span></code>
1232            feature, the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fast_fubar</span></code> feature is an acceptable
1233            substitute.
1234          </p>
1235<p>
1236            <span class="bold"><strong>Registering feature variants with <code class="literal">as_feature&lt;&gt;</code></strong></span>
1237          </p>
1238<p>
1239            You may have noticed that some feature variants in the Accumulators Framework
1240            can be specified with a nicer syntax. For instance, instead of <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">immediate_mean</span></code>
1241            you can specify them with <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span><span class="special">(</span><span class="identifier">lazy</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span><span class="special">(</span><span class="identifier">immediate</span><span class="special">)</span></code> respectively. These are merely aliases,
1242            but the syntax makes the relationship between the two clearer. You can
1243            create these feature aliases with the <code class="computeroutput"><a class="link" href="../boost/accumulators/as_feature.html" title="Struct template as_feature">as_feature&lt;&gt;</a></code>
1244            trait. Given the fubar example above, you might decide to alias <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fubar</span><span class="special">(</span><span class="identifier">accurate</span><span class="special">)</span></code>
1245            with <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fubar</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fubar</span><span class="special">(</span><span class="identifier">fast</span><span class="special">)</span></code> with <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fast_fubar</span></code>.
1246            You would do that as follows:
1247          </p>
1248<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">accumulators</span>
1249<span class="special">{</span>
1250    <span class="keyword">struct</span> <span class="identifier">fast</span> <span class="special">{};</span>     <span class="comment">// OK to leave these tags empty</span>
1251    <span class="keyword">struct</span> <span class="identifier">accurate</span> <span class="special">{};</span>
1252
1253    <span class="keyword">template</span><span class="special">&lt;&gt;</span>
1254    <span class="keyword">struct</span> <span class="identifier">as_feature</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fubar</span><span class="special">(</span><span class="identifier">accurate</span><span class="special">)&gt;</span>
1255    <span class="special">{</span>
1256        <span class="keyword">typedef</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">fubar</span> <span class="identifier">type</span><span class="special">;</span>
1257    <span class="special">};</span>
1258
1259    <span class="keyword">template</span><span class="special">&lt;&gt;</span>
1260    <span class="keyword">struct</span> <span class="identifier">as_feature</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fubar</span><span class="special">(</span><span class="identifier">fast</span><span class="special">)&gt;</span>
1261    <span class="special">{</span>
1262        <span class="keyword">typedef</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">fast_fubar</span> <span class="identifier">type</span><span class="special">;</span>
1263    <span class="special">};</span>
1264<span class="special">}}</span>
1265</pre>
1266<p>
1267            Once you have done this, users of your fubar accumulator can request
1268            the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fubar</span><span class="special">(</span><span class="identifier">fast</span><span class="special">)</span></code>
1269            and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">fubar</span><span class="special">(</span><span class="identifier">accurate</span><span class="special">)</span></code>
1270            features when defining their <code class="computeroutput"><span class="identifier">accumulator_set</span></code>s
1271            and get the correct accumulator.
1272          </p>
1273</div>
1274<div class="section">
1275<div class="titlepage"><div><div><h5 class="title">
1276<a name="accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.operators_ex"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.operators_ex" title="Specializing Numeric Operators">Specializing
1277          Numeric Operators</a>
1278</h5></div></div></div>
1279<p>
1280            This section describes how to adapt third-party numeric types to work
1281            with the Accumulator Framework.
1282          </p>
1283<p>
1284            Rather than relying on the built-in operators, the Accumulators Framework
1285            relies on functions and operator overloads defined in the <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.numeric_operators_sub_library" title="Numeric Operators Sub-Library">Numeric
1286            Operators Sub-Library</a> for many of its numeric operations. This
1287            is so that it is possible to assign non-standard meanings to arithmetic
1288            operations. For instance, when calculating an average by dividing two
1289            integers, the standard integer division behavior would be mathematically
1290            incorrect for most statistical quantities. So rather than use <code class="computeroutput"><span class="identifier">x</span> <span class="special">/</span> <span class="identifier">y</span></code>, the Accumulators Framework uses
1291            <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">)</span></code>,
1292            which does floating-point division even if both <code class="computeroutput"><span class="identifier">x</span></code>
1293            and <code class="computeroutput"><span class="identifier">y</span></code> are integers.
1294          </p>
1295<p>
1296            Another example where the Numeric Operators Sub-Library is useful is
1297            when a type does not define the operator overloads required to use it
1298            for some statistical calculations. For instance, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;&gt;</span></code> does not overload any arithmetic
1299            operators, yet it may be useful to use <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;&gt;</span></code> as a sample or variate type.
1300            The Numeric Operators Sub-Library defines the necessary operator overloads
1301            in the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">operators</span></code> namespace, which is brought
1302            into scope by the Accumulators Framework with a using directive.
1303          </p>
1304<p>
1305            <span class="bold"><strong>Numeric Function Objects and Tag Dispatching</strong></span>
1306          </p>
1307<p>
1308            How are the numeric function object defined by the Numeric Operators
1309            Sub-Library made to work with types such as <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;&gt;</span></code>? The free functions in the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span></code> namespace are implemented in
1310            terms of the function objects in the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span></code>
1311            namespace, so to make <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">()</span></code> do something sensible with a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;&gt;</span></code>,
1312            for instance, we'll need to partially specialize the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;&gt;</span></code> function object.
1313          </p>
1314<p>
1315            The functional objects make use of a technique known as <a href="http://www.boost.org/community/generic_programming.html#tag_dispatching" target="_top"><span class="emphasis"><em>tag
1316            dispatching</em></span></a> to select the proper implementation for
1317            the given operands. It works as follows:
1318          </p>
1319<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">numeric</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">functional</span>
1320<span class="special">{</span>
1321    <span class="comment">// Metafunction for looking up the tag associated with</span>
1322    <span class="comment">// a given numeric type T.</span>
1323    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
1324    <span class="keyword">struct</span> <span class="identifier">tag</span>
1325    <span class="special">{</span>
1326        <span class="comment">// by default, all types have void as a tag type</span>
1327        <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="identifier">type</span><span class="special">;</span>
1328    <span class="special">};</span>
1329
1330    <span class="comment">// Forward declaration looks up the tag types of each operand</span>
1331    <span class="keyword">template</span><span class="special">&lt;</span>
1332        <span class="keyword">typename</span> <span class="identifier">Left</span>
1333      <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Right</span>
1334      <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">LeftTag</span> <span class="special">=</span> <span class="keyword">typename</span> <span class="identifier">tag</span><span class="special">&lt;</span><span class="identifier">Left</span><span class="special">&gt;::</span><span class="identifier">type</span>
1335      <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">RightTag</span> <span class="special">=</span> <span class="keyword">typename</span> <span class="identifier">tag</span><span class="special">&lt;</span><span class="identifier">Right</span><span class="special">&gt;::</span><span class="identifier">type</span>
1336    <span class="special">&gt;</span>
1337    <span class="keyword">struct</span> <span class="identifier">fdiv</span><span class="special">;</span>
1338<span class="special">}}}</span>
1339</pre>
1340<p>
1341            If you have some user-defined type <code class="computeroutput"><span class="identifier">MyDouble</span></code>
1342            for which you would like to customize the behavior of <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">()</span></code>, you would specialize <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;&gt;</span></code>
1343            by first defining a tag type, as shown below:
1344          </p>
1345<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">numeric</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">functional</span>
1346<span class="special">{</span>
1347    <span class="comment">// Tag type for MyDouble</span>
1348    <span class="keyword">struct</span> <span class="identifier">MyDoubleTag</span> <span class="special">{};</span>
1349
1350    <span class="comment">// Specialize tag&lt;&gt; for MyDouble.</span>
1351    <span class="comment">// This only needs to be done once.</span>
1352    <span class="keyword">template</span><span class="special">&lt;&gt;</span>
1353    <span class="keyword">struct</span> <span class="identifier">tag</span><span class="special">&lt;</span><span class="identifier">MyDouble</span><span class="special">&gt;</span>
1354    <span class="special">{</span>
1355        <span class="keyword">typedef</span> <span class="identifier">MyDoubleTag</span> <span class="identifier">type</span><span class="special">;</span>
1356    <span class="special">};</span>
1357
1358    <span class="comment">// Specify how to divide a MyDouble by an integral count</span>
1359    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Left</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Right</span><span class="special">&gt;</span>
1360    <span class="keyword">struct</span> <span class="identifier">fdiv</span><span class="special">&lt;</span><span class="identifier">Left</span><span class="special">,</span> <span class="identifier">Right</span><span class="special">,</span> <span class="identifier">MyDoubleTag</span><span class="special">,</span> <span class="keyword">void</span><span class="special">&gt;</span>
1361    <span class="special">{</span>
1362        <span class="comment">// Define the type of the result</span>
1363        <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">result_type</span><span class="special">;</span>
1364
1365        <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Left</span> <span class="special">&amp;</span> <span class="identifier">left</span><span class="special">,</span> <span class="identifier">Right</span> <span class="special">&amp;</span> <span class="identifier">right</span><span class="special">)</span> <span class="keyword">const</span>
1366        <span class="special">{</span>
1367            <span class="keyword">return</span> <span class="special">...;</span>
1368        <span class="special">}</span>
1369    <span class="special">};</span>
1370<span class="special">}}}</span>
1371</pre>
1372<p>
1373            Once you have done this, <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">()</span></code> will use your specialization of <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;&gt;</span></code>
1374            when the first argument is a <code class="computeroutput"><span class="identifier">MyDouble</span></code>
1375            object. All of the function objects in the Numeric Operators Sub-Library
1376            can be customized in a similar fashion.
1377          </p>
1378</div>
1379</div>
1380<div class="section">
1381<div class="titlepage"><div><div><h4 class="title">
1382<a name="accumulators.user_s_guide.the_accumulators_framework.concepts"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.concepts" title="Concepts">Concepts</a>
1383</h4></div></div></div>
1384<h3>
1385<a name="accumulators.user_s_guide.the_accumulators_framework.concepts.h0"></a>
1386          <span class="phrase"><a name="accumulators.user_s_guide.the_accumulators_framework.concepts.accumulator_concept"></a></span><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.concepts.accumulator_concept">Accumulator
1387          Concept</a>
1388        </h3>
1389<p>
1390          In the following table, <code class="computeroutput"><span class="identifier">Acc</span></code>
1391          is the type of an accumulator, <code class="computeroutput"><span class="identifier">acc</span></code>
1392          and <code class="computeroutput"><span class="identifier">acc2</span></code> are objects of
1393          type <code class="computeroutput"><span class="identifier">Acc</span></code>, and <code class="computeroutput"><span class="identifier">args</span></code> is the name of an argument pack
1394          from the <a href="../../../libs/parameter/index.html" target="_top">Boost.Parameter</a>
1395          library.
1396        </p>
1397<div class="table">
1398<a name="accumulators.user_s_guide.the_accumulators_framework.concepts.t0"></a><p class="title"><b>Table 1.2. Accumulator Requirements</b></p>
1399<div class="table-contents"><table class="table" summary="Accumulator Requirements">
1400<colgroup>
1401<col>
1402<col>
1403<col>
1404</colgroup>
1405<thead><tr>
1406<th>
1407                  <p>
1408                    <span class="bold"><strong>Expression</strong></span>
1409                  </p>
1410                </th>
1411<th>
1412                  <p>
1413                    <span class="bold"><strong>Return type</strong></span>
1414                  </p>
1415                </th>
1416<th>
1417                  <p>
1418                    <span class="bold"><strong>Assertion / Note / Pre- / Post-condition</strong></span>
1419                  </p>
1420                </th>
1421</tr></thead>
1422<tbody>
1423<tr>
1424<td>
1425                  <p>
1426                    <code class="computeroutput"><span class="identifier">Acc</span><span class="special">::</span><span class="identifier">result_type</span></code>
1427                  </p>
1428                </td>
1429<td>
1430                  <p>
1431                    <span class="emphasis"><em>implementation defined</em></span>
1432                  </p>
1433                </td>
1434<td>
1435                  <p>
1436                    The type returned by <code class="computeroutput"><span class="identifier">Acc</span><span class="special">::</span><span class="identifier">result</span><span class="special">()</span></code>.
1437                  </p>
1438                </td>
1439</tr>
1440<tr>
1441<td>
1442                  <p>
1443                    <code class="computeroutput"><span class="identifier">Acc</span> <span class="identifier">acc</span><span class="special">(</span><span class="identifier">args</span><span class="special">)</span></code>
1444                  </p>
1445                </td>
1446<td>
1447                  <p>
1448                    none
1449                  </p>
1450                </td>
1451<td>
1452                  <p>
1453                    Construct from an argument pack.
1454                  </p>
1455                </td>
1456</tr>
1457<tr>
1458<td>
1459                  <p>
1460                    <code class="computeroutput"><span class="identifier">Acc</span> <span class="identifier">acc</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">)</span></code>
1461                  </p>
1462                </td>
1463<td>
1464                  <p>
1465                    none
1466                  </p>
1467                </td>
1468<td>
1469                  <p>
1470                    Post: <code class="computeroutput"><span class="identifier">acc</span><span class="special">.</span><span class="identifier">result</span><span class="special">(</span><span class="identifier">args</span><span class="special">)</span></code>
1471                    is equivalent to <code class="computeroutput"><span class="identifier">acc2</span><span class="special">.</span><span class="identifier">result</span><span class="special">(</span><span class="identifier">args</span><span class="special">)</span></code>
1472                  </p>
1473                </td>
1474</tr>
1475<tr>
1476<td>
1477                  <p>
1478                    <code class="computeroutput"><span class="identifier">acc</span><span class="special">(</span><span class="identifier">args</span><span class="special">)</span></code>
1479                  </p>
1480                </td>
1481<td>
1482                  <p>
1483                    <span class="emphasis"><em>unspecified</em></span>
1484                  </p>
1485                </td>
1486<td>
1487                </td>
1488</tr>
1489<tr>
1490<td>
1491                  <p>
1492                    <code class="computeroutput"><span class="identifier">acc</span><span class="special">.</span><span class="identifier">on_drop</span><span class="special">(</span><span class="identifier">args</span><span class="special">)</span></code>
1493                  </p>
1494                </td>
1495<td>
1496                  <p>
1497                    <span class="emphasis"><em>unspecified</em></span>
1498                  </p>
1499                </td>
1500<td>
1501                </td>
1502</tr>
1503<tr>
1504<td>
1505                  <p>
1506                    <code class="computeroutput"><span class="identifier">acc</span><span class="special">.</span><span class="identifier">result</span><span class="special">(</span><span class="identifier">args</span><span class="special">)</span></code>
1507                  </p>
1508                </td>
1509<td>
1510                  <p>
1511                    <code class="computeroutput"><span class="identifier">Acc</span><span class="special">::</span><span class="identifier">result_type</span></code>
1512                  </p>
1513                </td>
1514<td>
1515                </td>
1516</tr>
1517</tbody>
1518</table></div>
1519</div>
1520<br class="table-break"><h3>
1521<a name="accumulators.user_s_guide.the_accumulators_framework.concepts.h1"></a>
1522          <span class="phrase"><a name="accumulators.user_s_guide.the_accumulators_framework.concepts.feature_concept"></a></span><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework.concepts.feature_concept">Feature
1523          Concept</a>
1524        </h3>
1525<p>
1526          In the following table, <code class="computeroutput"><span class="identifier">F</span></code>
1527          is the type of a feature and <code class="computeroutput"><span class="identifier">S</span></code>
1528          is some scalar type.
1529        </p>
1530<div class="table">
1531<a name="accumulators.user_s_guide.the_accumulators_framework.concepts.t1"></a><p class="title"><b>Table 1.3. Feature Requirements</b></p>
1532<div class="table-contents"><table class="table" summary="Feature Requirements">
1533<colgroup>
1534<col>
1535<col>
1536<col>
1537</colgroup>
1538<thead><tr>
1539<th>
1540                  <p>
1541                    <span class="bold"><strong>Expression</strong></span>
1542                  </p>
1543                </th>
1544<th>
1545                  <p>
1546                    <span class="bold"><strong>Return type</strong></span>
1547                  </p>
1548                </th>
1549<th>
1550                  <p>
1551                    <span class="bold"><strong>Assertion / Note / Pre- / Post-condition</strong></span>
1552                  </p>
1553                </th>
1554</tr></thead>
1555<tbody>
1556<tr>
1557<td>
1558                  <p>
1559                    <code class="computeroutput"><span class="identifier">F</span><span class="special">::</span><span class="identifier">dependencies</span></code>
1560                  </p>
1561                </td>
1562<td>
1563                  <p>
1564                    <span class="emphasis"><em>unspecified</em></span>
1565                  </p>
1566                </td>
1567<td>
1568                  <p>
1569                    An MPL sequence of other features on which <code class="computeroutput"><span class="identifier">F</span></code>
1570                    depends.
1571                  </p>
1572                </td>
1573</tr>
1574<tr>
1575<td>
1576                  <p>
1577                    <code class="computeroutput"><span class="identifier">F</span><span class="special">::</span><span class="identifier">is_weight_accumulator</span></code>
1578                  </p>
1579                </td>
1580<td>
1581                  <p>
1582                    <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> or <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
1583                  </p>
1584                </td>
1585<td>
1586                  <p>
1587                    <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> if the accumulator for
1588                    this feature should be made external when the weight type for
1589                    the accumulator set is <code class="computeroutput"><span class="identifier">external</span><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;</span></code>, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
1590                    otherwise.
1591                  </p>
1592                </td>
1593</tr>
1594<tr>
1595<td>
1596                  <p>
1597                    <code class="computeroutput"><span class="identifier">F</span><span class="special">::</span><span class="identifier">impl</span></code>
1598                  </p>
1599                </td>
1600<td>
1601                  <p>
1602                    <span class="emphasis"><em>unspecified</em></span>
1603                  </p>
1604                </td>
1605<td>
1606                  <p>
1607                    An <a href="../../../libs/mpl/doc/refmanual/lambda-expression.html" target="_top">MPL
1608                    Lambda Expression</a> that returns the type of the accumulator
1609                    that implements this feature when passed a sample type and a
1610                    weight type.
1611                  </p>
1612                </td>
1613</tr>
1614</tbody>
1615</table></div>
1616</div>
1617<br class="table-break">
1618</div>
1619</div>
1620<div class="section">
1621<div class="titlepage"><div><div><h3 class="title">
1622<a name="accumulators.user_s_guide.the_statistical_accumulators_library"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library" title="The Statistical Accumulators Library">The
1623      Statistical Accumulators Library</a>
1624</h3></div></div></div>
1625<div class="toc"><dl class="toc">
1626<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count">count</a></span></dt>
1627<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.covariance">covariance</a></span></dt>
1628<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.density">density</a></span></dt>
1629<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.error_of_mean">error_of&lt;mean&gt;</a></span></dt>
1630<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.extended_p_square">extended_p_square</a></span></dt>
1631<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.extended_p_square_quantile">extended_p_square_quantile
1632        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1633<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.kurtosis">kurtosis</a></span></dt>
1634<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.max">max</a></span></dt>
1635<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.mean">mean
1636        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1637<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.median">median
1638        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1639<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.min">min</a></span></dt>
1640<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.moment">moment</a></span></dt>
1641<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.p_square_cumulative_distribution">p_square_cumulative_distribution</a></span></dt>
1642<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.p_square_quantile">p_square_quantile
1643        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1644<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.peaks_over_threshold">peaks_over_threshold
1645        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1646<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.pot_quantile">pot_quantile
1647        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1648<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.pot_tail_mean">pot_tail_mean</a></span></dt>
1649<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_count">rolling_count</a></span></dt>
1650<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_sum">rolling_sum</a></span></dt>
1651<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_mean">rolling_mean</a></span></dt>
1652<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_moment">rolling_moment</a></span></dt>
1653<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_variance">rolling_variance</a></span></dt>
1654<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.skewness">skewness</a></span></dt>
1655<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum">sum
1656        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1657<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail">tail</a></span></dt>
1658<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.coherent_tail_mean">coherent_tail_mean</a></span></dt>
1659<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.non_coherent_tail_mean">non_coherent_tail_mean</a></span></dt>
1660<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail_quantile">tail_quantile</a></span></dt>
1661<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail_variate">tail_variate</a></span></dt>
1662<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail_variate_means">tail_variate_means
1663        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1664<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.variance">variance
1665        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1666<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_covariance">weighted_covariance</a></span></dt>
1667<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_density">weighted_density</a></span></dt>
1668<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_extended_p_square">weighted_extended_p_square</a></span></dt>
1669<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_kurtosis">weighted_kurtosis</a></span></dt>
1670<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_mean">weighted_mean
1671        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1672<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_median">weighted_median
1673        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1674<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_moment">weighted_moment</a></span></dt>
1675<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_p_square_cumulative_distribution">weighted_p_square_cumulative_distribution</a></span></dt>
1676<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_p_square_quantile">weighted_p_square_quantile
1677        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1678<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_peaks_over_threshold">weighted_peaks_over_threshold
1679        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1680<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_skewness">weighted_skewness</a></span></dt>
1681<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_sum">weighted_sum
1682        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1683<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.non_coherent_weighted_tail_mean">non_coherent_weighted_tail_mean</a></span></dt>
1684<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_tail_quantile">weighted_tail_quantile</a></span></dt>
1685<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_tail_variate_means">weighted_tail_variate_means
1686        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1687<dt><span class="section"><a href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_variance">weighted_variance
1688        <span class="emphasis"><em>and variants</em></span></a></span></dt>
1689</dl></div>
1690<p>
1691        The Statistical Accumulators Library defines accumulators for incremental
1692        statistical computations. It is built on top of <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_accumulators_framework" title="The Accumulators Framework">The
1693        Accumulator Framework</a>.
1694      </p>
1695<div class="section">
1696<div class="titlepage"><div><div><h4 class="title">
1697<a name="accumulators.user_s_guide.the_statistical_accumulators_library.count"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count">count</a>
1698</h4></div></div></div>
1699<p>
1700          The <code class="computeroutput"><span class="identifier">count</span></code> feature is a
1701          simple counter that tracks the number of samples pushed into the accumulator
1702          set.
1703        </p>
1704<div class="variablelist">
1705<p class="title"><b></b></p>
1706<dl class="variablelist">
1707<dt><span class="term">Result Type</span></dt>
1708<dd>
1709<p>
1710</p>
1711<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
1712</pre>
1713<p>
1714              </p>
1715</dd>
1716<dt><span class="term">Depends On</span></dt>
1717<dd><p>
1718                <span class="emphasis"><em>none</em></span>
1719              </p></dd>
1720<dt><span class="term">Variants</span></dt>
1721<dd><p>
1722                <span class="emphasis"><em>none</em></span>
1723              </p></dd>
1724<dt><span class="term">Initialization Parameters</span></dt>
1725<dd><p>
1726                <span class="emphasis"><em>none</em></span>
1727              </p></dd>
1728<dt><span class="term">Accumulator Parameters</span></dt>
1729<dd><p>
1730                <span class="emphasis"><em>none</em></span>
1731              </p></dd>
1732<dt><span class="term">Extractor Parameters</span></dt>
1733<dd><p>
1734                <span class="emphasis"><em>none</em></span>
1735              </p></dd>
1736<dt><span class="term">Accumulator Complexity</span></dt>
1737<dd><p>
1738                O(1)
1739              </p></dd>
1740<dt><span class="term">Extractor Complexity</span></dt>
1741<dd><p>
1742                O(1)
1743              </p></dd>
1744</dl>
1745</div>
1746<p>
1747          <span class="bold"><strong>Header</strong></span>
1748        </p>
1749<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.count_hpp" title="Header &lt;boost/accumulators/statistics/count.hpp&gt;">boost/accumulators/statistics/count.hpp</a></code><span class="special">&gt;</span>
1750</pre>
1751<p>
1752          <span class="bold"><strong>Example</strong></span>
1753        </p>
1754<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">features</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">count</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
1755<span class="identifier">acc</span><span class="special">(</span><span class="number">0</span><span class="special">);</span>
1756<span class="identifier">acc</span><span class="special">(</span><span class="number">0</span><span class="special">);</span>
1757<span class="identifier">acc</span><span class="special">(</span><span class="number">0</span><span class="special">);</span>
1758<span class="identifier">assert</span><span class="special">(</span><span class="number">3</span> <span class="special">==</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
1759</pre>
1760<p>
1761          <span class="bold"><strong>See also</strong></span>
1762        </p>
1763<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
1764              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/count_impl.html" title="Struct count_impl">count_impl</a></code>
1765            </li></ul></div>
1766</div>
1767<div class="section">
1768<div class="titlepage"><div><div><h4 class="title">
1769<a name="accumulators.user_s_guide.the_statistical_accumulators_library.covariance"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.covariance" title="covariance">covariance</a>
1770</h4></div></div></div>
1771<p>
1772          The <code class="computeroutput"><span class="identifier">covariance</span></code> feature
1773          is an iterative Monte Carlo estimator for the covariance. It is specified
1774          as <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariance</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>.
1775        </p>
1776<div class="variablelist">
1777<p class="title"><b></b></p>
1778<dl class="variablelist">
1779<dt><span class="term">Result Type</span></dt>
1780<dd>
1781<p>
1782</p>
1783<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">outer_product</span><span class="special">&lt;</span>
1784    <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
1785  <span class="special">,</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
1786<span class="special">&gt;::</span><span class="identifier">result_type</span>
1787</pre>
1788<p>
1789              </p>
1790</dd>
1791<dt><span class="term">Depends On</span></dt>
1792<dd><p>
1793                <code class="computeroutput"><span class="identifier">count</span></code> <br> <code class="computeroutput"><span class="identifier">mean</span></code> <br> <code class="computeroutput"><span class="identifier">mean_of_variates</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>
1794              </p></dd>
1795<dt><span class="term">Variants</span></dt>
1796<dd><p>
1797                <code class="computeroutput"><span class="identifier">abstract_covariance</span></code>
1798              </p></dd>
1799<dt><span class="term">Initialization Parameters</span></dt>
1800<dd><p>
1801                <span class="emphasis"><em>none</em></span>
1802              </p></dd>
1803<dt><span class="term">Accumulator Parameters</span></dt>
1804<dd><p>
1805                <em class="replaceable"><code>variate-tag</code></em>
1806              </p></dd>
1807<dt><span class="term">Extractor Parameters</span></dt>
1808<dd><p>
1809                <span class="emphasis"><em>none</em></span>
1810              </p></dd>
1811<dt><span class="term">Accumulator Complexity</span></dt>
1812<dd><p>
1813                TODO
1814              </p></dd>
1815<dt><span class="term">Extractor Complexity</span></dt>
1816<dd><p>
1817                O(1)
1818              </p></dd>
1819</dl>
1820</div>
1821<p>
1822          <span class="bold"><strong>Headers</strong></span>
1823        </p>
1824<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.covariance_hpp" title="Header &lt;boost/accumulators/statistics/covariance.hpp&gt;">boost/accumulators/statistics/covariance.hpp</a></code><span class="special">&gt;</span>
1825<span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.variates.covariate_hpp" title="Header &lt;boost/accumulators/statistics/variates/covariate.hpp&gt;">boost/accumulators/statistics/variates/covariate.hpp</a></code><span class="special">&gt;</span>
1826</pre>
1827<p>
1828          <span class="bold"><strong>Example</strong></span>
1829        </p>
1830<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariance</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
1831<span class="identifier">acc</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">2.</span><span class="special">);</span>
1832<span class="identifier">acc</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">4.</span><span class="special">);</span>
1833<span class="identifier">acc</span><span class="special">(</span><span class="number">2.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">3.</span><span class="special">);</span>
1834<span class="identifier">acc</span><span class="special">(</span><span class="number">6.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">1.</span><span class="special">);</span>
1835<span class="identifier">assert</span><span class="special">(</span><span class="identifier">covariance</span><span class="special">(</span><span class="identifier">acc</span><span class="special">)</span> <span class="special">==</span> <span class="special">-</span><span class="number">1.75</span><span class="special">);</span>
1836</pre>
1837<p>
1838          <span class="bold"><strong>See also</strong></span>
1839        </p>
1840<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1841<li class="listitem">
1842              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/covariance_impl.html" title="Struct template covariance_impl">covariance_impl</a></code>
1843            </li>
1844<li class="listitem">
1845              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
1846            </li>
1847<li class="listitem">
1848              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.mean" title="mean and variants"><code class="literal">mean</code></a>
1849            </li>
1850</ul></div>
1851</div>
1852<div class="section">
1853<div class="titlepage"><div><div><h4 class="title">
1854<a name="accumulators.user_s_guide.the_statistical_accumulators_library.density"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.density" title="density">density</a>
1855</h4></div></div></div>
1856<p>
1857          The <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">density</span></code> feature returns a histogram of
1858          the sample distribution. For more implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/density_impl.html" title="Struct template density_impl">density_impl</a></code>.
1859        </p>
1860<div class="variablelist">
1861<p class="title"><b></b></p>
1862<dl class="variablelist">
1863<dt><span class="term">Result Type</span></dt>
1864<dd>
1865<p>
1866</p>
1867<pre class="programlisting"><span class="identifier">iterator_range</span><span class="special">&lt;</span>
1868    <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span>
1869        <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span>
1870            <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
1871          <span class="special">,</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
1872        <span class="special">&gt;</span>
1873    <span class="special">&gt;::</span><span class="identifier">iterator</span>
1874<span class="special">&gt;</span>
1875</pre>
1876<p>
1877              </p>
1878</dd>
1879<dt><span class="term">Depends On</span></dt>
1880<dd><p>
1881                <code class="computeroutput"><span class="identifier">count</span></code> <br> <code class="computeroutput"><span class="identifier">min</span></code> <br> <code class="computeroutput"><span class="identifier">max</span></code>
1882              </p></dd>
1883<dt><span class="term">Variants</span></dt>
1884<dd><p>
1885                <span class="emphasis"><em>none</em></span>
1886              </p></dd>
1887<dt><span class="term">Initialization Parameters</span></dt>
1888<dd><p>
1889                <code class="computeroutput"><span class="identifier">density</span><span class="special">::</span><span class="identifier">cache_size</span></code> <br> <code class="computeroutput"><span class="identifier">density</span><span class="special">::</span><span class="identifier">num_bins</span></code>
1890              </p></dd>
1891<dt><span class="term">Accumulator Parameters</span></dt>
1892<dd><p>
1893                <span class="emphasis"><em>none</em></span>
1894              </p></dd>
1895<dt><span class="term">Extractor Parameters</span></dt>
1896<dd><p>
1897                <span class="emphasis"><em>none</em></span>
1898              </p></dd>
1899<dt><span class="term">Accumulator Complexity</span></dt>
1900<dd><p>
1901                TODO
1902              </p></dd>
1903<dt><span class="term">Extractor Complexity</span></dt>
1904<dd><p>
1905                O(N), when N is <code class="computeroutput"><span class="identifier">density</span><span class="special">::</span><span class="identifier">num_bins</span></code>
1906              </p></dd>
1907</dl>
1908</div>
1909<p>
1910          <span class="bold"><strong>Header</strong></span>
1911        </p>
1912<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.density_hpp" title="Header &lt;boost/accumulators/statistics/density.hpp&gt;">boost/accumulators/statistics/density.hpp</a></code><span class="special">&gt;</span>
1913</pre>
1914<p>
1915          <span class="bold"><strong>Note</strong></span>
1916        </p>
1917<p>
1918          Results from the <code class="computeroutput"><span class="identifier">density</span></code>
1919          accumulator can only be extracted after the number of samples meets or
1920          exceeds the cache size.
1921        </p>
1922<p>
1923          <span class="bold"><strong>See also</strong></span>
1924        </p>
1925<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1926<li class="listitem">
1927              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/density_impl.html" title="Struct template density_impl">density_impl</a></code>
1928            </li>
1929<li class="listitem">
1930              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
1931            </li>
1932<li class="listitem">
1933              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.min" title="min"><code class="literal">min</code></a>
1934            </li>
1935<li class="listitem">
1936              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.max" title="max"><code class="literal">max</code></a>
1937            </li>
1938</ul></div>
1939</div>
1940<div class="section">
1941<div class="titlepage"><div><div><h4 class="title">
1942<a name="accumulators.user_s_guide.the_statistical_accumulators_library.error_of_mean"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.error_of_mean" title="error_of&lt;mean&gt;">error_of&lt;mean&gt;</a>
1943</h4></div></div></div>
1944<p>
1945          The <code class="computeroutput"><span class="identifier">error_of</span><span class="special">&lt;</span><span class="identifier">mean</span><span class="special">&gt;</span></code>
1946          feature calculates the error of the mean feature. It is equal to <code class="computeroutput"><span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">variance</span> <span class="special">/</span>
1947          <span class="special">(</span><span class="identifier">count</span>
1948          <span class="special">-</span> <span class="number">1</span><span class="special">))</span></code>.
1949        </p>
1950<div class="variablelist">
1951<p class="title"><b></b></p>
1952<dl class="variablelist">
1953<dt><span class="term">Result Type</span></dt>
1954<dd>
1955<p>
1956</p>
1957<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
1958</pre>
1959<p>
1960              </p>
1961</dd>
1962<dt><span class="term">Depends On</span></dt>
1963<dd><p>
1964                <code class="computeroutput"><span class="identifier">count</span></code> <br> <code class="computeroutput"><span class="identifier">variance</span></code>
1965              </p></dd>
1966<dt><span class="term">Variants</span></dt>
1967<dd><p>
1968                <code class="computeroutput"><span class="identifier">error_of</span><span class="special">&lt;</span><span class="identifier">immediate_mean</span><span class="special">&gt;</span></code>
1969              </p></dd>
1970<dt><span class="term">Initialization Parameters</span></dt>
1971<dd><p>
1972                <span class="emphasis"><em>none</em></span>
1973              </p></dd>
1974<dt><span class="term">Accumulator Parameters</span></dt>
1975<dd><p>
1976                <span class="emphasis"><em>none</em></span>
1977              </p></dd>
1978<dt><span class="term">Extractor Parameters</span></dt>
1979<dd><p>
1980                <span class="emphasis"><em>none</em></span>
1981              </p></dd>
1982<dt><span class="term">Accumulator Complexity</span></dt>
1983<dd><p>
1984                TODO
1985              </p></dd>
1986<dt><span class="term">Extractor Complexity</span></dt>
1987<dd><p>
1988                O(1)
1989              </p></dd>
1990</dl>
1991</div>
1992<p>
1993          <span class="bold"><strong>Header</strong></span>
1994        </p>
1995<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.error_of_hpp" title="Header &lt;boost/accumulators/statistics/error_of.hpp&gt;">boost/accumulators/statistics/error_of.hpp</a></code><span class="special">&gt;</span>
1996<span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.error_of_mean_hpp" title="Header &lt;boost/accumulators/statistics/error_of_mean.hpp&gt;">boost/accumulators/statistics/error_of_mean.hpp</a></code><span class="special">&gt;</span>
1997</pre>
1998<p>
1999          <span class="bold"><strong>Example</strong></span>
2000        </p>
2001<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">error_of</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
2002<span class="identifier">acc</span><span class="special">(</span><span class="number">1.1</span><span class="special">);</span>
2003<span class="identifier">acc</span><span class="special">(</span><span class="number">1.2</span><span class="special">);</span>
2004<span class="identifier">acc</span><span class="special">(</span><span class="number">1.3</span><span class="special">);</span>
2005<span class="identifier">assert</span><span class="special">(</span><span class="number">0.057735</span> <span class="special">==</span> <span class="identifier">error_of</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">));</span>
2006</pre>
2007<p>
2008          <span class="bold"><strong>See also</strong></span>
2009        </p>
2010<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2011<li class="listitem">
2012              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/error_of_mean_impl.html" title="Struct template error_of_mean_impl">error_of_mean_impl</a></code>
2013            </li>
2014<li class="listitem">
2015              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
2016            </li>
2017<li class="listitem">
2018              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.variance" title="variance and variants"><code class="literal">variance</code></a>
2019            </li>
2020</ul></div>
2021</div>
2022<div class="section">
2023<div class="titlepage"><div><div><h4 class="title">
2024<a name="accumulators.user_s_guide.the_statistical_accumulators_library.extended_p_square"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.extended_p_square" title="extended_p_square">extended_p_square</a>
2025</h4></div></div></div>
2026<p>
2027          Multiple quantile estimation with the extended <code class="literal">P^2</code> algorithm.
2028          For further details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/extended_p_square_impl.html" title="Struct template extended_p_square_impl">extended_p_square_impl</a></code>.
2029        </p>
2030<div class="variablelist">
2031<p class="title"><b></b></p>
2032<dl class="variablelist">
2033<dt><span class="term">Result Type</span></dt>
2034<dd>
2035<p>
2036</p>
2037<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span><span class="special">&lt;</span>
2038    <em class="replaceable"><code>implementation-defined</code></em>
2039<span class="special">&gt;</span>
2040</pre>
2041<p>
2042              </p>
2043</dd>
2044<dt><span class="term">Depends On</span></dt>
2045<dd><p>
2046                <code class="computeroutput"><span class="identifier">count</span></code>
2047              </p></dd>
2048<dt><span class="term">Variants</span></dt>
2049<dd><p>
2050                <span class="emphasis"><em>none</em></span>
2051              </p></dd>
2052<dt><span class="term">Initialization Parameters</span></dt>
2053<dd><p>
2054                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">extended_p_square</span><span class="special">::</span><span class="identifier">probabilities</span></code>
2055              </p></dd>
2056<dt><span class="term">Accumulator Parameters</span></dt>
2057<dd><p>
2058                <span class="emphasis"><em>none</em></span>
2059              </p></dd>
2060<dt><span class="term">Extractor Parameters</span></dt>
2061<dd><p>
2062                <span class="emphasis"><em>none</em></span>
2063              </p></dd>
2064<dt><span class="term">Accumulator Complexity</span></dt>
2065<dd><p>
2066                TODO
2067              </p></dd>
2068<dt><span class="term">Extractor Complexity</span></dt>
2069<dd><p>
2070                O(1)
2071              </p></dd>
2072</dl>
2073</div>
2074<p>
2075          <span class="bold"><strong>Header</strong></span>
2076        </p>
2077<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.extended_p_square_hpp" title="Header &lt;boost/accumulators/statistics/extended_p_square.hpp&gt;">boost/accumulators/statistics/extended_p_square.hpp</a></code><span class="special">&gt;</span>
2078</pre>
2079<p>
2080          <span class="bold"><strong>Example</strong></span>
2081        </p>
2082<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">probs</span> <span class="special">=</span> <span class="special">{</span><span class="number">0.001</span><span class="special">,</span><span class="number">0.01</span><span class="special">,</span><span class="number">0.1</span><span class="special">,</span><span class="number">0.25</span><span class="special">,</span><span class="number">0.5</span><span class="special">,</span><span class="number">0.75</span><span class="special">,</span><span class="number">0.9</span><span class="special">,</span><span class="number">0.99</span><span class="special">,</span><span class="number">0.999</span><span class="special">};</span>
2083<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">extended_p_square</span><span class="special">&gt;</span> <span class="special">&gt;</span>
2084    <span class="identifier">acc</span><span class="special">(</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">extended_p_square</span><span class="special">::</span><span class="identifier">probabilities</span> <span class="special">=</span> <span class="identifier">probs</span><span class="special">);</span>
2085
2086<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span> <span class="comment">// a random number generator</span>
2087<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span> <span class="identifier">i</span><span class="special">&lt;</span><span class="number">10000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
2088    <span class="identifier">acc</span><span class="special">(</span><span class="identifier">rng</span><span class="special">());</span>
2089
2090<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="identifier">extended_p_square</span><span class="special">(</span><span class="identifier">acc</span><span class="special">)[</span><span class="number">0</span><span class="special">],</span> <span class="identifier">probs</span><span class="special">[</span><span class="number">0</span><span class="special">],</span> <span class="number">25</span><span class="special">);</span>
2091<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="identifier">extended_p_square</span><span class="special">(</span><span class="identifier">acc</span><span class="special">)[</span><span class="number">1</span><span class="special">],</span> <span class="identifier">probs</span><span class="special">[</span><span class="number">1</span><span class="special">],</span> <span class="number">10</span><span class="special">);</span>
2092<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="identifier">extended_p_square</span><span class="special">(</span><span class="identifier">acc</span><span class="special">)[</span><span class="number">2</span><span class="special">],</span> <span class="identifier">probs</span><span class="special">[</span><span class="number">2</span><span class="special">],</span> <span class="number">5</span><span class="special">);</span>
2093
2094<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">=</span><span class="number">3</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">probs</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
2095<span class="special">{</span>
2096    <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="identifier">extended_p_square</span><span class="special">(</span><span class="identifier">acc</span><span class="special">)[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">probs</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="number">2</span><span class="special">);</span>
2097<span class="special">}</span>
2098</pre>
2099<p>
2100          <span class="bold"><strong>See also</strong></span>
2101        </p>
2102<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2103<li class="listitem">
2104              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/extended_p_square_impl.html" title="Struct template extended_p_square_impl">extended_p_square_impl</a></code>
2105            </li>
2106<li class="listitem">
2107              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
2108            </li>
2109</ul></div>
2110</div>
2111<div class="section">
2112<div class="titlepage"><div><div><h4 class="title">
2113<a name="accumulators.user_s_guide.the_statistical_accumulators_library.extended_p_square_quantile"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.extended_p_square_quantile" title="extended_p_square_quantile and variants">extended_p_square_quantile
2114        <span class="emphasis"><em>and variants</em></span></a>
2115</h4></div></div></div>
2116<p>
2117          Quantile estimation using the extended <code class="literal">P^2</code> algorithm
2118          for weighted and unweighted samples. By default, the calculation is linear
2119          and unweighted, but quadratic and weighted variants are also provided.
2120          For further implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/exte_1_3_2_6_3_59_1_1_22_6.html" title="Struct template extended_p_square_quantile_impl">extended_p_square_quantile_impl</a></code>.
2121        </p>
2122<p>
2123          All the variants share the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">quantile</span></code>
2124          feature and can be extracted using the <code class="computeroutput"><span class="identifier">quantile</span><span class="special">()</span></code> extractor.
2125        </p>
2126<div class="variablelist">
2127<p class="title"><b></b></p>
2128<dl class="variablelist">
2129<dt><span class="term">Result Type</span></dt>
2130<dd>
2131<p>
2132</p>
2133<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
2134</pre>
2135<p>
2136              </p>
2137</dd>
2138<dt><span class="term">Depends On</span></dt>
2139<dd><p>
2140                weighted variants depend on <code class="computeroutput"><span class="identifier">weighted_extended_p_square</span></code>
2141                <br> unweighted variants depend on <code class="computeroutput"><span class="identifier">extended_p_square</span></code>
2142              </p></dd>
2143<dt><span class="term">Variants</span></dt>
2144<dd><p>
2145                <code class="computeroutput"><span class="identifier">extended_p_square_quantile_quadratic</span></code>
2146                <br> <code class="computeroutput"><span class="identifier">weighted_extended_p_square_quantile</span></code>
2147                <br> <code class="computeroutput"><span class="identifier">weighted_extended_p_square_quantile_quadratic</span></code>
2148              </p></dd>
2149<dt><span class="term">Initialization Parameters</span></dt>
2150<dd><p>
2151                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">extended_p_square</span><span class="special">::</span><span class="identifier">probabilities</span></code>
2152              </p></dd>
2153<dt><span class="term">Accumulator Parameters</span></dt>
2154<dd><p>
2155                <code class="computeroutput"><span class="identifier">weight</span></code> for the weighted
2156                variants
2157              </p></dd>
2158<dt><span class="term">Extractor Parameters</span></dt>
2159<dd><p>
2160                <code class="computeroutput"><span class="identifier">quantile_probability</span></code>
2161              </p></dd>
2162<dt><span class="term">Accumulator Complexity</span></dt>
2163<dd><p>
2164                TODO
2165              </p></dd>
2166<dt><span class="term">Extractor Complexity</span></dt>
2167<dd><p>
2168                O(N) where N is the count of probabilities.
2169              </p></dd>
2170</dl>
2171</div>
2172<p>
2173          <span class="bold"><strong>Header</strong></span>
2174        </p>
2175<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.extended_p_square_quantile_hpp" title="Header &lt;boost/accumulators/statistics/extended_p_square_quantile.hpp&gt;">boost/accumulators/statistics/extended_p_square_quantile.hpp</a></code><span class="special">&gt;</span>
2176</pre>
2177<p>
2178          <span class="bold"><strong>Example</strong></span>
2179        </p>
2180<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">extended_p_square_quantile</span><span class="special">&gt;</span> <span class="special">&gt;</span>
2181    <span class="identifier">accumulator_t</span><span class="special">;</span>
2182<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_extended_p_square_quantile</span><span class="special">&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span>
2183    <span class="identifier">accumulator_t_weighted</span><span class="special">;</span>
2184<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">extended_p_square_quantile</span><span class="special">(</span><span class="identifier">quadratic</span><span class="special">)&gt;</span> <span class="special">&gt;</span>
2185    <span class="identifier">accumulator_t_quadratic</span><span class="special">;</span>
2186<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_extended_p_square_quantile</span><span class="special">(</span><span class="identifier">quadratic</span><span class="special">)&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span>
2187    <span class="identifier">accumulator_t_weighted_quadratic</span><span class="special">;</span>
2188
2189<span class="comment">// tolerance</span>
2190<span class="keyword">double</span> <span class="identifier">epsilon</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
2191
2192<span class="comment">// a random number generator</span>
2193<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
2194
2195<span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">probs</span> <span class="special">=</span> <span class="special">{</span> <span class="number">0.990</span><span class="special">,</span> <span class="number">0.991</span><span class="special">,</span> <span class="number">0.992</span><span class="special">,</span> <span class="number">0.993</span><span class="special">,</span> <span class="number">0.994</span><span class="special">,</span>
2196                               <span class="number">0.995</span><span class="special">,</span> <span class="number">0.996</span><span class="special">,</span> <span class="number">0.997</span><span class="special">,</span> <span class="number">0.998</span><span class="special">,</span> <span class="number">0.999</span> <span class="special">};</span>
2197<span class="identifier">accumulator_t</span> <span class="identifier">acc</span><span class="special">(</span><span class="identifier">extended_p_square_probabilities</span> <span class="special">=</span> <span class="identifier">probs</span><span class="special">);</span>
2198<span class="identifier">accumulator_t_weighted</span> <span class="identifier">acc_weighted</span><span class="special">(</span><span class="identifier">extended_p_square_probabilities</span> <span class="special">=</span> <span class="identifier">probs</span><span class="special">);</span>
2199<span class="identifier">accumulator_t_quadratic</span> <span class="identifier">acc2</span><span class="special">(</span><span class="identifier">extended_p_square_probabilities</span> <span class="special">=</span> <span class="identifier">probs</span><span class="special">);</span>
2200<span class="identifier">accumulator_t_weighted_quadratic</span> <span class="identifier">acc_weighted2</span><span class="special">(</span><span class="identifier">extended_p_square_probabilities</span> <span class="special">=</span> <span class="identifier">probs</span><span class="special">);</span>
2201
2202<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span> <span class="identifier">i</span><span class="special">&lt;</span><span class="number">10000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
2203<span class="special">{</span>
2204    <span class="keyword">double</span> <span class="identifier">sample</span> <span class="special">=</span> <span class="identifier">rng</span><span class="special">();</span>
2205    <span class="identifier">acc</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
2206    <span class="identifier">acc2</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
2207    <span class="identifier">acc_weighted</span><span class="special">(</span><span class="identifier">sample</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.</span><span class="special">);</span>
2208    <span class="identifier">acc_weighted2</span><span class="special">(</span><span class="identifier">sample</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.</span><span class="special">);</span>
2209<span class="special">}</span>
2210
2211<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">probs</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span> <span class="special">-</span> <span class="number">1</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
2212<span class="special">{</span>
2213    <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span>
2214        <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.99025</span> <span class="special">+</span> <span class="identifier">i</span><span class="special">*</span><span class="number">0.001</span><span class="special">)</span>
2215      <span class="special">,</span> <span class="number">0.99025</span> <span class="special">+</span> <span class="identifier">i</span><span class="special">*</span><span class="number">0.001</span>
2216      <span class="special">,</span> <span class="identifier">epsilon</span>
2217    <span class="special">);</span>
2218    <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span>
2219        <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.99025</span> <span class="special">+</span> <span class="identifier">i</span><span class="special">*</span><span class="number">0.001</span><span class="special">)</span>
2220      <span class="special">,</span> <span class="number">0.99025</span> <span class="special">+</span> <span class="identifier">i</span><span class="special">*</span><span class="number">0.001</span>
2221      <span class="special">,</span> <span class="identifier">epsilon</span>
2222    <span class="special">);</span>
2223    <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span>
2224        <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc_weighted</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.99025</span> <span class="special">+</span> <span class="identifier">i</span><span class="special">*</span><span class="number">0.001</span><span class="special">)</span>
2225      <span class="special">,</span> <span class="number">0.99025</span> <span class="special">+</span> <span class="identifier">i</span><span class="special">*</span><span class="number">0.001</span>
2226      <span class="special">,</span> <span class="identifier">epsilon</span>
2227    <span class="special">);</span>
2228    <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span>
2229        <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc_weighted2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.99025</span> <span class="special">+</span> <span class="identifier">i</span><span class="special">*</span><span class="number">0.001</span><span class="special">)</span>
2230      <span class="special">,</span> <span class="number">0.99025</span> <span class="special">+</span> <span class="identifier">i</span><span class="special">*</span><span class="number">0.001</span>
2231      <span class="special">,</span> <span class="identifier">epsilon</span>
2232    <span class="special">);</span>
2233<span class="special">}</span>
2234</pre>
2235<p>
2236          <span class="bold"><strong>See also</strong></span>
2237        </p>
2238<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2239<li class="listitem">
2240              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/exte_1_3_2_6_3_59_1_1_22_6.html" title="Struct template extended_p_square_quantile_impl">extended_p_square_quantile_impl</a></code>
2241            </li>
2242<li class="listitem">
2243              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.extended_p_square" title="extended_p_square"><code class="literal">extended_p_square</code></a>
2244            </li>
2245<li class="listitem">
2246              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_extended_p_square" title="weighted_extended_p_square"><code class="literal">weighted_extended_p_square</code></a>
2247            </li>
2248</ul></div>
2249</div>
2250<div class="section">
2251<div class="titlepage"><div><div><h4 class="title">
2252<a name="accumulators.user_s_guide.the_statistical_accumulators_library.kurtosis"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.kurtosis" title="kurtosis">kurtosis</a>
2253</h4></div></div></div>
2254<p>
2255          The kurtosis of a sample distribution is defined as the ratio of the 4th
2256          central moment and the square of the 2nd central moment (the variance)
2257          of the samples, minus 3. The term <code class="literal">-3</code> is added in order
2258          to ensure that the normal distribution has zero kurtosis. For more implementation
2259          details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/kurtosis_impl.html" title="Struct template kurtosis_impl">kurtosis_impl</a></code>
2260        </p>
2261<div class="variablelist">
2262<p class="title"><b></b></p>
2263<dl class="variablelist">
2264<dt><span class="term">Result Type</span></dt>
2265<dd>
2266<p>
2267</p>
2268<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>sample-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span>
2269</pre>
2270<p>
2271              </p>
2272</dd>
2273<dt><span class="term">Depends On</span></dt>
2274<dd><p>
2275                <code class="computeroutput"><span class="identifier">mean</span></code> <br> <code class="computeroutput"><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span></code>
2276                <br> <code class="computeroutput"><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;</span></code>
2277                <br> <code class="computeroutput"><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span></code>
2278              </p></dd>
2279<dt><span class="term">Variants</span></dt>
2280<dd><p>
2281                <span class="emphasis"><em>none</em></span>
2282              </p></dd>
2283<dt><span class="term">Initialization Parameters</span></dt>
2284<dd><p>
2285                <span class="emphasis"><em>none</em></span>
2286              </p></dd>
2287<dt><span class="term">Accumulator Parameters</span></dt>
2288<dd><p>
2289                <span class="emphasis"><em>none</em></span>
2290              </p></dd>
2291<dt><span class="term">Extractor Parameters</span></dt>
2292<dd><p>
2293                <span class="emphasis"><em>none</em></span>
2294              </p></dd>
2295<dt><span class="term">Accumulator Complexity</span></dt>
2296<dd><p>
2297                O(1)
2298              </p></dd>
2299<dt><span class="term">Extractor Complexity</span></dt>
2300<dd><p>
2301                O(1)
2302              </p></dd>
2303</dl>
2304</div>
2305<p>
2306          <span class="bold"><strong>Header</strong></span>
2307        </p>
2308<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.kurtosis_hpp" title="Header &lt;boost/accumulators/statistics/kurtosis.hpp&gt;">boost/accumulators/statistics/kurtosis.hpp</a></code><span class="special">&gt;</span>
2309</pre>
2310<p>
2311          <span class="bold"><strong>Example</strong></span>
2312        </p>
2313<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">kurtosis</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
2314
2315<span class="identifier">acc</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
2316<span class="identifier">acc</span><span class="special">(</span><span class="number">7</span><span class="special">);</span>
2317<span class="identifier">acc</span><span class="special">(</span><span class="number">4</span><span class="special">);</span>
2318<span class="identifier">acc</span><span class="special">(</span><span class="number">9</span><span class="special">);</span>
2319<span class="identifier">acc</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
2320
2321<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">5</span> <span class="special">);</span>
2322<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">159.</span><span class="special">/</span><span class="number">5.</span> <span class="special">);</span>
2323<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">1171.</span><span class="special">/</span><span class="number">5.</span> <span class="special">);</span>
2324<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">1863</span> <span class="special">);</span>
2325<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">kurtosis</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">-</span><span class="number">1.39965397924</span><span class="special">,</span> <span class="number">1e-6</span> <span class="special">);</span>
2326</pre>
2327<p>
2328          <span class="bold"><strong>See also</strong></span>
2329        </p>
2330<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2331<li class="listitem">
2332              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/kurtosis_impl.html" title="Struct template kurtosis_impl">kurtosis_impl</a></code>
2333            </li>
2334<li class="listitem">
2335              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.mean" title="mean and variants"><code class="literal">mean</code></a>
2336            </li>
2337<li class="listitem">
2338              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.moment" title="moment"><code class="literal">moment</code></a>
2339            </li>
2340</ul></div>
2341</div>
2342<div class="section">
2343<div class="titlepage"><div><div><h4 class="title">
2344<a name="accumulators.user_s_guide.the_statistical_accumulators_library.max"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.max" title="max">max</a>
2345</h4></div></div></div>
2346<p>
2347          Calculates the maximum value of all the samples.
2348        </p>
2349<div class="variablelist">
2350<p class="title"><b></b></p>
2351<dl class="variablelist">
2352<dt><span class="term">Result Type</span></dt>
2353<dd>
2354<p>
2355</p>
2356<pre class="programlisting"><em class="replaceable"><code>sample-type</code></em>
2357</pre>
2358<p>
2359              </p>
2360</dd>
2361<dt><span class="term">Depends On</span></dt>
2362<dd><p>
2363                <span class="emphasis"><em>none</em></span>
2364              </p></dd>
2365<dt><span class="term">Variants</span></dt>
2366<dd><p>
2367                <span class="emphasis"><em>none</em></span>
2368              </p></dd>
2369<dt><span class="term">Initialization Parameters</span></dt>
2370<dd><p>
2371                <span class="emphasis"><em>none</em></span>
2372              </p></dd>
2373<dt><span class="term">Accumulator Parameters</span></dt>
2374<dd><p>
2375                <span class="emphasis"><em>none</em></span>
2376              </p></dd>
2377<dt><span class="term">Extractor Parameters</span></dt>
2378<dd><p>
2379                <span class="emphasis"><em>none</em></span>
2380              </p></dd>
2381<dt><span class="term">Accumulator Complexity</span></dt>
2382<dd><p>
2383                O(1)
2384              </p></dd>
2385<dt><span class="term">Extractor Complexity</span></dt>
2386<dd><p>
2387                O(1)
2388              </p></dd>
2389</dl>
2390</div>
2391<p>
2392          <span class="bold"><strong>Header</strong></span>
2393        </p>
2394<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.max_hpp" title="Header &lt;boost/accumulators/statistics/max.hpp&gt;">boost/accumulators/statistics/max.hpp</a></code><span class="special">&gt;</span>
2395</pre>
2396<p>
2397          <span class="bold"><strong>Example</strong></span>
2398        </p>
2399<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">max</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
2400
2401<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
2402<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="special">(</span><span class="identifier">max</span><span class="special">)(</span><span class="identifier">acc</span><span class="special">));</span>
2403
2404<span class="identifier">acc</span><span class="special">(</span><span class="number">0</span><span class="special">);</span>
2405<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="special">(</span><span class="identifier">max</span><span class="special">)(</span><span class="identifier">acc</span><span class="special">));</span>
2406
2407<span class="identifier">acc</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
2408<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="special">(</span><span class="identifier">max</span><span class="special">)(</span><span class="identifier">acc</span><span class="special">));</span>
2409</pre>
2410<p>
2411          <span class="bold"><strong>See also</strong></span>
2412        </p>
2413<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
2414              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/max_impl.html" title="Struct template max_impl">max_impl</a></code>
2415            </li></ul></div>
2416</div>
2417<div class="section">
2418<div class="titlepage"><div><div><h4 class="title">
2419<a name="accumulators.user_s_guide.the_statistical_accumulators_library.mean"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.mean" title="mean and variants">mean
2420        <span class="emphasis"><em>and variants</em></span></a>
2421</h4></div></div></div>
2422<p>
2423          Calculates the mean of samples, weights or variates. The calculation is
2424          either lazy (in the result extractor), or immediate (in the accumulator).
2425          The lazy implementation is the default. For more implementation details,
2426          see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/mean_impl.html" title="Struct template mean_impl">mean_impl</a></code>
2427          or. <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/immediate_mean_impl.html" title="Struct template immediate_mean_impl">immediate_mean_impl</a></code>
2428        </p>
2429<div class="variablelist">
2430<p class="title"><b></b></p>
2431<dl class="variablelist">
2432<dt><span class="term">Result Type</span></dt>
2433<dd><p>
2434                For samples, <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span></code> <br> For weights,
2435                <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>weight-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span></code>
2436                <br> For variates, <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span></code>
2437              </p></dd>
2438<dt><span class="term">Depends On</span></dt>
2439<dd><p>
2440                <code class="computeroutput"><span class="identifier">count</span></code> <br> The
2441                lazy mean of samples depends on <code class="computeroutput"><span class="identifier">sum</span></code>
2442                <br> The lazy mean of weights depends on <code class="computeroutput"><span class="identifier">sum_of_weights</span></code>
2443                <br> The lazy mean of variates depends on <code class="computeroutput"><span class="identifier">sum_of_variates</span><span class="special">&lt;&gt;</span></code>
2444              </p></dd>
2445<dt><span class="term">Variants</span></dt>
2446<dd><p>
2447                <code class="computeroutput"><span class="identifier">mean_of_weights</span></code>
2448                <br> <code class="computeroutput"><span class="identifier">mean_of_variates</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code> <br> <code class="computeroutput"><span class="identifier">immediate_mean</span></code>
2449                <br> <code class="computeroutput"><span class="identifier">immediate_mean_of_weights</span></code>
2450                <br> <code class="computeroutput"><span class="identifier">immediate_mean_of_variates</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>
2451              </p></dd>
2452<dt><span class="term">Initialization Parameters</span></dt>
2453<dd><p>
2454                <span class="emphasis"><em>none</em></span>
2455              </p></dd>
2456<dt><span class="term">Accumulator Parameters</span></dt>
2457<dd><p>
2458                <span class="emphasis"><em>none</em></span>
2459              </p></dd>
2460<dt><span class="term">Extractor Parameters</span></dt>
2461<dd><p>
2462                <span class="emphasis"><em>none</em></span>
2463              </p></dd>
2464<dt><span class="term">Accumulator Complexity</span></dt>
2465<dd><p>
2466                O(1)
2467              </p></dd>
2468<dt><span class="term">Extractor Complexity</span></dt>
2469<dd><p>
2470                O(1)
2471              </p></dd>
2472</dl>
2473</div>
2474<p>
2475          <span class="bold"><strong>Header</strong></span>
2476        </p>
2477<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.mean_hpp" title="Header &lt;boost/accumulators/statistics/mean.hpp&gt;">boost/accumulators/statistics/mean.hpp</a></code><span class="special">&gt;</span>
2478</pre>
2479<p>
2480          <span class="bold"><strong>Example</strong></span>
2481        </p>
2482<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span>
2483    <span class="keyword">int</span>
2484  <span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span>
2485        <span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span>
2486      <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean_of_weights</span>
2487      <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;</span>
2488    <span class="special">&gt;</span>
2489  <span class="special">,</span> <span class="keyword">int</span>
2490<span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
2491
2492<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
2493<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2494<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">1u</span><span class="special">,</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
2495<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
2496<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">2.</span><span class="special">,</span> <span class="identifier">mean_of_weights</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2497<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">3.</span><span class="special">,</span> <span class="special">(</span><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">mean_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">)),</span> <span class="number">1e-5</span><span class="special">);</span>
2498
2499<span class="identifier">acc</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">4</span><span class="special">);</span>
2500<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">0.33333333333333333</span><span class="special">,</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2501<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">2u</span><span class="special">,</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
2502<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
2503<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">3.</span><span class="special">,</span> <span class="identifier">mean_of_weights</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2504<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">3.5</span><span class="special">,</span> <span class="special">(</span><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">mean_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">)),</span> <span class="number">1e-5</span><span class="special">);</span>
2505
2506<span class="identifier">acc</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">9</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">8</span><span class="special">);</span>
2507<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.33333333333333333</span><span class="special">,</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2508<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">3u</span><span class="special">,</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
2509<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">20</span><span class="special">,</span> <span class="identifier">sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
2510<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">5.</span><span class="special">,</span> <span class="identifier">mean_of_weights</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2511<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">5.</span><span class="special">,</span> <span class="special">(</span><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">mean_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">)),</span> <span class="number">1e-5</span><span class="special">);</span>
2512
2513<span class="identifier">accumulator_set</span><span class="special">&lt;</span>
2514    <span class="keyword">int</span>
2515  <span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span>
2516        <span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span><span class="special">(</span><span class="identifier">immediate</span><span class="special">)</span>
2517      <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean_of_weights</span><span class="special">(</span><span class="identifier">immediate</span><span class="special">)</span>
2518      <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">immediate</span><span class="special">)</span>
2519    <span class="special">&gt;</span>
2520  <span class="special">,</span> <span class="keyword">int</span>
2521<span class="special">&gt;</span> <span class="identifier">acc2</span><span class="special">;</span>
2522
2523<span class="identifier">acc2</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
2524<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2525<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">1u</span><span class="special">,</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">));</span>
2526<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">2.</span><span class="special">,</span> <span class="identifier">mean_of_weights</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2527<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">3.</span><span class="special">,</span> <span class="special">(</span><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">mean_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">)),</span> <span class="number">1e-5</span><span class="special">);</span>
2528
2529<span class="identifier">acc2</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">4</span><span class="special">);</span>
2530<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">0.33333333333333333</span><span class="special">,</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2531<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">2u</span><span class="special">,</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">));</span>
2532<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">3.</span><span class="special">,</span> <span class="identifier">mean_of_weights</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2533<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">3.5</span><span class="special">,</span> <span class="special">(</span><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">mean_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">)),</span> <span class="number">1e-5</span><span class="special">);</span>
2534
2535<span class="identifier">acc2</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">9</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">8</span><span class="special">);</span>
2536<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.33333333333333333</span><span class="special">,</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2537<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">3u</span><span class="special">,</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">));</span>
2538<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">5.</span><span class="special">,</span> <span class="identifier">mean_of_weights</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2539<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">5.</span><span class="special">,</span> <span class="special">(</span><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">mean_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">)),</span> <span class="number">1e-5</span><span class="special">);</span>
2540</pre>
2541<p>
2542          <span class="bold"><strong>See also</strong></span>
2543        </p>
2544<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2545<li class="listitem">
2546              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/mean_impl.html" title="Struct template mean_impl">mean_impl</a></code>
2547            </li>
2548<li class="listitem">
2549              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/immediate_mean_impl.html" title="Struct template immediate_mean_impl">immediate_mean_impl</a></code>
2550            </li>
2551<li class="listitem">
2552              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
2553            </li>
2554<li class="listitem">
2555              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum" title="sum and variants"><code class="literal">sum</code></a>
2556            </li>
2557</ul></div>
2558</div>
2559<div class="section">
2560<div class="titlepage"><div><div><h4 class="title">
2561<a name="accumulators.user_s_guide.the_statistical_accumulators_library.median"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.median" title="median and variants">median
2562        <span class="emphasis"><em>and variants</em></span></a>
2563</h4></div></div></div>
2564<p>
2565          Median estimation based on the <code class="literal">P^2</code> quantile estimator,
2566          the density estimator, or the <code class="literal">P^2</code> cumulative distribution
2567          estimator. For more implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/median_impl.html" title="Struct template median_impl">median_impl</a></code>,
2568          <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/with_density_median_impl.html" title="Struct template with_density_median_impl">with_density_median_impl</a></code>,
2569          and <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wit_1_3_2_6_3_59_1_1_22_56.html" title="Struct template with_p_square_cumulative_distribution_median_impl">with_p_square_cumulative_distribution_median_impl</a></code>.
2570        </p>
2571<p>
2572          The three median accumulators all satisfy the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">median</span></code>
2573          feature, and can all be extracted with the <code class="computeroutput"><span class="identifier">median</span><span class="special">()</span></code> extractor.
2574        </p>
2575<div class="variablelist">
2576<p class="title"><b></b></p>
2577<dl class="variablelist">
2578<dt><span class="term">Result Type</span></dt>
2579<dd>
2580<p>
2581</p>
2582<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
2583</pre>
2584<p>
2585              </p>
2586</dd>
2587<dt><span class="term">Depends On</span></dt>
2588<dd><p>
2589                <code class="computeroutput"><span class="identifier">median</span></code> depends on
2590                <code class="computeroutput"><span class="identifier">p_square_quantile_for_median</span></code>
2591                <br> <code class="computeroutput"><span class="identifier">with_density_median</span></code>
2592                depends on <code class="computeroutput"><span class="identifier">count</span></code>
2593                and <code class="computeroutput"><span class="identifier">density</span></code> <br>
2594                <code class="computeroutput"><span class="identifier">with_p_square_cumulative_distribution_median</span></code>
2595                depends on <code class="computeroutput"><span class="identifier">p_square_cumulative_distribution</span></code>
2596              </p></dd>
2597<dt><span class="term">Variants</span></dt>
2598<dd><p>
2599                <code class="computeroutput"><span class="identifier">with_density_median</span></code>
2600                <br> <code class="computeroutput"><span class="identifier">with_p_square_cumulative_distribution_median</span></code>
2601              </p></dd>
2602<dt><span class="term">Initialization Parameters</span></dt>
2603<dd><p>
2604                <code class="computeroutput"><span class="identifier">with_density_median</span></code>
2605                requires <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">density</span><span class="special">::</span><span class="identifier">cache_size</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">density</span><span class="special">::</span><span class="identifier">num_bins</span></code>
2606                <br> <code class="computeroutput"><span class="identifier">with_p_square_cumulative_distribution_median</span></code>
2607                requires <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">p_square_cumulative_distribution</span><span class="special">::</span><span class="identifier">num_cells</span></code>
2608              </p></dd>
2609<dt><span class="term">Accumulator Parameters</span></dt>
2610<dd><p>
2611                <span class="emphasis"><em>none</em></span>
2612              </p></dd>
2613<dt><span class="term">Extractor Parameters</span></dt>
2614<dd><p>
2615                <span class="emphasis"><em>none</em></span>
2616              </p></dd>
2617<dt><span class="term">Accumulator Complexity</span></dt>
2618<dd><p>
2619                TODO
2620              </p></dd>
2621<dt><span class="term">Extractor Complexity</span></dt>
2622<dd><p>
2623                TODO
2624              </p></dd>
2625</dl>
2626</div>
2627<p>
2628          <span class="bold"><strong>Header</strong></span>
2629        </p>
2630<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.median_hpp" title="Header &lt;boost/accumulators/statistics/median.hpp&gt;">boost/accumulators/statistics/median.hpp</a></code><span class="special">&gt;</span>
2631</pre>
2632<p>
2633          <span class="bold"><strong>Example</strong></span>
2634        </p>
2635<pre class="programlisting"><span class="comment">// two random number generators</span>
2636<span class="keyword">double</span> <span class="identifier">mu</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span>
2637<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
2638<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma</span><span class="special">(</span><span class="identifier">mu</span><span class="special">,</span><span class="number">1</span><span class="special">);</span>
2639<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span>
2640    <span class="identifier">normal</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma</span><span class="special">);</span>
2641
2642<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">median</span><span class="special">(</span><span class="identifier">with_p_square_quantile</span><span class="special">)</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
2643<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">median</span><span class="special">(</span><span class="identifier">with_density</span><span class="special">)</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
2644    <span class="identifier">acc_dens</span><span class="special">(</span> <span class="identifier">density_cache_size</span> <span class="special">=</span> <span class="number">10000</span><span class="special">,</span> <span class="identifier">density_num_bins</span> <span class="special">=</span> <span class="number">1000</span> <span class="special">);</span>
2645<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">median</span><span class="special">(</span><span class="identifier">with_p_square_cumulative_distribution</span><span class="special">)</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
2646    <span class="identifier">acc_cdist</span><span class="special">(</span> <span class="identifier">p_square_cumulative_distribution_num_cells</span> <span class="special">=</span> <span class="number">100</span> <span class="special">);</span>
2647
2648<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span> <span class="identifier">i</span><span class="special">&lt;</span><span class="number">100000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
2649<span class="special">{</span>
2650    <span class="keyword">double</span> <span class="identifier">sample</span> <span class="special">=</span> <span class="identifier">normal</span><span class="special">();</span>
2651    <span class="identifier">acc</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
2652    <span class="identifier">acc_dens</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
2653    <span class="identifier">acc_cdist</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
2654<span class="special">}</span>
2655
2656<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">median</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">1.</span><span class="special">);</span>
2657<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">median</span><span class="special">(</span><span class="identifier">acc_dens</span><span class="special">),</span> <span class="number">1.</span><span class="special">);</span>
2658<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">median</span><span class="special">(</span><span class="identifier">acc_cdist</span><span class="special">),</span> <span class="number">3.</span><span class="special">);</span>
2659</pre>
2660<p>
2661          <span class="bold"><strong>See also</strong></span>
2662        </p>
2663<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2664<li class="listitem">
2665              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/median_impl.html" title="Struct template median_impl">median_impl</a></code>
2666            </li>
2667<li class="listitem">
2668              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/with_density_median_impl.html" title="Struct template with_density_median_impl">with_density_median_impl</a></code>
2669            </li>
2670<li class="listitem">
2671              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wit_1_3_2_6_3_59_1_1_22_56.html" title="Struct template with_p_square_cumulative_distribution_median_impl">with_p_square_cumulative_distribution_median_impl</a></code>
2672            </li>
2673<li class="listitem">
2674              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
2675            </li>
2676<li class="listitem">
2677              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.p_square_quantile" title="p_square_quantile and variants"><code class="literal">p_square_quantile</code></a>
2678            </li>
2679<li class="listitem">
2680              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.p_square_cumulative_distribution" title="p_square_cumulative_distribution"><code class="literal">p_square_cumulative_distribution</code></a>
2681            </li>
2682</ul></div>
2683</div>
2684<div class="section">
2685<div class="titlepage"><div><div><h4 class="title">
2686<a name="accumulators.user_s_guide.the_statistical_accumulators_library.min"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.min" title="min">min</a>
2687</h4></div></div></div>
2688<p>
2689          Calculates the minimum value of all the samples.
2690        </p>
2691<div class="variablelist">
2692<p class="title"><b></b></p>
2693<dl class="variablelist">
2694<dt><span class="term">Result Type</span></dt>
2695<dd>
2696<p>
2697</p>
2698<pre class="programlisting"><em class="replaceable"><code>sample-type</code></em>
2699</pre>
2700<p>
2701              </p>
2702</dd>
2703<dt><span class="term">Depends On</span></dt>
2704<dd><p>
2705                <span class="emphasis"><em>none</em></span>
2706              </p></dd>
2707<dt><span class="term">Variants</span></dt>
2708<dd><p>
2709                <span class="emphasis"><em>none</em></span>
2710              </p></dd>
2711<dt><span class="term">Initialization Parameters</span></dt>
2712<dd><p>
2713                <span class="emphasis"><em>none</em></span>
2714              </p></dd>
2715<dt><span class="term">Accumulator Parameters</span></dt>
2716<dd><p>
2717                <span class="emphasis"><em>none</em></span>
2718              </p></dd>
2719<dt><span class="term">Extractor Parameters</span></dt>
2720<dd><p>
2721                <span class="emphasis"><em>none</em></span>
2722              </p></dd>
2723<dt><span class="term">Accumulator Complexity</span></dt>
2724<dd><p>
2725                O(1)
2726              </p></dd>
2727<dt><span class="term">Extractor Complexity</span></dt>
2728<dd><p>
2729                O(1)
2730              </p></dd>
2731</dl>
2732</div>
2733<p>
2734          <span class="bold"><strong>Header</strong></span>
2735        </p>
2736<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.min_hpp" title="Header &lt;boost/accumulators/statistics/min.hpp&gt;">boost/accumulators/statistics/min.hpp</a></code><span class="special">&gt;</span>
2737</pre>
2738<p>
2739          <span class="bold"><strong>Example</strong></span>
2740        </p>
2741<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">min</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
2742
2743<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
2744<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="special">(</span><span class="identifier">min</span><span class="special">)(</span><span class="identifier">acc</span><span class="special">));</span>
2745
2746<span class="identifier">acc</span><span class="special">(</span><span class="number">0</span><span class="special">);</span>
2747<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="special">(</span><span class="identifier">min</span><span class="special">)(</span><span class="identifier">acc</span><span class="special">));</span>
2748
2749<span class="identifier">acc</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
2750<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="special">(</span><span class="identifier">min</span><span class="special">)(</span><span class="identifier">acc</span><span class="special">));</span>
2751</pre>
2752<p>
2753          <span class="bold"><strong>See also</strong></span>
2754        </p>
2755<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
2756              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/min_impl.html" title="Struct template min_impl">min_impl</a></code>
2757            </li></ul></div>
2758</div>
2759<div class="section">
2760<div class="titlepage"><div><div><h4 class="title">
2761<a name="accumulators.user_s_guide.the_statistical_accumulators_library.moment"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.moment" title="moment">moment</a>
2762</h4></div></div></div>
2763<p>
2764          Calculates the N-th moment of the samples, which is defined as the sum
2765          of the N-th power of the samples over the count of samples.
2766        </p>
2767<div class="variablelist">
2768<p class="title"><b></b></p>
2769<dl class="variablelist">
2770<dt><span class="term">Result Type</span></dt>
2771<dd>
2772<p>
2773</p>
2774<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
2775</pre>
2776<p>
2777              </p>
2778</dd>
2779<dt><span class="term">Depends On</span></dt>
2780<dd><p>
2781                <code class="computeroutput"><span class="identifier">count</span></code>
2782              </p></dd>
2783<dt><span class="term">Variants</span></dt>
2784<dd><p>
2785                <span class="emphasis"><em>none</em></span>
2786              </p></dd>
2787<dt><span class="term">Initialization Parameters</span></dt>
2788<dd><p>
2789                <span class="emphasis"><em>none</em></span>
2790              </p></dd>
2791<dt><span class="term">Accumulator Parameters</span></dt>
2792<dd><p>
2793                <span class="emphasis"><em>none</em></span>
2794              </p></dd>
2795<dt><span class="term">Extractor Parameters</span></dt>
2796<dd><p>
2797                <span class="emphasis"><em>none</em></span>
2798              </p></dd>
2799<dt><span class="term">Accumulator Complexity</span></dt>
2800<dd><p>
2801                O(1)
2802              </p></dd>
2803<dt><span class="term">Extractor Complexity</span></dt>
2804<dd><p>
2805                O(1)
2806              </p></dd>
2807</dl>
2808</div>
2809<p>
2810          <span class="bold"><strong>Header</strong></span>
2811        </p>
2812<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.moment_hpp" title="Header &lt;boost/accumulators/statistics/moment.hpp&gt;">boost/accumulators/statistics/moment.hpp</a></code><span class="special">&gt;</span>
2813</pre>
2814<p>
2815          <span class="bold"><strong>Example</strong></span>
2816        </p>
2817<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc1</span><span class="special">;</span>
2818
2819<span class="identifier">acc1</span><span class="special">(</span><span class="number">2</span><span class="special">);</span> <span class="comment">//    4</span>
2820<span class="identifier">acc1</span><span class="special">(</span><span class="number">4</span><span class="special">);</span> <span class="comment">//   16</span>
2821<span class="identifier">acc1</span><span class="special">(</span><span class="number">5</span><span class="special">);</span> <span class="comment">// + 25</span>
2822         <span class="comment">// = 45 / 3 = 15</span>
2823
2824<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">15.</span><span class="special">,</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc1</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2825
2826<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">5</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc2</span><span class="special">;</span>
2827
2828<span class="identifier">acc2</span><span class="special">(</span><span class="number">2</span><span class="special">);</span> <span class="comment">//     32</span>
2829<span class="identifier">acc2</span><span class="special">(</span><span class="number">3</span><span class="special">);</span> <span class="comment">//    243</span>
2830<span class="identifier">acc2</span><span class="special">(</span><span class="number">4</span><span class="special">);</span> <span class="comment">//   1024</span>
2831<span class="identifier">acc2</span><span class="special">(</span><span class="number">5</span><span class="special">);</span> <span class="comment">// + 3125</span>
2832         <span class="comment">// = 4424 / 4 = 1106</span>
2833
2834<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1106.</span><span class="special">,</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">5</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
2835</pre>
2836<p>
2837          <span class="bold"><strong>See also</strong></span>
2838        </p>
2839<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2840<li class="listitem">
2841              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/moment_impl.html" title="Struct template moment_impl">moment_impl</a></code>
2842            </li>
2843<li class="listitem">
2844              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
2845            </li>
2846</ul></div>
2847</div>
2848<div class="section">
2849<div class="titlepage"><div><div><h4 class="title">
2850<a name="accumulators.user_s_guide.the_statistical_accumulators_library.p_square_cumulative_distribution"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.p_square_cumulative_distribution" title="p_square_cumulative_distribution">p_square_cumulative_distribution</a>
2851</h4></div></div></div>
2852<p>
2853          Histogram calculation of the cumulative distribution with the <code class="literal">P^2</code>
2854          algorithm. For more implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/p_s_1_3_2_6_3_59_1_1_22_19.html" title="Struct template p_square_cumulative_distribution_impl">p_square_cumulative_distribution_impl</a></code>
2855        </p>
2856<div class="variablelist">
2857<p class="title"><b></b></p>
2858<dl class="variablelist">
2859<dt><span class="term">Result Type</span></dt>
2860<dd>
2861<p>
2862</p>
2863<pre class="programlisting"><span class="identifier">iterator_range</span><span class="special">&lt;</span>
2864    <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span>
2865        <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span>
2866            <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
2867          <span class="special">,</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
2868        <span class="special">&gt;</span>
2869    <span class="special">&gt;::</span><span class="identifier">iterator</span>
2870<span class="special">&gt;</span>
2871</pre>
2872<p>
2873              </p>
2874</dd>
2875<dt><span class="term">Depends On</span></dt>
2876<dd><p>
2877                <code class="computeroutput"><span class="identifier">count</span></code>
2878              </p></dd>
2879<dt><span class="term">Variants</span></dt>
2880<dd><p>
2881                <span class="emphasis"><em>none</em></span>
2882              </p></dd>
2883<dt><span class="term">Initialization Parameters</span></dt>
2884<dd><p>
2885                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">p_square_cumulative_distribution</span><span class="special">::</span><span class="identifier">num_cells</span></code>
2886              </p></dd>
2887<dt><span class="term">Accumulator Parameters</span></dt>
2888<dd><p>
2889                <span class="emphasis"><em>none</em></span>
2890              </p></dd>
2891<dt><span class="term">Extractor Parameters</span></dt>
2892<dd><p>
2893                <span class="emphasis"><em>none</em></span>
2894              </p></dd>
2895<dt><span class="term">Accumulator Complexity</span></dt>
2896<dd><p>
2897                TODO
2898              </p></dd>
2899<dt><span class="term">Extractor Complexity</span></dt>
2900<dd><p>
2901                O(N) where N is <code class="computeroutput"><span class="identifier">num_cells</span></code>
2902              </p></dd>
2903</dl>
2904</div>
2905<p>
2906          <span class="bold"><strong>Header</strong></span>
2907        </p>
2908<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.p_square_cumul_dist_hpp" title="Header &lt;boost/accumulators/statistics/p_square_cumul_dist.hpp&gt;">boost/accumulators/statistics/p_square_cumul_dist.hpp</a></code><span class="special">&gt;</span>
2909</pre>
2910<p>
2911          <span class="bold"><strong>Example</strong></span>
2912        </p>
2913<pre class="programlisting"><span class="comment">// tolerance in %</span>
2914<span class="keyword">double</span> <span class="identifier">epsilon</span> <span class="special">=</span> <span class="number">3</span><span class="special">;</span>
2915
2916<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">p_square_cumulative_distribution</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">accumulator_t</span><span class="special">;</span>
2917
2918<span class="identifier">accumulator_t</span> <span class="identifier">acc</span><span class="special">(</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">p_square_cumulative_distribution</span><span class="special">::</span><span class="identifier">num_cells</span> <span class="special">=</span> <span class="number">100</span><span class="special">);</span>
2919
2920<span class="comment">// two random number generators</span>
2921<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
2922<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">);</span>
2923<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma</span><span class="special">);</span>
2924
2925<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span> <span class="identifier">i</span><span class="special">&lt;</span><span class="number">100000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
2926<span class="special">{</span>
2927    <span class="identifier">acc</span><span class="special">(</span><span class="identifier">normal</span><span class="special">());</span>
2928<span class="special">}</span>
2929
2930<span class="keyword">typedef</span> <span class="identifier">iterator_range</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">iterator</span> <span class="special">&gt;</span> <span class="identifier">histogram_type</span><span class="special">;</span>
2931<span class="identifier">histogram_type</span> <span class="identifier">histogram</span> <span class="special">=</span> <span class="identifier">p_square_cumulative_distribution</span><span class="special">(</span><span class="identifier">acc</span><span class="special">);</span>
2932
2933<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">histogram</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
2934<span class="special">{</span>
2935    <span class="comment">// problem with small results: epsilon is relative (in percent), not absolute!</span>
2936    <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">histogram</span><span class="special">[</span><span class="identifier">i</span><span class="special">].</span><span class="identifier">second</span> <span class="special">&gt;</span> <span class="number">0.001</span> <span class="special">)</span>
2937        <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="number">0.5</span> <span class="special">*</span> <span class="special">(</span><span class="number">1.0</span> <span class="special">+</span> <span class="identifier">erf</span><span class="special">(</span> <span class="identifier">histogram</span><span class="special">[</span><span class="identifier">i</span><span class="special">].</span><span class="identifier">first</span> <span class="special">/</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="number">2.0</span><span class="special">)</span> <span class="special">)),</span> <span class="identifier">histogram</span><span class="special">[</span><span class="identifier">i</span><span class="special">].</span><span class="identifier">second</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
2938<span class="special">}</span>
2939</pre>
2940<p>
2941          <span class="bold"><strong>See also</strong></span>
2942        </p>
2943<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2944<li class="listitem">
2945              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/p_s_1_3_2_6_3_59_1_1_22_19.html" title="Struct template p_square_cumulative_distribution_impl">p_square_cumulative_distribution_impl</a></code>
2946            </li>
2947<li class="listitem">
2948              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
2949            </li>
2950</ul></div>
2951</div>
2952<div class="section">
2953<div class="titlepage"><div><div><h4 class="title">
2954<a name="accumulators.user_s_guide.the_statistical_accumulators_library.p_square_quantile"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.p_square_quantile" title="p_square_quantile and variants">p_square_quantile
2955        <span class="emphasis"><em>and variants</em></span></a>
2956</h4></div></div></div>
2957<p>
2958          Single quantile estimation with the <code class="literal">P^2</code> algorithm. For
2959          more implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/p_square_quantile_impl.html" title="Struct template p_square_quantile_impl">p_square_quantile_impl</a></code>
2960        </p>
2961<div class="variablelist">
2962<p class="title"><b></b></p>
2963<dl class="variablelist">
2964<dt><span class="term">Result Type</span></dt>
2965<dd>
2966<p>
2967</p>
2968<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
2969</pre>
2970<p>
2971              </p>
2972</dd>
2973<dt><span class="term">Depends On</span></dt>
2974<dd><p>
2975                <code class="computeroutput"><span class="identifier">count</span></code>
2976              </p></dd>
2977<dt><span class="term">Variants</span></dt>
2978<dd><p>
2979                <code class="computeroutput"><span class="identifier">p_square_quantile_for_median</span></code>
2980              </p></dd>
2981<dt><span class="term">Initialization Parameters</span></dt>
2982<dd><p>
2983                <code class="computeroutput"><span class="identifier">quantile_probability</span></code>,
2984                which defaults to <code class="computeroutput"><span class="number">0.5</span></code>.
2985                (Note: for <code class="computeroutput"><span class="identifier">p_square_quantile_for_median</span></code>,
2986                the <code class="computeroutput"><span class="identifier">quantile_probability</span></code>
2987                parameter is ignored and is always <code class="computeroutput"><span class="number">0.5</span></code>.)
2988              </p></dd>
2989<dt><span class="term">Accumulator Parameters</span></dt>
2990<dd><p>
2991                <span class="emphasis"><em>none</em></span>
2992              </p></dd>
2993<dt><span class="term">Extractor Parameters</span></dt>
2994<dd><p>
2995                <span class="emphasis"><em>none</em></span>
2996              </p></dd>
2997<dt><span class="term">Accumulator Complexity</span></dt>
2998<dd><p>
2999                TODO
3000              </p></dd>
3001<dt><span class="term">Extractor Complexity</span></dt>
3002<dd><p>
3003                O(1)
3004              </p></dd>
3005</dl>
3006</div>
3007<p>
3008          <span class="bold"><strong>Header</strong></span>
3009        </p>
3010<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.p_square_quantile_hpp" title="Header &lt;boost/accumulators/statistics/p_square_quantile.hpp&gt;">boost/accumulators/statistics/p_square_quantile.hpp</a></code><span class="special">&gt;</span>
3011</pre>
3012<p>
3013          <span class="bold"><strong>Example</strong></span>
3014        </p>
3015<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">p_square_quantile</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">accumulator_t</span><span class="special">;</span>
3016
3017<span class="comment">// tolerance in %</span>
3018<span class="keyword">double</span> <span class="identifier">epsilon</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
3019
3020<span class="comment">// a random number generator</span>
3021<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
3022
3023<span class="identifier">accumulator_t</span> <span class="identifier">acc0</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.001</span><span class="special">);</span>
3024<span class="identifier">accumulator_t</span> <span class="identifier">acc1</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.01</span> <span class="special">);</span>
3025<span class="identifier">accumulator_t</span> <span class="identifier">acc2</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span>  <span class="special">);</span>
3026<span class="identifier">accumulator_t</span> <span class="identifier">acc3</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.25</span> <span class="special">);</span>
3027<span class="identifier">accumulator_t</span> <span class="identifier">acc4</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.5</span>  <span class="special">);</span>
3028<span class="identifier">accumulator_t</span> <span class="identifier">acc5</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.75</span> <span class="special">);</span>
3029<span class="identifier">accumulator_t</span> <span class="identifier">acc6</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span>  <span class="special">);</span>
3030<span class="identifier">accumulator_t</span> <span class="identifier">acc7</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.99</span> <span class="special">);</span>
3031<span class="identifier">accumulator_t</span> <span class="identifier">acc8</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.999</span><span class="special">);</span>
3032
3033<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span> <span class="identifier">i</span><span class="special">&lt;</span><span class="number">100000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
3034<span class="special">{</span>
3035    <span class="keyword">double</span> <span class="identifier">sample</span> <span class="special">=</span> <span class="identifier">rng</span><span class="special">();</span>
3036    <span class="identifier">acc0</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3037    <span class="identifier">acc1</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3038    <span class="identifier">acc2</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3039    <span class="identifier">acc3</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3040    <span class="identifier">acc4</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3041    <span class="identifier">acc5</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3042    <span class="identifier">acc6</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3043    <span class="identifier">acc7</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3044    <span class="identifier">acc8</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3045<span class="special">}</span>
3046
3047<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">p_square_quantile</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">),</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">15</span><span class="special">*</span><span class="identifier">epsilon</span> <span class="special">);</span>
3048<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">p_square_quantile</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">),</span> <span class="number">0.01</span> <span class="special">,</span> <span class="number">5</span><span class="special">*</span><span class="identifier">epsilon</span> <span class="special">);</span>
3049<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">p_square_quantile</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">0.1</span>  <span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
3050<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">p_square_quantile</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">),</span> <span class="number">0.25</span> <span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
3051<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">p_square_quantile</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">),</span> <span class="number">0.5</span>  <span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
3052<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">p_square_quantile</span><span class="special">(</span><span class="identifier">acc5</span><span class="special">),</span> <span class="number">0.75</span> <span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
3053<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">p_square_quantile</span><span class="special">(</span><span class="identifier">acc6</span><span class="special">),</span> <span class="number">0.9</span>  <span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
3054<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">p_square_quantile</span><span class="special">(</span><span class="identifier">acc7</span><span class="special">),</span> <span class="number">0.99</span> <span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
3055<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">p_square_quantile</span><span class="special">(</span><span class="identifier">acc8</span><span class="special">),</span> <span class="number">0.999</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
3056</pre>
3057<p>
3058          <span class="bold"><strong>See also</strong></span>
3059        </p>
3060<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
3061<li class="listitem">
3062              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/p_square_quantile_impl.html" title="Struct template p_square_quantile_impl">p_square_quantile_impl</a></code>
3063            </li>
3064<li class="listitem">
3065              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
3066            </li>
3067</ul></div>
3068</div>
3069<div class="section">
3070<div class="titlepage"><div><div><h4 class="title">
3071<a name="accumulators.user_s_guide.the_statistical_accumulators_library.peaks_over_threshold"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.peaks_over_threshold" title="peaks_over_threshold and variants">peaks_over_threshold
3072        <span class="emphasis"><em>and variants</em></span></a>
3073</h4></div></div></div>
3074<p>
3075          Peaks Over Threshold method for quantile and tail mean estimation. For
3076          implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/peaks_over_threshold_impl.html" title="Struct template peaks_over_threshold_impl">peaks_over_threshold_impl</a></code>
3077          and <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/pea_1_3_2_6_3_59_1_1_22_21.html" title="Struct template peaks_over_threshold_prob_impl">peaks_over_threshold_prob_impl</a></code>.
3078        </p>
3079<p>
3080          Both <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold_prob</span><span class="special">&lt;&gt;</span></code>
3081          satisfy the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">abstract_peaks_over_threshold</span></code> feature,
3082          and can be extracted with the <code class="computeroutput"><span class="identifier">peaks_over_threshold</span><span class="special">()</span></code> extractor. The result is a 3-tuple representing
3083          the fit parameters <code class="computeroutput"><span class="identifier">u_bar</span></code>,
3084          <code class="computeroutput"><span class="identifier">beta_bar</span></code> and <code class="computeroutput"><span class="identifier">xi_hat</span></code>.
3085        </p>
3086<div class="variablelist">
3087<p class="title"><b></b></p>
3088<dl class="variablelist">
3089<dt><span class="term">Result Type</span></dt>
3090<dd>
3091<p>
3092</p>
3093<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tuple</span><span class="special">&lt;</span>
3094    <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span> <span class="comment">// u_bar</span>
3095  <span class="special">,</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span> <span class="comment">// beta_bar</span>
3096  <span class="special">,</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span> <span class="comment">// xi_hat</span>
3097<span class="special">&gt;</span>
3098</pre>
3099<p>
3100              </p>
3101</dd>
3102<dt><span class="term">Depends On</span></dt>
3103<dd><p>
3104                <code class="computeroutput"><span class="identifier">count</span></code> <br> In addition,
3105                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold_prob</span><span class="special">&lt;&gt;</span></code>
3106                depends on <code class="computeroutput"><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3107              </p></dd>
3108<dt><span class="term">Variants</span></dt>
3109<dd><p>
3110                <code class="computeroutput"><span class="identifier">peaks_over_threshold_prob</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3111              </p></dd>
3112<dt><span class="term">Initialization Parameters</span></dt>
3113<dd><p>
3114                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold</span><span class="special">::</span><span class="identifier">threshold_value</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold_prob</span><span class="special">::</span><span class="identifier">threshold_probability</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
3115              </p></dd>
3116<dt><span class="term">Accumulator Parameters</span></dt>
3117<dd><p>
3118                <span class="emphasis"><em>none</em></span>
3119              </p></dd>
3120<dt><span class="term">Extractor Parameters</span></dt>
3121<dd><p>
3122                <span class="emphasis"><em>none</em></span>
3123              </p></dd>
3124<dt><span class="term">Accumulator Complexity</span></dt>
3125<dd><p>
3126                TODO
3127              </p></dd>
3128<dt><span class="term">Extractor Complexity</span></dt>
3129<dd><p>
3130                TODO
3131              </p></dd>
3132</dl>
3133</div>
3134<p>
3135          <span class="bold"><strong>Header</strong></span>
3136        </p>
3137<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.peaks_over_threshold_hpp" title="Header &lt;boost/accumulators/statistics/peaks_over_threshold.hpp&gt;">boost/accumulators/statistics/peaks_over_threshold.hpp</a></code><span class="special">&gt;</span>
3138</pre>
3139<p>
3140          <span class="bold"><strong>Example</strong></span>
3141        </p>
3142<p>
3143          See example for <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.pot_quantile" title="pot_quantile and variants"><code class="literal">pot_quantile</code></a>.
3144        </p>
3145<p>
3146          <span class="bold"><strong>See also</strong></span>
3147        </p>
3148<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
3149<li class="listitem">
3150              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/peaks_over_threshold_impl.html" title="Struct template peaks_over_threshold_impl">peaks_over_threshold_impl</a></code>
3151            </li>
3152<li class="listitem">
3153              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/pea_1_3_2_6_3_59_1_1_22_21.html" title="Struct template peaks_over_threshold_prob_impl">peaks_over_threshold_prob_impl</a></code>
3154            </li>
3155<li class="listitem">
3156              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
3157            </li>
3158<li class="listitem">
3159              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail" title="tail"><code class="literal">tail</code></a>
3160            </li>
3161<li class="listitem">
3162              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.pot_quantile" title="pot_quantile and variants"><code class="literal">pot_quantile</code></a>
3163            </li>
3164<li class="listitem">
3165              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.pot_tail_mean" title="pot_tail_mean"><code class="literal">pot_tail_mean</code></a>
3166            </li>
3167</ul></div>
3168</div>
3169<div class="section">
3170<div class="titlepage"><div><div><h4 class="title">
3171<a name="accumulators.user_s_guide.the_statistical_accumulators_library.pot_quantile"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.pot_quantile" title="pot_quantile and variants">pot_quantile
3172        <span class="emphasis"><em>and variants</em></span></a>
3173</h4></div></div></div>
3174<p>
3175          Quantile estimation based on Peaks over Threshold method (for both left
3176          and right tails). For implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/pot_quantile_impl.html" title="Struct template pot_quantile_impl">pot_quantile_impl</a></code>.
3177        </p>
3178<p>
3179          Both <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">pot_quantile</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">pot_quantile_prob</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3180          satisfy the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">quantile</span></code> feature and can be extracted
3181          using the <code class="computeroutput"><span class="identifier">quantile</span><span class="special">()</span></code>
3182          extractor.
3183        </p>
3184<div class="variablelist">
3185<p class="title"><b></b></p>
3186<dl class="variablelist">
3187<dt><span class="term">Result Type</span></dt>
3188<dd>
3189<p>
3190</p>
3191<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
3192</pre>
3193<p>
3194              </p>
3195</dd>
3196<dt><span class="term">Depends On</span></dt>
3197<dd><p>
3198                <code class="computeroutput"><span class="identifier">pot_quantile</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code> depends on <code class="computeroutput"><span class="identifier">peaks_over_threshold</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3199                <br> <code class="computeroutput"><span class="identifier">pot_quantile_prob</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3200                depends on <code class="computeroutput"><span class="identifier">peaks_over_threshold_prob</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3201              </p></dd>
3202<dt><span class="term">Variants</span></dt>
3203<dd><p>
3204                <code class="computeroutput"><span class="identifier">pot_quantile_prob</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3205              </p></dd>
3206<dt><span class="term">Initialization Parameters</span></dt>
3207<dd><p>
3208                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold</span><span class="special">::</span><span class="identifier">threshold_value</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold_prob</span><span class="special">::</span><span class="identifier">threshold_probability</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
3209              </p></dd>
3210<dt><span class="term">Accumulator Parameters</span></dt>
3211<dd><p>
3212                <span class="emphasis"><em>none</em></span>
3213              </p></dd>
3214<dt><span class="term">Extractor Parameters</span></dt>
3215<dd><p>
3216                <code class="computeroutput"><span class="identifier">quantile_probability</span></code>
3217              </p></dd>
3218<dt><span class="term">Accumulator Complexity</span></dt>
3219<dd><p>
3220                TODO
3221              </p></dd>
3222<dt><span class="term">Extractor Complexity</span></dt>
3223<dd><p>
3224                TODO
3225              </p></dd>
3226</dl>
3227</div>
3228<p>
3229          <span class="bold"><strong>Header</strong></span>
3230        </p>
3231<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.pot_quantile_hpp" title="Header &lt;boost/accumulators/statistics/pot_quantile.hpp&gt;">boost/accumulators/statistics/pot_quantile.hpp</a></code><span class="special">&gt;</span>
3232</pre>
3233<p>
3234          <span class="bold"><strong>Example</strong></span>
3235        </p>
3236<pre class="programlisting"><span class="comment">// tolerance in %</span>
3237<span class="keyword">double</span> <span class="identifier">epsilon</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span>
3238
3239<span class="keyword">double</span> <span class="identifier">alpha</span> <span class="special">=</span> <span class="number">0.999</span><span class="special">;</span>
3240<span class="keyword">double</span> <span class="identifier">threshold_probability</span> <span class="special">=</span> <span class="number">0.99</span><span class="special">;</span>
3241<span class="keyword">double</span> <span class="identifier">threshold</span> <span class="special">=</span> <span class="number">3.</span><span class="special">;</span>
3242
3243<span class="comment">// two random number generators</span>
3244<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
3245<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">);</span>
3246<span class="identifier">boost</span><span class="special">::</span><span class="identifier">exponential_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">lambda</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
3247<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma</span><span class="special">);</span>
3248<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">exponential_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">exponential</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">lambda</span><span class="special">);</span>
3249
3250<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">pot_quantile</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;(</span><span class="identifier">with_threshold_value</span><span class="special">)&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc1</span><span class="special">(</span>
3251    <span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold</span><span class="special">::</span><span class="identifier">threshold_value</span> <span class="special">=</span> <span class="identifier">threshold</span>
3252<span class="special">);</span>
3253<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">pot_quantile</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;(</span><span class="identifier">with_threshold_probability</span><span class="special">)&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc2</span><span class="special">(</span>
3254    <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;::</span><span class="identifier">cache_size</span> <span class="special">=</span> <span class="number">2000</span>
3255  <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold_prob</span><span class="special">::</span><span class="identifier">threshold_probability</span> <span class="special">=</span> <span class="identifier">threshold_probability</span>
3256<span class="special">);</span>
3257
3258<span class="identifier">threshold_probability</span> <span class="special">=</span> <span class="number">0.995</span><span class="special">;</span>
3259<span class="identifier">threshold</span> <span class="special">=</span> <span class="number">5.</span><span class="special">;</span>
3260
3261<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">pot_quantile</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;(</span><span class="identifier">with_threshold_value</span><span class="special">)&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc3</span><span class="special">(</span>
3262    <span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold</span><span class="special">::</span><span class="identifier">threshold_value</span> <span class="special">=</span> <span class="identifier">threshold</span>
3263<span class="special">);</span>
3264<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">pot_quantile</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;(</span><span class="identifier">with_threshold_probability</span><span class="special">)&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc4</span><span class="special">(</span>
3265    <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;::</span><span class="identifier">cache_size</span> <span class="special">=</span> <span class="number">2000</span>
3266  <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold_prob</span><span class="special">::</span><span class="identifier">threshold_probability</span> <span class="special">=</span> <span class="identifier">threshold_probability</span>
3267<span class="special">);</span>
3268
3269<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">100000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
3270<span class="special">{</span>
3271    <span class="keyword">double</span> <span class="identifier">sample</span> <span class="special">=</span> <span class="identifier">normal</span><span class="special">();</span>
3272    <span class="identifier">acc1</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3273    <span class="identifier">acc2</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3274<span class="special">}</span>
3275
3276<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">100000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
3277<span class="special">{</span>
3278    <span class="keyword">double</span> <span class="identifier">sample</span> <span class="special">=</span> <span class="identifier">exponential</span><span class="special">();</span>
3279    <span class="identifier">acc3</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3280    <span class="identifier">acc4</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
3281<span class="special">}</span>
3282
3283<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="identifier">alpha</span><span class="special">),</span> <span class="number">3.090232</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
3284<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="identifier">alpha</span><span class="special">),</span> <span class="number">3.090232</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
3285
3286<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="identifier">alpha</span><span class="special">),</span> <span class="number">6.908</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
3287<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="identifier">alpha</span><span class="special">),</span> <span class="number">6.908</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
3288</pre>
3289<p>
3290          <span class="bold"><strong>See also</strong></span>
3291        </p>
3292<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
3293<li class="listitem">
3294              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/pot_quantile_impl.html" title="Struct template pot_quantile_impl">pot_quantile_impl</a></code>
3295            </li>
3296<li class="listitem">
3297              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.peaks_over_threshold" title="peaks_over_threshold and variants"><code class="literal">peaks_over_threshold</code></a>
3298            </li>
3299</ul></div>
3300</div>
3301<div class="section">
3302<div class="titlepage"><div><div><h4 class="title">
3303<a name="accumulators.user_s_guide.the_statistical_accumulators_library.pot_tail_mean"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.pot_tail_mean" title="pot_tail_mean">pot_tail_mean</a>
3304</h4></div></div></div>
3305<p>
3306          Estimation of the (coherent) tail mean based on the peaks over threshold
3307          method (for both left and right tails). For implementation details, see
3308          <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/pot_tail_mean_impl.html" title="Struct template pot_tail_mean_impl">pot_tail_mean_impl</a></code>.
3309        </p>
3310<p>
3311          Both <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">pot_tail_mean</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">pot_tail_mean_prob</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3312          satisfy the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_mean</span></code> feature and can be extracted
3313          using the <code class="computeroutput"><span class="identifier">tail_mean</span><span class="special">()</span></code>
3314          extractor.
3315        </p>
3316<div class="variablelist">
3317<p class="title"><b></b></p>
3318<dl class="variablelist">
3319<dt><span class="term">Result Type</span></dt>
3320<dd>
3321<p>
3322</p>
3323<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
3324</pre>
3325<p>
3326              </p>
3327</dd>
3328<dt><span class="term">Depends On</span></dt>
3329<dd><p>
3330                <code class="computeroutput"><span class="identifier">pot_tail_mean</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code> depends on <code class="computeroutput"><span class="identifier">peaks_over_threshold</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3331                and <code class="computeroutput"><span class="identifier">pot_quantile</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3332                <br> <code class="computeroutput"><span class="identifier">pot_tail_mean_prob</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3333                depends on <code class="computeroutput"><span class="identifier">peaks_over_threshold_prob</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3334                and <code class="computeroutput"><span class="identifier">pot_quantile_prob</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3335              </p></dd>
3336<dt><span class="term">Variants</span></dt>
3337<dd><p>
3338                <code class="computeroutput"><span class="identifier">pot_tail_mean_prob</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
3339              </p></dd>
3340<dt><span class="term">Initialization Parameters</span></dt>
3341<dd><p>
3342                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold</span><span class="special">::</span><span class="identifier">threshold_value</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold_prob</span><span class="special">::</span><span class="identifier">threshold_probability</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
3343              </p></dd>
3344<dt><span class="term">Accumulator Parameters</span></dt>
3345<dd><p>
3346                <span class="emphasis"><em>none</em></span>
3347              </p></dd>
3348<dt><span class="term">Extractor Parameters</span></dt>
3349<dd><p>
3350                <code class="computeroutput"><span class="identifier">quantile_probability</span></code>
3351              </p></dd>
3352<dt><span class="term">Accumulator Complexity</span></dt>
3353<dd><p>
3354                TODO
3355              </p></dd>
3356<dt><span class="term">Extractor Complexity</span></dt>
3357<dd><p>
3358                TODO
3359              </p></dd>
3360</dl>
3361</div>
3362<p>
3363          <span class="bold"><strong>Header</strong></span>
3364        </p>
3365<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.pot_tail_mean_hpp" title="Header &lt;boost/accumulators/statistics/pot_tail_mean.hpp&gt;">boost/accumulators/statistics/pot_tail_mean.hpp</a></code><span class="special">&gt;</span>
3366</pre>
3367<p>
3368          <span class="bold"><strong>Example</strong></span>
3369        </p>
3370<pre class="programlisting"><span class="comment">// TODO</span>
3371</pre>
3372<p>
3373          <span class="bold"><strong>See also</strong></span>
3374        </p>
3375<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
3376<li class="listitem">
3377              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/pot_tail_mean_impl.html" title="Struct template pot_tail_mean_impl">pot_tail_mean_impl</a></code>
3378            </li>
3379<li class="listitem">
3380              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.peaks_over_threshold" title="peaks_over_threshold and variants"><code class="literal">peaks_over_threshold</code></a>
3381            </li>
3382<li class="listitem">
3383              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.pot_quantile" title="pot_quantile and variants"><code class="literal">pot_quantile</code></a>
3384            </li>
3385</ul></div>
3386</div>
3387<div class="section">
3388<div class="titlepage"><div><div><h4 class="title">
3389<a name="accumulators.user_s_guide.the_statistical_accumulators_library.rolling_count"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_count" title="rolling_count">rolling_count</a>
3390</h4></div></div></div>
3391<p>
3392          The rolling count is the current number of elements in the rolling window.
3393        </p>
3394<div class="variablelist">
3395<p class="title"><b></b></p>
3396<dl class="variablelist">
3397<dt><span class="term">Result Type</span></dt>
3398<dd>
3399<p>
3400</p>
3401<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></pre>
3402<p>
3403              </p>
3404</dd>
3405<dt><span class="term">Depends On</span></dt>
3406<dd><p>
3407                <code class="computeroutput"><span class="identifier">rolling_window_plus1</span></code>
3408              </p></dd>
3409<dt><span class="term">Variants</span></dt>
3410<dd><p>
3411                <span class="emphasis"><em>none</em></span>
3412              </p></dd>
3413<dt><span class="term">Initialization Parameters</span></dt>
3414<dd><p>
3415                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_window</span><span class="special">::</span><span class="identifier">window_size</span></code>
3416              </p></dd>
3417<dt><span class="term">Accumulator Parameters</span></dt>
3418<dd><p>
3419                <span class="emphasis"><em>none</em></span>
3420              </p></dd>
3421<dt><span class="term">Extractor Parameters</span></dt>
3422<dd><p>
3423                <span class="emphasis"><em>none</em></span>
3424              </p></dd>
3425<dt><span class="term">Accumulator Complexity</span></dt>
3426<dd><p>
3427                O(1)
3428              </p></dd>
3429<dt><span class="term">Extractor Complexity</span></dt>
3430<dd><p>
3431                O(1)
3432              </p></dd>
3433</dl>
3434</div>
3435<p>
3436          <span class="bold"><strong>Header</strong></span>
3437        </p>
3438<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.rolling_count_hpp" title="Header &lt;boost/accumulators/statistics/rolling_count.hpp&gt;">boost/accumulators/statistics/rolling_count.hpp</a></code><span class="special">&gt;</span>
3439</pre>
3440<p>
3441          <span class="bold"><strong>Example</strong></span>
3442        </p>
3443<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_count</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">(</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_window</span><span class="special">::</span><span class="identifier">window_size</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
3444
3445<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">0u</span><span class="special">,</span> <span class="identifier">rolling_count</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
3446
3447<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
3448<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">1u</span><span class="special">,</span> <span class="identifier">rolling_count</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
3449
3450<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
3451<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">2u</span><span class="special">,</span> <span class="identifier">rolling_count</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
3452
3453<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
3454<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">3u</span><span class="special">,</span> <span class="identifier">rolling_count</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
3455
3456<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
3457<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">3u</span><span class="special">,</span> <span class="identifier">rolling_count</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
3458
3459<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
3460<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">3u</span><span class="special">,</span> <span class="identifier">rolling_count</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
3461</pre>
3462<p>
3463          <span class="bold"><strong>See also</strong></span>
3464        </p>
3465<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
3466              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/rolling_count_impl.html" title="Struct template rolling_count_impl">rolling_count_impl</a></code>
3467            </li></ul></div>
3468</div>
3469<div class="section">
3470<div class="titlepage"><div><div><h4 class="title">
3471<a name="accumulators.user_s_guide.the_statistical_accumulators_library.rolling_sum"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_sum" title="rolling_sum">rolling_sum</a>
3472</h4></div></div></div>
3473<p>
3474          The rolling sum is the sum of the last <span class="emphasis"><em>N</em></span> samples.
3475        </p>
3476<div class="variablelist">
3477<p class="title"><b></b></p>
3478<dl class="variablelist">
3479<dt><span class="term">Result Type</span></dt>
3480<dd>
3481<p>
3482</p>
3483<pre class="programlisting"><em class="replaceable"><code>sample-type</code></em></pre>
3484<p>
3485              </p>
3486</dd>
3487<dt><span class="term">Depends On</span></dt>
3488<dd><p>
3489                <code class="computeroutput"><span class="identifier">rolling_window_plus1</span></code>
3490              </p></dd>
3491<dt><span class="term">Variants</span></dt>
3492<dd><p>
3493                <span class="emphasis"><em>none</em></span>
3494              </p></dd>
3495<dt><span class="term">Initialization Parameters</span></dt>
3496<dd><p>
3497                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_window</span><span class="special">::</span><span class="identifier">window_size</span></code>
3498              </p></dd>
3499<dt><span class="term">Accumulator Parameters</span></dt>
3500<dd><p>
3501                <span class="emphasis"><em>none</em></span>
3502              </p></dd>
3503<dt><span class="term">Extractor Parameters</span></dt>
3504<dd><p>
3505                <span class="emphasis"><em>none</em></span>
3506              </p></dd>
3507<dt><span class="term">Accumulator Complexity</span></dt>
3508<dd><p>
3509                O(1)
3510              </p></dd>
3511<dt><span class="term">Extractor Complexity</span></dt>
3512<dd><p>
3513                O(1)
3514              </p></dd>
3515</dl>
3516</div>
3517<p>
3518          <span class="bold"><strong>Header</strong></span>
3519        </p>
3520<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.rolling_sum_hpp" title="Header &lt;boost/accumulators/statistics/rolling_sum.hpp&gt;">boost/accumulators/statistics/rolling_sum.hpp</a></code><span class="special">&gt;</span>
3521</pre>
3522<p>
3523          <span class="bold"><strong>Example</strong></span>
3524        </p>
3525<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_sum</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">(</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_window</span><span class="special">::</span><span class="identifier">window_size</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
3526
3527<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="identifier">rolling_sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
3528
3529<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
3530<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">rolling_sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
3531
3532<span class="identifier">acc</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
3533<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="identifier">rolling_sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
3534
3535<span class="identifier">acc</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
3536<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">6</span><span class="special">,</span> <span class="identifier">rolling_sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
3537
3538<span class="identifier">acc</span><span class="special">(</span><span class="number">4</span><span class="special">);</span>
3539<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">9</span><span class="special">,</span> <span class="identifier">rolling_sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
3540
3541<span class="identifier">acc</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
3542<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">12</span><span class="special">,</span> <span class="identifier">rolling_sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
3543</pre>
3544<p>
3545          <span class="bold"><strong>See also</strong></span>
3546        </p>
3547<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
3548              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/rolling_sum_impl.html" title="Struct template rolling_sum_impl">rolling_sum_impl</a></code>
3549            </li></ul></div>
3550</div>
3551<div class="section">
3552<div class="titlepage"><div><div><h4 class="title">
3553<a name="accumulators.user_s_guide.the_statistical_accumulators_library.rolling_mean"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_mean" title="rolling_mean">rolling_mean</a>
3554</h4></div></div></div>
3555<p>
3556          The rolling mean is the mean over the last <span class="emphasis"><em>N</em></span> samples.
3557          It is computed by dividing the rolling sum by the rolling count.
3558        </p>
3559<p>
3560          Lazy or iterative calculation of the mean over the last <span class="emphasis"><em>N</em></span>
3561          samples. The lazy calculation is associated with the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">lazy_rolling_mean</span></code>
3562          feature, and the iterative calculation (which is the default) with the
3563          <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">immediate_rolling_mean</span></code> feature. Both
3564          can be extracted using the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_mean</span><span class="special">()</span></code> extractor. For more implementation details,
3565          see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/lazy_rolling_mean_impl.html" title="Struct template lazy_rolling_mean_impl">lazy_rolling_mean_impl</a></code>
3566          and <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/immed_1_3_2_6_3_23_1_1_6_1.html" title="Struct template immediate_rolling_mean_impl">immediate_rolling_mean_impl</a></code>
3567        </p>
3568<div class="variablelist">
3569<p class="title"><b></b></p>
3570<dl class="variablelist">
3571<dt><span class="term">Result Type</span></dt>
3572<dd>
3573<p>
3574</p>
3575<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
3576</pre>
3577<p>
3578              </p>
3579</dd>
3580<dt><span class="term">Depends On</span></dt>
3581<dd><p>
3582                <code class="computeroutput"><span class="identifier">lazy_rolling_mean</span></code>
3583                depends on <code class="computeroutput"><span class="identifier">rolling_sum</span></code>
3584                and <code class="computeroutput"><span class="identifier">rolling_count</span></code>
3585                <br> <code class="computeroutput"><span class="identifier">immediate_rolling_mean</span></code>
3586                depends on <code class="computeroutput"><span class="identifier">rolling_count</span></code>
3587              </p></dd>
3588<dt><span class="term">Variants</span></dt>
3589<dd><p>
3590                <code class="computeroutput"><span class="identifier">lazy_rolling_mean</span></code>
3591                (a.k.a. <code class="computeroutput"><span class="identifier">rolling_mean</span><span class="special">(</span><span class="identifier">lazy</span><span class="special">))</span></code> <br> <code class="computeroutput"><span class="identifier">immediate_rolling_mean</span></code>
3592                (a.k.a. <code class="computeroutput"><span class="identifier">rolling_mean</span><span class="special">(</span><span class="identifier">immediate</span><span class="special">)</span></code>)
3593              </p></dd>
3594<dt><span class="term">Initialization Parameters</span></dt>
3595<dd><p>
3596                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_window</span><span class="special">::</span><span class="identifier">window_size</span></code>
3597              </p></dd>
3598<dt><span class="term">Accumulator Parameters</span></dt>
3599<dd><p>
3600                <span class="emphasis"><em>none</em></span>
3601              </p></dd>
3602<dt><span class="term">Extractor Parameters</span></dt>
3603<dd><p>
3604                <span class="emphasis"><em>none</em></span>
3605              </p></dd>
3606<dt><span class="term">Accumulator Complexity</span></dt>
3607<dd><p>
3608                O(1)
3609              </p></dd>
3610<dt><span class="term">Extractor Complexity</span></dt>
3611<dd><p>
3612                O(1)
3613              </p></dd>
3614</dl>
3615</div>
3616<p>
3617          <span class="bold"><strong>Header</strong></span>
3618        </p>
3619<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.rolling_mean_hpp" title="Header &lt;boost/accumulators/statistics/rolling_mean.hpp&gt;">boost/accumulators/statistics/rolling_mean.hpp</a></code><span class="special">&gt;</span>
3620</pre>
3621<p>
3622          <span class="bold"><strong>Example</strong></span>
3623        </p>
3624<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_mean</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">(</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_window</span><span class="special">::</span><span class="identifier">window_size</span> <span class="special">=</span> <span class="number">5</span><span class="special">);</span>
3625
3626<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
3627<span class="identifier">acc</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
3628<span class="identifier">acc</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
3629
3630<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">rolling_mean</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">2.0</span><span class="special">,</span> <span class="number">1e-6</span> <span class="special">);</span>
3631
3632<span class="identifier">acc</span><span class="special">(</span><span class="number">4</span><span class="special">);</span>
3633<span class="identifier">acc</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
3634<span class="identifier">acc</span><span class="special">(</span><span class="number">6</span><span class="special">);</span>
3635<span class="identifier">acc</span><span class="special">(</span><span class="number">7</span><span class="special">);</span>
3636
3637<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">rolling_mean</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">5.0</span><span class="special">,</span> <span class="number">1e-6</span> <span class="special">);</span>
3638</pre>
3639<p>
3640          <span class="bold"><strong>See also</strong></span>
3641        </p>
3642<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
3643<li class="listitem">
3644              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/lazy_rolling_mean_impl.html" title="Struct template lazy_rolling_mean_impl">lazy_rolling_mean_impl</a></code>
3645            </li>
3646<li class="listitem">
3647              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/immed_1_3_2_6_3_23_1_1_6_1.html" title="Struct template immediate_rolling_mean_impl">immediate_rolling_mean_impl</a></code>
3648            </li>
3649<li class="listitem">
3650              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_count" title="rolling_count"><code class="literal">rolling_count</code></a>
3651            </li>
3652<li class="listitem">
3653              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_sum" title="rolling_sum"><code class="literal">rolling_sum</code></a>
3654            </li>
3655</ul></div>
3656</div>
3657<div class="section">
3658<div class="titlepage"><div><div><h4 class="title">
3659<a name="accumulators.user_s_guide.the_statistical_accumulators_library.rolling_moment"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_moment" title="rolling_moment">rolling_moment</a>
3660</h4></div></div></div>
3661<p>
3662          rolling_moment&lt;M&gt; calculates the <span class="emphasis"><em>M</em></span>-th moment
3663          of the samples, which is defined as the sum of the <span class="emphasis"><em>M</em></span>-th
3664          power of the samples over the count of samples, over the last <span class="emphasis"><em>N</em></span>
3665          samples.
3666        </p>
3667<div class="variablelist">
3668<p class="title"><b></b></p>
3669<dl class="variablelist">
3670<dt><span class="term">Result Type</span></dt>
3671<dd>
3672<p>
3673</p>
3674<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
3675</pre>
3676<p>
3677              </p>
3678</dd>
3679<dt><span class="term">Depends On</span></dt>
3680<dd><p>
3681                <span class="emphasis"><em>none</em></span>
3682              </p></dd>
3683<dt><span class="term">Variants</span></dt>
3684<dd><p>
3685                <span class="emphasis"><em>none</em></span>
3686              </p></dd>
3687<dt><span class="term">Initialization Parameters</span></dt>
3688<dd><p>
3689                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_window</span><span class="special">::</span><span class="identifier">window_size</span></code>
3690              </p></dd>
3691<dt><span class="term">Accumulator Parameters</span></dt>
3692<dd><p>
3693                <span class="emphasis"><em>none</em></span>
3694              </p></dd>
3695<dt><span class="term">Extractor Parameters</span></dt>
3696<dd><p>
3697                <span class="emphasis"><em>none</em></span>
3698              </p></dd>
3699<dt><span class="term">Accumulator Complexity</span></dt>
3700<dd><p>
3701                O(1)
3702              </p></dd>
3703<dt><span class="term">Extractor Complexity</span></dt>
3704<dd><p>
3705                O(1)
3706              </p></dd>
3707</dl>
3708</div>
3709<p>
3710          <span class="bold"><strong>Header</strong></span>
3711        </p>
3712<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.rolling_moment_hpp" title="Header &lt;boost/accumulators/statistics/rolling_moment.hpp&gt;">boost/accumulators/statistics/rolling_moment.hpp</a></code><span class="special">&gt;</span>
3713</pre>
3714<p>
3715          <span class="bold"><strong>Example</strong></span>
3716        </p>
3717<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">(</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_window</span><span class="special">::</span><span class="identifier">window_size</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
3718
3719<span class="identifier">acc</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
3720<span class="identifier">acc</span><span class="special">(</span><span class="number">4</span><span class="special">);</span>
3721
3722<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">rolling_moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">(</span><span class="number">4.0</span> <span class="special">+</span> <span class="number">16.0</span><span class="special">)/</span><span class="number">2</span><span class="special">,</span> <span class="number">1e-5</span> <span class="special">);</span>
3723
3724<span class="identifier">acc</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
3725<span class="identifier">acc</span><span class="special">(</span><span class="number">6</span><span class="special">);</span>
3726
3727<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">rolling_moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">(</span><span class="number">16.0</span> <span class="special">+</span> <span class="number">25.0</span> <span class="special">+</span> <span class="number">36.0</span><span class="special">)/</span><span class="number">3</span><span class="special">,</span> <span class="number">1e-5</span> <span class="special">);</span>
3728</pre>
3729<p>
3730          <span class="bold"><strong>See also</strong></span>
3731        </p>
3732<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
3733              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/rolling_moment_impl.html" title="Struct template rolling_moment_impl">rolling_moment_impl</a></code>
3734            </li></ul></div>
3735</div>
3736<div class="section">
3737<div class="titlepage"><div><div><h4 class="title">
3738<a name="accumulators.user_s_guide.the_statistical_accumulators_library.rolling_variance"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_variance" title="rolling_variance">rolling_variance</a>
3739</h4></div></div></div>
3740<p>
3741          Lazy or iterative calculation of the variance over the last <span class="emphasis"><em>N</em></span>
3742          samples. The lazy calculation is associated with the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">lazy_rolling_variance</span></code>
3743          feature, and the iterative calculation with the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">immediate_rolling_variance</span></code>
3744          feature. Both can be extracted using the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_variance</span><span class="special">()</span></code> extractor. For more implementation details,
3745          see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/lazy_rolling_variance_impl.html" title="Struct template lazy_rolling_variance_impl">lazy_rolling_variance_impl</a></code>
3746          and <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/immed_1_3_2_6_3_26_1_1_6_1.html" title="Struct template immediate_rolling_variance_impl">immediate_rolling_variance_impl</a></code>
3747        </p>
3748<div class="variablelist">
3749<p class="title"><b></b></p>
3750<dl class="variablelist">
3751<dt><span class="term">Result Type</span></dt>
3752<dd>
3753<p>
3754</p>
3755<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
3756</pre>
3757<p>
3758              </p>
3759</dd>
3760<dt><span class="term">Depends On</span></dt>
3761<dd><p>
3762                <code class="computeroutput"><span class="identifier">lazy_rolling_variance</span></code>
3763                depends on <code class="computeroutput"><span class="identifier">rolling_moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span></code>, <code class="computeroutput"><span class="identifier">rolling_count</span></code>
3764                and <code class="computeroutput"><span class="identifier">rolling_mean</span></code>
3765                <br> <code class="computeroutput"><span class="identifier">immediate_rolling_variance</span></code>
3766                depends on <code class="computeroutput"><span class="identifier">rolling_count</span></code>
3767                and <code class="computeroutput"><span class="identifier">immediate_rolling_mean</span></code>
3768              </p></dd>
3769<dt><span class="term">Variants</span></dt>
3770<dd><p>
3771                <code class="computeroutput"><span class="identifier">lazy_rolling_variance</span></code>
3772                (a.k.a. <code class="computeroutput"><span class="identifier">rolling_variance</span><span class="special">(</span><span class="identifier">lazy</span><span class="special">))</span></code> <br> <code class="computeroutput"><span class="identifier">immediate_rolling_variance</span></code>
3773                (a.k.a. <code class="computeroutput"><span class="identifier">rolling_variance</span><span class="special">(</span><span class="identifier">immediate</span><span class="special">)</span></code>)
3774              </p></dd>
3775<dt><span class="term">Initialization Parameters</span></dt>
3776<dd><p>
3777                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_window</span><span class="special">::</span><span class="identifier">window_size</span></code>
3778              </p></dd>
3779<dt><span class="term">Accumulator Parameters</span></dt>
3780<dd><p>
3781                <span class="emphasis"><em>none</em></span>
3782              </p></dd>
3783<dt><span class="term">Extractor Parameters</span></dt>
3784<dd><p>
3785                <span class="emphasis"><em>none</em></span>
3786              </p></dd>
3787<dt><span class="term">Accumulator Complexity</span></dt>
3788<dd><p>
3789                O(1)
3790              </p></dd>
3791<dt><span class="term">Extractor Complexity</span></dt>
3792<dd><p>
3793                O(1)
3794              </p></dd>
3795</dl>
3796</div>
3797<p>
3798          <span class="bold"><strong>Header</strong></span>
3799        </p>
3800<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.rolling_variance_hpp" title="Header &lt;boost/accumulators/statistics/rolling_variance.hpp&gt;">boost/accumulators/statistics/rolling_variance.hpp</a></code><span class="special">&gt;</span>
3801</pre>
3802<p>
3803          <span class="bold"><strong>Example</strong></span>
3804        </p>
3805<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_variance</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">(</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">rolling_window</span><span class="special">::</span><span class="identifier">window_size</span> <span class="special">=</span> <span class="number">4</span><span class="special">);</span>
3806
3807<span class="identifier">acc</span><span class="special">(</span><span class="number">1.2</span><span class="special">);</span>
3808
3809<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">rolling_variance</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">0.0</span><span class="special">,</span> <span class="number">1e-10</span> <span class="special">);</span> <span class="comment">// variance is not defined for a single sample</span>
3810
3811<span class="identifier">acc</span><span class="special">(</span><span class="number">2.3</span><span class="special">);</span>
3812<span class="identifier">acc</span><span class="special">(</span><span class="number">3.4</span><span class="special">);</span>
3813
3814<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">rolling_variance</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">1.21</span><span class="special">,</span> <span class="number">1e-10</span> <span class="special">);</span> <span class="comment">// variance over samples 1-3</span>
3815
3816<span class="identifier">acc</span><span class="special">(</span><span class="number">4.5</span><span class="special">);</span>
3817<span class="identifier">acc</span><span class="special">(</span><span class="number">0.4</span><span class="special">);</span>
3818<span class="identifier">acc</span><span class="special">(</span><span class="number">2.2</span><span class="special">);</span>
3819<span class="identifier">acc</span><span class="special">(</span><span class="number">7.1</span><span class="special">);</span>
3820
3821<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">rolling_variance</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">8.41666666666667</span><span class="special">,</span> <span class="number">1e-10</span> <span class="special">);</span> <span class="comment">// variance over samples 4-7</span>
3822</pre>
3823<p>
3824          <span class="bold"><strong>See also</strong></span>
3825        </p>
3826<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
3827<li class="listitem">
3828              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/lazy_rolling_variance_impl.html" title="Struct template lazy_rolling_variance_impl">lazy_rolling_variance_impl</a></code>
3829            </li>
3830<li class="listitem">
3831              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/immed_1_3_2_6_3_26_1_1_6_1.html" title="Struct template immediate_rolling_variance_impl">immediate_rolling_variance_impl</a></code>
3832            </li>
3833<li class="listitem">
3834              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_count" title="rolling_count"><code class="literal">rolling_count</code></a>
3835            </li>
3836<li class="listitem">
3837              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_mean" title="rolling_mean"><code class="literal">rolling_mean</code></a>
3838            </li>
3839<li class="listitem">
3840              <a class="link" href="../"><code class="literal">immediate_rolling_mean</code></a>
3841            </li>
3842<li class="listitem">
3843              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.rolling_moment" title="rolling_moment"><code class="literal">rolling_moment</code></a>
3844            </li>
3845</ul></div>
3846</div>
3847<div class="section">
3848<div class="titlepage"><div><div><h4 class="title">
3849<a name="accumulators.user_s_guide.the_statistical_accumulators_library.skewness"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.skewness" title="skewness">skewness</a>
3850</h4></div></div></div>
3851<p>
3852          The skewness of a sample distribution is defined as the ratio of the 3rd
3853          central moment and the <code class="literal">3/2</code>-th power of the 2nd central
3854          moment (the variance) of the samples 3. For implementation details, see
3855          <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/skewness_impl.html" title="Struct template skewness_impl">skewness_impl</a></code>.
3856        </p>
3857<div class="variablelist">
3858<p class="title"><b></b></p>
3859<dl class="variablelist">
3860<dt><span class="term">Result Type</span></dt>
3861<dd>
3862<p>
3863</p>
3864<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>sample-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span>
3865</pre>
3866<p>
3867              </p>
3868</dd>
3869<dt><span class="term">Depends On</span></dt>
3870<dd><p>
3871                <code class="computeroutput"><span class="identifier">mean</span></code> <br> <code class="computeroutput"><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span></code>
3872                <br> <code class="computeroutput"><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;</span></code>
3873              </p></dd>
3874<dt><span class="term">Variants</span></dt>
3875<dd><p>
3876                <span class="emphasis"><em>none</em></span>
3877              </p></dd>
3878<dt><span class="term">Initialization Parameters</span></dt>
3879<dd><p>
3880                <span class="emphasis"><em>none</em></span>
3881              </p></dd>
3882<dt><span class="term">Accumulator Parameters</span></dt>
3883<dd><p>
3884                <span class="emphasis"><em>none</em></span>
3885              </p></dd>
3886<dt><span class="term">Extractor Parameters</span></dt>
3887<dd><p>
3888                <span class="emphasis"><em>none</em></span>
3889              </p></dd>
3890<dt><span class="term">Accumulator Complexity</span></dt>
3891<dd><p>
3892                O(1)
3893              </p></dd>
3894<dt><span class="term">Extractor Complexity</span></dt>
3895<dd><p>
3896                O(1)
3897              </p></dd>
3898</dl>
3899</div>
3900<p>
3901          <span class="bold"><strong>Header</strong></span>
3902        </p>
3903<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.skewness_hpp" title="Header &lt;boost/accumulators/statistics/skewness.hpp&gt;">boost/accumulators/statistics/skewness.hpp</a></code><span class="special">&gt;</span>
3904</pre>
3905<p>
3906          <span class="bold"><strong>Example</strong></span>
3907        </p>
3908<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">skewness</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc2</span><span class="special">;</span>
3909
3910<span class="identifier">acc2</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
3911<span class="identifier">acc2</span><span class="special">(</span><span class="number">7</span><span class="special">);</span>
3912<span class="identifier">acc2</span><span class="special">(</span><span class="number">4</span><span class="special">);</span>
3913<span class="identifier">acc2</span><span class="special">(</span><span class="number">9</span><span class="special">);</span>
3914<span class="identifier">acc2</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
3915
3916<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">5</span> <span class="special">);</span>
3917<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">159.</span><span class="special">/</span><span class="number">5.</span> <span class="special">);</span>
3918<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1171.</span><span class="special">/</span><span class="number">5.</span> <span class="special">);</span>
3919<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">skewness</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">0.406040288214</span><span class="special">,</span> <span class="number">1e-6</span> <span class="special">);</span>
3920</pre>
3921<p>
3922          <span class="bold"><strong>See also</strong></span>
3923        </p>
3924<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
3925<li class="listitem">
3926              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/skewness_impl.html" title="Struct template skewness_impl">skewness_impl</a></code>
3927            </li>
3928<li class="listitem">
3929              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.mean" title="mean and variants"><code class="literal">mean</code></a>
3930            </li>
3931<li class="listitem">
3932              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.moment" title="moment"><code class="literal">moment</code></a>
3933            </li>
3934</ul></div>
3935</div>
3936<div class="section">
3937<div class="titlepage"><div><div><h4 class="title">
3938<a name="accumulators.user_s_guide.the_statistical_accumulators_library.sum"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum" title="sum and variants">sum
3939        <span class="emphasis"><em>and variants</em></span></a>
3940</h4></div></div></div>
3941<p>
3942          For summing the samples, weights or variates. The default implementation
3943          uses the standard sum operation, but variants using the Kahan summation
3944          algorithm are also provided.
3945        </p>
3946<div class="variablelist">
3947<p class="title"><b></b></p>
3948<dl class="variablelist">
3949<dt><span class="term">Result Type</span></dt>
3950<dd><p>
3951                <code class="computeroutput"><em class="replaceable"><code>sample-type</code></em></code> for summing samples <br> <code class="computeroutput"><em class="replaceable"><code>weight-type</code></em></code> for summing
3952                weights <br> <code class="computeroutput"><em class="replaceable"><code>variate-type</code></em></code> for summing variates
3953              </p></dd>
3954<dt><span class="term">Depends On</span></dt>
3955<dd><p>
3956                <span class="emphasis"><em>none</em></span>
3957              </p></dd>
3958<dt><span class="term">Variants</span></dt>
3959<dd><p>
3960                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum_of_weights</span></code>
3961                <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum_of_variates</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>
3962                <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum_kahan</span></code> (a.k.a. <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum</span><span class="special">(</span><span class="identifier">kahan</span><span class="special">)</span></code>)
3963                <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum_of_weights_kahan</span></code> (a.k.a. <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum_of_weights</span><span class="special">(</span><span class="identifier">kahan</span><span class="special">)</span></code>)
3964                <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum_of_variates_kahan</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>
3965                <br>
3966              </p></dd>
3967<dt><span class="term">Initialization Parameters</span></dt>
3968<dd><p>
3969                <span class="emphasis"><em>none</em></span>
3970              </p></dd>
3971<dt><span class="term">Accumulator Parameters</span></dt>
3972<dd><p>
3973                <code class="computeroutput"><span class="identifier">weight</span></code> for summing
3974                weights <br> <code class="computeroutput"><em class="replaceable"><code>variate-tag</code></em></code> for summing variates
3975              </p></dd>
3976<dt><span class="term">Extractor Parameters</span></dt>
3977<dd><p>
3978                <span class="emphasis"><em>none</em></span>
3979              </p></dd>
3980<dt><span class="term">Accumulator Complexity</span></dt>
3981<dd><p>
3982                O(1). Note that the Kahan sum performs four floating-point sum operations
3983                per accumulated value, whereas the naive sum performs only one.
3984              </p></dd>
3985<dt><span class="term">Extractor Complexity</span></dt>
3986<dd><p>
3987                O(1)
3988              </p></dd>
3989</dl>
3990</div>
3991<p>
3992          <span class="bold"><strong>Header</strong></span>
3993        </p>
3994<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.sum_hpp" title="Header &lt;boost/accumulators/statistics/sum.hpp&gt;">boost/accumulators/statistics/sum.hpp</a></code><span class="special">&gt;</span>
3995<span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.sum_kahan_hpp" title="Header &lt;boost/accumulators/statistics/sum_kahan.hpp&gt;">boost/accumulators/statistics/sum_kahan.hpp</a></code><span class="special">&gt;</span>
3996</pre>
3997<p>
3998          <span class="bold"><strong>Example</strong></span>
3999        </p>
4000<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span>
4001    <span class="keyword">int</span>
4002  <span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span>
4003        <span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum</span>
4004      <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum_of_weights</span>
4005      <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;</span>
4006    <span class="special">&gt;</span>
4007  <span class="special">,</span> <span class="keyword">int</span>
4008<span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
4009
4010<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
4011<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>  <span class="comment">// weighted sample = 1 * 2</span>
4012<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">sum_of_weights</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
4013<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="identifier">sum_of_variates</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
4014
4015<span class="identifier">acc</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">6</span><span class="special">);</span>
4016<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">10</span><span class="special">,</span> <span class="identifier">sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span> <span class="comment">// weighted sample = 2 * 4</span>
4017<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">6</span><span class="special">,</span> <span class="identifier">sum_of_weights</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
4018<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">9</span><span class="special">,</span> <span class="identifier">sum_of_variates</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
4019
4020<span class="identifier">acc</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">6</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">9</span><span class="special">);</span>
4021<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">28</span><span class="special">,</span> <span class="identifier">sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span> <span class="comment">// weighted sample = 3 * 6</span>
4022<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">12</span><span class="special">,</span> <span class="identifier">sum_of_weights</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
4023<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">18</span><span class="special">,</span> <span class="identifier">sum_of_variates</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
4024
4025<span class="comment">// demonstrate Kahan summation</span>
4026<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum_kahan</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
4027<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">0.0f</span><span class="special">,</span> <span class="identifier">sum_kahan</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
4028<span class="keyword">for</span> <span class="special">(</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">1e6</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
4029  <span class="identifier">acc</span><span class="special">(</span><span class="number">1e-6f</span><span class="special">);</span>
4030<span class="special">}</span>
4031<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">1.0f</span><span class="special">,</span> <span class="identifier">sum_kahan</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
4032</pre>
4033<p>
4034          <span class="bold"><strong>See also</strong></span>
4035        </p>
4036<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
4037<li class="listitem">
4038              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/sum_impl.html" title="Struct template sum_impl">sum_impl</a></code>
4039            </li>
4040<li class="listitem">
4041              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/sum_kahan_impl.html" title="Struct template sum_kahan_impl">sum_kahan_impl</a></code>
4042            </li>
4043</ul></div>
4044</div>
4045<div class="section">
4046<div class="titlepage"><div><div><h4 class="title">
4047<a name="accumulators.user_s_guide.the_statistical_accumulators_library.tail"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail" title="tail">tail</a>
4048</h4></div></div></div>
4049<p>
4050          Tracks the largest or smallest <code class="literal">N</code> values. <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span></code>
4051          tracks the largest <code class="literal">N</code>, and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span></code> tracks the smallest. The parameter
4052          <code class="literal">N</code> is specified with the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code> initialization parameter.
4053          For implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/tail_impl.html" title="Struct template tail_impl">tail_impl</a></code>.
4054        </p>
4055<p>
4056          Both <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span></code>
4057          and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span></code>
4058          satisfy the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">abstract_tail</span></code> feature and can be extracted
4059          with the <code class="computeroutput"><span class="identifier">tail</span><span class="special">()</span></code>
4060          extractor.
4061        </p>
4062<div class="variablelist">
4063<p class="title"><b></b></p>
4064<dl class="variablelist">
4065<dt><span class="term">Result Type</span></dt>
4066<dd>
4067<p>
4068</p>
4069<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span><span class="special">&lt;</span>
4070    <span class="identifier">boost</span><span class="special">::</span><span class="identifier">reverse_iterator</span><span class="special">&lt;</span>
4071        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">permutation_iterator</span><span class="special">&lt;</span>
4072            <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">&gt;::</span><span class="identifier">const_iterator</span>  <span class="comment">// samples</span>
4073          <span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">iterator</span>          <span class="comment">// indices</span>
4074        <span class="special">&gt;</span>
4075    <span class="special">&gt;</span>
4076<span class="special">&gt;</span>
4077</pre>
4078<p>
4079              </p>
4080</dd>
4081<dt><span class="term">Depends On</span></dt>
4082<dd><p>
4083                <span class="emphasis"><em>none</em></span>
4084              </p></dd>
4085<dt><span class="term">Variants</span></dt>
4086<dd><p>
4087                <code class="computeroutput"><span class="identifier">abstract_tail</span></code>
4088              </p></dd>
4089<dt><span class="term">Initialization Parameters</span></dt>
4090<dd><p>
4091                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
4092              </p></dd>
4093<dt><span class="term">Accumulator Parameters</span></dt>
4094<dd><p>
4095                <span class="emphasis"><em>none</em></span>
4096              </p></dd>
4097<dt><span class="term">Extractor Parameters</span></dt>
4098<dd><p>
4099                <span class="emphasis"><em>none</em></span>
4100              </p></dd>
4101<dt><span class="term">Accumulator Complexity</span></dt>
4102<dd><p>
4103                O(log N), where N is the cache size
4104              </p></dd>
4105<dt><span class="term">Extractor Complexity</span></dt>
4106<dd><p>
4107                O(N log N), where N is the cache size
4108              </p></dd>
4109</dl>
4110</div>
4111<p>
4112          <span class="bold"><strong>Header</strong></span>
4113        </p>
4114<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.tail_hpp" title="Header &lt;boost/accumulators/statistics/tail.hpp&gt;">boost/accumulators/statistics/tail.hpp</a></code><span class="special">&gt;</span>
4115</pre>
4116<p>
4117          <span class="bold"><strong>Example</strong></span>
4118        </p>
4119<p>
4120          See the Example for <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail_variate" title="tail_variate"><code class="literal">tail_variate</code></a>.
4121        </p>
4122<p>
4123          <span class="bold"><strong>See also</strong></span>
4124        </p>
4125<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
4126<li class="listitem">
4127              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/tail_impl.html" title="Struct template tail_impl">tail_impl</a></code>
4128            </li>
4129<li class="listitem">
4130              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail_variate" title="tail_variate"><code class="literal">tail_variate</code></a>
4131            </li>
4132</ul></div>
4133</div>
4134<div class="section">
4135<div class="titlepage"><div><div><h4 class="title">
4136<a name="accumulators.user_s_guide.the_statistical_accumulators_library.coherent_tail_mean"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.coherent_tail_mean" title="coherent_tail_mean">coherent_tail_mean</a>
4137</h4></div></div></div>
4138<p>
4139          Estimation of the coherent tail mean based on order statistics (for both
4140          left and right tails). The left coherent tail mean feature is <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">coherent_tail_mean</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span></code>,
4141          and the right coherent tail mean feature is <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">coherent_tail_mean</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span></code>. They both share the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_mean</span></code> feature and can be extracted
4142          with the <code class="computeroutput"><span class="identifier">tail_mean</span><span class="special">()</span></code>
4143          extractor. For more implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/coherent_tail_mean_impl.html" title="Struct template coherent_tail_mean_impl">coherent_tail_mean_impl</a></code>
4144        </p>
4145<div class="variablelist">
4146<p class="title"><b></b></p>
4147<dl class="variablelist">
4148<dt><span class="term">Result Type</span></dt>
4149<dd>
4150<p>
4151</p>
4152<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
4153</pre>
4154<p>
4155              </p>
4156</dd>
4157<dt><span class="term">Depends On</span></dt>
4158<dd><p>
4159                <code class="computeroutput"><span class="identifier">count</span></code> <br> <code class="computeroutput"><span class="identifier">quantile</span></code> <br> <code class="computeroutput"><span class="identifier">non_coherent_tail_mean</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
4160              </p></dd>
4161<dt><span class="term">Variants</span></dt>
4162<dd><p>
4163                <span class="emphasis"><em>none</em></span>
4164              </p></dd>
4165<dt><span class="term">Initialization Parameters</span></dt>
4166<dd><p>
4167                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
4168              </p></dd>
4169<dt><span class="term">Accumulator Parameters</span></dt>
4170<dd><p>
4171                <span class="emphasis"><em>none</em></span>
4172              </p></dd>
4173<dt><span class="term">Extractor Parameters</span></dt>
4174<dd><p>
4175                <code class="computeroutput"><span class="identifier">quantile_probability</span></code>
4176              </p></dd>
4177<dt><span class="term">Accumulator Complexity</span></dt>
4178<dd><p>
4179                O(log N), where N is the cache size
4180              </p></dd>
4181<dt><span class="term">Extractor Complexity</span></dt>
4182<dd><p>
4183                O(N log N), where N is the cache size
4184              </p></dd>
4185</dl>
4186</div>
4187<p>
4188          <span class="bold"><strong>Header</strong></span>
4189        </p>
4190<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.tail_mean_hpp" title="Header &lt;boost/accumulators/statistics/tail_mean.hpp&gt;">boost/accumulators/statistics/tail_mean.hpp</a></code><span class="special">&gt;</span>
4191</pre>
4192<p>
4193          <span class="bold"><strong>Example</strong></span>
4194        </p>
4195<p>
4196          See the example for <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.non_coherent_tail_mean" title="non_coherent_tail_mean"><code class="literal">non_coherent_tail_mean</code></a>.
4197        </p>
4198<p>
4199          <span class="bold"><strong>See also</strong></span>
4200        </p>
4201<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
4202<li class="listitem">
4203              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/coherent_tail_mean_impl.html" title="Struct template coherent_tail_mean_impl">coherent_tail_mean_impl</a></code>
4204            </li>
4205<li class="listitem">
4206              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
4207            </li>
4208<li class="listitem">
4209              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.extended_p_square_quantile" title="extended_p_square_quantile and variants"><code class="literal">extended_p_square_quantile</code></a>
4210            </li>
4211<li class="listitem">
4212              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.pot_quantile" title="pot_quantile and variants"><code class="literal">pot_quantile</code></a>
4213            </li>
4214<li class="listitem">
4215              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail_quantile" title="tail_quantile"><code class="literal">tail_quantile</code></a>
4216            </li>
4217<li class="listitem">
4218              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.non_coherent_tail_mean" title="non_coherent_tail_mean"><code class="literal">non_coherent_tail_mean</code></a>
4219            </li>
4220</ul></div>
4221</div>
4222<div class="section">
4223<div class="titlepage"><div><div><h4 class="title">
4224<a name="accumulators.user_s_guide.the_statistical_accumulators_library.non_coherent_tail_mean"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.non_coherent_tail_mean" title="non_coherent_tail_mean">non_coherent_tail_mean</a>
4225</h4></div></div></div>
4226<p>
4227          Estimation of the (non-coherent) tail mean based on order statistics (for
4228          both left and right tails). The left non-coherent tail mean feature is
4229          <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">non_coherent_tail_mean</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span></code>,
4230          and the right non-choherent tail mean feature is <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">non_coherent_tail_mean</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span></code>. They both share the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">abstract_non_coherent_tail_mean</span></code> feature
4231          and can be extracted with the <code class="computeroutput"><span class="identifier">non_coherent_tail_mean</span><span class="special">()</span></code> extractor. For more implementation details,
4232          see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/non_1_3_2_6_3_59_1_1_22_17.html" title="Struct template non_coherent_tail_mean_impl">non_coherent_tail_mean_impl</a></code>
4233        </p>
4234<div class="variablelist">
4235<p class="title"><b></b></p>
4236<dl class="variablelist">
4237<dt><span class="term">Result Type</span></dt>
4238<dd>
4239<p>
4240</p>
4241<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
4242</pre>
4243<p>
4244              </p>
4245</dd>
4246<dt><span class="term">Depends On</span></dt>
4247<dd><p>
4248                <code class="computeroutput"><span class="identifier">count</span></code> <br> <code class="computeroutput"><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
4249              </p></dd>
4250<dt><span class="term">Variants</span></dt>
4251<dd><p>
4252                <code class="computeroutput"><span class="identifier">abstract_non_coherent_tail_mean</span></code>
4253              </p></dd>
4254<dt><span class="term">Initialization Parameters</span></dt>
4255<dd><p>
4256                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
4257              </p></dd>
4258<dt><span class="term">Accumulator Parameters</span></dt>
4259<dd><p>
4260                <span class="emphasis"><em>none</em></span>
4261              </p></dd>
4262<dt><span class="term">Extractor Parameters</span></dt>
4263<dd><p>
4264                <code class="computeroutput"><span class="identifier">quantile_probability</span></code>
4265              </p></dd>
4266<dt><span class="term">Accumulator Complexity</span></dt>
4267<dd><p>
4268                O(log N), where N is the cache size
4269              </p></dd>
4270<dt><span class="term">Extractor Complexity</span></dt>
4271<dd><p>
4272                O(N log N), where N is the cache size
4273              </p></dd>
4274</dl>
4275</div>
4276<p>
4277          <span class="bold"><strong>Header</strong></span>
4278        </p>
4279<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.tail_mean_hpp" title="Header &lt;boost/accumulators/statistics/tail_mean.hpp&gt;">boost/accumulators/statistics/tail_mean.hpp</a></code><span class="special">&gt;</span>
4280</pre>
4281<p>
4282          <span class="bold"><strong>Example</strong></span>
4283        </p>
4284<pre class="programlisting"><span class="comment">// tolerance in %</span>
4285<span class="keyword">double</span> <span class="identifier">epsilon</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
4286
4287<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span> <span class="special">=</span> <span class="number">100000</span><span class="special">;</span> <span class="comment">// number of MC steps</span>
4288<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">c</span> <span class="special">=</span>  <span class="number">10000</span><span class="special">;</span> <span class="comment">// cache size</span>
4289
4290<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">non_coherent_tail_mean</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_quantile</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">accumulator_t_right1</span><span class="special">;</span>
4291<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">non_coherent_tail_mean</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_quantile</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">accumulator_t_left1</span><span class="special">;</span>
4292<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">coherent_tail_mean</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_quantile</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">accumulator_t_right2</span><span class="special">;</span>
4293<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">coherent_tail_mean</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_quantile</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">accumulator_t_left2</span><span class="special">;</span>
4294
4295<span class="identifier">accumulator_t_right1</span> <span class="identifier">acc0</span><span class="special">(</span> <span class="identifier">right_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
4296<span class="identifier">accumulator_t_left1</span> <span class="identifier">acc1</span><span class="special">(</span> <span class="identifier">left_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
4297<span class="identifier">accumulator_t_right2</span> <span class="identifier">acc2</span><span class="special">(</span> <span class="identifier">right_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
4298<span class="identifier">accumulator_t_left2</span> <span class="identifier">acc3</span><span class="special">(</span> <span class="identifier">left_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
4299
4300<span class="comment">// a random number generator</span>
4301<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
4302
4303<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">n</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
4304<span class="special">{</span>
4305    <span class="keyword">double</span> <span class="identifier">sample</span> <span class="special">=</span> <span class="identifier">rng</span><span class="special">();</span>
4306    <span class="identifier">acc0</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
4307    <span class="identifier">acc1</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
4308    <span class="identifier">acc2</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
4309    <span class="identifier">acc3</span><span class="special">(</span><span class="identifier">sample</span><span class="special">);</span>
4310<span class="special">}</span>
4311
4312<span class="comment">// check uniform distribution</span>
4313<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_tail_mean</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.95</span><span class="special">),</span> <span class="number">0.975</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4314<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_tail_mean</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.975</span><span class="special">),</span> <span class="number">0.9875</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4315<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_tail_mean</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.99</span><span class="special">),</span> <span class="number">0.995</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4316<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_tail_mean</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.999</span><span class="special">),</span> <span class="number">0.9995</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4317<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_tail_mean</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.05</span><span class="special">),</span> <span class="number">0.025</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4318<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_tail_mean</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.025</span><span class="special">),</span> <span class="number">0.0125</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4319<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_tail_mean</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.01</span><span class="special">),</span> <span class="number">0.005</span><span class="special">,</span> <span class="number">5</span> <span class="special">);</span>
4320<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_tail_mean</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.001</span><span class="special">),</span> <span class="number">0.0005</span><span class="special">,</span> <span class="number">10</span> <span class="special">);</span>
4321<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">tail_mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.95</span><span class="special">),</span> <span class="number">0.975</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4322<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">tail_mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.975</span><span class="special">),</span> <span class="number">0.9875</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4323<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">tail_mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.99</span><span class="special">),</span> <span class="number">0.995</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4324<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">tail_mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.999</span><span class="special">),</span> <span class="number">0.9995</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4325<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">tail_mean</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.05</span><span class="special">),</span> <span class="number">0.025</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4326<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">tail_mean</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.025</span><span class="special">),</span> <span class="number">0.0125</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4327<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">tail_mean</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.01</span><span class="special">),</span> <span class="number">0.005</span><span class="special">,</span> <span class="number">5</span> <span class="special">);</span>
4328<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">tail_mean</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.001</span><span class="special">),</span> <span class="number">0.0005</span><span class="special">,</span> <span class="number">10</span> <span class="special">);</span>
4329</pre>
4330<p>
4331          <span class="bold"><strong>See also</strong></span>
4332        </p>
4333<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
4334<li class="listitem">
4335              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/non_1_3_2_6_3_59_1_1_22_17.html" title="Struct template non_coherent_tail_mean_impl">non_coherent_tail_mean_impl</a></code>
4336            </li>
4337<li class="listitem">
4338              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
4339            </li>
4340<li class="listitem">
4341              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail" title="tail"><code class="literal">tail</code></a>
4342            </li>
4343</ul></div>
4344</div>
4345<div class="section">
4346<div class="titlepage"><div><div><h4 class="title">
4347<a name="accumulators.user_s_guide.the_statistical_accumulators_library.tail_quantile"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail_quantile" title="tail_quantile">tail_quantile</a>
4348</h4></div></div></div>
4349<p>
4350          Tail quantile estimation based on order statistics (for both left and right
4351          tails). The left tail quantile feature is <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_quantile</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span></code>, and the right tail quantile feature
4352          is <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_quantile</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span></code>.
4353          They both share the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">quantile</span></code>
4354          feature and can be extracted with the <code class="computeroutput"><span class="identifier">quantile</span><span class="special">()</span></code> extractor. For more implementation details,
4355          see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/tail_quantile_impl.html" title="Struct template tail_quantile_impl">tail_quantile_impl</a></code>
4356        </p>
4357<div class="variablelist">
4358<p class="title"><b></b></p>
4359<dl class="variablelist">
4360<dt><span class="term">Result Type</span></dt>
4361<dd>
4362<p>
4363</p>
4364<pre class="programlisting"><em class="replaceable"><code>sample-type</code></em>
4365</pre>
4366<p>
4367              </p>
4368</dd>
4369<dt><span class="term">Depends On</span></dt>
4370<dd><p>
4371                <code class="computeroutput"><span class="identifier">count</span></code> <br> <code class="computeroutput"><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
4372              </p></dd>
4373<dt><span class="term">Variants</span></dt>
4374<dd><p>
4375                <span class="emphasis"><em>none</em></span>
4376              </p></dd>
4377<dt><span class="term">Initialization Parameters</span></dt>
4378<dd><p>
4379                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
4380              </p></dd>
4381<dt><span class="term">Accumulator Parameters</span></dt>
4382<dd><p>
4383                <span class="emphasis"><em>none</em></span>
4384              </p></dd>
4385<dt><span class="term">Extractor Parameters</span></dt>
4386<dd><p>
4387                <code class="computeroutput"><span class="identifier">quantile_probability</span></code>
4388              </p></dd>
4389<dt><span class="term">Accumulator Complexity</span></dt>
4390<dd><p>
4391                O(log N), where N is the cache size
4392              </p></dd>
4393<dt><span class="term">Extractor Complexity</span></dt>
4394<dd><p>
4395                O(N log N), where N is the cache size
4396              </p></dd>
4397</dl>
4398</div>
4399<p>
4400          <span class="bold"><strong>Header</strong></span>
4401        </p>
4402<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.tail_quantile_hpp" title="Header &lt;boost/accumulators/statistics/tail_quantile.hpp&gt;">boost/accumulators/statistics/tail_quantile.hpp</a></code><span class="special">&gt;</span>
4403</pre>
4404<p>
4405          <span class="bold"><strong>Example</strong></span>
4406        </p>
4407<pre class="programlisting"><span class="comment">// tolerance in %</span>
4408<span class="keyword">double</span> <span class="identifier">epsilon</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
4409
4410<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span> <span class="special">=</span> <span class="number">100000</span><span class="special">;</span> <span class="comment">// number of MC steps</span>
4411<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">c</span> <span class="special">=</span>  <span class="number">10000</span><span class="special">;</span> <span class="comment">// cache size</span>
4412
4413<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_quantile</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">accumulator_t_right</span><span class="special">;</span>
4414<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_quantile</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">accumulator_t_left</span><span class="special">;</span>
4415
4416<span class="identifier">accumulator_t_right</span> <span class="identifier">acc0</span><span class="special">(</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;::</span><span class="identifier">cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
4417<span class="identifier">accumulator_t_right</span> <span class="identifier">acc1</span><span class="special">(</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;::</span><span class="identifier">cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
4418<span class="identifier">accumulator_t_left</span>  <span class="identifier">acc2</span><span class="special">(</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;::</span><span class="identifier">cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
4419<span class="identifier">accumulator_t_left</span>  <span class="identifier">acc3</span><span class="special">(</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;::</span><span class="identifier">cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
4420
4421<span class="comment">// two random number generators</span>
4422<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
4423<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">);</span>
4424<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma</span><span class="special">);</span>
4425
4426<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">n</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
4427<span class="special">{</span>
4428    <span class="keyword">double</span> <span class="identifier">sample1</span> <span class="special">=</span> <span class="identifier">rng</span><span class="special">();</span>
4429    <span class="keyword">double</span> <span class="identifier">sample2</span> <span class="special">=</span> <span class="identifier">normal</span><span class="special">();</span>
4430    <span class="identifier">acc0</span><span class="special">(</span><span class="identifier">sample1</span><span class="special">);</span>
4431    <span class="identifier">acc1</span><span class="special">(</span><span class="identifier">sample2</span><span class="special">);</span>
4432    <span class="identifier">acc2</span><span class="special">(</span><span class="identifier">sample1</span><span class="special">);</span>
4433    <span class="identifier">acc3</span><span class="special">(</span><span class="identifier">sample2</span><span class="special">);</span>
4434<span class="special">}</span>
4435
4436<span class="comment">// check uniform distribution</span>
4437<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.95</span> <span class="special">),</span> <span class="number">0.95</span><span class="special">,</span>  <span class="identifier">epsilon</span> <span class="special">);</span>
4438<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.975</span><span class="special">),</span> <span class="number">0.975</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4439<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.99</span> <span class="special">),</span> <span class="number">0.99</span><span class="special">,</span>  <span class="identifier">epsilon</span> <span class="special">);</span>
4440<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.999</span><span class="special">),</span> <span class="number">0.999</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4441<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span>  <span class="special">=</span> <span class="number">0.05</span> <span class="special">),</span> <span class="number">0.05</span><span class="special">,</span>  <span class="number">2</span> <span class="special">);</span>
4442<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span>  <span class="special">=</span> <span class="number">0.025</span><span class="special">),</span> <span class="number">0.025</span><span class="special">,</span> <span class="number">2</span> <span class="special">);</span>
4443<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span>  <span class="special">=</span> <span class="number">0.01</span> <span class="special">),</span> <span class="number">0.01</span><span class="special">,</span>  <span class="number">3</span> <span class="special">);</span>
4444<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span>  <span class="special">=</span> <span class="number">0.001</span><span class="special">),</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">20</span> <span class="special">);</span>
4445
4446<span class="comment">// check standard normal distribution</span>
4447<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.975</span><span class="special">),</span>  <span class="number">1.959963</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4448<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.999</span><span class="special">),</span>  <span class="number">3.090232</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4449<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span>  <span class="special">=</span> <span class="number">0.025</span><span class="special">),</span> <span class="special">-</span><span class="number">1.959963</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4450<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span>  <span class="special">=</span> <span class="number">0.001</span><span class="special">),</span> <span class="special">-</span><span class="number">3.090232</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
4451</pre>
4452<p>
4453          <span class="bold"><strong>See also</strong></span>
4454        </p>
4455<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
4456<li class="listitem">
4457              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/tail_quantile_impl.html" title="Struct template tail_quantile_impl">tail_quantile_impl</a></code>
4458            </li>
4459<li class="listitem">
4460              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
4461            </li>
4462<li class="listitem">
4463              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail" title="tail"><code class="literal">tail</code></a>
4464            </li>
4465</ul></div>
4466</div>
4467<div class="section">
4468<div class="titlepage"><div><div><h4 class="title">
4469<a name="accumulators.user_s_guide.the_statistical_accumulators_library.tail_variate"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail_variate" title="tail_variate">tail_variate</a>
4470</h4></div></div></div>
4471<p>
4472          Tracks the covariates of largest or smallest <code class="literal">N</code> samples.
4473          <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_variate</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">,</span> <span class="identifier">right</span><span class="special">&gt;</span></code> tracks the covariate associated with
4474          <em class="replaceable"><code>variate-tag</code></em> for the largest <code class="literal">N</code>, and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_variate</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">,</span>
4475          <span class="identifier">left</span><span class="special">&gt;</span></code>
4476          for the smallest. The parameter <code class="literal">N</code> is specified with
4477          the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
4478          initialization parameter. For implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/tail_variate_impl.html" title="Struct template tail_variate_impl">tail_variate_impl</a></code>.
4479        </p>
4480<p>
4481          Both <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_variate</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">,</span> <span class="identifier">right</span><span class="special">&gt;</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_variate</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">,</span>
4482          <span class="identifier">left</span><span class="special">&gt;</span></code>
4483          satisfy the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">abstract_tail_variate</span></code> feature and can
4484          be extracted with the <code class="computeroutput"><span class="identifier">tail_variate</span><span class="special">()</span></code> extractor.
4485        </p>
4486<div class="variablelist">
4487<p class="title"><b></b></p>
4488<dl class="variablelist">
4489<dt><span class="term">Result Type</span></dt>
4490<dd>
4491<p>
4492</p>
4493<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span><span class="special">&lt;</span>
4494    <span class="identifier">boost</span><span class="special">::</span><span class="identifier">reverse_iterator</span><span class="special">&lt;</span>
4495        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">permutation_iterator</span><span class="special">&lt;</span>
4496            <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">&gt;::</span><span class="identifier">const_iterator</span> <span class="comment">// variates</span>
4497          <span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">iterator</span>          <span class="comment">// indices</span>
4498        <span class="special">&gt;</span>
4499    <span class="special">&gt;</span>
4500<span class="special">&gt;</span>
4501</pre>
4502<p>
4503              </p>
4504</dd>
4505<dt><span class="term">Depends On</span></dt>
4506<dd><p>
4507                <code class="computeroutput"><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
4508              </p></dd>
4509<dt><span class="term">Variants</span></dt>
4510<dd><p>
4511                <code class="computeroutput"><span class="identifier">abstract_tail_variate</span></code>
4512              </p></dd>
4513<dt><span class="term">Initialization Parameters</span></dt>
4514<dd><p>
4515                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
4516              </p></dd>
4517<dt><span class="term">Accumulator Parameters</span></dt>
4518<dd><p>
4519                <span class="emphasis"><em>none</em></span>
4520              </p></dd>
4521<dt><span class="term">Extractor Parameters</span></dt>
4522<dd><p>
4523                <span class="emphasis"><em>none</em></span>
4524              </p></dd>
4525<dt><span class="term">Accumulator Complexity</span></dt>
4526<dd><p>
4527                O(log N), where N is the cache size
4528              </p></dd>
4529<dt><span class="term">Extractor Complexity</span></dt>
4530<dd><p>
4531                O(N log N), where N is the cache size
4532              </p></dd>
4533</dl>
4534</div>
4535<p>
4536          <span class="bold"><strong>Header</strong></span>
4537        </p>
4538<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.tail_variate_hpp" title="Header &lt;boost/accumulators/statistics/tail_variate.hpp&gt;">boost/accumulators/statistics/tail_variate.hpp</a></code><span class="special">&gt;</span>
4539</pre>
4540<p>
4541          <span class="bold"><strong>Example</strong></span>
4542        </p>
4543<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_variate</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">,</span> <span class="identifier">right</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">(</span>
4544    <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;::</span><span class="identifier">cache_size</span> <span class="special">=</span> <span class="number">4</span>
4545<span class="special">);</span>
4546
4547<span class="identifier">acc</span><span class="special">(</span><span class="number">8</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
4548<span class="identifier">CHECK_RANGE_EQUAL</span><span class="special">(</span><span class="identifier">tail</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">{</span><span class="number">8</span><span class="special">});</span>
4549<span class="identifier">CHECK_RANGE_EQUAL</span><span class="special">(</span><span class="identifier">tail_variate</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">{</span><span class="number">3</span><span class="special">});</span>
4550
4551<span class="identifier">acc</span><span class="special">(</span><span class="number">16</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
4552<span class="identifier">CHECK_RANGE_EQUAL</span><span class="special">(</span><span class="identifier">tail</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">{</span><span class="number">16</span><span class="special">,</span> <span class="number">8</span><span class="special">});</span>
4553<span class="identifier">CHECK_RANGE_EQUAL</span><span class="special">(</span><span class="identifier">tail_variate</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">3</span><span class="special">});</span>
4554
4555<span class="identifier">acc</span><span class="special">(</span><span class="number">12</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">4</span><span class="special">);</span>
4556<span class="identifier">CHECK_RANGE_EQUAL</span><span class="special">(</span><span class="identifier">tail</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">{</span><span class="number">16</span><span class="special">,</span> <span class="number">12</span><span class="special">,</span> <span class="number">8</span><span class="special">});</span>
4557<span class="identifier">CHECK_RANGE_EQUAL</span><span class="special">(</span><span class="identifier">tail_variate</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="number">3</span><span class="special">});</span>
4558
4559<span class="identifier">acc</span><span class="special">(</span><span class="number">24</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">5</span><span class="special">);</span>
4560<span class="identifier">CHECK_RANGE_EQUAL</span><span class="special">(</span><span class="identifier">tail</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">{</span><span class="number">24</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="number">12</span><span class="special">,</span> <span class="number">8</span><span class="special">});</span>
4561<span class="identifier">CHECK_RANGE_EQUAL</span><span class="special">(</span><span class="identifier">tail_variate</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">{</span><span class="number">5</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="number">3</span><span class="special">});</span>
4562
4563<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">9</span><span class="special">);</span>
4564<span class="identifier">CHECK_RANGE_EQUAL</span><span class="special">(</span><span class="identifier">tail</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">{</span><span class="number">24</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="number">12</span><span class="special">,</span> <span class="number">8</span><span class="special">});</span>
4565<span class="identifier">CHECK_RANGE_EQUAL</span><span class="special">(</span><span class="identifier">tail_variate</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">{</span><span class="number">5</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="number">3</span><span class="special">});</span>
4566
4567<span class="identifier">acc</span><span class="special">(</span><span class="number">9</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">7</span><span class="special">);</span>
4568<span class="identifier">CHECK_RANGE_EQUAL</span><span class="special">(</span><span class="identifier">tail</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">{</span><span class="number">24</span><span class="special">,</span>  <span class="number">16</span><span class="special">,</span> <span class="number">12</span><span class="special">,</span> <span class="number">9</span><span class="special">});</span>
4569<span class="identifier">CHECK_RANGE_EQUAL</span><span class="special">(</span><span class="identifier">tail_variate</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">{</span><span class="number">5</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="number">7</span><span class="special">});</span>
4570</pre>
4571<p>
4572          <span class="bold"><strong>See also</strong></span>
4573        </p>
4574<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
4575<li class="listitem">
4576              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/tail_variate_impl.html" title="Struct template tail_variate_impl">tail_variate_impl</a></code>
4577            </li>
4578<li class="listitem">
4579              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail" title="tail"><code class="literal">tail</code></a>
4580            </li>
4581</ul></div>
4582</div>
4583<div class="section">
4584<div class="titlepage"><div><div><h4 class="title">
4585<a name="accumulators.user_s_guide.the_statistical_accumulators_library.tail_variate_means"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail_variate_means" title="tail_variate_means and variants">tail_variate_means
4586        <span class="emphasis"><em>and variants</em></span></a>
4587</h4></div></div></div>
4588<p>
4589          Estimation of the absolute and relative tail variate means (for both left
4590          and right tails). The absolute tail variate means has the feature <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">absolute_tail_variate_means</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">,</span> <em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>
4591          and the relative tail variate mean has the feature <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">relative_tail_variate_means</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">,</span> <em class="replaceable"><code>variate-type</code></em><span class="special">,</span>
4592          <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>. All absolute tail variate
4593          mean features share the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">abstract_absolute_tail_variate_means</span></code>
4594          feature and can be extracted with the <code class="computeroutput"><span class="identifier">tail_variate_means</span><span class="special">()</span></code> extractor. All the relative tail variate
4595          mean features share the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">abstract_relative_tail_variate_means</span></code>
4596          feature and can be extracted with the <code class="computeroutput"><span class="identifier">relative_tail_variate_means</span><span class="special">()</span></code> extractor.
4597        </p>
4598<p>
4599          For more implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/tail_variate_means_impl.html" title="Struct template tail_variate_means_impl">tail_variate_means_impl</a></code>
4600        </p>
4601<div class="variablelist">
4602<p class="title"><b></b></p>
4603<dl class="variablelist">
4604<dt><span class="term">Result Type</span></dt>
4605<dd>
4606<p>
4607</p>
4608<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span><span class="special">&lt;</span>
4609    <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span>
4610        <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
4611    <span class="special">&gt;::</span><span class="identifier">iterator</span>
4612<span class="special">&gt;</span>
4613</pre>
4614<p>
4615              </p>
4616</dd>
4617<dt><span class="term">Depends On</span></dt>
4618<dd><p>
4619                <code class="computeroutput"><span class="identifier">non_coherent_tail_mean</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
4620                <br> <code class="computeroutput"><span class="identifier">tail_variate</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">,</span> <em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
4621              </p></dd>
4622<dt><span class="term">Variants</span></dt>
4623<dd><p>
4624                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">absolute_tail_variate_means</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">,</span> <em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">relative_tail_variate_means</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">,</span> <em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>
4625              </p></dd>
4626<dt><span class="term">Initialization Parameters</span></dt>
4627<dd><p>
4628                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
4629              </p></dd>
4630<dt><span class="term">Accumulator Parameters</span></dt>
4631<dd><p>
4632                <span class="emphasis"><em>none</em></span>
4633              </p></dd>
4634<dt><span class="term">Extractor Parameters</span></dt>
4635<dd><p>
4636                <code class="computeroutput"><span class="identifier">quantile_probability</span></code>
4637              </p></dd>
4638<dt><span class="term">Accumulator Complexity</span></dt>
4639<dd><p>
4640                O(log N), where N is the cache size
4641              </p></dd>
4642<dt><span class="term">Extractor Complexity</span></dt>
4643<dd><p>
4644                O(N log N), where N is the cache size
4645              </p></dd>
4646</dl>
4647</div>
4648<p>
4649          <span class="bold"><strong>Header</strong></span>
4650        </p>
4651<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.tail_variate_means_hpp" title="Header &lt;boost/accumulators/statistics/tail_variate_means.hpp&gt;">boost/accumulators/statistics/tail_variate_means.hpp</a></code><span class="special">&gt;</span>
4652</pre>
4653<p>
4654          <span class="bold"><strong>Example</strong></span>
4655        </p>
4656<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">c</span> <span class="special">=</span> <span class="number">5</span><span class="special">;</span> <span class="comment">// cache size</span>
4657
4658<span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">variate_type</span><span class="special">;</span>
4659<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">variate_type</span><span class="special">&gt;</span> <span class="identifier">variate_set_type</span><span class="special">;</span>
4660
4661<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span>
4662    <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_variate_means</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">,</span> <span class="identifier">variate_set_type</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">relative</span><span class="special">)&gt;,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span> <span class="special">&gt;</span>
4663<span class="identifier">accumulator_t1</span><span class="special">;</span>
4664
4665<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span>
4666    <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_variate_means</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">,</span> <span class="identifier">variate_set_type</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">absolute</span><span class="special">)&gt;,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span> <span class="special">&gt;</span>
4667<span class="identifier">accumulator_t2</span><span class="special">;</span>
4668
4669<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span>
4670    <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_variate_means</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">,</span> <span class="identifier">variate_set_type</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">relative</span><span class="special">)&gt;,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span> <span class="special">&gt;</span>
4671<span class="identifier">accumulator_t3</span><span class="special">;</span>
4672
4673<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span>
4674    <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail_variate_means</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">,</span> <span class="identifier">variate_set_type</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">absolute</span><span class="special">)&gt;,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span> <span class="special">&gt;</span>
4675<span class="identifier">accumulator_t4</span><span class="special">;</span>
4676
4677<span class="identifier">accumulator_t1</span> <span class="identifier">acc1</span><span class="special">(</span> <span class="identifier">right_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
4678<span class="identifier">accumulator_t2</span> <span class="identifier">acc2</span><span class="special">(</span> <span class="identifier">right_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
4679<span class="identifier">accumulator_t3</span> <span class="identifier">acc3</span><span class="special">(</span> <span class="identifier">left_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
4680<span class="identifier">accumulator_t4</span> <span class="identifier">acc4</span><span class="special">(</span> <span class="identifier">left_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
4681
4682<span class="identifier">variate_set_type</span> <span class="identifier">cov1</span><span class="special">,</span> <span class="identifier">cov2</span><span class="special">,</span> <span class="identifier">cov3</span><span class="special">,</span> <span class="identifier">cov4</span><span class="special">,</span> <span class="identifier">cov5</span><span class="special">;</span>
4683<span class="keyword">double</span> <span class="identifier">c1</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">10.</span><span class="special">,</span> <span class="number">20.</span><span class="special">,</span> <span class="number">30.</span><span class="special">,</span> <span class="number">40.</span> <span class="special">};</span> <span class="comment">// 100</span>
4684<span class="keyword">double</span> <span class="identifier">c2</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">26.</span><span class="special">,</span>  <span class="number">4.</span><span class="special">,</span> <span class="number">17.</span><span class="special">,</span>  <span class="number">3.</span> <span class="special">};</span> <span class="comment">// 50</span>
4685<span class="keyword">double</span> <span class="identifier">c3</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">46.</span><span class="special">,</span> <span class="number">64.</span><span class="special">,</span> <span class="number">40.</span><span class="special">,</span> <span class="number">50.</span> <span class="special">};</span> <span class="comment">// 200</span>
4686<span class="keyword">double</span> <span class="identifier">c4</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span>  <span class="number">1.</span><span class="special">,</span>  <span class="number">3.</span><span class="special">,</span> <span class="number">70.</span><span class="special">,</span>  <span class="number">6.</span> <span class="special">};</span> <span class="comment">// 80</span>
4687<span class="keyword">double</span> <span class="identifier">c5</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span>  <span class="number">2.</span><span class="special">,</span>  <span class="number">2.</span><span class="special">,</span>  <span class="number">2.</span><span class="special">,</span> <span class="number">14.</span> <span class="special">};</span> <span class="comment">// 20</span>
4688<span class="identifier">cov1</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">c1</span><span class="special">,</span> <span class="identifier">c1</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">c1</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">variate_type</span><span class="special">));</span>
4689<span class="identifier">cov2</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">c2</span><span class="special">,</span> <span class="identifier">c2</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">c2</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">variate_type</span><span class="special">));</span>
4690<span class="identifier">cov3</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">c3</span><span class="special">,</span> <span class="identifier">c3</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">c3</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">variate_type</span><span class="special">));</span>
4691<span class="identifier">cov4</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">c4</span><span class="special">,</span> <span class="identifier">c4</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">c4</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">variate_type</span><span class="special">));</span>
4692<span class="identifier">cov5</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">c5</span><span class="special">,</span> <span class="identifier">c5</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">c5</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">variate_type</span><span class="special">));</span>
4693
4694<span class="identifier">acc1</span><span class="special">(</span><span class="number">100.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov1</span><span class="special">);</span>
4695<span class="identifier">acc1</span><span class="special">(</span> <span class="number">50.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov2</span><span class="special">);</span>
4696<span class="identifier">acc1</span><span class="special">(</span><span class="number">200.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov3</span><span class="special">);</span>
4697<span class="identifier">acc1</span><span class="special">(</span> <span class="number">80.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov4</span><span class="special">);</span>
4698<span class="identifier">acc1</span><span class="special">(</span> <span class="number">20.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov5</span><span class="special">);</span>
4699
4700<span class="identifier">acc2</span><span class="special">(</span><span class="number">100.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov1</span><span class="special">);</span>
4701<span class="identifier">acc2</span><span class="special">(</span> <span class="number">50.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov2</span><span class="special">);</span>
4702<span class="identifier">acc2</span><span class="special">(</span><span class="number">200.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov3</span><span class="special">);</span>
4703<span class="identifier">acc2</span><span class="special">(</span> <span class="number">80.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov4</span><span class="special">);</span>
4704<span class="identifier">acc2</span><span class="special">(</span> <span class="number">20.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov5</span><span class="special">);</span>
4705
4706<span class="identifier">acc3</span><span class="special">(</span><span class="number">100.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov1</span><span class="special">);</span>
4707<span class="identifier">acc3</span><span class="special">(</span> <span class="number">50.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov2</span><span class="special">);</span>
4708<span class="identifier">acc3</span><span class="special">(</span><span class="number">200.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov3</span><span class="special">);</span>
4709<span class="identifier">acc3</span><span class="special">(</span> <span class="number">80.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov4</span><span class="special">);</span>
4710<span class="identifier">acc3</span><span class="special">(</span> <span class="number">20.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov5</span><span class="special">);</span>
4711
4712<span class="identifier">acc4</span><span class="special">(</span><span class="number">100.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov1</span><span class="special">);</span>
4713<span class="identifier">acc4</span><span class="special">(</span> <span class="number">50.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov2</span><span class="special">);</span>
4714<span class="identifier">acc4</span><span class="special">(</span><span class="number">200.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov3</span><span class="special">);</span>
4715<span class="identifier">acc4</span><span class="special">(</span> <span class="number">80.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov4</span><span class="special">);</span>
4716<span class="identifier">acc4</span><span class="special">(</span> <span class="number">20.</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov5</span><span class="special">);</span>
4717
4718<span class="comment">// check relative risk contributions</span>
4719<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>     <span class="special">),</span> <span class="number">14.</span><span class="special">/</span><span class="number">75.</span> <span class="special">);</span> <span class="comment">// (10 + 46) / 300 = 14/75</span>
4720<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span>  <span class="number">7.</span><span class="special">/</span><span class="number">25.</span> <span class="special">);</span> <span class="comment">// (20 + 64) / 300 =  7/25</span>
4721<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span>  <span class="number">7.</span><span class="special">/</span><span class="number">30.</span> <span class="special">);</span> <span class="comment">// (30 + 40) / 300 =  7/30</span>
4722<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span>  <span class="number">3.</span><span class="special">/</span><span class="number">10.</span> <span class="special">);</span> <span class="comment">// (40 + 50) / 300 =  3/10</span>
4723<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="number">14.</span><span class="special">/</span><span class="number">35.</span> <span class="special">);</span> <span class="comment">// (26 +  2) /  70 = 14/35</span>
4724<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span>  <span class="number">3.</span><span class="special">/</span><span class="number">35.</span> <span class="special">);</span> <span class="comment">// ( 4 +  2) /  70 =  3/35</span>
4725<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span> <span class="number">19.</span><span class="special">/</span><span class="number">70.</span> <span class="special">);</span> <span class="comment">// (17 +  2) /  70 = 19/70</span>
4726<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span> <span class="number">17.</span><span class="special">/</span><span class="number">70.</span> <span class="special">);</span> <span class="comment">// ( 3 + 14) /  70 = 17/70</span>
4727
4728<span class="comment">// check absolute risk contributions</span>
4729<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="number">28</span> <span class="special">);</span> <span class="comment">// (10 + 46) / 2 = 28</span>
4730<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span> <span class="number">42</span> <span class="special">);</span> <span class="comment">// (20 + 64) / 2 = 42</span>
4731<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span> <span class="number">35</span> <span class="special">);</span> <span class="comment">// (30 + 40) / 2 = 35</span>
4732<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span> <span class="number">45</span> <span class="special">);</span> <span class="comment">// (40 + 50) / 2 = 45</span>
4733<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="number">14</span> <span class="special">);</span> <span class="comment">// (26 +  2) / 2 = 14</span>
4734<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span>  <span class="number">3</span> <span class="special">);</span> <span class="comment">// ( 4 +  2) / 2 =  3</span>
4735<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span><span class="number">9.5</span> <span class="special">);</span> <span class="comment">// (17 +  2) / 2 =  9.5</span>
4736<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span><span class="number">8.5</span> <span class="special">);</span> <span class="comment">// ( 3 + 14) / 2 =  8.5</span>
4737
4738<span class="comment">// check relative risk contributions</span>
4739<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="number">23.</span><span class="special">/</span><span class="number">100.</span> <span class="special">);</span> <span class="comment">// 46/200 = 23/100</span>
4740<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span>  <span class="number">8.</span><span class="special">/</span><span class="number">25.</span>  <span class="special">);</span> <span class="comment">// 64/200 =  8/25</span>
4741<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span>  <span class="number">1.</span><span class="special">/</span><span class="number">5.</span>   <span class="special">);</span> <span class="comment">// 40/200 =  1/5</span>
4742<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span>  <span class="number">1.</span><span class="special">/</span><span class="number">4.</span>   <span class="special">);</span> <span class="comment">// 50/200 =  1/4</span>
4743<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span>  <span class="number">1.</span><span class="special">/</span><span class="number">10.</span>  <span class="special">);</span> <span class="comment">//  2/ 20 =  1/10</span>
4744<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span>  <span class="number">1.</span><span class="special">/</span><span class="number">10.</span>  <span class="special">);</span> <span class="comment">//  2/ 20 =  1/10</span>
4745<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span>  <span class="number">1.</span><span class="special">/</span><span class="number">10.</span>  <span class="special">);</span> <span class="comment">//  2/ 20 =  1/10</span>
4746<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span>  <span class="number">7.</span><span class="special">/</span><span class="number">10.</span>  <span class="special">);</span> <span class="comment">// 14/ 20 =  7/10</span>
4747
4748<span class="comment">// check absolute risk contributions</span>
4749<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="number">46</span> <span class="special">);</span> <span class="comment">// 46</span>
4750<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span> <span class="number">64</span> <span class="special">);</span> <span class="comment">// 64</span>
4751<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span> <span class="number">40</span> <span class="special">);</span> <span class="comment">// 40</span>
4752<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span> <span class="number">50</span> <span class="special">);</span> <span class="comment">// 50</span>
4753<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span>  <span class="number">2</span> <span class="special">);</span> <span class="comment">//  2</span>
4754<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span>  <span class="number">2</span> <span class="special">);</span> <span class="comment">//  2</span>
4755<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span>  <span class="number">2</span> <span class="special">);</span> <span class="comment">//  2</span>
4756<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span> <span class="number">14</span> <span class="special">);</span> <span class="comment">// 14</span>
4757</pre>
4758<p>
4759          <span class="bold"><strong>See also</strong></span>
4760        </p>
4761<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
4762<li class="listitem">
4763              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/tail_variate_means_impl.html" title="Struct template tail_variate_means_impl">tail_variate_means_impl</a></code>
4764            </li>
4765<li class="listitem">
4766              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.non_coherent_tail_mean" title="non_coherent_tail_mean"><code class="literal">non_coherent_tail_mean</code></a>
4767            </li>
4768<li class="listitem">
4769              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail_variate" title="tail_variate"><code class="literal">tail_variate</code></a>
4770            </li>
4771</ul></div>
4772</div>
4773<div class="section">
4774<div class="titlepage"><div><div><h4 class="title">
4775<a name="accumulators.user_s_guide.the_statistical_accumulators_library.variance"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.variance" title="variance and variants">variance
4776        <span class="emphasis"><em>and variants</em></span></a>
4777</h4></div></div></div>
4778<p>
4779          Lazy or iterative calculation of the variance. The lazy calculation is
4780          associated with the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">lazy_variance</span></code>
4781          feature, and the iterative calculation with the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">variance</span></code>
4782          feature. Both can be extracted using the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">variance</span><span class="special">()</span></code> extractor. For more implementation details,
4783          see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/lazy_variance_impl.html" title="Struct template lazy_variance_impl">lazy_variance_impl</a></code>
4784          and <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/variance_impl.html" title="Struct template variance_impl">variance_impl</a></code>
4785        </p>
4786<div class="variablelist">
4787<p class="title"><b></b></p>
4788<dl class="variablelist">
4789<dt><span class="term">Result Type</span></dt>
4790<dd>
4791<p>
4792</p>
4793<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
4794</pre>
4795<p>
4796              </p>
4797</dd>
4798<dt><span class="term">Depends On</span></dt>
4799<dd><p>
4800                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">lazy_variance</span></code> depends on <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span></code>
4801                and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">mean</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">variance</span></code>
4802                depends on <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">count</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">immediate_mean</span></code>
4803              </p></dd>
4804<dt><span class="term">Variants</span></dt>
4805<dd><p>
4806                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">lazy_variance</span></code> (a.k.a. <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">variance</span><span class="special">(</span><span class="identifier">lazy</span><span class="special">))</span></code>
4807                <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">variance</span></code> (a.k.a. <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">variance</span><span class="special">(</span><span class="identifier">immediate</span><span class="special">)</span></code>)
4808              </p></dd>
4809<dt><span class="term">Initialization Parameters</span></dt>
4810<dd><p>
4811                <span class="emphasis"><em>none</em></span>
4812              </p></dd>
4813<dt><span class="term">Accumulator Parameters</span></dt>
4814<dd><p>
4815                <span class="emphasis"><em>none</em></span>
4816              </p></dd>
4817<dt><span class="term">Extractor Parameters</span></dt>
4818<dd><p>
4819                <span class="emphasis"><em>none</em></span>
4820              </p></dd>
4821<dt><span class="term">Accumulator Complexity</span></dt>
4822<dd><p>
4823                O(1)
4824              </p></dd>
4825<dt><span class="term">Extractor Complexity</span></dt>
4826<dd><p>
4827                O(1)
4828              </p></dd>
4829</dl>
4830</div>
4831<p>
4832          <span class="bold"><strong>Header</strong></span>
4833        </p>
4834<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.variance_hpp" title="Header &lt;boost/accumulators/statistics/variance.hpp&gt;">boost/accumulators/statistics/variance.hpp</a></code><span class="special">&gt;</span>
4835</pre>
4836<p>
4837          <span class="bold"><strong>Example</strong></span>
4838        </p>
4839<pre class="programlisting"><span class="comment">// lazy variance</span>
4840<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">variance</span><span class="special">(</span><span class="identifier">lazy</span><span class="special">)&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc1</span><span class="special">;</span>
4841
4842<span class="identifier">acc1</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
4843<span class="identifier">acc1</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
4844<span class="identifier">acc1</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
4845<span class="identifier">acc1</span><span class="special">(</span><span class="number">4</span><span class="special">);</span>
4846<span class="identifier">acc1</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
4847
4848<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">5u</span><span class="special">,</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">));</span>
4849<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">3.</span><span class="special">,</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
4850<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">11.</span><span class="special">,</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc1</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
4851<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">2.</span><span class="special">,</span> <span class="identifier">variance</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
4852
4853<span class="comment">// immediate variance</span>
4854<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">variance</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">acc2</span><span class="special">;</span>
4855
4856<span class="identifier">acc2</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
4857<span class="identifier">acc2</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
4858<span class="identifier">acc2</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
4859<span class="identifier">acc2</span><span class="special">(</span><span class="number">4</span><span class="special">);</span>
4860<span class="identifier">acc2</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
4861
4862<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">5u</span><span class="special">,</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">));</span>
4863<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">3.</span><span class="special">,</span> <span class="identifier">mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
4864<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">2.</span><span class="special">,</span> <span class="identifier">variance</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
4865</pre>
4866<p>
4867          <span class="bold"><strong>See also</strong></span>
4868        </p>
4869<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
4870<li class="listitem">
4871              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/lazy_variance_impl.html" title="Struct template lazy_variance_impl">lazy_variance_impl</a></code>
4872            </li>
4873<li class="listitem">
4874              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/variance_impl.html" title="Struct template variance_impl">variance_impl</a></code>
4875            </li>
4876<li class="listitem">
4877              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
4878            </li>
4879<li class="listitem">
4880              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.mean" title="mean and variants"><code class="literal">mean</code></a>
4881            </li>
4882<li class="listitem">
4883              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.moment" title="moment"><code class="literal">moment</code></a>
4884            </li>
4885</ul></div>
4886</div>
4887<div class="section">
4888<div class="titlepage"><div><div><h4 class="title">
4889<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_covariance"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_covariance" title="weighted_covariance">weighted_covariance</a>
4890</h4></div></div></div>
4891<p>
4892          An iterative Monte Carlo estimator for the weighted covariance. The feature
4893          is specified as <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_covariance</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code> and
4894          is extracted with the <code class="computeroutput"><span class="identifier">weighted_variate</span><span class="special">()</span></code> extractor. For more implementation details,
4895          see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_covariance_impl.html" title="Struct template weighted_covariance_impl">weighted_covariance_impl</a></code>
4896        </p>
4897<div class="variablelist">
4898<p class="title"><b></b></p>
4899<dl class="variablelist">
4900<dt><span class="term">Result Type</span></dt>
4901<dd>
4902<p>
4903</p>
4904<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">outer_product</span><span class="special">&lt;</span>
4905    <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span>
4906        <em class="replaceable"><code>weight-type</code></em>
4907      <span class="special">,</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
4908    <span class="special">&gt;::</span><span class="identifier">result_type</span>
4909  <span class="special">,</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span>
4910        <em class="replaceable"><code>weight-type</code></em>
4911      <span class="special">,</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
4912    <span class="special">&gt;::</span><span class="identifier">result_type</span>
4913<span class="special">&gt;</span>
4914</pre>
4915<p>
4916              </p>
4917</dd>
4918<dt><span class="term">Depends On</span></dt>
4919<dd><p>
4920                <code class="computeroutput"><span class="identifier">count</span></code> <br> <code class="computeroutput"><span class="identifier">sum_of_weights</span></code> <br> <code class="computeroutput"><span class="identifier">weighted_mean</span></code> <br> <code class="computeroutput"><span class="identifier">weighted_mean_of_variates</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>
4921              </p></dd>
4922<dt><span class="term">Variants</span></dt>
4923<dd><p>
4924                <code class="computeroutput"><span class="identifier">abstract_weighted_covariance</span></code>
4925              </p></dd>
4926<dt><span class="term">Initialization Parameters</span></dt>
4927<dd><p>
4928                <span class="emphasis"><em>none</em></span>
4929              </p></dd>
4930<dt><span class="term">Accumulator Parameters</span></dt>
4931<dd><p>
4932                <code class="computeroutput"><span class="identifier">weight</span></code> <br> <code class="computeroutput"><em class="replaceable"><code>variate-tag</code></em></code>
4933              </p></dd>
4934<dt><span class="term">Extractor Parameters</span></dt>
4935<dd><p>
4936                <span class="emphasis"><em>none</em></span>
4937              </p></dd>
4938<dt><span class="term">Accumulator Complexity</span></dt>
4939<dd><p>
4940                O(1)
4941              </p></dd>
4942<dt><span class="term">Extractor Complexity</span></dt>
4943<dd><p>
4944                O(1)
4945              </p></dd>
4946</dl>
4947</div>
4948<p>
4949          <span class="bold"><strong>Header</strong></span>
4950        </p>
4951<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_covariance_hpp" title="Header &lt;boost/accumulators/statistics/weighted_covariance.hpp&gt;">boost/accumulators/statistics/weighted_covariance.hpp</a></code><span class="special">&gt;</span>
4952</pre>
4953<p>
4954          <span class="bold"><strong>Example</strong></span>
4955        </p>
4956<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_covariance</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;</span> <span class="special">&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
4957
4958<span class="identifier">acc</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.1</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">2.</span><span class="special">);</span>
4959<span class="identifier">acc</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">2.2</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">4.</span><span class="special">);</span>
4960<span class="identifier">acc</span><span class="special">(</span><span class="number">2.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">3.3</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">3.</span><span class="special">);</span>
4961<span class="identifier">acc</span><span class="special">(</span><span class="number">6.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">4.4</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">1.</span><span class="special">);</span>
4962
4963<span class="keyword">double</span> <span class="identifier">epsilon</span> <span class="special">=</span> <span class="number">1e-6</span><span class="special">;</span>
4964<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="identifier">weighted_covariance</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="special">-</span><span class="number">2.39</span><span class="special">,</span> <span class="identifier">epsilon</span><span class="special">);</span>
4965</pre>
4966<p>
4967          <span class="bold"><strong>See also</strong></span>
4968        </p>
4969<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
4970<li class="listitem">
4971              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_covariance_impl.html" title="Struct template weighted_covariance_impl">weighted_covariance_impl</a></code>
4972            </li>
4973<li class="listitem">
4974              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
4975            </li>
4976<li class="listitem">
4977              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum" title="sum and variants"><code class="literal">sum</code></a>
4978            </li>
4979<li class="listitem">
4980              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_mean" title="weighted_mean and variants"><code class="literal">weighted_mean</code></a>
4981            </li>
4982</ul></div>
4983</div>
4984<div class="section">
4985<div class="titlepage"><div><div><h4 class="title">
4986<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_density"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_density" title="weighted_density">weighted_density</a>
4987</h4></div></div></div>
4988<p>
4989          The <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_density</span></code> feature returns a histogram
4990          of the weighted sample distribution. For more implementation details, see
4991          <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_density_impl.html" title="Struct template weighted_density_impl">weighted_density_impl</a></code>.
4992        </p>
4993<div class="variablelist">
4994<p class="title"><b></b></p>
4995<dl class="variablelist">
4996<dt><span class="term">Result Type</span></dt>
4997<dd>
4998<p>
4999</p>
5000<pre class="programlisting"><span class="identifier">iterator_range</span><span class="special">&lt;</span>
5001    <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span>
5002        <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span>
5003            <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>weight-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
5004          <span class="special">,</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>weight-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
5005        <span class="special">&gt;</span>
5006    <span class="special">&gt;::</span><span class="identifier">iterator</span>
5007<span class="special">&gt;</span>
5008</pre>
5009<p>
5010              </p>
5011</dd>
5012<dt><span class="term">Depends On</span></dt>
5013<dd><p>
5014                <code class="computeroutput"><span class="identifier">count</span></code> <br> <code class="computeroutput"><span class="identifier">sum_of_weights</span></code> <br> <code class="computeroutput"><span class="identifier">min</span></code> <br> <code class="computeroutput"><span class="identifier">max</span></code>
5015              </p></dd>
5016<dt><span class="term">Variants</span></dt>
5017<dd><p>
5018                <span class="emphasis"><em>none</em></span>
5019              </p></dd>
5020<dt><span class="term">Initialization Parameters</span></dt>
5021<dd><p>
5022                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_density</span><span class="special">::</span><span class="identifier">cache_size</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_density</span><span class="special">::</span><span class="identifier">num_bins</span></code>
5023              </p></dd>
5024<dt><span class="term">Accumulator Parameters</span></dt>
5025<dd><p>
5026                <code class="computeroutput"><span class="identifier">weight</span></code>
5027              </p></dd>
5028<dt><span class="term">Extractor Parameters</span></dt>
5029<dd><p>
5030                <span class="emphasis"><em>none</em></span>
5031              </p></dd>
5032<dt><span class="term">Accumulator Complexity</span></dt>
5033<dd><p>
5034                TODO
5035              </p></dd>
5036<dt><span class="term">Extractor Complexity</span></dt>
5037<dd><p>
5038                O(N), when N is <code class="computeroutput"><span class="identifier">weighted_density</span><span class="special">::</span><span class="identifier">num_bins</span></code>
5039              </p></dd>
5040</dl>
5041</div>
5042<p>
5043          <span class="bold"><strong>Header</strong></span>
5044        </p>
5045<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_density_hpp" title="Header &lt;boost/accumulators/statistics/weighted_density.hpp&gt;">boost/accumulators/statistics/weighted_density.hpp</a></code><span class="special">&gt;</span>
5046</pre>
5047<p>
5048          <span class="bold"><strong>See also</strong></span>
5049        </p>
5050<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
5051<li class="listitem">
5052              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_density_impl.html" title="Struct template weighted_density_impl">weighted_density_impl</a></code>
5053            </li>
5054<li class="listitem">
5055              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
5056            </li>
5057<li class="listitem">
5058              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum" title="sum and variants"><code class="literal">sum</code></a>
5059            </li>
5060<li class="listitem">
5061              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.min" title="min"><code class="literal">min</code></a>
5062            </li>
5063<li class="listitem">
5064              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.max" title="max"><code class="literal">max</code></a>
5065            </li>
5066</ul></div>
5067</div>
5068<div class="section">
5069<div class="titlepage"><div><div><h4 class="title">
5070<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_extended_p_square"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_extended_p_square" title="weighted_extended_p_square">weighted_extended_p_square</a>
5071</h4></div></div></div>
5072<p>
5073          Multiple quantile estimation with the extended <code class="literal">P^2</code> algorithm
5074          for weighted samples. For further details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_39.html" title="Struct template weighted_extended_p_square_impl">weighted_extended_p_square_impl</a></code>.
5075        </p>
5076<div class="variablelist">
5077<p class="title"><b></b></p>
5078<dl class="variablelist">
5079<dt><span class="term">Result Type</span></dt>
5080<dd>
5081<p>
5082</p>
5083<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span><span class="special">&lt;</span>
5084    <em class="replaceable"><code>implementation-defined</code></em>
5085<span class="special">&gt;</span>
5086</pre>
5087<p>
5088              </p>
5089</dd>
5090<dt><span class="term">Depends On</span></dt>
5091<dd><p>
5092                <code class="computeroutput"><span class="identifier">count</span></code> <br> <code class="computeroutput"><span class="identifier">sum_of_weights</span></code>
5093              </p></dd>
5094<dt><span class="term">Variants</span></dt>
5095<dd><p>
5096                <span class="emphasis"><em>none</em></span>
5097              </p></dd>
5098<dt><span class="term">Initialization Parameters</span></dt>
5099<dd><p>
5100                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_extended_p_square</span><span class="special">::</span><span class="identifier">probabilities</span></code>
5101              </p></dd>
5102<dt><span class="term">Accumulator Parameters</span></dt>
5103<dd><p>
5104                <code class="computeroutput"><span class="identifier">weight</span></code>
5105              </p></dd>
5106<dt><span class="term">Extractor Parameters</span></dt>
5107<dd><p>
5108                <span class="emphasis"><em>none</em></span>
5109              </p></dd>
5110<dt><span class="term">Accumulator Complexity</span></dt>
5111<dd><p>
5112                TODO
5113              </p></dd>
5114<dt><span class="term">Extractor Complexity</span></dt>
5115<dd><p>
5116                O(1)
5117              </p></dd>
5118</dl>
5119</div>
5120<p>
5121          <span class="bold"><strong>Header</strong></span>
5122        </p>
5123<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_extended_p_square_hpp" title="Header &lt;boost/accumulators/statistics/weighted_extended_p_square.hpp&gt;">boost/accumulators/statistics/weighted_extended_p_square.hpp</a></code><span class="special">&gt;</span>
5124</pre>
5125<p>
5126          <span class="bold"><strong>Example</strong></span>
5127        </p>
5128<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_extended_p_square</span><span class="special">&gt;,</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">accumulator_t</span><span class="special">;</span>
5129
5130<span class="comment">// tolerance in %</span>
5131<span class="keyword">double</span> <span class="identifier">epsilon</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
5132
5133<span class="comment">// some random number generators</span>
5134<span class="keyword">double</span> <span class="identifier">mu1</span> <span class="special">=</span> <span class="special">-</span><span class="number">1.0</span><span class="special">;</span>
5135<span class="keyword">double</span> <span class="identifier">mu2</span> <span class="special">=</span>  <span class="number">1.0</span><span class="special">;</span>
5136<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
5137<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma1</span><span class="special">(</span><span class="identifier">mu1</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
5138<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma2</span><span class="special">(</span><span class="identifier">mu2</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
5139<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal1</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma1</span><span class="special">);</span>
5140<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal2</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma2</span><span class="special">);</span>
5141
5142<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">probs_uniform</span><span class="special">,</span> <span class="identifier">probs_normal1</span><span class="special">,</span> <span class="identifier">probs_normal2</span><span class="special">,</span> <span class="identifier">probs_normal_exact1</span><span class="special">,</span> <span class="identifier">probs_normal_exact2</span><span class="special">;</span>
5143
5144<span class="keyword">double</span> <span class="identifier">p1</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{/*</span><span class="number">0.001</span><span class="special">,*/</span> <span class="number">0.01</span><span class="special">,</span> <span class="number">0.1</span><span class="special">,</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.9</span><span class="special">,</span> <span class="number">0.99</span><span class="special">,</span> <span class="number">0.999</span><span class="special">};</span>
5145<span class="identifier">probs_uniform</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">p1</span><span class="special">,</span> <span class="identifier">p1</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">p1</span><span class="special">)</span> <span class="special">/</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">));</span>
5146
5147<span class="keyword">double</span> <span class="identifier">p2</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span><span class="number">0.001</span><span class="special">,</span> <span class="number">0.025</span><span class="special">};</span>
5148<span class="keyword">double</span> <span class="identifier">p3</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span><span class="number">0.975</span><span class="special">,</span> <span class="number">0.999</span><span class="special">};</span>
5149<span class="identifier">probs_normal1</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">p2</span><span class="special">,</span> <span class="identifier">p2</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">p2</span><span class="special">)</span> <span class="special">/</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">));</span>
5150<span class="identifier">probs_normal2</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">p3</span><span class="special">,</span> <span class="identifier">p3</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">p3</span><span class="special">)</span> <span class="special">/</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">));</span>
5151
5152<span class="keyword">double</span> <span class="identifier">p4</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{-</span><span class="number">3.090232</span><span class="special">,</span> <span class="special">-</span><span class="number">1.959963</span><span class="special">};</span>
5153<span class="keyword">double</span> <span class="identifier">p5</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span><span class="number">1.959963</span><span class="special">,</span> <span class="number">3.090232</span><span class="special">};</span>
5154<span class="identifier">probs_normal_exact1</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">p4</span><span class="special">,</span> <span class="identifier">p4</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">p4</span><span class="special">)</span> <span class="special">/</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">));</span>
5155<span class="identifier">probs_normal_exact2</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">p5</span><span class="special">,</span> <span class="identifier">p5</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">p5</span><span class="special">)</span> <span class="special">/</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">double</span><span class="special">));</span>
5156
5157<span class="identifier">accumulator_t</span> <span class="identifier">acc_uniform</span><span class="special">(</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_extended_p_square</span><span class="special">::</span><span class="identifier">probabilities</span> <span class="special">=</span> <span class="identifier">probs_uniform</span><span class="special">);</span>
5158<span class="identifier">accumulator_t</span> <span class="identifier">acc_normal1</span><span class="special">(</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_extended_p_square</span><span class="special">::</span><span class="identifier">probabilities</span> <span class="special">=</span> <span class="identifier">probs_normal1</span><span class="special">);</span>
5159<span class="identifier">accumulator_t</span> <span class="identifier">acc_normal2</span><span class="special">(</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_extended_p_square</span><span class="special">::</span><span class="identifier">probabilities</span> <span class="special">=</span> <span class="identifier">probs_normal2</span><span class="special">);</span>
5160
5161<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">100000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
5162<span class="special">{</span>
5163    <span class="identifier">acc_uniform</span><span class="special">(</span><span class="identifier">rng</span><span class="special">(),</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.</span><span class="special">);</span>
5164
5165    <span class="keyword">double</span> <span class="identifier">sample1</span> <span class="special">=</span> <span class="identifier">normal1</span><span class="special">();</span>
5166    <span class="keyword">double</span> <span class="identifier">sample2</span> <span class="special">=</span> <span class="identifier">normal2</span><span class="special">();</span>
5167    <span class="identifier">acc_normal1</span><span class="special">(</span><span class="identifier">sample1</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(-</span><span class="identifier">mu1</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample1</span> <span class="special">-</span> <span class="number">0.5</span> <span class="special">*</span> <span class="identifier">mu1</span><span class="special">)));</span>
5168    <span class="identifier">acc_normal2</span><span class="special">(</span><span class="identifier">sample2</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(-</span><span class="identifier">mu2</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample2</span> <span class="special">-</span> <span class="number">0.5</span> <span class="special">*</span> <span class="identifier">mu2</span><span class="special">)));</span>
5169<span class="special">}</span>
5170
5171<span class="comment">// check for uniform distribution    </span>
5172<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">probs_uniform</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
5173<span class="special">{</span>
5174    <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="identifier">weighted_extended_p_square</span><span class="special">(</span><span class="identifier">acc_uniform</span><span class="special">)[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">probs_uniform</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">epsilon</span><span class="special">);</span>
5175<span class="special">}</span>
5176
5177<span class="comment">// check for standard normal distribution</span>
5178<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">probs_normal1</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
5179<span class="special">{</span>
5180    <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="identifier">weighted_extended_p_square</span><span class="special">(</span><span class="identifier">acc_normal1</span><span class="special">)[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">probs_normal_exact1</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">epsilon</span><span class="special">);</span>
5181    <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="identifier">weighted_extended_p_square</span><span class="special">(</span><span class="identifier">acc_normal2</span><span class="special">)[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">probs_normal_exact2</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">epsilon</span><span class="special">);</span>
5182<span class="special">}</span>
5183</pre>
5184<p>
5185          <span class="bold"><strong>See also</strong></span>
5186        </p>
5187<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
5188<li class="listitem">
5189              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_39.html" title="Struct template weighted_extended_p_square_impl">weighted_extended_p_square_impl</a></code>
5190            </li>
5191<li class="listitem">
5192              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
5193            </li>
5194<li class="listitem">
5195              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum" title="sum and variants"><code class="literal">sum</code></a>
5196            </li>
5197</ul></div>
5198</div>
5199<div class="section">
5200<div class="titlepage"><div><div><h4 class="title">
5201<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_kurtosis"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_kurtosis" title="weighted_kurtosis">weighted_kurtosis</a>
5202</h4></div></div></div>
5203<p>
5204          The kurtosis of a sample distribution is defined as the ratio of the 4th
5205          central moment and the square of the 2nd central moment (the variance)
5206          of the samples, minus 3. The term <code class="literal">-3</code> is added in order
5207          to ensure that the normal distribution has zero kurtosis. For more implementation
5208          details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_kurtosis_impl.html" title="Struct template weighted_kurtosis_impl">weighted_kurtosis_impl</a></code>
5209        </p>
5210<div class="variablelist">
5211<p class="title"><b></b></p>
5212<dl class="variablelist">
5213<dt><span class="term">Result Type</span></dt>
5214<dd>
5215<p>
5216</p>
5217<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span>
5218    <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span>
5219  <span class="special">,</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span>
5220<span class="special">&gt;::</span><span class="identifier">result_type</span>
5221</pre>
5222<p>
5223              </p>
5224</dd>
5225<dt><span class="term">Depends On</span></dt>
5226<dd><p>
5227                <code class="computeroutput"><span class="identifier">weighted_mean</span></code> <br>
5228                <code class="computeroutput"><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span></code>
5229                <br> <code class="computeroutput"><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;</span></code> <br> <code class="computeroutput"><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span></code>
5230              </p></dd>
5231<dt><span class="term">Variants</span></dt>
5232<dd><p>
5233                <span class="emphasis"><em>none</em></span>
5234              </p></dd>
5235<dt><span class="term">Initialization Parameters</span></dt>
5236<dd><p>
5237                <span class="emphasis"><em>none</em></span>
5238              </p></dd>
5239<dt><span class="term">Accumulator Parameters</span></dt>
5240<dd><p>
5241                <span class="emphasis"><em>none</em></span>
5242              </p></dd>
5243<dt><span class="term">Extractor Parameters</span></dt>
5244<dd><p>
5245                <span class="emphasis"><em>none</em></span>
5246              </p></dd>
5247<dt><span class="term">Accumulator Complexity</span></dt>
5248<dd><p>
5249                O(1)
5250              </p></dd>
5251<dt><span class="term">Extractor Complexity</span></dt>
5252<dd><p>
5253                O(1)
5254              </p></dd>
5255</dl>
5256</div>
5257<p>
5258          <span class="bold"><strong>Header</strong></span>
5259        </p>
5260<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_kurtosis_hpp" title="Header &lt;boost/accumulators/statistics/weighted_kurtosis.hpp&gt;">boost/accumulators/statistics/weighted_kurtosis.hpp</a></code><span class="special">&gt;</span>
5261</pre>
5262<p>
5263          <span class="bold"><strong>Example</strong></span>
5264        </p>
5265<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_kurtosis</span><span class="special">&gt;,</span> <span class="keyword">int</span> <span class="special">&gt;</span> <span class="identifier">acc2</span><span class="special">;</span>
5266
5267<span class="identifier">acc2</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">4</span><span class="special">);</span>
5268<span class="identifier">acc2</span><span class="special">(</span><span class="number">7</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
5269<span class="identifier">acc2</span><span class="special">(</span><span class="number">4</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
5270<span class="identifier">acc2</span><span class="special">(</span><span class="number">9</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
5271<span class="identifier">acc2</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">2</span><span class="special">);</span>
5272
5273<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">weighted_mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">42.</span><span class="special">/</span><span class="number">11.</span> <span class="special">);</span>
5274<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">212.</span><span class="special">/</span><span class="number">11.</span> <span class="special">);</span>
5275<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1350.</span><span class="special">/</span><span class="number">11.</span> <span class="special">);</span>
5276<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">9956.</span><span class="special">/</span><span class="number">11.</span> <span class="special">);</span>
5277<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">weighted_kurtosis</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">0.58137026432</span><span class="special">,</span> <span class="number">1e-6</span> <span class="special">);</span>
5278</pre>
5279<p>
5280          <span class="bold"><strong>See also</strong></span>
5281        </p>
5282<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
5283<li class="listitem">
5284              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_kurtosis_impl.html" title="Struct template weighted_kurtosis_impl">weighted_kurtosis_impl</a></code>
5285            </li>
5286<li class="listitem">
5287              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_mean" title="weighted_mean and variants"><code class="literal">weighted_mean</code></a>
5288            </li>
5289<li class="listitem">
5290              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_moment" title="weighted_moment"><code class="literal">weighted_moment</code></a>
5291            </li>
5292</ul></div>
5293</div>
5294<div class="section">
5295<div class="titlepage"><div><div><h4 class="title">
5296<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_mean"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_mean" title="weighted_mean and variants">weighted_mean
5297        <span class="emphasis"><em>and variants</em></span></a>
5298</h4></div></div></div>
5299<p>
5300          Calculates the weighted mean of samples or variates. The calculation is
5301          either lazy (in the result extractor), or immediate (in the accumulator).
5302          The lazy implementation is the default. For more implementation details,
5303          see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_mean_impl.html" title="Struct template weighted_mean_impl">weighted_mean_impl</a></code>
5304          or. <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/imme_1_3_2_6_3_59_1_1_22_8.html" title="Struct template immediate_weighted_mean_impl">immediate_weighted_mean_impl</a></code>
5305        </p>
5306<div class="variablelist">
5307<p class="title"><b></b></p>
5308<dl class="variablelist">
5309<dt><span class="term">Result Type</span></dt>
5310<dd><p>
5311                For samples, <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span></code> <br> For variates,
5312                <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span><span class="special">,</span>
5313                <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span></code>
5314              </p></dd>
5315<dt><span class="term">Depends On</span></dt>
5316<dd><p>
5317                <code class="computeroutput"><span class="identifier">sum_of_weights</span></code> <br>
5318                The lazy mean of samples depends on <code class="computeroutput"><span class="identifier">weighted_sum</span></code>
5319                <br> The lazy mean of variates depends on <code class="computeroutput"><span class="identifier">weighted_sum_of_variates</span><span class="special">&lt;&gt;</span></code>
5320              </p></dd>
5321<dt><span class="term">Variants</span></dt>
5322<dd><p>
5323                <code class="computeroutput"><span class="identifier">weighted_mean_of_variates</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code> <br> <code class="computeroutput"><span class="identifier">immediate_weighted_mean</span></code>
5324                <br> <code class="computeroutput"><span class="identifier">immediate_weighted_mean_of_variates</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>
5325              </p></dd>
5326<dt><span class="term">Initialization Parameters</span></dt>
5327<dd><p>
5328                <span class="emphasis"><em>none</em></span>
5329              </p></dd>
5330<dt><span class="term">Accumulator Parameters</span></dt>
5331<dd><p>
5332                <span class="emphasis"><em>none</em></span>
5333              </p></dd>
5334<dt><span class="term">Extractor Parameters</span></dt>
5335<dd><p>
5336                <span class="emphasis"><em>none</em></span>
5337              </p></dd>
5338<dt><span class="term">Accumulator Complexity</span></dt>
5339<dd><p>
5340                O(1)
5341              </p></dd>
5342<dt><span class="term">Extractor Complexity</span></dt>
5343<dd><p>
5344                O(1)
5345              </p></dd>
5346</dl>
5347</div>
5348<p>
5349          <span class="bold"><strong>Header</strong></span>
5350        </p>
5351<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_mean_hpp" title="Header &lt;boost/accumulators/statistics/weighted_mean.hpp&gt;">boost/accumulators/statistics/weighted_mean.hpp</a></code><span class="special">&gt;</span>
5352</pre>
5353<p>
5354          <span class="bold"><strong>Example</strong></span>
5355        </p>
5356<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span>
5357    <span class="keyword">int</span>
5358  <span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span>
5359        <span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_mean</span>
5360      <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_mean_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;</span>
5361    <span class="special">&gt;</span>
5362  <span class="special">,</span> <span class="keyword">int</span>
5363<span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
5364
5365<span class="identifier">acc</span><span class="special">(</span><span class="number">10</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">7</span><span class="special">);</span>          <span class="comment">//  20</span>
5366<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">sum_of_weights</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>    <span class="comment">//</span>
5367                                              <span class="comment">//</span>
5368<span class="identifier">acc</span><span class="special">(</span><span class="number">6</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">3</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">8</span><span class="special">);</span>           <span class="comment">//  18</span>
5369<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="identifier">sum_of_weights</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>    <span class="comment">//</span>
5370                                              <span class="comment">//</span>
5371<span class="identifier">acc</span><span class="special">(</span><span class="number">4</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">9</span><span class="special">);</span>           <span class="comment">//  16</span>
5372<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">9</span><span class="special">,</span> <span class="identifier">sum_of_weights</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>    <span class="comment">//</span>
5373                                              <span class="comment">//</span>
5374<span class="identifier">acc</span><span class="special">(</span><span class="number">6</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">5</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">6</span><span class="special">);</span>           <span class="comment">//+ 30</span>
5375<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">14</span><span class="special">,</span> <span class="identifier">sum_of_weights</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>   <span class="comment">//</span>
5376                                              <span class="comment">//= 84  / 14 = 6</span>
5377
5378<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">6.</span><span class="special">,</span> <span class="identifier">weighted_mean</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
5379<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">52.</span><span class="special">/</span><span class="number">7.</span><span class="special">,</span> <span class="special">(</span><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_mean_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">acc</span><span class="special">)));</span>
5380
5381<span class="identifier">accumulator_set</span><span class="special">&lt;</span>
5382    <span class="keyword">int</span>
5383  <span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span>
5384        <span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_mean</span><span class="special">(</span><span class="identifier">immediate</span><span class="special">)</span>
5385      <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_mean_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">immediate</span><span class="special">)</span>
5386    <span class="special">&gt;</span>
5387  <span class="special">,</span> <span class="keyword">int</span>
5388<span class="special">&gt;</span> <span class="identifier">acc2</span><span class="special">;</span>
5389
5390<span class="identifier">acc2</span><span class="special">(</span><span class="number">10</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">7</span><span class="special">);</span>         <span class="comment">//  20</span>
5391<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">sum_of_weights</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">));</span>   <span class="comment">//</span>
5392                                              <span class="comment">//</span>
5393<span class="identifier">acc2</span><span class="special">(</span><span class="number">6</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">3</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">8</span><span class="special">);</span>          <span class="comment">//  18</span>
5394<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="identifier">sum_of_weights</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">));</span>   <span class="comment">//</span>
5395                                              <span class="comment">//</span>
5396<span class="identifier">acc2</span><span class="special">(</span><span class="number">4</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">9</span><span class="special">);</span>          <span class="comment">//  16</span>
5397<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">9</span><span class="special">,</span> <span class="identifier">sum_of_weights</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">));</span>   <span class="comment">//</span>
5398                                              <span class="comment">//</span>
5399<span class="identifier">acc2</span><span class="special">(</span><span class="number">6</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">5</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">6</span><span class="special">);</span>          <span class="comment">//+ 30</span>
5400<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">14</span><span class="special">,</span> <span class="identifier">sum_of_weights</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">));</span>  <span class="comment">//</span>
5401                                              <span class="comment">//= 84  / 14 = 6</span>
5402
5403<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">6.</span><span class="special">,</span> <span class="identifier">weighted_mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">));</span>
5404<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">52.</span><span class="special">/</span><span class="number">7.</span><span class="special">,</span> <span class="special">(</span><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_mean_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">)));</span>
5405</pre>
5406<p>
5407          <span class="bold"><strong>See also</strong></span>
5408        </p>
5409<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
5410<li class="listitem">
5411              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_mean_impl.html" title="Struct template weighted_mean_impl">weighted_mean_impl</a></code>
5412            </li>
5413<li class="listitem">
5414              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/imme_1_3_2_6_3_59_1_1_22_8.html" title="Struct template immediate_weighted_mean_impl">immediate_weighted_mean_impl</a></code>
5415            </li>
5416<li class="listitem">
5417              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_sum" title="weighted_sum and variants"><code class="literal">weighted_sum</code></a>
5418            </li>
5419<li class="listitem">
5420              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum" title="sum and variants"><code class="literal">sum</code></a>
5421            </li>
5422</ul></div>
5423</div>
5424<div class="section">
5425<div class="titlepage"><div><div><h4 class="title">
5426<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_median"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_median" title="weighted_median and variants">weighted_median
5427        <span class="emphasis"><em>and variants</em></span></a>
5428</h4></div></div></div>
5429<p>
5430          Median estimation for weighted samples based on the <code class="literal">P^2</code>
5431          quantile estimator, the density estimator, or the <code class="literal">P^2</code>
5432          cumulative distribution estimator. For more implementation details, see
5433          <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_median_impl.html" title="Struct template weighted_median_impl">weighted_median_impl</a></code>,
5434          <code class="computeroutput">with_weighted_density_median_impl</code>,
5435          and <code class="computeroutput">with_weighted_p_square_cumulative_distribution_median_impl</code>.
5436        </p>
5437<p>
5438          The three median accumulators all satisfy the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_median</span></code>
5439          feature, and can all be extracted with the <code class="computeroutput"><span class="identifier">weighted_median</span><span class="special">()</span></code> extractor.
5440        </p>
5441<div class="variablelist">
5442<p class="title"><b></b></p>
5443<dl class="variablelist">
5444<dt><span class="term">Result Type</span></dt>
5445<dd>
5446<p>
5447</p>
5448<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
5449</pre>
5450<p>
5451              </p>
5452</dd>
5453<dt><span class="term">Depends On</span></dt>
5454<dd><p>
5455                <code class="computeroutput"><span class="identifier">weighted_median</span></code> depends
5456                on <code class="computeroutput"><span class="identifier">weighted_p_square_quantile_for_median</span></code>
5457                <br> <code class="computeroutput"><span class="identifier">with_weighted_density_median</span></code>
5458                depends on <code class="computeroutput"><span class="identifier">count</span></code>
5459                and <code class="computeroutput"><span class="identifier">weighted_density</span></code>
5460                <br> <code class="computeroutput"><span class="identifier">with_weighted_p_square_cumulative_distribution_median</span></code>
5461                depends on <code class="computeroutput"><span class="identifier">weighted_p_square_cumulative_distribution</span></code>
5462              </p></dd>
5463<dt><span class="term">Variants</span></dt>
5464<dd><p>
5465                <code class="computeroutput"><span class="identifier">with_weighted_density_median</span></code>
5466                (a.k.a. <code class="computeroutput"><span class="identifier">weighted_median</span><span class="special">(</span><span class="identifier">with_weighted_density</span><span class="special">)</span></code>) <br> <code class="computeroutput"><span class="identifier">with_weighted_p_square_cumulative_distribution_median</span></code>
5467                (a.k.a. <code class="computeroutput"><span class="identifier">weighted_median</span><span class="special">(</span><span class="identifier">with_weighted_p_square_cumulative_distribution</span><span class="special">)</span></code>)
5468              </p></dd>
5469<dt><span class="term">Initialization Parameters</span></dt>
5470<dd><p>
5471                <code class="computeroutput"><span class="identifier">with_weighted_density_median</span></code>
5472                requires <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_density</span><span class="special">::</span><span class="identifier">cache_size</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_density</span><span class="special">::</span><span class="identifier">num_bins</span></code>
5473                <br> <code class="computeroutput"><span class="identifier">with_weighted_p_square_cumulative_distribution_median</span></code>
5474                requires <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_p_square_cumulative_distribution</span><span class="special">::</span><span class="identifier">num_cells</span></code>
5475              </p></dd>
5476<dt><span class="term">Accumulator Parameters</span></dt>
5477<dd><p>
5478                <code class="computeroutput"><span class="identifier">weight</span></code>
5479              </p></dd>
5480<dt><span class="term">Extractor Parameters</span></dt>
5481<dd><p>
5482                <span class="emphasis"><em>none</em></span>
5483              </p></dd>
5484<dt><span class="term">Accumulator Complexity</span></dt>
5485<dd><p>
5486                TODO
5487              </p></dd>
5488<dt><span class="term">Extractor Complexity</span></dt>
5489<dd><p>
5490                TODO
5491              </p></dd>
5492</dl>
5493</div>
5494<p>
5495          <span class="bold"><strong>Header</strong></span>
5496        </p>
5497<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_median_hpp" title="Header &lt;boost/accumulators/statistics/weighted_median.hpp&gt;">boost/accumulators/statistics/weighted_median.hpp</a></code><span class="special">&gt;</span>
5498</pre>
5499<p>
5500          <span class="bold"><strong>Example</strong></span>
5501        </p>
5502<pre class="programlisting"><span class="comment">// Median estimation of normal distribution N(1,1) using samples from a narrow normal distribution N(1,0.01)</span>
5503<span class="comment">// The weights equal to the likelihood ratio of the corresponding samples</span>
5504
5505<span class="comment">// two random number generators</span>
5506<span class="keyword">double</span> <span class="identifier">mu</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span>
5507<span class="keyword">double</span> <span class="identifier">sigma_narrow</span> <span class="special">=</span> <span class="number">0.01</span><span class="special">;</span>
5508<span class="keyword">double</span> <span class="identifier">sigma</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span>
5509<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
5510<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma_narrow</span><span class="special">(</span><span class="identifier">mu</span><span class="special">,</span><span class="identifier">sigma_narrow</span><span class="special">);</span>
5511<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal_narrow</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma_narrow</span><span class="special">);</span>
5512
5513<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_median</span><span class="special">(</span><span class="identifier">with_weighted_p_square_quantile</span><span class="special">)</span> <span class="special">&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
5514<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_median</span><span class="special">(</span><span class="identifier">with_weighted_density</span><span class="special">)</span> <span class="special">&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span>
5515    <span class="identifier">acc_dens</span><span class="special">(</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_density</span><span class="special">::</span><span class="identifier">cache_size</span> <span class="special">=</span> <span class="number">10000</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_density</span><span class="special">::</span><span class="identifier">num_bins</span> <span class="special">=</span> <span class="number">1000</span> <span class="special">);</span>
5516<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_median</span><span class="special">(</span><span class="identifier">with_weighted_p_square_cumulative_distribution</span><span class="special">)</span> <span class="special">&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span>
5517    <span class="identifier">acc_cdist</span><span class="special">(</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_p_square_cumulative_distribution</span><span class="special">::</span><span class="identifier">num_cells</span> <span class="special">=</span> <span class="number">100</span> <span class="special">);</span>
5518
5519<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span> <span class="identifier">i</span><span class="special">&lt;</span><span class="number">100000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
5520<span class="special">{</span>
5521    <span class="keyword">double</span> <span class="identifier">sample</span> <span class="special">=</span> <span class="identifier">normal_narrow</span><span class="special">();</span>
5522    <span class="identifier">acc</span><span class="special">(</span><span class="identifier">sample</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(</span><span class="number">0.5</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample</span> <span class="special">-</span> <span class="identifier">mu</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample</span> <span class="special">-</span> <span class="identifier">mu</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span> <span class="number">1.</span><span class="special">/</span><span class="identifier">sigma_narrow</span><span class="special">/</span><span class="identifier">sigma_narrow</span> <span class="special">-</span> <span class="number">1.</span><span class="special">/</span><span class="identifier">sigma</span><span class="special">/</span><span class="identifier">sigma</span> <span class="special">)));</span>
5523    <span class="identifier">acc_dens</span><span class="special">(</span><span class="identifier">sample</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(</span><span class="number">0.5</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample</span> <span class="special">-</span> <span class="identifier">mu</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample</span> <span class="special">-</span> <span class="identifier">mu</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span> <span class="number">1.</span><span class="special">/</span><span class="identifier">sigma_narrow</span><span class="special">/</span><span class="identifier">sigma_narrow</span> <span class="special">-</span> <span class="number">1.</span><span class="special">/</span><span class="identifier">sigma</span><span class="special">/</span><span class="identifier">sigma</span> <span class="special">)));</span>
5524    <span class="identifier">acc_cdist</span><span class="special">(</span><span class="identifier">sample</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(</span><span class="number">0.5</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample</span> <span class="special">-</span> <span class="identifier">mu</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample</span> <span class="special">-</span> <span class="identifier">mu</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span> <span class="number">1.</span><span class="special">/</span><span class="identifier">sigma_narrow</span><span class="special">/</span><span class="identifier">sigma_narrow</span> <span class="special">-</span> <span class="number">1.</span><span class="special">/</span><span class="identifier">sigma</span><span class="special">/</span><span class="identifier">sigma</span> <span class="special">)));</span>
5525<span class="special">}</span>
5526
5527<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">weighted_median</span><span class="special">(</span><span class="identifier">acc</span><span class="special">),</span> <span class="number">1e-1</span><span class="special">);</span>
5528<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">weighted_median</span><span class="special">(</span><span class="identifier">acc_dens</span><span class="special">),</span> <span class="number">1e-1</span><span class="special">);</span>
5529<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">weighted_median</span><span class="special">(</span><span class="identifier">acc_cdist</span><span class="special">),</span> <span class="number">1e-1</span><span class="special">);</span>
5530</pre>
5531<p>
5532          <span class="bold"><strong>See also</strong></span>
5533        </p>
5534<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
5535<li class="listitem">
5536              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_median_impl.html" title="Struct template weighted_median_impl">weighted_median_impl</a></code>
5537            </li>
5538<li class="listitem">
5539              <code class="computeroutput">with_weighted_density_median_impl</code>
5540            </li>
5541<li class="listitem">
5542              <code class="computeroutput">with_weighted_p_square_cumulative_distribution_median_impl</code>
5543            </li>
5544<li class="listitem">
5545              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
5546            </li>
5547<li class="listitem">
5548              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_p_square_quantile" title="weighted_p_square_quantile and variants"><code class="literal">weighted_p_square_quantile</code></a>
5549            </li>
5550<li class="listitem">
5551              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_p_square_cumulative_distribution" title="weighted_p_square_cumulative_distribution"><code class="literal">weighted_p_square_cumulative_distribution</code></a>
5552            </li>
5553</ul></div>
5554</div>
5555<div class="section">
5556<div class="titlepage"><div><div><h4 class="title">
5557<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_moment"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_moment" title="weighted_moment">weighted_moment</a>
5558</h4></div></div></div>
5559<p>
5560          Calculates the N-th moment of the weighted samples, which is defined as
5561          the sum of the weighted N-th power of the samples over the sum of the weights.
5562        </p>
5563<div class="variablelist">
5564<p class="title"><b></b></p>
5565<dl class="variablelist">
5566<dt><span class="term">Result Type</span></dt>
5567<dd>
5568<p>
5569</p>
5570<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span>
5571    <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span>
5572  <span class="special">,</span> <span class="identifier">weight_type</span>
5573<span class="special">&gt;::</span><span class="identifier">result_type</span>
5574</pre>
5575<p>
5576              </p>
5577</dd>
5578<dt><span class="term">Depends On</span></dt>
5579<dd><p>
5580                <code class="computeroutput"><span class="identifier">count</span></code> <br> <code class="computeroutput"><span class="identifier">sum_of_weights</span></code>
5581              </p></dd>
5582<dt><span class="term">Variants</span></dt>
5583<dd><p>
5584                <span class="emphasis"><em>none</em></span>
5585              </p></dd>
5586<dt><span class="term">Initialization Parameters</span></dt>
5587<dd><p>
5588                <span class="emphasis"><em>none</em></span>
5589              </p></dd>
5590<dt><span class="term">Accumulator Parameters</span></dt>
5591<dd><p>
5592                <code class="computeroutput"><span class="identifier">weight</span></code>
5593              </p></dd>
5594<dt><span class="term">Extractor Parameters</span></dt>
5595<dd><p>
5596                <span class="emphasis"><em>none</em></span>
5597              </p></dd>
5598<dt><span class="term">Accumulator Complexity</span></dt>
5599<dd><p>
5600                O(1)
5601              </p></dd>
5602<dt><span class="term">Extractor Complexity</span></dt>
5603<dd><p>
5604                O(1)
5605              </p></dd>
5606</dl>
5607</div>
5608<p>
5609          <span class="bold"><strong>Header</strong></span>
5610        </p>
5611<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_moment_hpp" title="Header &lt;boost/accumulators/statistics/weighted_moment.hpp&gt;">boost/accumulators/statistics/weighted_moment.hpp</a></code><span class="special">&gt;</span>
5612</pre>
5613<p>
5614          <span class="bold"><strong>Example</strong></span>
5615        </p>
5616<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="special">&gt;,</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">acc2</span><span class="special">;</span>
5617<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">7</span><span class="special">&gt;</span> <span class="special">&gt;,</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">acc7</span><span class="special">;</span>
5618
5619<span class="identifier">acc2</span><span class="special">(</span><span class="number">2.1</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">);</span>
5620<span class="identifier">acc2</span><span class="special">(</span><span class="number">2.7</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.4</span><span class="special">);</span>
5621<span class="identifier">acc2</span><span class="special">(</span><span class="number">1.8</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">);</span>
5622
5623<span class="identifier">acc7</span><span class="special">(</span><span class="number">2.1</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">);</span>
5624<span class="identifier">acc7</span><span class="special">(</span><span class="number">2.7</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.4</span><span class="special">);</span>
5625<span class="identifier">acc7</span><span class="special">(</span><span class="number">1.8</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">);</span>
5626
5627<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">5.403</span><span class="special">,</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
5628<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">548.54182</span><span class="special">,</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">7</span><span class="special">&gt;(</span><span class="identifier">acc7</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
5629</pre>
5630<p>
5631          <span class="bold"><strong>See also</strong></span>
5632        </p>
5633<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
5634<li class="listitem">
5635              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_moment_impl.html" title="Struct template weighted_moment_impl">weighted_moment_impl</a></code>
5636            </li>
5637<li class="listitem">
5638              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
5639            </li>
5640<li class="listitem">
5641              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum" title="sum and variants"><code class="literal">sum</code></a>
5642            </li>
5643</ul></div>
5644</div>
5645<div class="section">
5646<div class="titlepage"><div><div><h4 class="title">
5647<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_p_square_cumulative_distribution"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_p_square_cumulative_distribution" title="weighted_p_square_cumulative_distribution">weighted_p_square_cumulative_distribution</a>
5648</h4></div></div></div>
5649<p>
5650          Histogram calculation of the cumulative distribution with the <code class="literal">P^2</code>
5651          algorithm for weighted samples. For more implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_44.html" title="Struct template weighted_p_square_cumulative_distribution_impl">weighted_p_square_cumulative_distribution_impl</a></code>
5652        </p>
5653<div class="variablelist">
5654<p class="title"><b></b></p>
5655<dl class="variablelist">
5656<dt><span class="term">Result Type</span></dt>
5657<dd>
5658<p>
5659</p>
5660<pre class="programlisting"><span class="identifier">iterator_range</span><span class="special">&lt;</span>
5661    <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span>
5662        <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span>
5663            <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><span class="identifier">weighted_sample</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
5664          <span class="special">,</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span><span class="identifier">weighted_sample</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
5665        <span class="special">&gt;</span>
5666    <span class="special">&gt;::</span><span class="identifier">iterator</span>
5667<span class="special">&gt;</span>
5668</pre>
5669<p>
5670                where <code class="computeroutput"><span class="identifier">weighted_sample</span></code>
5671                is <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span></code>
5672              </p>
5673</dd>
5674<dt><span class="term">Depends On</span></dt>
5675<dd><p>
5676                <code class="computeroutput"><span class="identifier">count</span></code> <br> <code class="computeroutput"><span class="identifier">sum_or_weights</span></code>
5677              </p></dd>
5678<dt><span class="term">Variants</span></dt>
5679<dd><p>
5680                <span class="emphasis"><em>none</em></span>
5681              </p></dd>
5682<dt><span class="term">Initialization Parameters</span></dt>
5683<dd><p>
5684                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_p_square_cumulative_distribution</span><span class="special">::</span><span class="identifier">num_cells</span></code>
5685              </p></dd>
5686<dt><span class="term">Accumulator Parameters</span></dt>
5687<dd><p>
5688                <code class="computeroutput"><span class="identifier">weight</span></code>
5689              </p></dd>
5690<dt><span class="term">Extractor Parameters</span></dt>
5691<dd><p>
5692                <span class="emphasis"><em>none</em></span>
5693              </p></dd>
5694<dt><span class="term">Accumulator Complexity</span></dt>
5695<dd><p>
5696                TODO
5697              </p></dd>
5698<dt><span class="term">Extractor Complexity</span></dt>
5699<dd><p>
5700                O(N) where N is <code class="computeroutput"><span class="identifier">num_cells</span></code>
5701              </p></dd>
5702</dl>
5703</div>
5704<p>
5705          <span class="bold"><strong>Header</strong></span>
5706        </p>
5707<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_p_square_cumul_dist_hpp" title="Header &lt;boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp&gt;">boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp</a></code><span class="special">&gt;</span>
5708</pre>
5709<p>
5710          <span class="bold"><strong>Example</strong></span>
5711        </p>
5712<pre class="programlisting"><span class="comment">// tolerance in %</span>
5713<span class="keyword">double</span> <span class="identifier">epsilon</span> <span class="special">=</span> <span class="number">4</span><span class="special">;</span>
5714
5715<span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_p_square_cumulative_distribution</span><span class="special">&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">accumulator_t</span><span class="special">;</span>
5716
5717<span class="identifier">accumulator_t</span> <span class="identifier">acc_upper</span><span class="special">(</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_p_square_cumulative_distribution</span><span class="special">::</span><span class="identifier">num_cells</span> <span class="special">=</span> <span class="number">100</span><span class="special">);</span>
5718<span class="identifier">accumulator_t</span> <span class="identifier">acc_lower</span><span class="special">(</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_p_square_cumulative_distribution</span><span class="special">::</span><span class="identifier">num_cells</span> <span class="special">=</span> <span class="number">100</span><span class="special">);</span>
5719
5720<span class="comment">// two random number generators</span>
5721<span class="keyword">double</span> <span class="identifier">mu_upper</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span>
5722<span class="keyword">double</span> <span class="identifier">mu_lower</span> <span class="special">=</span> <span class="special">-</span><span class="number">1.0</span><span class="special">;</span>
5723<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
5724<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma_upper</span><span class="special">(</span><span class="identifier">mu_upper</span><span class="special">,</span><span class="number">1</span><span class="special">);</span>
5725<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma_lower</span><span class="special">(</span><span class="identifier">mu_lower</span><span class="special">,</span><span class="number">1</span><span class="special">);</span>
5726<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal_upper</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma_upper</span><span class="special">);</span>
5727<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal_lower</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma_lower</span><span class="special">);</span>
5728
5729<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span> <span class="identifier">i</span><span class="special">&lt;</span><span class="number">100000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
5730<span class="special">{</span>
5731    <span class="keyword">double</span> <span class="identifier">sample</span> <span class="special">=</span> <span class="identifier">normal_upper</span><span class="special">();</span>
5732    <span class="identifier">acc_upper</span><span class="special">(</span><span class="identifier">sample</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(-</span><span class="identifier">mu_upper</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample</span> <span class="special">-</span> <span class="number">0.5</span> <span class="special">*</span> <span class="identifier">mu_upper</span><span class="special">)));</span>
5733<span class="special">}</span>
5734
5735<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span> <span class="identifier">i</span><span class="special">&lt;</span><span class="number">100000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
5736<span class="special">{</span>
5737    <span class="keyword">double</span> <span class="identifier">sample</span> <span class="special">=</span> <span class="identifier">normal_lower</span><span class="special">();</span>
5738    <span class="identifier">acc_lower</span><span class="special">(</span><span class="identifier">sample</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(-</span><span class="identifier">mu_lower</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample</span> <span class="special">-</span> <span class="number">0.5</span> <span class="special">*</span> <span class="identifier">mu_lower</span><span class="special">)));</span>
5739<span class="special">}</span>
5740
5741<span class="keyword">typedef</span> <span class="identifier">iterator_range</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">iterator</span> <span class="special">&gt;</span> <span class="identifier">histogram_type</span><span class="special">;</span>
5742<span class="identifier">histogram_type</span> <span class="identifier">histogram_upper</span> <span class="special">=</span> <span class="identifier">weighted_p_square_cumulative_distribution</span><span class="special">(</span><span class="identifier">acc_upper</span><span class="special">);</span>
5743<span class="identifier">histogram_type</span> <span class="identifier">histogram_lower</span> <span class="special">=</span> <span class="identifier">weighted_p_square_cumulative_distribution</span><span class="special">(</span><span class="identifier">acc_lower</span><span class="special">);</span>
5744
5745<span class="comment">// Note that applying importance sampling results in a region of the distribution </span>
5746<span class="comment">// to be estimated more accurately and another region to be estimated less accurately</span>
5747<span class="comment">// than without importance sampling, i.e., with unweighted samples</span>
5748
5749<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">histogram_upper</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
5750<span class="special">{</span>
5751    <span class="comment">// problem with small results: epsilon is relative (in percent), not absolute!</span>
5752
5753    <span class="comment">// check upper region of distribution</span>
5754    <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">histogram_upper</span><span class="special">[</span><span class="identifier">i</span><span class="special">].</span><span class="identifier">second</span> <span class="special">&gt;</span> <span class="number">0.1</span> <span class="special">)</span>
5755        <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="number">0.5</span> <span class="special">*</span> <span class="special">(</span><span class="number">1.0</span> <span class="special">+</span> <span class="identifier">erf</span><span class="special">(</span> <span class="identifier">histogram_upper</span><span class="special">[</span><span class="identifier">i</span><span class="special">].</span><span class="identifier">first</span> <span class="special">/</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="number">2.0</span><span class="special">)</span> <span class="special">)),</span> <span class="identifier">histogram_upper</span><span class="special">[</span><span class="identifier">i</span><span class="special">].</span><span class="identifier">second</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
5756    <span class="comment">// check lower region of distribution</span>
5757    <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">histogram_lower</span><span class="special">[</span><span class="identifier">i</span><span class="special">].</span><span class="identifier">second</span> <span class="special">&lt;</span> <span class="special">-</span><span class="number">0.1</span> <span class="special">)</span>
5758        <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="number">0.5</span> <span class="special">*</span> <span class="special">(</span><span class="number">1.0</span> <span class="special">+</span> <span class="identifier">erf</span><span class="special">(</span> <span class="identifier">histogram_lower</span><span class="special">[</span><span class="identifier">i</span><span class="special">].</span><span class="identifier">first</span> <span class="special">/</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="number">2.0</span><span class="special">)</span> <span class="special">)),</span> <span class="identifier">histogram_lower</span><span class="special">[</span><span class="identifier">i</span><span class="special">].</span><span class="identifier">second</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
5759<span class="special">}</span>
5760</pre>
5761<p>
5762          <span class="bold"><strong>See also</strong></span>
5763        </p>
5764<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
5765<li class="listitem">
5766              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_44.html" title="Struct template weighted_p_square_cumulative_distribution_impl">weighted_p_square_cumulative_distribution_impl</a></code>
5767            </li>
5768<li class="listitem">
5769              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
5770            </li>
5771<li class="listitem">
5772              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum" title="sum and variants"><code class="literal">sum</code></a>
5773            </li>
5774</ul></div>
5775</div>
5776<div class="section">
5777<div class="titlepage"><div><div><h4 class="title">
5778<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_p_square_quantile"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_p_square_quantile" title="weighted_p_square_quantile and variants">weighted_p_square_quantile
5779        <span class="emphasis"><em>and variants</em></span></a>
5780</h4></div></div></div>
5781<p>
5782          Single quantile estimation with the <code class="literal">P^2</code> algorithm. For
5783          more implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_45.html" title="Struct template weighted_p_square_quantile_impl">weighted_p_square_quantile_impl</a></code>
5784        </p>
5785<div class="variablelist">
5786<p class="title"><b></b></p>
5787<dl class="variablelist">
5788<dt><span class="term">Result Type</span></dt>
5789<dd>
5790<p>
5791</p>
5792<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span>
5793    <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span>
5794  <span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
5795<span class="special">&gt;::</span><span class="identifier">result_type</span>
5796</pre>
5797<p>
5798              </p>
5799</dd>
5800<dt><span class="term">Depends On</span></dt>
5801<dd><p>
5802                <code class="computeroutput"><span class="identifier">count</span></code> <br> <code class="computeroutput"><span class="identifier">sum_of_weights</span></code>
5803              </p></dd>
5804<dt><span class="term">Variants</span></dt>
5805<dd><p>
5806                <code class="computeroutput"><span class="identifier">weighted_p_square_quantile_for_median</span></code>
5807              </p></dd>
5808<dt><span class="term">Initialization Parameters</span></dt>
5809<dd><p>
5810                <code class="computeroutput"><span class="identifier">quantile_probability</span></code>,
5811                which defaults to <code class="computeroutput"><span class="number">0.5</span></code>.
5812                (Note: for <code class="computeroutput"><span class="identifier">weighted_p_square_quantile_for_median</span></code>,
5813                the <code class="computeroutput"><span class="identifier">quantile_probability</span></code>
5814                parameter is ignored and is always <code class="computeroutput"><span class="number">0.5</span></code>.)
5815              </p></dd>
5816<dt><span class="term">Accumulator Parameters</span></dt>
5817<dd><p>
5818                <code class="computeroutput"><span class="identifier">weight</span></code>
5819              </p></dd>
5820<dt><span class="term">Extractor Parameters</span></dt>
5821<dd><p>
5822                <span class="emphasis"><em>none</em></span>
5823              </p></dd>
5824<dt><span class="term">Accumulator Complexity</span></dt>
5825<dd><p>
5826                TODO
5827              </p></dd>
5828<dt><span class="term">Extractor Complexity</span></dt>
5829<dd><p>
5830                O(1)
5831              </p></dd>
5832</dl>
5833</div>
5834<p>
5835          <span class="bold"><strong>Header</strong></span>
5836        </p>
5837<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_p_square_quantile_hpp" title="Header &lt;boost/accumulators/statistics/weighted_p_square_quantile.hpp&gt;">boost/accumulators/statistics/weighted_p_square_quantile.hpp</a></code><span class="special">&gt;</span>
5838</pre>
5839<p>
5840          <span class="bold"><strong>Example</strong></span>
5841        </p>
5842<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_p_square_quantile</span><span class="special">&gt;,</span> <span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">accumulator_t</span><span class="special">;</span>
5843
5844<span class="comment">// tolerance in %</span>
5845<span class="keyword">double</span> <span class="identifier">epsilon</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
5846
5847<span class="comment">// some random number generators</span>
5848<span class="keyword">double</span> <span class="identifier">mu4</span> <span class="special">=</span> <span class="special">-</span><span class="number">1.0</span><span class="special">;</span>
5849<span class="keyword">double</span> <span class="identifier">mu5</span> <span class="special">=</span> <span class="special">-</span><span class="number">1.0</span><span class="special">;</span>
5850<span class="keyword">double</span> <span class="identifier">mu6</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span>
5851<span class="keyword">double</span> <span class="identifier">mu7</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span>
5852<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
5853<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma4</span><span class="special">(</span><span class="identifier">mu4</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
5854<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma5</span><span class="special">(</span><span class="identifier">mu5</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
5855<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma6</span><span class="special">(</span><span class="identifier">mu6</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
5856<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma7</span><span class="special">(</span><span class="identifier">mu7</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
5857<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal4</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma4</span><span class="special">);</span>
5858<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal5</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma5</span><span class="special">);</span>
5859<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal6</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma6</span><span class="special">);</span>
5860<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal7</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma7</span><span class="special">);</span>
5861
5862<span class="identifier">accumulator_t</span> <span class="identifier">acc0</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.001</span><span class="special">);</span>
5863<span class="identifier">accumulator_t</span> <span class="identifier">acc1</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.025</span><span class="special">);</span>
5864<span class="identifier">accumulator_t</span> <span class="identifier">acc2</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.975</span><span class="special">);</span>
5865<span class="identifier">accumulator_t</span> <span class="identifier">acc3</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.999</span><span class="special">);</span>
5866
5867<span class="identifier">accumulator_t</span> <span class="identifier">acc4</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.001</span><span class="special">);</span>
5868<span class="identifier">accumulator_t</span> <span class="identifier">acc5</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.025</span><span class="special">);</span>
5869<span class="identifier">accumulator_t</span> <span class="identifier">acc6</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.975</span><span class="special">);</span>
5870<span class="identifier">accumulator_t</span> <span class="identifier">acc7</span><span class="special">(</span><span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.999</span><span class="special">);</span>
5871
5872
5873<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span> <span class="identifier">i</span><span class="special">&lt;</span><span class="number">100000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
5874<span class="special">{</span>
5875    <span class="keyword">double</span> <span class="identifier">sample</span> <span class="special">=</span> <span class="identifier">rng</span><span class="special">();</span>
5876    <span class="identifier">acc0</span><span class="special">(</span><span class="identifier">sample</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.</span><span class="special">);</span>
5877    <span class="identifier">acc1</span><span class="special">(</span><span class="identifier">sample</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.</span><span class="special">);</span>
5878    <span class="identifier">acc2</span><span class="special">(</span><span class="identifier">sample</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.</span><span class="special">);</span>
5879    <span class="identifier">acc3</span><span class="special">(</span><span class="identifier">sample</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.</span><span class="special">);</span>
5880
5881    <span class="keyword">double</span> <span class="identifier">sample4</span> <span class="special">=</span> <span class="identifier">normal4</span><span class="special">();</span>
5882    <span class="keyword">double</span> <span class="identifier">sample5</span> <span class="special">=</span> <span class="identifier">normal5</span><span class="special">();</span>
5883    <span class="keyword">double</span> <span class="identifier">sample6</span> <span class="special">=</span> <span class="identifier">normal6</span><span class="special">();</span>
5884    <span class="keyword">double</span> <span class="identifier">sample7</span> <span class="special">=</span> <span class="identifier">normal7</span><span class="special">();</span>
5885    <span class="identifier">acc4</span><span class="special">(</span><span class="identifier">sample4</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(-</span><span class="identifier">mu4</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample4</span> <span class="special">-</span> <span class="number">0.5</span> <span class="special">*</span> <span class="identifier">mu4</span><span class="special">)));</span>
5886    <span class="identifier">acc5</span><span class="special">(</span><span class="identifier">sample5</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(-</span><span class="identifier">mu5</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample5</span> <span class="special">-</span> <span class="number">0.5</span> <span class="special">*</span> <span class="identifier">mu5</span><span class="special">)));</span>
5887    <span class="identifier">acc6</span><span class="special">(</span><span class="identifier">sample6</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(-</span><span class="identifier">mu6</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample6</span> <span class="special">-</span> <span class="number">0.5</span> <span class="special">*</span> <span class="identifier">mu6</span><span class="special">)));</span>
5888    <span class="identifier">acc7</span><span class="special">(</span><span class="identifier">sample7</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(-</span><span class="identifier">mu7</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample7</span> <span class="special">-</span> <span class="number">0.5</span> <span class="special">*</span> <span class="identifier">mu7</span><span class="special">)));</span>
5889<span class="special">}</span>
5890
5891<span class="comment">// check for uniform distribution with weight = 1</span>
5892<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">weighted_p_square_quantile</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">),</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">15</span> <span class="special">);</span>
5893<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">weighted_p_square_quantile</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">),</span> <span class="number">0.025</span><span class="special">,</span> <span class="number">5</span> <span class="special">);</span>
5894<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">weighted_p_square_quantile</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">0.975</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
5895<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">weighted_p_square_quantile</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">),</span> <span class="number">0.999</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
5896
5897<span class="comment">// check for shifted standard normal distribution ("importance sampling")</span>
5898<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">weighted_p_square_quantile</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">),</span> <span class="special">-</span><span class="number">3.090232</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
5899<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">weighted_p_square_quantile</span><span class="special">(</span><span class="identifier">acc5</span><span class="special">),</span> <span class="special">-</span><span class="number">1.959963</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
5900<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">weighted_p_square_quantile</span><span class="special">(</span><span class="identifier">acc6</span><span class="special">),</span>  <span class="number">1.959963</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
5901<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">weighted_p_square_quantile</span><span class="special">(</span><span class="identifier">acc7</span><span class="special">),</span>  <span class="number">3.090232</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
5902</pre>
5903<p>
5904          <span class="bold"><strong>See also</strong></span>
5905        </p>
5906<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
5907<li class="listitem">
5908              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_45.html" title="Struct template weighted_p_square_quantile_impl">weighted_p_square_quantile_impl</a></code>
5909            </li>
5910<li class="listitem">
5911              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
5912            </li>
5913<li class="listitem">
5914              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum" title="sum and variants"><code class="literal">sum</code></a>
5915            </li>
5916</ul></div>
5917</div>
5918<div class="section">
5919<div class="titlepage"><div><div><h4 class="title">
5920<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_peaks_over_threshold"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_peaks_over_threshold" title="weighted_peaks_over_threshold and variants">weighted_peaks_over_threshold
5921        <span class="emphasis"><em>and variants</em></span></a>
5922</h4></div></div></div>
5923<p>
5924          Weighted peaks over threshold method for weighted quantile and weighted
5925          tail mean estimation. For more implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_46.html" title="Struct template weighted_peaks_over_threshold_impl">weighted_peaks_over_threshold_impl</a></code>
5926          and <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_47.html" title="Struct template weighted_peaks_over_threshold_prob_impl">weighted_peaks_over_threshold_prob_impl</a></code>.
5927        </p>
5928<p>
5929          Both <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_peaks_over_threshold</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_peaks_over_threshold_prob</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
5930          satisfy the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_peaks_over_threshold</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code> feature and can be extracted using
5931          the <code class="computeroutput"><span class="identifier">weighted_peaks_over_threshold</span><span class="special">()</span></code> extractor.
5932        </p>
5933<div class="variablelist">
5934<p class="title"><b></b></p>
5935<dl class="variablelist">
5936<dt><span class="term">Result Type</span></dt>
5937<dd>
5938<p>
5939                <code class="computeroutput"><span class="identifier">tuple</span><span class="special">&lt;</span><span class="identifier">float_type</span><span class="special">,</span>
5940                <span class="identifier">float_type</span><span class="special">,</span>
5941                <span class="identifier">float_type</span><span class="special">&gt;</span></code>
5942                where <code class="computeroutput"><span class="identifier">float_type</span></code>
5943                is
5944</p>
5945<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span>
5946    <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span>
5947  <span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
5948<span class="special">&gt;::</span><span class="identifier">result_type</span>
5949</pre>
5950<p>
5951              </p>
5952</dd>
5953<dt><span class="term">Depends On</span></dt>
5954<dd><p>
5955                <code class="computeroutput"><span class="identifier">weighted_peaks_over_threshold</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
5956                depends on <code class="computeroutput"><span class="identifier">sum_of_weights</span></code>
5957                <br> <code class="computeroutput"><span class="identifier">weighted_peaks_over_threshold_prob</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
5958                depends on <code class="computeroutput"><span class="identifier">sum_of_weights</span></code>
5959                and <code class="computeroutput"><span class="identifier">tail_weights</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
5960              </p></dd>
5961<dt><span class="term">Variants</span></dt>
5962<dd><p>
5963                <code class="computeroutput"><span class="identifier">weighted_peaks_over_threshold_prob</span></code>
5964              </p></dd>
5965<dt><span class="term">Initialization Parameters</span></dt>
5966<dd><p>
5967                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold</span><span class="special">::</span><span class="identifier">threshold_value</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">peaks_over_threshold_prob</span><span class="special">::</span><span class="identifier">threshold_probability</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
5968              </p></dd>
5969<dt><span class="term">Accumulator Parameters</span></dt>
5970<dd><p>
5971                <code class="computeroutput"><span class="identifier">weight</span></code>
5972              </p></dd>
5973<dt><span class="term">Extractor Parameters</span></dt>
5974<dd><p>
5975                <span class="emphasis"><em>none</em></span>
5976              </p></dd>
5977<dt><span class="term">Accumulator Complexity</span></dt>
5978<dd><p>
5979                TODO
5980              </p></dd>
5981<dt><span class="term">Extractor Complexity</span></dt>
5982<dd><p>
5983                O(1)
5984              </p></dd>
5985</dl>
5986</div>
5987<p>
5988          <span class="bold"><strong>Header</strong></span>
5989        </p>
5990<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_peaks_over_threshold_hpp" title="Header &lt;boost/accumulators/statistics/weighted_peaks_over_threshold.hpp&gt;">boost/accumulators/statistics/weighted_peaks_over_threshold.hpp</a></code><span class="special">&gt;</span>
5991</pre>
5992<p>
5993          <span class="bold"><strong>See also</strong></span>
5994        </p>
5995<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
5996<li class="listitem">
5997              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_46.html" title="Struct template weighted_peaks_over_threshold_impl">weighted_peaks_over_threshold_impl</a></code>
5998            </li>
5999<li class="listitem">
6000              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_47.html" title="Struct template weighted_peaks_over_threshold_prob_impl">weighted_peaks_over_threshold_prob_impl</a></code>
6001            </li>
6002<li class="listitem">
6003              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum" title="sum and variants"><code class="literal">sum</code></a>
6004            </li>
6005<li class="listitem">
6006              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail" title="tail"><code class="literal">tail</code></a>
6007            </li>
6008</ul></div>
6009</div>
6010<div class="section">
6011<div class="titlepage"><div><div><h4 class="title">
6012<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_skewness"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_skewness" title="weighted_skewness">weighted_skewness</a>
6013</h4></div></div></div>
6014<p>
6015          The skewness of a sample distribution is defined as the ratio of the 3rd
6016          central moment and the <code class="literal">3/2</code>-th power of the 2nd central
6017          moment (the variance) of the samples 3. The skewness estimator for weighted
6018          samples is formally identical to the estimator for unweighted samples,
6019          except that the weighted counterparts of all measures it depends on are
6020          to be taken.
6021        </p>
6022<p>
6023          For implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_skewness_impl.html" title="Struct template weighted_skewness_impl">weighted_skewness_impl</a></code>.
6024        </p>
6025<div class="variablelist">
6026<p class="title"><b></b></p>
6027<dl class="variablelist">
6028<dt><span class="term">Result Type</span></dt>
6029<dd>
6030<p>
6031</p>
6032<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span>
6033    <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span>
6034  <span class="special">,</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span>
6035<span class="special">&gt;::</span><span class="identifier">result_type</span>
6036</pre>
6037<p>
6038              </p>
6039</dd>
6040<dt><span class="term">Depends On</span></dt>
6041<dd><p>
6042                <code class="computeroutput"><span class="identifier">weighted_mean</span></code> <br>
6043                <code class="computeroutput"><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span></code>
6044                <br> <code class="computeroutput"><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;</span></code>
6045              </p></dd>
6046<dt><span class="term">Variants</span></dt>
6047<dd><p>
6048                <span class="emphasis"><em>none</em></span>
6049              </p></dd>
6050<dt><span class="term">Initialization Parameters</span></dt>
6051<dd><p>
6052                <span class="emphasis"><em>none</em></span>
6053              </p></dd>
6054<dt><span class="term">Accumulator Parameters</span></dt>
6055<dd><p>
6056                <code class="computeroutput"><span class="identifier">weight</span></code>
6057              </p></dd>
6058<dt><span class="term">Extractor Parameters</span></dt>
6059<dd><p>
6060                <span class="emphasis"><em>none</em></span>
6061              </p></dd>
6062<dt><span class="term">Accumulator Complexity</span></dt>
6063<dd><p>
6064                O(1)
6065              </p></dd>
6066<dt><span class="term">Extractor Complexity</span></dt>
6067<dd><p>
6068                O(1)
6069              </p></dd>
6070</dl>
6071</div>
6072<p>
6073          <span class="bold"><strong>Header</strong></span>
6074        </p>
6075<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_skewness_hpp" title="Header &lt;boost/accumulators/statistics/weighted_skewness.hpp&gt;">boost/accumulators/statistics/weighted_skewness.hpp</a></code><span class="special">&gt;</span>
6076</pre>
6077<p>
6078          <span class="bold"><strong>Example</strong></span>
6079        </p>
6080<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_skewness</span><span class="special">&gt;,</span> <span class="keyword">int</span> <span class="special">&gt;</span> <span class="identifier">acc2</span><span class="special">;</span>
6081
6082<span class="identifier">acc2</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">4</span><span class="special">);</span>
6083<span class="identifier">acc2</span><span class="special">(</span><span class="number">7</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
6084<span class="identifier">acc2</span><span class="special">(</span><span class="number">4</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
6085<span class="identifier">acc2</span><span class="special">(</span><span class="number">9</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
6086<span class="identifier">acc2</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">2</span><span class="special">);</span>
6087
6088<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">weighted_mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">42.</span><span class="special">/</span><span class="number">11.</span> <span class="special">);</span>
6089<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">212.</span><span class="special">/</span><span class="number">11.</span> <span class="special">);</span>
6090<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1350.</span><span class="special">/</span><span class="number">11.</span> <span class="special">);</span>
6091<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">weighted_skewness</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1.30708406282</span><span class="special">,</span> <span class="number">1e-6</span> <span class="special">);</span>
6092</pre>
6093<p>
6094          <span class="bold"><strong>See also</strong></span>
6095        </p>
6096<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
6097<li class="listitem">
6098              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_skewness_impl.html" title="Struct template weighted_skewness_impl">weighted_skewness_impl</a></code>
6099            </li>
6100<li class="listitem">
6101              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_mean" title="weighted_mean and variants"><code class="literal">weighted_mean</code></a>
6102            </li>
6103<li class="listitem">
6104              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_moment" title="weighted_moment"><code class="literal">weighted_moment</code></a>
6105            </li>
6106</ul></div>
6107</div>
6108<div class="section">
6109<div class="titlepage"><div><div><h4 class="title">
6110<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_sum"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_sum" title="weighted_sum and variants">weighted_sum
6111        <span class="emphasis"><em>and variants</em></span></a>
6112</h4></div></div></div>
6113<p>
6114          For summing the weighted samples or variates. All of the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_sum_of_variates</span><span class="special">&lt;&gt;</span></code>
6115          features can be extracted with the <code class="computeroutput"><span class="identifier">weighted_sum_of_variates</span><span class="special">()</span></code> extractor. Variants that implement the
6116          Kahan summation algorithm are also provided.
6117        </p>
6118<div class="variablelist">
6119<p class="title"><b></b></p>
6120<dl class="variablelist">
6121<dt><span class="term">Result Type</span></dt>
6122<dd><p>
6123                <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span></code> for summing weighted
6124                samples <br> <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span></code>
6125                for summing weighted variates
6126              </p></dd>
6127<dt><span class="term">Depends On</span></dt>
6128<dd><p>
6129                <span class="emphasis"><em>none</em></span>
6130              </p></dd>
6131<dt><span class="term">Variants</span></dt>
6132<dd><p>
6133                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_sum</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_sum_of_variates</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>
6134                <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_sum_kahan</span></code> (a.k.a. tag::weighted_sum(kahan))
6135                <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_sum_of_variates_kahan</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code> <br>
6136              </p></dd>
6137<dt><span class="term">Initialization Parameters</span></dt>
6138<dd><p>
6139                <span class="emphasis"><em>none</em></span>
6140              </p></dd>
6141<dt><span class="term">Accumulator Parameters</span></dt>
6142<dd><p>
6143                <code class="computeroutput"><span class="identifier">weight</span></code> <br> <code class="computeroutput"><em class="replaceable"><code>variate-tag</code></em></code>
6144                for summing variates
6145              </p></dd>
6146<dt><span class="term">Extractor Parameters</span></dt>
6147<dd><p>
6148                <span class="emphasis"><em>none</em></span>
6149              </p></dd>
6150<dt><span class="term">Accumulator Complexity</span></dt>
6151<dd><p>
6152                O(1). Note that the Kahan sum performs four floating-point sum operations
6153                per accumulated value, whereas the naive sum performs only one.
6154              </p></dd>
6155<dt><span class="term">Extractor Complexity</span></dt>
6156<dd><p>
6157                O(1)
6158              </p></dd>
6159</dl>
6160</div>
6161<p>
6162          <span class="bold"><strong>Header</strong></span>
6163        </p>
6164<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_sum_hpp" title="Header &lt;boost/accumulators/statistics/weighted_sum.hpp&gt;">boost/accumulators/statistics/weighted_sum.hpp</a></code><span class="special">&gt;</span>
6165<span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_sum_kahan_hpp" title="Header &lt;boost/accumulators/statistics/weighted_sum_kahan.hpp&gt;">boost/accumulators/statistics/weighted_sum_kahan.hpp</a></code><span class="special">&gt;</span>
6166</pre>
6167<p>
6168          <span class="bold"><strong>Example</strong></span>
6169        </p>
6170<pre class="programlisting"><span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_sum</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_sum_of_variates</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;</span> <span class="special">&gt;,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
6171
6172<span class="identifier">acc</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
6173<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">weighted_sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
6174<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">6</span><span class="special">,</span> <span class="identifier">weighted_sum_of_variates</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
6175
6176<span class="identifier">acc</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">3</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">6</span><span class="special">);</span>
6177<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">8</span><span class="special">,</span> <span class="identifier">weighted_sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
6178<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">24</span><span class="special">,</span> <span class="identifier">weighted_sum_of_variates</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
6179
6180<span class="identifier">acc</span><span class="special">(</span><span class="number">4</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">6</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="number">9</span><span class="special">);</span>
6181<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">32</span><span class="special">,</span> <span class="identifier">weighted_sum</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
6182<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">78</span><span class="special">,</span> <span class="identifier">weighted_sum_of_variates</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
6183
6184<span class="comment">// demonstrate weighted Kahan summation</span>
6185<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_sum_kahan</span><span class="special">&gt;,</span> <span class="keyword">float</span> <span class="special">&gt;</span> <span class="identifier">acc</span><span class="special">;</span>
6186<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">0.0f</span><span class="special">,</span> <span class="identifier">weighted_sum_kahan</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
6187<span class="keyword">for</span> <span class="special">(</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">1e6</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
6188  <span class="identifier">acc</span><span class="special">(</span><span class="number">1.0f</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1e-6f</span><span class="special">);</span>
6189<span class="special">}</span>
6190<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">1.0f</span><span class="special">,</span> <span class="identifier">weighted_sum_kahan</span><span class="special">(</span><span class="identifier">acc</span><span class="special">));</span>
6191</pre>
6192<p>
6193          <span class="bold"><strong>See also</strong></span>
6194        </p>
6195<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
6196<li class="listitem">
6197              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_sum_impl.html" title="Struct template weighted_sum_impl">weighted_sum_impl</a></code>
6198            </li>
6199<li class="listitem">
6200              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_sum_impl.html" title="Struct template weighted_sum_impl">weighted_sum_kahan_impl</a></code>
6201            </li>
6202</ul></div>
6203</div>
6204<div class="section">
6205<div class="titlepage"><div><div><h4 class="title">
6206<a name="accumulators.user_s_guide.the_statistical_accumulators_library.non_coherent_weighted_tail_mean"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.non_coherent_weighted_tail_mean" title="non_coherent_weighted_tail_mean">non_coherent_weighted_tail_mean</a>
6207</h4></div></div></div>
6208<p>
6209          Estimation of the (non-coherent) weighted tail mean based on order statistics
6210          (for both left and right tails). The left non-coherent weighted tail mean
6211          feature is <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span></code>,
6212          and the right non-choherent weighted tail mean feature is <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span></code>.
6213          They both share the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">abstract_non_coherent_tail_mean</span></code>
6214          feature with the unweighted non-coherent tail mean accumulators and can
6215          be extracted with either the <code class="computeroutput"><span class="identifier">non_coherent_tail_mean</span><span class="special">()</span></code> or the <code class="computeroutput"><span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">()</span></code> extractors. For more implementation details,
6216          see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/non_1_3_2_6_3_59_1_1_22_18.html" title="Struct template non_coherent_weighted_tail_mean_impl">non_coherent_weighted_tail_mean_impl</a></code>.
6217        </p>
6218<div class="variablelist">
6219<p class="title"><b></b></p>
6220<dl class="variablelist">
6221<dt><span class="term">Result Type</span></dt>
6222<dd>
6223<p>
6224</p>
6225<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span>
6226    <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span>
6227  <span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
6228<span class="special">&gt;::</span><span class="identifier">result_type</span>
6229</pre>
6230<p>
6231              </p>
6232</dd>
6233<dt><span class="term">Depends On</span></dt>
6234<dd><p>
6235                <code class="computeroutput"><span class="identifier">sum_of_weights</span></code> <br>
6236                <code class="computeroutput"><span class="identifier">tail_weights</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
6237              </p></dd>
6238<dt><span class="term">Variants</span></dt>
6239<dd><p>
6240                <code class="computeroutput"><span class="identifier">abstract_non_coherent_tail_mean</span></code>
6241              </p></dd>
6242<dt><span class="term">Initialization Parameters</span></dt>
6243<dd><p>
6244                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
6245              </p></dd>
6246<dt><span class="term">Accumulator Parameters</span></dt>
6247<dd><p>
6248                <span class="emphasis"><em>none</em></span>
6249              </p></dd>
6250<dt><span class="term">Extractor Parameters</span></dt>
6251<dd><p>
6252                <code class="computeroutput"><span class="identifier">quantile_probability</span></code>
6253              </p></dd>
6254<dt><span class="term">Accumulator Complexity</span></dt>
6255<dd><p>
6256                O(log N), where N is the cache size
6257              </p></dd>
6258<dt><span class="term">Extractor Complexity</span></dt>
6259<dd><p>
6260                O(N log N), where N is the cache size
6261              </p></dd>
6262</dl>
6263</div>
6264<p>
6265          <span class="bold"><strong>Header</strong></span>
6266        </p>
6267<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_tail_mean_hpp" title="Header &lt;boost/accumulators/statistics/weighted_tail_mean.hpp&gt;">boost/accumulators/statistics/weighted_tail_mean.hpp</a></code><span class="special">&gt;</span>
6268</pre>
6269<p>
6270          <span class="bold"><strong>Example</strong></span>
6271        </p>
6272<pre class="programlisting"><span class="comment">// tolerance in %</span>
6273<span class="keyword">double</span> <span class="identifier">epsilon</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
6274
6275<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span> <span class="special">=</span> <span class="number">100000</span><span class="special">;</span> <span class="comment">// number of MC steps</span>
6276<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">c</span> <span class="special">=</span> <span class="number">25000</span><span class="special">;</span> <span class="comment">// cache size</span>
6277
6278<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span> <span class="special">&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span>
6279    <span class="identifier">acc0</span><span class="special">(</span> <span class="identifier">right_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
6280<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span> <span class="special">&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span>
6281    <span class="identifier">acc1</span><span class="special">(</span> <span class="identifier">left_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
6282
6283<span class="comment">// random number generators</span>
6284<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
6285
6286<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">n</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
6287<span class="special">{</span>
6288    <span class="keyword">double</span> <span class="identifier">smpl</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">rng</span><span class="special">());</span>
6289    <span class="identifier">acc0</span><span class="special">(</span><span class="identifier">smpl</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.</span><span class="special">/</span><span class="identifier">smpl</span><span class="special">);</span>
6290<span class="special">}</span>
6291
6292<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">n</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
6293<span class="special">{</span>
6294    <span class="keyword">double</span> <span class="identifier">smpl</span> <span class="special">=</span> <span class="identifier">rng</span><span class="special">();</span>
6295    <span class="identifier">acc1</span><span class="special">(</span><span class="identifier">smpl</span><span class="special">*</span><span class="identifier">smpl</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">smpl</span><span class="special">);</span>
6296<span class="special">}</span>
6297
6298<span class="comment">// check uniform distribution</span>
6299<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.95</span><span class="special">),</span> <span class="number">0.975</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
6300<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.975</span><span class="special">),</span> <span class="number">0.9875</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
6301<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.99</span><span class="special">),</span> <span class="number">0.995</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
6302<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">(</span><span class="identifier">acc0</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.999</span><span class="special">),</span> <span class="number">0.9995</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
6303<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.05</span><span class="special">),</span> <span class="number">0.025</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
6304<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.025</span><span class="special">),</span> <span class="number">0.0125</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
6305<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.01</span><span class="special">),</span> <span class="number">0.005</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
6306<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.001</span><span class="special">),</span> <span class="number">0.0005</span><span class="special">,</span> <span class="number">5</span><span class="special">*</span><span class="identifier">epsilon</span> <span class="special">);</span>
6307</pre>
6308<p>
6309          <span class="bold"><strong>See also</strong></span>
6310        </p>
6311<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
6312<li class="listitem">
6313              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/non_1_3_2_6_3_59_1_1_22_18.html" title="Struct template non_coherent_weighted_tail_mean_impl">non_coherent_weighted_tail_mean_impl</a></code>
6314            </li>
6315<li class="listitem">
6316              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum" title="sum and variants"><code class="literal">sum</code></a>
6317            </li>
6318<li class="listitem">
6319              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail" title="tail"><code class="literal">tail</code></a>
6320            </li>
6321</ul></div>
6322</div>
6323<div class="section">
6324<div class="titlepage"><div><div><h4 class="title">
6325<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_tail_quantile"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_tail_quantile" title="weighted_tail_quantile">weighted_tail_quantile</a>
6326</h4></div></div></div>
6327<p>
6328          Tail quantile estimation based on order statistics of weighted samples
6329          (for both left and right tails). The left weighted tail quantile feature
6330          is <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_tail_quantile</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span></code>,
6331          and the right weighted tail quantile feature is <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_tail_quantile</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span></code>. They both share the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">quantile</span></code> feature with the unweighted
6332          tail quantile accumulators and can be extracted with either the <code class="computeroutput"><span class="identifier">quantile</span><span class="special">()</span></code>
6333          or the <code class="computeroutput"><span class="identifier">weighted_tail_quantile</span><span class="special">()</span></code> extractors. For more implementation details,
6334          see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_51.html" title="Struct template weighted_tail_quantile_impl">weighted_tail_quantile_impl</a></code>
6335        </p>
6336<div class="variablelist">
6337<p class="title"><b></b></p>
6338<dl class="variablelist">
6339<dt><span class="term">Result Type</span></dt>
6340<dd>
6341<p>
6342</p>
6343<pre class="programlisting"><em class="replaceable"><code>sample-type</code></em>
6344</pre>
6345<p>
6346              </p>
6347</dd>
6348<dt><span class="term">Depends On</span></dt>
6349<dd><p>
6350                <code class="computeroutput"><span class="identifier">sum_of_weights</span></code> <br>
6351                <code class="computeroutput"><span class="identifier">tail_weights</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
6352              </p></dd>
6353<dt><span class="term">Variants</span></dt>
6354<dd><p>
6355                <span class="emphasis"><em>none</em></span>
6356              </p></dd>
6357<dt><span class="term">Initialization Parameters</span></dt>
6358<dd><p>
6359                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
6360              </p></dd>
6361<dt><span class="term">Accumulator Parameters</span></dt>
6362<dd><p>
6363                <span class="emphasis"><em>none</em></span>
6364              </p></dd>
6365<dt><span class="term">Extractor Parameters</span></dt>
6366<dd><p>
6367                <code class="computeroutput"><span class="identifier">quantile_probability</span></code>
6368              </p></dd>
6369<dt><span class="term">Accumulator Complexity</span></dt>
6370<dd><p>
6371                O(log N), where N is the cache size
6372              </p></dd>
6373<dt><span class="term">Extractor Complexity</span></dt>
6374<dd><p>
6375                O(N log N), where N is the cache size
6376              </p></dd>
6377</dl>
6378</div>
6379<p>
6380          <span class="bold"><strong>Header</strong></span>
6381        </p>
6382<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_tail_quantile_hpp" title="Header &lt;boost/accumulators/statistics/weighted_tail_quantile.hpp&gt;">boost/accumulators/statistics/weighted_tail_quantile.hpp</a></code><span class="special">&gt;</span>
6383</pre>
6384<p>
6385          <span class="bold"><strong>Example</strong></span>
6386        </p>
6387<pre class="programlisting"><span class="comment">// tolerance in %</span>
6388<span class="keyword">double</span> <span class="identifier">epsilon</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
6389
6390<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span> <span class="special">=</span> <span class="number">100000</span><span class="special">;</span> <span class="comment">// number of MC steps</span>
6391<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">c</span> <span class="special">=</span>  <span class="number">20000</span><span class="special">;</span> <span class="comment">// cache size</span>
6392
6393<span class="keyword">double</span> <span class="identifier">mu1</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span>
6394<span class="keyword">double</span> <span class="identifier">mu2</span> <span class="special">=</span> <span class="special">-</span><span class="number">1.0</span><span class="special">;</span>
6395<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
6396<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma1</span><span class="special">(</span><span class="identifier">mu1</span><span class="special">,</span><span class="number">1</span><span class="special">);</span>
6397<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma2</span><span class="special">(</span><span class="identifier">mu2</span><span class="special">,</span><span class="number">1</span><span class="special">);</span>
6398<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal1</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma1</span><span class="special">);</span>
6399<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal2</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma2</span><span class="special">);</span>
6400
6401<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_tail_quantile</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">&gt;</span> <span class="special">&gt;,</span> <span class="keyword">double</span><span class="special">&gt;</span>
6402    <span class="identifier">acc1</span><span class="special">(</span><span class="identifier">right_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span><span class="special">);</span>
6403
6404<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_tail_quantile</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">&gt;</span> <span class="special">&gt;,</span> <span class="keyword">double</span><span class="special">&gt;</span>
6405    <span class="identifier">acc2</span><span class="special">(</span><span class="identifier">left_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span><span class="special">);</span>
6406
6407<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">n</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
6408<span class="special">{</span>
6409    <span class="keyword">double</span> <span class="identifier">sample1</span> <span class="special">=</span> <span class="identifier">normal1</span><span class="special">();</span>
6410    <span class="keyword">double</span> <span class="identifier">sample2</span> <span class="special">=</span> <span class="identifier">normal2</span><span class="special">();</span>
6411    <span class="identifier">acc1</span><span class="special">(</span><span class="identifier">sample1</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(-</span><span class="identifier">mu1</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample1</span> <span class="special">-</span> <span class="number">0.5</span> <span class="special">*</span> <span class="identifier">mu1</span><span class="special">)));</span>
6412    <span class="identifier">acc2</span><span class="special">(</span><span class="identifier">sample2</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span><span class="special">(-</span><span class="identifier">mu2</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">sample2</span> <span class="special">-</span> <span class="number">0.5</span> <span class="special">*</span> <span class="identifier">mu2</span><span class="special">)));</span>
6413<span class="special">}</span>
6414
6415<span class="comment">// check standard normal distribution</span>
6416<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.975</span><span class="special">),</span>  <span class="number">1.959963</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
6417<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.999</span><span class="special">),</span>  <span class="number">3.090232</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
6418<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span>  <span class="special">=</span> <span class="number">0.025</span><span class="special">),</span> <span class="special">-</span><span class="number">1.959963</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
6419<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span>  <span class="special">=</span> <span class="number">0.001</span><span class="special">),</span> <span class="special">-</span><span class="number">3.090232</span><span class="special">,</span> <span class="identifier">epsilon</span> <span class="special">);</span>
6420</pre>
6421<p>
6422          <span class="bold"><strong>See also</strong></span>
6423        </p>
6424<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
6425<li class="listitem">
6426              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_51.html" title="Struct template weighted_tail_quantile_impl">weighted_tail_quantile_impl</a></code>
6427            </li>
6428<li class="listitem">
6429              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.sum" title="sum and variants"><code class="literal">sum</code></a>
6430            </li>
6431<li class="listitem">
6432              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail" title="tail"><code class="literal">tail</code></a>
6433            </li>
6434</ul></div>
6435</div>
6436<div class="section">
6437<div class="titlepage"><div><div><h4 class="title">
6438<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_tail_variate_means"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_tail_variate_means" title="weighted_tail_variate_means and variants">weighted_tail_variate_means
6439        <span class="emphasis"><em>and variants</em></span></a>
6440</h4></div></div></div>
6441<p>
6442          Estimation of the absolute and relative weighted tail variate means (for
6443          both left and right tails) The absolute weighted tail variate means has
6444          the feature <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">absolute_weighted_tail_variate_means</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">,</span> <em class="replaceable"><code>variate-type</code></em><span class="special">,</span>
6445          <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code> and the relative weighted tail
6446          variate mean has the feature <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">,</span> <em class="replaceable"><code>variate-type</code></em><span class="special">,</span>
6447          <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>. All absolute weighted tail
6448          variate mean features share the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">abstract_absolute_tail_variate_means</span></code>
6449          feature with their unweighted variants and can be extracted with the <code class="computeroutput"><span class="identifier">tail_variate_means</span><span class="special">()</span></code>
6450          and <code class="computeroutput"><span class="identifier">weighted_tail_variate_means</span><span class="special">()</span></code> extractors. All the relative weighted
6451          tail variate mean features share the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">abstract_relative_tail_variate_means</span></code>
6452          feature with their unweighted variants and can be extracted with either
6453          the <code class="computeroutput"><span class="identifier">relative_tail_variate_means</span><span class="special">()</span></code> or <code class="computeroutput"><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">()</span></code> extractors.
6454        </p>
6455<p>
6456          For more implementation details, see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_52.html" title="Struct template weighted_tail_variate_means_impl">weighted_tail_variate_means_impl</a></code>
6457        </p>
6458<div class="variablelist">
6459<p class="title"><b></b></p>
6460<dl class="variablelist">
6461<dt><span class="term">Result Type</span></dt>
6462<dd>
6463<p>
6464</p>
6465<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span><span class="special">&lt;</span>
6466    <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span>
6467        <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span>
6468      <span class="special">,</span> <em class="replaceable"><code>weight-type</code></em>
6469    <span class="special">&gt;::</span><span class="identifier">result_type</span><span class="special">::</span><span class="identifier">iterator</span>
6470<span class="special">&gt;</span>
6471</pre>
6472<p>
6473              </p>
6474</dd>
6475<dt><span class="term">Depends On</span></dt>
6476<dd><p>
6477                <code class="computeroutput"><span class="identifier">non_coherent_weighted_tail_mean</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
6478                <br> <code class="computeroutput"><span class="identifier">tail_variate</span><span class="special">&lt;</span><em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">,</span> <em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
6479                <br> <code class="computeroutput"><span class="identifier">tail_weights</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;</span></code>
6480              </p></dd>
6481<dt><span class="term">Variants</span></dt>
6482<dd><p>
6483                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">absolute_weighted_tail_variate_means</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">,</span> <em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>
6484                <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">,</span> <em class="replaceable"><code>variate-type</code></em><span class="special">,</span> <em class="replaceable"><code>variate-tag</code></em><span class="special">&gt;</span></code>
6485              </p></dd>
6486<dt><span class="term">Initialization Parameters</span></dt>
6487<dd><p>
6488                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">tail</span><span class="special">&lt;</span><em class="replaceable"><code>left-or-right</code></em><span class="special">&gt;::</span><span class="identifier">cache_size</span></code>
6489              </p></dd>
6490<dt><span class="term">Accumulator Parameters</span></dt>
6491<dd><p>
6492                <span class="emphasis"><em>none</em></span>
6493              </p></dd>
6494<dt><span class="term">Extractor Parameters</span></dt>
6495<dd><p>
6496                <code class="computeroutput"><span class="identifier">quantile_probability</span></code>
6497              </p></dd>
6498<dt><span class="term">Accumulator Complexity</span></dt>
6499<dd><p>
6500                O(log N), where N is the cache size
6501              </p></dd>
6502<dt><span class="term">Extractor Complexity</span></dt>
6503<dd><p>
6504                O(N log N), where N is the cache size
6505              </p></dd>
6506</dl>
6507</div>
6508<p>
6509          <span class="bold"><strong>Header</strong></span>
6510        </p>
6511<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_tail_variate_means_hpp" title="Header &lt;boost/accumulators/statistics/weighted_tail_variate_means.hpp&gt;">boost/accumulators/statistics/weighted_tail_variate_means.hpp</a></code><span class="special">&gt;</span>
6512</pre>
6513<p>
6514          <span class="bold"><strong>Example</strong></span>
6515        </p>
6516<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">c</span> <span class="special">=</span> <span class="number">5</span><span class="special">;</span> <span class="comment">// cache size</span>
6517
6518<span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">variate_type</span><span class="special">;</span>
6519<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">variate_type</span><span class="special">&gt;</span> <span class="identifier">variate_set_type</span><span class="special">;</span>
6520
6521<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_tail_variate_means</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">,</span> <span class="identifier">variate_set_type</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">relative</span><span class="special">)&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span>
6522    <span class="identifier">acc1</span><span class="special">(</span> <span class="identifier">right_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
6523<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_tail_variate_means</span><span class="special">&lt;</span><span class="identifier">right</span><span class="special">,</span> <span class="identifier">variate_set_type</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">absolute</span><span class="special">)&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span>
6524    <span class="identifier">acc2</span><span class="special">(</span> <span class="identifier">right_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
6525<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_tail_variate_means</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">,</span> <span class="identifier">variate_set_type</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">relative</span><span class="special">)&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span>
6526    <span class="identifier">acc3</span><span class="special">(</span> <span class="identifier">left_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
6527<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_tail_variate_means</span><span class="special">&lt;</span><span class="identifier">left</span><span class="special">,</span> <span class="identifier">variate_set_type</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">covariate1</span><span class="special">&gt;(</span><span class="identifier">absolute</span><span class="special">)&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span>
6528    <span class="identifier">acc4</span><span class="special">(</span> <span class="identifier">left_tail_cache_size</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">);</span>
6529
6530<span class="identifier">variate_set_type</span> <span class="identifier">cov1</span><span class="special">,</span> <span class="identifier">cov2</span><span class="special">,</span> <span class="identifier">cov3</span><span class="special">,</span> <span class="identifier">cov4</span><span class="special">,</span> <span class="identifier">cov5</span><span class="special">;</span>
6531<span class="keyword">double</span> <span class="identifier">c1</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">10.</span><span class="special">,</span> <span class="number">20.</span><span class="special">,</span> <span class="number">30.</span><span class="special">,</span> <span class="number">40.</span> <span class="special">};</span> <span class="comment">// 100</span>
6532<span class="keyword">double</span> <span class="identifier">c2</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">26.</span><span class="special">,</span>  <span class="number">4.</span><span class="special">,</span> <span class="number">17.</span><span class="special">,</span>  <span class="number">3.</span> <span class="special">};</span> <span class="comment">// 50</span>
6533<span class="keyword">double</span> <span class="identifier">c3</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span> <span class="number">46.</span><span class="special">,</span> <span class="number">64.</span><span class="special">,</span> <span class="number">40.</span><span class="special">,</span> <span class="number">50.</span> <span class="special">};</span> <span class="comment">// 200</span>
6534<span class="keyword">double</span> <span class="identifier">c4</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span>  <span class="number">1.</span><span class="special">,</span>  <span class="number">3.</span><span class="special">,</span> <span class="number">70.</span><span class="special">,</span>  <span class="number">6.</span> <span class="special">};</span> <span class="comment">// 80</span>
6535<span class="keyword">double</span> <span class="identifier">c5</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span>  <span class="number">2.</span><span class="special">,</span>  <span class="number">2.</span><span class="special">,</span>  <span class="number">2.</span><span class="special">,</span> <span class="number">14.</span> <span class="special">};</span> <span class="comment">// 20</span>
6536<span class="identifier">cov1</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">c1</span><span class="special">,</span> <span class="identifier">c1</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">c1</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">variate_type</span><span class="special">));</span>
6537<span class="identifier">cov2</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">c2</span><span class="special">,</span> <span class="identifier">c2</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">c2</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">variate_type</span><span class="special">));</span>
6538<span class="identifier">cov3</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">c3</span><span class="special">,</span> <span class="identifier">c3</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">c3</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">variate_type</span><span class="special">));</span>
6539<span class="identifier">cov4</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">c4</span><span class="special">,</span> <span class="identifier">c4</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">c4</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">variate_type</span><span class="special">));</span>
6540<span class="identifier">cov5</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">c5</span><span class="special">,</span> <span class="identifier">c5</span> <span class="special">+</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">c5</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">variate_type</span><span class="special">));</span>
6541
6542<span class="identifier">acc1</span><span class="special">(</span><span class="number">100.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">0.8</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov1</span><span class="special">);</span>
6543<span class="identifier">acc1</span><span class="special">(</span> <span class="number">50.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov2</span><span class="special">);</span>
6544<span class="identifier">acc1</span><span class="special">(</span><span class="number">200.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov3</span><span class="special">);</span>
6545<span class="identifier">acc1</span><span class="special">(</span> <span class="number">80.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.1</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov4</span><span class="special">);</span>
6546<span class="identifier">acc1</span><span class="special">(</span> <span class="number">20.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.2</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov5</span><span class="special">);</span>
6547
6548<span class="identifier">acc2</span><span class="special">(</span><span class="number">100.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">0.8</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov1</span><span class="special">);</span>
6549<span class="identifier">acc2</span><span class="special">(</span> <span class="number">50.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov2</span><span class="special">);</span>
6550<span class="identifier">acc2</span><span class="special">(</span><span class="number">200.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov3</span><span class="special">);</span>
6551<span class="identifier">acc2</span><span class="special">(</span> <span class="number">80.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.1</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov4</span><span class="special">);</span>
6552<span class="identifier">acc2</span><span class="special">(</span> <span class="number">20.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.2</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov5</span><span class="special">);</span>
6553
6554<span class="identifier">acc3</span><span class="special">(</span><span class="number">100.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">0.8</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov1</span><span class="special">);</span>
6555<span class="identifier">acc3</span><span class="special">(</span> <span class="number">50.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov2</span><span class="special">);</span>
6556<span class="identifier">acc3</span><span class="special">(</span><span class="number">200.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov3</span><span class="special">);</span>
6557<span class="identifier">acc3</span><span class="special">(</span> <span class="number">80.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.1</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov4</span><span class="special">);</span>
6558<span class="identifier">acc3</span><span class="special">(</span> <span class="number">20.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.2</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov5</span><span class="special">);</span>
6559
6560<span class="identifier">acc4</span><span class="special">(</span><span class="number">100.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">0.8</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov1</span><span class="special">);</span>
6561<span class="identifier">acc4</span><span class="special">(</span> <span class="number">50.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov2</span><span class="special">);</span>
6562<span class="identifier">acc4</span><span class="special">(</span><span class="number">200.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov3</span><span class="special">);</span>
6563<span class="identifier">acc4</span><span class="special">(</span> <span class="number">80.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.1</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov4</span><span class="special">);</span>
6564<span class="identifier">acc4</span><span class="special">(</span> <span class="number">20.</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1.2</span><span class="special">,</span> <span class="identifier">covariate1</span> <span class="special">=</span> <span class="identifier">cov5</span><span class="special">);</span>
6565
6566<span class="comment">// check relative risk contributions</span>
6567<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="special">(</span><span class="number">0.8</span><span class="special">*</span><span class="number">10</span> <span class="special">+</span> <span class="number">1.0</span><span class="special">*</span><span class="number">46</span><span class="special">)/(</span><span class="number">0.8</span><span class="special">*</span><span class="number">100</span> <span class="special">+</span> <span class="number">1.0</span><span class="special">*</span><span class="number">200</span><span class="special">)</span> <span class="special">);</span>
6568<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span> <span class="special">(</span><span class="number">0.8</span><span class="special">*</span><span class="number">20</span> <span class="special">+</span> <span class="number">1.0</span><span class="special">*</span><span class="number">64</span><span class="special">)/(</span><span class="number">0.8</span><span class="special">*</span><span class="number">100</span> <span class="special">+</span> <span class="number">1.0</span><span class="special">*</span><span class="number">200</span><span class="special">)</span> <span class="special">);</span>
6569<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span> <span class="special">(</span><span class="number">0.8</span><span class="special">*</span><span class="number">30</span> <span class="special">+</span> <span class="number">1.0</span><span class="special">*</span><span class="number">40</span><span class="special">)/(</span><span class="number">0.8</span><span class="special">*</span><span class="number">100</span> <span class="special">+</span> <span class="number">1.0</span><span class="special">*</span><span class="number">200</span><span class="special">)</span> <span class="special">);</span>
6570<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span> <span class="special">(</span><span class="number">0.8</span><span class="special">*</span><span class="number">40</span> <span class="special">+</span> <span class="number">1.0</span><span class="special">*</span><span class="number">50</span><span class="special">)/(</span><span class="number">0.8</span><span class="special">*</span><span class="number">100</span> <span class="special">+</span> <span class="number">1.0</span><span class="special">*</span><span class="number">200</span><span class="special">)</span> <span class="special">);</span>
6571<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="special">(</span><span class="number">0.9</span><span class="special">*</span><span class="number">26</span> <span class="special">+</span> <span class="number">1.2</span><span class="special">*</span><span class="number">2</span><span class="special">)/(</span><span class="number">0.9</span><span class="special">*</span><span class="number">50</span> <span class="special">+</span> <span class="number">1.2</span><span class="special">*</span><span class="number">20</span><span class="special">)</span> <span class="special">);</span>
6572<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span> <span class="special">(</span><span class="number">0.9</span><span class="special">*</span><span class="number">4</span> <span class="special">+</span> <span class="number">1.2</span><span class="special">*</span><span class="number">2</span><span class="special">)/(</span><span class="number">0.9</span><span class="special">*</span><span class="number">50</span> <span class="special">+</span> <span class="number">1.2</span><span class="special">*</span><span class="number">20</span><span class="special">)</span> <span class="special">);</span>
6573<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span> <span class="special">(</span><span class="number">0.9</span><span class="special">*</span><span class="number">17</span> <span class="special">+</span> <span class="number">1.2</span><span class="special">*</span><span class="number">2</span><span class="special">)/(</span><span class="number">0.9</span><span class="special">*</span><span class="number">50</span> <span class="special">+</span> <span class="number">1.2</span><span class="special">*</span><span class="number">20</span><span class="special">)</span> <span class="special">);</span>
6574<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span> <span class="special">(</span><span class="number">0.9</span><span class="special">*</span><span class="number">3</span> <span class="special">+</span> <span class="number">1.2</span><span class="special">*</span><span class="number">14</span><span class="special">)/(</span><span class="number">0.9</span><span class="special">*</span><span class="number">50</span> <span class="special">+</span> <span class="number">1.2</span><span class="special">*</span><span class="number">20</span><span class="special">)</span> <span class="special">);</span>
6575
6576<span class="comment">// check absolute risk contributions</span>
6577<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="special">(</span><span class="number">0.8</span><span class="special">*</span><span class="number">10</span> <span class="special">+</span> <span class="number">1.0</span><span class="special">*</span><span class="number">46</span><span class="special">)/</span><span class="number">1.8</span> <span class="special">);</span>
6578<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span> <span class="special">(</span><span class="number">0.8</span><span class="special">*</span><span class="number">20</span> <span class="special">+</span> <span class="number">1.0</span><span class="special">*</span><span class="number">64</span><span class="special">)/</span><span class="number">1.8</span> <span class="special">);</span>
6579<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span> <span class="special">(</span><span class="number">0.8</span><span class="special">*</span><span class="number">30</span> <span class="special">+</span> <span class="number">1.0</span><span class="special">*</span><span class="number">40</span><span class="special">)/</span><span class="number">1.8</span> <span class="special">);</span>
6580<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.7</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span> <span class="special">(</span><span class="number">0.8</span><span class="special">*</span><span class="number">40</span> <span class="special">+</span> <span class="number">1.0</span><span class="special">*</span><span class="number">50</span><span class="special">)/</span><span class="number">1.8</span> <span class="special">);</span>
6581<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="special">(</span><span class="number">0.9</span><span class="special">*</span><span class="number">26</span> <span class="special">+</span> <span class="number">1.2</span><span class="special">*</span><span class="number">2</span><span class="special">)/</span><span class="number">2.1</span> <span class="special">);</span>
6582<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span> <span class="special">(</span><span class="number">0.9</span><span class="special">*</span><span class="number">4</span> <span class="special">+</span> <span class="number">1.2</span><span class="special">*</span><span class="number">2</span><span class="special">)/</span><span class="number">2.1</span> <span class="special">);</span>
6583<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span> <span class="special">(</span><span class="number">0.9</span><span class="special">*</span><span class="number">17</span> <span class="special">+</span> <span class="number">1.2</span><span class="special">*</span><span class="number">2</span><span class="special">)/</span><span class="number">2.1</span> <span class="special">);</span>
6584<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.3</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span> <span class="special">(</span><span class="number">0.9</span><span class="special">*</span><span class="number">3</span> <span class="special">+</span> <span class="number">1.2</span><span class="special">*</span><span class="number">14</span><span class="special">)/</span><span class="number">2.1</span> <span class="special">);</span>
6585
6586<span class="comment">// check relative risk contributions</span>
6587<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="number">1.0</span><span class="special">*</span><span class="number">46</span><span class="special">/(</span><span class="number">1.0</span><span class="special">*</span><span class="number">200</span><span class="special">)</span> <span class="special">);</span>
6588<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span> <span class="number">1.0</span><span class="special">*</span><span class="number">64</span><span class="special">/(</span><span class="number">1.0</span><span class="special">*</span><span class="number">200</span><span class="special">)</span> <span class="special">);</span>
6589<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span> <span class="number">1.0</span><span class="special">*</span><span class="number">40</span><span class="special">/(</span><span class="number">1.0</span><span class="special">*</span><span class="number">200</span><span class="special">)</span> <span class="special">);</span>
6590<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span> <span class="number">1.0</span><span class="special">*</span><span class="number">50</span><span class="special">/(</span><span class="number">1.0</span><span class="special">*</span><span class="number">200</span><span class="special">)</span> <span class="special">);</span>
6591<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="number">1.2</span><span class="special">*</span><span class="number">2</span><span class="special">/(</span><span class="number">1.2</span><span class="special">*</span><span class="number">20</span><span class="special">)</span> <span class="special">);</span>
6592<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span> <span class="number">1.2</span><span class="special">*</span><span class="number">2</span><span class="special">/(</span><span class="number">1.2</span><span class="special">*</span><span class="number">20</span><span class="special">)</span> <span class="special">);</span>
6593<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span> <span class="number">1.2</span><span class="special">*</span><span class="number">2</span><span class="special">/(</span><span class="number">1.2</span><span class="special">*</span><span class="number">20</span><span class="special">)</span> <span class="special">);</span>
6594<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">relative_weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc3</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span> <span class="number">1.2</span><span class="special">*</span><span class="number">14</span><span class="special">/(</span><span class="number">1.2</span><span class="special">*</span><span class="number">20</span><span class="special">)</span> <span class="special">);</span>
6595
6596<span class="comment">// check absolute risk contributions</span>
6597<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="number">1.0</span><span class="special">*</span><span class="number">46</span><span class="special">/</span><span class="number">1.0</span> <span class="special">);</span>
6598<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span> <span class="number">1.0</span><span class="special">*</span><span class="number">64</span><span class="special">/</span><span class="number">1.0</span> <span class="special">);</span>
6599<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span> <span class="number">1.0</span><span class="special">*</span><span class="number">40</span><span class="special">/</span><span class="number">1.0</span> <span class="special">);</span>
6600<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.9</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span> <span class="number">1.0</span><span class="special">*</span><span class="number">50</span><span class="special">/</span><span class="number">1.0</span> <span class="special">);</span>
6601<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span>    <span class="special">),</span> <span class="number">1.2</span><span class="special">*</span><span class="number">2</span><span class="special">/</span><span class="number">1.2</span> <span class="special">);</span>
6602<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">1</span><span class="special">),</span> <span class="number">1.2</span><span class="special">*</span><span class="number">2</span><span class="special">/</span><span class="number">1.2</span> <span class="special">);</span>
6603<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">),</span> <span class="number">1.2</span><span class="special">*</span><span class="number">2</span><span class="special">/</span><span class="number">1.2</span> <span class="special">);</span>
6604<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="special">*(</span><span class="identifier">weighted_tail_variate_means</span><span class="special">(</span><span class="identifier">acc4</span><span class="special">,</span> <span class="identifier">quantile_probability</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="number">3</span><span class="special">),</span> <span class="number">1.2</span><span class="special">*</span><span class="number">14</span><span class="special">/</span><span class="number">1.2</span> <span class="special">);</span>
6605</pre>
6606<p>
6607          <span class="bold"><strong>See also</strong></span>
6608        </p>
6609<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
6610<li class="listitem">
6611              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/wei_1_3_2_6_3_59_1_1_22_52.html" title="Struct template weighted_tail_variate_means_impl">weighted_tail_variate_means_impl</a></code>
6612            </li>
6613<li class="listitem">
6614              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.non_coherent_weighted_tail_mean" title="non_coherent_weighted_tail_mean"><code class="literal">non_coherent_weighted_tail_mean</code></a>
6615            </li>
6616<li class="listitem">
6617              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail_variate" title="tail_variate"><code class="literal">tail_variate</code></a>
6618            </li>
6619<li class="listitem">
6620              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.tail" title="tail"><code class="literal">tail</code></a>
6621            </li>
6622</ul></div>
6623</div>
6624<div class="section">
6625<div class="titlepage"><div><div><h4 class="title">
6626<a name="accumulators.user_s_guide.the_statistical_accumulators_library.weighted_variance"></a><a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_variance" title="weighted_variance and variants">weighted_variance
6627        <span class="emphasis"><em>and variants</em></span></a>
6628</h4></div></div></div>
6629<p>
6630          Lazy or iterative calculation of the weighted variance. The lazy calculation
6631          is associated with the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">lazy_weighted_variance</span></code>
6632          feature, and the iterative calculation with the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_variance</span></code>
6633          feature. Both can be extracted using the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_variance</span><span class="special">()</span></code> extractor. For more implementation details,
6634          see <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/laz_1_3_2_6_3_59_1_1_22_11.html" title="Struct template lazy_weighted_variance_impl">lazy_weighted_variance_impl</a></code>
6635          and <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_variance_impl.html" title="Struct template weighted_variance_impl">weighted_variance_impl</a></code>
6636        </p>
6637<div class="variablelist">
6638<p class="title"><b></b></p>
6639<dl class="variablelist">
6640<dt><span class="term">Result Type</span></dt>
6641<dd>
6642<p>
6643</p>
6644<pre class="programlisting"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">fdiv</span><span class="special">&lt;</span>
6645    <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">multiplies</span><span class="special">&lt;</span><em class="replaceable"><code>sample-type</code></em><span class="special">,</span> <em class="replaceable"><code>weight-type</code></em><span class="special">&gt;::</span><span class="identifier">result_type</span>
6646  <span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
6647<span class="special">&gt;::</span><span class="identifier">result_type</span>
6648</pre>
6649<p>
6650              </p>
6651</dd>
6652<dt><span class="term">Depends On</span></dt>
6653<dd><p>
6654                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">lazy_weighted_variance</span></code> depends
6655                on <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span></code>
6656                and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_mean</span></code> <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_variance</span></code> depends on <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">count</span></code> and <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">immediate_weighted_mean</span></code>
6657              </p></dd>
6658<dt><span class="term">Variants</span></dt>
6659<dd><p>
6660                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">lazy_weighted_variance</span></code> (a.k.a.
6661                <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_variance</span><span class="special">(</span><span class="identifier">lazy</span><span class="special">))</span></code>
6662                <br> <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_variance</span></code> (a.k.a. <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_variance</span><span class="special">(</span><span class="identifier">immediate</span><span class="special">)</span></code>)
6663              </p></dd>
6664<dt><span class="term">Initialization Parameters</span></dt>
6665<dd><p>
6666                <span class="emphasis"><em>none</em></span>
6667              </p></dd>
6668<dt><span class="term">Accumulator Parameters</span></dt>
6669<dd><p>
6670                <code class="computeroutput"><span class="identifier">weight</span></code>
6671              </p></dd>
6672<dt><span class="term">Extractor Parameters</span></dt>
6673<dd><p>
6674                <span class="emphasis"><em>none</em></span>
6675              </p></dd>
6676<dt><span class="term">Accumulator Complexity</span></dt>
6677<dd><p>
6678                O(1)
6679              </p></dd>
6680<dt><span class="term">Extractor Complexity</span></dt>
6681<dd><p>
6682                O(1)
6683              </p></dd>
6684</dl>
6685</div>
6686<p>
6687          <span class="bold"><strong>Header</strong></span>
6688        </p>
6689<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><code class="computeroutput"><a class="link" href="reference.html#header.boost.accumulators.statistics.weighted_variance_hpp" title="Header &lt;boost/accumulators/statistics/weighted_variance.hpp&gt;">boost/accumulators/statistics/weighted_variance.hpp</a></code><span class="special">&gt;</span>
6690</pre>
6691<p>
6692          <span class="bold"><strong>Example</strong></span>
6693        </p>
6694<pre class="programlisting"><span class="comment">// lazy weighted_variance</span>
6695<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_variance</span><span class="special">(</span><span class="identifier">lazy</span><span class="special">)&gt;,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">acc1</span><span class="special">;</span>
6696
6697<span class="identifier">acc1</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">2</span><span class="special">);</span>    <span class="comment">//  2</span>
6698<span class="identifier">acc1</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>    <span class="comment">//  6</span>
6699<span class="identifier">acc1</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>    <span class="comment">//  3</span>
6700<span class="identifier">acc1</span><span class="special">(</span><span class="number">4</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">4</span><span class="special">);</span>    <span class="comment">// 16</span>
6701<span class="identifier">acc1</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>    <span class="comment">//  5</span>
6702
6703<span class="comment">// weighted_mean = (2+6+3+16+5) / (2+3+1+4+1) = 32 / 11 = 2.9090909090909090909090909090909</span>
6704
6705<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">5u</span><span class="special">,</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">));</span>
6706<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">2.9090909</span><span class="special">,</span> <span class="identifier">weighted_mean</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
6707<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">10.1818182</span><span class="special">,</span> <span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_moment</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">acc1</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
6708<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.7190083</span><span class="special">,</span> <span class="identifier">weighted_variance</span><span class="special">(</span><span class="identifier">acc1</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
6709
6710<span class="comment">// immediate weighted_variance</span>
6711<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_variance</span><span class="special">&gt;,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">acc2</span><span class="special">;</span>
6712
6713<span class="identifier">acc2</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">2</span><span class="special">);</span>
6714<span class="identifier">acc2</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
6715<span class="identifier">acc2</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
6716<span class="identifier">acc2</span><span class="special">(</span><span class="number">4</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">4</span><span class="special">);</span>
6717<span class="identifier">acc2</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
6718
6719<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="number">5u</span><span class="special">,</span> <span class="identifier">count</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">));</span>
6720<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">2.9090909</span><span class="special">,</span> <span class="identifier">weighted_mean</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
6721<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.7190083</span><span class="special">,</span> <span class="identifier">weighted_variance</span><span class="special">(</span><span class="identifier">acc2</span><span class="special">),</span> <span class="number">1e-5</span><span class="special">);</span>
6722
6723<span class="comment">// check lazy and immediate variance with random numbers</span>
6724
6725<span class="comment">// two random number generators</span>
6726<span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span> <span class="identifier">rng</span><span class="special">;</span>
6727<span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">mean_sigma</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">);</span>
6728<span class="identifier">boost</span><span class="special">::</span><span class="identifier">variate_generator</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lagged_fibonacci607</span><span class="special">&amp;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">normal_distribution</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">normal</span><span class="special">(</span><span class="identifier">rng</span><span class="special">,</span> <span class="identifier">mean_sigma</span><span class="special">);</span>
6729
6730<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_variance</span><span class="special">&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">acc_lazy</span><span class="special">;</span>
6731<span class="identifier">accumulator_set</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">stats</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">weighted_variance</span><span class="special">(</span><span class="identifier">immediate</span><span class="special">)&gt;,</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">acc_immediate</span><span class="special">;</span>
6732
6733<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span> <span class="identifier">i</span><span class="special">&lt;</span><span class="number">10000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
6734<span class="special">{</span>
6735    <span class="keyword">double</span> <span class="identifier">value</span> <span class="special">=</span> <span class="identifier">normal</span><span class="special">();</span>
6736    <span class="identifier">acc_lazy</span><span class="special">(</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">rng</span><span class="special">());</span>
6737    <span class="identifier">acc_immediate</span><span class="special">(</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">weight</span> <span class="special">=</span> <span class="identifier">rng</span><span class="special">());</span>
6738<span class="special">}</span>
6739
6740<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">weighted_variance</span><span class="special">(</span><span class="identifier">acc_lazy</span><span class="special">),</span> <span class="number">1.</span><span class="special">);</span>
6741<span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="number">1.</span><span class="special">,</span> <span class="identifier">weighted_variance</span><span class="special">(</span><span class="identifier">acc_immediate</span><span class="special">),</span> <span class="number">1.</span><span class="special">);</span>
6742</pre>
6743<p>
6744          <span class="bold"><strong>See also</strong></span>
6745        </p>
6746<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
6747<li class="listitem">
6748              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/laz_1_3_2_6_3_59_1_1_22_11.html" title="Struct template lazy_weighted_variance_impl">lazy_weighted_variance_impl</a></code>
6749            </li>
6750<li class="listitem">
6751              <code class="computeroutput"><a class="link" href="../boost/accumulators/impl/weighted_variance_impl.html" title="Struct template weighted_variance_impl">weighted_variance_impl</a></code>
6752            </li>
6753<li class="listitem">
6754              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.count" title="count"><code class="literal">count</code></a>
6755            </li>
6756<li class="listitem">
6757              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_mean" title="weighted_mean and variants"><code class="literal">weighted_mean</code></a>
6758            </li>
6759<li class="listitem">
6760              <a class="link" href="user_s_guide.html#accumulators.user_s_guide.the_statistical_accumulators_library.weighted_moment" title="weighted_moment"><code class="literal">weighted_moment</code></a>
6761            </li>
6762</ul></div>
6763</div>
6764</div>
6765</div>
6766<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
6767<td align="left"></td>
6768<td align="right"><div class="copyright-footer">Copyright © 2005, 2006 Eric Niebler<p>
6769        Distributed under the Boost Software License, Version 1.0. (See accompanying
6770        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
6771      </p>
6772</div></td>
6773</tr></table>
6774<hr>
6775<div class="spirit-nav">
6776<a accesskey="p" href="../accumulators.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../accumulators.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
6777</div>
6778</body>
6779</html>
6780