diff --git a/doc/tutorial_cpp_double_fp_backend.qbk b/doc/tutorial_cpp_double_fp_backend.qbk index f3149d03c..4b7fce635 100644 --- a/doc/tutorial_cpp_double_fp_backend.qbk +++ b/doc/tutorial_cpp_double_fp_backend.qbk @@ -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. @@ -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. diff --git a/test/test_cpp_double_float_bessel_versus_bin_and_dec.cpp b/test/test_cpp_double_float_bessel_versus_bin_and_dec.cpp index 5068f968d..13c393a04 100644 --- a/test/test_cpp_double_float_bessel_versus_bin_and_dec.cpp +++ b/test/test_cpp_double_float_bessel_versus_bin_and_dec.cpp @@ -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::epsilon() * 0x400000 }; + constexpr dbl_float_type tol_dbl { std::numeric_limits::epsilon() * 0x1000000 }; for(const auto& lhs : dbl_float_c_vec) {