|  | Home | Libraries | People | FAQ | More | 
            Assertions in the Unit Test Framework use two kinds
            of comparison. For u
            being close to zero with absolute tolerance eps:
          
abs(u) <= eps; // (abs)
            For u and v being close with relative tolerance
            eps:
          
abs(u - v)/abs(u) <= eps && abs(u - v)/abs(v) <= eps; // (rel)
For rationale for choosing these formulae, see section Floating point comparison algorithms.
            Assertion BOOST_TEST (when comparing floating-point
            numbers) uses the following algorithm:
          
u
                or v is zero, evaluates
                formula (abs) on the other value.
              u and v.
              u
                and v.
              | ![[Note]](../../../../../../../../doc/src/images/note.png) | Note | 
|---|---|
| Therefore in order to check if a number is close to zero with tolerance, you need to type: BOOST_TEST(v == T(0), tt::tolerance(eps)); | 
            The compatibility assertions BOOST_<level>_CLOSE and BOOST_<level>_CLOSE_FRACTION perform formula
            (rel).
          
            The compatibility assertion BOOST_<level>_SMALL performs formula (abs).
          
            The Unit Test Framework also provides unary predicate
            small_with_tolerance and
            binary predicate predicate close_at_tolerance that
            implement formula (abs) and (rel) respectively.
          
operator<
          
            Tolerance-based computations also apply to operator< and other relational operators. The
            semantics are defined as follows:
          
| ![[Note]](../../../../../../../../doc/src/images/note.png) | Note | 
|---|---|
| 
              This implies that the exactly one of these:  | 
| ![[Caution]](../../../../../../../../doc/src/images/caution.png) | Caution | 
|---|---|
| 
              Relation less-at-tolerance is not a Strict Weak Ordering; using it
              as predicate in  |