Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r83526 - in sandbox/precision/libs/precision/doc: . html html/precision html/precision/precision
From: pbristow_at_[hidden]
Date: 2013-03-23 08:41:17


Author: pbristow
Date: 2013-03-23 08:41:15 EDT (Sat, 23 Mar 2013)
New Revision: 83526
URL: http://svn.boost.org/trac/boost/changeset/83526

Log:
Using precision chris.qbk with a couple of typos corrections.
Binary files modified:
   sandbox/precision/libs/precision/doc/precision.pdf
   sandbox/precision/libs/precision/doc/precision.tws
Text files modified:
   sandbox/precision/libs/precision/doc/html/index.html | 9 ++-
   sandbox/precision/libs/precision/doc/html/precision/abstract.html | 14 ++--
   sandbox/precision/libs/precision/doc/html/precision/background.html | 19 ++++--
   sandbox/precision/libs/precision/doc/html/precision/introduction.html | 85 ++++++++++++++++++++----------
   sandbox/precision/libs/precision/doc/html/precision/precision.html | 4
   sandbox/precision/libs/precision/doc/html/precision/precision/newfloattypes.html | 6 +-
   sandbox/precision/libs/precision/doc/html/precision/references.html | 6 +-
   sandbox/precision/libs/precision/doc/html/precision/suffixes.html | 11 ++-
   sandbox/precision/libs/precision/doc/html/precision/version_id.html | 2
   sandbox/precision/libs/precision/doc/precision.qbk | 108 ++++++++++++++++++++++++++++++++-------
   10 files changed, 185 insertions(+), 79 deletions(-)

Modified: sandbox/precision/libs/precision/doc/html/index.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/index.html (original)
+++ sandbox/precision/libs/precision/doc/html/index.html 2013-03-23 08:41:15 EDT (Sat, 23 Mar 2013)
@@ -50,14 +50,17 @@
 <dt><span class="section">Abstract</span></dt>
 <dt><span class="section">Background</span></dt>
 <dt><span class="section">Introduction</span></dt>
-<dt><span class="section"><a href="precision/suffixes.html">How to specify extended precision constants
- - Q?</a></span></dt>
+<dt><span class="section"><a href="precision/suffixes.html">How to specify constants with quad
+ and half precision?</a></span></dt>
 <dt><span class="section">Specifying Precision</span></dt>
 <dd><dl>
 <dt><span class="section"><a href="precision/precision/integerfixedtypes.html">Existing Specific
       precision integer types</a></span></dt>
 <dt><span class="section">Proposed new section</span></dt>
 </dl></dd>
+<dt><span class="section">Interaction with complex</span></dt>
+<dt><span class="section"><a href="precision/microfpu.html">Improvemed safety for microcontrollers
+ with an FPU</a></span></dt>
 <dt><span class="section">References</span></dt>
 <dt><span class="section">Version Info</span></dt>
 </dl>
@@ -85,7 +88,7 @@
 </table></div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: March 22, 2013 at 16:57:47 GMT</small></p></td>
+<td align="left"><p><small>Last revised: March 23, 2013 at 12:20:46 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: sandbox/precision/libs/precision/doc/html/precision/abstract.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/precision/abstract.html (original)
+++ sandbox/precision/libs/precision/doc/html/precision/abstract.html 2013-03-23 08:41:15 EDT (Sat, 23 Mar 2013)
@@ -27,9 +27,11 @@
 <a name="precision.abstract"></a><a class="link" href="abstract.html" title="Abstract">Abstract</a>
 </h2></div></div></div>
 <p>
- It is proposed to add several optional typedefs with specific precisions for
- floating-point types including <code class="computeroutput"><span class="identifier">float32_t</span><span class="special">,</span> <span class="identifier">float64_t</span> <span class="identifier">_float128_t</span></code> (similar to <code class="computeroutput"><span class="identifier">int64_t</span></code>
- for integer types).
+ It is proposed to add several optional typedefs with specified widths for floating-point
+ types including <code class="computeroutput"><span class="identifier">float32_t</span><span class="special">,</span>
+ <span class="identifier">float64_t</span> <span class="identifier">_float128_t</span></code>
+ (similar to <code class="computeroutput"><span class="identifier">int64_t</span></code> for integer
+ types).
     </p>
 <p>
       These will be defined in the global and <code class="computeroutput"><span class="identifier">std</span></code>
