Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions doc/tutorial_cpp_double_fp_backend.qbk
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@

} } // namespaces

The `cpp_double_fp_backend` back-end is the sum of two IEEE floating-point numbers
combined to create a type having a composite width rougly twice that as one of its parts.
The `cpp_double_fp_backend` back-end is a relatively simple two-limb backend type.
It is composed of the sum of two IEEE floating-point numbers.
These are combined to create a type having a composite width rougly twice that as one of its parts.
The `cpp_double_fp_backend` back-end is used in conjunction with `number`
and acts as an entirely C++ header only floating-point number type.

Expand Down Expand Up @@ -70,8 +71,8 @@ Things you should know when using the `cpp_double_fp_backend` types:
* The types can not be used with certain compiler variations of _fast_-_math_. On GCC/clang, for instance, `-ffast-math` can not be used (use either the default or explicitly set `-fno-fast-math`). On MSVC `/fp:fast` can not be used and `/fp:precise` (the default) is mandatory on MSVC compilers. This is because the algorithms, in particular those for addition, subtraction, multiplication, division and square root, rely on precise floating-point rounding.
* The composite types are not as precise as their constituents. For information on error-bounds, see Joldes et al. in the references below.
* There are `std::numeric_limits` specializations for these types.
* Large parts (but not all) of the `cpp_double_fp_backend` implementation are `constexpr`. Future evolution is anticipated to make this library entirely `constexpr`.
* Conversions to and from string internally use an intermediate `cpp_bin_float` value (which is a bit awkward may be eliminated in future refinements).
* Almost all of the methods of the `cpp_double_fp_backend` implementation are `constexpr`. The sole exception is read-from-string, which is not yet `constexpr`, but may become so in future evolution.
* Conversions to and from string internally use an intermediate `cpp_bin_float` value. This is a bit awkward may be eliminated in future refinements.

The `cpp_double_fp_backend` back-end has been inspired by original works and types.
These include the historical `doubledouble` and more, as listed below.
Expand Down
2 changes: 1 addition & 1 deletion test/test_cpp_double_float_bessel_versus_bin_and_dec.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ auto do_trials(const std::size_t trial_count) -> void

std::size_t count { UINT8_C(0) };

constexpr dbl_float_type tol_dbl { std::numeric_limits<dbl_float_type>::epsilon() * 0x400000 };
constexpr dbl_float_type tol_dbl { std::numeric_limits<dbl_float_type>::epsilon() * 0x1000000 };

for(const auto& lhs : dbl_float_c_vec)
{
Expand Down
Loading