Boost logo

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">&lt;</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">&gt;</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&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;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&#160;1.8.&#160;Operator +</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator__"></a><p class="title"><b>Table&#160;1.10.&#160;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&#160;1.9.&#160;Operator +(int)</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator___int_"></a><p class="title"><b>Table&#160;1.11.&#160;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&#160;1.10.&#160;Operator -</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator0"></a><p class="title"><b>Table&#160;1.12.&#160;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&#160;1.11.&#160;Operator -(int)</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator_int0"></a><p class="title"><b>Table&#160;1.13.&#160;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&#160;1.12.&#160;Operator *</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator1"></a><p class="title"><b>Table&#160;1.14.&#160;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&#160;1.13.&#160;Operator *(int)</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator_int1"></a><p class="title"><b>Table&#160;1.15.&#160;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&#160;1.14.&#160;Operator /</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator2"></a><p class="title"><b>Table&#160;1.16.&#160;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&#160;1.15.&#160;Operator /(int)</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator_int2"></a><p class="title"><b>Table&#160;1.17.&#160;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&#160;1.16.&#160;Operator str</b></p>
+<a name="boost_multiprecision.perf.float_performance.operator_str"></a><p class="title"><b>Table&#160;1.18.&#160;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&#160;1.17.&#160;Operator +</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator__"></a><p class="title"><b>Table&#160;1.19.&#160;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&#160;1.18.&#160;Operator +(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator___int_"></a><p class="title"><b>Table&#160;1.20.&#160;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&#160;1.19.&#160;Operator -</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator0"></a><p class="title"><b>Table&#160;1.21.&#160;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&#160;1.20.&#160;Operator -(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int0"></a><p class="title"><b>Table&#160;1.22.&#160;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&#160;1.21.&#160;Operator *</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator1"></a><p class="title"><b>Table&#160;1.23.&#160;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&#160;1.22.&#160;Operator *(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int1"></a><p class="title"><b>Table&#160;1.24.&#160;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&#160;1.23.&#160;Operator /</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator2"></a><p class="title"><b>Table&#160;1.25.&#160;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&#160;1.24.&#160;Operator /(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int2"></a><p class="title"><b>Table&#160;1.26.&#160;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&#160;1.25.&#160;Operator %</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator3"></a><p class="title"><b>Table&#160;1.27.&#160;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&#160;1.26.&#160;Operator %(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int3"></a><p class="title"><b>Table&#160;1.28.&#160;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&#160;1.27.&#160;Operator &lt;&lt;</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator___"></a><p class="title"><b>Table&#160;1.29.&#160;Operator &lt;&lt;</b></p>
 <div class="table-contents"><table class="table" summary="Operator &lt;&lt;">
 <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&#160;1.28.&#160;Operator &gt;&gt;</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator4"></a><p class="title"><b>Table&#160;1.30.&#160;Operator &gt;&gt;</b></p>
 <div class="table-contents"><table class="table" summary="Operator &gt;&gt;">
 <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&#160;1.29.&#160;Operator &amp;</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator5"></a><p class="title"><b>Table&#160;1.31.&#160;Operator &amp;</b></p>
 <div class="table-contents"><table class="table" summary="Operator &amp;">
 <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&#160;1.30.&#160;Operator &amp;(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int4"></a><p class="title"><b>Table&#160;1.32.&#160;Operator &amp;(int)</b></p>
 <div class="table-contents"><table class="table" summary="Operator &amp;(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&#160;1.31.&#160;Operator ^</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator6"></a><p class="title"><b>Table&#160;1.33.&#160;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&#160;1.32.&#160;Operator ^(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int5"></a><p class="title"><b>Table&#160;1.34.&#160;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&#160;1.33.&#160;Operator |</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator7"></a><p class="title"><b>Table&#160;1.35.&#160;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&#160;1.34.&#160;Operator |(int)</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_int6"></a><p class="title"><b>Table&#160;1.36.&#160;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&#160;1.35.&#160;Operator gcd</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_gcd"></a><p class="title"><b>Table&#160;1.37.&#160;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&#160;1.36.&#160;Operator str</b></p>