@@ -37,8 +39,8 @@
     </p>
 <p>
       And also to provide additional suffix(es) to specify extended precision constants
- to suit precisions higher than <code class="computeroutput"><span class="keyword">long</span>
- <span class="keyword">double</span></code>.
+ to suit precisions lower than that of <code class="computeroutput"><span class="keyword">float</span></code>
+ higher than that of <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
     </p>
 <p>
       The objectives are to:
@@ -51,7 +53,7 @@
           Reduce errors in precision.
         </li>
 <li class="listitem">
- Improve portability.
+ Improve portability, reliability and safety.
         </li>
 </ul></div>
 </div>

Modified: sandbox/precision/libs/precision/doc/html/precision/background.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/precision/background.html (original)
+++ sandbox/precision/libs/precision/doc/html/precision/background.html 2013-03-23 08:41:15 EDT (Sat, 23 Mar 2013)
@@ -27,8 +27,14 @@
 <a name="precision.background"></a><a class="link" href="background.html" title="Background">Background</a>
 </h2></div></div></div>
 <p>
- Mathematical functions were added to the C++11 libraries via technical report
- TR1; it is now proposed to fix these into the next C++1Y standard.[1]</sup></a>
+ C++11 supports floating-point calculations with its built-in types <code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code>,
+ and <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ as well as imlementations of numerous elementary and transcendental functions.
+ </p>
+<p>
+ A variety of higher transcendental functions of pure and applied mathematics
+ were added to the C++11 libraries via technical report TR1. It is now proposed
+ to fix these into the next C++1Y standard.[1]</sup></a>
     </p>
 <p>
       Other mathematical special functions are also now proposed, for example, <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3494.pdf" target="_top">A proposal
@@ -65,16 +71,15 @@
       fixed-point</a>.
     </p>
 <p>
- Of coure, moving away from hardware supported types to software using C++ templates
- carries a small price at compile-time, and a much bigger price at runtime.
+ Of course, moving away from hardware supported types to software using C++
+ templates carries a small price at compile-time, and a much bigger price at
+ runtime.
     </p>
 <p>
       All these development have made C++ much more attractive to the scientific
       and engeering community, especially those needing higher (or lower) precision
       for some (if not all) of the calculations, previously the domain covered by
- <a href="http://www.wolfram.com/products/mathematica/index.html" target="_top">Wolfram
- Mathematica</a>, MATLAB
- and others where the precision can be arbitrarily chosen.
+ computer algebra systems for which the precision can be arbitrary.
     </p>
 <div class="footnotes">
 <br><hr style="width:100; align:left;">

Modified: sandbox/precision/libs/precision/doc/html/precision/introduction.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/precision/introduction.html (original)
+++ sandbox/precision/libs/precision/doc/html/precision/introduction.html 2013-03-23 08:41:15 EDT (Sat, 23 Mar 2013)
@@ -7,7 +7,7 @@
 <link rel="home" href="../index.html" title="Specific-Width Floating-Point Types">
 <link rel="up" href="../index.html" title="Specific-Width Floating-Point Types">
 <link rel="prev" href="background.html" title="Background">
-<link rel="next" href="suffixes.html" title="How to specify extended precision constants - Q?">
+<link rel="next" href="suffixes.html" title="How to specify constants with quad and half precision?">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -27,40 +27,48 @@
 <a name="precision.introduction"></a><a class="link" href="introduction.html" title="Introduction">Introduction</a>
 </h2></div></div></div>
 <p>
