Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / test / doc / html / boost_test / testing_tools / extended_comparison / floating_point / customizing_for_tolerance.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
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 &#169; 2001-2019 Boost.Test
400       contributors<p>
401         Distributed under the Boost Software License, Version 1.0. (See accompanying
402         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>)
403       </p>
404 </div></td>
405 </tr></table>
406 <hr>
407 <div class="spirit-nav">
408 <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>
409 </div>
410 </body>
411 </html>