$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r86373 - in sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut: . floats limits/implementation limits/implementation/constants limits/implementation/functions
From: john_at_[hidden]
Date: 2013-10-20 12:57:44
Author: johnmaddock
Date: 2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)
New Revision: 86373
URL: http://svn.boost.org/trac/boost/changeset/86373
Log:
Add generated HTML files.
Added:
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_bin_float.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/input_output.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/bound.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/denorm_loss.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/denorm_style.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/digits.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/digits10.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/exact.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/infinity.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/is_bounded.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/is_specialized.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/max_digits10.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/modulo.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/radix.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/round_style.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/signed.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/tinyness.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/NaN.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/denorm_min.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/epsilon.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/infinity.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/lowest.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/max.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/min.html   (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/round_error.html   (contents, props changed)
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_bin_float.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_bin_float.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,179 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>cpp_bin_float</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../floats.html" title="Floating Point Numbers">
+<link rel="prev" href="../floats.html" title="Floating Point Numbers">
+<link rel="next" href="cpp_dec_float.html" title="cpp_dec_float">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../floats.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.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="cpp_dec_float.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_multiprecision.tut.floats.cpp_bin_float"></a><a class="link" href="cpp_bin_float.html" title="cpp_bin_float">cpp_bin_float</a>
+</h4></div></div></div>
+<p>
+          <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_bin_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+        </p>
+<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">enum</span> <span class="identifier">digit_base_type</span>
+<span class="special">{</span>
+   <span class="identifier">digit_base_2</span> <span class="special">=</span> <span class="number">2</span><span class="special">,</span>
+   <span class="identifier">digit_base_10</span> <span class="special">=</span> <span class="number">10</span>
+<span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">unsigned</span> <span class="identifier">Digits</span><span class="special">,</span> <span class="identifier">digit_base_type</span> <span class="identifier">base</span> <span class="special">=</span> <span class="identifier">digit_base_10</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Exponent</span> <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">ExponentMin</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">ExponentMax</span> <span class="special">=</span> <span class="number">0</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">cpp_bin_float</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="number">50</span><span class="special">></span> <span class="special">></span> <span class="identifier">cpp_bin_float_50</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="number">100</span><span class="special">></span> <span class="special">></span> <span class="identifier">cpp_bin_float_100</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">backends</span><span class="special">::</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="number">24</span><span class="special">,</span> <span class="identifier">backends</span><span class="special">::</span><span class="identifier">digit_base_2</span><span class="special">,</span> <span class="keyword">void</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int16_t</span><span class="special">,</span> <span class="special">-</span><span class="number">126</span><span class="special">,</span> <span class="number">127</span><span class="special">>,</span> <span class="identifier">et_off</span><span class="special">></span> <span class="identifier">float32_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">backends</span><span class="special">::</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="number">53</span><span class="special">,</span> <span class="identifier">backends</span><span class="special">::</span><span class="identifier">digit_base_2</span><span class="special">,</span> <span class="keyword">void</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int16_t</span><span class="special">,</span> <span class="special">-</span><span class="number">1022</span><span class="special">,</span> <span class="number">1023</span><span class="special">>,</span> <span class="identifier">et_off</span><span class="special">></span> <span class="identifier">float64_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">backends</span><span class="special">::</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="number">64</span><span class="special">,</span> <span class="identifier">backends</span><span class="special">::</span><span class="identifier">digit_base_2</span><span class="special">,</span> <span class="keyword">void</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int16_t</span><span class="special">,</span> <span class="special">-</span><span class="number">16382</span><span class="special">,</span> <span class="number">16383</span><span class="special">>,</span> <span class="identifier">et_off</span><span class="special">></span> <span class="identifier">float80_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">backends</span><span class="special">::</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="number">113</span><span class="special">,</span> <span class="identifier">backends</span><span class="special">::</span><span class="identifier">digit_base_2</span><span class="special">,</span> <span class="keyword">void</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int16_t</span><span class="special">,</span> <span class="special">-</span><span class="number">16382</span><span class="special">,</span> <span class="number">16383</span><span class="special">>,</span> <span class="identifier">et_off</span><span class="special">></span> <span class="identifier">float128_t</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+          The <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code> back-end
+          is used in conjunction with <code class="computeroutput"><span class="identifier">number</span></code>:
+          It acts as an entirely C++ (header only and dependency free) floating-point
+          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_bin_float</span></code> can
+          be used at fixed precision by specifying a non-zero <code class="computeroutput"><span class="identifier">Digits</span></code>
+          template parameter. The typedefs <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code>
+          and <code class="computeroutput"><span class="identifier">cpp_dec_float_100</span></code> provide
+          arithmetic types at 50 and 100 decimal digits precision respectively.
+        </p>
+<p>
+          Optionally, you can specify whether the precision is specified in decimal
+          digits or binary bits - for example to declare a <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>
+          with exactly the same precision as <code class="computeroutput"><span class="keyword">double</span></code>
+          one would use <code class="computeroutput"><span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="number">53</span><span class="special">,</span> <span class="identifier">digit_base_2</span><span class="special">></span> <span class="special">></span></code>.
+          The typedefs <code class="computeroutput"><span class="identifier">float32_t</span></code>,
+          <code class="computeroutput"><span class="identifier">float64_t</span></code>, <code class="computeroutput"><span class="identifier">float128_t</span></code> and <code class="computeroutput"><span class="identifier">float80_t</span></code>
+          provide software analogues of the IEEE single, double and quad float data
+          types, plus the intel-extended-double type respectively.
+        </p>
+<p>
+          Normally <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>
+          allocates no memory: all of the space required for its digits are allocated
+          directly within the class. As a result care should be taken not to use
+          the class with too high a digit count as stack space requirements can grow
+          out of control. If that represents a problem then providing an allocator
+          as the final template parameter causes <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>
+          to dynamically allocate the memory it needs: this significantly reduces
+          the size of <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>
+          and increases the viable upper limit on the number of digits at the expense
+          of performance. However, please bear in mind that arithmetic operations
+          rapidly become <span class="emphasis"><em>very</em></span> expensive as the digit count grows:
+          the current implementation really isn't optimized or designed for large
+          digit counts. Note that since the actual type of the objects allocated
+          is completely opaque, the suggestion would be to use an allocator with
+          <code class="computeroutput"><span class="keyword">void</span></code> <code class="computeroutput"><span class="identifier">value_type</span></code>,
+          for example: <code class="computeroutput"><span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="number">1000</span><span class="special">,</span> <span class="identifier">digit_base_10</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special"><</span><span class="keyword">void</span><span class="special">></span> <span class="special">></span> <span class="special">></span></code>.
+        </p>
+<p>
+          The final template parameters determine the type and range of the exponent:
+          parameter <code class="computeroutput"><span class="identifier">Exponent</span></code> can
+          be any signed integer type, but note that <code class="computeroutput"><span class="identifier">MinExponent</span></code>
+          and <code class="computeroutput"><span class="identifier">MaxExponent</span></code> can not
+          go right up to the limits of the <code class="computeroutput"><span class="identifier">Exponent</span></code>
+          type as there has to be a little extra headroom for internal calculations.
+          You will get a compile time error if if this is the case. In addition if
+          MinExponent or MaxExponent are zero, then the library will choose suitable
+          values that are as large as possible given the constraints of the type
+          and need for extra headhoom for internal calculations.
+        </p>
+<p>
+          There is full standard library and <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
+          support available for this type.
+        </p>
+<p>
+          Things you should know when using this type:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+              Default constructed <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>s
+              have a value of zero.
+            </li>
+<li class="listitem">
+              The radix of this type is 2, even when the precision is specified as
+              decimal digits.
+            </li>
+<li class="listitem">
+              The type supports both infinities and NaN's. An infinity is generated
+              whenever the result would overflow, and a NaN is generated for any
+              mathematically undefined operation.
+            </li>
+<li class="listitem">
+              There is a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code> specialisation for
+              this type.
+            </li>
+<li class="listitem">
+              Any <code class="computeroutput"><span class="identifier">number</span></code> instantiated
+              on this type, is convertible to any other <code class="computeroutput"><span class="identifier">number</span></code>
+              instantiated on this type - for example you can convert from <code class="computeroutput"><span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="number">50</span><span class="special">></span> <span class="special">></span></code> to <code class="computeroutput"><span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="identifier">SomeOtherValue</span><span class="special">></span> <span class="special">></span></code>.
+              Narrowing conversions round to nearest and are <code class="computeroutput"><span class="keyword">explicit</span></code>.
+            </li>
+<li class="listitem">
+              Conversion from a string results in a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span></code>
+              being thrown if the string can not be interpreted as a valid floating
+              point number.
+            </li>
+<li class="listitem">
+              All arithmetic operations are correctly rounded to nearest. String
+              comversions and the <code class="computeroutput"><span class="identifier">sqrt</span></code>
+              function are also correctly rounded, but transcendental functions (sin,
+              cos, pow, exp etc) are not.
+            </li>
+</ul></div>
+<h6>
+<a name="boost_multiprecision.tut.floats.cpp_bin_float.h0"></a>
+          <span class="phrase"><a name="boost_multiprecision.tut.floats.cpp_bin_float.cpp_bin_float_example"></a></span><a class="link" href="cpp_bin_float.html#boost_multiprecision.tut.floats.cpp_bin_float.cpp_bin_float_example">cpp_bin_float
+          example:</a>
+        </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_bin_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></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_bin_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"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">cpp_bin_float_100</span><span class="special">>::</span><span class="identifier">digits</span> <span class="special"><<</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"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">cpp_bin_float_100</span><span class="special">>::</span><span class="identifier">digits10</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// We can use any C++ std lib function, lets print all the digits as well:</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">cpp_bin_float_100</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">)</span>
+   <span class="special"><<</span> <span class="identifier">log</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span> <span class="special"><<</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">// We can also use any function from Boost.Math:</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</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">tgamma</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// These even work when the argument is an expression template:</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</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">tgamma</span><span class="special">(</span><span class="identifier">b</span> <span class="special">*</span> <span class="identifier">b</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// And since we have an extended exponent range we can generate some really large </span>
+<span class="comment">// numbers here (4.0238726007709377354370243e+2564):</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</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">tgamma</span><span class="special">(</span><span class="identifier">cpp_bin_float_100</span><span class="special">(</span><span class="number">1000</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../floats.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.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="cpp_dec_float.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/input_output.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/input_output.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,176 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Input Output</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../tut.html" title="Tutorial">
+<link rel="prev" href="limits/limits32.html" title="Numeric limits for 32-bit platform">
+<link rel="next" href="../ref.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="limits/limits32.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.input_output"></a><a class="link" href="input_output.html" title="Input Output">Input Output</a>
+</h3></div></div></div>
+<h5>
+<a name="boost_multiprecision.tut.input_output.h0"></a>
+        <span class="phrase"><a name="boost_multiprecision.tut.input_output.loopback_testing"></a></span><a class="link" href="input_output.html#boost_multiprecision.tut.input_output.loopback_testing">Loopback
+        testing</a>
+      </h5>
+<p>
+        or refers to writing out a value as a decimal digit string using <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iostream</span></code>,
+        usually to a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span></code>, and then reading the string
+        back in to another value, and confirming that the two values are identical.
+        A trivial example using <code class="computeroutput"><span class="keyword">float</span></code>
+        is:
+      </p>
+<pre class="programlisting"><span class="keyword">float</span> <span class="identifier">write</span><span class="special">;</span> <span class="comment">// Value to round-trip.</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">ss</span><span class="special">;</span>  <span class="comment">// Read and write std::stringstream.</span>
+<span class="identifier">ss</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">);</span>  <span class="comment">// Ensure all potentially significant bits are output.</span>
+<span class="identifier">ss</span><span class="special">.</span><span class="identifier">flags</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">fmtflags</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">scientific</span><span class="special">));</span> <span class="comment">// Use scientific format.</span>
+<span class="identifier">ss</span> <span class="special"><<</span> <span class="identifier">write</span><span class="special">;</span> <span class="comment">// Output to string.</span>
+<span class="keyword">float</span> <span class="identifier">read</span><span class="special">;</span>  <span class="comment">// Expected.</span>
+<span class="identifier">ss</span> <span class="special">>></span> <span class="identifier">read</span><span class="special">;</span> <span class="comment">// Read decimal digits string from stringstream.</span>
+<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="identifier">write</span><span class="special">,</span> <span class="identifier">read</span><span class="special">);</span> <span class="comment">// Should be the same.</span>
+</pre>
+<p>
+        and this can be run in a look for all possible values of a 32-bit float.
+        For other floating-point types <code class="computeroutput"><span class="identifier">T</span></code>,
+        including built-in <code class="computeroutput"><span class="keyword">double</span></code>, it
+        takes far too long to test all values, so a reasonable test strategy is to
+        use a large number of random values.
+      </p>
+<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">write</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">ss</span><span class="special">;</span>
+<span class="identifier">ss</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">);</span>  <span class="comment">// Ensure all potentially significant bits are output.</span>
+<span class="identifier">ss</span><span class="special">.</span><span class="identifier">flags</span><span class="special">(</span><span class="identifier">f</span><span class="special">);</span> <span class="comment">// Changed from default iostream format flags if desired.</span>
+<span class="identifier">ss</span> <span class="special"><<</span> <span class="identifier">write</span><span class="special">;</span> <span class="comment">// Output to stringstream.</span>
+
+<span class="identifier">T</span> <span class="identifier">read</span><span class="special">;</span>
+<span class="identifier">ss</span> <span class="special">>></span> <span class="identifier">read</span><span class="special">;</span> <span class="comment">// Get read using operator>> from stringstream.</span>
+<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="identifier">read</span><span class="special">,</span> <span class="identifier">write</span><span class="special">);</span>
+
+<span class="identifier">read</span> <span class="special">=</span> <span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">());</span> <span class="comment">// Get read by converting from decimal digits string representation of write.</span>
+<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="identifier">read</span><span class="special">,</span> <span class="identifier">write</span><span class="special">);</span>
+
+<span class="identifier">read</span> <span class="special">=</span> <span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">write</span><span class="special">.</span><span class="identifier">str</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="identifier">f</span><span class="special">));</span>  <span class="comment">// Get read using format specified when written.</span>
+<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="identifier">read</span><span class="special">,</span> <span class="identifier">write</span><span class="special">);</span>
+</pre>
+<p>
+        The test at <span class="inlinemediaobject"><img src="boost:/multiprecision.cpp_bin_float/libs/multiprecision/test/test_cpp_bin_float_io.cpp%20test_cpp_bin_float_io.cpp"></span>
+        allows any floating-point type to be using a wide range of fairly random
+        values. It also includes tests compared a collection of <span class="inlinemediaobject"><img src="boost:libs/multiprecision/test/string_data.ipp%20stringdata"></span>
+        test cases in a file.
+      </p>
+<h5>
+<a name="boost_multiprecision.tut.input_output.h1"></a>
+        <span class="phrase"><a name="boost_multiprecision.tut.input_output.comparing_with_output_using_buil"></a></span><a class="link" href="input_output.html#boost_multiprecision.tut.input_output.comparing_with_output_using_buil">Comparing
+        with output using Built-in types</a>
+      </h5>
+<p>
+        One can make some comparisons with the output of
+      </p>
+<pre class="programlisting"><span class="special"><</span><span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="number">53</span><span class="special">></span> <span class="special">></span>
+</pre>
+<p>
+        which has the same number of significant bits (53) as 64-bit double precision
+        floating-point.
+      </p>
+<p>
+        However, although most outputs are identical, but there are differences on
+        some platforms caused by the implementation-dependent behaviours allowed
+        by the C99 specification <a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf" target="_top">C99
+        ISO/IEC 9899:TC2</a>, incorporated by C++.
+      </p>
+<p>
+        "For e, E, f, F, g, and G conversions, if the number of significant
+        decimal digits is at most DECIMAL_DIG, then the result should be correctly
+        rounded. If the number of significant decimal digits is more than DECIMAL_DIG
+        but the source value is exactly representable with DECIMAL_DIG digits, then
+        the result should be an exact representation with trailing zeros. Otherwise,
+        the source value is bounded by two adjacent decimal strings L < U, both
+        having DECIMAL_DIG significant digits; the value of the resultant decimal
+        string D should satisfy L<= D <= U, with the extra stipulation that
+        the error should have a correct sign for the current rounding direction."
+      </p>
+<p>
+        So not only is correct rounding for the full number of digits not required,
+        but even if the <span class="bold"><strong>optional</strong></span> recomended practice
+        is followed, then the value of these last few digits is unspecified as long
+        as the value is within certain bounds.
+      </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>
+          Do not expect the output from different platforms to be <span class="bold"><strong>identical</strong></span>,
+          but <code class="computeroutput"><span class="identifier">cpp_dec_float</span></code>, <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code> (and other backends) outputs
+          should be correctly rounded to the number of digits requested by the set
+          precision and format.
+        </p></td></tr>
+</table></div>
+<h5>
+<a name="boost_multiprecision.tut.input_output.h2"></a>
+        <span class="phrase"><a name="boost_multiprecision.tut.input_output.macro_boost_mp_min_exponent_digi"></a></span><a class="link" href="input_output.html#boost_multiprecision.tut.input_output.macro_boost_mp_min_exponent_digi">Macro
+        BOOST_MP_MIN_EXPONENT_DIGITS</a>
+      </h5>
+<p>
+        <a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf" target="_top">C99
+        Standard</a> for format specifiers, 7.19.6 Formatted input/output functions
+        requires:
+      </p>
+<p>
+        "The exponent always contains at least two digits, and only as many
+        more digits as necessary to represent the exponent."
+      </p>
+<p>
+        So to conform to the C99 standard (incorporated by C++)
+      </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MP_MIN_EXPONENT_DIGITS</span> <span class="number">2</span>
+</pre>
+<p>
+        Confusingly, Microsoft (and MinGW) do not conform to this standard and provide
+        <span class="bold"><strong>at least three digits</strong></span>, for example <code class="computeroutput"><span class="number">1e+001</span></code>. So if you want the output to match
+        the format output using built-in floating-point types, or to make output
+        the same for all platforms like GCC and Clang, then you need to override
+        the above definition:
+      </p>
+<pre class="programlisting"><span class="preprocessor">#ifdef</span> <span class="identifier">MSC_VER</span>
+<span class="preprocessor">#  define</span> <span class="identifier">BOOST_MP_MIN_EXPONENT_DIGITS</span> <span class="number">3</span>
+<span class="preprocessor">#endif</span>
+</pre>
+<p>
+        Also useful to get the minimum exponent field width is
+      </p>
+<pre class="programlisting"><span class="preprocessor">#  define</span> <span class="identifier">BOOST_MP_MIN_EXPONENT_DIGITS</span> <span class="number">1</span>
+</pre>
+<p>
+        producing a compact output like <code class="computeroutput"><span class="number">2e+4</span></code>,
+        useful when conserving space is important.
+      </p>
+<p>
+        Larger values are also supported, for example, value 4 for <code class="computeroutput"><span class="number">2e+0004</span></code> which may be useful to ensure that
+        columns line up.
+      </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="limits/limits32.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/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,33 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>std::numeric_limits<> constants</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../implementation.html" title="Notes on Implementation of std::numeric_limits">
+<link rel="prev" href="../implementation.html" title="Notes on Implementation of std::numeric_limits">
+<link rel="next" href="constants/is_specialized.html" title="is_specialized">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../implementation.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../implementation.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="constants/is_specialized.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section"><div class="titlepage"><div><div><h5 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants"></a><a class="link" href="constants.html" title="std::numeric_limits<> constants">std::numeric_limits<>
+          constants</a>
+</h5></div></div></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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../implementation.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../implementation.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="constants/is_specialized.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/bound.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/bound.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_bounded</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="exact.html" title="is_exact">
+<link rel="next" href="modulo.html" title="is_modulo">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="exact.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="modulo.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.bound"></a><a class="link" href="bound.html" title="is_bounded">is_bounded</a>
+</h6></div></div></div>
+<p>
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_bounded</span> <span class="special">==</span>
+              <span class="keyword">true</span></code> if the set of values represented
+              by the type <code class="computeroutput"><span class="identifier">T</span></code> is finite.
+            </p>
+<p>
+              This is <code class="computeroutput"><span class="keyword">true</span></code> for all built-in
+              integer, fixed and floating-point types, and most multi-precision types.
+            </p>
+<p>
+              It is only <code class="computeroutput"><span class="keyword">false</span></code> for a
+              few <a href="http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic" target="_top">arbitrary
+              precision</a> types like <code class="computeroutput"><span class="identifier">cpp_int</span></code>.
+            </p>
+<p>
+              Rational and fixed-exponent representations are exact but not integer.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="exact.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="modulo.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/denorm_loss.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/denorm_loss.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>has_denorm_loss</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="round_style.html" title="round_style">
+<link rel="next" href="denorm_style.html" title="denorm_style">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="round_style.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="denorm_style.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.denorm_loss"></a><a class="link" href="denorm_loss.html" title="has_denorm_loss">has_denorm_loss</a>
+</h6></div></div></div>
+<p>
+              <code class="computeroutput"><span class="keyword">true</span></code> if a loss of precision
+              is detected as a denormalization
+              loss, rather than an inexact result.
+            </p>
+<p>
+              Always <code class="computeroutput"><span class="keyword">false</span></code> for integer
+              types.
+            </p>
+<p>
+              <code class="computeroutput"><span class="keyword">false</span></code> for all types which
+              do not have <code class="computeroutput"><span class="identifier">has_denorm</span></code>
+              == <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_present</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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="round_style.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="denorm_style.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/denorm_style.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/denorm_style.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,60 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>denorm_style</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="denorm_loss.html" title="has_denorm_loss">
+<link rel="next" href="tinyness.html" title="Tinyness before rounding">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="denorm_loss.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="tinyness.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.denorm_style"></a><a class="link" href="denorm_style.html" title="denorm_style">denorm_style</a>
+</h6></div></div></div>
+<p>
+              <a href="http://en.wikipedia.org/wiki/Denormal_number" target="_top">Denormalized
+              values</a> are representations with a variable number of exponent
+              bits that can permit gradual underflow, so that, if type T is <code class="computeroutput"><span class="keyword">double</span></code>.
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">denorm_min</span><span class="special">()</span> <span class="special"><</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">min</span><span class="special">()</span>
+</pre>
+<p>
+              A type may have any of the following <code class="computeroutput"><span class="keyword">enum</span>
+              <span class="identifier">float_denorm_style</span></code> values:
+            </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+                  <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_absent</span></code>, if it does not
+                  allow denormalized values. (Always used for all integer and exact
+                  types).
+                </li>
+<li class="listitem">
+                  <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_present</span></code>, if the floating-point
+                  type allows denormalized values.
+                </li>
+<li class="listitem">
+                  <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_indeterminate</span></code>, if indeterminate
+                  at compile time.
+                </li>
+</ul></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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="denorm_loss.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="tinyness.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/digits.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/digits.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,78 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>digits</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="radix.html" title="radix">
+<link rel="next" href="digits10.html" title="digits10">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="radix.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="digits10.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.digits"></a><a class="link" href="digits.html" title="digits">digits</a>
+</h6></div></div></div>
+<p>
+              The number of <code class="computeroutput"><span class="identifier">radix</span></code>
+              digits that be represented without change:
+            </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+                  for integer types, the number of <span class="bold"><strong>non-sign
+                  bits</strong></span> in the significand.
+                </li>
+<li class="listitem">
+                  for floating types, the number of <span class="bold"><strong>radix digits</strong></span>
+                  in the significand.
+                </li>
+</ul></div>
+<p>
+              The values include any implicit bit, so for example, for the ubiquious
+              <code class="computeroutput"><span class="keyword">double</span></code> using 64 bits (<a href="http://en.wikipedia.org/wiki/Double_precision_floating-point_format" target="_top">IEEE
+              binary64 </a>), <code class="computeroutput"><span class="identifier">digits</span></code>
+              == 53, even though there are only 52 actual bits of the significand
+              stored in the representation. The value of <code class="computeroutput"><span class="identifier">digits</span></code>
+              reflects the fact that there is one implicit bit which is always set
+              to 1.
+            </p>
+<p>
+              The Boost.Multiprecision binary types do not use an implicit bit, so
+              the <code class="computeroutput"><span class="identifier">digits</span></code> member reflects
+              exactly how many bits of precision were requested:
+            </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="number">53</span><span class="special">,</span> <span class="identifier">digit_base_2</span><span class="special">></span> <span class="special">></span>   <span class="identifier">float64</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_bin_float</span><span class="special"><</span><span class="number">113</span><span class="special">,</span> <span class="identifier">digit_base_2</span><span class="special">></span> <span class="special">></span>  <span class="identifier">float128</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">float64</span><span class="special">>::</span><span class="identifier">digits</span> <span class="special">==</span> <span class="number">53.</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">float128</span><span class="special">>::</span><span class="identifier">digits</span> <span class="special">==</span> <span class="number">113.</span>
+</pre>
+<p>
+              For the most common case of <code class="computeroutput"><span class="identifier">radix</span>
+              <span class="special">==</span> <span class="number">2</span></code>,
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span></code> is the number of bits in the
+              representation, not counting any sign bit.
+            </p>
+<p>
+              For a decimal integer type, when <code class="computeroutput"><span class="identifier">radix</span>
+              <span class="special">==</span> <span class="number">10</span></code>,
+              it is the number of decimal digits.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="radix.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="digits10.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/digits10.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/digits10.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,179 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>digits10</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="digits.html" title="digits">
+<link rel="next" href="max_digits10.html" title="max_digits10">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="digits.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="max_digits10.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.digits10"></a><a class="link" href="digits10.html" title="digits10">digits10</a>
+</h6></div></div></div>
+<p>
+              Constant <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span></code> returns the
+            </p>
+<p>
+              Number of decimal digits that can be represented without change or
+              loss.
+            </p>
+<p>
+              For example, <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span>
+              <span class="keyword">char</span><span class="special">>::</span><span class="identifier">digits10</span></code> is 2.
+            </p>
+<p>
+              This somewhat inscrutable definition means that an <code class="computeroutput"><span class="keyword">unsigned</span>
+              <span class="keyword">char</span></code> can hold decimal values
+              <code class="computeroutput"><span class="number">0.</span><span class="special">.</span><span class="number">99</span></code> without loss of precision or accuracy,
+              usually from truncation.
+            </p>
+<p>
+              <span class="bold"><strong>If it were 3</strong></span> it could hold 0..999,
+              but as we all know, an 8-bit <code class="computeroutput"><span class="keyword">unsigned</span>
+              <span class="keyword">char</span></code> can only hold 0..255, and
+              an attempt to store 256 or more will involve loss or change.
+            </p>
+<p>
+              In practice, one gets noisy warnings about truncation and the result
+              is zero.
+            </p>
+<p>
+              Somewhat confusingly, some 3-digit numbers can be stored, for example
+              255.
+            </p>
+<p>
+              For bounded integers, it is thus <span class="bold"><strong>one less</strong></span>
+              than number of decimal digits you need to display the biggest integer
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max</span><span class="special">()</span></code>.
+              This value can be used to predict the layout width required for
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
+  <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">short</span><span class="special">>::</span><span class="identifier">digits10</span> <span class="special">+</span><span class="number">1</span> <span class="special">+</span><span class="number">1</span><span class="special">)</span> <span class="comment">// digits10+1, and +1 for sign.</span>
+  <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showpos</span> <span class="special"><<</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">short</span><span class="special">>::</span><span class="identifier">max</span><span class="special">)()</span> <span class="comment">// +32767</span>
+  <span class="special"><<</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">setw</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">short</span><span class="special">>::</span><span class="identifier">digits10</span> <span class="special">+</span><span class="number">1</span> <span class="special">+</span><span class="number">1</span><span class="special">)</span>
+  <span class="special"><<</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">short</span><span class="special">>::</span><span class="identifier">min</span><span class="special">)()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>   <span class="comment">// -32767</span>
+</pre>
+<p>
+              For example, <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">short</span></code> is often stored in 16 bits, so
+              the maximum value is 0xFFFF or 65535.
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
+  <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">>::</span><span class="identifier">digits10</span> <span class="special">+</span><span class="number">1</span> <span class="special">+</span><span class="number">1</span><span class="special">)</span> <span class="comment">// digits10+1, and +1 for sign.</span>
+  <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showpos</span> <span class="special"><<</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">>::</span><span class="identifier">max</span><span class="special">)()</span> <span class="comment">//  65535</span>
+  <span class="special"><<</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">setw</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">>::</span><span class="identifier">digits10</span> <span class="special">+</span><span class="number">1</span> <span class="special">+</span><span class="number">1</span><span class="special">)</span> <span class="comment">// digits10+1, and +1 for sign.</span>
+  <span class="special"><<</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">>::</span><span class="identifier">min</span><span class="special">)()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>   <span class="comment">//      0</span>
+</pre>
+<p>
+              For bounded floating-point types, if we create a <code class="computeroutput"><span class="keyword">double</span></code>
+              with a value with <code class="computeroutput"><span class="identifier">digits10</span></code>
+              (usually 15) decimal digits, <code class="computeroutput"><span class="number">1e15</span></code>
+              or <code class="computeroutput"><span class="number">1000000000000000</span></code> :
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span>  <span class="number">1e15</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">dp1</span> <span class="special">=</span> <span class="identifier">d</span><span class="special">+</span><span class="number">1</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">d</span> <span class="special"><<</span> <span class="string">"\n"</span> <span class="special"><<</span> <span class="identifier">dp1</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// 1000000000000000</span>
+<span class="comment">// 1000000000000001</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span>  <span class="identifier">dp1</span> <span class="special">-</span> <span class="identifier">d</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1</span>
+</pre>
+<p>
+              and we can increment this value to <code class="computeroutput"><span class="number">1000000000000001</span></code>
+              as expected and show the difference too.
+            </p>
+<p>
+              But if we try to repeat this with more than <code class="computeroutput"><span class="identifier">digits10</span></code>
+              digits,
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span>  <span class="number">1e16</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">dp1</span> <span class="special">=</span> <span class="identifier">d</span><span class="special">+</span><span class="number">1</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">d</span> <span class="special"><<</span> <span class="string">"\n"</span> <span class="special"><<</span> <span class="identifier">dp1</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// 10000000000000000</span>
+<span class="comment">// 10000000000000000</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">dp1</span> <span class="special">-</span> <span class="identifier">d</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0 !!!</span>
+</pre>
+<p>
+              then we find that when we add one it has no effect, and display show
+              that there is loss of precision. See <a href="http://en.wikipedia.org/wiki/Loss_of_significance" target="_top">Loss
+              of significance or cancellation error</a>.
+            </p>
+<p>
+              So <code class="computeroutput"><span class="identifier">digits10</span></code> is the
+              number of decimal digits <span class="bold"><strong>guaranteed</strong></span>
+              to be correct.
+            </p>
+<p>
+              For example, 'round-tripping' for <code class="computeroutput"><span class="keyword">double</span></code>:
+            </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+                  If a decimal string with at most <code class="computeroutput"><span class="identifier">digits10</span></code>(
+                  == 15) significant decimal digits is converted to <code class="computeroutput"><span class="keyword">double</span></code> and then converted back to
+                  the same number of significant decimal digits, then the final string
+                  will match the original 15 decimal digit string.
+                </li>
+<li class="listitem">
+                  If a <code class="computeroutput"><span class="keyword">double</span></code> floating-point
+                  number is converted to a decimal string with at least 17 decimal
+                  digits and then converted back to <code class="computeroutput"><span class="keyword">double</span></code>,
+                  then the result will be binary indentical to the original <code class="computeroutput"><span class="keyword">double</span></code> value.
+                </li>
+</ul></div>
+<p>
+              For most purposes, you will much more likely want <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><>::</span><span class="identifier">max_digits10</span></code>,
+              the number of decimal digits that ensure that a change of one least
+              significant bit (ULP) produces a different decimal digits string.
+            </p>
+<p>
+              For nearly all floating-point types, <code class="computeroutput"><span class="identifier">max_digits10</span></code>
+              is <code class="computeroutput"><span class="identifier">digits10</span><span class="special">+</span><span class="number">2</span></code>, but you should use <code class="computeroutput"><span class="identifier">max_digits10</span></code>
+              where possible.
+            </p>
+<p>
+              If <code class="computeroutput"><span class="identifier">max_digits10</span></code> is
+              not available, you should using the <a href="http://www.cs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF" target="_top">Kahan
+              formula for floating-point type T</a>
+            </p>
+<pre class="programlisting"><span class="identifier">max_digits10</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span> <span class="special">*</span> <span class="number">3010U</span><span class="special">/</span><span class="number">10000U</span><span class="special">;</span>
+</pre>
+<p>
+              The factor is log<sub>10</sub>(2) = 0.3010 but must be evaluated at compile time
+              using only integers.
+            </p>
+<p>
+              (See also <a href="http://www.loria.fr/~zimmerma/mca/mca-cup-0.5.9.pdf" target="_top">Richard
+              P. Brent and Paul Zimmerman, Modern Computer Arithmetic</a> Equation
+              3.8 on page 116.).
+            </p>
+<p>
+              The extra two (or 3) least significant digits are 'noisy' and may be
+              junk, but if you want to 'round-trip' - printing a value out and reading
+              it back in - you must use <code class="computeroutput"><span class="identifier">os</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">)</span></code>. For at least one popular compiler,
+              you must also use <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">scientific</span></code>
+              format.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="digits.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="max_digits10.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/exact.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/exact.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,87 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_exact</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="signed.html" title="is_signed">
+<link rel="next" href="bound.html" title="is_bounded">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="signed.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="bound.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.exact"></a><a class="link" href="exact.html" title="is_exact">is_exact</a>
+</h6></div></div></div>
+<p>
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_exact</span> <span class="special">==</span>
+              <span class="keyword">true</span></code> if type T uses exact representations.
+            </p>
+<p>
+              This is defined as <code class="computeroutput"><span class="keyword">true</span></code>
+              for all integer types and <code class="computeroutput"><span class="keyword">false</span></code>
+              for floating-point types.
+            </p>
+<p>
+              <a href="http://stackoverflow.com/questions/14203654/stdnumeric-limitsis-exact-what-is-a-usable-definition" target="_top">A
+              usable definition</a> has been discussed.
+            </p>
+<p>
+              ISO/IEC 10967-1, Language independent arithmetic, noted by the C++
+              Standard defines
+            </p>
+<pre class="programlisting"><span class="identifier">A</span> <span class="identifier">floating</span> <span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">F</span> <span class="identifier">shall</span> <span class="identifier">be</span> <span class="identifier">a</span> <span class="identifier">finite</span> <span class="identifier">subset</span> <span class="identifier">of</span> <span class="special">[</span><span class="identifier">real</span><span class="special">].</span>
+</pre>
+<p>
+              The important practical distinction is that all integers (up to <code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code>)
+              can be stored exactly.
+            </p>
+<p>
+              Rational
+              types using two integer types are also exact.
+            </p>
+<p>
+              Floating-point types <span class="bold"><strong>cannot store all real values</strong></span>
+              (those in the set of ℜ) <span class="bold"><strong>exactly</strong></span>. For
+              example, 0.5 can be stored exactly in a binary floating-point, but
+              0.1 cannot. What is stored is the nearest representable real value,
+              that is, rounded to nearest.
+            </p>
+<p>
+              Fixed-point types (usually decimal) are also defined as exact, in that
+              they only store a <span class="bold"><strong>fixed precision</strong></span>,
+              so half cents or pennies (or less) cannot be stored. The results of
+              computations are rounded up or down, just like the result of integer
+              division stored as an integer result.
+            </p>
+<p>
+              There are number of proposals to <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3407.html" target="_top">add
+              Decimal Floating Point Support to C++</a>.
+            </p>
+<p>
+              <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2849.pdf" target="_top">Decimal
+              TR</a>.
+            </p>
+<p>
+              And also <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3352.html" target="_top">C++
+              Binary Fixed-Point Arithmetic</a>.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="signed.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="bound.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/infinity.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/infinity.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,57 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>infinity</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="is_specialized.html" title="is_specialized">
+<link rel="next" href="signed.html" title="is_signed">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="is_specialized.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="signed.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.infinity"></a><a class="link" href="infinity.html" title="infinity">infinity</a>
+</h6></div></div></div>
+<p>
+              For floating-point types, ∞ is defined whereever possible, but clearly
+              infinity is meaningless for <a href="http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic" target="_top">arbitrary
+              precision</a> arithmetic backends, and there is one floating point
+              type (GMP's <code class="computeroutput"><span class="identifier">mpf_t</span></code>,
+              see <a class="link" href="../../../floats/gmp_float.html" title="gmp_float">gmp_float</a>)
+              which has no notion of infinity or NaN at all.
+            </p>
+<p>
+              A typical test whether infinity is implemented is
+            </p>
+<pre class="programlisting"><span class="keyword">if</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">has_infinity</span><span class="special">)</span>
+<span class="special">{</span>
+   <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+              and using tests like this is strongly recommended to improve portability.
+            </p>
+<p>
+              If the backend is switched to a type that does not support infinity
+              then, without checks like this, there will be trouble.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_specialized.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="signed.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/is_bounded.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/is_bounded.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,44 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_bounded</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="modulo.html" title="is_modulo">
+<link rel="next" href="radix.html" title="radix">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="modulo.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="radix.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.is_bounded"></a><a class="link" href="is_bounded.html" title="is_bounded">is_bounded</a>
+</h6></div></div></div>
+<p>
+              Constant <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_bounded</span></code> is true if there is a
+              limit to values that can be stored.
+            </p>
+<p>
+              This is obviously true for all built-in integer, fixed and floating-point
+              types, but will be false for <a href="http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic" target="_top">arbitrary
+              precision</a> integer (for example <code class="computeroutput"><span class="identifier">cpp_int</span></code>)
+              and floating-point types because these expand until memory is exhausted.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="modulo.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="radix.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/is_specialized.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/is_specialized.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,65 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_specialized</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="next" href="infinity.html" title="infinity">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../constants.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="infinity.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.is_specialized"></a><a class="link" href="is_specialized.html" title="is_specialized">is_specialized</a>
+</h6></div></div></div>
+<p>
+              <code class="computeroutput"><span class="keyword">true</span></code> for all arithmetic
+              types (integer, floating and fixed-point) for which <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">numeric_limits</span></code>
+              is specialized.
+            </p>
+<p>
+              A typical test is
+            </p>
+<pre class="programlisting"><span class="keyword">if</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_specialized</span> <span class="special">==</span> <span class="keyword">false</span><span class="special">)</span>
+<span class="special">{</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"type "</span> <span class="special"><<</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span>  <span class="special"><<</span> <span class="string">" is not specialized for std::numeric_limits!"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// ...</span>
+<span class="special">}</span>
+</pre>
+<p>
+              Typically <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_specialized</span></code>
+              is <code class="computeroutput"><span class="keyword">true</span></code> for all <code class="computeroutput"><span class="identifier">T</span></code> where the compile-time constant
+              members of <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
+              are indeed known at compile time, and don't vary at runtime. For example
+              floating point types with runtime-variable precision such as <code class="computeroutput"><span class="identifier">mpfr_float</span></code> have no <code class="computeroutput"><span class="identifier">numeric_limits</span></code> specialization as
+              it would be impossible to define all the members at compile time. In
+              contrast the precision of a type such as <code class="computeroutput"><span class="identifier">mpfr_float_50</span></code>
+              is known at compile time, and so it <span class="emphasis"><em>does</em></span> have
+              a <code class="computeroutput"><span class="identifier">numeric_limits</span></code> specialization.
+            </p>
+<p>
+              Note that not all the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
+              member constants and functions are meaningful for all user-defined
+              types (UDT), such as the decimal and binary multiprecision types provided
+              here. More information on this is given in the sections below.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../constants.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="infinity.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/max_digits10.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/max_digits10.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,166 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>max_digits10</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="digits10.html" title="digits10">
+<link rel="next" href="round_style.html" title="round_style">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="digits10.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="round_style.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.max_digits10"></a><a class="link" href="max_digits10.html" title="max_digits10">max_digits10</a>
+</h6></div></div></div>
+<p>
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max_digits10</span></code> was added for floating-point
+              because <code class="computeroutput"><span class="identifier">digits10</span></code> decimal
+              digits are insufficient to show a least significant bit (ULP) change
+              giving puzzling displays like
+            </p>
+<pre class="programlisting"><span class="number">0.666666666666667</span> <span class="special">!=</span> <span class="number">0.666666666666667</span>
+</pre>
+<p>
+              from failure to 'round-trip', for example:
+            </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">write</span> <span class="special">=</span> <span class="number">2.</span><span class="special">/</span><span class="number">3</span><span class="special">;</span> <span class="comment">// Any arbitrary value that cannot be represented exactly.</span>
+<span class="keyword">double</span> <span class="identifier">read</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">s</span><span class="special">;</span>
+<span class="identifier">s</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">digits10</span><span class="special">);</span> <span class="comment">// or `float64_t` for 64-bit IEE754 double.</span>
+<span class="identifier">s</span> <span class="special"><<</span> <span class="identifier">write</span><span class="special">;</span>
+<span class="identifier">s</span> <span class="special">>></span> <span class="identifier">read</span><span class="special">;</span>
+<span class="keyword">if</span><span class="special">(</span><span class="identifier">read</span> <span class="special">!=</span> <span class="identifier">write</span><span class="special">)</span>
+<span class="special">{</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span>  <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">digits10</span><span class="special">)</span>
+    <span class="special"><<</span> <span class="identifier">read</span> <span class="special"><<</span> <span class="string">" != "</span> <span class="special"><<</span> <span class="identifier">write</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+              If you wish to ensure that a change of one least significant bit (ULP)
+              produces a different decimal digits string, then <code class="computeroutput"><span class="identifier">max_digits10</span></code>
+              is the precision to use.
+            </p>
+<p>
+              For example:
+            </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">pi</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">double_constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">pi</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 3.1415926535897931</span>
+</pre>
+<p>
+              will display π to the maximum possible precision using a <code class="computeroutput"><span class="keyword">double</span></code>.
+            </p>
+<p>
+              and similarly for a much higher precision type:
+            </p>
+<pre class="programlisting"><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="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_dec_float</span><span class="special"><</span><span class="number">50</span><span class="special">></span> <span class="special">></span> <span class="identifier">cpp_dec_float_50</span><span class="special">;</span> <span class="comment">// 50 decimal digits.</span>
+
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float_50</span><span class="special">;</span>
+
+<span class="identifier">cpp_dec_float_50</span> <span class="identifier">pi</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">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">>();</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">pi</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// 3.141592653589793238462643383279502884197169399375105820974944592307816406</span>
+</pre>
+<p>
+              For integer types, <code class="computeroutput"><span class="identifier">max_digits10</span></code>
+              is implementation-dependant, but is usually <code class="computeroutput"><span class="identifier">digits10</span>
+              <span class="special">+</span> <span class="number">2</span></code>.
+              This is the output field width required for the maximum value of the
+              type T <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max</span><span class="special">()</span></code>
+              including a sign and a space.
+            </p>
+<p>
+              So this will produce neat columns.
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">int</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">)</span> <span class="special">...</span>
+</pre>
+<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>
+                For Microsoft Visual Studio 2010, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">float</span><span class="special">>::</span><span class="identifier">max_digits10</span></code>
+                is wrongly defined as 8. It should be 9.
+              </p></td></tr>
+</table></div>
+<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>
+                For Microsoft Visual Studio, and default float format, a small range
+                of values approximately 0.0001 to 0.004, with exponent values of
+                3f2 to 3f6, are wrongly input by one least significant bit, probably
+                every third value of significand.
+              </p>
+<p>
+                A workaround is using scientific or exponential format <code class="computeroutput"><span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">scientific</span></code>.
+              </p>
+</td></tr>
+</table></div>
+<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>
+                BOOST_NO_NUMERIC_LIMITS_LOWEST is a suitable proxy to determine if
+                <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">float</span><span class="special">>::</span><span class="identifier">max_digits10</span></code> is implemented on
+                any platform. If <code class="computeroutput"><span class="identifier">max_digits10</span></code>
+                is not available, you should using the <a href="http://www.cs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF" target="_top">Kahan
+                formula for floating-point type T</a>. See above.
+              </p></td></tr>
+</table></div>
+<p>
+              For example, to be portable, including older platforms:
+            </p>
+<pre class="programlisting">  <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">T</span><span class="special">;</span> <span class="comment">// Any type: `double`, cpp_dec_float_50, bin_128bit_double_type ...</span>
+
+<span class="preprocessor">#if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_NO_NUMERIC_LIMITS_LOWEST</span><span class="special">)</span>
+   <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</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">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span> <span class="special">*</span> <span class="number">3010U</span><span class="special">/</span><span class="number">10000U</span><span class="special">);</span>
+<span class="preprocessor">#else</span>
+<span class="preprocessor">#  if</span> <span class="special">(</span><span class="identifier">_MSC_VER</span> <span class="special"><=</span> <span class="number">1600</span><span class="special">)</span> <span class="comment">// Correct wrong value for float.</span>
+     <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</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">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span> <span class="special">*</span> <span class="number">3010U</span><span class="special">/</span><span class="number">10000U</span><span class="special">);</span>
+<span class="preprocessor">#  else</span>
+     <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">);</span>
+<span class="preprocessor">#  endif</span>
+<span class="preprocessor">#endif</span>
+
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"std::cout.precision = "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+  <span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">1.2345678901234567889</span><span class="special">;</span>
+
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"x = "</span> <span class="special"><<</span> <span class="identifier">x</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">//</span>
+</pre>
+<p>
+              which should output:
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span> <span class="special">=</span> <span class="number">9</span>
+<span class="identifier">x</span> <span class="special">=</span> <span class="number">1.23456789</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="digits10.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="round_style.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/modulo.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/modulo.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,81 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_modulo</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="bound.html" title="is_bounded">
+<link rel="next" href="radix.html" title="radix">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="bound.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="radix.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.modulo"></a><a class="link" href="modulo.html" title="is_modulo">is_modulo</a>
+</h6></div></div></div>
+<p>
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_modulo</span></code> is defined as <code class="computeroutput"><span class="keyword">true</span></code> if adding two positive values of
+              type T can yield a result less than either value.
+            </p>
+<p>
+              <code class="computeroutput"><span class="identifier">is_modulo</span> <span class="special">==</span>
+              <span class="keyword">true</span></code> means that the type does
+              not overflow, but, for example, 'wraps around' to zero, when adding
+              one to the <code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code>
+              value.
+            </p>
+<p>
+              For most built-in integer types, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><>::</span><span class="identifier">is_modulo</span></code>
+              is <code class="computeroutput"><span class="keyword">true</span></code>.
+            </p>
+<p>
+              <code class="computeroutput"><span class="keyword">bool</span></code> is the only exception.
+            </p>
+<p>
+              The modulo behaviour is sometimes useful, often irrelevent (with 32
+              or more bit integers), but also can be unexpected, and sometimes undesired,
+              behaviour.
+            </p>
+<p>
+              Overflow of signed integers can be especially unexpected, possibly
+              causing change of sign.
+            </p>
+<p>
+              Boost.Multiprecision integer type <code class="computeroutput"><span class="identifier">cpp_int</span></code>
+              is not modulo because as an <a href="http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic" target="_top">arbitrary
+              precision</a> types, it expands to hold any value that the machine
+              resources permit.
+            </p>
+<p>
+              However fixed precision <a class="link" href="../../../ints/cpp_int.html" title="cpp_int">cpp_int</a>'s
+              may be modulo if they are unchecked (i.e. they behave just like built
+              in integers), but not if they are checked (overflow causes an exception
+              to be raised).
+            </p>
+<p>
+              Built-in and multi-precision floating-point types are normally not
+              modulo.
+            </p>
+<p>
+              Where possible, overflow is to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><>::</span><span class="identifier">infinity</span><span class="special">()</span></code>, provided <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><>::</span><span class="identifier">has_infinity</span>
+              <span class="special">==</span> <span class="keyword">true</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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bound.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="radix.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/radix.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/radix.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,38 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>radix</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="modulo.html" title="is_modulo">
+<link rel="next" href="digits.html" title="digits">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="modulo.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="digits.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.radix"></a><a class="link" href="radix.html" title="radix">radix</a>
+</h6></div></div></div>
+<p>
+              Constant <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">radix</span></code> returns either 2 (for built-in
+              and binary types) or 10 (for decimal types).
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="modulo.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="digits.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/round_style.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/round_style.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,81 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>round_style</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="max_digits10.html" title="max_digits10">
+<link rel="next" href="denorm_loss.html" title="has_denorm_loss">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="max_digits10.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="denorm_loss.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.round_style"></a><a class="link" href="round_style.html" title="round_style">round_style</a>
+</h6></div></div></div>
+<p>
+              The rounding style determines how the result of floating-point operations
+              is treated when the result cannot be <span class="bold"><strong>exactly
+              represented</strong></span> in the significand. Various rounding modes may
+              be provided:
+            </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+                  round to nearest up or down (default for floating-point types).
+                </li>
+<li class="listitem">
+                  round up (toward positive infinity).
+                </li>
+<li class="listitem">
+                  round down (toward negative infinity).
+                </li>
+<li class="listitem">
+                  round toward zero (integer types).
+                </li>
+<li class="listitem">
+                  no rounding (if decimal radix).
+                </li>
+<li class="listitem">
+                  rounding mode is not determinable.
+                </li>
+</ul></div>
+<p>
+              For integer types, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">round_style</span></code>
+              is always towards zero, so
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">round_style</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">round_to_zero</span><span class="special">;</span>
+</pre>
+<p>
+              A decimal type, <code class="computeroutput"><span class="identifier">cpp_dec_float</span></code>
+              rounds in no particular direction, which is to say it doesn't round
+              at all. And since there are several guard digits, it's not really the
+              same as truncation (round toward zero) either.
+            </p>
+<p>
+              For floating-point types, it is normal to round to nearest.
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">round_style</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">round_to_nearest</span><span class="special">;</span>
+</pre>
+<p>
+              See function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">round_error</span></code> for the maximum error
+              (in ULP) that rounding can cause.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="max_digits10.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="denorm_loss.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/signed.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/signed.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_signed</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="infinity.html" title="infinity">
+<link rel="next" href="exact.html" title="is_exact">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="infinity.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="exact.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.signed"></a><a class="link" href="signed.html" title="is_signed">is_signed</a>
+</h6></div></div></div>
+<p>
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_signed</span> <span class="special">==</span>
+              <span class="keyword">true</span></code> if the type <code class="computeroutput"><span class="identifier">T</span></code> is signed.
+            </p>
+<p>
+              For built-in binary types, the sign is held in a single bit, but for
+              other types (cpp_dec_float and cpp_bin_float) it may be a separate
+              storage element, usually <code class="computeroutput"><span class="keyword">bool</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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="infinity.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="exact.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/tinyness.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/constants/tinyness.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,69 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tinyness before rounding</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../constants.html" title="std::numeric_limits<> constants">
+<link rel="prev" href="denorm_style.html" title="denorm_style">
+<link rel="next" href="../functions.html" title="std::numeric_limits<> functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="denorm_style.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="../functions.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.constants.tinyness"></a><a class="link" href="tinyness.html" title="Tinyness before rounding">Tinyness
+            before rounding</a>
+</h6></div></div></div>
+<p>
+              <code class="computeroutput"><span class="keyword">bool</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">tinyness_before</span></code>
+            </p>
+<p>
+              <code class="computeroutput"><span class="keyword">true</span></code> if a type can determine
+              that a value is too small to be represent as a normalized value before
+              rounding it.
+            </p>
+<p>
+              Generally true for <code class="computeroutput"><span class="identifier">is_iec559</span></code>
+              floating-point built-in types, but false for integer types.
+            </p>
+<p>
+              Standard-compliant IEEE 754 floating-point implementations may detect
+              the floating-point underflow at three predefined moments:
+            </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+                  After computation of a result with absolute value smaller than
+                  <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">min</span><span class="special">()</span></code>,
+                  such implementation detects <span class="emphasis"><em>tinyness before rounding</em></span>
+                  (e.g. UltraSparc).
+                </li>
+<li class="listitem">
+                  After rounding of the result to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span></code>
+                  bits, if the result is tiny, such implementation detects <span class="emphasis"><em>tinyness
+                  after rounding</em></span> (e.g. SuperSparc).
+                </li>
+<li class="listitem">
+                  If the conversion of the rounded tiny result to subnormal form
+                  resulted in the loss of precision, such implementation detects
+                  <span class="emphasis"><em>denorm loss</em></span>.
+                </li>
+</ol></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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="denorm_style.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../constants.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="../functions.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,33 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>std::numeric_limits<> functions</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../implementation.html" title="Notes on Implementation of std::numeric_limits">
+<link rel="prev" href="constants/tinyness.html" title="Tinyness before rounding">
+<link rel="next" href="functions/max.html" title="max function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="constants/tinyness.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../implementation.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="functions/max.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section"><div class="titlepage"><div><div><h5 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.functions"></a><a class="link" href="functions.html" title="std::numeric_limits<> functions">std::numeric_limits<>
+          functions</a>
+</h5></div></div></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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="constants/tinyness.html"><img src="../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../implementation.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="functions/max.html"><img src="../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/NaN.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/NaN.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,160 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Not-A-Number NaN</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../functions.html" title="std::numeric_limits<> functions">
+<link rel="prev" href="infinity.html" title="Infinity - positive and negative">
+<link rel="next" href="../../version_32.html" title="32-bit version information used for tables below.">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="infinity.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="../../version_32.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.functions.NaN"></a><a class="link" href="NaN.html" title="Not-A-Number NaN">Not-A-Number
+            NaN</a>
+</h6></div></div></div>
+<h5>
+<a name="boost_multiprecision.tut.limits.implementation.functions.NaN.h0"></a>
+              <span class="phrase"><a name="boost_multiprecision.tut.limits.implementation.functions.NaN.quiet_nan"></a></span><a class="link" href="NaN.html#boost_multiprecision.tut.limits.implementation.functions.NaN.quiet_nan">Quiet_NaN</a>
+            </h5>
+<p>
+              For floating-point types only, for which <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">has_quiet_NaN</span>
+              <span class="special">==</span> <span class="keyword">true</span></code>,
+              function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">()</span></code>
+              provides an implementation-defined representation for NaN.
+            </p>
+<p>
+              NaNs are values
+              to indicate that the result of an assignment or computation is meaningless.
+              A typical example is <code class="computeroutput"><span class="number">0</span><span class="special">/</span><span class="number">0</span></code> but
+              there are many others.
+            </p>
+<p>
+              NaNs may also be used, to represent missing values: for example, these
+              could, by convention, be ignored in calculations of statistics like
+              means.
+            </p>
+<p>
+              Many of the problems with a representation for Not-A-Number
+              has hampered portable use, similar to those with infinity.
+            </p>
+<p>
+              NaN can be used with binary multiprecision types like <code class="computeroutput"><span class="identifier">bin_float128</span></code>:
+            </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">bin_float128</span><span class="special">;</span>
+
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">bin_float128</span><span class="special">>::</span><span class="identifier">has_quiet_NaN</span> <span class="special">==</span> <span class="keyword">true</span><span class="special">)</span>
+<span class="special">{</span>
+  <span class="identifier">bin_float128</span> <span class="identifier">tolerance</span> <span class="special">=</span>  <span class="number">3</span> <span class="special">*</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">bin_float128</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">();</span>
+
+  <span class="identifier">bin_float128</span> <span class="identifier">NaN</span> <span class="special">=</span>  <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">bin_float128</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">();</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"bin_float128 NaN is "</span>  <span class="special"><<</span> <span class="identifier">NaN</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">//   bin_float128 NaN is nan</span>
+
+  <span class="identifier">bin_float128</span> <span class="identifier">expected</span> <span class="special">=</span> <span class="identifier">NaN</span><span class="special">;</span>
+  <span class="identifier">bin_float128</span> <span class="identifier">calculated</span> <span class="special">=</span> <span class="number">2</span> <span class="special">*</span> <span class="identifier">NaN</span><span class="special">;</span>
+  <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">test_tools</span><span class="special">::</span><span class="identifier">check_is_close</span><span class="special">;</span>
+
+  <span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">check_is_close</span><span class="special">(</span><span class="identifier">expected</span><span class="special">,</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span>  <span class="identifier">std</span><span class="special">::</span><span class="identifier">boolalpha</span> <span class="special"><<</span> <span class="identifier">r</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>  <span class="comment">// false, as expected because all comparisons with NaNs are false.</span>
+
+  <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">check_is_close</span><span class="special">(</span><span class="identifier">expected</span><span class="special">,</span> <span class="identifier">calculated</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span>  <span class="identifier">std</span><span class="special">::</span><span class="identifier">boolalpha</span> <span class="special"><<</span> <span class="identifier">r</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>  <span class="comment">// false, as expected because all comparisons with NaNs are false.</span>
+<span class="special">}</span>
+<span class="keyword">else</span>
+<span class="special">{</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Type "</span> <span class="special"><<</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">bin_float128</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" does not have NaNs!"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+              But using Boost.Math and suitable facets can permit portable use of
+              both NaNs and positive and negative infinity.
+            </p>
+<p>
+              See boost:/libs/math/example/nonfinite_facet_sstream.cpp
+              and we also need
+            </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">special_functions</span><span class="special">/</span><span class="identifier">nonfinite_num_facets</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+              Then we can equally well use a multiprecision type bin_float128:
+            </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">bin_float128</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">bin_float128</span> <span class="identifier">T</span><span class="special">;</span>
+
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">nonfinite_num_put</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">nonfinite_num_get</span><span class="special">;</span>
+<span class="special">{</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">old_locale</span><span class="special">;</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">tmp_locale</span><span class="special">(</span><span class="identifier">old_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_put</span><span class="special"><</span><span class="keyword">char</span><span class="special">>);</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">new_locale</span><span class="special">(</span><span class="identifier">tmp_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_get</span><span class="special"><</span><span class="keyword">char</span><span class="special">>);</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">ss</span><span class="special">;</span>
+  <span class="identifier">ss</span><span class="special">.</span><span class="identifier">imbue</span><span class="special">(</span><span class="identifier">new_locale</span><span class="special">);</span>
+  <span class="identifier">T</span> <span class="identifier">inf</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">();</span>
+  <span class="identifier">ss</span> <span class="special"><<</span> <span class="identifier">inf</span><span class="special">;</span> <span class="comment">// Write out.</span>
+  <span class="identifier">assert</span><span class="special">(</span><span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span> <span class="special">==</span> <span class="string">"inf"</span><span class="special">);</span>
+  <span class="identifier">T</span> <span class="identifier">r</span><span class="special">;</span>
+  <span class="identifier">ss</span> <span class="special">>></span> <span class="identifier">r</span><span class="special">;</span> <span class="comment">// Read back in.</span>
+  <span class="identifier">assert</span><span class="special">(</span><span class="identifier">inf</span> <span class="special">==</span> <span class="identifier">r</span><span class="special">);</span> <span class="comment">// Confirms that the floating-point values really are identical.</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"infinity output was "</span> <span class="special"><<</span> <span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span> <span class="special"><<</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"><<</span> <span class="string">"infinity input was "</span> <span class="special"><<</span> <span class="identifier">r</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<pre class="programlisting"><span class="identifier">infinity</span> <span class="identifier">output</span> <span class="identifier">was</span> <span class="identifier">inf</span>
+<span class="identifier">infinity</span> <span class="identifier">input</span> <span class="identifier">was</span> <span class="identifier">inf</span>
+</pre>
+<p>
+              Similarly we can do the same with NaN (except that we cannot use <code class="computeroutput"><span class="identifier">assert</span></code>)
+            </p>
+<pre class="programlisting"><span class="special">{</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">old_locale</span><span class="special">;</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">tmp_locale</span><span class="special">(</span><span class="identifier">old_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_put</span><span class="special"><</span><span class="keyword">char</span><span class="special">>);</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">new_locale</span><span class="special">(</span><span class="identifier">tmp_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_get</span><span class="special"><</span><span class="keyword">char</span><span class="special">>);</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">ss</span><span class="special">;</span>
+  <span class="identifier">ss</span><span class="special">.</span><span class="identifier">imbue</span><span class="special">(</span><span class="identifier">new_locale</span><span class="special">);</span>
+  <span class="identifier">T</span> <span class="identifier">n</span><span class="special">;</span>
+  <span class="identifier">T</span> <span class="identifier">NaN</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">quiet_NaN</span><span class="special">();</span>
+  <span class="identifier">ss</span> <span class="special"><<</span> <span class="identifier">NaN</span><span class="special">;</span> <span class="comment">// Write out.</span>
+  <span class="identifier">assert</span><span class="special">(</span><span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span> <span class="special">==</span> <span class="string">"nan"</span><span class="special">);</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"NaN output was "</span> <span class="special"><<</span> <span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+  <span class="identifier">ss</span> <span class="special">>></span> <span class="identifier">n</span><span class="special">;</span> <span class="comment">// Read back in.</span>
+  <span class="identifier">assert</span><span class="special">(</span><span class="identifier">NaN</span> <span class="special">==</span> <span class="identifier">n</span><span class="special">);</span> <span class="comment">// Confirms that the floating-point values really are identical.</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"NaN input was "</span> <span class="special"><<</span> <span class="identifier">n</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+              NaN output was nan NaN input was nan
+            </p>
+<h5>
+<a name="boost_multiprecision.tut.limits.implementation.functions.NaN.h1"></a>
+              <span class="phrase"><a name="boost_multiprecision.tut.limits.implementation.functions.NaN.signaling_nan"></a></span><a class="link" href="NaN.html#boost_multiprecision.tut.limits.implementation.functions.NaN.signaling_nan">Signaling
+              NaN</a>
+            </h5>
+<p>
+              For floating-point types only, for which <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">has_signaling_NaN</span>
+              <span class="special">==</span> <span class="keyword">true</span></code>,
+              function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">signaling_NaN</span><span class="special">()</span></code>
+              provides an implementation-defined representation for NaN that causes
+              a hardware trap. However these are not found in any popular processor
+              or platforms, if at all, and may be ignored for all practical purposes.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="infinity.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="../../version_32.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/denorm_min.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/denorm_min.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,65 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>denorm_min function</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../functions.html" title="std::numeric_limits<> functions">
+<link rel="prev" href="min.html" title="min function">
+<link rel="next" href="round_error.html" title="round_error">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="min.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="round_error.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.functions.denorm_min"></a><a class="link" href="denorm_min.html" title="denorm_min function">denorm_min
+            function</a>
+</h6></div></div></div>
+<p>
+              Function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">denorm_min</span><span class="special">()</span></code>
+              returns the smallest <a href="http://en.wikipedia.org/wiki/Denormal_number" target="_top">denormalized
+              value</a>, provided
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">has_denorm</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_present</span>
+</pre>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">);</span>
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">has_denorm</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_present</span><span class="special">)</span>
+<span class="special">{</span>
+  <span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">denorm_min</span><span class="special">();</span>
+
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">d</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">//  4.9406564584124654e-324</span>
+
+    <span class="keyword">int</span> <span class="identifier">exponent</span><span class="special">;</span>
+
+    <span class="keyword">double</span> <span class="identifier">significand</span> <span class="special">=</span> <span class="identifier">frexp</span><span class="special">(</span><span class="identifier">d</span><span class="special">,</span> <span class="special">&</span><span class="identifier">exponent</span><span class="special">);</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"exponent = "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span> <span class="special"><<</span> <span class="identifier">exponent</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">//  fffffbcf</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"significand = "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span> <span class="special"><<</span> <span class="identifier">significand</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.50000000000000000</span>
+<span class="special">}</span>
+<span class="keyword">else</span>
+<span class="special">{</span>
+  <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"No denormalization. "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+              The exponent is effectively reduced from -308 to -324 (though it remains
+              encoded as zero and leading zeros appear in the significand, thereby
+              losing precision until the significand reaches zero).
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="min.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="round_error.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/epsilon.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/epsilon.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,197 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>epsilon</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../functions.html" title="std::numeric_limits<> functions">
+<link rel="prev" href="round_error.html" title="round_error">
+<link rel="next" href="infinity.html" title="Infinity - positive and negative">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="round_error.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="infinity.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.functions.epsilon"></a><a class="link" href="epsilon.html" title="epsilon">epsilon</a>
+</h6></div></div></div>
+<p>
+              Function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">()</span></code>
+              is meaningful only for non-integral types.
+            </p>
+<p>
+              It returns the difference between <code class="computeroutput"><span class="number">1.0</span></code>
+              and the next value representable by the floating-point type T. So it
+              is a one least-significant-bit change in this floating-point value.
+            </p>
+<p>
+              For <code class="computeroutput"><span class="keyword">double</span></code> (<code class="computeroutput"><span class="identifier">float_64t</span></code>) it is <code class="computeroutput"><span class="number">2.2204460492503131e-016</span></code>
+              showing all possibly significant 17 decimal digits.
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">eps</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">();</span>
+<span class="keyword">double</span> <span class="identifier">dpeps</span> <span class="special">=</span> <span class="identifier">d</span><span class="special">+</span><span class="identifier">eps</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showpoint</span> <span class="comment">// Ensure all trailing zeros are shown.</span>
+  <span class="special"><<</span> <span class="identifier">d</span> <span class="special"><<</span> <span class="string">"\n"</span>           <span class="comment">// 1.0000000000000000</span>
+  <span class="special"><<</span> <span class="identifier">dpeps</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 2.2204460492503131e-016</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">dpeps</span> <span class="special">-</span> <span class="identifier">d</span>   <span class="comment">// 1.0000000000000002</span>
+  <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+              We can explicitly increment by one bit using the function <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">float_next</span><span class="special">()</span></code>
+              and the result is the same as adding <code class="computeroutput"><span class="identifier">epsilon</span></code>.
+            </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">one</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">nad</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">float_next</span><span class="special">(</span><span class="identifier">one</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">nad</span> <span class="special"><<</span> <span class="string">"\n"</span>  <span class="comment">//  1.0000000000000002</span>
+  <span class="special"><<</span> <span class="identifier">nad</span> <span class="special">-</span> <span class="identifier">one</span> <span class="comment">// 2.2204460492503131e-016</span>
+  <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+              Adding any smaller value, like half <code class="computeroutput"><span class="identifier">epsilon</span></code>,
+              will have no effect on this value.
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">max_digits10</span><span class="special">);</span>
+<span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">eps</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">();</span>
+<span class="keyword">double</span> <span class="identifier">dpeps</span> <span class="special">=</span> <span class="identifier">d</span> <span class="special">+</span> <span class="identifier">eps</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"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showpoint</span> <span class="comment">// Ensure all trailing zeros are shown.</span>
+  <span class="special"><<</span> <span class="identifier">dpeps</span> <span class="special"><<</span> <span class="string">"\n"</span>       <span class="comment">// 1.0000000000000000</span>
+  <span class="special"><<</span> <span class="identifier">eps</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">endl</span><span class="special">;</span> <span class="comment">// 1.1102230246251565e-016</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">dpeps</span> <span class="special">-</span> <span class="identifier">d</span>   <span class="comment">// 0.00000000000000000</span>
+  <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+              So this cancellation error leaves the values equal, despite adding
+              half <code class="computeroutput"><span class="identifier">epsilon</span></code>.
+            </p>
+<p>
+              To achieve greater portability over platform and floating-point type,
+              Boost.Math and Boost.Multiprecion provide a package of functions that
+              'do something sensible' if the standard <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
+              is not available. To use these <code class="computeroutput"><span class="preprocessor">#include</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">tools</span><span class="special">/</span><span class="identifier">precision</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>.
+            </p>
+<p>
+              A tolerance might be defined using this version of epsilon thus:
+            </p>
+<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">tolerance</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">tools</span><span class="special">::</span><span class="identifier">epsilon</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>()</span> <span class="special">*</span> <span class="number">2</span><span class="special">;</span>
+</pre>
+<h5>
+<a name="boost_multiprecision.tut.limits.implementation.functions.epsilon.h0"></a>
+              <span class="phrase"><a name="boost_multiprecision.tut.limits.implementation.functions.epsilon.tolerance_for_floating_point_com"></a></span><a class="link" href="epsilon.html#boost_multiprecision.tut.limits.implementation.functions.epsilon.tolerance_for_floating_point_com">Tolerance
+              for Floating-point Comparisons</a>
+            </h5>
+<p>
+              <code class="computeroutput"><span class="identifier">epsilon</span></code> is very useful
+              to compute a tolerance when comparing floating-point values, a much
+              more difficult task than is commonly imagined.
+            </p>
+<p>
+              For more information you probably want (but still need) see <a href="http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html" target="_top">What
+              Every Computer Scientist Should Know About Floating-Point Arithmetic</a>
+            </p>
+<p>
+              The naive test comparing the absolute difference between two values
+              and a tolerance does not give useful results if the values are too
+              large or too small.
+            </p>
+<p>
+              So Boost.Test uses an algorithm first devised by Knuth for reliably
+              checking if floating-point values are close enough.
+            </p>
+<p>
+              See Donald. E. Knuth. The art of computer programming (vol II). Copyright
+              1998 Addison-Wesley Longman, Inc., 0-201-89684-2. Addison-Wesley Professional;
+              3rd edition.
+            </p>
+<p>
+              See also:
+            </p>
+<p>
+              <a href="http://adtmag.com/articles/2000/03/15/comparing-floats-how-to-determine-if-floating-quantities-are-close-enough-once-a-tolerance-has-been.aspx" target="_top">Alberto
+              Squassia, Comparing floats</a>
+            </p>
+<p>
+              <a href="http://adtmag.com/articles/2000/03/16/comparing-floats-how-to-determine-if-floating-quantities-are-close-enough-once-a-tolerance-has-been.aspx" target="_top">Alberto
+              Squassia, Comparing floats code</a>
+            </p>
+<p>
+              <a href="../../../../../../../../../libs/test/doc/html/utf/testing-tools/floating_point_comparison.html" target="_top">floating-point
+              comparison</a>.
+            </p>
+<p>
+              For example, if we want a tolerance that might suit about 9 arithmetical
+              operations, say sqrt(9) = 3, we could define:
+            </p>
+<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">tolerance</span> <span class="special">=</span>  <span class="number">3</span> <span class="special">*</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">();</span>
+</pre>
+<p>
+              This is very widely used in Boost.Math testing with Boost.Test's macro
+              <code class="computeroutput"><span class="identifier">BOOST_CHECK_CLOSE_FRACTION</span></code>
+            </p>
+<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">expected</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span>
+<span class="identifier">T</span> <span class="identifier">calculated</span> <span class="special">=</span> <span class="number">1.0</span> <span class="special">+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">();</span>
+
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">test_tools</span><span class="special">::</span><span class="identifier">check_is_close</span><span class="special">;</span>
+
+<span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">check_is_close</span><span class="special">(</span><span class="identifier">expected</span><span class="special">,</span> <span class="identifier">calculated</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span>  <span class="identifier">std</span><span class="special">::</span><span class="identifier">boolalpha</span> <span class="special"><<</span> <span class="identifier">r</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>  <span class="comment">// true</span>
+</pre>
+<p>
+              If using Boost.Test, then call the macro version:
+            </p>
+<pre class="programlisting"><span class="identifier">BOOST_CHECK_CLOSE_FRACTION</span><span class="special">(</span><span class="identifier">expected</span><span class="special">,</span> <span class="identifier">calculated</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span></pre>
+<p>
+              used thus:
+            </p>
+<pre class="programlisting"><span class="identifier">BOOST_CHECK_CLOSE_FRACTION</span><span class="special">(</span><span class="identifier">expected</span><span class="special">,</span> <span class="identifier">calculated</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
+</pre>
+<p>
+              (There is also a version using tolerance as a percentage rather than
+              a fraction).
+            </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">number</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">et_off</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_dec_float</span><span class="special"><</span><span class="number">50</span><span class="special">>,</span> <span class="identifier">et_off</span> <span class="special">></span> <span class="identifier">cpp_dec_float_50</span><span class="special">;</span> <span class="comment">// 50 decimal digits.</span>
+</pre>
+<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>
+                that Boost.Test does not yet allow floating-point comparisons with
+                expression templates on, so the default expression template parameter
+                has been replaced by <code class="computeroutput"><span class="identifier">et_off</span></code>.
+              </p></td></tr>
+</table></div>
+<pre class="programlisting"><span class="identifier">cpp_dec_float_50</span> <span class="identifier">tolerance</span> <span class="special">=</span>  <span class="number">3</span> <span class="special">*</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">();</span>
+<span class="identifier">cpp_dec_float_50</span> <span class="identifier">expected</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">constants</span><span class="special">::</span><span class="identifier">two_pi</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">>();</span>
+<span class="identifier">cpp_dec_float_50</span> <span class="identifier">calculated</span> <span class="special">=</span> <span class="number">2</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">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special"><</span><span class="identifier">cpp_dec_float_50</span><span class="special">>();</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">test_tools</span><span class="special">::</span><span class="identifier">check_is_close</span><span class="special">;</span>
+
+<span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">check_is_close</span><span class="special">(</span><span class="identifier">expected</span><span class="special">,</span> <span class="identifier">calculated</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span>  <span class="identifier">std</span><span class="special">::</span><span class="identifier">boolalpha</span> <span class="special"><<</span> <span class="identifier">r</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>  <span class="comment">// true</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="round_error.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="infinity.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/infinity.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/infinity.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,69 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Infinity - positive and negative</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../functions.html" title="std::numeric_limits<> functions">
+<link rel="prev" href="epsilon.html" title="epsilon">
+<link rel="next" href="NaN.html" title="Not-A-Number NaN">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="epsilon.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="NaN.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.functions.infinity"></a><a class="link" href="infinity.html" title="Infinity - positive and negative">Infinity
+            - positive and negative</a>
+</h6></div></div></div>
+<p>
+              For floating-point types only, for which <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">has_infinity</span>
+              <span class="special">==</span> <span class="keyword">true</span></code>,
+              function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">infinity</span><span class="special">()</span></code>
+              provides an implementation-defined representation for ∞.
+            </p>
+<p>
+              The 'representation' is a particular bit pattern reserved for infinity.
+              For IEEE754 system (for which <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_iec559</span>
+              <span class="special">==</span> <span class="keyword">true</span></code>)
+            </p>
+<p>
+              <a href="http://en.wikipedia.org/wiki/IEEE_754-1985#Positive_and_negative_infinity" target="_top">positive
+              and negative infinity</a> are assigned bit patterns for all defined
+              floating-point types.
+            </p>
+<p>
+              Confusingly, the string resulting from outputting this representation,
+              is also implementation-defined. And the string that can be input to
+              generate the representation is also implementation-defined.
+            </p>
+<p>
+              For example, the output is <code class="computeroutput"><span class="number">1.</span><span class="special">#</span><span class="identifier">INF</span></code>
+              on Microsoft systems, but <code class="computeroutput"><span class="identifier">inf</span></code>
+              on some *nix platforms.
+            </p>
+<p>
+              This implementation-defined-ness has hampered use of infinity (and
+              NaNs) but Boost.Math and Boost.Multiprecision work hard to provide
+              a sensible representation for <span class="bold"><strong>all</strong></span>
+              floating-point types, not just the built-in types, which with the use
+              of suitable facets to define the input and output strings, makes it
+              possible to use these useful features portably and including Boost.Serialization.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="epsilon.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="NaN.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/lowest.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/lowest.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>lowest function</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../functions.html" title="std::numeric_limits<> functions">
+<link rel="prev" href="max.html" title="max function">
+<link rel="next" href="min.html" title="min function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="max.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="min.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.functions.lowest"></a><a class="link" href="lowest.html" title="lowest function">lowest
+            function</a>
+</h6></div></div></div>
+<p>
+              Since C++11: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">lowest</span><span class="special">()</span></code>
+              is
+            </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+                  For integral types, the same as function <code class="computeroutput"><span class="identifier">min</span><span class="special">()</span></code>.
+                </li>
+<li class="listitem">
+                  For floating-point types, generally the negative of <code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code>
+                  (but implementation-dependent).
+                </li>
+</ul></div>
+<pre class="programlisting"><span class="special">-(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">max</span><span class="special">)()</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">lowest</span><span class="special">();</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="max.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="min.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/max.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/max.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>max function</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../functions.html" title="std::numeric_limits<> functions">
+<link rel="prev" href="../functions.html" title="std::numeric_limits<> functions">
+<link rel="next" href="lowest.html" title="lowest function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="../functions.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="lowest.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.functions.max"></a><a class="link" href="max.html" title="max function">max
+            function</a>
+</h6></div></div></div>
+<p>
+              Function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max</span><span class="special">()</span></code>
+              returns the largest finite value that can be represented by the type
+              T. If there is no such value (and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">bounded</span></code>
+              is <code class="computeroutput"><span class="keyword">false</span></code>) then returns
+              <code class="computeroutput"><span class="identifier">T</span><span class="special">()</span></code>.
+            </p>
+<p>
+              For built-in types there is usually a corresponding MACRO value TYPE_MAX,
+              where TYPE is CHAR, INT, FLOAT etc.
+            </p>
+<p>
+              Other types, including those provided by a typedef, for example <code class="computeroutput"><span class="identifier">INT64_T_MAX</span></code> for <code class="computeroutput"><span class="identifier">int64_t</span></code>,
+              may provide a macro definition.
+            </p>
+<p>
+              To cater for situations where no <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
+              specialization is available (for example because the precision of the
+              type varies at runtime), packaged versions of this (and other functions)
+              are provided using
+            </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">precision</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="identifier">T</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">tools</span><span class="special">::</span><span class="identifier">max_value</span><span class="special"><</span><span class="identifier">T</span><span class="special">>();</span>
+</pre>
+<p>
+              Of course, these simply use <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max</span><span class="special">()</span></code> if available, but otherwise 'do something
+              sensible'.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../functions.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="lowest.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/min.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/min.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>min function</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../functions.html" title="std::numeric_limits<> functions">
+<link rel="prev" href="lowest.html" title="lowest function">
+<link rel="next" href="denorm_min.html" title="denorm_min function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="lowest.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="denorm_min.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.functions.min"></a><a class="link" href="min.html" title="min function">min
+            function</a>
+</h6></div></div></div>
+<p>
+              Function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">min</span><span class="special">()</span></code>
+              returns the minimum finite value that can be represented by the type
+              T.
+            </p>
+<p>
+              For built-in types there is usually a corresponding MACRO value TYPE_MIN,
+              where TYPE is CHAR, INT, FLOAT etc.
+            </p>
+<p>
+              Other types, including those provided by a typedef, for example <code class="computeroutput"><span class="identifier">INT64_T_MIN</span></code> for <code class="computeroutput"><span class="identifier">int64_t</span></code>,
+              may provide a macro definition.
+            </p>
+<p>
+              For floating-point types, it is more fully defined as the <span class="emphasis"><em>minimum
+              positive normalized value</em></span>.
+            </p>
+<p>
+              See <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">denorm_min</span><span class="special">()</span></code>
+              for the smallest denormalized value, provided
+            </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">has_denorm</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_present</span>
+</pre>
+<p>
+              To cater for situations where no <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
+              specialization is available (for example because the precision of the
+              type varies at runtime), packaged versions of this (and other functions)
+              are provided using
+            </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">precision</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="identifier">T</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">tools</span><span class="special">::</span><span class="identifier">min_value</span><span class="special"><</span><span class="identifier">T</span><span class="special">>();</span>
+</pre>
+<p>
+              Of course, these simply use <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">min</span><span class="special">()</span></code> if available.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lowest.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="denorm_min.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/round_error.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/doc/html/boost_multiprecision/tut/limits/implementation/functions/round_error.html	2013-10-20 12:57:43 EDT (Sun, 20 Oct 2013)	(r86373)
@@ -0,0 +1,98 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>round_error</title>
+<link rel="stylesheet" href="../../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../../index.html" title="Chapter 1. Boost.Multiprecision">
+<link rel="up" href="../functions.html" title="std::numeric_limits<> functions">
+<link rel="prev" href="denorm_min.html" title="denorm_min function">
+<link rel="next" href="epsilon.html" title="epsilon">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="spirit-nav">
+<a accesskey="p" href="denorm_min.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="epsilon.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="boost_multiprecision.tut.limits.implementation.functions.round_error"></a><a class="link" href="round_error.html" title="round_error">round_error</a>
+</h6></div></div></div>
+<p>
+              Function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">round_error</span><span class="special">()</span></code>
+              returns the maximum error (in units of ULP)
+              that can be caused by rounding from binary to decimal.
+            </p>
+<p>
+              For decimal types, no rounding is needed to get to decimal, so <code class="computeroutput"><span class="identifier">round_error</span></code> is always zero.
+            </p>
+<pre class="programlisting"><span class="identifier">round_style</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">round_indeterminate</span><span class="special">;</span>
+</pre>
+<p>
+              The rounding style is indeterminable at compile time.
+            </p>
+<p>
+              (This standard says 'indeterminable at compile time', though this is
+              not strictly true for decimal types, not envisaged at the time that
+              the standard was written).
+            </p>
+<p>
+              For floating-point types, rounding is to nearest, up or down, so at
+              worst, only half a bit is lost by rounding, and <code class="computeroutput"><span class="identifier">round_error</span>
+              <span class="special">==</span> <span class="number">0.5</span></code>.
+            </p>
+<p>
+              For integer types, rounding always to zero, so at worst almost one
+              bit can be rounded, so <code class="computeroutput"><span class="identifier">round_error</span>
+              <span class="special">==</span> <span class="number">1</span></code>.
+            </p>
+<p>
+              Similarly for other rounding styles that are not <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">round_to_nearest</span></code>.
+            </p>
+<p>
+              <code class="computeroutput"><span class="identifier">round_error</span><span class="special">()</span></code>
+              can be used with <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">()</span></code> to estimate the maximum potential
+              error caused by rounding. For typical floating-point types, <code class="computeroutput"><span class="identifier">round_error</span><span class="special">()</span>
+              <span class="special">=</span> <span class="number">1</span><span class="special">/</span><span class="number">2</span></code>, so
+              half epsilon is the maximum potential error.
+            </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">round_err</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">epsilon</span><span class="special">()</span> <span class="comment">// 2.2204460492503131e-016</span>
+                 <span class="special">*</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">double</span><span class="special">>::</span><span class="identifier">round_error</span><span class="special">();</span> <span class="comment">// 1/2</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">round_err</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1.1102230246251565e-016</span>
+</pre>
+<p>
+              This value can be used to set tolerances (see epsilon).
+            </p>
+<p>
+              Of course, this is the rounding for just one arithmetic operation.
+              Some arithmetic operations will involve rounding to integer when almost
+              one bit can be lost by rounding.
+            </p>
+<p>
+              Real life computations involve many, or very many, steps each of which
+              can be rounded.
+            </p>
+<p>
+              So as a very rough approximation, we might multiply by the square root
+              of the number of arithmetic operations. Thus it is common to expect
+              tolerances of a few times as great as <code class="computeroutput"><span class="identifier">epsilon</span><span class="special">()</span> <span class="special">*</span> <span class="identifier">round_error</span><span class="special">()</span></code>.
+            </p>
+<p>
+              There are, of course, many occasions when much bigger loss of precision
+              occurs, for exampe, caused by <a href="http://en.wikipedia.org/wiki/Loss_of_significance" target="_top">Loss
+              of significance or cancellation error</a> or very many iterations.
+            </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 © 2002-2013 John Maddock and Christopher Kormanyos<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="denorm_min.html"><img src="../../../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.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="epsilon.html"><img src="../../../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>