- These developments have also revealed a need for more standard ways to specify
- precision, especially for extended precision, and to improve portability and
- give more confidence that the actual precision can be exactly predicted. For
- example, support has been expressed on the <a href="http://lists.boost.org/Archives/boost/2013/03/201786.php" target="_top">Boost
- list discussion of precise floating-point types</a>.
+ Since the inceptions of C and C++, the built-in types <code class="computeroutput"><span class="keyword">float</span></code>,
+ <code class="computeroutput"><span class="keyword">double</span></code>, and <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code> have provided a strong basis
+ for floating-point calculations. Optional compiler conformance with <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_ floating-point
+ format</a> has generally led to a relatively reliable and portable environment
+ for floating-point calculations in the programming community.
+ </p>
+<p>
+ It is, however, emphasized that floating-point adherence to <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_
+ floating-point format</a> is not mandated by the current C++ language standard.
+ Nor does the standard enforce specific widths or precisions of the built-in
+ types <code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code>,
+ and <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
+ This can lead to portability problems and reduce reliability and safety.
+ </p>
+<p>
+ This situation reveals a need for more standard ways to specify precision.
+ In addition, it is desirable to extend the precision of existing types to lower
+ and higher precisions. The extension to lower precision is expected to simplify
+ and improve efficiency of floating-point implementations on cost-sensitive
+ architectures such as small microcontrollers. The extension to higher precision
+ is useful for large-scale high-performance numerical calculations and should
+ ease the progression to extended precision by providing precision-steps with
+ finer granularity.
+ </p>
+<p>
+ All of these improvements should improve portability, reliability, and safety
+ of floating-point calculations in C++ by ensuring that the actual precision
+ of a floating-point type can be exactly determined both at compile-time as
+ well as during the run of a calculation. Strong interest in floating-point
+ types with specified widths has, for example, been expressed on the <a href="http://lists.boost.org/Archives/boost/2013/03/201786.php" target="_top">Boost list discussion
+ of precise floating-point types</a>.
     </p>
 <p>
- The reasons for this need are analogous to those that led to the introduction
- of specific integer size like <code class="computeroutput"><span class="identifier">int64_t</span></code>.
- </p>
-<p>
- (Although Section 22.3 in the book "The C++ Standard Library Extensions",
- P. Becker, Addison Wesley 2007, ISBN 0-321-41299-0, the section is called "Fixed-Size
- Integer Types", used of the descriptor <span class="emphasis"><em>fixed</em></span> has
- lead to some confusion. So the descriptor <span class="emphasis"><em>specific</em></span> is
- here used to match the wording of C99 in the section on <code class="computeroutput"><span class="identifier">int_64_t</span>
- <span class="special">...</span></code> in <code class="computeroutput"><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span></code>.)
- </p>
-<p>
- Recent specification of fixed-size integer types in C99, C11 and C++11 and
- <a href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3376.pdf" target="_top">C++
+ Recent specification of integer types with specified widths in C99, C11, C++11,
+ and <a href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3376.pdf" target="_top">C++
       draft specification</a> has drastically improved integer algorithm portability
       and range.
     </p>
 <p>
- Similar specification of fixed-size floating-point types could potentially
- improve the C++ language significantly, especially in the scientific and engineering
- communities where other languages have found benefit from types that conform
- exactly to the <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_
- floating-point format</a>.
- </p>
-<p>
- One example of how specific-size integer types have proved invaluable is described
- by Robert Ramey <a href="http://lists.boost.org/Archives/boost/2002/11/40432.php" target="_top">Usefulness
+ One example of how specific-size integer types have proven to be essential
+ is described by Robert Ramey <a href="http://lists.boost.org/Archives/boost/2002/11/40432.php" target="_top">Usefulness
       of fixed integer sizes in portability (for Boost serialization library).</a>
     </p>
 <p>
@@ -82,6 +90,25 @@
       can facilitate portability. However it in no way alters the fundamental types
       that are available on a given platform. &#8221;
     </p>
+<p>
+ The motivations to provide floating-point types with specified widths are analogous
+ to those that led to the introduction of integers with specified widths such
+ as <code class="computeroutput"><span class="identifier">int8_t</span></code>, <code class="computeroutput"><span class="identifier">int16_t</span></code>,
+ <code class="computeroutput"><span class="identifier">int32_t</span></code>, and <code class="computeroutput"><span class="identifier">int64_t</span></code>. The specification of floating-point
+ types with specified widths and adherence to <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_
+ floating-point format</a> can potentially improve the C++ language significantly,
+ especially in the scientific and engineering communities where other languages
+ have found benefit from types that conform exactly to the <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_
+ floating-point format</a>.
+ </p>
+<p>
+ (Notes on jargon: Section 22.3 in the book "The C++ Standard Library Extensions",
+ P. Becker, Addison Wesley 2007, ISBN 0-321-41299-0 is called "Fixed-Size
+ Integer Types". Use of the descriptor <span class="emphasis"><em>fixed</em></span> has lead
+ to some confusion. So the descriptor <span class="emphasis"><em>specific</em></span> in conjunction
+ with width is here used to match the wording of C99 and C11 in the sections
+ and subsections describing <code class="computeroutput"><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span></code>.)
+ </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>

Modified: sandbox/precision/libs/precision/doc/html/precision/precision.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/precision/precision.html (original)
+++ sandbox/precision/libs/precision/doc/html/precision/precision.html 2013-03-23 08:41:15 EDT (Sat, 23 Mar 2013)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
 <link rel="home" href="../index.html" title="Specific-Width Floating-Point Types">
 <link rel="up" href="../index.html" title="Specific-Width Floating-Point Types">
-<link rel="prev" href="suffixes.html" title="How to specify extended precision constants - Q?">
+<link rel="prev" href="suffixes.html" title="How to specify constants with quad and half precision?">
 <link rel="next" href="precision/integerfixedtypes.html" title="Existing Specific precision integer types">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -126,7 +126,7 @@
       software emulation, perhaps using a Boost.Multiprecision type <code class="computeroutput"><span class="identifier">cpp_dec_float_21</span></code>.
     </p>
 <p>
- Similarly if a quadrupole precision of 16-byte 128-bit <a href="http://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format" target="_top">Quadruple-precision
+ Similarly if a quadruple precision of 16-byte 128-bit <a href="http://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format" target="_top">Quadruple-precision
       floating-point format</a> is desired, the specification of <code class="computeroutput"><span class="identifier">float128_t</span></code> will either direct the compiler
       to generate code using the hardware, or it will do this using software emulation.
       This might be generated by the compiler for GCC or delegated to a <code class="computeroutput"><span class="identifier">cpp_bin_float_128</span></code> type (under development

Modified: sandbox/precision/libs/precision/doc/html/precision/precision/newfloattypes.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/precision/precision/newfloattypes.html (original)
+++ sandbox/precision/libs/precision/doc/html/precision/precision/newfloattypes.html 2013-03-23 08:41:15 EDT (Sat, 23 Mar 2013)
@@ -7,7 +7,7 @@
 <link rel="home" href="../../index.html" title="Specific-Width Floating-Point Types">
 <link rel="up" href="../precision.html" title="Specifying Precision">
 <link rel="prev" href="integerfixedtypes.html" title="Existing Specific precision integer types">
-<link rel="next" href="../references.html" title="References">
+<link rel="next" href="../complexinteract.html" title="Interaction with complex">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="integerfixedtypes.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../precision.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="../references.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="integerfixedtypes.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../precision.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="../complexinteract.html"><img src="../../images/next.png" alt="Next"></a>
 </div>
 <div class="section precision_precision_newfloattypes">
 <div class="titlepage"><div><div><h3 class="title">
@@ -94,7 +94,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="integerfixedtypes.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../precision.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="../references.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="integerfixedtypes.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../precision.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="../complexinteract.html"><img src="../../images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/precision/libs/precision/doc/html/precision/references.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/precision/references.html (original)
+++ sandbox/precision/libs/precision/doc/html/precision/references.html 2013-03-23 08:41:15 EDT (Sat, 23 Mar 2013)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
 <link rel="home" href="../index.html" title="Specific-Width Floating-Point Types">
 <link rel="up" href="../index.html" title="Specific-Width Floating-Point Types">
-<link rel="prev" href="precision/newfloattypes.html" title="Proposed new section">
+<link rel="prev" href="microfpu.html" title="Improvemed safety for microcontrollers with an FPU">
 <link rel="next" href="version_id.html" title="Version Info">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="precision/newfloattypes.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="version_id.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="microfpu.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="version_id.html"><img src="../images/next.png" alt="Next"></a>
 </div>
 <div class="section precision_references">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -86,7 +86,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="precision/newfloattypes.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="version_id.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="microfpu.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="version_id.html"><img src="../images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/precision/libs/precision/doc/html/precision/suffixes.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/precision/suffixes.html (original)
+++ sandbox/precision/libs/precision/doc/html/precision/suffixes.html 2013-03-23 08:41:15 EDT (Sat, 23 Mar 2013)
@@ -1,7 +1,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>How to specify extended precision constants - Q?</title>
+<title>How to specify constants with quad and half precision?</title>
 <link rel="stylesheet" href=".././boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
 <link rel="home" href="../index.html" title="Specific-Width Floating-Point Types">
@@ -24,8 +24,8 @@
 </div>
 <div class="section precision_suffixes">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="precision.suffixes"></a><a class="link" href="suffixes.html" title="How to specify extended precision constants - Q?">How to specify extended precision constants
- - Q?</a>
+<a name="precision.suffixes"></a><a class="link" href="suffixes.html" title="How to specify constants with quad and half precision?">How to specify constants with quad
+ and half precision?</a>
 </h2></div></div></div>
 <p>
       Recent discussion on extended precision floating-point types in C++ has also
@@ -61,7 +61,7 @@
       nor <code class="computeroutput"><span class="identifier">__float80</span></code>)
     </p>
 <p>
- We refer to floating-point types with fixed precision such as 24, 54, 113 or
+ We refer to floating-point types with fixed precision such as 24, 53, 113 or
       more binary significand digits, (and possibly even extending beyond these to
       potential multiprecision types).
     </p>
@@ -81,6 +81,9 @@
       and these correspond to the proposed types below <code class="computeroutput"><span class="identifier">float16_t</span></code>
       ....
     </p>
+<p>
+ TBD by Chris: Suffix for half-precision.
+ </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>

Modified: sandbox/precision/libs/precision/doc/html/precision/version_id.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/precision/version_id.html (original)
+++ sandbox/precision/libs/precision/doc/html/precision/version_id.html 2013-03-23 08:41:15 EDT (Sat, 23 Mar 2013)
@@ -26,7 +26,7 @@
 <a name="precision.version_id"></a><a class="link" href="version_id.html" title="Version Info">Version Info</a>
 </h2></div></div></div>
 <p>
- Last edit to Quickbook file precision.qbk was at 04:57:47 PM on 2013-Mar-22.
+ Last edit to Quickbook file precision.qbk was at 12:20:46 PM on 2013-Mar-23.
     </p>
 <div class="tip"><table border="0" summary="Tip">
 <tr>

Modified: sandbox/precision/libs/precision/doc/precision.pdf
==============================================================================
Binary files. No diff available.

Modified: sandbox/precision/libs/precision/doc/precision.qbk
==============================================================================
--- sandbox/precision/libs/precision/doc/precision.qbk (original)
+++ sandbox/precision/libs/precision/doc/precision.qbk 2013-03-23 08:41:15 EDT (Sat, 23 Mar 2013)
@@ -58,24 +58,31 @@
 
 [section:abstract Abstract]
 
-It is proposed to add several optional typedefs with specific precisions
+It is proposed to add several optional typedefs with specified widths
 for floating-point types including `float32_t, float64_t _float128_t` (similar to `int64_t` for integer types).
 
 These will be defined in the global and `std` namespaces.
 
-And also to provide additional suffix(es) to specify extended precision constants to suit precisions higher than `long double`.
+And also to provide additional suffix(es) to specify extended precision constants to suit precisions
+lower than that of `float` higher than that of `long double`.
 
 The objectives are to:
 
 * Make it easier to use higher-precision.
 * Reduce errors in precision.
-* Improve portability.
+* Improve portability, reliability and safety.
 
 [endsect] [/section:abstract Abstract]
 
 [section:background Background]
 
-Mathematical functions were added to the C++11 libraries via technical report TR1; it is now proposed to fix these into the next C++1Y standard.[footnote
+C++11 supports floating-point calculations with its built-in types
+`float`, `double`, and `long double` as well as implementations of
+numerous elementary and transcendental functions.
+
+A variety of higher transcendental functions of pure and applied mathematics
+were added to the C++11 libraries via technical report TR1.
+It is now proposed to fix these into the next C++1Y standard.[footnote
 [@http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3548.pdf Conditionally-supported Special Math Functions for C++14, N3584, Walter E. Brown]
 ]
 
@@ -99,30 +106,49 @@
 [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3407.html decimal] and
 [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3352.html binary fixed-point].
 
-Of coure, moving away from hardware supported types to software using C++ templates carries a small price at compile-time, and a much bigger price at runtime.
+Of course, moving away from hardware supported types to software using C++ templates carries a small price at compile-time, and a much bigger price at runtime.
 
 All these development have made C++ much more attractive to the scientific and engeering community,
 especially those needing higher (or lower) precision for some (if not all) of the calculations,
-previously the domain covered by __Mathematica, __Matlab and others where the precision can be arbitrarily chosen.
+previously the domain covered by computer algebra systems for which the precision can be arbitrary.
 
 [endsect] [/section:background Background]
 
 [section:introduction Introduction]
 
-These developments have also revealed a need for more standard ways to specify precision, especially for extended precision, and to improve portability and give more confidence that the actual precision can be exactly predicted. For example, support has been expressed on the [@http://lists.boost.org/Archives/boost/2013/03/201786.php Boost list discussion of precise floating-point types].
+Since the inceptions of C and C++, the built-in types `float`, `double`, and `long double` have provided
+a strong basis for floating-point calculations. Optional compiler conformance with __IEEE_floating_point
+has generally led to a relatively reliable and portable environment for floating-point calculations
+in the programming community.
+
+It is, however, emphasized that floating-point adherence
+to __IEEE_floating_point is not mandated by the current C++ language standard.
+Nor does the standard enforce specific widths or precisions of the built-in types
+`float`, `double`, and `long double`. This can lead to portability problems
+and reduce reliability and safety.
+
+This situation reveals a need for more standard ways to specify precision.
+In addition, it is desirable to extend the precision of existing types to
+lower and higher precisions. The extension to lower precision is expected
+to simplify and improve efficiency of floating-point implementations
+on cost-sensitive architectures such as small microcontrollers.
+The extension to higher precision is useful for large-scale high-performance
+numerical calculations and should ease the progression to extended precision
+by providing precision-steps with finer granularity.
+
+All of these improvements should improve portability, reliability, and safety
+of floating-point calculations in C++ by ensuring that the actual precision
+of a floating-point type can be exactly determined both at compile-time
+as well as during the run of a calculation.
+Strong interest in floating-point types with specified widths
+has, for example, been expressed on
+the [@http://lists.boost.org/Archives/boost/2013/03/201786.php Boost list discussion of precise floating-point types].
 
-The reasons for this need are analogous to those that led to the introduction of specific integer size like `int64_t`.
-
-(Although Section 22.3 in the book "The C++ Standard Library Extensions", P. Becker, Addison Wesley 2007, ISBN 0-321-41299-0, the section is called "Fixed-Size Integer Types", used of the descriptor ['fixed] has lead to some confusion. So the descriptor ['specific] is here used to match the wording of C99 in the section on `int_64_t ...` in `stdint.h`.)
-
-Recent specification of fixed-size integer types
-in C99, C11 and C++11 and [@http://open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3376.pdf C++ draft specification]
+Recent specification of integer types with specified widths
+in C99, C11, C++11, and [@http://open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3376.pdf C++ draft specification]
 has drastically improved integer algorithm portability and range.
 
-Similar specification of fixed-size floating-point types could potentially improve the C++ language
-significantly, especially in the scientific and engineering communities where other languages have found benefit from types that conform exactly to the __IEEE_floating_point.
-
-One example of how specific-size integer types have proved invaluable is described by Robert Ramey
+One example of how specific-size integer types have proven to be essential is described by Robert Ramey
 [@http://lists.boost.org/Archives/boost/2002/11/40432.php
 Usefulness of fixed integer sizes in portability (for Boost serialization library).]
 
@@ -142,9 +168,26 @@
 platform.
 [rdquote]
 
+The motivations to provide floating-point types with specified widths
+are analogous to those that led to the introduction of integers
+with specified widths such as `int8_t`, `int16_t`, `int32_t`, and `int64_t`.
+The specification of floating-point types with specified widths
+and adherence to __IEEE_floating_point can potentially
+improve the C++ language significantly, especially in the
+scientific and engineering communities
+where other languages have found benefit from types that conform
+exactly to the __IEEE_floating_point.
+
+(Notes on jargon: Section 22.3 in the book "The C++ Standard Library Extensions",
+P. Becker, Addison Wesley 2007, ISBN 0-321-41299-0 is called "Fixed-Size Integer Types".
+Use of the descriptor ['fixed] has lead to some confusion.
+So the descriptor ['specific] in conjunction with width is here used to
+match the wording of C99 and C11 in the sections and subsections describing
+`stdint.h`.)
+
 [endsect] [/section:introduction Introduction]
 
-[section:suffixes How to specify extended precision constants - Q?]
+[section:suffixes How to specify constants with quad and half precision?]
 
 Recent discussion on extended precision floating-point types in C++ has also
 raised the issue of how to specify constant values with a precision greater than `long double`,
@@ -164,14 +207,16 @@
 (but is not defined for `__float128` nor `__float80`)
 
 We refer to floating-point types with fixed
-precision such as 24, 54, 113 or more binary significand digits,
+precision such as 24, 53, 113 or more binary significand digits,
 (and possibly even extending beyond these to potential multiprecision types).
 
 These are defined in __IEEE754.
 
 There are detailed descriptions at __IEEE_floating_point, with more detailed descrptions of each type at __IEEE_Half, __IEEE_Single, __IEEE_Double, __IEEE_Quad, and __IEEE_Extended and these correspond to the proposed types below `float16_t` ....
 
-[endsect] [/section:suffixes How to specify extended precision constants - Q?]
+TBD by Chris: Suffix for half-precision.
+
+[endsect] [/section:suffixes How to specify constants with quad and half precision?]
 
 [section:precision Specifying Precision]
 
@@ -220,7 +265,7 @@
 
 If the compiler could not generate code this type directly, then it would substitute software emulation, perhaps using a Boost.Multiprecision type `cpp_dec_float_21`.
 
-Similarly if a quadrupole precision of 16-byte 128-bit __IEEE_Quad is desired,
+Similarly if a quadruple precision of 16-byte 128-bit __IEEE_Quad is desired,
 the specification of `float128_t` will either direct the compiler to generate code using the hardware, or it will do this using software emulation. This might be generated by the compiler for GCC or delegated to a `cpp_bin_float_128` type (under development for __Boost_Multiprecision).
 
 [h4 Existing extended precision types]
@@ -294,6 +339,27 @@
 [endsect] [/section:new Proposed new section]
 [endsect] [/section:precision Specifying Precision]
 
+[section:complexinteract Interaction with complex]
+
+TBD: Describe interaction with <complex>
+
+[endsect] [/section:complexinteract Interaction with complex]
+
+[section:microfpu Improved safety for microcontrollers with an FPU]
+
+TBD by Chris: Describe recent confidential meetings with tier-one silicon suppliers and the relevant problems discussed therein.
+
+TBD: Cite these as personal communications.
+
+TBD by Chris: Explain how standards adherence and specified widths can help to solve these problems by improving reliability and safety.
+
+TBD ba Chris: Add an example and remarks on functional safety and any relevant citations from to ISO/IEC 26262.
+
+TBD by Chris - add reference to your book!
+
+[endsect] [/section:microfpu Improvemed safety for microcontrollers with an FPU]
+
+
 [section:references References]
 
 [@http://isocpp.org/std/meetings-and-participation/papers-and-mailings isocpp.org C++ papers and mailings]

Modified: sandbox/precision/libs/precision/doc/precision.tws
==============================================================================
Binary files. No diff available.


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk