Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
e9c7aa2
Obtain more code coverage
ckormanyos Jul 3, 2025
5b7c676
Repair epsilon but still open for evolution
ckormanyos Jul 3, 2025
b196bcc
Rework some functions
ckormanyos Jul 3, 2025
da2f57f
Make better use of compiler switches
ckormanyos Jul 4, 2025
590d956
Rework shadow vars and string over/underflow
ckormanyos Jul 4, 2025
64c8c8d
Try for more coverage
ckormanyos Jul 4, 2025
be9c643
Try for even more cover lines
ckormanyos Jul 4, 2025
af8f932
Remove an unwanted compiler warning
ckormanyos Jul 4, 2025
7012b7d
Improve cpp_dec_float and test_exp
ckormanyos Jul 5, 2025
0d255d0
Add more dec_float frexp tests
ckormanyos Jul 5, 2025
885e2d9
Finish dec_float coverage for now
ckormanyos Jul 5, 2025
40fede4
Finish dec_float cover and comments
ckormanyos Jul 5, 2025
4f47836
Annotate and slight rework some tests for cover
ckormanyos Jul 6, 2025
14f4212
Repair and cover test for issue167
ckormanyos Jul 6, 2025
4f1bae2
Continue patching issue167 and get cover
ckormanyos Jul 6, 2025
9123267
Exclude set-locale on __MINGW__ runners
ckormanyos Jul 6, 2025
d9fe990
Improve and run tests issue464
ckormanyos Jul 7, 2025
cef08fa
More tests and repair edge case pow
ckormanyos Jul 7, 2025
6005687
Revert test needing slight backend repairs
ckormanyos Jul 7, 2025
f5d4bbf
Minor corrections selected C99 edge cases
ckormanyos Jul 7, 2025
7371ebf
Patch tests for double-fp
ckormanyos Jul 7, 2025
48ec510
Slightly refactor a private constructor
ckormanyos Jul 8, 2025
d2a292d
Correct reference to GMP 5.1 mpfr_class wrapper
LegalizeAdulthood Jul 10, 2025
d31b9b0
Correct markup instructions
LegalizeAdulthood Jul 10, 2025
d2f202c
Merge pull request #719 from LegalizeAdulthood/develop
ckormanyos Jul 11, 2025
2b1c173
Modernize visualizer doc and maybe future plan
ckormanyos Jul 11, 2025
fb587e6
Merge branch 'develop' into more_coverage
ckormanyos Jul 12, 2025
71cd350
Correct and cover cpp_double_fp pow edges
ckormanyos Jul 12, 2025
1f0385a
Disable/enable new edge-tests properly
ckormanyos Jul 12, 2025
b5725b5
Intended to address issue722
ckormanyos Jul 12, 2025
a773126
More docs improvements
ckormanyos Jul 12, 2025
50901d3
Simplify complex examples
ckormanyos Jul 12, 2025
3675c9e
Merge pull request #721 from boostorg/issue716
ckormanyos Jul 12, 2025
7aaaa7b
Merge branch 'develop' into more_coverage
ckormanyos Jul 12, 2025
a1b13b4
More docs tuning
ckormanyos Jul 13, 2025
3305c69
Restore the proper using statements
ckormanyos Jul 13, 2025
2ad2822
Tuning and simplification complex example
ckormanyos Jul 14, 2025
3d32b38
Merge pull request #724 from boostorg/more_docs_tuning
ckormanyos Jul 14, 2025
1ac05b1
Get complex_adaptor working for cpp_dec_float
ckormanyos Jul 14, 2025
590d343
Merge branch 'develop' into more_coverage
ckormanyos Jul 14, 2025
daaea29
Remove redundant and thus uncovered lines
ckormanyos Jul 14, 2025
5465bdd
Streamline one of the eval_pow overloads
ckormanyos Jul 14, 2025
0be1689
Keep tuning coverage
ckormanyos Jul 14, 2025
0d0b173
Further simplify eval-like operations
ckormanyos Jul 14, 2025
7aec177
Finish default_ops pow function tests
ckormanyos Jul 15, 2025
eec48fe
Streamline some syntax and more cover
ckormanyos Jul 15, 2025
0d3a7a2
Correct a syntax error
ckormanyos Jul 15, 2025
4dce9aa
Remove forgotten local test code
ckormanyos Jul 15, 2025
1404c25
Revert constants changes and query later
ckormanyos Jul 15, 2025
618132d
More pretty printing test progress
ckormanyos Jul 15, 2025
e4aada5
More tests and syntax
ckormanyos Jul 19, 2025
80609b2
Refactor from-u-long-long and an example
ckormanyos Jul 21, 2025
01f516e
Improve an example and also cover lines
ckormanyos Jul 21, 2025
76224e2
Fix a typo and get even more cover dec-float
ckormanyos Jul 21, 2025
ccb113d
Add more tests and also get more TBDs
ckormanyos Jul 21, 2025
eaab3bb
Docs style and typos and more syntax
ckormanyos Aug 15, 2025
c841339
Update docs again and re-run CI
ckormanyos Aug 16, 2025
8dfd6f3
Add a few more tests
ckormanyos Aug 16, 2025
55bf069
Fix mistakes (#729)
ivanpanch Aug 18, 2025
1a4fd94
Merge branch 'develop' into more_coverage
ckormanyos Aug 18, 2025
2b13610
Update docs
ckormanyos Aug 18, 2025
b40b35e
Finish most or nearly all of constexpr-ness
ckormanyos Aug 25, 2025
2f737ff
Patch std::is_same for old MSVC C++14
ckormanyos Aug 25, 2025
d1982bf
Handle review comments
ckormanyos Aug 29, 2025
61d99d0
Repair minor defects in CI
ckormanyos Aug 29, 2025
ec857ee
Exclude known constexpr-eval lines from cover
ckormanyos Aug 29, 2025
79e86d9
Try repair syntax for old compilers
ckormanyos Aug 29, 2025
c206385
Retry old compiler constexpr-ness
ckormanyos Aug 29, 2025
91e9ea7
Simplify constexpr-ness and correct a typo
ckormanyos Aug 30, 2025
62222f8
Patch constexpr-ness for old GCC
ckormanyos Aug 30, 2025
f351909
More patch constexpr-ness old GCC
ckormanyos Aug 30, 2025
324cc5f
Simplify constexpr-ness and deactivate a test
ckormanyos Aug 30, 2025
a26871b
Remove some constexpr reqs for old GCC
ckormanyos Aug 30, 2025
bb4911c
Readjust old compiler constexpr-ness
ckormanyos Aug 30, 2025
ac1b954
Syntax and exclude test very old compiler
ckormanyos Aug 30, 2025
5b53322
Revert constexpr-ness efforts
ckormanyos Aug 31, 2025
fc508e8
Merge pull request #711 from boostorg/more_coverage
ckormanyos Aug 31, 2025
5206da6
Simplify exponent functions
ckormanyos Aug 31, 2025
dba4d8a
Reduce constexpr reqs for old GCC
ckormanyos Aug 31, 2025
4cb7dee
Explore furthe constexpr reductions
ckormanyos Aug 31, 2025
0786839
Simplify syntax with tmp run-time perf loss
ckormanyos Aug 31, 2025
e7527ee
Square root optionally constexpr-eval
ckormanyos Sep 1, 2025
82da79c
Add more constexpr-ness
ckormanyos Sep 1, 2025
62cb7cd
Try finishing constexpr-ness
ckormanyos Sep 1, 2025
4aa8952
Disable test_round for double-fp on old GCC
ckormanyos Sep 1, 2025
d6bef9f
Merge pull request #730 from boostorg/constexpr_double_fp
ckormanyos Sep 1, 2025
d64f23f
First pass double_fp single-limb optimizations
ckormanyos Sep 1, 2025
23a5aaa
Repair silly typo but might need detail study
ckormanyos Sep 1, 2025
554bb27
Correct yet another silly typo (or hope to)
ckormanyos Sep 1, 2025
c46c3bf
Speed up construction from ulonglong
ckormanyos Sep 2, 2025
c056786
Correct a few potential typos
ckormanyos Sep 2, 2025
8f536de
Repair even more subtle namespace typos
ckormanyos Sep 2, 2025
6330e23
Further simplify constexpr-ness
ckormanyos Sep 3, 2025
793f9bb
Try repair some trivial typos
ckormanyos Sep 3, 2025
cbcf51c
Disable test_round for old GCC
ckormanyos Sep 3, 2025
43ce2d3
Merge pull request #731 from boostorg/limb_optimize_one
ckormanyos Sep 3, 2025
732b19b
Try handle more double_fp findings
ckormanyos Sep 4, 2025
cc05683
Default-constructed values are zero
ckormanyos Sep 4, 2025
a5c9665
Handle matters of syntax
ckormanyos Sep 4, 2025
3f6953c
Patch hash for boost::float128_type limb
ckormanyos Sep 4, 2025
51941b4
Remove all constexpr constraints str() method
ckormanyos Sep 4, 2025
f54b239
Remove very hard-to-reach lines for later
ckormanyos Sep 4, 2025
715e0b4
Merge pull request #732 from boostorg/more_double_fp_findings
ckormanyos Sep 5, 2025
5017931
Handle Git issue 734 in docs and code
ckormanyos Sep 6, 2025
2f07bf5
Revert misguided change in cpp_dec_float
ckormanyos Sep 6, 2025
1699262
Clarify matters of syntax
ckormanyos Sep 6, 2025
db2bcea
Re-correct backend docs
ckormanyos Sep 6, 2025
2135e30
Merge pull request #735 from boostorg/issue734
ckormanyos Sep 6, 2025
847ac43
Add more cpp_double_fp tests and handle warns
ckormanyos Sep 7, 2025
6a3ddc6
Repair file confusions
ckormanyos Sep 7, 2025
8852234
Repair typo in file name cpp extension
ckormanyos Sep 7, 2025
7bf5aaf
Try repair GNU mode configs
ckormanyos Sep 8, 2025
50f5c67
Exclude selected lines from coverage
ckormanyos Sep 8, 2025
32fef7c
Merge pull request #736 from boostorg/double_fp_warns_and_tests
ckormanyos Sep 8, 2025
0ddffc2
Refactor loop for warning issue 733
ckormanyos Sep 8, 2025
007b273
Merge pull request #737 from boostorg/issue733
ckormanyos Sep 8, 2025
2f408a1
Stop using ccache in codecov run
mborland Sep 18, 2025
6ec5a7d
Merge pull request #738 from boostorg/cache
mborland Sep 18, 2025
ef77359
Simplify syntax cpp_double_fp_backend
ckormanyos Sep 20, 2025
ba43d82
Patch up syntax error
ckormanyos Sep 20, 2025
156c878
Simplify rd_string() and improve syntax
ckormanyos Sep 20, 2025
156e03e
Improve rd_string inf-check and add tests
ckormanyos Sep 20, 2025
6f3c75c
Merge pull request #739 from boostorg/syntax_double_fp
ckormanyos Sep 20, 2025
ecb7de7
Disable warnings from deprecated numeric_limits members (clang version)
pps83 Sep 21, 2025
f40742c
Merge pull request #740 from pps83/develop-depr-decl
mborland Sep 22, 2025
6ffeac8
More double_fp syntax improvements
ckormanyos Sep 22, 2025
53a0e59
Merge pull request #741 from boostorg/more_double_fp_syntax
ckormanyos Sep 22, 2025
50c34d6
Update docs yet again
ckormanyos Sep 22, 2025
d19b4b8
Increase tolerance suspect sporadic fail
ckormanyos Sep 22, 2025
9aae2f8
Merge pull request #742 from boostorg/update_docs
ckormanyos Sep 22, 2025
090390e
Updated GCC on MinGW needs mbig-obj
ckormanyos Oct 25, 2025
bf95dbc
Review the various big obj spellings
ckormanyos Oct 25, 2025
0a1a6d7
Retry big object on MinGW
ckormanyos Oct 25, 2025
29a192e
Merge pull request #746 from boostorg/mingw_mbig_obj
ckormanyos Oct 25, 2025
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
2 changes: 1 addition & 1 deletion .github/workflows/codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
#timeout-minutes: 120
runs-on: ${{matrix.os}}
container: ${{matrix.container}}
env: {B2_USE_CCACHE: 1}
env: {B2_USE_CCACHE: 0}

steps:
- name: Setup environment
Expand Down
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ requiring extended range and precision.

Multiprecision consists of a generic interface to the mathematics
of large numbers as well as a selection of big number backends.
This includes interfaces to GMP, MPFR, MPIR and TomMath
These include interfaces to GMP, MPFR, MPIR and TomMath
and also Multiprecision's own collection of Boost-licensed,
header-only backends for integers, rationals, floats and complex-floats.

Expand All @@ -42,6 +42,9 @@ This usually provides better performance than using types configured without exp

The full documentation is available on [boost.org](http://www.boost.org/doc/libs/release/libs/multiprecision/index.html).

A practical, comprehensive, instructive, clear and very helpful video regarding the use of Multiprecision
can be found [here](https://www.youtube.com/watch?v=mK4WjpvLj4c).

## Using Multiprecision

<p align="center">
Expand Down
2 changes: 1 addition & 1 deletion config/Jamfile.v2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# copyright John Maddock 2008
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt.
# http://www.boost.org/LICENSE_1_0.txt)

import-search /boost/config/checks ;

Expand Down
2 changes: 1 addition & 1 deletion doc/html/boost_multiprecision/tut/interval.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
There is one currently only one interval number type supported - <a href="http://perso.ens-lyon.fr/nathalie.revol/software.html" target="_top">MPFI</a>.
</p>
<p>
[ section:mpfi mpfi_float]
[section:mpfi mpfi_float]
</p>
</div>
<div class="copyright-footer">Copyright © 2002-2020 John
Expand Down
32 changes: 16 additions & 16 deletions doc/introduction.qbk
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ but a header-only Boost license version is always available (if somewhat slower)

Should you just wish to 'cut to the chase' just to get bigger integers and/or bigger and more precise reals as simply and portably as possible,
close to 'drop-in' replacements for the __fundamental_type analogs,
then use a fully Boost-licensed number type, and skip to one of more of :
then use a fully Boost-licensed number type, and skip to one or more of:

* __cpp_int for multiprecision integers,
* __cpp_rational for rational types,
Expand Down Expand Up @@ -133,8 +133,8 @@ Conversions are also allowed:

However conversions that are inherently lossy are either declared explicit or else forbidden altogether:

d = 3.14; // Error implicit conversion from double not allowed.
d = static_cast<mp::int512_t>(3.14); // OK explicit construction is allowed
d = 3.14; // Error, implicit conversion from double not allowed.
d = static_cast<mp::int512_t>(3.14); // OK, explicit construction is allowed

Mixed arithmetic will fail if the conversion is either ambiguous or explicit:

Expand Down Expand Up @@ -195,9 +195,9 @@ of references to the arguments of the function, plus some compile-time informati
is.

The great advantage of this method is the ['elimination of temporaries]: for example, the "naive" implementation
of `operator*` above, requires one temporary for computing the result, and at least another one to return it. It's true
of `operator*` above requires one temporary for computing the result, and at least another one to return it. It's true
that sometimes this overhead can be reduced by using move-semantics, but it can't be eliminated completely. For example,
lets suppose we're evaluating a polynomial via Horner's method, something like this:
let's suppose we're evaluating a polynomial via Horner's method, something like this:

T a[7] = { /* some values */ };
//....
Expand All @@ -206,9 +206,9 @@ lets suppose we're evaluating a polynomial via Horner's method, something like t
If type `T` is a `number`, then this expression is evaluated ['without creating a single temporary value]. In contrast,
if we were using the [mpfr_class] C++ wrapper for [mpfr] - then this expression would result in no less than 11
temporaries (this is true even though [mpfr_class] does use expression templates to reduce the number of temporaries somewhat). Had
we used an even simpler wrapper around [mpfr] like [mpreal] things would have been even worse and no less that 24 temporaries
we used an even simpler wrapper around [mpfr] like [mpreal] things would have been even worse and no less than 24 temporaries
are created for this simple expression (note - we actually measure the number of memory allocations performed rather than
the number of temporaries directly, note also that the [mpf_class] wrapper that will be supplied with GMP-5.1 reduces the number of
the number of temporaries directly, note also that the [mpf_class] wrapper supplied with GMP-5.1 or later reduces the number of
temporaries to pretty much zero). Note that if we compile with expression templates disabled and rvalue-reference support
on, then actually still have no wasted memory allocations as even though temporaries are created, their contents are moved
rather than copied.
Expand Down Expand Up @@ -247,7 +247,7 @@ is created in this case.

Given the comments above, you might be forgiven for thinking that expression-templates are some kind of universal-panacea:
sadly though, all tricks like this have their downsides. For one thing, expression template libraries
like this one, tend to be slower to compile than their simpler cousins, they're also harder to debug
like this one tend to be slower to compile than their simpler cousins, they're also harder to debug
(should you actually want to step through our code!), and rely on compiler optimizations being turned
on to give really good performance. Also, since the return type from expressions involving `number`s
is an "unmentionable implementation detail", you have to be careful to cast the result of an expression
Expand All @@ -256,23 +256,23 @@ to the actual number type when passing an expression to a template function. Fo
template <class T>
void my_proc(const T&);

Then calling:
Then calling

my_proc(a+b);

Will very likely result in obscure error messages inside the body of `my_proc` - since we've passed it
will very likely result in obscure error messages inside the body of `my_proc` - since we've passed it
an expression template type, and not a number type. Instead we probably need:

my_proc(my_number_type(a+b));

Having said that, these situations don't occur that often - or indeed not at all for non-template functions.
In addition, all the functions in the Boost.Math library will automatically convert expression-template arguments
to the underlying number type without you having to do anything, so:
to the underlying number type without you having to do anything, so

mpfr_float_100 a(20), delta(0.125);
boost::math::gamma_p(a, a + delta);

Will work just fine, with the `a + delta` expression template argument getting converted to an `mpfr_float_100`
will work just fine, with the `a + delta` expression template argument getting converted to an `mpfr_float_100`
internally by the Boost.Math library.

[caution In C++11 you should never store an expression template using:
Expand All @@ -299,7 +299,7 @@ dramatic as the reduction in number of temporaries would suggest. For example,
we see the following typical results for polynomial execution:

[table Evaluation of Order 6 Polynomial.
[[Library] [Relative Time] [Relative number of memory allocations]]
[[Library] [Relative Time] [Relative Number of Memory Allocations]]
[[number] [1.0 (0.00957s)] [1.0 (2996 total)]]
[[[mpfr_class]] [1.1 (0.0102s)] [4.3 (12976 total)]]
[[[mpreal]] [1.6 (0.0151s)] [9.3 (27947 total)]]
Expand All @@ -311,13 +311,13 @@ a number of reasons for this:
* The cost of extended-precision multiplication and division is so great, that the times taken for these tend to
swamp everything else.
* The cost of an in-place multiplication (using `operator*=`) tends to be more than an out-of-place
`operator*` (typically `operator *=` has to create a temporary workspace to carry out the multiplication, where
as `operator*` can use the target variable as workspace). Since the expression templates carry out their
`operator*` (typically `operator *=` has to create a temporary workspace to carry out the multiplication,
whereas `operator*` can use the target variable as workspace). Since the expression templates carry out their
magic by converting out-of-place operators to in-place ones, we necessarily take this hit. Even so the
transformation is more efficient than creating the extra temporary variable, just not by as much as
one would hope.

Finally, note that `number` takes a second template argument, which, when set to `et_off` disables all
Finally, note that `number` takes a second template argument, which, when set to `et_off`, disables all
the expression template machinery. The result is much faster to compile, but slower at runtime.

We'll conclude this section by providing some more performance comparisons between these three libraries,
Expand Down
2 changes: 1 addition & 1 deletion doc/multiprecision.qbk
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@
[def __compiler_support [@https://en.cppreference.com/w/cpp/compiler_support compiler support]]
[def __ULP [@http://en.wikipedia.org/wiki/Unit_in_the_last_place Unit in the last place (ULP)]]
[def __Mathematica [@http://www.wolfram.com/products/mathematica/index.html Wolfram Mathematica]]
[def __WolframAlpha [@http://www.wolframalpha.com/ Wolfram Alpha]]
[def __WolframAlphaGLCoefs [@https://www.wolframalpha.com/input?i=Fit%5B%7B%7B21.0%2C+3.5%7D%2C+%7B51.0%2C+11.1%7D%2C+%7B101.0%2C+22.5%7D%2C+%7B201.0%2C+46.8%7D%7D%2C+%7B1%2C+d%2C+d%5E2%7D%2C+d%5D+FullSimplify%5B%25%5D Wolfram Alpha Gauss-Laguerre coefficients]]
[def __Boost_Serialization [@https://www.boost.org/doc/libs/release/libs/serialization/doc/index.html Boost.Serialization]]
[def __Boost_Math [@https://www.boost.org/doc/libs/release/libs/math/doc/index.html Boost.Math]]
[def __Boost_Multiprecision [@https://www.boost.org/doc/libs/release/libs/multiprecision/doc/index.html Boost.Multiprecision]]
Expand Down
6 changes: 3 additions & 3 deletions doc/performance.qbk
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt).
http://www.boost.org/LICENSE_1_0.txt.)
]

[section:perf Performance Comparison]
Expand All @@ -30,7 +30,7 @@ share similar relative performances.

The backends which effectively wrap GMP/MPIR and MPFR
retain the superior performance of the low-level big-number engines.
When these are used (in association with at least some level of optmization)
When these are used (in association with at least some level of optimization)
they achieve and retain the expected low-level performances.

At low digit counts, however, it is noted that the performances of __cpp_int,
Expand All @@ -47,7 +47,7 @@ the performances of the Boost-licensed, self-written backends.
At around a few hundred to several thousands of digits,
factors of about two through five are observed,
whereby GMP/MPIR-based calculations are (performance-wise)
supreior ones.
superior ones.

At a few thousand decimal digits, the upper end of
the Boost backends is reached. At the moment,
Expand Down
44 changes: 22 additions & 22 deletions doc/performance_integer_real_world.qbk
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,16 @@ type which was custom written for this specific task:

[table
[[Integer Type][Relative Performance (Actual time in parenthesis)]]
[[checked_int1024_t][1.53714(0.0415328s)]]
[[checked_int256_t][1.20715(0.0326167s)]]
[[checked_int512_t][1.2587(0.0340095s)]]
[[cpp_int][1.80575(0.0487904s)]]
[[extended_int][1.35652(0.0366527s)]]
[[int1024_t][1.36237(0.0368107s)]]
[[int256_t][1(0.0270196s)]]
[[int512_t][1.0779(0.0291243s)]]
[[mpz_int][3.83495(0.103619s)]]
[[tom_int][41.6378(1.12504s)]]
[[checked_int1024_t][1.53714 (0.0415328s)]]
[[checked_int256_t][1.20715 (0.0326167s)]]
[[checked_int512_t][1.2587 (0.0340095s)]]
[[cpp_int][1.80575 (0.0487904s)]]
[[extended_int][1.35652 (0.0366527s)]]
[[int1024_t][1.36237 (0.0368107s)]]
[[int256_t][1 (0.0270196s)]]
[[int512_t][1.0779 (0.0291243s)]]
[[mpz_int][3.83495 (0.103619s)]]
[[tom_int][41.6378 (1.12504s)]]
]

Note how for this use case, any dynamic allocation is a performance killer.
Expand All @@ -38,18 +38,18 @@ since that is the rate limiting step:

[table
[[Integer Type][Relative Performance (Actual time in parenthesis)]]
[[checked_uint1024_t][9.52301(0.0422246s)]]
[[cpp_int][11.2194(0.0497465s)]]
[[cpp_int (1024-bit cache)][10.7941(0.0478607s)]]
[[cpp_int (128-bit cache)][11.0637(0.0490558s)]]
[[cpp_int (256-bit cache)][11.5069(0.0510209s)]]
[[cpp_int (512-bit cache)][10.3303(0.0458041s)]]
[[cpp_int (no Expression templates)][16.1792(0.0717379s)]]
[[mpz_int][1.05106(0.00466034s)]]
[[mpz_int (no Expression templates)][1(0.00443395s)]]
[[tom_int][5.10595(0.0226395s)]]
[[tom_int (no Expression templates)][61.9684(0.274765s)]]
[[uint1024_t][9.32113(0.0413295s)]]
[[checked_uint1024_t][9.52301 (0.0422246s)]]
[[cpp_int][11.2194 (0.0497465s)]]
[[cpp_int (1024-bit cache)][10.7941 (0.0478607s)]]
[[cpp_int (128-bit cache)][11.0637 (0.0490558s)]]
[[cpp_int (256-bit cache)][11.5069 (0.0510209s)]]
[[cpp_int (512-bit cache)][10.3303 (0.0458041s)]]
[[cpp_int (no Expression templates)][16.1792 (0.0717379s)]]
[[mpz_int][1.05106 (0.00466034s)]]
[[mpz_int (no Expression templates)][1 (0.00443395s)]]
[[tom_int][5.10595 (0.0226395s)]]
[[tom_int (no Expression templates)][61.9684 (0.274765s)]]
[[uint1024_t][9.32113 (0.0413295s)]]
]

It's interesting to note that expression templates have little effect here - perhaps because the actual expressions involved
Expand Down
2 changes: 1 addition & 1 deletion doc/performance_overhead.qbk
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ for the [@../../performance/voronoi_performance.cpp voronoi-diagram builder test

[table
[[Type][Relative time]]
[[`int64_t`][[*1.0](0.0128646s)]]
[[`int64_t`][[*1.0] (0.0128646s)]]
[[`number<arithmetic_backend<int64_t>, et_off>`][1.005 (0.0129255s)]]
]

Expand Down
2 changes: 1 addition & 1 deletion doc/performance_rational_real_world.qbk
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ calculate the n'th Bernoulli number via mixed rational/integer arithmetic to giv
[[198][167.594528][0.8947434429][1.326461858]]
]

In this use case, most the of the rational numbers are fairly small and so the times taken are dominated by
In this use case, most of the rational numbers are fairly small and so the times taken are dominated by
the number of allocations performed. The following table illustrates how well each type performs on suppressing
allocations:

Expand Down
12 changes: 6 additions & 6 deletions doc/performance_real_world.qbk
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ increases contension inside new/delete.
[[cpp_dec_float_50 (3 concurrent threads)][5.66114 (0.524077s)][424]]
[[mpf_float_50][1.03648 (0.0959515s)][640961]]
[[mpf_float_50 (3 concurrent threads)][1.50439 (0.139268s)][2563517]]
[[mpf_float_50 (no expression templates][1 (0.0925745s)][1019039]]
[[mpf_float_50 (no expression templates (3 concurrent threads)][1.52451 (0.141131s)][4075842]]
[[mpf_float_50 (no expression templates)][1 (0.0925745s)][1019039]]
[[mpf_float_50 (no expression templates) (3 concurrent threads)][1.52451 (0.141131s)][4075842]]
[[mpfr_float_50][1.2513 (0.115838s)][583054]]
[[mpfr_float_50 (3 concurrent threads)][1.61301 (0.149324s)][2330876]]
[[mpfr_float_50 (no expression templates][1.42667 (0.132073s)][999594]]
[[mpfr_float_50 (no expression templates (3 concurrent threads)][2.00203 (0.185337s)][4000039]]
[[mpfr_float_50 (no expression templates)][1.42667 (0.132073s)][999594]]
[[mpfr_float_50 (no expression templates) (3 concurrent threads)][2.00203 (0.185337s)][4000039]]
[[static_mpfr_float_50][1.18358 (0.10957s)][22930]]
[[static_mpfr_float_50 (3 concurrent threads)][1.38802 (0.128496s)][93140]]
[[static_mpfr_float_50 (no expression templates)][1.14598 (0.106089s)][46861]]
Expand All @@ -41,9 +41,9 @@ increases contension inside new/delete.
[[cpp_bin_float_50 (3 concurrent threads)][3.50535 (56.6s)][28]]
[[cpp_dec_float_50][4.82763 (77.9505s)][0]]
[[mpf_float_50][1.06817 (17.2475s)][123749688]]
[[mpf_float_50 (no expression templates][1 (16.1468s)][152610085]]
[[mpf_float_50 (no expression templates)][1 (16.1468s)][152610085]]
[[mpfr_float_50][1.18754 (19.1749s)][118401290]]
[[mpfr_float_50 (no expression templates][1.36782 (22.0858s)][152816346]]
[[mpfr_float_50 (no expression templates)][1.36782 (22.0858s)][152816346]]
[[static_mpfr_float_50][1.04471 (16.8686s)][113395]]
]

Expand Down
Loading