|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r78807 - in sandbox/big_number: boost/multiprecision boost/multiprecision/detail libs/multiprecision/doc libs/multiprecision/doc/html libs/multiprecision/doc/html/boost_multiprecision libs/multiprecision/doc/html/boost_multiprecision/indexes libs/multiprecision/doc/html/boost_multiprecision/perf libs/multiprecision/doc/html/boost_multiprecision/ref libs/multiprecision/doc/html/boost_multiprecision/tut libs/multiprecision/doc/html/boost_multiprecision/tut/floats libs/multiprecision/doc/html/boost_multiprecision/tut/ints
From: john_at_[hidden]
Date: 2012-06-04 13:51:00
Author: johnmaddock
Date: 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
New Revision: 78807
URL: http://svn.boost.org/trac/boost/changeset/78807
Log:
Address doc concerns of Vincente Botet Escriba in pre-review comments.
Rebuild docs.
Added:
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/headers.html (contents, props changed)
Text files modified:
sandbox/big_number/boost/multiprecision/detail/mp_number_base.hpp | 14 +++++
sandbox/big_number/boost/multiprecision/mpfr.hpp | 2
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html | 4
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html | 4
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html | 4
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html | 4
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/intro.html | 20 +++++++
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf.html | 6 +-
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html | 18 +++---
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html | 40 +++++++-------
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html | 18 +++---
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html | 4
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref.html | 1
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html | 17 +++++-
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html | 3 +
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html | 3 +
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html | 3 +
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mp_number.html | 24 +++++++++
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html | 3 +
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html | 3 +
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html | 3 +
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html | 15 +++++
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html | 15 +++++
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html | 5 +
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html | 14 +++++
sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html | 5 +
sandbox/big_number/libs/multiprecision/doc/html/index.html | 3
sandbox/big_number/libs/multiprecision/doc/multiprecision.qbk | 101 +++++++++++++++++++++++++++++++++++++++
28 files changed, 297 insertions(+), 59 deletions(-)
Modified: sandbox/big_number/boost/multiprecision/detail/mp_number_base.hpp
==============================================================================
--- sandbox/big_number/boost/multiprecision/detail/mp_number_base.hpp (original)
+++ sandbox/big_number/boost/multiprecision/detail/mp_number_base.hpp 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -1234,6 +1234,20 @@
typedef typename boost::multiprecision::detail::mp_exp<tag, A1, A2, A3, A4>::result_type type;
};
+template <class R, class B, bool ET>
+inline R real_cast(const boost::multiprecision::mp_number<B, ET>& val)
+{
+ return val.template convert_to<R>();
+}
+
+template <class R, class tag, class A1, class A2, class A3, class A4>
+inline R real_cast(const boost::multiprecision::detail::mp_exp<tag, A1, A2, A3, A4>& val)
+{
+ typedef typename boost::multiprecision::detail::mp_exp<tag, A1, A2, A3, A4>::result_type val_type;
+ return val_type(val).template convert_to<R>();
+}
+
+
}}}
#endif // BOOST_MATH_BIG_NUM_BASE_HPP
Modified: sandbox/big_number/boost/multiprecision/mpfr.hpp
==============================================================================
--- sandbox/big_number/boost/multiprecision/mpfr.hpp (original)
+++ sandbox/big_number/boost/multiprecision/mpfr.hpp 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -25,7 +25,7 @@
namespace detail{
-long get_default_precision() { return 50; }
+inline long get_default_precision() { return 50; }
template <unsigned digits10>
struct mpfr_float_imp
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -13,9 +13,9 @@
<div class="spirit-nav">
<a accesskey="p" href="../indexes.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="s02.html"><img src="../../images/next.png" alt="Next"></a>
</div>
-<div class="section id930933">
+<div class="section id919617">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id930933"></a>Function Index</h3></div></div></div>
+<a name="id919617"></a>Function Index</h3></div></div></div>
<p><a class="link" href="s01.html#idx_id_0">A</a> <a class="link" href="s01.html#idx_id_1">B</a> <a class="link" href="s01.html#idx_id_2">C</a> <a class="link" href="s01.html#idx_id_3">D</a> <a class="link" href="s01.html#idx_id_4">E</a> <a class="link" href="s01.html#idx_id_5">F</a> <a class="link" href="s01.html#idx_id_7">I</a> <a class="link" href="s01.html#idx_id_8">L</a> <a class="link" href="s01.html#idx_id_9">M</a> <a class="link" href="s01.html#idx_id_12">P</a> <a class="link" href="s01.html#idx_id_13">R</a> <a class="link" href="s01.html#idx_id_14">S</a> <a class="link" href="s01.html#idx_id_15">T</a> <a class="link" href="s01.html#idx_id_16">Z</a></p>
<div class="variablelist"><dl>
<dt>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -13,9 +13,9 @@
<div class="spirit-nav">
<a accesskey="p" href="s01.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="s03.html"><img src="../../images/next.png" alt="Next"></a>
</div>
-<div class="section id931905">
+<div class="section id920589">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id931905"></a>Class Index</h3></div></div></div>
+<a name="id920589"></a>Class Index</h3></div></div></div>
<p><a class="link" href="s02.html#idx_id_19">C</a> <a class="link" href="s02.html#idx_id_23">G</a> <a class="link" href="s02.html#idx_id_26">M</a> <a class="link" href="s02.html#idx_id_27">N</a> <a class="link" href="s02.html#idx_id_32">T</a></p>
<div class="variablelist"><dl>
<dt>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -13,9 +13,9 @@
<div class="spirit-nav">
<a accesskey="p" href="s02.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="s04.html"><img src="../../images/next.png" alt="Next"></a>
</div>
-<div class="section id932138">
+<div class="section id920822">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id932138"></a>Typedef Index</h3></div></div></div>
+<a name="id920822"></a>Typedef Index</h3></div></div></div>
<p><a class="link" href="s03.html#idx_id_36">C</a> <a class="link" href="s03.html#idx_id_41">I</a> <a class="link" href="s03.html#idx_id_42">L</a> <a class="link" href="s03.html#idx_id_43">M</a> <a class="link" href="s03.html#idx_id_49">T</a></p>
<div class="variablelist"><dl>
<dt>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -12,9 +12,9 @@
<div class="spirit-nav">
<a accesskey="p" href="s03.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a>
</div>
-<div class="section id935985">
+<div class="section id921513">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id935985"></a>Index</h3></div></div></div>
+<a name="id921513"></a>Index</h3></div></div></div>
<p><a class="link" href="s04.html#idx_id_51">A</a> <a class="link" href="s04.html#idx_id_52">B</a> <a class="link" href="s04.html#idx_id_53">C</a> <a class="link" href="s04.html#idx_id_54">D</a> <a class="link" href="s04.html#idx_id_55">E</a> <a class="link" href="s04.html#idx_id_56">F</a> <a class="link" href="s04.html#idx_id_57">G</a> <a class="link" href="s04.html#idx_id_58">I</a> <a class="link" href="s04.html#idx_id_59">L</a> <a class="link" href="s04.html#idx_id_60">M</a> <a class="link" href="s04.html#idx_id_61">N</a> <a class="link" href="s04.html#idx_id_62">O</a> <a class="link" href="s04.html#idx_id_63">P</a> <a class="link" href="s04.html#idx_id_64">R</a> <a class="link" href="s04.html#idx_id_65">S</a> <a class="link" href="s04.html#idx_id_66">T</a> <a class="link" href="s04.html#idx_id_67">Z</a></p>
<div class="variablelist"><dl>
<dt>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/intro.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/intro.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/intro.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -86,6 +86,26 @@
<span class="identifier">my_float</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">c</span><span class="special">;</span> <span class="comment">// These variables have 300 decimal digits precision</span>
</pre>
+<p>
+ Note that mixing arithmetic operations using types of different precision is
+ strictly forbidden:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_int</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">namespace</span> <span class="identifier">mp</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span> <span class="comment">// Reduce the typing a bit later...</span>
+
+<span class="identifier">mp</span><span class="special">::</span><span class="identifier">mp_int128_t</span> <span class="identifier">a</span><span class="special">(</span><span class="number">3</span><span class="special">),</span> <span class="identifier">b</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
+<span class="identifier">mp</span><span class="special">::</span><span class="identifier">mp_int512_t</span> <span class="identifier">c</span><span class="special">(</span><span class="number">50</span><span class="special">),</span> <span class="identifier">d</span><span class="special">;</span>
+
+<span class="identifier">d</span> <span class="special">=</span> <span class="identifier">c</span> <span class="special">*</span> <span class="identifier">a</span><span class="special">;</span> <span class="comment">// Compiler error</span>
+</pre>
+<p>
+ However, conversions are allowed:
+ </p>
+<pre class="programlisting"><span class="identifier">d</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span> <span class="comment">// OK, widening conversion.</span>
+<span class="identifier">d</span> <span class="special">=</span> <span class="identifier">a</span> <span class="special">*</span> <span class="identifier">b</span><span class="special">;</span> <span class="comment">// OK, can convert from an expression template too.</span>
+<span class="identifier">d</span> <span class="special">=</span> <span class="identifier">mp</span><span class="special">::</span><span class="identifier">mp_int512_t</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">c</span><span class="special">;</span> <span class="comment">// OK, all the types in the expression are the same now.</span>
+</pre>
<h5>
<a name="boost_multiprecision.intro.h0"></a>
<span><a name="boost_multiprecision.intro.expression_templates"></a></span><a class="link" href="intro.html#boost_multiprecision.intro.expression_templates">Expression
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -6,12 +6,12 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.Multiprecision">
<link rel="up" href="../index.html" title="Chapter 1. Boost.Multiprecision">
-<link rel="prev" href="ref/backendconc.html" title="Backend Requirements">
+<link rel="prev" href="ref/headers.html" title="Header File Structure">
<link rel="next" href="perf/realworld.html" title="Floating Point Real World Tests">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
-<a accesskey="p" href="ref/backendconc.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="perf/realworld.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="ref/headers.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="perf/realworld.html"><img src="../images/next.png" alt="Next"></a>
</div>
<div class="section boost_multiprecision_perf">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -40,7 +40,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="ref/backendconc.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="perf/realworld.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="ref/headers.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="perf/realworld.html"><img src="../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -33,7 +33,7 @@
The tests were run on 32-bit Windows Vista machine.
</p>
<div class="table">
-<a name="boost_multiprecision.perf.float_performance.operator__"></a><p class="title"><b>Table 1.8. Operator +</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator__"></a><p class="title"><b>Table 1.10. Operator +</b></p>
<div class="table-contents"><table class="table" summary="Operator +">
<colgroup>
<col>
@@ -134,7 +134,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.float_performance.operator___int_"></a><p class="title"><b>Table 1.9. Operator +(int)</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator___int_"></a><p class="title"><b>Table 1.11. Operator +(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator +(int)">
<colgroup>
<col>
@@ -235,7 +235,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.float_performance.operator0"></a><p class="title"><b>Table 1.10. Operator -</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator0"></a><p class="title"><b>Table 1.12. Operator -</b></p>
<div class="table-contents"><table class="table" summary="Operator -">
<colgroup>
<col>
@@ -336,7 +336,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.float_performance.operator_int0"></a><p class="title"><b>Table 1.11. Operator -(int)</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator_int0"></a><p class="title"><b>Table 1.13. Operator -(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator -(int)">
<colgroup>
<col>
@@ -437,7 +437,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.float_performance.operator1"></a><p class="title"><b>Table 1.12. Operator *</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator1"></a><p class="title"><b>Table 1.14. Operator *</b></p>
<div class="table-contents"><table class="table" summary="Operator *">
<colgroup>
<col>
@@ -538,7 +538,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.float_performance.operator_int1"></a><p class="title"><b>Table 1.13. Operator *(int)</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator_int1"></a><p class="title"><b>Table 1.15. Operator *(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator *(int)">
<colgroup>
<col>
@@ -639,7 +639,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.float_performance.operator2"></a><p class="title"><b>Table 1.14. Operator /</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator2"></a><p class="title"><b>Table 1.16. Operator /</b></p>
<div class="table-contents"><table class="table" summary="Operator /">
<colgroup>
<col>
@@ -740,7 +740,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.float_performance.operator_int2"></a><p class="title"><b>Table 1.15. Operator /(int)</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator_int2"></a><p class="title"><b>Table 1.17. Operator /(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator /(int)">
<colgroup>
<col>
@@ -841,7 +841,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.float_performance.operator_str"></a><p class="title"><b>Table 1.16. Operator str</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator_str"></a><p class="title"><b>Table 1.18. Operator str</b></p>
<div class="table-contents"><table class="table" summary="Operator str">
<colgroup>
<col>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -37,7 +37,7 @@
much better there.
</p>
<div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator__"></a><p class="title"><b>Table 1.17. Operator +</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator__"></a><p class="title"><b>Table 1.19. Operator +</b></p>
<div class="table-contents"><table class="table" summary="Operator +">
<colgroup>
<col>
@@ -186,7 +186,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator___int_"></a><p class="title"><b>Table 1.18. Operator +(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator___int_"></a><p class="title"><b>Table 1.20. Operator +(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator +(int)">
<colgroup>
<col>
@@ -335,7 +335,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator0"></a><p class="title"><b>Table 1.19. Operator -</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator0"></a><p class="title"><b>Table 1.21. Operator -</b></p>
<div class="table-contents"><table class="table" summary="Operator -">
<colgroup>
<col>
@@ -484,7 +484,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator_int0"></a><p class="title"><b>Table 1.20. Operator -(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int0"></a><p class="title"><b>Table 1.22. Operator -(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator -(int)">
<colgroup>
<col>
@@ -633,7 +633,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator1"></a><p class="title"><b>Table 1.21. Operator *</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator1"></a><p class="title"><b>Table 1.23. Operator *</b></p>
<div class="table-contents"><table class="table" summary="Operator *">
<colgroup>
<col>
@@ -782,7 +782,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator_int1"></a><p class="title"><b>Table 1.22. Operator *(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int1"></a><p class="title"><b>Table 1.24. Operator *(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator *(int)">
<colgroup>
<col>
@@ -931,7 +931,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator2"></a><p class="title"><b>Table 1.23. Operator /</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator2"></a><p class="title"><b>Table 1.25. Operator /</b></p>
<div class="table-contents"><table class="table" summary="Operator /">
<colgroup>
<col>
@@ -1080,7 +1080,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator_int2"></a><p class="title"><b>Table 1.24. Operator /(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int2"></a><p class="title"><b>Table 1.26. Operator /(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator /(int)">
<colgroup>
<col>
@@ -1229,7 +1229,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator3"></a><p class="title"><b>Table 1.25. Operator %</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator3"></a><p class="title"><b>Table 1.27. Operator %</b></p>
<div class="table-contents"><table class="table" summary="Operator %">
<colgroup>
<col>
@@ -1378,7 +1378,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator_int3"></a><p class="title"><b>Table 1.26. Operator %(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int3"></a><p class="title"><b>Table 1.28. Operator %(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator %(int)">
<colgroup>
<col>
@@ -1527,7 +1527,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator___"></a><p class="title"><b>Table 1.27. Operator <<</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator___"></a><p class="title"><b>Table 1.29. Operator <<</b></p>
<div class="table-contents"><table class="table" summary="Operator <<">
<colgroup>
<col>
@@ -1676,7 +1676,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator4"></a><p class="title"><b>Table 1.28. Operator >></b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator4"></a><p class="title"><b>Table 1.30. Operator >></b></p>
<div class="table-contents"><table class="table" summary="Operator >>">
<colgroup>
<col>
@@ -1825,7 +1825,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator5"></a><p class="title"><b>Table 1.29. Operator &</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator5"></a><p class="title"><b>Table 1.31. Operator &</b></p>
<div class="table-contents"><table class="table" summary="Operator &">
<colgroup>
<col>
@@ -1974,7 +1974,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator_int4"></a><p class="title"><b>Table 1.30. Operator &(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int4"></a><p class="title"><b>Table 1.32. Operator &(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator &(int)">
<colgroup>
<col>
@@ -2123,7 +2123,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator6"></a><p class="title"><b>Table 1.31. Operator ^</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator6"></a><p class="title"><b>Table 1.33. Operator ^</b></p>
<div class="table-contents"><table class="table" summary="Operator ^">
<colgroup>
<col>
@@ -2272,7 +2272,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator_int5"></a><p class="title"><b>Table 1.32. Operator ^(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int5"></a><p class="title"><b>Table 1.34. Operator ^(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator ^(int)">
<colgroup>
<col>
@@ -2421,7 +2421,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator7"></a><p class="title"><b>Table 1.33. Operator |</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator7"></a><p class="title"><b>Table 1.35. Operator |</b></p>
<div class="table-contents"><table class="table" summary="Operator |">
<colgroup>
<col>
@@ -2570,7 +2570,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator_int6"></a><p class="title"><b>Table 1.34. Operator |(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int6"></a><p class="title"><b>Table 1.36. Operator |(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator |(int)">
<colgroup>
<col>
@@ -2719,7 +2719,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator_gcd"></a><p class="title"><b>Table 1.35. Operator gcd</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_gcd"></a><p class="title"><b>Table 1.37. Operator gcd</b></p>
<div class="table-contents"><table class="table" summary="Operator gcd">
<colgroup>
<col>
@@ -2868,7 +2868,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.integer_performance.operator_str"></a><p class="title"><b>Table 1.36. Operator str</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_str"></a><p class="title"><b>Table 1.38. Operator str</b></p>
<div class="table-contents"><table class="table" summary="Operator str">
<colgroup>
<col>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -33,7 +33,7 @@
The tests were run on 32-bit Windows Vista machine.
</p>
<div class="table">
-<a name="boost_multiprecision.perf.rational_performance.operator__"></a><p class="title"><b>Table 1.37. Operator +</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator__"></a><p class="title"><b>Table 1.39. Operator +</b></p>
<div class="table-contents"><table class="table" summary="Operator +">
<colgroup>
<col>
@@ -128,7 +128,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.rational_performance.operator___int_"></a><p class="title"><b>Table 1.38. Operator +(int)</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator___int_"></a><p class="title"><b>Table 1.40. Operator +(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator +(int)">
<colgroup>
<col>
@@ -223,7 +223,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.rational_performance.operator0"></a><p class="title"><b>Table 1.39. Operator -</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator0"></a><p class="title"><b>Table 1.41. Operator -</b></p>
<div class="table-contents"><table class="table" summary="Operator -">
<colgroup>
<col>
@@ -318,7 +318,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.rational_performance.operator_int0"></a><p class="title"><b>Table 1.40. Operator -(int)</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator_int0"></a><p class="title"><b>Table 1.42. Operator -(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator -(int)">
<colgroup>
<col>
@@ -413,7 +413,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.rational_performance.operator1"></a><p class="title"><b>Table 1.41. Operator *</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator1"></a><p class="title"><b>Table 1.43. Operator *</b></p>
<div class="table-contents"><table class="table" summary="Operator *">
<colgroup>
<col>
@@ -508,7 +508,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.rational_performance.operator_int1"></a><p class="title"><b>Table 1.42. Operator *(int)</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator_int1"></a><p class="title"><b>Table 1.44. Operator *(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator *(int)">
<colgroup>
<col>
@@ -603,7 +603,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.rational_performance.operator2"></a><p class="title"><b>Table 1.43. Operator /</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator2"></a><p class="title"><b>Table 1.45. Operator /</b></p>
<div class="table-contents"><table class="table" summary="Operator /">
<colgroup>
<col>
@@ -698,7 +698,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.rational_performance.operator_int2"></a><p class="title"><b>Table 1.44. Operator /(int)</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator_int2"></a><p class="title"><b>Table 1.46. Operator /(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator /(int)">
<colgroup>
<col>
@@ -793,7 +793,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.rational_performance.operator_str"></a><p class="title"><b>Table 1.45. Operator str</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator_str"></a><p class="title"><b>Table 1.47. Operator str</b></p>
<div class="table-contents"><table class="table" summary="Operator str">
<colgroup>
<col>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -33,7 +33,7 @@
The tests were run on 32-bit Windows Vista machine.
</p>
<div class="table">
-<a name="boost_multiprecision.perf.realworld.bessel_function_performance"></a><p class="title"><b>Table 1.6. Bessel Function Performance</b></p>
+<a name="boost_multiprecision.perf.realworld.bessel_function_performance"></a><p class="title"><b>Table 1.8. Bessel Function Performance</b></p>
<div class="table-contents"><table class="table" summary="Bessel Function Performance">
<colgroup>
<col>
@@ -147,7 +147,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="boost_multiprecision.perf.realworld.non_central_t_distribution_performance"></a><p class="title"><b>Table 1.7. Non-Central T Distribution Performance</b></p>
+<a name="boost_multiprecision.perf.realworld.non_central_t_distribution_performance"></a><p class="title"><b>Table 1.9. Non-Central T Distribution Performance</b></p>
<div class="table-contents"><table class="table" summary="Non-Central T Distribution Performance">
<colgroup>
<col>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -26,6 +26,7 @@
<dt><span class="section">mpfr_float_backend</span></dt>
<dt><span class="section">cpp_dec_float</span></dt>
<dt><span class="section">Backend Requirements</span></dt>
+<dt><span class="section">Header File Structure</span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -7,11 +7,11 @@
<link rel="home" href="../../index.html" title="Chapter 1. Boost.Multiprecision">
<link rel="up" href="../ref.html" title="Reference">
<link rel="prev" href="cpp_dec_ref.html" title="cpp_dec_float">
-<link rel="next" href="../perf.html" title="Performance Comparison">
+<link rel="next" href="headers.html" title="Header File Structure">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
-<a accesskey="p" href="cpp_dec_ref.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../perf.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="cpp_dec_ref.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="headers.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section boost_multiprecision_ref_backendconc">
<div class="titlepage"><div><div><h3 class="title">
@@ -2266,7 +2266,16 @@
</tbody>
</table></div>
</div>
-<br class="table-break"><div class="note"><table border="0" summary="Note">
+<br class="table-break"><p>
+ The tables above place no <span class="emphasis"><em>throws</em></span> requirements on any
+ of the operations. It is up to each type modelling this concept to decide
+ when or whether throwing an exception is desirable. However, thrown exceptions
+ should always either be the type, or inherit from the type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span></code>.
+ For example, a floating point type might choose to throw <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code>
+ whenever the result of an operation would be infinite, and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code>
+ whenever it would round to zero.
+ </p>
+<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
<th align="left">Note</th>
@@ -2289,7 +2298,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="cpp_dec_ref.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../perf.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="cpp_dec_ref.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="headers.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -42,6 +42,9 @@
unreasonably large.
</p>
<p>
+ The type of <code class="computeroutput"><span class="identifier">number_category</span><span class="special"><</span><span class="identifier">cpp_int</span><span class="special"><</span><span class="identifier">Args</span><span class="special">...></span> <span class="special">>::</span><span class="identifier">type</span></code> is <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">number_kind_floating_point</span><span class="special">></span></code>.
+ </p>
+<p>
More information on this type can be found in the <a class="link" href="../tut/floats/cpp_dec_float.html" title="cpp_dec_float">tutorial</a>.
</p>
</div>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -80,6 +80,9 @@
</dl>
</div>
<p>
+ The type of <code class="computeroutput"><span class="identifier">number_category</span><span class="special"><</span><span class="identifier">cpp_int</span><span class="special"><</span><span class="identifier">Args</span><span class="special">...></span> <span class="special">>::</span><span class="identifier">type</span></code> is <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">number_kind_integer</span><span class="special">></span></code>.
+ </p>
+<p>
More information on this type can be found in the <a class="link" href="../tut/ints/cpp_int.html" title="cpp_int">tutorial</a>.
</p>
</div>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -32,6 +32,9 @@
these are considered implementation details that are subject to change.
</p>
<p>
+ The type of <code class="computeroutput"><span class="identifier">number_category</span><span class="special"><</span><span class="identifier">cpp_int</span><span class="special"><</span><span class="identifier">Args</span><span class="special">...></span> <span class="special">>::</span><span class="identifier">type</span></code> is <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">number_kind_integer</span><span class="special">></span></code>.
+ </p>
+<p>
More information on this type can be found in the <a class="link" href="../tut/ints/gmp_int.html" title="gmp_int">tutorial</a>.
</p>
</div>
Added: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/headers.html
==============================================================================
--- (empty file)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/headers.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -0,0 +1,331 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header File Structure</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../ref.html" title="Reference">
+<link rel="prev" href="backendconc.html" title="Backend Requirements">
+<link rel="next" href="../perf.html" title="Performance Comparison">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="backendconc.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../perf.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section boost_multiprecision_ref_headers">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_multiprecision.ref.headers"></a><a class="link" href="headers.html" title="Header File Structure">Header File Structure</a>
+</h3></div></div></div>
+<div class="table">
+<a name="boost_multiprecision.ref.headers.top_level_headers"></a><p class="title"><b>Table 1.6. Top level headers</b></p>
+<div class="table-contents"><table class="table" summary="Top level headers">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Header
+ </p>
+ </th>
+<th>
+ <p>
+ Contains
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ cpp_int.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ The <code class="computeroutput"><span class="identifier">cpp_int</span></code> backend
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ gmp.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Defines all GMP related
+ backends.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ integer_ops.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Integer specific non-member functions.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ miller_rabin.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Miller Rabin primality testing code.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mp_number.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Defines the <code class="computeroutput"><span class="identifier">mp_number</span></code>
+ backend, is included by all the backend headers.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mpfr.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Defines the mpfr_float_backend backend.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ random.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Defines code to interoperate with Boost.Random.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ rational_adapter.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Defines the <code class="computeroutput"><span class="identifier">rational_adapter</span></code>
+ backend.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ cpp_dec_float.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Defines the <code class="computeroutput"><span class="identifier">cpp_dec_float</span></code>
+ backend.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ tommath.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Defines the <code class="computeroutput"><span class="identifier">tommath_int</span></code>
+ backend.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ concepts/mp_number_architypes.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Defines a backend concept architypes for testing use.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="boost_multiprecision.ref.headers.implementation_headers_"></a><p class="title"><b>Table 1.7. Implementation Headers]</b></p>
+<div class="table-contents"><table class="table" summary="Implementation Headers]">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Header
+ </p>
+ </th>
+<th>
+ <p>
+ Contains
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ detail/big_lanczos.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Lanczos support for Boost.Math integration.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ detail/cpp_int_core.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Platform and peformance tuning for the <code class="computeroutput"><span class="identifier">cpp_int</span></code>
+ backend.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ detail/default_ops.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Default versions of the optional backend non-member functions.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ detail/generic_interconvert.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Generic interconversion routines.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ detail/mp_number_base.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ All the expression template code, metaprogramming, and operator
+ overloads for <code class="computeroutput"><span class="identifier">mp_number</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ detail/no_et_ops.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ The non-expression template operators.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ defail/functions/constants.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Defines constants used by the floating point functions.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ detail/functions/pow.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Defines default versions of the power and exponential related floating
+ point functions.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ detail/functions/trig.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ Defines default versions of the trigonometric related floating
+ point functions.
+ </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 © 2002-2012 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 http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="backendconc.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../perf.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mp_number.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mp_number.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mp_number.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -74,6 +74,8 @@
<span class="special">};</span>
<span class="comment">// Non member operators:</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="keyword">operator</span><span class="special">+(</span><span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="keyword">operator</span><span class="special">-(</span><span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&);</span>
<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="keyword">operator</span><span class="special">+(</span><span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&,</span> <span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&);</span>
<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="keyword">operator</span><span class="special">-(</span><span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&,</span> <span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&);</span>
<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="keyword">operator</span><span class="special">*(</span><span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&,</span> <span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&);</span>
@@ -242,6 +244,13 @@
<li class="listitem">
Any type that the Backend is constructible or assignable from.
</li>
+<li class="listitem">
+ An rvalue reference to another <code class="computeroutput"><span class="identifier">mp_number</span></code>.
+ Move-semantics are used for construction if the backend also supports
+ rvalue reference construction. In the case of assignment, move semantics
+ are always supported when the argument is an rvalue reference irrespective
+ of the backend.
+ </li>
</ul></div>
<p>
In addition, if the type has multiple components (for example rational or
@@ -292,6 +301,10 @@
type with a positive value (negative values result in a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span></code>
being thrown).
</p>
+<p>
+ Note that all the types involved in the expression must evaluate to the same
+ type - which is to say we cannot mix an <code class="computeroutput"><span class="identifier">mp_number</span><span class="special"><</span><span class="identifier">B1</span><span class="special">></span></code> with an <code class="computeroutput"><span class="identifier">mp_number</span><span class="special"><</span><span class="identifier">B2</span><span class="special">></span></code> where B1 and B2 are different types.
+ </p>
<pre class="programlisting"><span class="keyword">operator</span> <span class="emphasis"><em>convertible-to-bool-type</em></span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
</pre>
<p>
@@ -383,6 +396,8 @@
operators</a>
</h5>
<pre class="programlisting"><span class="comment">// Non member operators:</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="keyword">operator</span><span class="special">+(</span><span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="keyword">operator</span><span class="special">-(</span><span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&);</span>
<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="keyword">operator</span><span class="special">+(</span><span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&,</span> <span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&);</span>
<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="keyword">operator</span><span class="special">-(</span><span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&,</span> <span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&);</span>
<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="keyword">operator</span><span class="special">*(</span><span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&,</span> <span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&);</span>
@@ -440,6 +455,10 @@
</li>
</ul></div>
<p>
+ Note that all the types involved in the expression must evaluate to the same
+ type - which is to say we cannot mix an <code class="computeroutput"><span class="identifier">mp_number</span><span class="special"><</span><span class="identifier">B1</span><span class="special">></span></code> with an <code class="computeroutput"><span class="identifier">mp_number</span><span class="special"><</span><span class="identifier">B2</span><span class="special">></span></code> where B1 and B2 are different types.
+ </p>
+<p>
Finally note that the second argument to the left and right shift operations
must be a builtin integer type, and that the argument must be positive (negative
arguments result in a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span></code>
@@ -530,7 +549,10 @@
</p>
<p>
Also note that with the exception of <code class="computeroutput"><span class="identifier">abs</span></code>
- that these functions can only be used with floating-point Backend types.
+ that these functions can only be used with floating-point Backend types (if
+ any other types such as fixed precision or complex types are added to the
+ library later, then these functions may be extended to support those number
+ types).
</p>
<h5>
<a name="boost_multiprecision.ref.mp_number.h6"></a>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -48,6 +48,9 @@
differing precision.
</p>
<p>
+ The type of <code class="computeroutput"><span class="identifier">number_category</span><span class="special"><</span><span class="identifier">cpp_int</span><span class="special"><</span><span class="identifier">Args</span><span class="special">...></span> <span class="special">>::</span><span class="identifier">type</span></code> is <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">number_kind_floating_point</span><span class="special">></span></code>.
+ </p>
+<p>
More information on this type can be found in the <a class="link" href="../tut/floats/gmp_float.html" title="gmp_float">tutorial</a>.
</p>
</div>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -48,6 +48,9 @@
of differing precision.
</p>
<p>
+ The type of <code class="computeroutput"><span class="identifier">number_category</span><span class="special"><</span><span class="identifier">cpp_int</span><span class="special"><</span><span class="identifier">Args</span><span class="special">...></span> <span class="special">>::</span><span class="identifier">type</span></code> is <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">number_kind_floating_point</span><span class="special">></span></code>.
+ </p>
+<p>
More information on this type can be found in the <a class="link" href="../tut/floats/mpfr_float.html" title="mpfr_float">tutorial</a>.
</p>
</div>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -32,6 +32,9 @@
these are considered implementation details that are subject to change.
</p>
<p>
+ The type of <code class="computeroutput"><span class="identifier">number_category</span><span class="special"><</span><span class="identifier">cpp_int</span><span class="special"><</span><span class="identifier">Args</span><span class="special">...></span> <span class="special">>::</span><span class="identifier">type</span></code> is <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="identifier">number_kind_integer</span><span class="special">></span></code>.
+ </p>
+<p>
More information on this type can be found in the <a class="link" href="../tut/ints/tom_int.html" title="tom_int">tutorial</a>.
</p>
</div>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -89,6 +89,21 @@
<span class="identifier">mpf_init_set_ui</span><span class="special">(</span><span class="identifier">m</span><span class="special">,</span> <span class="number">0</span><span class="special">);</span> <span class="comment">// set to a value;</span>
<span class="identifier">mpf_float</span> <span class="identifier">i</span><span class="special">(</span><span class="identifier">m</span><span class="special">);</span> <span class="comment">// copies the value of the native type.</span>
</pre>
+<p>
+ More information on what additional types a backend supports conversions
+ from are given in the tutorial for each backend.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ An <code class="computeroutput"><span class="identifier">mp_number</span></code> can be converted
+ to any built in type, via the <code class="computeroutput"><span class="identifier">convert_to</span></code>
+ member function:
+ </li></ul></div>
+<pre class="programlisting"><span class="identifier">mpz_int</span> <span class="identifier">z</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
+<span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">z</span><span class="special">.</span><span class="keyword">template</span> <span class="identifier">convert_to</span><span class="special"><</span><span class="keyword">int</span><span class="special">>();</span> <span class="comment">// sets i to 2</span>
+</pre>
+<p>
+ Additional conversions may be supported by particular backends.
+ </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -70,6 +70,21 @@
specified in the template argument. Normally these should not be visible
to the user.
</li>
+<li class="listitem">
+ The type supports both infinities and NaN's. An infinity is generated
+ whenever the result would overflow, and a NaN is generated for any
+ mathematically undefined operation.
+ </li>
+<li class="listitem">
+ There is a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code> specialisation for
+ this type.
+ </li>
+<li class="listitem">
+ Any <code class="computeroutput"><span class="identifier">mp_number</span></code> instantiated
+ on this type, is convertible to any other <code class="computeroutput"><span class="identifier">mp_number</span></code>
+ instantiated on this type - for example you can convert from <code class="computeroutput"><span class="identifier">mp_number</span><span class="special"><</span><span class="identifier">cpp_dec_float</span><span class="special"><</span><span class="number">50</span><span class="special">></span> <span class="special">></span></code> to <code class="computeroutput"><span class="identifier">mp_number</span><span class="special"><</span><span class="identifier">cpp_dec_float</span><span class="special"><</span><span class="identifier">SomeOtherValue</span><span class="special">></span> <span class="special">></span></code>.
+ Narrowing conversions are truncating.
+ </li>
</ul></div>
<h6>
<a name="boost_multiprecision.tut.floats.cpp_dec_float.h0"></a>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -107,6 +107,11 @@
in place of GMP - indeed that
is the preferred option on Win32.
</li>
+<li class="listitem">
+ This backend supports rvalue-references and is move-aware, making instantiations
+ of <code class="computeroutput"><span class="identifier">mp_number</span></code> on this
+ backend move aware.
+ </li>
</ul></div>
<h6>
<a name="boost_multiprecision.tut.floats.mpfr_float.h0"></a>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -134,6 +134,20 @@
difference to the performance of these types either way - so we may
as well have the faster compile times by turning the feature off.
</li>
+<li class="listitem">
+ Unsigned types support subtraction, and unary negation - the result
+ is "as if" a 2's complement operation had been performed
+ - in other words they behave pretty much as a built in integer type
+ would in this situation. So for example if we were using <code class="computeroutput"><span class="identifier">mp_uint128_t</span></code> then both <code class="computeroutput"><span class="identifier">mp_uint128_t</span><span class="special">(</span><span class="number">1</span><span class="special">)-</span><span class="number">4</span></code>
+ and <code class="computeroutput"><span class="special">-</span><span class="identifier">mp_uint128</span><span class="special">(</span><span class="number">3</span><span class="special">)</span></code>
+ would result in the value <code class="computeroutput"><span class="number">0</span><span class="identifier">xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD</span></code>
+ of type <code class="computeroutput"><span class="identifier">mp_uint128_t</span></code>.
+ </li>
+<li class="listitem">
+ This backend supports rvalue-references and is move-aware, making instantiations
+ of <code class="computeroutput"><span class="identifier">mp_number</span></code> on this
+ backend move aware.
+ </li>
</ul></div>
<h6>
<a name="boost_multiprecision.tut.ints.cpp_int.h0"></a>
Modified: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -85,6 +85,11 @@
Indeed use of MPIR is recommended
on Win32.
</li>
+<li class="listitem">
+ This backend supports rvalue-references and is move-aware, making instantiations
+ of <code class="computeroutput"><span class="identifier">mp_number</span></code> on this
+ backend move aware.
+ </li>
</ul></div>
<h6>
<a name="boost_multiprecision.tut.ints.gmp_int.h0"></a>
Modified: sandbox/big_number/libs/multiprecision/doc/html/index.html
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/html/index.html (original)
+++ sandbox/big_number/libs/multiprecision/doc/html/index.html 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -86,6 +86,7 @@
<dt><span class="section">mpfr_float_backend</span></dt>
<dt><span class="section">cpp_dec_float</span></dt>
<dt><span class="section">Backend Requirements</span></dt>
+<dt><span class="section">Header File Structure</span></dt>
</dl></dd>
<dt><span class="section">Performance Comparison</span></dt>
<dd><dl>
@@ -117,7 +118,7 @@
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: June 04, 2012 at 15:17:54 GMT</small></p></td>
+<td align="left"><p><small>Last revised: June 04, 2012 at 17:33:32 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
Modified: sandbox/big_number/libs/multiprecision/doc/multiprecision.qbk
==============================================================================
--- sandbox/big_number/libs/multiprecision/doc/multiprecision.qbk (original)
+++ sandbox/big_number/libs/multiprecision/doc/multiprecision.qbk 2012-06-04 13:50:57 EDT (Mon, 04 Jun 2012)
@@ -100,6 +100,23 @@
my_float a, b, c; // These variables have 300 decimal digits precision
+Note that mixing arithmetic operations using types of different precision is strictly forbidden:
+
+ #include <boost/multiprecision/cpp_int.hpp>
+
+ namespace mp = boost::multiprecision; // Reduce the typing a bit later...
+
+ mp::mp_int128_t a(3), b(2);
+ mp::mp_int512_t c(50), d;
+
+ d = c * a; // Compiler error
+
+However, conversions are allowed:
+
+ d = a; // OK, widening conversion.
+ d = a * b; // OK, can convert from an expression template too.
+ d = mp::mp_int512_t(a) * c; // OK, all the types in the expression are the same now.
+
[h4 Expression Templates]
Class `mp_number` is expression-template-enabled: that means that rather than having a multiplication
@@ -333,6 +350,12 @@
* The fixed precision types `mp_[u]intXXX_t` have expression template support turned off - it seems to make little
difference to the performance of these types either way - so we may as well have the faster compile times by turning
the feature off.
+* Unsigned types support subtraction, and unary negation - the result is "as if" a 2's complement operation had been performed
+ - in other words they behave pretty much as a built in integer type would in this situation. So for example if we were using
+ `mp_uint128_t` then both `mp_uint128_t(1)-4` and `-mp_uint128(3)` would result in the value `0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD`
+ of type `mp_uint128_t`.
+* This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware.
+
[h5 Example:]
@@ -373,6 +396,7 @@
* Division by zero is handled by the [gmp] library - it will trigger a division by zero signal.
* Although this type is a wrapper around [gmp] it will work equally well with [mpir]. Indeed use of [mpir]
is recommended on Win32.
+* This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware.
[h5 Example:]
@@ -543,6 +567,7 @@
* No changes are made to [gmp] or [mpfr] global settings, so this type can coexist with existing
[mpfr] or [gmp] code.
* The code can equally use [mpir] in place of [gmp] - indeed that is the preferred option on Win32.
+* This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware.
[h5 [mpfr] example:]
@@ -582,6 +607,12 @@
(this is a result of the type having some hidden internal guard digits).
* The type has a number of internal guard digits over and above those specified in the template argument.
Normally these should not be visible to the user.
+* The type supports both infinities and NaN's. An infinity is generated whenever the result would overflow,
+and a NaN is generated for any mathematically undefined operation.
+* There is a `std::numeric_limits` specialisation for this type.
+* Any `mp_number` instantiated on this type, is convertible to any other `mp_number` instantiated on this type -
+for example you can convert from `mp_number<cpp_dec_float<50> >` to `mp_number<cpp_dec_float<SomeOtherValue> >`.
+Narrowing conversions are truncating.
[h5 cpp_dec_float example:]
@@ -865,6 +896,15 @@
mpf_init_set_ui(m, 0); // set to a value;
mpf_float i(m); // copies the value of the native type.
+More information on what additional types a backend supports conversions from are given in the tutorial for each backend.
+
+* An `mp_number` can be converted to any built in type, via the `convert_to` member function:
+
+ mpz_int z(2);
+ int i = z.template convert_to<int>(); // sets i to 2
+
+Additional conversions may be supported by particular backends.
+
[endsect]
[section:random Generating Random Numbers]
@@ -1131,6 +1171,9 @@
* Any builtin arithmetic type.
* A `std::string` or any type which is convertible to `const char*`.
* Any type that the Backend is constructible or assignable from.
+* An rvalue reference to another `mp_number`. Move-semantics are used for construction if the backend also
+supports rvalue reference construction. In the case of assignment, move semantics are always supported
+when the argument is an rvalue reference irrespective of the backend.
In addition, if the type has multiple components (for example rational or complex number types), then there is a
two argument constructor:
@@ -1166,6 +1209,9 @@
For the left and right shift operations, the argument must be a builtin
integer type with a positive value (negative values result in a `std::runtime_error` being thrown).
+Note that all the types involved in the expression must evaluate to the same type - which is to say
+we cannot mix an `mp_number<B1>` with an `mp_number<B2>` where B1 and B2 are different types.
+
operator ``['convertible-to-bool-type]``()const;
Returns an ['unmentionable-type] that is usable in Boolean contexts (this allows `mp_number` to be used in any
@@ -1262,6 +1308,9 @@
* Type `mp_number<Backend, false>` when `ExpressionTemplates` is `false`.
* Type `bool` if the operator is a comparison operator.
+Note that all the types involved in the expression must evaluate to the same type - which is to say
+we cannot mix an `mp_number<B1>` with an `mp_number<B2>` where B1 and B2 are different types.
+
Finally note that the second argument to the left and right shift operations must be a builtin integer type,
and that the argument must be positive (negative arguments result in a `std::runtime_error` being thrown).
@@ -1329,7 +1378,8 @@
to be a compile time constant - this means for example that the [gmp] MPF Backend will not work with these functions when that type is
used at variable precision.
-Also note that with the exception of `abs` that these functions can only be used with floating-point Backend types.
+Also note that with the exception of `abs` that these functions can only be used with floating-point Backend types (if any other types
+such as fixed precision or complex types are added to the library later, then these functions may be extended to support those number types).
[h4 Traits Class Support]
@@ -1487,6 +1537,8 @@
no dymanic memory will ever be allocated.]]
]
+The type of `number_category<cpp_int<Args...> >::type` is `mpl::int_<number_kind_integer>`.
+
More information on this type can be found in the [link boost_multiprecision.tut.ints.cpp_int tutorial].
[endsect]
@@ -1505,6 +1557,8 @@
It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject
to change.
+The type of `number_category<cpp_int<Args...> >::type` is `mpl::int_<number_kind_integer>`.
+
More information on this type can be found in the [link boost_multiprecision.tut.ints.gmp_int tutorial].
[endsect]
@@ -1523,6 +1577,8 @@
It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject
to change.
+The type of `number_category<cpp_int<Args...> >::type` is `mpl::int_<number_kind_integer>`.
+
More information on this type can be found in the [link boost_multiprecision.tut.ints.tom_int tutorial].
[endsect]
@@ -1552,6 +1608,8 @@
it does not change the default precision of the mpf_t data type), therefore you can safely mix this type with existing
code that uses GMP, and also mix `gmp_float`s of differing precision.
+The type of `number_category<cpp_int<Args...> >::type` is `mpl::int_<number_kind_floating_point>`.
+
More information on this type can be found in the [link boost_multiprecision.tut.floats.gmp_float tutorial].
[endsect]
@@ -1581,6 +1639,8 @@
it does not change the default precision of the mpfr_t data type), therefore you can safely mix this type with existing
code that uses GMP or MPFR, and also mix `mpfr_float_backend`s of differing precision.
+The type of `number_category<cpp_int<Args...> >::type` is `mpl::int_<number_kind_floating_point>`.
+
More information on this type can be found in the [link boost_multiprecision.tut.floats.mpfr_float tutorial].
[endsect]
@@ -1605,6 +1665,8 @@
should support. Note that this type does not ever perform any dynamic memory allocation, as a result the `Digits10`
template argument should not be set too high or the classes size will grow unreasonably large.
+The type of `number_category<cpp_int<Args...> >::type` is `mpl::int_<number_kind_floating_point>`.
+
More information on this type can be found in the [link boost_multiprecision.tut.floats.cpp_dec_float tutorial].
[endsect]
@@ -1771,12 +1833,49 @@
[[`eval_lcm(b, cb, cb2)`][`void`][Sets `b` to the least common multiple of `cb` and `cb2`. Only required when `B` is an integer type.]]
]
+The tables above place no ['throws] requirements on any of the operations. It is up to each type modelling this concept to
+decide when or whether throwing an exception is desirable. However, thrown exceptions should always either be the type, or
+inherit from the type `std::runtime_error`. For example, a floating point type might choose to throw `std::overflow_error`
+whenever the result of an operation would be infinite, and `std::underflow_error` whenever it would round to zero.
+
[note
The non-member functions are all named with an "eval_" prefix to avoid conflicts with template classes of the same name -
in point of fact this naming convention shouldn't be necessary, but rather works around some compiler bugs.]
[endsect]
+[section:headers Header File Structure]
+
+[table Top level headers
+[[Header][Contains]]
+[[cpp_int.hpp][The `cpp_int` backend type.]]
+[[gmp.hpp][Defines all [gmp] related backends.]]
+[[integer_ops.hpp][Integer specific non-member functions.]]
+[[miller_rabin.hpp][Miller Rabin primality testing code.]]
+[[mp_number.hpp][Defines the `mp_number` backend, is included by all the backend headers.]]
+[[mpfr.hpp][Defines the mpfr_float_backend backend.]]
+[[random.hpp][Defines code to interoperate with Boost.Random.]]
+[[rational_adapter.hpp][Defines the `rational_adapter` backend.]]
+[[cpp_dec_float.hpp][Defines the `cpp_dec_float` backend.]]
+[[tommath.hpp][Defines the `tommath_int` backend.]]
+[[concepts/mp_number_architypes.hpp][Defines a backend concept architypes for testing use.]]
+]
+
+[table Implementation Headers]
+[[Header][Contains]]
+[[detail/big_lanczos.hpp][Lanczos support for Boost.Math integration.]]
+[[detail/cpp_int_core.hpp][Platform and peformance tuning for the `cpp_int` backend.]]
+[[detail/default_ops.hpp][Default versions of the optional backend non-member functions.]]
+[[detail/generic_interconvert.hpp][Generic interconversion routines.]]
+[[detail/mp_number_base.hpp][All the expression template code, metaprogramming, and operator overloads for `mp_number`.]]
+[[detail/no_et_ops.hpp][The non-expression template operators.]]
+[[defail/functions/constants.hpp][Defines constants used by the floating point functions.]]
+[[detail/functions/pow.hpp][Defines default versions of the power and exponential related floating point functions.]]
+[[detail/functions/trig.hpp][Defines default versions of the trigonometric related floating point functions.]]
+]
+
+[endsect]
+
[endsect]
[section:perf Performance Comparison]
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk