Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r75487 - in sandbox/big_number/libs/multiprecision: doc doc/html doc/html/boost_multiprecision doc/html/boost_multiprecision/ref doc/html/boost_multiprecision/tut example
From: john_at_[hidden]
Date: 2011-11-14 07:41:17


Author: johnmaddock
Date: 2011-11-14 07:41:15 EST (Mon, 14 Nov 2011)
New Revision: 75487
URL: http://svn.boost.org/trac/boost/changeset/75487

Log:
Update docs, rename remaining occurrences of mp_float.
Added:
   sandbox/big_number/libs/multiprecision/doc/html/
   sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/
   sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/intro.html (contents, props changed)
   sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/
   sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref.html (contents, props changed)
   sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html (contents, props changed)
   sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mp_number.html (contents, props changed)
   sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/
   sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut.html (contents, props changed)
   sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html (contents, props changed)
   sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html (contents, props changed)
   sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/reals.html (contents, props changed)
   sandbox/big_number/libs/multiprecision/doc/html/index.html (contents, props changed)
   sandbox/big_number/libs/multiprecision/example/cpp_float_snips.cpp
      - copied unchanged from r75453, /sandbox/big_number/libs/multiprecision/example/mp_float_snips.cpp
Removed:
   sandbox/big_number/libs/multiprecision/example/mp_float_snips.cpp
Text files modified:
   sandbox/big_number/libs/multiprecision/doc/multiprecision.qbk | 24 ++++++++++++------------
   1 files changed, 12 insertions(+), 12 deletions(-)

