From 5eeb6aa361cd7d0d51b9b413802b98f1a7218cdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Thu, 5 Jul 2018 17:28:00 +0200 Subject: [PATCH] Update Approx documentation Fixes #1328 --- docs/assertions.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/assertions.md b/docs/assertions.md index 90c0856c..8d321cc6 100644 --- a/docs/assertions.md +++ b/docs/assertions.md @@ -55,33 +55,32 @@ This expression is too complex because of the `||` operator. If you want to chec When comparing floating point numbers - especially if at least one of them has been computed - great care must be taken to allow for rounding errors and inexact representations. -Catch provides a way to perform tolerant comparisons of floating point values through use of a wrapper class called ```Approx```. ```Approx``` can be used on either side of a comparison expression. It overloads the comparisons operators to take a tolerance into account. Here's a simple example: +Catch provides a way to perform tolerant comparisons of floating point values through use of a wrapper class called `Approx`. `Approx` can be used on either side of a comparison expression. It overloads the comparisons operators to take a tolerance into account. Here's a simple example: -``` +```cpp REQUIRE( performComputation() == Approx( 2.1 ) ); ``` This way `Approx` is constructed with reasonable defaults, covering most simple cases of rounding errors. If these are insufficient, each `Approx` instance has 3 tuning knobs, that can be used to customize it for your computation. -* __epsilon__ - epsilon serves to set the percentage by which a result can be erroneous, before it is rejected. By default set to `std::numeric_limits::epsilon()*100`. -* __margin__ - margin serves to set the the absolute value by which a result can be erroneous before it is rejected. By default set to `0.0`. -* __scale__ - scale serves to adjust the epsilon's multiplicator. By default set to `0.0`. +* __epsilon__ - epsilon serves to set the percentage by which a result can differ from `Approx`'s value before it is rejected. By default set to `std::numeric_limits::epsilon()*100`. +* __margin__ - margin serves to set the the absolute value by which a result can differ from `Approx`'s value before it is rejected. By default set to `0.0`. +* __scale__ - scale is used to change the magnitude of `Approx` for relative check. By default set to `0.0`. #### epsilon example ```cpp Approx target = Approx(100).epsilon(0.01); 100.0 == target; // Obviously true 200.0 == target; // Obviously still false -100.5 == target; // True, because we set target to allow up to 1% error +100.5 == target; // True, because we set target to allow up to 1% difference ``` #### margin example -_Margin check is used only if the relative (epsilon and scale based) check fails._ ```cpp Approx target = Approx(100).margin(5); 100.0 == target; // Obviously true 200.0 == target; // Obviously still false -104.0 == target; // True, because we set target to allow absolute error up to 5 +104.0 == target; // True, because we set target to allow absolute difference of at most 5 ``` #### scale