+<a name="boost_multiprecision.perf.integer_performance.operator_str"></a><p class="title"><b>Table&#160;1.38.&#160;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&#160;1.37.&#160;Operator +</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator__"></a><p class="title"><b>Table&#160;1.39.&#160;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&#160;1.38.&#160;Operator +(int)</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator___int_"></a><p class="title"><b>Table&#160;1.40.&#160;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&#160;1.39.&#160;Operator -</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator0"></a><p class="title"><b>Table&#160;1.41.&#160;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&#160;1.40.&#160;Operator -(int)</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator_int0"></a><p class="title"><b>Table&#160;1.42.&#160;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&#160;1.41.&#160;Operator *</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator1"></a><p class="title"><b>Table&#160;1.43.&#160;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&#160;1.42.&#160;Operator *(int)</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator_int1"></a><p class="title"><b>Table&#160;1.44.&#160;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&#160;1.43.&#160;Operator /</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator2"></a><p class="title"><b>Table&#160;1.45.&#160;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&#160;1.44.&#160;Operator /(int)</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator_int2"></a><p class="title"><b>Table&#160;1.46.&#160;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&#160;1.45.&#160;Operator str</b></p>
+<a name="boost_multiprecision.perf.rational_performance.operator_str"></a><p class="title"><b>Table&#160;1.47.&#160;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&#160;1.6.&#160;Bessel Function Performance</b></p>
+<a name="boost_multiprecision.perf.realworld.bessel_function_performance"></a><p class="title"><b>Table&#160;1.8.&#160;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&#160;1.7.&#160;Non-Central T Distribution Performance</b></p>
+<a name="boost_multiprecision.perf.realworld.non_central_t_distribution_performance"></a><p class="title"><b>Table&#160;1.9.&#160;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&#160;1.&#160;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">&lt;</span><span class="identifier">cpp_int</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">...&gt;</span> <span class="special">&gt;::</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">&lt;</span><span class="identifier">number_kind_floating_point</span><span class="special">&gt;</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">&lt;</span><span class="identifier">cpp_int</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">...&gt;</span> <span class="special">&gt;::</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">&lt;</span><span class="identifier">number_kind_integer</span><span class="special">&gt;</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">&lt;</span><span class="identifier">cpp_int</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">...&gt;</span> <span class="special">&gt;::</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">&lt;</span><span class="identifier">number_kind_integer</span><span class="special">&gt;</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&#160;1.&#160;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&#160;1.6.&#160;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&#160;1.7.&#160;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 &#169; 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">&amp;);</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">&amp;);</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">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&amp;);</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">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&amp;);</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">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&amp;);</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">&lt;</span><span class="identifier">B1</span><span class="special">&gt;</span></code> with an <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">B2</span><span class="special">&gt;</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">&amp;);</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">&amp;);</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">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&amp;);</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">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&amp;);</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">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>see-below</em></span><span class="special">&amp;);</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">&lt;</span><span class="identifier">B1</span><span class="special">&gt;</span></code> with an <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">B2</span><span class="special">&gt;</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">&lt;</span><span class="identifier">cpp_int</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">...&gt;</span> <span class="special">&gt;::</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">&lt;</span><span class="identifier">number_kind_floating_point</span><span class="special">&gt;</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">&lt;</span><span class="identifier">cpp_int</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">...&gt;</span> <span class="special">&gt;::</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">&lt;</span><span class="identifier">number_kind_floating_point</span><span class="special">&gt;</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">&lt;</span><span class="identifier">cpp_int</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">...&gt;</span> <span class="special">&gt;::</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">&lt;</span><span class="identifier">number_kind_integer</span><span class="special">&gt;</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">&lt;</span><span class="keyword">int</span><span class="special">&gt;();</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">&lt;</span><span class="identifier">cpp_dec_float</span><span class="special">&lt;</span><span class="number">50</span><span class="special">&gt;</span> <span class="special">&gt;</span></code> to <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">cpp_dec_float</span><span class="special">&lt;</span><span class="identifier">SomeOtherValue</span><span class="special">&gt;</span> <span class="special">&gt;</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