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"><</span><span class="identifier">T</span><span class="special">>::</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"><</span><span class="identifier">T</span><span class="special">>::</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"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_specialized</span> <span class="special">&&</span> 40 <span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_integer</span> <span class="special">&&</span> 41 <span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</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"><</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">></span> 65<span class="preprocessor">#include</span> <span class="special"><</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">></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"><</span><span class="keyword">typename</span> <span class="identifier">I</span><span class="special">></span> 72 <span class="keyword">struct</span> <span class="identifier">tolerance_based</span><span class="special"><</span> <span class="identifier">rational</span><span class="special"><</span><span class="identifier">I</span><span class="special">></span> <span class="special">></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"><</span><span class="keyword">int</span><span class="special">></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">></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">></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"><</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"><</span> 340 <span class="identifier">i</span></code><br> <code class="computeroutput"><span class="identifier">x</span> <span class="special">></span> 341 <span class="identifier">i</span></code><br> <code class="computeroutput"><span class="identifier">x</span> <span class="special"><=</span> 342 <span class="identifier">i</span></code><br> <code class="computeroutput"><span class="identifier">x</span> <span class="special">>=</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"><</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"><</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> 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">></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