• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Enabling tolerance for user-defined types</title>
5<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../../../../index.html" title="Boost.Test">
8<link rel="up" href="../floating_point.html" title="Floating point comparison">
9<link rel="prev" href="../floating_point.html" title="Floating point comparison">
10<link rel="next" href="floating_points_comparison_impl.html" title="Tolerance-based comparisons">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
15<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
16<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="../floating_point.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floating_point.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="floating_points_comparison_impl.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h5 class="title">
27<a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance"></a><a class="link" href="customizing_for_tolerance.html" title="Enabling tolerance for user-defined types">Enabling
28          tolerance for user-defined types</a>
29</h5></div></div></div>
30<p>
31            The <span class="emphasis"><em>Unit Test Framework</em></span> recognizes that a given
32            type <code class="computeroutput"><span class="identifier">T</span></code> is suitable for
33            tolerance-based comparisons using the expression <code class="computeroutput"><a class="link" href="../../../../boost/math/fpc/tolerance_based.html" title="Struct template tolerance_based">boost::math::fpc::tolerance_based</a></code><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span></code>.
34            This meta-function already returns <code class="computeroutput"><span class="keyword">true</span></code>
35            for built-in floating-point types as well as any other types that match
36            the following compile-time expression:
37          </p>
38<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_floating_point</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span> <span class="special">||</span>
39    <span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_specialized</span> <span class="special">&amp;&amp;</span>
40     <span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_integer</span> <span class="special">&amp;&amp;</span>
41     <span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_exact</span><span class="special">)</span>
42</pre>
43<p>
44            If you require your type to also participate in tolerance-based comparisons,
45            regardless of the above expression, you can just specialize <code class="computeroutput"><a class="link" href="../../../../boost/math/fpc/tolerance_based.html" title="Struct template tolerance_based">boost::math::fpc::tolerance_based</a></code>
46            for your type directly, and derive it from <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">true_type</span></code>.
47            Your type does not even have to be a floating-point type provided that
48            it models concept <a class="link" href="customizing_for_tolerance.html#boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.concept_tolerance_based"><code class="computeroutput"><span class="identifier">ToleranceCompatible</span></code></a>.
49          </p>
50<h6>
51<a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.h0"></a>
52            <span class="phrase"><a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.example_descr"></a></span><a class="link" href="customizing_for_tolerance.html#boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.example_descr">Example:
53            adapting user-defined types for tolerance-based comparison</a>
54          </h6>
55<div class="informaltable"><table class="table">
56<colgroup><col></colgroup>
57<thead><tr><th>
58                    <p>
59                      Code
60                    </p>
61                  </th></tr></thead>
62<tbody><tr><td>
63<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">tolerance_04</span>
64<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
65<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">rational</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
66<span class="keyword">namespace</span> <span class="identifier">utf</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">;</span>
67<span class="keyword">namespace</span> <span class="identifier">tt</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">test_tools</span><span class="special">;</span>
68
69<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">fpc</span> <span class="special">{</span>
70
71  <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">I</span><span class="special">&gt;</span>
72  <span class="keyword">struct</span> <span class="identifier">tolerance_based</span><span class="special">&lt;</span> <span class="identifier">rational</span><span class="special">&lt;</span><span class="identifier">I</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">true_type</span><span class="special">{};</span>
73
74<span class="special">}</span> <span class="special">}</span> <span class="special">}</span>
75
76<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">rational</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">ratio</span><span class="special">;</span>
77
78<span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test1</span><span class="special">,</span> <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">tolerance</span><span class="special">(</span><span class="identifier">ratio</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">1000</span><span class="special">)))</span>
79<span class="special">{</span>
80  <span class="identifier">ratio</span> <span class="identifier">x</span> <span class="special">(</span><span class="number">1002</span><span class="special">,</span> <span class="number">100</span><span class="special">);</span> <span class="comment">// 10.02</span>
81  <span class="identifier">ratio</span> <span class="identifier">y</span> <span class="special">(</span><span class="number">1001</span><span class="special">,</span> <span class="number">100</span><span class="special">);</span> <span class="comment">// 10.01</span>
82  <span class="identifier">ratio</span> <span class="identifier">z</span> <span class="special">(</span><span class="number">1000</span><span class="special">,</span> <span class="number">100</span><span class="special">);</span> <span class="comment">// 10.00</span>
83
84  <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="identifier">x</span> <span class="special">==</span> <span class="identifier">y</span><span class="special">);</span>  <span class="comment">// irrelevant diff by default</span>
85  <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="identifier">x</span> <span class="special">==</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">tt</span><span class="special">::</span><span class="identifier">tolerance</span><span class="special">(</span><span class="identifier">ratio</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2000</span><span class="special">)));</span>
86
87  <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="identifier">x</span> <span class="special">!=</span> <span class="identifier">z</span><span class="special">);</span>  <span class="comment">// relevant diff by default</span>
88  <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="identifier">x</span> <span class="special">!=</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">tt</span><span class="special">::</span><span class="identifier">tolerance</span><span class="special">(</span><span class="identifier">ratio</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">1000</span><span class="special">)));</span>
89<span class="special">}</span>
90</pre>
91                  </td></tr></tbody>
92</table></div>
93<div class="informaltable"><table class="table">
94<colgroup><col></colgroup>
95<thead><tr><th>
96                    <p>
97                      Output
98                    </p>
99                  </th></tr></thead>
100<tbody><tr><td>
101<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">tolerance_04</span>
102<span class="identifier">Running</span> <span class="number">1</span> <span class="identifier">test</span> <span class="keyword">case</span><span class="special">...</span>
103<span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">23</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"test1"</span><span class="special">:</span> <span class="identifier">check</span> <span class="identifier">x</span> <span class="special">==</span> <span class="identifier">y</span> <span class="identifier">has</span> <span class="identifier">failed</span> <span class="special">[</span><span class="number">501</span><span class="special">/</span><span class="number">50</span> <span class="special">!=</span> <span class="number">1001</span><span class="special">/</span><span class="number">100</span><span class="special">].</span> <span class="identifier">Relative</span> <span class="identifier">difference</span> <span class="identifier">exceeds</span> <span class="identifier">tolerance</span> <span class="special">[</span><span class="number">1</span><span class="special">/</span><span class="number">1001</span> <span class="special">&gt;</span> <span class="number">1</span><span class="special">/</span><span class="number">2000</span><span class="special">]</span>
104<span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">26</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"test1"</span><span class="special">:</span> <span class="identifier">check</span> <span class="identifier">x</span> <span class="special">!=</span> <span class="identifier">z</span> <span class="identifier">has</span> <span class="identifier">failed</span> <span class="special">[</span><span class="number">501</span><span class="special">/</span><span class="number">50</span> <span class="special">==</span> <span class="number">10</span><span class="special">/</span><span class="number">1</span><span class="special">].</span> <span class="identifier">Relative</span> <span class="identifier">difference</span> <span class="identifier">is</span> <span class="identifier">within</span> <span class="identifier">tolerance</span> <span class="special">[</span><span class="number">1</span><span class="special">/</span><span class="number">501</span> <span class="special">&lt;</span> <span class="number">1</span><span class="special">/</span><span class="number">500</span><span class="special">]</span>
105
106<span class="special">***</span> <span class="number">2</span> <span class="identifier">failures</span> <span class="identifier">are</span> <span class="identifier">detected</span> <span class="identifier">in</span> <span class="identifier">the</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"tolerance_04"</span>
107</pre>
108                  </td></tr></tbody>
109</table></div>
110<h4>
111<a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.h1"></a>
112            <span class="phrase"><a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.concept_tolerance_based"></a></span><a class="link" href="customizing_for_tolerance.html#boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.concept_tolerance_based">Concept
113            <code class="computeroutput"><span class="identifier">ToleranceCompatible</span></code></a>
114          </h4>
115<h5>
116<a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.h2"></a>
117            <span class="phrase"><a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.refinement_of"></a></span><a class="link" href="customizing_for_tolerance.html#boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.refinement_of">Refinement
118            of</a>
119          </h5>
120<p>
121            <a href="https://en.cppreference.com/w/cpp/named_req/MoveConstructible" target="_top"><code class="computeroutput"><span class="identifier">MoveConstructible</span></code></a>, <a href="https://en.cppreference.com/w/cpp/named_req/EqualityComparable" target="_top"><code class="computeroutput"><span class="identifier">EqualityComparable</span></code></a>, <a href="https://en.cppreference.com/w/cpp/named_req/LessThanComparable" target="_top"><code class="computeroutput"><span class="identifier">LessThanComparable</span></code></a>
122          </p>
123<h5>
124<a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.h3"></a>
125            <span class="phrase"><a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.notation"></a></span><a class="link" href="customizing_for_tolerance.html#boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.notation">Notation</a>
126          </h5>
127<div class="informaltable"><table class="table">
128<colgroup>
129<col>
130<col>
131</colgroup>
132<thead><tr>
133<th>
134                  </th>
135<th>
136                  </th>
137</tr></thead>
138<tbody>
139<tr>
140<td>
141                    <p>
142                      <code class="computeroutput"><span class="identifier">T</span></code>
143                    </p>
144                  </td>
145<td>
146                    <p>
147                      A type that is a model of <code class="computeroutput"><span class="identifier">ToleranceCompatible</span></code>
148                    </p>
149                  </td>
150</tr>
151<tr>
152<td>
153                    <p>
154                      <code class="computeroutput"><span class="identifier">x</span></code>, <code class="computeroutput"><span class="identifier">y</span></code>
155                    </p>
156                  </td>
157<td>
158                    <p>
159                      objects of type <code class="computeroutput"><span class="identifier">T</span></code>
160                    </p>
161                  </td>
162</tr>
163<tr>
164<td>
165                    <p>
166                      <code class="computeroutput"><span class="identifier">i</span></code>, <code class="computeroutput"><span class="identifier">j</span></code>
167                    </p>
168                  </td>
169<td>
170                    <p>
171                      objects of type <code class="computeroutput"><span class="keyword">int</span></code>
172                    </p>
173                  </td>
174</tr>
175</tbody>
176</table></div>
177<h5>
178<a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.h4"></a>
179            <span class="phrase"><a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.valid_expressions"></a></span><a class="link" href="customizing_for_tolerance.html#boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.valid_expressions">Valid
180            expressions</a>
181          </h5>
182<div class="informaltable"><table class="table">
183<colgroup>
184<col>
185<col>
186<col>
187</colgroup>
188<thead><tr>
189<th>
190                    <p>
191                      Name
192                    </p>
193                  </th>
194<th>
195                    <p>
196                      Expression
197                    </p>
198                  </th>
199<th>
200                    <p>
201                      Return type
202                    </p>
203                  </th>
204</tr></thead>
205<tbody>
206<tr>
207<td>
208                    <p>
209                      Conversion from <code class="computeroutput"><span class="keyword">int</span></code>
210                    </p>
211                  </td>
212<td>
213                    <p>
214                      <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">j</span>
215                      <span class="special">=</span> <span class="identifier">i</span><span class="special">;</span></code>
216                    </p>
217                  </td>
218<td>
219                  </td>
220</tr>
221<tr>
222<td>
223                    <p>
224                      Addition
225                    </p>
226                  </td>
227<td>
228                    <p>
229                      <code class="computeroutput"><span class="identifier">x</span> <span class="special">+</span>
230                      <span class="identifier">y</span></code>
231                    </p>
232                  </td>
233<td>
234                    <p>
235                      <code class="computeroutput"><span class="identifier">T</span></code>
236                    </p>
237                  </td>
238</tr>
239<tr>
240<td>
241                    <p>
242                      Subtraction
243                    </p>
244                  </td>
245<td>
246                    <p>
247                      <code class="computeroutput"><span class="identifier">x</span> <span class="special">-</span>
248                      <span class="identifier">y</span></code>
249                    </p>
250                  </td>
251<td>
252                    <p>
253                      <code class="computeroutput"><span class="identifier">T</span></code>
254                    </p>
255                  </td>
256</tr>
257<tr>
258<td>
259                    <p>
260                      Negation
261                    </p>
262                  </td>
263<td>
264                    <p>
265                      <code class="computeroutput"><span class="special">-</span><span class="identifier">x</span></code>
266                    </p>
267                  </td>
268<td>
269                    <p>
270                      <code class="computeroutput"><span class="identifier">T</span></code>
271                    </p>
272                  </td>
273</tr>
274<tr>
275<td>
276                    <p>
277                      Multiplication
278                    </p>
279                  </td>
280<td>
281                    <p>
282                      <code class="computeroutput"><span class="identifier">x</span> <span class="special">*</span>
283                      <span class="identifier">y</span></code><br> <code class="computeroutput"><span class="identifier">x</span> <span class="special">*</span>
284                      <span class="identifier">i</span></code>
285                    </p>
286                  </td>
287<td>
288                    <p>
289                      <code class="computeroutput"><span class="identifier">T</span></code>
290                    </p>
291                  </td>
292</tr>
293<tr>
294<td>
295                    <p>
296                      Division
297                    </p>
298                  </td>
299<td>
300                    <p>
301                      <code class="computeroutput"><span class="identifier">x</span> <span class="special">/</span>
302                      <span class="identifier">y</span></code><br> <code class="computeroutput"><span class="identifier">x</span> <span class="special">/</span>
303                      <span class="identifier">i</span></code>
304                    </p>
305                  </td>
306<td>
307                    <p>
308                      <code class="computeroutput"><span class="identifier">T</span></code>
309                    </p>
310                  </td>
311</tr>
312<tr>
313<td>
314                    <p>
315                      Mixed equality
316                    </p>
317                  </td>
318<td>
319                    <p>
320                      <code class="computeroutput"><span class="identifier">x</span> <span class="special">==</span>
321                      <span class="identifier">i</span></code><br> <code class="computeroutput"><span class="identifier">x</span> <span class="special">!=</span>
322                      <span class="identifier">i</span></code>
323                    </p>
324                  </td>
325<td>
326                    <p>
327                      <code class="computeroutput"><span class="keyword">bool</span></code>
328                    </p>
329                  </td>
330</tr>
331<tr>
332<td>
333                    <p>
334                      Mixed ordering
335                    </p>
336                  </td>
337<td>
338                    <p>
339                      <code class="computeroutput"><span class="identifier">x</span> <span class="special">&lt;</span>
340                      <span class="identifier">i</span></code><br> <code class="computeroutput"><span class="identifier">x</span> <span class="special">&gt;</span>
341                      <span class="identifier">i</span></code><br> <code class="computeroutput"><span class="identifier">x</span> <span class="special">&lt;=</span>
342                      <span class="identifier">i</span></code><br> <code class="computeroutput"><span class="identifier">x</span> <span class="special">&gt;=</span>
343                      <span class="identifier">i</span></code>
344                    </p>
345                  </td>
346<td>
347                    <p>
348                      <code class="computeroutput"><span class="keyword">bool</span></code>
349                    </p>
350                  </td>
351</tr>
352</tbody>
353</table></div>
354<h5>
355<a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.h5"></a>
356            <span class="phrase"><a name="boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.invariants"></a></span><a class="link" href="customizing_for_tolerance.html#boost_test.testing_tools.extended_comparison.floating_point.customizing_for_tolerance.invariants">Invariants</a>
357          </h5>
358<div class="informaltable"><table class="table">
359<colgroup>
360<col>
361<col>
362</colgroup>
363<tbody><tr>
364<td>
365                    <p>
366                      <code class="computeroutput"><span class="identifier">T</span></code> and <code class="computeroutput"><span class="keyword">int</span></code> consistency
367                    </p>
368                  </td>
369<td>
370                    <p>
371                      <code class="computeroutput"><span class="special">(</span><span class="identifier">x</span>
372                      <span class="special">==</span> <span class="identifier">T</span><span class="special">(</span><span class="identifier">i</span><span class="special">))</span> <span class="special">==</span>
373                      <span class="special">(</span><span class="identifier">x</span>
374                      <span class="special">==</span> <span class="identifier">i</span><span class="special">)</span></code><br> <code class="computeroutput"><span class="special">(</span><span class="identifier">x</span> <span class="special">!=</span>
375                      <span class="identifier">T</span><span class="special">(</span><span class="identifier">i</span><span class="special">))</span>
376                      <span class="special">==</span> <span class="special">(</span><span class="identifier">x</span> <span class="special">!=</span>
377                      <span class="identifier">i</span><span class="special">)</span></code><br>
378                      <code class="computeroutput"><span class="special">(</span><span class="identifier">x</span>
379                      <span class="special">&lt;</span> <span class="identifier">T</span><span class="special">(</span><span class="identifier">i</span><span class="special">))</span> <span class="special">==</span>
380                      <span class="special">(</span><span class="identifier">x</span>
381                      <span class="special">&lt;</span> <span class="identifier">i</span><span class="special">)</span></code><br> <code class="computeroutput"><span class="special">(</span><span class="identifier">x</span> <span class="special">&gt;</span>
382                      <span class="identifier">T</span><span class="special">(</span><span class="identifier">i</span><span class="special">))</span>
383                      <span class="special">==</span> <span class="special">(</span><span class="identifier">x</span> <span class="special">&gt;</span>
384                      <span class="identifier">i</span><span class="special">)</span></code><br>
385                      <code class="computeroutput"><span class="special">(</span><span class="identifier">x</span>
386                      <span class="special">/</span> <span class="identifier">T</span><span class="special">(</span><span class="identifier">i</span><span class="special">))</span> <span class="special">==</span>
387                      <span class="special">(</span><span class="identifier">x</span>
388                      <span class="special">/</span> <span class="identifier">i</span><span class="special">)</span></code><br> <code class="computeroutput"><span class="special">(</span><span class="identifier">x</span> <span class="special">*</span>
389                      <span class="identifier">T</span><span class="special">(</span><span class="identifier">i</span><span class="special">))</span>
390                      <span class="special">==</span> <span class="special">(</span><span class="identifier">x</span> <span class="special">*</span>
391                      <span class="identifier">i</span><span class="special">)</span></code>
392                    </p>
393                  </td>
394</tr></tbody>
395</table></div>
396</div>
397<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
398<td align="left"></td>
399<td align="right"><div class="copyright-footer">Copyright © 2001-2020 Boost.Test contributors<p>
400        Distributed under the Boost Software License, Version 1.0. (See accompanying
401        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>)
402      </p>
403</div></td>
404</tr></table>
405<hr>
406<div class="spirit-nav">
407<a accesskey="p" href="../floating_point.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floating_point.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="floating_points_comparison_impl.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
408</div>
409</body>
410</html>
411