Added: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/intro.html
==============================================================================
--- (empty file)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/intro.html 2011-11-14 07:41:15 EST (Mon, 14 Nov 2011)
@@ -0,0 +1,476 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Introduction</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="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
+<link rel="prev" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
+<link rel="next" href="tut.html" title="Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.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="tut.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_multiprecision.intro"></a><a class="link" href="intro.html" title="Introduction">Introduction</a>
+</h2></div></div></div>
+<p>
+ The Multiprecision library comes in two distinct parts: an expression-template-enabled
+ front end <code class="computeroutput"><span class="identifier">mp_number</span></code> that handles
+ all the operator overloading, expression evaluation optimization, and code
+ reduction, and a selection of backends that implement the actual arithmetic
+ operations, and need conform only to the reduced interface requirements of
+ the front end.
+ </p>
+<p>
+ The library is often used by using one of the predfined typedefs: for example
+ if you wanted an arbitrary precision integer type using GMP as the underlying
+ implementation then you could use:
+ </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">gmp</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span> <span class="comment">// Defines the wrappers around the GMP library's types</span>
+
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">mpz_int</span> <span class="identifier">myint</span><span class="special">;</span> <span class="comment">// Arbitrary precision integer type.</span>
+</pre>
+<p>
+ Alternatively one can compose your own multiprecision type, by combining <code class="computeroutput"><span class="identifier">mp_number</span></code> with one of the predefined backend
+ types. For example, suppose you wanted a 300 decimal digit floating point type
+ based on the MPFR library, in this case there's no predefined typedef with
+ that level of precision, so instead we compose our own:
+ </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">mpfr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span> <span class="comment">// Defines the Backend type that wraps MPFR</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="keyword">typedef</span> <span class="identifier">mp</span><span class="special">::</span><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">mp</span><span class="special">::</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="number">300</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">my_float</span><span class="special">;</span>
+
+<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>
+<a name="boost_multiprecision.intro.expression_templates"></a><h5>
+<a name="boost_multiprecision.intro.expression_templates-heading"></a>
+ <a class="link" href="intro.html#boost_multiprecision.intro.expression_templates">Expression
+ Templates</a>
+ </h5>
+<p>
+ Class <code class="computeroutput"><span class="identifier">mp_number</span></code> is expression-template-enabled:
+ that means that rather than having a multiplication operator that looks like
+ this:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;</span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;</span> <span class="identifier">result</span><span class="special">(</span><span class="identifier">a</span><span class="special">);</span>
+ <span class="identifier">result</span> <span class="special">*=</span> <span class="identifier">b</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">result</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Instead the operator looks more like this:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="emphasis"><em>unmentionable-type</em></span> <span class="keyword">operator</span> <span class="special">*</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+</pre>
+<p>
+ Where the "unmentionable" return type is an implementation detail
+ that, rather than containing the result of the multiplication, contains instructions
+ on how to compute the result. In effect it's just a pair of references to the
+ arguments of the function, plus some compile-time information that stores what
+ the operation is.
+ </p>
+<p>
+ The great advantage of this method is the <span class="emphasis"><em>elimination of temporaries</em></span>:
+ for example the "naive" implementation of <code class="computeroutput"><span class="keyword">operator</span><span class="special">*</span></code> above, requires one temporary for computing
+ the result, and at least another one to return it. It's true that sometimes
+ this overhead can be reduced by using move-semantics, but it can't be eliminated
+ completely. For example, lets suppose we're evaluating a polynomial via Horners
+ method, something like this:
+ </p>
+<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">a</span><span class="special">[</span><span class="number">7</span><span class="special">]</span> <span class="special">=</span> <span class="special">{</span> <span class="comment">/* some values */</span> <span class="special">};</span>
+<span class="comment">//....</span>
+<span class="identifier">y</span> <span class="special">=</span> <span class="special">(((((</span><span class="identifier">a</span><span class="special">[</span><span class="number">6</span><span class="special">]</span> <span class="special">*</span> <span class="identifier">x</span> <span class="special">+</span> <span class="identifier">a</span><span class="special">[</span><span class="number">5</span><span class="special">])</span> <span class="special">*</span> <span class="identifier">x</span> <span class="special">+</span> <span class="identifier">a</span><span class="special">[</span><span class="number">4</span><span class="special">])</span> <span class="special">*</span> <span class="identifier">x</span> <span class="special">+</span> <span class="identifier">a</span><span class="special">[</span><span class="number">3</span><span class="special">])</span> <span class="special">*</span> <span class="identifier">x</span> <span class="special">+</span> <span class="identifier">a</span><span class
="special">[</span><span class="number">2</span><span class="special">])</span> <span class="special">*</span> <span class="identifier">x</span> <span class="special">+</span> <span class="identifier">a</span><span class="special">[</span><span class="number">1</span><span class="special">])</span> <span class="special">*</span> <span class="identifier">x</span> <span class="special">+</span> <span class="identifier">a</span><span class="special">[</span><span class="number">0</span><span class="special">];</span>
+</pre>
+<p>
+ If type <code class="computeroutput"><span class="identifier">T</span></code> is an <code class="computeroutput"><span class="identifier">mp_number</span></code>, then this expression is evaluated
+ <span class="emphasis"><em>without creating a single temporary value</em></span>, in contrast
+ if we were using the C++ wrapper that ships with GMP - <code class="computeroutput"><span class="identifier">mpf_class</span></code>
+ - then this expression would result in no less than 11 temporaries (this is
+ true even though mpf_class does use expression templates to reduce the number
+ of temporaries somewhat). Had we used an even simpler wrapper around GMP or
+ MPFR like <code class="computeroutput"><span class="identifier">mpclass</span></code> things would
+ have been even worse and no less that 24 temporaries are created for this simple
+ expression (note - we actually measure the number of memory allocations performed
+ rather than the number of temporaries directly).
+ </p>
+<p>
+ This library also extends expression template support to standard library functions
+ like <code class="computeroutput"><span class="identifier">abs</span></code> or <code class="computeroutput"><span class="identifier">sin</span></code>
+ with <code class="computeroutput"><span class="identifier">mp_number</span></code> arguments. This
+ means that an expression such as:
+ </p>
+<pre class="programlisting"><span class="identifier">y</span> <span class="special">=</span> <span class="identifier">abs</span><span class="special">(</span><span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ can be evaluated without a single temporary being calculated. Even expressions
+ like:
+ </p>
+<pre class="programlisting"><span class="identifier">y</span> <span class="special">=</span> <span class="identifier">sin</span><span class="special">(</span><span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ get this treatment, so that variable 'y' is used as "working storage"
+ within the implementation of <code class="computeroutput"><span class="identifier">sin</span></code>,
+ thus reducing the number of temporaries used by one. Of course, should you
+ write:
+ </p>
+<pre class="programlisting"><span class="identifier">x</span> <span class="special">=</span> <span class="identifier">sin</span><span class="special">(</span><span class="identifier">x</span><span class="special">);</span>
+</pre>
+<p>
+ Then we clearly can't use <code class="computeroutput"><span class="identifier">x</span></code>
+ as working storage during the calculation, so then a temporary variable is
+ created in this case.
+ </p>
+<p>
+ Given the comments above, you might be forgiven for thinking that expression-templates
+ are some kind of universal-panacea: sadly though, all tricks like this have
+ their downsides. For one thing, expression template libraries like this one,
+ tend to be slower to compile than their simpler cousins, they're also harder
+ to debug (should you actually want to step through our code!), and rely on
+ compiler optimizations being turned on to give really good performance. Also
+ since the return type from expressions involving <code class="computeroutput"><span class="identifier">mp_number</span></code>'s
+ is an "unmentionable implementation detail", you have to be careful
+ to cast the result of an expression to the actual number type when passing
+ an expression to a template function. For example given:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">my_proc</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;);</span>
+</pre>
+<p>
+ Then calling:
+ </p>
+<pre class="programlisting"><span class="identifier">my_proc</span><span class="special">(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">);</span>
+</pre>
+<p>
+ Will very likely result in obscure error messages inside the body of <code class="computeroutput"><span class="identifier">my_proc</span></code> - since we've passed it an expression
+ template type, and not a number type. Instead we probably need:
+ </p>
+<pre class="programlisting"><span class="identifier">my_proc</span><span class="special">(</span><span class="identifier">my_mp_number_type</span><span class="special">(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">));</span>
+</pre>
+<p>
+ Having said that, these situations don't occur that often - or indeed not at
+ all for non-template functions. In addition all the functions in the Boost.Math
+ library will automatically convert expression-template arguments to the underlying
+ number type without you having to do anything, so:
+ </p>
+<pre class="programlisting"><span class="identifier">mpfr_float_100</span> <span class="identifier">a</span><span class="special">(</span><span class="number">20</span><span class="special">),</span> <span class="identifier">delta</span><span class="special">(</span><span class="number">0.125</span><span class="special">);</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">gamma_p</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">a</span> <span class="special">+</span> <span class="identifier">delta</span><span class="special">);</span>
+</pre>
+<p>
+ Will work just fine, with the <code class="computeroutput"><span class="identifier">a</span> <span class="special">+</span> <span class="identifier">delta</span></code> expression
+ template argument getting converted to an <code class="computeroutput"><span class="identifier">mpfr_float_100</span></code>
+ internally by the Boost.Math library.
+ </p>
+<p>
+ One other potential pitfall that's only possible in C++11: you should never
+ store an expression template using:
+ </p>
+<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">my_expression</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="identifier">c</span><span class="special">;</span>
+</pre>
+<p>
+ Unless you're absolutely sure that the lifetimes of <code class="computeroutput"><span class="identifier">a</span></code>,
+ <code class="computeroutput"><span class="identifier">b</span></code> and <code class="computeroutput"><span class="identifier">c</span></code>
+ will outlive that of <code class="computeroutput"><span class="identifier">my_expression</span></code>.
+ </p>
+<p>
+ And finally.... the performance improvements from an expression template library
+ like this are often not as dramatic as the reduction in number of temporaries
+ would suggest. For example if we compare this library with <code class="computeroutput"><span class="identifier">mpfr_class</span></code>
+ and <code class="computeroutput"><span class="identifier">mpreal</span></code>, with all three
+ using the underlying MPFR library at 50 decimal digits precision then we see
+ the following typical results for polynomial execution:
+ </p>
+<div class="table">
+<a name="boost_multiprecision.intro.evaluation_of_order_6_polynomial_"></a><p class="title"><b>Table&#160;1.1.&#160;Evaluation of Order 6 Polynomial.</b></p>
+<div class="table-contents"><table class="table" summary="Evaluation of Order 6 Polynomial.">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Library
+ </p>
+ </th>
+<th>
+ <p>
+ Relative Time
+ </p>
+ </th>
+<th>
+ <p>
+ Relative number of memory allocations
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ mp_number
+ </p>
+ </td>
+<td>
+ <p>
+ 1.0 (0.00793s)
+ </p>
+ </td>
+<td>
+ <p>
+ 1.0 (2996 total)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mpfr_class
+ </p>
+ </td>
+<td>
+ <p>
+ 1.2 (0.00931s)
+ </p>
+ </td>
+<td>
+ <p>
+ 4.3 (12976 total)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mpreal
+ </p>
+ </td>
+<td>
+ <p>
+ 1.9 (0.0148s)
+ </p>
+ </td>
+<td>
+ <p>
+ 9.3 (27947 total)
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ As you can see the execution time increases a lot more slowly than the number
+ of memory allocations. There are a number of reasons for this:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ The cost of extended-precision multiplication and division is so great,
+ that the times taken for these tend to swamp everything else.
+ </li>
+<li class="listitem">
+ The cost of an in-place multiplication (using <code class="computeroutput"><span class="keyword">operator</span><span class="special">*=</span></code>) tends to be more than an out-of-place
+ <code class="computeroutput"><span class="keyword">operator</span><span class="special">*</span></code>
+ (typically <code class="computeroutput"><span class="keyword">operator</span> <span class="special">*=</span></code>
+ has to create a temporary workspace to carry out the multiplication, where
+ as <code class="computeroutput"><span class="keyword">operator</span><span class="special">*</span></code>
+ can use the target variable as workspace). Since the expression templates
+ carry out their magic by converting out-of-place operators to in-place
+ ones, we necessarily take this hit. Even so the transformation is more
+ efficient than creating the extra temporary variable, just not by as much
+ as one would hope.
+ </li>
+</ul></div>
+<p>
+ We'll conclude this section by providing some more performance comparisons
+ between these three libraries, again, all are using MPFR to carry out the underlying
+ arithmetic, and all are operating at the same precision (50 decimal places):
+ </p>
+<div class="table">
+<a name="boost_multiprecision.intro.evaluation_of_boost_math_s_bessel_function_test_data"></a><p class="title"><b>Table&#160;1.2.&#160;Evaluation of Boost.Math's Bessel function test data</b></p>
+<div class="table-contents"><table class="table" summary="Evaluation of Boost.Math's Bessel function test data">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Library
+ </p>
+ </th>
+<th>
+ <p>
+ Relative Time
+ </p>
+ </th>
+<th>
+ <p>
+ Relative Number of Memory Allocations
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ mp_number
+ </p>
+ </td>
+<td>
+ <p>
+ 1.0 (6.21s)
+ </p>
+ </td>
+<td>
+ <p>
+ 1.0 (2685469)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mpfr_class
+ </p>
+ </td>
+<td>
+ <p>
+ 1.04 (6.45s)
+ </p>
+ </td>
+<td>
+ <p>
+ 1.47 (3946007)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mpreal
+ </p>
+ </td>
+<td>
+ <p>
+ 1.53 (9.52s)
+ </p>
+ </td>
+<td>
+ <p>
+ 4.92 (13222940)
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="boost_multiprecision.intro.evaluation_of_boost_math_s_non_central_t_distribution_test_data"></a><p class="title"><b>Table&#160;1.3.&#160;Evaluation of Boost.Math's Non-Central T distribution test data</b></p>
+<div class="table-contents"><table class="table" summary="Evaluation of Boost.Math's Non-Central T distribution test data">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Library
+ </p>
+ </th>
+<th>
+ <p>
+ Relative Time
+ </p>
+ </th>
+<th>
+ <p>
+ Relative Number of Memory Allocations
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ mp_number
+ </p>
+ </td>
+<td>
+ <p>
+ 1.0 (269s)
+ </p>
+ </td>
+<td>
+ <p>
+ 1.0 (139082551)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mpfr_class
+ </p>
+ </td>
+<td>
+ <p>
+ 1.04 (278s)
+ </p>
+ </td>
+<td>
+ <p>
+ 1.81 (252400791)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ mpreal
+ </p>
+ </td>
+<td>
+ <p>
+ 1.49 (401s)
+ </p>
+ </td>
+<td>
+ <p>
+ 3.22 (447009280)
+ </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; 2011 John Maddock<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="../index.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="tut.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref.html
==============================================================================
--- (empty file)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref.html 2011-11-14 07:41:15 EST (Mon, 14 Nov 2011)
@@ -0,0 +1,40 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Reference</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="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
+<link rel="prev" href="tut/rational.html" title="Rational Number Types">
+<link rel="next" href="ref/mp_number.html" title="mp_number">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tut/rational.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="ref/mp_number.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_multiprecision.ref"></a><a class="link" href="ref.html" title="Reference">Reference</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">mp_number</span></dt>
+<dt><span class="section">Backend Requirements</span></dt>
+</dl></div>
+</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; 2011 John Maddock<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="tut/rational.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="ref/mp_number.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html
==============================================================================
--- (empty file)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html 2011-11-14 07:41:15 EST (Mon, 14 Nov 2011)
@@ -0,0 +1,2024 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Backend Requirements</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="mp_number.html" title="mp_number">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mp_number.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>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_multiprecision.ref.backendconc"></a><a class="link" href="backendconc.html" title="Backend Requirements">Backend Requirements</a>
+</h3></div></div></div>
+<p>
+ The requirements on the <code class="computeroutput"><span class="identifier">Backend</span></code>
+ template argument to <code class="computeroutput"><span class="identifier">mp_number</span></code>
+ are split up into compulsary requirements, and optional requirements that
+ are either to improve performance or provide optional features.
+ </p>
+<p>
+ In the following tables, type B is the <code class="computeroutput"><span class="identifier">Backend</span></code>
+ template arument to <code class="computeroutput"><span class="identifier">mp_number</span></code>,
+ <code class="computeroutput"><span class="identifier">b</span></code> is a variable of B, <code class="computeroutput"><span class="identifier">cb</span></code> and <code class="computeroutput"><span class="identifier">cb2</span></code>
+ are constant variables of type B, <code class="computeroutput"><span class="identifier">a</span></code>
+ is a variable of Arithmetic type, <code class="computeroutput"><span class="identifier">s</span></code>
+ is a variable of type <code class="computeroutput"><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span></code>, <code class="computeroutput"><span class="identifier">ui</span></code> is a variable of type <code class="computeroutput"><span class="keyword">unsigned</span></code>, <code class="computeroutput"><span class="identifier">bb</span></code>
+ is a variable of type <code class="computeroutput"><span class="keyword">bool</span></code>,
+ <code class="computeroutput"><span class="identifier">pa</span></code> is a variable of type
+ pointer-to-arithmetc-type, <code class="computeroutput"><span class="identifier">exp</span></code>
+ is a variable of type <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">exp_type</span></code>, <code class="computeroutput"><span class="identifier">pexp</span></code>
+ is a variable of type <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">exp_type</span><span class="special">*</span></code>.
+ </p>
+<div class="table">
+<a name="boost_multiprecision.ref.backendconc.compulsary_requirements_on_the_backend_type_"></a><p class="title"><b>Table&#160;1.4.&#160;Compulsary Requirements on the Backend type.</b></p>
+<div class="table-contents"><table class="table" summary="Compulsary Requirements on the Backend type.">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Comments
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="identifier">type</span><span class="special">-</span><span class="identifier">list</span><span class="special">&gt;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A list of signed integral types that can be assigned to type B.
+ The types shall be listed in order of size, smallest first, and
+ shall terminate in the type that is <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">intmax_t</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="identifier">type</span><span class="special">-</span><span class="identifier">list</span><span class="special">&gt;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A list of unsigned integral types that can be assigned to type
+ B. The types shall be listed in order of size, smallest first,
+ and shall terminate in the type that is <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">uintmax_t</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="identifier">type</span><span class="special">-</span><span class="identifier">list</span><span class="special">&gt;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A list of floating point types that can be assigned to type B.The
+ types shall be listed in order of size, smallest first, and shall
+ terminate in type <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">exponent_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A signed integral type.
+ </p>
+ </td>
+<td>
+ <p>
+ The type of the exponent of type B.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Default constructor.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Copy Constructor.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">b</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignment operator.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">a</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignment from an Arithmetic type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span> <span class="special">=</span>
+ <span class="identifier">s</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignment from a string.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span><span class="special">.</span><span class="identifier">swap</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Swaps the contents of it's arguments.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cb</span><span class="special">.</span><span class="identifier">str</span><span class="special">(</span><span class="identifier">ui</span><span class="special">,</span>
+ <span class="identifier">bb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the string representation of <code class="computeroutput"><span class="identifier">b</span></code>
+ with <code class="computeroutput"><span class="identifier">ui</span></code> digits
+ and in scientific format if <code class="computeroutput"><span class="identifier">bb</span></code>
+ is <code class="computeroutput"><span class="keyword">true</span></code>. If <code class="computeroutput"><span class="identifier">ui</span></code> is zero, then returns as many
+ digits as are required to reconstruct the original value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span><span class="special">.</span><span class="identifier">negate</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Negates <code class="computeroutput"><span class="identifier">b</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cb</span><span class="special">.</span><span class="identifier">compare</span><span class="special">(</span><span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compares <code class="computeroutput"><span class="identifier">cb</span></code> and
+ <code class="computeroutput"><span class="identifier">cb2</span></code>, returns a
+ value less than zero if <code class="computeroutput"><span class="identifier">cb</span>
+ <span class="special">&lt;</span> <span class="identifier">cb2</span></code>,
+ a value greater than zero if <code class="computeroutput"><span class="identifier">cb</span>
+ <span class="special">&gt;</span> <span class="identifier">cb2</span></code>
+ and zero if <code class="computeroutput"><span class="identifier">cb</span> <span class="special">==</span> <span class="identifier">cb2</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cb</span><span class="special">.</span><span class="identifier">compare</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compares <code class="computeroutput"><span class="identifier">cb</span></code> and
+ <code class="computeroutput"><span class="identifier">a</span></code>, returns a value
+ less than zero if <code class="computeroutput"><span class="identifier">cb</span>
+ <span class="special">&lt;</span> <span class="identifier">a</span></code>,
+ a value greater than zero if <code class="computeroutput"><span class="identifier">cb</span>
+ <span class="special">&gt;</span> <span class="identifier">a</span></code>
+ and zero if <code class="computeroutput"><span class="identifier">cb</span> <span class="special">==</span> <span class="identifier">a</span></code>.
+ The type of <code class="computeroutput"><span class="identifier">a</span></code> shall
+ be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Adds <code class="computeroutput"><span class="identifier">cb</span></code> to <code class="computeroutput"><span class="identifier">b</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subtracts <code class="computeroutput"><span class="identifier">cb</span></code> from
+ <code class="computeroutput"><span class="identifier">b</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Multiplies <code class="computeroutput"><span class="identifier">b</span></code> by
+ <code class="computeroutput"><span class="identifier">cb</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Divides <code class="computeroutput"><span class="identifier">b</span></code> by <code class="computeroutput"><span class="identifier">cb</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">%=</span>
+ <span class="identifier">cb</span></code>, only required when
+ <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">&amp;=</span>
+ <span class="identifier">cb</span></code>, only required when
+ <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">|=</span>
+ <span class="identifier">cb</span></code>, only required when
+ <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">^=</span>
+ <span class="identifier">cb</span></code>, only required when
+ <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">complement</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes the ones-complement of <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>,
+ only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an integer type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">left_shift</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">ui</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">&lt;&lt;=</span>
+ <span class="identifier">ui</span></code>, only required when
+ <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">right_shift</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">ui</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">&gt;&gt;=</span>
+ <span class="identifier">ui</span></code>, only required when
+ <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">convert_to</span><span class="special">(</span><span class="identifier">pa</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Converts <code class="computeroutput"><span class="identifier">cb</span></code> to
+ the type of <code class="computeroutput"><span class="special">*</span><span class="identifier">pa</span></code>
+ and store the result in <code class="computeroutput"><span class="special">*</span><span class="identifier">pa</span></code>. Type <code class="computeroutput"><span class="identifier">B</span></code>
+ shall support conversion to at least types <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">intmax_t</span></code>,
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">uintmax_t</span></code> and <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">long</span></code>. Conversion to other
+ arithmetic types can then be synthesised using other operations.
+ Conversions to other types are entirely optional.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_frexp</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">pexp</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Stores values in <code class="computeroutput"><span class="identifier">b</span></code>
+ and <code class="computeroutput"><span class="special">*</span><span class="identifier">pexp</span></code>
+ such that the value of <code class="computeroutput"><span class="identifier">cb</span></code>
+ is b * 2<sup>*pexp</sup>, only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is a floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_ldexp</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">exp</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Stores a value in <code class="computeroutput"><span class="identifier">b</span></code>
+ that is cb * 2<sup>exp</sup>, only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is a floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_floor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Stores the floor of <code class="computeroutput"><span class="identifier">cb</span></code>
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is a floating
+ point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_ceil</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Stores the ceiling of <code class="computeroutput"><span class="identifier">cb</span></code>
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is a floating
+ point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_sqrt</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Stores the square root of <code class="computeroutput"><span class="identifier">cb</span></code>
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is a floating
+ point type.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="boost_multiprecision.ref.backendconc.optional_requirements_on_the_backend_type"></a><p class="title"><b>Table&#160;1.5.&#160;Optional Requirements on the Backend Type</b></p>
+<div class="table-contents"><table class="table" summary="Optional Requirements on the Backend Type">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Returns
+ </p>
+ </th>
+<th>
+ <p>
+ Comments
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Adds <code class="computeroutput"><span class="identifier">a</span></code> to <code class="computeroutput"><span class="identifier">b</span></code>. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall be listed in one of the
+ type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>, <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
+ or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subtracts <code class="computeroutput"><span class="identifier">a</span></code> from
+ <code class="computeroutput"><span class="identifier">b</span></code>. The type of
+ <code class="computeroutput"><span class="identifier">a</span></code> shall be listed
+ in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Multiplies <code class="computeroutput"><span class="identifier">b</span></code> by
+ <code class="computeroutput"><span class="identifier">a</span></code>. The type of
+ <code class="computeroutput"><span class="identifier">a</span></code> shall be listed
+ in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Divides <code class="computeroutput"><span class="identifier">b</span></code> by <code class="computeroutput"><span class="identifier">a</span></code>. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall be listed in one of the
+ type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>, <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
+ or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">%=</span>
+ <span class="identifier">cb</span></code>, only required when
+ <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">&amp;=</span>
+ <span class="identifier">cb</span></code>, only required when
+ <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">|=</span>
+ <span class="identifier">cb</span></code>, only required when
+ <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">b</span> <span class="special">^=</span>
+ <span class="identifier">cb</span></code>, only required when
+ <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Add <code class="computeroutput"><span class="identifier">cb</span></code> to <code class="computeroutput"><span class="identifier">cb2</span></code> and stores the result in
+ <code class="computeroutput"><span class="identifier">b</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subtracts <code class="computeroutput"><span class="identifier">cb2</span></code> from
+ <code class="computeroutput"><span class="identifier">cb</span></code> and stores the
+ result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Multiplies <code class="computeroutput"><span class="identifier">cb</span></code> by
+ <code class="computeroutput"><span class="identifier">cb2</span></code> and stores
+ the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Divides <code class="computeroutput"><span class="identifier">cb</span></code> by
+ <code class="computeroutput"><span class="identifier">cb2</span></code> and stores
+ the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Add <code class="computeroutput"><span class="identifier">cb</span></code> to <code class="computeroutput"><span class="identifier">a</span></code> and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>. The type of <code class="computeroutput"><span class="identifier">a</span></code> shall be listed in one of the
+ type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>, <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code>
+ or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subtracts <code class="computeroutput"><span class="identifier">a</span></code> from
+ <code class="computeroutput"><span class="identifier">cb</span></code> and stores the
+ result in <code class="computeroutput"><span class="identifier">b</span></code>. The
+ type of <code class="computeroutput"><span class="identifier">a</span></code> shall
+ be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Multiplies <code class="computeroutput"><span class="identifier">cb</span></code> by
+ <code class="computeroutput"><span class="identifier">a</span></code> and stores the
+ result in <code class="computeroutput"><span class="identifier">b</span></code>. The
+ type of <code class="computeroutput"><span class="identifier">a</span></code> shall
+ be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Divides <code class="computeroutput"><span class="identifier">cb</span></code> by
+ <code class="computeroutput"><span class="identifier">a</span></code> and stores the
+ result in <code class="computeroutput"><span class="identifier">b</span></code>. The
+ type of <code class="computeroutput"><span class="identifier">a</span></code> shall
+ be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">%</span>
+ <span class="identifier">cb2</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&amp;</span>
+ <span class="identifier">cb2</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">|</span>
+ <span class="identifier">cb2</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">^</span>
+ <span class="identifier">cb2</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Add <code class="computeroutput"><span class="identifier">a</span></code> to <code class="computeroutput"><span class="identifier">cb</span></code> and stores the result in
+ <code class="computeroutput"><span class="identifier">b</span></code>. The type of
+ <code class="computeroutput"><span class="identifier">a</span></code> shall be listed
+ in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">subtract</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subtracts <code class="computeroutput"><span class="identifier">cb</span></code> from
+ <code class="computeroutput"><span class="identifier">a</span></code> and stores the
+ result in <code class="computeroutput"><span class="identifier">b</span></code>. The
+ type of <code class="computeroutput"><span class="identifier">a</span></code> shall
+ be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">multiply</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Multiplies <code class="computeroutput"><span class="identifier">a</span></code> by
+ <code class="computeroutput"><span class="identifier">cb</span></code> and stores the
+ result in <code class="computeroutput"><span class="identifier">b</span></code>. The
+ type of <code class="computeroutput"><span class="identifier">a</span></code> shall
+ be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">divide</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Divides <code class="computeroutput"><span class="identifier">a</span></code> by <code class="computeroutput"><span class="identifier">cb</span></code> and stores the result in
+ <code class="computeroutput"><span class="identifier">b</span></code>. The type of
+ <code class="computeroutput"><span class="identifier">a</span></code> shall be listed
+ in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">%</span>
+ <span class="identifier">a</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&amp;</span>
+ <span class="identifier">a</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">|</span>
+ <span class="identifier">a</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">^</span>
+ <span class="identifier">a</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">modulus</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">%</span>
+ <span class="identifier">a</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_and</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&amp;</span>
+ <span class="identifier">a</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_or</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">|</span>
+ <span class="identifier">a</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">bitwise_xor</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">a</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">a</span> <span class="special">^</span>
+ <span class="identifier">cb</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type. The type of <code class="computeroutput"><span class="identifier">a</span></code>
+ shall be listed in one of the type lists <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">signed_types</span></code>,
+ <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">unsigned_types</span></code> or <code class="computeroutput"><span class="identifier">B</span><span class="special">::</span><span class="identifier">real_types</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">left_shift</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">ui</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&lt;&lt;</span>
+ <span class="identifier">ui</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">right_shift</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">ui</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Computes <code class="computeroutput"><span class="identifier">cb</span> <span class="special">&gt;&gt;</span>
+ <span class="identifier">ui</span></code> and stores the result
+ in <code class="computeroutput"><span class="identifier">b</span></code>, only required
+ when <code class="computeroutput"><span class="identifier">B</span></code> is an integer
+ type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">increment</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ Increments the value of <code class="computeroutput"><span class="identifier">b</span></code>
+ by one.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">decrement</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ Decrements the value of <code class="computeroutput"><span class="identifier">b</span></code>
+ by one.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">is_zero</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">bool</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">cb</span></code> is zero, otherwise <code class="computeroutput"><span class="keyword">false</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">get_sign</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a value &lt; zero if <code class="computeroutput"><span class="identifier">cb</span></code>
+ is negative, a value &gt; zero if <code class="computeroutput"><span class="identifier">cb</span></code>
+ is positive, and zero if <code class="computeroutput"><span class="identifier">cb</span></code>
+ is zero.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_abs</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Set <code class="computeroutput"><span class="identifier">b</span></code> to the absolute
+ value of <code class="computeroutput"><span class="identifier">cb</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_fabs</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Set <code class="computeroutput"><span class="identifier">b</span></code> to the absolute
+ value of <code class="computeroutput"><span class="identifier">cb</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_fpclassify</span><span class="special">(</span><span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns one of the same values returned by <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">fpclassify</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_trunc</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">trunc</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_round</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">round</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_exp</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_log</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">log</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_log10</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">log10</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_sin</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">sin</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_cos</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cos</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_tan</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">exp</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_asin</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">asin</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_acos</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">acos</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_atan</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">atan</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_sinh</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">sinh</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_cosh</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cosh</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_tanh</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tanh</span></code>
+ on argument <code class="computeroutput"><span class="identifier">cb</span></code>
+ and stores the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_fmod</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">fmod</span></code>
+ on arguments <code class="computeroutput"><span class="identifier">cb</span></code>
+ and <code class="computeroutput"><span class="identifier">cb2</span></code>, and store
+ the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_pow</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pow</span></code>
+ on arguments <code class="computeroutput"><span class="identifier">cb</span></code>
+ and <code class="computeroutput"><span class="identifier">cb2</span></code>, and store
+ the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">eval_atan2</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+ <span class="identifier">cb</span><span class="special">,</span>
+ <span class="identifier">cb2</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Performs the equivalent operation to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">atan</span></code>
+ on arguments <code class="computeroutput"><span class="identifier">cb</span></code>
+ and <code class="computeroutput"><span class="identifier">cb2</span></code>, and store
+ the result in <code class="computeroutput"><span class="identifier">b</span></code>.
+ Only required when <code class="computeroutput"><span class="identifier">B</span></code>
+ is an floating point type.
+ </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; 2011 John Maddock<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="mp_number.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>
+</div>
+</body>
+</html>

Added: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mp_number.html
==============================================================================
--- (empty file)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/ref/mp_number.html 2011-11-14 07:41:15 EST (Mon, 14 Nov 2011)
@@ -0,0 +1,411 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>mp_number</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="../ref.html" title="Reference">
+<link rel="next" href="backendconc.html" title="Backend Requirements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../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="backendconc.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_multiprecision.ref.mp_number"></a><a class="link" href="mp_number.html" title="mp_number">mp_number</a>
+</h3></div></div></div>
+<a name="boost_multiprecision.ref.mp_number.synopsis"></a><h5>
+<a name="boost_multiprecision.ref.mp_number.synopsis-heading"></a>
+ <a class="link" href="mp_number.html#boost_multiprecision.ref.mp_number.synopsis">Synopsis</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">multiprecision</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">mp_number</span>
+<span class="special">{</span>
+ <span class="identifier">mp_number</span><span class="special">();</span>
+ <span class="identifier">mp_number</span><span class="special">(</span><span class="identifier">see</span><span class="special">-</span><span class="identifier">below</span><span class="special">);</span>
+ <span class="identifier">mp_number</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">see</span><span class="special">-</span><span class="identifier">below</span><span class="special">);</span>
+
+ <span class="comment">/* Other number-type operators here */</span>
+
+ <span class="comment">// Use in Boolean context:</span>
+ <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>
+ <span class="comment">// swap:</span>
+ <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">mp_number</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">);</span>
+ <span class="comment">// Sign:</span>
+ <span class="keyword">bool</span> <span class="identifier">is_zero</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">sign</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="comment">// string conversion:</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="comment">// Generic conversion mechanism</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">T</span> <span class="identifier">convert_to</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="comment">// precision control:</span>
+ <span class="keyword">static</span> <span class="keyword">unsigned</span> <span class="identifier">default_precision</span><span class="special">();</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">default_precision</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">digits10</span><span class="special">);</span>
+ <span class="keyword">unsigned</span> <span class="identifier">precision</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">void</span> <span class="identifier">precision</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">digits10</span><span class="special">);</span>
+ <span class="comment">// Comparison:</span>
+ <span class="keyword">int</span> <span class="identifier">compare</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">o</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">V</span><span class="special">&gt;</span>
+ <span class="keyword">typename</span> <span class="identifier">enable_if</span><span class="special">&lt;</span><span class="identifier">is_arithmetic</span><span class="special">&lt;</span><span class="identifier">V</span><span class="special">&gt;,</span> <span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">compare</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span><span class="special">&amp;</span> <span class="identifier">o</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="comment">// Access to the underlying implementation:</span>
+ <span class="identifier">Backend</span><span class="special">&amp;</span> <span class="identifier">backend</span><span class="special">();</span>
+ <span class="keyword">const</span> <span class="identifier">Backend</span><span class="special">&amp;</span> <span class="identifier">backend</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="comment">// Swap:</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+
+<span class="comment">// iostream support:</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="emphasis"><em>unmentionable-expression-template-type</em></span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">&gt;&gt;</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+
+<span class="comment">// Non-member function standard library support:</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">abs</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">fabs</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">sqrt</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">floor</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">ceil</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">trunc</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">itrunc</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">ltrunc</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">lltrunc</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">round</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">iround</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">lround</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">llround</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">exp</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">log</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">log10</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">cos</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">sin</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">tan</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">acos</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">asin</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">atan</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">cosh</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">sinh</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">tanh</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">ldexp</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">frexp</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">*);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">pow</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">fmod</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">atan2</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+
+<span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span><span class="special">{</span>
+
+<span class="comment">// Boost.Math interoperability functions:</span>
+<span class="keyword">int</span> <span class="identifier">fpclassify</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">);</span>
+<span class="keyword">bool</span> <span class="identifier">isfinite</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">);</span>
+<span class="keyword">bool</span> <span class="identifier">isnan</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">);</span>
+<span class="keyword">bool</span> <span class="identifier">isinf</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">);</span>
+<span class="keyword">bool</span> <span class="identifier">isnormal</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+
+<span class="comment">// numeric_limits support:</span>
+<span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="comment">/* Usual members here */</span>
+<span class="special">};</span>
+
+<span class="special">}</span>
+</pre>
+<a name="boost_multiprecision.ref.mp_number.description"></a><h5>
+<a name="boost_multiprecision.ref.mp_number.description-heading"></a>
+ <a class="link" href="mp_number.html#boost_multiprecision.ref.mp_number.description">Description</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">mp_number</span><span class="special">();</span>
+<span class="identifier">mp_number</span><span class="special">(</span><span class="identifier">see</span><span class="special">-</span><span class="identifier">below</span><span class="special">);</span>
+<span class="identifier">mp_number</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">see</span><span class="special">-</span><span class="identifier">below</span><span class="special">);</span>
+</pre>
+<p>
+ Type <code class="computeroutput"><span class="identifier">mp_number</span></code> is default
+ constructible, and both copy constructible and assignable from:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Itself.
+ </li>
+<li class="listitem">
+ An expression template which is the result of one of the arithmetic operators.
+ </li>
+<li class="listitem">
+ Any builtin arithmetic type.
+ </li>
+<li class="listitem">
+ A <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code> or any type which is convertible
+ to <code class="computeroutput"><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span></code>.
+ </li>
+<li class="listitem">
+ Any type that the Backend is constructible or assignable from.
+ </li>
+</ul></div>
+<pre class="programlisting"><span class="comment">/* Other number-type operators here */</span>
+</pre>
+<p>
+ The following arithmetic operations are support for real-numbered types:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Binary +, -, *, /, +<code class="literal">, -</code>, *<code class="literal">, /</code>,
+ ==, !<code class="literal">, &lt;</code>, &gt;<code class="literal">, &lt;, &gt;, ||, &amp;&amp;,
+ ||</code>, &amp;&amp;=.
+ </li>
+<li class="listitem">
+ Unary +, -, ++, --, !.
+ </li>
+</ul></div>
+<p>
+ For integer types the following operators are also supported:
+ </p>
+<p>
+ Binary %, %<code class="literal">, |, |</code>, &amp;, &amp;<code class="literal">, ^, ^</code>,
+ &lt;&lt;, &lt;&lt;<code class="literal">, &gt;&gt;, &gt;&gt;</code>.
+ </p>
+<p>
+ Note that with the exception of the logical operators and unary + the result
+ of applying an operator to mp_number is an "unmentionable" expression
+ template type.
+ </p>
+<p>
+ Binary operators, must have at least one argument that is of type <code class="computeroutput"><span class="identifier">mp_number</span></code> or an expression template derived
+ from <code class="computeroutput"><span class="identifier">mp_number</span></code>. One argument
+ may optionally be of arithmetic type.
+ </p>
+<p>
+ Note that type <code class="computeroutput"><span class="identifier">mp_number</span></code>
+ (and all expression templates derived from it) may be used in a Boolian context.
+ </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>
+ Returns an <span class="emphasis"><em>unmentionable-type</em></span> that is usable in Boolean
+ contexts (this allows <code class="computeroutput"><span class="identifier">mp_number</span></code>
+ to be used in any Boolean context - if statements, conditional statements,
+ or as an argument to a logical operator - without type <code class="computeroutput"><span class="identifier">mp_number</span></code>
+ being convertible to type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">mp_number</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">);</span>
+</pre>
+<p>
+ Swaps <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ with <code class="computeroutput"><span class="identifier">other</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">is_zero</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="keyword">true</span></code> is <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> is zero,
+ otherwise <code class="computeroutput"><span class="keyword">false</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">sign</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns a value less than zero if <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> is negative, a value greater than zero
+ if <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ is positive, and zero if <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ is zero.
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">precision</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">scientific</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the number formatted as a string, with at least <span class="emphasis"><em>precision</em></span>
+ digits, and in scientific format if <span class="emphasis"><em>scientific</em></span> is true.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">T</span> <span class="identifier">convert_to</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Provides a generic conversion mechanism to convert <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> to type <code class="computeroutput"><span class="identifier">T</span></code>.
+ Type <code class="computeroutput"><span class="identifier">T</span></code> may be any arithmetic
+ type. Optionally other types may also be supported by specific <code class="computeroutput"><span class="identifier">Backend</span></code> types.
+ </p>
+<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">unsigned</span> <span class="identifier">default_precision</span><span class="special">();</span>
+<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">default_precision</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">digits10</span><span class="special">);</span>
+<span class="keyword">unsigned</span> <span class="identifier">precision</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="keyword">void</span> <span class="identifier">precision</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">digits10</span><span class="special">);</span>
+</pre>
+<p>
+ These functions are only available if the Backend template parameter supports
+ runtime changes to precision. They get and set the default precision and
+ the precision of <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ respectively.
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">compare</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">o</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">V</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> <span class="identifier">enable_if</span><span class="special">&lt;</span><span class="identifier">is_arithmetic</span><span class="special">&lt;</span><span class="identifier">V</span><span class="special">&gt;,</span> <span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">compare</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ A value less that 0 for *this &lt; other
+ </li>
+<li class="listitem">
+ A value greater that 0 for *this &gt; other
+ </li>
+<li class="listitem">
+ Zero for *this == other
+ </li>
+</ul></div>
+<pre class="programlisting"><span class="identifier">Backend</span><span class="special">&amp;</span> <span class="identifier">backend</span><span class="special">();</span>
+<span class="keyword">const</span> <span class="identifier">Backend</span><span class="special">&amp;</span> <span class="identifier">backend</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ Returns the underlying backend instance used by *this.
+ </p>
+<a name="boost_multiprecision.ref.mp_number.swap"></a><h5>
+<a name="boost_multiprecision.ref.mp_number.swap-heading"></a>
+ <a class="link" href="mp_number.html#boost_multiprecision.ref.mp_number.swap">swap</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+</pre>
+<p>
+ Swaps <code class="computeroutput"><span class="identifier">a</span></code> and <code class="computeroutput"><span class="identifier">b</span></code>.
+ </p>
+<a name="boost_multiprecision.ref.mp_number.iostream_support"></a><h5>
+<a name="boost_multiprecision.ref.mp_number.iostream_support-heading"></a>
+ <a class="link" href="mp_number.html#boost_multiprecision.ref.mp_number.iostream_support">Iostream
+ Support</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">unmentionable</span><span class="special">-</span><span class="identifier">expression</span><span class="special">-</span><span class="keyword">template</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="keyword">inline</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">&gt;&gt;</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;&amp;</span> <span class="identifier">r</span><span class="special">)</span>
+</pre>
+<p>
+ These operators provided formatted input-output operations on <code class="computeroutput"><span class="identifier">mp_number</span></code> types, and expression templates
+ derived from them.
+ </p>
+<a name="boost_multiprecision.ref.mp_number.non_member_standard_library_function_support"></a><h5>
+<a name="boost_multiprecision.ref.mp_number.non_member_standard_library_function_support-heading"></a>
+ <a class="link" href="mp_number.html#boost_multiprecision.ref.mp_number.non_member_standard_library_function_support">Non-member
+ standard library function support</a>
+ </h5>
+<pre class="programlisting"><span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">abs</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">fabs</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">sqrt</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">floor</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">ceil</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">trunc</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">itrunc</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">ltrunc</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">lltrunc</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">round</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">iround</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">lround</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">llround</span><span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">exp</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">log</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">log10</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">cos</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">sin</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">tan</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">acos</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">asin</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">atan</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">cosh</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">sinh</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">tanh</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">ldexp</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">frexp</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">*);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">pow</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">fmod</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+<span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">atan2</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;);</span>
+</pre>
+<p>
+ These functions all behave exactly as their standard library counterparts
+ do: their argument is either an instance of <code class="computeroutput"><span class="identifier">mp_number</span></code>
+ or an expression template derived from it; their return value is always an
+ expression template.
+ </p>
+<p>
+ These functions are normally implemented by the Backend type. However, default
+ versions are provided for Backend types that don't have native support for
+ these functions. Please note however, that this default support requires
+ the precision of the type 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.
+ </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.
+ </p>
+<a name="boost_multiprecision.ref.mp_number.boost_math_interoperabilty_support"></a><h5>
+<a name="boost_multiprecision.ref.mp_number.boost_math_interoperabilty_support-heading"></a>
+ <a class="link" href="mp_number.html#boost_multiprecision.ref.mp_number.boost_math_interoperabilty_support">Boost.Math
+ Interoperabilty Support</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span><span class="special">{</span>
+
+<span class="keyword">int</span> <span class="identifier">fpclassify</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">);</span>
+<span class="keyword">bool</span> <span class="identifier">isfinite</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">);</span>
+<span class="keyword">bool</span> <span class="identifier">isnan</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">);</span>
+<span class="keyword">bool</span> <span class="identifier">isinf</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">);</span>
+<span class="keyword">bool</span> <span class="identifier">isnormal</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>mp_number-or-expression-template-type</em></span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ These functions behave exacts as their Boost.Math equivalents. Other Boost.Math
+ functions and templates may also be specialized or overloaded to ensure interoperability.
+ </p>
+<a name="boost_multiprecision.ref.mp_number.std__numeric_limits_support"></a><h5>
+<a name="boost_multiprecision.ref.mp_number.std__numeric_limits_support-heading"></a>
+ <a class="link" href="mp_number.html#boost_multiprecision.ref.mp_number.std__numeric_limits_support">std::numeric_limits
+ support</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="comment">/* Usual members here */</span>
+<span class="special">};</span>
+
+<span class="special">}</span>
+</pre>
+<p>
+ Class template <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code> is specialized for all instantiations
+ of <code class="computeroutput"><span class="identifier">mp_number</span></code> whose precision
+ is known at compile time, plus those types whose precision is unlimited (though
+ it is much less useful in those cases). It is not specialized for types whose
+ precision can vary at compile time (such as <code class="computeroutput"><span class="identifier">mpf_float</span></code>).
+ </p>
+</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; 2011 John Maddock<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="../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="backendconc.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut.html
==============================================================================
--- (empty file)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut.html 2011-11-14 07:41:15 EST (Mon, 14 Nov 2011)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tutorial</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="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
+<link rel="prev" href="intro.html" title="Introduction">
+<link rel="next" href="tut/ints.html" title="Integer Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intro.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="tut/ints.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_multiprecision.tut"></a><a class="link" href="tut.html" title="Tutorial">Tutorial</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Integer Types</span></dt>
+<dt><span class="section">Real Numbers</span></dt>
+<dt><span class="section">Rational Number Types</span></dt>
+</dl></div>
+<p>
+ In order to use this library you need to make two choices: what kind of number
+ do I want, and which backend do I want to perform the actual arithmetic?
+ </p>
+</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; 2011 John Maddock<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="intro.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="tut/ints.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html
==============================================================================
--- (empty file)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html 2011-11-14 07:41:15 EST (Mon, 14 Nov 2011)
@@ -0,0 +1,177 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Integer Types</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="../tut.html" title="Tutorial">
+<link rel="prev" href="../tut.html" title="Tutorial">
+<link rel="next" href="reals.html" title="Real Numbers">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../tut.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="reals.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_multiprecision.tut.ints"></a><a class="link" href="ints.html" title="Integer Types">Integer Types</a>
+</h3></div></div></div>
+<p>
+ The following backends provide integer arithmetic:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Backend Type
+ </p>
+ </th>
+<th>
+ <p>
+ Header
+ </p>
+ </th>
+<th>
+ <p>
+ Radix
+ </p>
+ </th>
+<th>
+ <p>
+ Dependencies
+ </p>
+ </th>
+<th>
+ <p>
+ Pros
+ </p>
+ </th>
+<th>
+ <p>
+ Cons
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">gmp_int</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost/multiprecision/gmp.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ 2
+ </p>
+ </td>
+<td>
+ <p>
+ GMP
+ </p>
+ </td>
+<td>
+ <p>
+ Very fast and efficient backend.
+ </p>
+ </td>
+<td>
+ <p>
+ Dependency on GNU licenced GMP library.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<a name="boost_multiprecision.tut.ints.gmp_int"></a><h5>
+<a name="boost_multiprecision.tut.ints.gmp_int-heading"></a>
+ <a class="link" href="ints.html#boost_multiprecision.tut.ints.gmp_int">gmp_int</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">multiprecision</span><span class="special">{</span>
+
+<span class="keyword">class</span> <span class="identifier">gmp_int</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_int</span> <span class="special">&gt;</span> <span class="identifier">mpz_int</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">gmp_int</span></code> backend is used
+ via the typedef <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">mpz_int</span></code>. It acts as a thin wrapper around
+ the GMP <code class="computeroutput"><span class="identifier">mpz_t</span></code> to provide
+ an integer type that is a drop-in replacement for the native C++ integer
+ types, but with unlimited precision.
+ </p>
+<p>
+ As well as the usual conversions from arithmetic and string types, type
+ <code class="computeroutput"><span class="identifier">mpz_int</span></code> is copy constructible
+ and asignable from:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ The GMP native types: <code class="computeroutput"><span class="identifier">mpf_t</span></code>,
+ <code class="computeroutput"><span class="identifier">mpz_t</span></code>, <code class="computeroutput"><span class="identifier">mpq_t</span></code>.
+ </li>
+<li class="listitem">
+ Instances of <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code> that are wrappers around those types:
+ <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_float</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>, <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_rational</span><span class="special">&gt;</span></code>.
+ </li>
+</ul></div>
+<p>
+ It's also possible to access the underlying <code class="computeroutput"><span class="identifier">mpz_t</span></code>
+ via the data() member function of <code class="computeroutput"><span class="identifier">gmp_int</span></code>.
+ </p>
+<a name="boost_multiprecision.tut.ints.example_"></a><h6>
+<a name="boost_multiprecision.tut.ints.example_-heading"></a>
+ <a class="link" href="ints.html#boost_multiprecision.tut.ints.example_">Example:</a>
+ </h6>
+<p>
+
+</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">gmp</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
+
+<span class="identifier">mpz_int</span> <span class="identifier">v</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
+
+<span class="comment">// Do some arithmetic:</span>
+<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;=</span> <span class="number">1000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="identifier">v</span> <span class="special">*=</span> <span class="identifier">i</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">v</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// prints 1000!</span>
+
+<span class="comment">// Access the underlying representation:</span>
+<span class="identifier">mpz_t</span> <span class="identifier">z</span><span class="special">;</span>
+<span class="identifier">mpz_init</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span>
+<span class="identifier">mpz_set</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">backend</span><span class="special">().</span><span class="identifier">data</span><span class="special">());</span>
+</pre>
+<p>
+ </p>
+</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; 2011 John Maddock<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="../tut.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="reals.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html
==============================================================================
--- (empty file)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html 2011-11-14 07:41:15 EST (Mon, 14 Nov 2011)
@@ -0,0 +1,188 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Rational Number Types</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="../tut.html" title="Tutorial">
+<link rel="prev" href="reals.html" title="Real Numbers">
+<link rel="next" href="../ref.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reals.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="../ref.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_multiprecision.tut.rational"></a><a class="link" href="rational.html" title="Rational Number Types">Rational Number Types</a>
+</h3></div></div></div>
+<p>
+ The following backends provide rational number arithmetic:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Backend Type
+ </p>
+ </th>
+<th>
+ <p>
+ Header
+ </p>
+ </th>
+<th>
+ <p>
+ Radix
+ </p>
+ </th>
+<th>
+ <p>
+ Dependencies
+ </p>
+ </th>
+<th>
+ <p>
+ Pros
+ </p>
+ </th>
+<th>
+ <p>
+ Cons
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">gmp_rational</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost/multiprecision/gmp.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ 2
+ </p>
+ </td>
+<td>
+ <p>
+ GMP
+ </p>
+ </td>
+<td>
+ <p>
+ Very fast and efficient backend.
+ </p>
+ </td>
+<td>
+ <p>
+ Dependency on GNU licenced GMP library.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<a name="boost_multiprecision.tut.rational.gmp_rational"></a><h5>
+<a name="boost_multiprecision.tut.rational.gmp_rational-heading"></a>
+ <a class="link" href="rational.html#boost_multiprecision.tut.rational.gmp_rational">gmp_rational</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">multiprecision</span><span class="special">{</span>
+
+<span class="keyword">class</span> <span class="identifier">gmp_rational</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_rational</span> <span class="special">&gt;</span> <span class="identifier">mpq_rational</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">gmp_rational</span></code> backend
+ is used via the typedef <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">mpq_rational</span></code>.
+ It acts as a thin wrapper around the GMP <code class="computeroutput"><span class="identifier">mpq_t</span></code>
+ to provide a rational number type that is a drop-in replacement for the native
+ C++ number types, but with unlimited precision.
+ </p>
+<p>
+ As well as the usual conversions from arithmetic and string types, instances
+ of <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_rational</span><span class="special">&gt;</span></code>
+ are copy constructible and assignable from:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ The GMP native types: <code class="computeroutput"><span class="identifier">mpz_t</span></code>,
+ <code class="computeroutput"><span class="identifier">mpq_t</span></code>.
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_int</span><span class="special">&gt;</span></code>.
+ </li>
+</ul></div>
+<p>
+ There are also non-member functions:
+ </p>
+<pre class="programlisting"><span class="identifier">mpz_int</span> <span class="identifier">numerator</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mpq_rational</span><span class="special">&amp;);</span>
+<span class="identifier">mpz_int</span> <span class="identifier">denominator</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mpq_rational</span><span class="special">&amp;);</span>
+</pre>
+<p>
+ Which return the numerator and denominator of the number.
+ </p>
+<p>
+ It's also possible to access the underlying <code class="computeroutput"><span class="identifier">mpq_t</span></code>
+ via the data() member function of <code class="computeroutput"><span class="identifier">mpq_rational</span></code>.
+ </p>
+<a name="boost_multiprecision.tut.rational.example_"></a><h6>
+<a name="boost_multiprecision.tut.rational.example_-heading"></a>
+ <a class="link" href="rational.html#boost_multiprecision.tut.rational.example_">Example:</a>
+ </h6>
+<p>
+
+</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">gmp</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
+
+<span class="identifier">mpq_rational</span> <span class="identifier">v</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
+
+<span class="comment">// Do some arithmetic:</span>
+<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;=</span> <span class="number">1000</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="identifier">v</span> <span class="special">*=</span> <span class="identifier">i</span><span class="special">;</span>
+<span class="identifier">v</span> <span class="special">/=</span> <span class="number">10</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">v</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// prints 1000! / 10</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">numerator</span><span class="special">(</span><span class="identifier">v</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">denominator</span><span class="special">(</span><span class="identifier">v</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+<span class="comment">// Access the underlying data:</span>
+<span class="identifier">mpq_t</span> <span class="identifier">q</span><span class="special">;</span>
+<span class="identifier">mpq_init</span><span class="special">(</span><span class="identifier">q</span><span class="special">);</span>
+<span class="identifier">mpq_set</span><span class="special">(</span><span class="identifier">q</span><span class="special">,</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">backend</span><span class="special">().</span><span class="identifier">data</span><span class="special">());</span>
+</pre>
+<p>
+ </p>
+</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; 2011 John Maddock<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="reals.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="../ref.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/reals.html
==============================================================================
--- (empty file)
+++ sandbox/big_number/libs/multiprecision/doc/html/boost_multiprecision/tut/reals.html 2011-11-14 07:41:15 EST (Mon, 14 Nov 2011)
@@ -0,0 +1,420 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Real Numbers</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="../tut.html" title="Tutorial">
+<link rel="prev" href="ints.html" title="Integer Types">
+<link rel="next" href="rational.html" title="Rational Number Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="ints.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="rational.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_multiprecision.tut.reals"></a><a class="link" href="reals.html" title="Real Numbers">Real Numbers</a>
+</h3></div></div></div>
+<p>
+ The following backends provide real number arithmetic:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Backend Type
+ </p>
+ </th>
+<th>
+ <p>
+ Header
+ </p>
+ </th>
+<th>
+ <p>
+ Radix
+ </p>
+ </th>
+<th>
+ <p>
+ Dependencies
+ </p>
+ </th>
+<th>
+ <p>
+ Pros
+ </p>
+ </th>
+<th>
+ <p>
+ Cons
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">mpf_float</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost/multiprecision/gmp.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ 2
+ </p>
+ </td>
+<td>
+ <p>
+ GMP
+ </p>
+ </td>
+<td>
+ <p>
+ Very fast and efficient backend.
+ </p>
+ </td>
+<td>
+ <p>
+ Dependency on GNU licenced GMP library.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">mpfr_float</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost/multiprecision/mpfr.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ 2
+ </p>
+ </td>
+<td>
+ <p>
+ GMP and MPFR
+ </p>
+ </td>
+<td>
+ <p>
+ Very fast and efficient backend, with it's own standard library
+ implementation.
+ </p>
+ </td>
+<td>
+ <p>
+ Dependency on GNU licenced GMP and MPFR libraries.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">cpp_float</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost/multiprecision/cpp_float.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+<td>
+ <p>
+ None
+ </p>
+ </td>
+<td>
+ <p>
+ Header only, all C++ implementation.
+ </p>
+ </td>
+<td>
+ <p>
+ Approximately 2x slower than the MPFR or GMP libraries.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="boost_multiprecision.tut.reals.gmp_float"></a><h5>
+<a name="boost_multiprecision.tut.reals.gmp_float-heading"></a>
+ <a class="link" href="reals.html#boost_multiprecision.tut.reals.gmp_float">gmp_float</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">multiprecision</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">gmp_float</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_float</span><span class="special">&lt;</span><span class="number">50</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpf_float_50</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_float</span><span class="special">&lt;</span><span class="number">100</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpf_float_100</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_float</span><span class="special">&lt;</span><span class="number">500</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpf_float_500</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_float</span><span class="special">&lt;</span><span class="number">1000</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpf_float_1000</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_float</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpf_float</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">gmp_float</span></code> backend is
+ used in conjunction with <code class="computeroutput"><span class="identifier">mp_number</span></code>:
+ It acts as a thin wrapper around the GMP <code class="computeroutput"><span class="identifier">mpf_t</span></code>
+ to provide an real-number type that is a drop-in replacement for the native
+ C++ floating-point types, but with much greater precision.
+ </p>
+<p>
+ Type <code class="computeroutput"><span class="identifier">gmp_float</span></code> can be used
+ at fixed precision by specifying a non-zero <code class="computeroutput"><span class="identifier">Digits10</span></code>
+ template parameter, or at variable precision by setting the template argument
+ to zero. The typedefs mpf_float_50, mpf_float_100, mpf_float_500, mpf_float_1000
+ provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision
+ respectively. The typedef mpf_float provides a variable precision type whose
+ precision can be controlled via the <code class="computeroutput"><span class="identifier">mp_number</span></code>'s
+ member functions.
+ </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>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This type only provides standard library and <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
+ support when the precision is fixed at compile time.
+ </p></td></tr>
+</table></div>
+<p>
+ As well as the usual conversions from arithmetic and string types, instances
+ of <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">mpf_float</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span> <span class="special">&gt;</span></code> are copy constructible and assignable
+ from:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ The GMP native types <code class="computeroutput"><span class="identifier">mpf_t</span></code>,
+ <code class="computeroutput"><span class="identifier">mpz_t</span></code>, <code class="computeroutput"><span class="identifier">mpq_t</span></code>.
+ </li>
+<li class="listitem">
+ The <code class="computeroutput"><span class="identifier">mp_number</span></code> wrappers
+ around those types: <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">mpf_float</span><span class="special">&lt;</span><span class="identifier">M</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>,
+ <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_int</span><span class="special">&gt;</span></code>,
+ <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_rational</span><span class="special">&gt;</span></code>.
+ </li>
+</ul></div>
+<p>
+ It's also possible to access the underlying <code class="computeroutput"><span class="identifier">mpf_t</span></code>
+ via the data() member function of <code class="computeroutput"><span class="identifier">gmp_float</span></code>.
+ </p>
+<a name="boost_multiprecision.tut.reals.gmp_example_"></a><h6>
+<a name="boost_multiprecision.tut.reals.gmp_example_-heading"></a>
+ <a class="link" href="reals.html#boost_multiprecision.tut.reals.gmp_example_">GMP example:</a>
+ </h6>
+<p>
+
+</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">gmp</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
+
+<span class="comment">// Operations at variable precision and limited standard library support:</span>
+<span class="identifier">mpf_float</span> <span class="identifier">a</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
+<span class="identifier">mpf_float</span><span class="special">::</span><span class="identifier">default_precision</span><span class="special">(</span><span class="number">1000</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">mpf_float</span><span class="special">::</span><span class="identifier">default_precision</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// print root-2</span>
+
+<span class="comment">// Operations at fixed precision and full standard library support:</span>
+<span class="identifier">mpf_float_100</span> <span class="identifier">b</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">mpf_float_100</span><span class="special">&gt;::</span><span class="identifier">digits</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">log</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// print log(2)</span>
+
+<span class="comment">// Access the underlying representation:</span>
+<span class="identifier">mpf_t</span> <span class="identifier">f</span><span class="special">;</span>
+<span class="identifier">mpf_init</span><span class="special">(</span><span class="identifier">f</span><span class="special">);</span>
+<span class="identifier">mpf_set</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">a</span><span class="special">.</span><span class="identifier">backend</span><span class="special">().</span><span class="identifier">data</span><span class="special">());</span>
+</pre>
+<p>
+ </p>
+<a name="boost_multiprecision.tut.reals.mpfr_float"></a><h5>
+<a name="boost_multiprecision.tut.reals.mpfr_float-heading"></a>
+ <a class="link" href="reals.html#boost_multiprecision.tut.reals.mpfr_float">mpfr_float</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">multiprecision</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">mpfr_float_backend</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="number">50</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpfr_float_50</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="number">100</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpfr_float_100</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="number">500</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpfr_float_500</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="number">1000</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpfr_float_1000</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpfr_float</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">mpfr_float_backend</span></code> type
+ is used in conjunction with <code class="computeroutput"><span class="identifier">mp_number</span></code>:
+ It acts as a thin wrapper around the MPFR <code class="computeroutput"><span class="identifier">mpfr_t</span></code>
+ to provide an real-number type that is a drop-in replacement for the native
+ C++ floating-point types, but with much greater precision.
+ </p>
+<p>
+ Type <code class="computeroutput"><span class="identifier">mpfr_float_backend</span></code> can
+ be used at fixed precision by specifying a non-zero <code class="computeroutput"><span class="identifier">Digits10</span></code>
+ template parameter, or at variable precision by setting the template argument
+ to zero. The typedefs mpfr_float_50, mpfr_float_100, mpfr_float_500, mpfr_float_1000
+ provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision
+ respectively. The typedef mpfr_float provides a variable precision type whose
+ precision can be controlled via the <code class="computeroutput"><span class="identifier">mp_number</span></code>'s
+ member functions.
+ </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>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This type only provides <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
+ support when the precision is fixed at compile time.
+ </p></td></tr>
+</table></div>
+<p>
+ As well as the usual conversions from arithmetic and string types, instances
+ of <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span> <span class="special">&gt;</span></code> are copy constructible and assignable
+ from:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ The GMP native types <code class="computeroutput"><span class="identifier">mpf_t</span></code>,
+ <code class="computeroutput"><span class="identifier">mpz_t</span></code>, <code class="computeroutput"><span class="identifier">mpq_t</span></code>.
+ </li>
+<li class="listitem">
+ The MPFR native type <code class="computeroutput"><span class="identifier">mpfr_t</span></code>.
+ </li>
+<li class="listitem">
+ The <code class="computeroutput"><span class="identifier">mp_number</span></code> wrappers
+ around those types: <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="identifier">M</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>,
+ <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">mpf_float</span><span class="special">&lt;</span><span class="identifier">M</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>, <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_int</span><span class="special">&gt;</span></code>, <code class="computeroutput"><span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">gmp_rational</span><span class="special">&gt;</span></code>.
+ </li>
+</ul></div>
+<p>
+ It's also possible to access the underlying <code class="computeroutput"><span class="identifier">mpf_t</span></code>
+ via the data() member function of <code class="computeroutput"><span class="identifier">gmp_float</span></code>.
+ </p>
+<a name="boost_multiprecision.tut.reals.mpfr_example_"></a><h6>
+<a name="boost_multiprecision.tut.reals.mpfr_example_-heading"></a>
+ <a class="link" href="reals.html#boost_multiprecision.tut.reals.mpfr_example_">MPFR example:</a>
+ </h6>
+<p>
+
+</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">mpfr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
+
+<span class="comment">// Operations at variable precision and no numeric_limits support:</span>
+<span class="identifier">mpfr_float</span> <span class="identifier">a</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
+<span class="identifier">mpfr_float</span><span class="special">::</span><span class="identifier">default_precision</span><span class="special">(</span><span class="number">1000</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">mpfr_float</span><span class="special">::</span><span class="identifier">default_precision</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// print root-2</span>
+
+<span class="comment">// Operations at fixed precision and full numeric_limits support:</span>
+<span class="identifier">mpfr_float_100</span> <span class="identifier">b</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">mpfr_float_100</span><span class="special">&gt;::</span><span class="identifier">digits</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">log</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// print log(2)</span>
+
+<span class="comment">// Access the underlying data:</span>
+<span class="identifier">mpfr_t</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="identifier">mpfr_init</span><span class="special">(</span><span class="identifier">r</span><span class="special">);</span>
+<span class="identifier">mpfr_set</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">b</span><span class="special">.</span><span class="identifier">backend</span><span class="special">().</span><span class="identifier">data</span><span class="special">(),</span> <span class="identifier">GMP_RNDN</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+<a name="boost_multiprecision.tut.reals.cpp_float"></a><h5>
+<a name="boost_multiprecision.tut.reals.cpp_float-heading"></a>
+ <a class="link" href="reals.html#boost_multiprecision.tut.reals.cpp_float">cpp_float</a>
+ </h5>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">multiprecision</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">cpp_float</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">cpp_float</span><span class="special">&lt;</span><span class="number">50</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">cpp_float_50</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">mp_number</span><span class="special">&lt;</span><span class="identifier">cpp_float</span><span class="special">&lt;</span><span class="number">100</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">cpp_float_100</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">cpp_float</span></code> backend is
+ used in conjunction with <code class="computeroutput"><span class="identifier">mp_number</span></code>:
+ It acts as an entirely C++ (header only and dependency free) real-number
+ type that is a drop-in replacement for the native C++ floating-point types,
+ but with much greater precision.
+ </p>
+<p>
+ Type <code class="computeroutput"><span class="identifier">cpp_float</span></code> can be used
+ at fixed precision by specifying a non-zero <code class="computeroutput"><span class="identifier">Digits10</span></code>
+ template parameter. The typedefs cpp_float_50 and cpp_float_100 provide arithmetic
+ types at 50 and 100 decimal digits precision respectively.
+ </p>
+<p>
+ There is full standard library and <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
+ support available for this type.
+ </p>
+<a name="boost_multiprecision.tut.reals.cpp_float_example_"></a><h6>
+<a name="boost_multiprecision.tut.reals.cpp_float_example_-heading"></a>
+ <a class="link" href="reals.html#boost_multiprecision.tut.reals.cpp_float_example_">cpp_float
+ example:</a>
+ </h6>
+<p>
+
+</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_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
+
+<span class="comment">// Operations at fixed precision and full numeric_limits support:</span>
+<span class="identifier">cpp_float_100</span> <span class="identifier">b</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">cpp_float_100</span><span class="special">&gt;::</span><span class="identifier">digits</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">log</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// print log(2)</span>
+</pre>
+<p>
+ </p>
+</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; 2011 John Maddock<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="ints.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="rational.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/big_number/libs/multiprecision/doc/html/index.html
==============================================================================
--- (empty file)
+++ sandbox/big_number/libs/multiprecision/doc/html/index.html 2011-11-14 07:41:15 EST (Mon, 14 Nov 2011)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter&#160;1.&#160;Boost.Multiprecision</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="next" href="boost_multiprecision/intro.html" title="Introduction">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_multiprecision/intro.html"><img src="images/next.png" alt="Next"></a></div>
+<div class="chapter">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="boost_multiprecision"></a>Chapter&#160;1.&#160;Boost.Multiprecision</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">various</span> <span class="surname">authors</span>
+</h3></div></div>
+<div><p class="copyright">Copyright &#169; 2011 John Maddock</p></div>
+<div><div class="legalnotice">
+<a name="id1027865"></a><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></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Tutorial</span></dt>
+<dd><dl>
+<dt><span class="section">Integer Types</span></dt>
+<dt><span class="section">Real Numbers</span></dt>
+<dt><span class="section">Rational Number Types</span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">mp_number</span></dt>
+<dt><span class="section">Backend Requirements</span></dt>
+</dl></dd>
+</dl>
+</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: July 08, 2011 at 18:51:46 +0100</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_multiprecision/intro.html"><img src="images/next.png" alt="Next"></a></div>
+</body>
+</html>

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 2011-11-14 07:41:15 EST (Mon, 14 Nov 2011)
@@ -20,7 +20,7 @@
 
 [import ../example/gmp_snips.cpp]
 [import ../example/mpfr_snips.cpp]
-[import ../example/mp_float_snips.cpp]
+[import ../example/cpp_float_snips.cpp]
 
 [section:intro Introduction]
 
@@ -233,7 +233,7 @@
 [[Backend Type][Header][Radix][Dependencies][Pros][Cons]]
 [[`mpf_float<N>`][boost/multiprecision/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]]
 [[`mpfr_float<N>`][boost/multiprecision/mpfr.hpp][2][GMP and MPFR][Very fast and efficient backend, with it's own standard library implementation.][Dependency on GNU licenced GMP and MPFR libraries.]]
-[[`mp_float<N>`][boost/multiprecision/mp_float.hpp][10][None][Header only, all C++ implementation.][Approximately 2x slower than the MPFR or GMP libraries.]]
+[[`cpp_float<N>`][boost/multiprecision/cpp_float.hpp][10][None][Header only, all C++ implementation.][Approximately 2x slower than the MPFR or GMP libraries.]]
 ]
 
 [h4 gmp_float]
@@ -315,31 +315,31 @@
 
 [mpfr_eg]
 
-[h4 mp_float]
+[h4 cpp_float]
 
    namespace boost{ namespace multiprecision{
 
    template <unsigned Digits10>
- class mp_float;
+ class cpp_float;
 
- typedef mp_number<mp_float<50> > mp_float_50;
- typedef mp_number<mp_float<100> > mp_float_100;
+ typedef mp_number<cpp_float<50> > cpp_float_50;
+ typedef mp_number<cpp_float<100> > cpp_float_100;
 
    }} // namespaces
 
-The `mp_float` backend is used in conjunction with `mp_number`: It acts as an entirely C++ (header only and dependency free)
+The `cpp_float` backend is used in conjunction with `mp_number`: It acts as an entirely C++ (header only and dependency free)
 real-number type that is a drop-in replacement for the native C++ floating-point types, but with
 much greater precision.
 
-Type `mp_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter.
-The typedefs mp_float_50 and mp_float_100 provide arithmetic types at 50 and 100 decimal digits precision
+Type `cpp_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter.
+The typedefs cpp_float_50 and cpp_float_100 provide arithmetic types at 50 and 100 decimal digits precision
 respectively.
 
 There is full standard library and `numeric_limits` support available for this type.
 
-[h5 mp_float example:]
+[h5 cpp_float example:]
 
-[mp_float_eg]
+[cpp_float_eg]
 
 [endsect]
 
@@ -548,7 +548,7 @@
 
       int sign()const;
 
-Returns a value less than zero if `*this` is negative, a value greater than zero if `*this is positive, and zero
+Returns a value less than zero if `*this` is negative, a value greater than zero if `*this` is positive, and zero
 if `*this` is zero.
 
       std::string str(unsigned precision, bool scientific = true)const;

Deleted: sandbox/big_number/libs/multiprecision/example/mp_float_snips.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/example/mp_float_snips.cpp 2011-11-14 07:41:15 EST (Mon, 14 Nov 2011)
+++ (empty file)
@@ -1,28 +0,0 @@
-///////////////////////////////////////////////////////////////
-// Copyright 2011 John Maddock. 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_
-
-#include <boost/multiprecision/cpp_float.hpp>
-#include <iostream>
-
-void t1()
-{
- //[cpp_float_eg
- //=#include <boost/multiprecision/cpp_float.hpp>
-
- using namespace boost::multiprecision;
-
- // Operations at fixed precision and full numeric_limits support:
- cpp_float_100 b = 2;
- std::cout << std::numeric_limits<cpp_float_100>::digits << std::endl;
- std::cout << log(b) << std::endl; // print log(2)
- //]
-}
-
-int main()
-{
- t1();
- return 0;
-}
-


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