• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>BOOST_&lt;level&gt;_CLOSE_FRACTION</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="../testing_tool_ref.html" title="Reference API for writing tests">
9<link rel="prev" href="assertion_boost_level_close.html" title="BOOST_&lt;level&gt;_CLOSE">
10<link rel="next" href="assertion_boost_level_ge.html" title="BOOST_&lt;level&gt;_GE">
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="assertion_boost_level_close.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../testing_tool_ref.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="assertion_boost_level_ge.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h4 class="title">
27<a name="boost_test.utf_reference.testing_tool_ref.assertion_boost_level_close_fraction"></a><a class="link" href="assertion_boost_level_close_fraction.html" title="BOOST_&lt;level&gt;_CLOSE_FRACTION"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special">&lt;</span><span class="identifier">level</span><span class="special">&gt;</span><span class="identifier">_CLOSE_FRACTION</span></code></a>
28</h4></div></div></div>
29<pre class="programlisting"><span class="identifier">BOOST_WARN_CLOSE_FRACTION</span><span class="special">(</span><span class="identifier">left</span><span class="special">,</span> <span class="identifier">right</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
30<span class="identifier">BOOST_CHECK_CLOSE_FRACTION</span><span class="special">(</span><span class="identifier">left</span><span class="special">,</span> <span class="identifier">right</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
31<span class="identifier">BOOST_REQUIRE_CLOSE_FRACTION</span><span class="special">(</span><span class="identifier">left</span><span class="special">,</span> <span class="identifier">right</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
32</pre>
33<p>
34          These tools are used to check on closeness using strong relationship defined
35          by the predicate
36        </p>
37<pre class="programlisting"><span class="identifier">check_is_close</span><span class="special">(</span><span class="identifier">left</span><span class="special">,</span> <span class="identifier">right</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">)</span></pre>
38<p>
39          To check for the weak relationship use <a class="link" href="assertion_boost_level_predicate.html" title="BOOST_&lt;level&gt;_PREDICATE"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special">&lt;</span><span class="identifier">level</span><span class="special">&gt;</span><span class="identifier">_PREDICATE</span></code></a> family of tools with
40          explicit <code class="computeroutput"><span class="identifier">check_is_close</span></code>
41          invocation.
42        </p>
43<p>
44          The first parameter is the <span class="emphasis"><em>left</em></span> compared value. The
45          second parameter is the <span class="emphasis"><em>right</em></span> compared value. Last
46          third parameter defines the tolerance for the comparison as <a class="link" href="../../testing_tools/extended_comparison/floating_point.html" title="Floating point comparison"><span class="bold"><strong>fraction of absolute values being compared</strong></span></a>.
47        </p>
48<div class="note"><table border="0" summary="Note">
49<tr>
50<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
51<th align="left">Note</th>
52</tr>
53<tr><td align="left" valign="top"><p>
54            It is required for left and right parameters to be of the same floating
55            point type. You will need to explicitly resolve any type mismatch to
56            select which type to use for comparison.
57          </p></td></tr>
58</table></div>
59<div class="note"><table border="0" summary="Note">
60<tr>
61<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
62<th align="left">Note</th>
63</tr>
64<tr><td align="left" valign="top"><p>
65            The floating point comparison tools are automatically added if the <span class="emphasis"><em>Unit
66            Test Framework</em></span> is included as indicated in the previous sections.
67            The tools are implemented is in the header <code class="computeroutput"><a class="link" href="../../../header/boost/test/tools/floating_point_comparison_hpp.html" title="Header &lt;boost/test/tools/floating_point_comparison.hpp&gt;">boost/test/tools/floating_point_comparison.hpp</a></code>.
68          </p></td></tr>
69</table></div>
70<h6>
71<a name="boost_test.utf_reference.testing_tool_ref.assertion_boost_level_close_fraction.h0"></a>
72          <span class="phrase"><a name="boost_test.utf_reference.testing_tool_ref.assertion_boost_level_close_fraction.example_descr"></a></span><a class="link" href="assertion_boost_level_close_fraction.html#boost_test.utf_reference.testing_tool_ref.assertion_boost_level_close_fraction.example_descr">Example:
73          BOOST_&lt;level&gt;_CLOSE_FRACTION usage</a>
74        </h6>
75<div class="informaltable"><table class="table">
76<colgroup><col></colgroup>
77<thead><tr><th>
78                  <p>
79                    Code
80                  </p>
81                </th></tr></thead>
82<tbody><tr><td>
83<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">example</span>
84<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>
85<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">tools</span><span class="special">/</span><span class="identifier">floating_point_comparison</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
86
87<span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span> <span class="identifier">test</span> <span class="special">)</span>
88<span class="special">{</span>
89  <span class="keyword">double</span> <span class="identifier">v1</span> <span class="special">=</span> <span class="number">1.111e-10</span><span class="special">;</span>
90  <span class="keyword">double</span> <span class="identifier">v2</span> <span class="special">=</span> <span class="number">1.112e-10</span><span class="special">;</span>
91
92  <span class="identifier">BOOST_CHECK_CLOSE_FRACTION</span><span class="special">(</span> <span class="identifier">v1</span><span class="special">,</span> <span class="identifier">v2</span><span class="special">,</span> <span class="number">0.0008999</span> <span class="special">);</span>
93<span class="special">}</span>
94</pre>
95                </td></tr></tbody>
96</table></div>
97<div class="informaltable"><table class="table">
98<colgroup><col></colgroup>
99<thead><tr><th>
100                  <p>
101                    Output
102                  </p>
103                </th></tr></thead>
104<tbody><tr><td>
105<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">example</span>
106<span class="identifier">Running</span> <span class="number">1</span> <span class="identifier">test</span> <span class="keyword">case</span><span class="special">...</span>
107<span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">12</span><span class="special">):</span> <span class="identifier">error</span> <span class="identifier">in</span> <span class="string">"test"</span><span class="special">:</span> <span class="identifier">difference</span> <span class="identifier">between</span> <span class="identifier">v1</span><span class="special">{</span><span class="number">1.111e-010</span><span class="special">}</span> <span class="keyword">and</span> <span class="identifier">v2</span><span class="special">{</span><span class="number">1.112e-010</span><span class="special">}</span> <span class="identifier">exceeds</span> <span class="number">0.0008999</span>
108
109<span class="special">***</span> <span class="number">1</span> <span class="identifier">failures</span> <span class="identifier">is</span> <span class="identifier">detected</span> <span class="identifier">in</span> <span class="identifier">test</span> <span class="identifier">suite</span> <span class="string">"example"</span>
110</pre>
111                </td></tr></tbody>
112</table></div>
113<p>
114          See also:
115        </p>
116<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
117<li class="listitem">
118              <a class="link" href="assertion_boost_level_close.html" title="BOOST_&lt;level&gt;_CLOSE"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special">&lt;</span><span class="identifier">level</span><span class="special">&gt;</span><span class="identifier">_CLOSE</span></code></a>
119            </li>
120<li class="listitem">
121              <a class="link" href="assertion_boost_level_small.html" title="BOOST_&lt;level&gt;_SMALL"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special">&lt;</span><span class="identifier">level</span><span class="special">&gt;</span><span class="identifier">_SMALL</span></code></a>
122            </li>
123<li class="listitem">
124              <a class="link" href="assertion_boost_level_eq.html" title="BOOST_&lt;level&gt;_EQUAL"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special">&lt;</span><span class="identifier">level</span><span class="special">&gt;</span><span class="identifier">_EQUAL</span></code></a>
125            </li>
126<li class="listitem">
127              <a class="link" href="../../testing_tools/extended_comparison/floating_point/floating_points_comparison_theory.html" title="Theory behind floating point comparisons">Floating
128              point comparison algorithms</a>
129            </li>
130</ul></div>
131</div>
132<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
133<td align="left"></td>
134<td align="right"><div class="copyright-footer">Copyright © 2001-2020 Boost.Test contributors<p>
135        Distributed under the Boost Software License, Version 1.0. (See accompanying
136        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>)
137      </p>
138</div></td>
139</tr></table>
140<hr>
141<div class="spirit-nav">
142<a accesskey="p" href="assertion_boost_level_close.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../testing_tool_ref.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="assertion_boost_level_ge.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
143</div>
144</body>
145</html>
146