|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r83622 - sandbox/precision/libs/precision/doc/html/precision
From: pbristow_at_[hidden]
Date: 2013-03-28 09:58:50
Author: pbristow
Date: 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
New Revision: 83622
URL: http://svn.boost.org/trac/boost/changeset/83622
Log:
Missing html
Added:
sandbox/precision/libs/precision/doc/html/precision/cmathinterop.html (contents, props changed)
sandbox/precision/libs/precision/doc/html/precision/complexinteract.html (contents, props changed)
sandbox/precision/libs/precision/doc/html/precision/complexinterop.html (contents, props changed)
sandbox/precision/libs/precision/doc/html/precision/context.html (contents, props changed)
sandbox/precision/libs/precision/doc/html/precision/limitsinterop.html (contents, props changed)
sandbox/precision/libs/precision/doc/html/precision/literals.html (contents, props changed)
sandbox/precision/libs/precision/doc/html/precision/lowerprecision.html (contents, props changed)
sandbox/precision/libs/precision/doc/html/precision/microfpu.html (contents, props changed)
sandbox/precision/libs/precision/doc/html/precision/quadprecision.html (contents, props changed)
sandbox/precision/libs/precision/doc/html/precision/thestandard.html (contents, props changed)
sandbox/precision/libs/precision/doc/html/precision/thetypedefs.html (contents, props changed)
sandbox/precision/libs/precision/doc/html/precision/thetypes.html (contents, props changed)
Added: sandbox/precision/libs/precision/doc/html/precision/cmathinterop.html
==============================================================================
--- (empty file)
+++ sandbox/precision/libs/precision/doc/html/precision/cmathinterop.html 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
@@ -0,0 +1,75 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Interoperation with <cmath> and special functions</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 Typedefs">
+<link rel="up" href="../index.html" title="Specific-Width Floating-Point Typedefs">
+<link rel="prev" href="thestandard.html" title="Place in the standard">
+<link rel="next" href="limitsinterop.html" title="Interoperation with <limits>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="thestandard.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="limitsinterop.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section precision_cmathinterop">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="precision.cmathinterop"></a><a class="link" href="cmathinterop.html" title="Interoperation with <cmath> and special functions">Interoperation with <cmath>
+ and special functions</a>
+</h2></div></div></div>
+<p>
+ It is not proposed to make any mandatory changes to <code class="computeroutput"><span class="special"><</span><span class="identifier">cmath</span><span class="special">></span></code>
+ or special functions.
+ </p>
+<p>
+ Any of the optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ having specified width that are <code class="computeroutput"><span class="keyword">typedef</span></code>ed
+ from 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> should automatically be supported
+ by the implementation's existing <code class="computeroutput"><span class="special"><</span><span class="identifier">cmath</span><span class="special">></span></code>
+ and special functions.
+ </p>
+<p>
+ Implementation-specific optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ having specified width that are not derived from <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> can optionally be supported by
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">cmath</span><span class="special">></span></code> and special functions. This is considered
+ an implementation detail.
+ </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>
+ Support of elementary functions (and possibly some special functions, even
+ where only optional) can be very useful for real-life computational regimes.
+ </p></td></tr>
+</table></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 © 2013 Paul A. Bristow, Christopher Kormanyos, John Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="thestandard.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="limitsinterop.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/precision/libs/precision/doc/html/precision/complexinteract.html
==============================================================================
--- (empty file)
+++ sandbox/precision/libs/precision/doc/html/precision/complexinteract.html 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Interaction with complex</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">
+<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="next" href="microfpu.html" title="Improved efficiency and robustness for microcontrollers">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</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="microfpu.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section precision_complexinteract">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="precision.complexinteract"></a><a class="link" href="complexinteract.html" title="Interaction with complex">Interaction with complex</a>
+</h2></div></div></div>
+<p>
+ TBD: Describe interaction with <complex>
+ </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 © 2013 Paul A. Bristow, Christopher Kormanyos, John Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="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="microfpu.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/precision/libs/precision/doc/html/precision/complexinterop.html
==============================================================================
--- (empty file)
+++ sandbox/precision/libs/precision/doc/html/precision/complexinterop.html 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Interoperation with <complex></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 Typedefs">
+<link rel="up" href="../index.html" title="Specific-Width Floating-Point Typedefs">
+<link rel="prev" href="limitsinterop.html" title="Interoperation with <limits>">
+<link rel="next" href="quadprecision.html" title="Specifying 128-bit precision">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="limitsinterop.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="quadprecision.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section precision_complexinterop">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="precision.complexinterop"></a><a class="link" href="complexinterop.html" title="Interoperation with <complex>">Interoperation with <complex></a>
+</h2></div></div></div>
+<p>
+ It is not proposed to make any mandatory changes to <code class="computeroutput"><span class="special"><</span><span class="identifier">complex</span><span class="special">></span></code>.
+ </p>
+<p>
+ Any of the optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ having specified width that are <code class="computeroutput"><span class="keyword">typedef</span></code>ed
+ from 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> should automatically be supported
+ by the implementation's existing <code class="computeroutput"><span class="special"><</span><span class="identifier">complex</span><span class="special">></span></code>.
+ </p>
+<p>
+ Implementation-specific optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ having specified width that are <span class="emphasis"><em>not derived from <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></em></span> can optionally be
+ supported by <code class="computeroutput"><span class="special"><</span><span class="identifier">complex</span><span class="special">></span></code>. This is considered an implementation detail.
+ </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 © 2013 Paul A. Bristow, Christopher Kormanyos, John Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="limitsinterop.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="quadprecision.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/precision/libs/precision/doc/html/precision/context.html
==============================================================================
--- (empty file)
+++ sandbox/precision/libs/precision/doc/html/precision/context.html 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>The context among existing implementations</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 Typedefs">
+<link rel="up" href="../index.html" title="Specific-Width Floating-Point Typedefs">
+<link rel="prev" href="lowerprecision.html" title="Extending to lower precision">
+<link rel="next" href="references.html" title="References">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lowerprecision.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="references.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section precision_context">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="precision.context"></a><a class="link" href="context.html" title="The context among existing implementations">The context among existing implementations</a>
+</h2></div></div></div>
+<p>
+ Many existing implementations already support <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>. In addition, some of these either
+ are or strive to be compliant with <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_
+ floating-point format</a>. In these cases, it will be straightforward to
+ support (at least) a subset of the proposed optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s having specified width by adding any
+ desired optional type definitions and the corresponding macro definitions.
+ </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 © 2013 Paul A. Bristow, Christopher Kormanyos, John Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lowerprecision.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="references.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/precision/libs/precision/doc/html/precision/limitsinterop.html
==============================================================================
--- (empty file)
+++ sandbox/precision/libs/precision/doc/html/precision/limitsinterop.html 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
@@ -0,0 +1,91 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Interoperation with <limits></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 Typedefs">
+<link rel="up" href="../index.html" title="Specific-Width Floating-Point Typedefs">
+<link rel="prev" href="cmathinterop.html" title="Interoperation with <cmath> and special functions">
+<link rel="next" href="complexinterop.html" title="Interoperation with <complex>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="cmathinterop.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="complexinterop.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section precision_limitsinterop">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="precision.limitsinterop"></a><a class="link" href="limitsinterop.html" title="Interoperation with <limits>">Interoperation with <limits></a>
+</h2></div></div></div>
+<p>
+ It is not proposed to make any mandatory changes to <code class="computeroutput"><span class="special"><</span><span class="identifier">limits</span><span class="special">></span></code>.
+ </p>
+<p>
+ Any of the optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ having specified width that are <code class="computeroutput"><span class="keyword">typedef</span></code>ed
+ from 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> should automatically be supported
+ by the implementation's existing <code class="computeroutput"><span class="special"><</span><span class="identifier">limits</span><span class="special">></span></code>.
+ </p>
+<p>
+ Implementation-specific optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ having specified width that are not derived from <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> can optionally be supported by
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">limits</span><span class="special">></span></code>. This is considered an implementation detail.
+ </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>
+ Support for <code class="computeroutput"><span class="special"><</span><span class="identifier">limits</span><span class="special">></span></code>, even where optional, can be very useful,
+ especially for portability. This allows programs to query the floating-point
+ limits at compile-time and use, among other things, <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_iec559</span></code>
+ to verify conformance with <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_
+ floating-point format</a>.
+ </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>
+ Each of the optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ having specified width can only have <code class="computeroutput"><span class="keyword">true</span></code>
+ for the value of <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_iec559</span></code> if its underlying type (be it
+ <code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code>,
+ <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ or an implementation-dependent type) conforms with one of <code class="computeroutput"><span class="identifier">binary16</span></code>,
+ <code class="computeroutput"><span class="identifier">binary32</span></code>, <code class="computeroutput"><span class="identifier">binary64</span></code>,
+ or <code class="computeroutput"><span class="identifier">binary128</span></code> in <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_
+ floating-point format</a>.
+ </p></td></tr>
+</table></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 © 2013 Paul A. Bristow, Christopher Kormanyos, John Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="cmathinterop.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="complexinterop.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/precision/libs/precision/doc/html/precision/literals.html
==============================================================================
--- (empty file)
+++ sandbox/precision/libs/precision/doc/html/precision/literals.html 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
@@ -0,0 +1,92 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Handling floating-point literals</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 Typedefs">
+<link rel="up" href="../index.html" title="Specific-Width Floating-Point Typedefs">
+<link rel="prev" href="thetypedefs.html" title="The proposed typedefs and potential extensions">
+<link rel="next" href="thestandard.html" title="Place in the standard">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="thetypedefs.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="thestandard.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section precision_literals">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="precision.literals"></a><a class="link" href="literals.html" title="Handling floating-point literals">Handling floating-point literals</a>
+</h2></div></div></div>
+<p>
+ We will now examine how to use floating-point literal constants in combination
+ with the optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ having specified width. This will be done in a manner analagous to the mechanism
+ specified for integer types having specified width, in other words using C-style
+ macros.
+ </p>
+<p>
+ The header <code class="computeroutput"><span class="special"><</span><span class="identifier">cstdfloat</span><span class="special">></span></code> should contain all necessary C-style function
+ macros in the form shown below.
+ </p>
+<pre class="programlisting"><span class="identifier">FLOAT</span><span class="special">{</span><span class="number">16</span> <span class="number">32</span> <span class="number">64</span> <span class="number">128</span> <span class="number">256</span> <span class="identifier">MAX</span><span class="special">}</span><span class="identifier">_C</span>
+</pre>
+<p>
+ The code below, for example, initializes a constant <code class="computeroutput"><span class="identifier">float128_t</span></code>
+ value using one of these macros.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cstdfloat</span><span class="special">></span>
+
+<span class="identifier">constexpr</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">float128_t</span> <span class="identifier">euler</span> <span class="special">=</span> <span class="identifier">FLOAT128_C</span><span class="special">(</span><span class="number">0.57721566490153286060651209008240243104216</span><span class="special">);</span>
+</pre>
+<p>
+ The following code initializes a constant <code class="computeroutput"><span class="identifier">float16_t</span></code>
+ value using another one of these macros.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cstdfloat</span><span class="special">></span>
+
+<span class="identifier">constexpr</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">float16_t</span> <span class="identifier">euler</span> <span class="special">=</span> <span class="identifier">FLOAT16_C</span><span class="special">(</span><span class="number">0.577216</span><span class="special">);</span>
+</pre>
+<p>
+ In addition, the header <code class="computeroutput"><span class="special"><</span><span class="identifier">cstdfloat</span><span class="special">></span></code> should contain all necessary macros of
+ the form:
+ </p>
+<pre class="programlisting"><span class="identifier">FLOAT_</span><span class="special">[</span><span class="identifier">FAST</span> <span class="identifier">LEAST</span><span class="special">]{</span><span class="number">16</span> <span class="number">32</span> <span class="number">64</span> <span class="number">128</span> <span class="number">256</span><span class="special">}</span><span class="identifier">_MIN</span>
+<span class="identifier">FLOAT_</span><span class="special">[</span><span class="identifier">FAST</span> <span class="identifier">LEAST</span><span class="special">]{</span><span class="number">16</span> <span class="number">32</span> <span class="number">64</span> <span class="number">128</span> <span class="number">256</span><span class="special">}</span><span class="identifier">_MAX</span>
+<span class="identifier">FLOATMAX_MIN</span>
+<span class="identifier">FLOATMAX_MAX</span>
+</pre>
+<p>
+ These macros can be used to query the ranges of the optional floating-point
+ <code class="computeroutput"><span class="keyword">typedef</span></code>s having specified width
+ at compile-time. For example,
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">limits</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cstdfloat</span><span class="special">></span>
+
+<span class="identifier">static_assert</span><span class="special">(</span><span class="identifier">FLOATMAX_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">float</span><span class="special">>::</span><span class="identifier">max</span><span class="special">)(),</span>
+ <span class="string">"The floating-point range is too small."</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 © 2013 Paul A. Bristow, Christopher Kormanyos, John Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="thetypedefs.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="thestandard.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/precision/libs/precision/doc/html/precision/lowerprecision.html
==============================================================================
--- (empty file)
+++ sandbox/precision/libs/precision/doc/html/precision/lowerprecision.html 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
@@ -0,0 +1,67 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Extending to lower 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 Typedefs">
+<link rel="up" href="../index.html" title="Specific-Width Floating-Point Typedefs">
+<link rel="prev" href="quadprecision.html" title="Specifying 128-bit precision">
+<link rel="next" href="context.html" title="The context among existing implementations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quadprecision.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="context.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section precision_lowerprecision">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="precision.lowerprecision"></a><a class="link" href="lowerprecision.html" title="Extending to lower precision">Extending to lower precision</a>
+</h2></div></div></div>
+<p>
+ Some implementations for cost-sensitive microcontroller platforms support
+ <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>,
+ and some of these are compliant with <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_
+ floating-point format</a>. Some of these implementations treat <code class="computeroutput"><span class="keyword">double</span></code> exactly as <code class="computeroutput"><span class="keyword">float</span></code>,
+ and even treat <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ exactly as <code class="computeroutput"><span class="keyword">double</span></code>. This is permitted
+ by the standard which does not prescribe the precision for any floating-point
+ (or integer) types, leaving them to be implementation-defined. On these platforms,
+ the existing floating-point types could optionally be type-defined to <code class="computeroutput"><span class="identifier">float32_t</span></code>. Optional support for an extension
+ to <code class="computeroutput"><span class="identifier">float16_t</span></code> could provide
+ a very useful and efficient floating-point type with half-precision, but reduced
+ range.
+ </p>
+<p>
+ Some implementations for cost-sensitive microcontroller platforms also support
+ a 24-bit floating-point type. Here, an extension of the optional floating-point
+ <code class="computeroutput"><span class="keyword">typedef</span></code>s with specified width
+ could include <code class="computeroutput"><span class="identifier">float24_t</span></code>. This
+ would be equivalent to three-quarter precision floating-point, which is not
+ specified in <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_
+ floating-point format</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 © 2013 Paul A. Bristow, Christopher Kormanyos, John Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quadprecision.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="context.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/precision/libs/precision/doc/html/precision/microfpu.html
==============================================================================
--- (empty file)
+++ sandbox/precision/libs/precision/doc/html/precision/microfpu.html 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
@@ -0,0 +1,63 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Improved efficiency and robustness for microcontrollers</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 Typedefs">
+<link rel="up" href="../index.html" title="Specific-Width Floating-Point Typedefs">
+<link rel="prev" href="complexinterop.html" title="Interoperation with <complex>">
+<link rel="next" href="context.html" title="The context within existing implementations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="complexinterop.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="context.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section precision_microfpu">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="precision.microfpu"></a><a class="link" href="microfpu.html" title="Improved efficiency and robustness for microcontrollers">Improved efficiency and robustness
+ for microcontrollers</a>
+</h2></div></div></div>
+<p>
+ TBD by Chris: Describe cost-sensitive floating-point regime. TBD by Chris -
+ add reference to your book!
+ </p>
+<p>
+ TBD by Chris: Describe recent confidential meetings with tier-one silicon suppliers
+ and the relevant problems discussed therein.
+ </p>
+<p>
+ TBD: Cite these as personal communications.
+ </p>
+<p>
+ TBD by Chris: Explain how standards adherence and specified width can help
+ to solve these problems by improving reliability and safety.
+ </p>
+<p>
+ TBD ba Chris: Add an example and remarks on functional safety and any relevant
+ citations from to ISO/IEC 26262.
+ </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 © 2013 Paul A. Bristow, Christopher Kormanyos, John Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="complexinterop.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="context.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/precision/libs/precision/doc/html/precision/quadprecision.html
==============================================================================
--- (empty file)
+++ sandbox/precision/libs/precision/doc/html/precision/quadprecision.html 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
@@ -0,0 +1,132 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Specifying 128-bit 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 Typedefs">
+<link rel="up" href="../index.html" title="Specific-Width Floating-Point Typedefs">
+<link rel="prev" href="complexinterop.html" title="Interoperation with <complex>">
+<link rel="next" href="lowerprecision.html" title="Extending to lower precision">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="complexinterop.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="lowerprecision.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section precision_quadprecision">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="precision.quadprecision"></a><a class="link" href="quadprecision.html" title="Specifying 128-bit precision">Specifying 128-bit precision</a>
+</h2></div></div></div>
+<p>
+ The proposed <code class="computeroutput"><span class="keyword">typedef</span></code> <code class="computeroutput"><span class="identifier">float128_t</span></code> provides a standardized way to
+ specify quadruple-precision (<a href="http://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format" target="_top">Quadruple-precision
+ floating-point format</a>) in C++.
+ </p>
+<p>
+ On powerful PCs and workstations, implementation-specific versions of <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ as well as various floating-point extensions to 128-bit have been treated in
+ a variety of ways. This has resulted in numerous portability problems.
+ </p>
+<p>
+ The Intel X8087 chipset
+ is capable of performing calculations with internal 80-bit registers. This
+ increases the width of the significand from 53 to 63 bits, thereby gaining
+ about 3 decimal digits precision and extending it from 18 and 21. If an implementation
+ has a type that uses all 80 bits from this chipset to calculate <a href="http://en.wikipedia.org/wiki/Extended_precision" target="_top">Extended
+ precision</a>, it could could use an optional <code class="computeroutput"><span class="keyword">typedef</span></code>
+ of this type to <code class="computeroutput"><span class="identifier">float80_t</span></code>.
+ </p>
+<p>
+ Some hardware, for example Sparc,
+ provides a full 128-bit quadruple-precision floating-point chip. An implementation
+ for this kind of architecture might already have a built-in type corresponding
+ to <code class="computeroutput"><span class="identifier">binary128</span></code>, and this type
+ could be optionally <code class="computeroutput"><span class="keyword">typedef</span></code>ed
+ to <code class="computeroutput"><span class="identifier">float128_t</span></code>.
+ </p>
+<p>
+ GCC has recently developed quadruple-precision support on a variety of platforms
+ using GCC libquadmath.
+ However, the implementation-specific type <code class="computeroutput"><span class="identifier">__float128</span></code>
+ is used rather than <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
+ These implementations could optionally <code class="computeroutput"><span class="keyword">typedef</span></code>
+ <code class="computeroutput"><span class="identifier">__float128</span></code> to <code class="computeroutput"><span class="identifier">float128_t</span></code> in addition to any other optional
+ <code class="computeroutput"><span class="keyword">typedef</span></code>s.
+ </p>
+<p>
+ Darwin
+ <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ uses a double-double format developed first by <a href="http://keithbriggs.info/doubledouble.html" target="_top">Keith
+ Briggs</a>. This gives about 106-bits of precision (about 33 decimal digits)
+ but has rather odd behavior at the extremes making implementation of <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">epsilon</span><span class="special">()</span></code> problematic.
+ </p>
+<p>
+ It may be useful if future implementations for powerful PCs and workstations
+ strive to make implementation-specific extensions to 128-bit floating-point
+ or the built-in type <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ equivalent to <code class="computeroutput"><span class="identifier">binary128</span></code>, and
+ to include the corresponding <code class="computeroutput"><span class="keyword">typedef</span></code>
+ to <code class="computeroutput"><span class="identifier">float128_t</span></code>.
+ </p>
+<p>
+ Some architectures have hardware support for this. Those lacking direct hardware
+ support can use software emulation.
+ </p>
+<h5>
+<a name="precision.quadprecision.h0"></a>
+ <span class="phrase"><a name="precision.quadprecision.survey_of_extended_precision_types"></a></span><a class="link" href="quadprecision.html#precision.quadprecision.survey_of_extended_precision_types">Survey
+ of extended-precision types</a>
+ </h5>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ <a href="http://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html" target="_top">GNU
+ C supports additional floating types, <code class="computeroutput"><span class="identifier">__float80</span></code>
+ and <code class="computeroutput"><span class="identifier">__float128</span></code> to support
+ 80-bit (XFmode) and 128-bit (TFmode) floating types.</a>
+ </li>
+<li class="listitem">
+ <a href="http://software.intel.com/en-us/forums/topic/358472" target="_top">Extended
+ or Quad IEEE FP formats</a> by Intel Intel64 mode on Linux (V12.1)
+ provides 128 bit <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ in C, however it appears that it only provides computation at 80-bit format
+ giving 64-bit significand precision, and other bits are just padding.
+ </li>
+<li class="listitem">
+ <a href="http://software.intel.com/en-us/forums/topic/358476" target="_top">Intel
+ FORTRAN REAL*16</a> is an actual 128-bit IEEE quad, emulated in software.
+ But "I don't know of any plan to implement full C support for 128-bit
+ IEEE format, although evidently ifort has support libraries." This
+ is equivalent to the proposed float128_t type.
+ </li>
+<li class="listitem">
+ The 360/85 and follow-on System/370 added support for a 128-bit "extended"
+ <a href="http://en.wikipedia.org/wiki/Extended_precision#IBM_extended_precision_formats" target="_top">IBM
+ extended precision formats</a>. These formats are still supported in
+ the current design, where they are now called the "hexadecimal floating
+ point" (HFP) formats.
+ </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 © 2013 Paul A. Bristow, Christopher Kormanyos, John Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="complexinterop.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="lowerprecision.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/precision/libs/precision/doc/html/precision/thestandard.html
==============================================================================
--- (empty file)
+++ sandbox/precision/libs/precision/doc/html/precision/thestandard.html 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
@@ -0,0 +1,114 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Place in the standard</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 Typedefs">
+<link rel="up" href="../index.html" title="Specific-Width Floating-Point Typedefs">
+<link rel="prev" href="literals.html" title="Handling floating-point literals">
+<link rel="next" href="cmathinterop.html" title="Interoperation with <cmath> and special functions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="literals.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="cmathinterop.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section precision_thestandard">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="precision.thestandard"></a><a class="link" href="thestandard.html" title="Place in the standard">Place in the standard</a>
+</h2></div></div></div>
+<p>
+ The proper place for defining the optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ having specified width should be oriented along the lines of the current standard.
+ Consider the existing specification of integer <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ having specified width in C++11. A partial synopsis is shown below.
+ </p>
+<p>
+ 18.4 Integer types [cstdint]
+ </p>
+<p>
+ 18.4.1 Header <cstdint> synopsis [cstdint.syn]
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="identifier">integer</span> <span class="identifier">type</span> <span class="identifier">int8_t</span><span class="special">;</span> <span class="comment">// optional</span>
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="identifier">integer</span> <span class="identifier">type</span> <span class="identifier">int16_t</span><span class="special">;</span> <span class="comment">// optional</span>
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="identifier">integer</span> <span class="identifier">type</span> <span class="identifier">int32_t</span><span class="special">;</span> <span class="comment">// optional</span>
+ <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="identifier">integer</span> <span class="identifier">type</span> <span class="identifier">int64_t</span><span class="special">;</span> <span class="comment">// optional</span>
+<span class="special">}</span>
+
+<span class="comment">// ... and the corresponding least and fast types.</span>
+</pre>
+<p>
+ It is not immediately obvious where the optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s having specified width should reside.
+ One potential place is <code class="computeroutput"><span class="special"><</span><span class="identifier">cstdint</span><span class="special">></span></code>. The <code class="computeroutput"><span class="keyword">int</span></code>,
+ however, implies integer types. Here, we prefer the proposed new header <code class="computeroutput"><span class="special"><</span><span class="identifier">cstdfloat</span><span class="special">></span></code>.
+ </p>
+<p>
+ We propose to add a new header <code class="computeroutput"><span class="special"><</span><span class="identifier">cstdfloat</span><span class="special">></span></code>
+ to the standard library. The header <code class="computeroutput"><span class="special"><</span><span class="identifier">cstdfloat</span><span class="special">></span></code>
+ should contain all optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ having specified width included in the implementation and the corresponding
+ C-style macros shown above.
+ </p>
+<p>
+ Section 18.4 could be extended as shown below.
+ </p>
+<p>
+ 18.4? Integer and Floating-Point Types Having Specified Width
+ </p>
+<p>
+ 18.4.1 Header <cstdint> synopsis [cstdint.syn]
+ </p>
+<p>
+ 18.4.2? Header <cstdfloat> synopsis [cstdfloat.syn]
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float16_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float32_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float64_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float80_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float128_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float256_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">floatmax_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float_least16_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float_least32_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float_least64_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float_least80_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float_least128_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float_least256_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float_fast16_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float_fast32_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float_fast64_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float_fast80_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float_fast128_t</span><span class="special">;</span> <span class="comment">// optional.</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float_fast256_t</span><span class="special">;</span> <span class="comment">// optional.</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 © 2013 Paul A. Bristow, Christopher Kormanyos, John Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="literals.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="cmathinterop.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/precision/libs/precision/doc/html/precision/thetypedefs.html
==============================================================================
--- (empty file)
+++ sandbox/precision/libs/precision/doc/html/precision/thetypedefs.html 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
@@ -0,0 +1,235 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>The proposed typedefs and potential extensions</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 Typedefs">
+<link rel="up" href="../index.html" title="Specific-Width Floating-Point Typedefs">
+<link rel="prev" href="introduction.html" title="Introduction">
+<link rel="next" href="literals.html" title="Handling floating-point literals">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.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="literals.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section precision_thetypedefs">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="precision.thetypedefs"></a><a class="link" href="thetypedefs.html" title="The proposed typedefs and potential extensions">The proposed typedefs and potential
+ extensions</a>
+</h2></div></div></div>
+<p>
+ The core of this proposal is based on the optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s <code class="computeroutput"><span class="identifier">float16_t</span></code>,
+ <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>, their corresponding
+ least and fast types, and the corresponding maximum-width type.
+ </p>
+<p>
+ For example,
+ </p>
+<pre class="programlisting"><span class="comment">// Sample partial synopsis of <cstdfloat></span>
+
+<span class="keyword">namespace</span> <span class="identifier">std</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">float32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">float64_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">float128_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">float128_t</span> <span class="identifier">floatmax_t</span><span class="special">;</span>
+
+ <span class="comment">// ... and the corresponding least and fast types.</span>
+<span class="special">}</span>
+</pre>
+<p>
+ These proposed optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ are to conform with the corresponding specifications of <code class="computeroutput"><span class="identifier">binary16</span></code>,
+ <code class="computeroutput"><span class="identifier">binary32</span></code>, <code class="computeroutput"><span class="identifier">binary64</span></code>,
+ and <code class="computeroutput"><span class="identifier">binary128</span></code> in <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_
+ floating-point format</a>. In particular, <code class="computeroutput"><span class="identifier">float16_t</span></code>,
+ <code class="computeroutput"><span class="identifier">float32_t</span></code>, <code class="computeroutput"><span class="identifier">float64_t</span></code>,
+ and <code class="computeroutput"><span class="identifier">float128_t</span></code> correspond to
+ floating-point types with 11, 24, 53, and 113 binary significand digits, respectively.
+ These are defined in <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_
+ floating-point format</a>, and there are more detailed descriptions of
+ each type at <a href="http://en.wikipedia.org/wiki/Half_precision_floating-point_format" target="_top">IEEE
+ half-precision floating-point format</a>, <a href="http://en.wikipedia.org/wiki/Single_precision_floating-point_format" target="_top">IEEE
+ single-precision floating-point format</a>, <a href="http://en.wikipedia.org/wiki/Double_precision_floating-point_format" target="_top">IEEE
+ double-precision floating-point format</a>, <a href="http://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format" target="_top">Quadruple-precision
+ floating-point format</a>, and <a href="http://en.wikipedia.org/wiki/Extended_precision#IEEE_754_extended_precision_formats" target="_top">IEEE
+ 754 extended precision formats and x86 80-bit Extended Precision Format</a>.
+ </p>
+<p>
+ Here, we specifically mean equivalence of the following.
+ </p>
+<pre class="programlisting"><span class="identifier">float16_t</span> <span class="special">==</span> <span class="identifier">binary16</span><span class="special">;</span>
+<span class="identifier">float32_t</span> <span class="special">==</span> <span class="identifier">binary32</span><span class="special">;</span>
+<span class="identifier">float64_t</span> <span class="special">==</span> <span class="identifier">binary64</span><span class="special">;</span>
+<span class="identifier">float128_t</span> <span class="special">==</span> <span class="identifier">binary128</span><span class="special">;</span>
+</pre>
+<p>
+ This equivalence results in far-reaching benefits.
+ </p>
+<p>
+ It means that floating-point software written with <code class="computeroutput"><span class="identifier">float16_t</span></code>,
+ <code class="computeroutput"><span class="identifier">float32_t</span></code>, <code class="computeroutput"><span class="identifier">float64_t</span></code>,
+ and <code class="computeroutput"><span class="identifier">float128_t</span></code> should behave
+ identically when used on any platform with any implementation that correctly
+ supports the <code class="computeroutput"><span class="keyword">typedef</span></code>s.
+ </p>
+<p>
+ It also creates the opportunity to implement quadruple-precision (<a href="http://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format" target="_top">Quadruple-precision
+ floating-point format</a>) in a specified, and therefore portable, fashion.
+ </p>
+<p>
+ One could envision two ways to name the proposed optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s having specified width:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">float11_t</span><span class="special">,</span>
+ <span class="identifier">float24_t</span><span class="special">,</span>
+ <span class="identifier">float53_t</span><span class="special">,</span>
+ <span class="identifier">float113_t</span><span class="special">,</span>
+ <span class="special">...</span></code>
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">float16_t</span><span class="special">,</span>
+ <span class="identifier">float32_t</span><span class="special">,</span>
+ <span class="identifier">float64_t</span><span class="special">,</span>
+ <span class="identifier">float128_t</span><span class="special">,</span>
+ <span class="special">...</span></code>
+ </li>
+</ul></div>
+<p>
+ The first set above is intuitively coined from IEE754:2008.
+ It is also consistent with the gist of integer types having specified width
+ such as <code class="computeroutput"><span class="identifier">int64_t</span></code>, in so far
+ as the number of binary digits of <span class="emphasis"><em>significand</em></span> precision
+ is contained within the name of the data type.
+ </p>
+<p>
+ On the other hand, the second set with the size of the <span class="emphasis"><em>whole type</em></span>
+ contained within the name may be more intuitive to users. Here, we prefer the
+ latter naming scheme.
+ </p>
+<p>
+ No matter what naming scheme is used, the exact layout and number of significand
+ and exponent bits can be confirmed as IEEE754 by checking <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">type</span><span class="special">>::</span><span class="identifier">is_iec559</span>
+ <span class="special">==</span> <span class="keyword">true</span></code>,
+ and the byte-order.
+ </p>
+<p>
+ We will now consider several examples showing how various implementations might
+ introduce some of the optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ having specified width into the <code class="computeroutput"><span class="identifier">std</span></code>
+ namespace.
+ </p>
+<p>
+ An implementation has <code class="computeroutput"><span class="keyword">float</span></code> and
+ <code class="computeroutput"><span class="keyword">double</span></code> corresponding to IEEE754
+ <code class="computeroutput"><span class="identifier">binary32</span></code>, <code class="computeroutput"><span class="identifier">binary64</span></code>,
+ respectively. This implementation could introduce <code class="computeroutput"><span class="identifier">float32_t</span></code>,
+ <code class="computeroutput"><span class="identifier">float64_t</span></code>, and <code class="computeroutput"><span class="identifier">floatmax_t</span></code> into the <code class="computeroutput"><span class="identifier">std</span></code>
+ namespace as shown below.
+ </p>
+<pre class="programlisting"><span class="comment">// In <cstdfloat></span>
+
+<span class="keyword">namespace</span> <span class="identifier">std</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">float32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">float64_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">float64_t</span> <span class="identifier">floatmax_t</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ There may be a need for octuple-precision float, in other words an extension
+ to <code class="computeroutput"><span class="identifier">float256_t</span></code> with about 240
+ binary significand digits of precision. In addition, a <code class="computeroutput"><span class="identifier">float512_t</span></code>
+ type with even more precision may be considered as a option. Beyond these,
+ there may be potential extension to multiprecision types, even <a href="http://en.wikipedia.org/wiki/Arbitrary_precision" target="_top">arbitrary
+ precision</a>, in the future.
+ </p>
+<p>
+ Consider an implementation for a supercomputer. This platform might have <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>
+ corresponding to IEEE754 <code class="computeroutput"><span class="identifier">binary32</span></code>,
+ <code class="computeroutput"><span class="identifier">binary64</span></code>, and <code class="computeroutput"><span class="identifier">binary128</span></code>, respectively. In addition, this
+ platform might have a floating-point type with octuple-precision. The implementation
+ for this supercomputer could introduce its optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s having specified width into the <code class="computeroutput"><span class="identifier">std</span></code> namespace as shown below.
+ </p>
+<pre class="programlisting"><span class="comment">// In <cstdfloat></span>
+
+<span class="keyword">namespace</span> <span class="identifier">std</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">float32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">float64_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">float128_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float256_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">float256_t</span> <span class="identifier">floatmax_t</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ A cost-sensitive 8-bit microcontroller platform without an FPU does not have
+ sufficient resources to support the eight-byte, 64-bit <code class="computeroutput"><span class="identifier">binary64</span></code>
+ type in a feasible fashion. An implementation for this platform can, however,
+ support half-precision <code class="computeroutput"><span class="identifier">float16_t</span></code>
+ and single-precision <code class="computeroutput"><span class="identifier">float32_t</span></code>.
+ This implementation could introduce its optional floating-point <code class="computeroutput"><span class="keyword">typedef</span></code>s having specified width into the <code class="computeroutput"><span class="identifier">std</span></code> namespace as shown below.
+ </p>
+<pre class="programlisting"><span class="comment">// In <cstdfloat></span>
+
+<span class="keyword">namespace</span> <span class="identifier">std</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">float16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">float32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">float32_t</span> <span class="identifier">floatmax_t</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The popular Intel X8087 chipset
+ architecture supports a 10-byte floating-point format. It may be useful to
+ extend the optional support to <code class="computeroutput"><span class="identifier">float80_t</span></code>.
+ Several implementations using <a href="http://en.wikipedia.org/wiki/Extended_precision#IEEE_754_extended_precision_formats#" target="_top">x86
+ Extended Precision Format</a> already exist in practice.
+ </p>
+<p>
+ Consider an implementation that supports single-precision <code class="computeroutput"><span class="keyword">float</span></code>,
+ double-precision <code class="computeroutput"><span class="keyword">double</span></code>, and 10-byte
+ <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
+ This implementation could introduce its optional <code class="computeroutput"><span class="keyword">typedef</span></code>s
+ <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">float80_t</span></code>, and <code class="computeroutput"><span class="identifier">floatmax_t</span></code> into the <code class="computeroutput"><span class="identifier">std</span></code>
+ namespace as shown below.
+ </p>
+<pre class="programlisting"><span class="comment">// In <cstdfloat></span>
+
+<span class="keyword">namespace</span> <span class="identifier">std</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">float32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">float64_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">float80_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">float80_t</span> <span class="identifier">floatmax_t</span><span class="special">;</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 © 2013 Paul A. Bristow, Christopher Kormanyos, John Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.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="literals.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/precision/libs/precision/doc/html/precision/thetypes.html
==============================================================================
--- (empty file)
+++ sandbox/precision/libs/precision/doc/html/precision/thetypes.html 2013-03-28 09:58:49 EDT (Thu, 28 Mar 2013)
@@ -0,0 +1,229 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>The proposed types and potential extensions</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">
+<link rel="up" href="../index.html" title="Specific-Width Floating-Point Types">
+<link rel="prev" href="introduction.html" title="Introduction">
+<link rel="next" href="suffixes.html" title="How to define floating-point literal suffixes?">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="" width="180" height="90" src=".././images/boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.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="suffixes.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section precision_thetypes">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="precision.thetypes"></a><a class="link" href="thetypes.html" title="The proposed types and potential extensions">The proposed types and potential extensions</a>
+</h2></div></div></div>
+<p>
+ The core of this proposal is based on the types <code class="computeroutput"><span class="identifier">float16_t</span></code>,
+ <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 their corresponding
+ least and fast types. These floating-point types have specified widths and
+ they are to conform with the corresponding types <code class="computeroutput"><span class="identifier">binary16</span></code>,
+ <code class="computeroutput"><span class="identifier">binary32</span></code>, <code class="computeroutput"><span class="identifier">binary64</span></code>,
+ and <code class="computeroutput"><span class="identifier">binary128</span></code> specified in
+ <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_ floating-point
+ format</a>. In particular, <code class="computeroutput"><span class="identifier">float16_t</span></code>,
+ <code class="computeroutput"><span class="identifier">float32_t</span></code>, <code class="computeroutput"><span class="identifier">float64_t</span></code>,
+ and <code class="computeroutput"><span class="identifier">float128_t</span></code> correspond to
+ floating-point types with 11, 24, 53, and 113 binary significand digits, respectively.
+ These are defined in <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_
+ floating-point format</a>, and there are more detailed descrptions of each
+ type at <a href="http://en.wikipedia.org/wiki/Half_precision_floating-point_format" target="_top">IEEE
+ half-precision floating-point format</a>, <a href="http://en.wikipedia.org/wiki/Single_precision_floating-point_format" target="_top">IEEE
+ single-precision floating-point format</a>, <a href="http://en.wikipedia.org/wiki/Double_precision_floating-point_format" target="_top">IEEE
+ double-precision floating-point format</a>, <a href="http://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format" target="_top">Quadruple-precision
+ floating-point format</a>, and <a href="http://en.wikipedia.org/wiki/Extended_precision#IEEE_754_extended_precision_formats" target="_top">IEEE
+ 754 extended precision formats and x86 80-bit Extended Precision Format</a>.
+ </p>
+<p>
+ One could envision two ways to name the proposed floating-point types having
+ specified width:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">float11_t</span><span class="special">,</span>
+ <span class="identifier">float24_t</span><span class="special">,</span>
+ <span class="identifier">float53_t</span><span class="special">,</span>
+ <span class="identifier">float113_t</span><span class="special">,</span>
+ <span class="special">...</span></code>
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">float16_t</span><span class="special">,</span>
+ <span class="identifier">float32_t</span><span class="special">,</span>
+ <span class="identifier">float64_t</span><span class="special">,</span>
+ <span class="identifier">float128_t</span><span class="special">,</span>
+ <span class="special">...</span></code>
+ </li>
+</ul></div>
+<p>
+ The first set above is intuitively coined from IEE754:2008.
+ It is also consistent with the gist of integer types having specified width
+ such as <code class="computeroutput"><span class="identifier">int64_t</span></code>, in so far
+ as the number of binary digits of <span class="emphasis"><em>significand</em></span> precision
+ is contained within the name of the data type.
+ </p>
+<p>
+ On the other hand, the second set with the size of the <span class="emphasis"><em>whole type</em></span>
+ contained within the name may be more intuitive to users. Here, we prefer this
+ naming scheme.
+ </p>
+<p>
+ No matter what naming scheme is used, the exact layout and number of significand
+ and exponent bits can be confirmed as IEEE754 by checking <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">type</span><span class="special">>::</span><span class="identifier">is_iec559</span>
+ <span class="special">==</span> <span class="keyword">true</span></code>.
+ </p>
+<p>
+ We will now consider several examples showing how various implementations might
+ include floating-point types having specified width.
+ </p>
+<p>
+ An implementation that has <code class="computeroutput"><span class="keyword">float</span></code>
+ and <code class="computeroutput"><span class="keyword">double</span></code> corresponding to IEEE
+ 754 <code class="computeroutput"><span class="identifier">binary32</span></code>, <code class="computeroutput"><span class="identifier">binary64</span></code>, respectively, could introduce
+ <code class="computeroutput"><span class="identifier">float32_t</span></code> and <code class="computeroutput"><span class="identifier">float64_t</span></code> into the <code class="computeroutput"><span class="identifier">std</span></code>
+ namespace as shown below.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">float32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">float64_t</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ There may be a need for octuple-precision float, in other words <code class="computeroutput"><span class="identifier">float256_t</span></code> with about 240 binary significand
+ digits of precision. In addition, a <code class="computeroutput"><span class="identifier">float512_t</span></code>
+ type with even more precision may be considered as a option. Beyond these,
+ there may be potential extension to multiprecision types in the future.
+ </p>
+<p>
+ Consider an implementation for a supercomputer. This platform might have <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>
+ corresponding to IEEE 754 <code class="computeroutput"><span class="identifier">binary32</span></code>,
+ <code class="computeroutput"><span class="identifier">binary64</span></code>, and <code class="computeroutput"><span class="identifier">binary128</span></code>, respectively. In addition, this
+ platform might have a user-defined type with octuple-precision. The implementation
+ for this supercomputer could introduce floating-point types having specified
+ width into the <code class="computeroutput"><span class="identifier">std</span></code> namespace
+ as shown below.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">float32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">float64_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">float128_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">my_octuple_precision_type</span> <span class="identifier">float256_t</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ A cost-sensitive 8-bit microcontroller platform without an FPU does not have
+ sufficient resources to support eight-byte <code class="computeroutput"><span class="identifier">binary64</span></code>
+ in a feasible fashion. An implementation on this platform can, however, support
+ half-precision <code class="computeroutput"><span class="identifier">float16_t</span></code> and
+ single-precision <code class="computeroutput"><span class="identifier">float32_t</span></code>.
+ The implementation for this 8-bit microcontroller could introduce floating-point
+ types having specified width into the <code class="computeroutput"><span class="identifier">std</span></code>
+ namespace as shown below.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">my_half_precision_type</span> <span class="identifier">float16_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">float32_t</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The popular Intel X8087 chipset
+ architecture supports a 10-byte floating-point format. So it may be useful
+ to provide optional support for <code class="computeroutput"><span class="identifier">float80_t</span></code>.
+ In our opinion, there is no type that is analogous to <code class="computeroutput"><span class="identifier">float80_t</span></code>
+ in <a href="http://en.wikipedia.org/wiki/IEEE_floating_point" target="_top">IEEE_ floating-point
+ format</a>, but several implementations already exist in practice.
+ </p>
+<p>
+ An implementation that supports single-precision <code class="computeroutput"><span class="keyword">float</span></code>,
+ double-precision <code class="computeroutput"><span class="keyword">double</span></code>, and 10-byte
+ <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+ could introduce <code class="computeroutput"><span class="identifier">float32_t</span></code>,
+ <code class="computeroutput"><span class="identifier">float64_t</span></code>, and <code class="computeroutput"><span class="identifier">float80_t</span></code> into the <code class="computeroutput"><span class="identifier">std</span></code>
+ namespace as shown below.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">float32_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">float64_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">float80_t</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ We will now examine how to use floating-point literal constants in combination
+ with floating-point types having specified width.
+ </p>
+<p>
+ At present, the only way to provide a floating-point literal constant value
+ with precision exceeding the precision of <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code> is to use a character string
+ in association with type conversion for a user-defined extended-precision type.
+ For example, construction from a string as well as the <code class="computeroutput"><span class="identifier">from_string</span></code>
+ method are used for this purpose in Boost.Math,
+ Boost.Multiprecision
+ and GCC libquadmath.
+ </p>
+<p>
+ The sample below, for instance, uses the <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code>
+ type from Boost.Multiprecision
+ to initialize the Euler-gamma constant with 50 decimal digits of precision.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_dec_float</span><span class="special">></span>
+
+<span class="keyword">typedef</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="identifier">mp_type</span><span class="special">;</span>
+
+<span class="keyword">const</span> <span class="identifier">mp_type</span> <span class="identifier">euler</span><span class="special">(</span><span class="string">"0.577215664901532860606512090082402431042159335939924"</span><span class="special">);</span>
+</pre>
+<p>
+ Construction from string is inappropriate for the proposed floating-point types
+ having specified width. These should be copy assignable and copy constructable
+ from floating-point literal constants. This requires slight changes to the
+ core language including the addition of new floating-point literal constant
+ suffixes. For instance, the sample below uses a potential <code class="computeroutput"><span class="identifier">Q</span></code>
+ suffix is used to initialize the Euler-gamma constant stored in a <code class="computeroutput"><span class="identifier">float128_t</span></code>.
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cstdfloat</span><span class="special">></span>
+
+<span class="identifier">constexpr</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">float128_t</span> <span class="identifier">euler</span> <span class="special">=</span> <span class="number">0.57721566490153286060651209008240243104216</span><span class="identifier">Q</span><span class="special">;</span>
+</pre>
+<p>
+ Suffixes will be described in greater detail below.
+ </p>
+<p>
+ It would also be useful to have a method of querying the size of types, similar
+ to that provided by <a href="http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html" target="_top">GCC
+ 3.7.2 Common Predefined Macros</a>, for example, <code class="computeroutput"><span class="identifier">__SIZEOF_LONG_DOUBLE__</span></code>.
+ But similar macros are not defined for <code class="computeroutput"><span class="identifier">__float128</span></code>
+ nor for <code class="computeroutput"><span class="identifier">__float80</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 © 2013 Paul A. Bristow, Christopher Kormanyos, John Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.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="suffixes.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
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