[DEV] add v1.76.0

This commit is contained in:
2021-10-05 21:37:46 +02:00
parent a97e9ae7d4
commit d0115b733d
45133 changed files with 4744437 additions and 1026325 deletions

View File

@@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Integer Real World Tests</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<link rel="stylesheet" href="../../multiprecision.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.Multiprecision">
<link rel="up" href="../perf.html" title="Performance Comparison">
<link rel="prev" href="realworld.html" title="Floating-Point Real World Tests">
<link rel="next" href="float_performance.html" title="Float Algorithm Performance">
@@ -28,7 +28,7 @@
World Tests</a>
</h3></div></div></div>
<p>
The first set of <a href="../../../../performance/voronoi_performance.cpp" target="_top">tests</a>
The first set of <a href="http://www.boost.org/doc/libs/release/libs/multiprecision/doc/html/../../performance/voronoi_performance.cpp" target="_top">tests</a>
measure the times taken to execute the multiprecision part of the Voronoi-diagram
builder from Boost.Polygon. The tests mainly create a large number of temporaries
"just in case" multiprecision arithmetic is required, for comparison,
@@ -56,48 +56,12 @@
<tr>
<td>
<p>
polygon::detail::extended_int
checked_int1024_t
</p>
</td>
<td>
<p>
1(0.138831s)
</p>
</td>
</tr>
<tr>
<td>
<p>
int256_t
</p>
</td>
<td>
<p>
1.19247(0.165551s)
</p>
</td>
</tr>
<tr>
<td>
<p>
int512_t
</p>
</td>
<td>
<p>
1.23301(0.17118s)
</p>
</td>
</tr>
<tr>
<td>
<p>
int1024_t
</p>
</td>
<td>
<p>
1.21463(0.168628s)
1.53714(0.0415328s)
</p>
</td>
</tr>
@@ -109,7 +73,7 @@
</td>
<td>
<p>
1.31711(0.182855s)
1.20715(0.0326167s)
</p>
</td>
</tr>
@@ -121,19 +85,7 @@
</td>
<td>
<p>
1.57413(0.218538s)
</p>
</td>
</tr>
<tr>
<td>
<p>
checked_int1024_t
</p>
</td>
<td>
<p>
1.36992(0.190187s)
1.2587(0.0340095s)
</p>
</td>
</tr>
@@ -145,7 +97,55 @@
</td>
<td>
<p>
1.63244(0.226632s)
1.80575(0.0487904s)
</p>
</td>
</tr>
<tr>
<td>
<p>
extended_int
</p>
</td>
<td>
<p>
1.35652(0.0366527s)
</p>
</td>
</tr>
<tr>
<td>
<p>
int1024_t
</p>
</td>
<td>
<p>
1.36237(0.0368107s)
</p>
</td>
</tr>
<tr>
<td>
<p>
int256_t
</p>
</td>
<td>
<p>
1(0.0270196s)
</p>
</td>
</tr>
<tr>
<td>
<p>
int512_t
</p>
</td>
<td>
<p>
1.0779(0.0291243s)
</p>
</td>
</tr>
@@ -157,7 +157,7 @@
</td>
<td>
<p>
5.42511(0.753172s)
3.83495(0.103619s)
</p>
</td>
</tr>
@@ -169,7 +169,7 @@
</td>
<td>
<p>
29.0793(4.03709s)
41.6378(1.12504s)
</p>
</td>
</tr>
@@ -179,7 +179,7 @@
Note how for this use case, any dynamic allocation is a performance killer.
</p>
<p>
The next <a href="../../../../performance/miller_rabin_performance.cpp" target="_top">tests</a>
The next <a href="http://www.boost.org/doc/libs/release/libs/multiprecision/doc/html/../../performance/miller_rabin_performance.cpp" target="_top">tests</a>
measure the time taken to generate 1000 128-bit random numbers and test for
primality using the Miller Rabin test. This is primarily a test of modular-exponentiation
since that is the rate limiting step:
@@ -203,6 +203,18 @@
</tr></thead>
<tbody>
<tr>
<td>
<p>
checked_uint1024_t
</p>
</td>
<td>
<p>
6.90638(0.0477963s)
</p>
</td>
</tr>
<tr>
<td>
<p>
cpp_int
@@ -210,55 +222,7 @@
</td>
<td>
<p>
5.25827(0.379597s)
</p>
</td>
</tr>
<tr>
<td>
<p>
cpp_int (no Expression templates)
</p>
</td>
<td>
<p>
5.15675(0.372268s)
</p>
</td>
</tr>
<tr>
<td>
<p>
cpp_int (128-bit cache)
</p>
</td>
<td>
<p>
5.10882(0.368808s)
</p>
</td>
</tr>
<tr>
<td>
<p>
cpp_int (256-bit cache)
</p>
</td>
<td>
<p>
5.50623(0.397497s)
</p>
</td>
</tr>
<tr>
<td>
<p>
cpp_int (512-bit cache)
</p>
</td>
<td>
<p>
4.82257(0.348144s)
8.63811(0.0597808s)
</p>
</td>
</tr>
@@ -270,31 +234,55 @@
</td>
<td>
<p>
5.00053(0.360991s)
7.4261(0.051393s)
</p>
</td>
</tr>
<tr>
<td>
<p>
int1024_t
cpp_int (128-bit cache)
</p>
</td>
<td>
<p>
4.37589(0.315897s)
8.88868(0.061515s)
</p>
</td>
</tr>
<tr>
<td>
<p>
checked_int1024_t
cpp_int (256-bit cache)
</p>
</td>
<td>
<p>
4.52396(0.326587s)
8.83724(0.061159s)
</p>
</td>
</tr>
<tr>
<td>
<p>
cpp_int (512-bit cache)
</p>
</td>
<td>
<p>
7.53024(0.0521137s)
</p>
</td>
</tr>
<tr>
<td>
<p>
cpp_int (no Expression templates)
</p>
</td>
<td>
<p>
9.1372(0.0632349s)
</p>
</td>
</tr>
@@ -306,7 +294,7 @@
</td>
<td>
<p>
1(0.0721905s)
1(0.00692059s)
</p>
</td>
</tr>
@@ -318,7 +306,7 @@
</td>
<td>
<p>
1.0248(0.0739806s)
1.08118(0.00748244s)
</p>
</td>
</tr>
@@ -330,7 +318,7 @@
</td>
<td>
<p>
2.60673(0.188181s)
4.16719(0.0288394s)
</p>
</td>
</tr>
@@ -342,7 +330,19 @@
</td>
<td>
<p>
2.64997(0.191303s)
4.1723(0.0288748s)
</p>
</td>
</tr>
<tr>
<td>
<p>
uint1024_t
</p>
</td>
<td>
<p>
6.82875(0.047259s)
</p>
</td>
</tr>
@@ -352,22 +352,100 @@
It's interesting to note that expression templates have little effect here
- perhaps because the actual expressions involved are relatively trivial
in this case - so the time taken for multiplication and division tends to
dominate. Also note how increasing the internal cache size used by <code class="computeroutput"><span class="identifier">cpp_int</span></code> is quite effective in this case
in cutting out memory allocations altogether - cutting about a third off
the total runtime. Finally the much quicker times from GMP and tommath are
down to their much better modular-exponentiation algorithms (GMP's is about
5x faster). That's an issue which needs to be addressed in a future release
for <a class="link" href="../tut/ints/cpp_int.html" title="cpp_int">cpp_int</a>.
</p>
<p>
Test code was compiled with Microsoft Visual Studio 2010 with all optimisations
turned on (/Ox), and used MPIR-2.3.0 and <a href="http://www.mpfr.org" target="_top">MPFR</a>-3.0.0.
The tests were run on 32-bit Windows Vista machine.
dominate. The much quicker times from GMP and tommath are down to their much
better modular-exponentiation algorithms (GMP's is about 5x faster). That's
an issue which needs to be addressed in a future release for <a class="link" href="../tut/ints/cpp_int.html" title="cpp_int">cpp_int</a>.
</p>
<div class="table">
<a name="boost_multiprecision.perf.int_real_world.platform"></a><p class="title"><b>Table 1.17. Platform Details</b></p>
<div class="table-contents"><table class="table" summary="Platform Details">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Platform
</p>
</th>
<th>
<p>
Linux 5.3.0-24-generic, version #26-Ubuntu SMP Thu Nov 14 01:33:18
UTC 2019, x86_64
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
Compiler
</p>
</td>
<td>
<p>
GNU C++ version 9.2.1 20191008
</p>
</td>
</tr>
<tr>
<td>
<p>
GMP
</p>
</td>
<td>
<p>
6.1.2
</p>
</td>
</tr>
<tr>
<td>
<p>
MPFR
</p>
</td>
<td>
<p>
262146
</p>
</td>
</tr>
<tr>
<td>
<p>
Boost
</p>
</td>
<td>
<p>
107200
</p>
</td>
</tr>
<tr>
<td>
<p>
Run date
</p>
</td>
<td>
<p>
Dec 13 2019
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break">
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright © 2002-2020 John
Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>The Overhead in the Number Class Wrapper</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<link rel="stylesheet" href="../../multiprecision.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.Multiprecision">
<link rel="up" href="../perf.html" title="Performance Comparison">
<link rel="prev" href="../perf.html" title="Performance Comparison">
<link rel="next" href="realworld.html" title="Floating-Point Real World Tests">
@@ -28,19 +28,21 @@
Number Class Wrapper</a>
</h3></div></div></div>
<p>
Using a simple <a href="../../../../performance/arithmetic_backend.hpp" target="_top">backend
class</a> that wraps any built in arithmetic type we can measure the
overhead involved in wrapping a type inside the <code class="computeroutput"><span class="identifier">number</span></code>
Using a simple <a href="http://www.boost.org/doc/libs/release/libs/multiprecision/doc/html/../../performance/arithmetic_backend.hpp" target="_top">backend
class</a> that wraps any <a href="https://en.cppreference.com/w/cpp/language/types" target="_top">fundamental
(built-in)</a> arithmetic type we can measure the overhead involved in
wrapping a type inside the <code class="computeroutput"><span class="identifier">number</span></code>
frontend, and the effect that turning on expression templates has. The following
table compares the performance between <code class="computeroutput"><span class="keyword">double</span></code>
and a <code class="computeroutput"><span class="keyword">double</span></code> wrapped inside
class <code class="computeroutput"><span class="identifier">number</span></code>:
</p>
<div class="informaltable"><table class="table">
<div class="table">
<a name="boost_multiprecision.perf.overhead.bessel_functions_16_digit_precis"></a><p class="title"><b>Table 1.12. Bessel Functions (16 digit precision)</b></p>
<div class="table-contents"><table class="table" summary="Bessel Functions (16 digit precision)">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
@@ -50,12 +52,7 @@
</th>
<th>
<p>
Bessel Function Evaluation
</p>
</th>
<th>
<p>
Non-Central T Evaluation
Time
</p>
</th>
</tr></thead>
@@ -63,59 +60,43 @@
<tr>
<td>
<p>
<code class="computeroutput"><span class="keyword">double</span></code>
arithmetic_backend&lt;double&gt;
</p>
</td>
<td>
<p>
<span class="bold"><strong>1.0 (0.016s)</strong></span>
</p>
</td>
<td>
<p>
<span class="bold"><strong>1.0</strong></span> (0.46s)
2.09301 (0.00133409s)
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">arithmetic_backend</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;,</span>
<span class="identifier">et_off</span><span class="special">&gt;</span></code>
arithmetic_backend&lt;double&gt; - no expression templates
</p>
</td>
<td>
<p>
1.2 (0.019s)
</p>
</td>
<td>
<p>
<span class="bold"><strong>1.0</strong></span>(0.46s)
1 (0.000637403s)
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">arithmetic_backend</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;,</span>
<span class="identifier">et_on</span><span class="special">&gt;</span></code>
double
</p>
</td>
<td>
<p>
1.2 (0.019s)
</p>
</td>
<td>
<p>
1.7 (0.79s)
1.07956 (0.000688113s)
</p>
</td>
</tr>
</tbody>
</table></div>
<p>
</div>
<br class="table-break"><p>
As you can see whether or not there is an overhead, and how large it is depends
on the actual situation, but the overhead is in any cases small. Expression
templates generally add a greater overhead the more complex the expression
@@ -126,7 +107,7 @@
</p>
<p>
The following table compares arithmetic using either <code class="computeroutput"><span class="keyword">long</span>
<span class="keyword">long</span></code> or <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">arithmetic_backend</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">long</span><span class="special">&gt;</span> <span class="special">&gt;</span></code> for the <a href="../../../../performance/voronoi_performance.cpp" target="_top">voronoi-diagram
<span class="keyword">long</span></code> or <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">arithmetic_backend</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">long</span><span class="special">&gt;</span> <span class="special">&gt;</span></code> for the <a href="http://www.boost.org/doc/libs/release/libs/multiprecision/doc/html/../../performance/voronoi_performance.cpp" target="_top">voronoi-diagram
builder test</a>:
</p>
<div class="informaltable"><table class="table">
@@ -150,24 +131,25 @@
<tr>
<td>
<p>
<code class="computeroutput"><span class="keyword">long</span> <span class="keyword">long</span></code>
<code class="computeroutput"><span class="identifier">int64_t</span></code>
</p>
</td>
<td>
<p>
<span class="bold"><strong>1.0</strong></span>(0.0823s)
<span class="bold"><strong>1.0</strong></span>(0.0128646s)
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">arithmetic_backend</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">long</span><span class="special">&gt;,</span> <span class="identifier">et_off</span><span class="special">&gt;</span></code>
<code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">arithmetic_backend</span><span class="special">&lt;</span><span class="identifier">int64_t</span><span class="special">&gt;,</span>
<span class="identifier">et_off</span><span class="special">&gt;</span></code>
</p>
</td>
<td>
<p>
1.05 (0.0875s)
1.005 (0.0129255s)
</p>
</td>
</tr>
@@ -178,15 +160,72 @@
small amount of arithmetic on them, with very little difference in performance
between the native and "wrapped" types.
</p>
<p>
The test code was compiled with Microsoft Visual Studio 2010 with all optimisations
turned on (/Ox), and used MPIR-2.3.0 and <a href="http://libtom.org/?page=features&amp;newsitems=5&amp;whatfile=ltm" target="_top">libtommath</a>-0.42.0.
The tests were run on 32-bit Windows Vista machine.
</p>
<div class="table">
<a name="boost_multiprecision.perf.overhead.platform"></a><p class="title"><b>Table 1.13. Platform Details</b></p>
<div class="table-contents"><table class="table" summary="Platform Details">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Platform
</p>
</th>
<th>
<p>
Linux 5.3.0-24-generic, version #26-Ubuntu SMP Thu Nov 14 01:33:18
UTC 2019, x86_64
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
Compiler
</p>
</td>
<td>
<p>
GNU C++ version 9.2.1 20191008
</p>
</td>
</tr>
<tr>
<td>
<p>
Boost
</p>
</td>
<td>
<p>
1.72.0
</p>
</td>
</tr>
<tr>
<td>
<p>
Run date
</p>
</td>
<td>
<p>
Dec 13 2019
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break">
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright © 2002-2020 John
Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Floating-Point Real World Tests</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<link rel="stylesheet" href="../../multiprecision.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.Multiprecision">
<link rel="up" href="../perf.html" title="Performance Comparison">
<link rel="prev" href="overhead.html" title="The Overhead in the Number Class Wrapper">
<link rel="next" href="int_real_world.html" title="Integer Real World Tests">
@@ -30,15 +30,13 @@
<p>
These tests test the total time taken to execute all of Boost.Math's test
cases for these functions. In each case the best performing library gets
a relative score of 1, with the total execution time given in brackets. The
first three libraries listed are the various floating-point types provided
by this library, while for comparison, two popular C++ front-ends to <a href="http://www.mpfr.org" target="_top">MPFR</a> ( <a href="http://math.berkeley.edu/~wilken/code/gmpfrxx/" target="_top">mpfr_class</a>
and <a href="http://www.holoborodko.com/pavel/mpfr/" target="_top">mpreal</a>) are
also shown.
a relative score of 1, with the total execution time given in brackets. Times
are shown for both single threaded runs and concurrent execution - the latter
increases contension inside new/delete.
</p>
<div class="table">
<a name="boost_multiprecision.perf.realworld.bessel_function_performance"></a><p class="title"><b>Table&#160;1.12.&#160;Bessel Function Performance</b></p>
<div class="table-contents"><table class="table" summary="Bessel Function Performance">
<a name="boost_multiprecision.perf.realworld.bessel_functions_50_digit_precis"></a><p class="title"><b>Table 1.14. Bessel Functions (50 digit precision)</b></p>
<div class="table-contents"><table class="table" summary="Bessel Functions (50 digit precision)">
<colgroup>
<col>
<col>
@@ -47,17 +45,17 @@
<thead><tr>
<th>
<p>
Library
Type
</p>
</th>
<th>
<p>
50 Decimal Digits
Time
</p>
</th>
<th>
<p>
100 Decimal Digits
# Allocations
</p>
</th>
</tr></thead>
@@ -65,102 +63,272 @@
<tr>
<td>
<p>
mpfr_float
cpp_bin_float_50
</p>
</td>
<td>
<p>
1.2 (5.78s)
2.20534 (0.315701s)
</p>
</td>
<td>
<p>
1.2 (9.56s)
4
</p>
</td>
</tr>
<tr>
<td>
<p>
static_mpfr_float
cpp_bin_float_50 (3 concurrent threads)
</p>
</td>
<td>
<p>
1.1 (5.47s)
2.36703 (0.338848s)
</p>
</td>
<td>
<p>
1.1 (9.09s)
44
</p>
</td>
</tr>
<tr>
<td>
<p>
mpf_float
cpp_dec_float_50
</p>
</td>
<td>
<p>
<span class="bold"><strong>1.0</strong></span> (4.82s)
2.6349 (0.377193s)
</p>
</td>
<td>
<p>
<span class="bold"><strong>1.0</strong></span>(8.07s)
3
</p>
</td>
</tr>
<tr>
<td>
<p>
cpp_dec_float
cpp_dec_float_50 (3 concurrent threads)
</p>
</td>
<td>
<p>
1.8 (8.54s)
2.86599 (0.410275s)
</p>
</td>
<td>
<p>
2.6 (20.66s)
37
</p>
</td>
</tr>
<tr>
<td>
<p>
<a href="http://math.berkeley.edu/~wilken/code/gmpfrxx/" target="_top">mpfr_class</a>
mpf_float_50
</p>
</td>
<td>
<p>
1.3 (6.28s)
1.17269 (0.167874s)
</p>
</td>
<td>
<p>
1.2(10.06s)
870726
</p>
</td>
</tr>
<tr>
<td>
<p>
<a href="http://www.holoborodko.com/pavel/mpfr/" target="_top">mpreal</a>
mpf_float_50 (3 concurrent threads)
</p>
</td>
<td>
<p>
2.0 (9.54s)
1.43643 (0.205629s)
</p>
</td>
<td>
<p>
1.7 (14.08s)
3482853
</p>
</td>
</tr>
<tr>
<td>
<p>
mpf_float_50 (no expression templates
</p>
</td>
<td>
<p>
1.19799 (0.171495s)
</p>
</td>
<td>
<p>
1071229
</p>
</td>
</tr>
<tr>
<td>
<p>
mpf_float_50 (no expression templates (3 concurrent threads)
</p>
</td>
<td>
<p>
1.57224 (0.22507s)
</p>
</td>
<td>
<p>
4284875
</p>
</td>
</tr>
<tr>
<td>
<p>
mpfr_float_50
</p>
</td>
<td>
<p>
1.42535 (0.204043s)
</p>
</td>
<td>
<p>
813605
</p>
</td>
</tr>
<tr>
<td>
<p>
mpfr_float_50 (3 concurrent threads)
</p>
</td>
<td>
<p>
1.66446 (0.238272s)
</p>
</td>
<td>
<p>
3255603
</p>
</td>
</tr>
<tr>
<td>
<p>
mpfr_float_50 (no expression templates
</p>
</td>
<td>
<p>
1.51042 (0.216221s)
</p>
</td>
<td>
<p>
1001796
</p>
</td>
</tr>
<tr>
<td>
<p>
mpfr_float_50 (no expression templates (3 concurrent threads)
</p>
</td>
<td>
<p>
1.86742 (0.267326s)
</p>
</td>
<td>
<p>
4008535
</p>
</td>
</tr>
<tr>
<td>
<p>
static_mpfr_float_50
</p>
</td>
<td>
<p>
1.02344 (0.146508s)
</p>
</td>
<td>
<p>
18685
</p>
</td>
</tr>
<tr>
<td>
<p>
static_mpfr_float_50 (3 concurrent threads)
</p>
</td>
<td>
<p>
1.25745 (0.180008s)
</p>
</td>
<td>
<p>
75947
</p>
</td>
</tr>
<tr>
<td>
<p>
static_mpfr_float_50 (no expression templates)
</p>
</td>
<td>
<p>
1 (0.143153s)
</p>
</td>
<td>
<p>
46826
</p>
</td>
</tr>
<tr>
<td>
<p>
static_mpfr_float_50 (no expression templates) (3 concurrent threads)
</p>
</td>
<td>
<p>
1.12861 (0.161564s)
</p>
</td>
<td>
<p>
189192
</p>
</td>
</tr>
@@ -168,21 +336,27 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.realworld.non_central_t_distribution_perfo"></a><p class="title"><b>Table&#160;1.13.&#160;Non-Central T Distribution Performance</b></p>
<div class="table-contents"><table class="table" summary="Non-Central T Distribution Performance">
<a name="boost_multiprecision.perf.realworld.non_central_t_distribution_50_di"></a><p class="title"><b>Table 1.15. Non-central T Distribution (50 digit precision)</b></p>
<div class="table-contents"><table class="table" summary="Non-central T Distribution (50 digit precision)">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Library
Type
</p>
</th>
<th>
<p>
50 Decimal Digits
Time
</p>
</th>
<th>
<p>
# Allocations
</p>
</th>
</tr></thead>
@@ -190,87 +364,232 @@
<tr>
<td>
<p>
mpfr_float
cpp_bin_float_50
</p>
</td>
<td>
<p>
1.3 (263.27s)
2.3739 (59.0179s)
</p>
</td>
<td>
<p>
1
</p>
</td>
</tr>
<tr>
<td>
<p>
static_mpfr_float
cpp_bin_float_50 (3 concurrent threads)
</p>
</td>
<td>
<p>
1.2 (232.88s)
3.21496 (79.9276s)
</p>
</td>
<td>
<p>
29
</p>
</td>
</tr>
<tr>
<td>
<p>
mpf_float
cpp_dec_float_50
</p>
</td>
<td>
<p>
<span class="bold"><strong>1.0</strong></span> (195.73s)
2.47505 (61.5326s)
</p>
</td>
<td>
<p>
4
</p>
</td>
</tr>
<tr>
<td>
<p>
cpp_dec_float
mpf_float_50
</p>
</td>
<td>
<p>
1.9 (366.38s)
1.13495 (28.2162s)
</p>
</td>
<td>
<p>
162346817
</p>
</td>
</tr>
<tr>
<td>
<p>
<a href="http://math.berkeley.edu/~wilken/code/gmpfrxx/" target="_top">mpfr_class</a>
mpf_float_50 (no expression templates
</p>
</td>
<td>
<p>
1.5 (286.94s)
1 (24.8611s)
</p>
</td>
<td>
<p>
154896018
</p>
</td>
</tr>
<tr>
<td>
<p>
<a href="http://www.holoborodko.com/pavel/mpfr/" target="_top">mpreal</a>
mpfr_float_50
</p>
</td>
<td>
<p>
2.0 (388.70s)
1.84473 (45.8621s)
</p>
</td>
<td>
<p>
196986977
</p>
</td>
</tr>
<tr>
<td>
<p>
mpfr_float_50 (no expression templates
</p>
</td>
<td>
<p>
1.66952 (41.5062s)
</p>
</td>
<td>
<p>
194554719
</p>
</td>
</tr>
<tr>
<td>
<p>
static_mpfr_float_50
</p>
</td>
<td>
<p>
1.25101 (31.1014s)
</p>
</td>
<td>
<p>
1798554
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break"><p>
Test code was compiled with Microsoft Visual Studio 2010 with all optimisations
turned on (/Ox), and used MPIR-2.3.0 and <a href="http://www.mpfr.org" target="_top">MPFR</a>-3.0.0.
The tests were run on 32-bit Windows Vista machine.
</p>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.realworld.platform"></a><p class="title"><b>Table 1.16. Platform Details</b></p>
<div class="table-contents"><table class="table" summary="Platform Details">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Platform
</p>
</th>
<th>
<p>
Linux 5.3.0-24-generic, version #26-Ubuntu SMP Thu Nov 14 01:33:18
UTC 2019, x86_64
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
Compiler
</p>
</td>
<td>
<p>
GNU C++ version 9.2.1 20191008
</p>
</td>
</tr>
<tr>
<td>
<p>
GMP
</p>
</td>
<td>
<p>
6.1.2
</p>
</td>
</tr>
<tr>
<td>
<p>
MPFR
</p>
</td>
<td>
<p>
262146
</p>
</td>
</tr>
<tr>
<td>
<p>
Boost
</p>
</td>
<td>
<p>
107200
</p>
</td>
</tr>
<tr>
<td>
<p>
Run date
</p>
</td>
<td>
<p>
Dec 13 2019
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break">
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright © 2002-2020 John
Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>