Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r84008 - in sandbox/precision/libs/precision/doc: . html html/precision
From: pbristow_at_[hidden]
Date: 2013-04-22 12:01:09


Author: pbristow
Date: 2013-04-22 12:01:06 EDT (Mon, 22 Apr 2013)
New Revision: 84008
URL: http://svn.boost.org/trac/boost/changeset/84008

Log:
Further minor corrections - standard text is added by reference to a separate file
Binary files modified:
   sandbox/precision/libs/precision/doc/precision.pdf
Text files modified:
   sandbox/precision/libs/precision/doc/html/index.html | 5
   sandbox/precision/libs/precision/doc/html/precision/literals.html | 6
   sandbox/precision/libs/precision/doc/html/precision/thestandard.html | 144 ---------------------------------------
   sandbox/precision/libs/precision/doc/html/precision/thetypedefs.html | 4
   sandbox/precision/libs/precision/doc/html/precision/version_id.html | 2
   sandbox/precision/libs/precision/doc/n3626 | 2
   sandbox/precision/libs/precision/doc/precision.qbk | 110 ++----------------------------
   7 files changed, 20 insertions(+), 253 deletions(-)

Modified: sandbox/precision/libs/precision/doc/html/index.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/index.html (original)
+++ sandbox/precision/libs/precision/doc/html/index.html 2013-04-22 12:01:06 EDT (Mon, 22 Apr 2013)
@@ -71,14 +71,15 @@
     ISO/IEC JTC1 SC22 WG14/ Numerics N1703 - 2013-04-18
   </p>
 <p>
- Revised after WG21/SG6 meeting 18 Apr 2013.
+ Revised after WG21/SG6 meeting 18 Apr 2013, and 22 Apr 2013 adding a reference
+ to standard text in raw html.
   </p>
 <p>
     Comments and suggestions to Paul.A.Bristow pbristow_at_hetp.u-net.com.
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: April 19, 2013 at 13:30:19 GMT</small></p></td>
+<td align="left"><p><small>Last revised: April 22, 2013 at 16:00:41 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: sandbox/precision/libs/precision/doc/html/precision/literals.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/precision/literals.html (original)
+++ sandbox/precision/libs/precision/doc/html/precision/literals.html 2013-04-22 12:01:06 EDT (Mon, 22 Apr 2013)
@@ -37,7 +37,7 @@
       The header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">cstdfloat</span><span class="special">&gt;</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">80</span> <span class="number">128</span> <span class="number">256</span> <span class="number">512</span> <span class="identifier">MAX</span><span class="special">}</span><span class="identifier">_C</span>
+<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">80</span> <span class="number">128</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>
@@ -59,8 +59,8 @@
       In addition, the header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">cstdfloat</span><span class="special">&gt;</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">80</span> <span class="number">128</span> <span class="number">256</span> <span class="number">512</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">80</span> <span class="number">128</span> <span class="number">256</span> <span class="number">512</span><span class="special">}</span><span class="identifier">_MAX</span>
+<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">80</span> <span class="number">128</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">80</span> <span class="number">128</span><span class="special">}</span><span class="identifier">_MAX</span>
 <span class="identifier">FLOATMAX_MIN</span>
 <span class="identifier">FLOATMAX_MAX</span>
 </pre>

Modified: sandbox/precision/libs/precision/doc/html/precision/thestandard.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/precision/thestandard.html (original)
+++ sandbox/precision/libs/precision/doc/html/precision/thestandard.html 2013-04-22 12:01:06 EDT (Mon, 22 Apr 2013)
@@ -73,149 +73,9 @@
       18.11 Floating-Point Types having Specified Widths
     </p>
 <p>
- 18.11.1 Header &lt;cstdfloat&gt; synopsis [cstdfloat.syn]
+ <a href="https://svn.boost.org/svn/boost/sandbox/precision/libs/precision/doc/n3626%20standard.html" target="_top">n3626
+ standard text</a>
     </p>
-<p>
- Header <code class="computeroutput"><span class="identifier">cstdfloat</span><span class="special">.</span><span class="identifier">h</span></code>
- </p>
-<p>
- All implementations should define this header, even if none of the <code class="computeroutput"><span class="keyword">typedef</span></code>s are available, when it will be an empty
- file.
- </p>
-<p>
- Only those <code class="computeroutput"><span class="keyword">typedef</span></code>s that are appropriate
- should be defined. For example, if a <code class="computeroutput"><span class="keyword">double</span></code>
- type is not in IEEE754 format, then <code class="computeroutput"><span class="keyword">typedef</span>
- <span class="identifier">floating</span><span class="special">-</span><span class="identifier">point</span><span class="special">-</span><span class="identifier">type</span>
- <span class="identifier">float64_t</span></code> should <span class="bold"><strong>not</strong></span>
- be defined. This will ensure that programs that try to use a <code class="computeroutput"><span class="keyword">typedef</span></code> that is not defined on that platform
- will simply fail to compile.
- </p>
-<p>
- <code class="computeroutput"><span class="keyword">typedef</span></code>s of the format <code class="computeroutput"><span class="identifier">floatN_t</span></code> are for IEE754 types (were available)
- providing exactly N bits. For these types that are defined, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_iec559</span> <span class="special">==</span> <span class="keyword">true</span></code>.
- </p>
-<p>
- <code class="computeroutput"><span class="keyword">typedef</span></code>s of the format <code class="computeroutput"><span class="identifier">float_leastN_t</span></code> provide types with at least
- the precision N, but do <span class="bold"><strong>not</strong></span> specify the layout.
- </p>
-<p>
- <code class="computeroutput"><span class="keyword">typedef</span></code>s of the format <code class="computeroutput"><span class="identifier">float_fastN_t</span></code> provide types with at least
- the precision N, and provide the fastest execution, and do <span class="bold"><strong>not</strong></span>
- specify the layout.
- </p>
-<p>
- The use of denormals is implementation dependent, but can be determined for
- any type T from <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">has_denorm</span><span class="special">,</span> <span class="identifier">denorm_min</span></code>
- and <code class="computeroutput"><span class="identifier">float_denorm_style</span></code>.
- </p>
-<p>
- The endianness of the layout of the floating-point types is not specified here
- (though it may be possible to determine this - see note 9).
- </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">float8_t</span><span class="special">;</span> <span class="comment">// optional (See note 1).</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 (See note 2).</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">float24_t</span><span class="special">;</span> <span class="comment">// optional (See note 3.</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 (See note 4).</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 (See note 5).</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 (See note 6).</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 (See note 7).</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 (largest floating-point type available).</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_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_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="special">}</span>
-</pre>
-<p>
- Notes
- </p>
-<p>
- 1 There is no IEEE754/IEC559 specification for a 8-bit floating-point type,
- so the layout is implementation dependent. The type should occupy exactly 8
- bits to allow optimisation.
- </p>
-<p>
- 2 There is no IEEE754/IEC559 specification for a 24-bit floating-point type,
- so the layout is implementation dependent.
- </p>
-<p>
- 3 IEEE754 Half precision.
- </p>
-<p>
- 4 IEEE754 Single precision.
- </p>
-<p>
- 5 IEEE754 Double precision.
- </p>
-<p>
- 6 IEEE754 Extended precision. This type may be implemented using 128 bits,
- with padding. The size and location of any padding is implementation dependent,
- so this type is unlikely to be suitable for binary interchange.
- </p>
-<p>
- 7 IEEE754 Quadruple precision.
- </p>
-<p>
- 8 The use of denormals is implementation dependent, but can be determined for
- any type T from <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">has_denorm</span><span class="special">,</span> <span class="identifier">denorm_min</span></code>
- and <code class="computeroutput"><span class="identifier">float_denorm_style</span></code>.
- </p>
-<p>
- 9 If cooperating programs wish to try to use binary interchange for IEEE754/IEC559
- types of <code class="computeroutput"><span class="identifier">float_N_t</span></code>, for example
- for serialization, because the endianness of the layout of the floating-point
- types is not specified (but may be determined) therefore programs must ensure
- that they all use the same endianness and the same use of denormals.
- </p>
-<p>
- The header <code class="computeroutput"><span class="identifier">stdfloat</span><span class="special">.</span><span class="identifier">h</span></code> (called by <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">cstdfloat</span><span class="special">&gt;</span></code>
- should also contain all necessary C 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">80</span> <span class="number">128</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="error">`</span><span class="preprocessor">#include</span> <span class="identifier">cstdfloat</span><span class="special">.</span><span class="identifier">h</span><span class="error">`</span> <span class="keyword">or</span> <span class="error">`</span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cstdfloat</span><span class="special">&gt;</span><span class="error">`</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="keyword">const</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">&lt;</span><span class="identifier">cstdfloat</span><span class="special">&gt;</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">80</span> <span class="number">128</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">80</span> <span class="number">128</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
- typedefs having specified widths at compile-time. For example,
- </p>
-<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">limits</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cstdfloat</span><span class="special">&gt;</span>
-
-<span class="identifier">static_assert</span><span class="special">(</span><span class="identifier">FLOATMAX_MAX</span> <span class="special">&gt;</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">)(),</span>
- <span class="string">"The iec559 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>

Modified: sandbox/precision/libs/precision/doc/html/precision/thetypedefs.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/precision/thetypedefs.html (original)
+++ sandbox/precision/libs/precision/doc/html/precision/thetypedefs.html 2013-04-22 12:01:06 EDT (Mon, 22 Apr 2013)
@@ -80,8 +80,8 @@
 <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
+ and <code class="computeroutput"><span class="identifier">float128_t</span></code> will probably
+ 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>

Modified: sandbox/precision/libs/precision/doc/html/precision/version_id.html
==============================================================================
--- sandbox/precision/libs/precision/doc/html/precision/version_id.html (original)
+++ sandbox/precision/libs/precision/doc/html/precision/version_id.html 2013-04-22 12:01:06 EDT (Mon, 22 Apr 2013)
@@ -26,7 +26,7 @@
 <a name="precision.version_id"></a><a class="link" href="version_id.html" title="Version Info">Version Info</a>
 </h2></div></div></div>
 <p>
- Last edit to Quickbook file precision.qbk was at 02:30:19 PM on 2013-Apr-19.
+ Last edit to Quickbook file precision.qbk was at 05:00:41 PM on 2013-Apr-22.
     </p>
 <div class="tip"><table border="0" summary="Tip">
 <tr>

Modified: sandbox/precision/libs/precision/doc/n3626 standard.html
==============================================================================
--- sandbox/precision/libs/precision/doc/n3626 standard.html (original)
+++ sandbox/precision/libs/precision/doc/n3626 standard.html 2013-04-22 12:01:06 EDT (Mon, 22 Apr 2013)
@@ -1,4 +1,4 @@
-<HTML><HEAD><TITLE>N3626, Proposal for Unbounded-Precision Integer Types</TITLE></HEAD><BODY>
+<HTML><HEAD><TITLE>N3626, Proposal for floating-point-typedefs Having Specified Widths</TITLE></HEAD><BODY>
 
 <CENTER>
 <H1><A NAME="N3626, Proposal for floating-point-typedefs Having Specified Widths">Proposal for floating-point-typedefs Having Specified Widths</A></H1>

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

Modified: sandbox/precision/libs/precision/doc/precision.qbk
==============================================================================
--- sandbox/precision/libs/precision/doc/precision.qbk (original)
+++ sandbox/precision/libs/precision/doc/precision.qbk 2013-04-22 12:01:06 EDT (Mon, 22 Apr 2013)
@@ -17,7 +17,7 @@
 
 ISO/IEC JTC1 SC22 WG14/ Numerics N1703 - 2013-04-18
 
-Revised after WG21/SG6 meeting 18 Apr 2013.
+Revised after WG21/SG6 meeting 18 Apr 2013, and 22 Apr 2013 adding a reference to standard text in raw html.
 
 Comments and suggestions to Paul.A.Bristow pbristow_at_hetp.u-net.com.
 
@@ -180,7 +180,7 @@
 
 It means that floating-point software written with
 `float16_t`, `float32_t`, `float64_t`, and `float128_t`
-should behave identically when used on any platform
+will probably behave identically when used on any platform
 with any implementation that correctly supports the `typedef`s.
 
 It also creates the opportunity to implement quadruple-precision (__IEEE_Quad)
@@ -192,7 +192,8 @@
 * `float11_t, float24_t, float53_t, float113_t, ...`
 * `float16_t, float32_t, float64_t, float128_t, ...`
 
-The first set above is intuitively coined from [@http://dx.doi.org/10.1109/IEEESTD.2008.4610935 IEE754:2008].
+The first set above is intuitively coined from
+[@http://dx.doi.org/10.1109/IEEESTD.2008.4610935 IEE754:2008].
 It is also consistent with the gist of integer types having specified widths
 such as `int64_t`, in so far as the number of binary digits of ['significand] precision
 is contained within the name of the data type.
@@ -319,7 +320,7 @@
 The header `<cstdfloat>` should contain all necessary
 C-style function macros in the form shown below.
 
- FLOAT{16 32 64 80 128 256 512 MAX}_C
+ FLOAT{16 32 64 80 128 MAX}_C
 
 The code below, for example, initializes a constant `float128_t`
 value using one of these macros.
@@ -338,8 +339,8 @@
 In addition, the header `<cstdfloat>` should contain all
 necessary macros of the form:
 
- FLOAT_[FAST LEAST]{16 32 64 80 128 256 512}_MIN
- FLOAT_[FAST LEAST]{16 32 64 80 128 256 512}_MAX
+ FLOAT_[FAST LEAST]{16 32 64 80 128}_MIN
+ FLOAT_[FAST LEAST]{16 32 64 80 128}_MAX
   FLOATMAX_MIN
   FLOATMAX_MAX
 
@@ -395,102 +396,7 @@
 
 18.11 Floating-Point Types having Specified Widths
 
-18.11.1 Header <cstdfloat> synopsis [cstdfloat.syn]
-
-Header `cstdfloat.h`
-
-All implementations should define this header, even if none of the `typedef`s are available, when it will be an empty file.
-
-Only those `typedef`s that are appropriate should be defined. For example, if a `double` type is not in IEEE754 format,
-then `typedef floating-point-type float64_t` should *not* be defined.
-This will ensure that programs that try to use a `typedef` that is not defined on that platform will simply fail to compile.
-
-`typedef`s of the format `floatN_t` are for IEE754 types (were available) providing exactly N bits.
-For these types that are defined, `std::numeric_limits<T>::is_iec559 == true`.
-
-`typedef`s of the format `float_leastN_t` provide types with at least the precision N, but do *not* specify the layout.
-
-`typedef`s of the format `float_fastN_t` provide types with at least the precision N, and provide the fastest execution, and do *not* specify the layout.
-
-The use of denormals is implementation dependent, but can be determined for any type T from `std::numeric_limits<T>::has_denorm, denorm_min` and `float_denorm_style`.
-
-The endianness of the layout of the floating-point types is not specified here (though it may be possible to determine this - see note 9).
-
- namespace std
- {
- typedef floating-point type float8_t; // optional (See note 1).
- typedef floating-point type float16_t; // optional (See note 2).
- typedef floating-point type float24_t; // optional (See note 3.
- typedef floating-point type float32_t; // optional (See note 4).
- typedef floating-point type float64_t; // optional (See note 5).
- typedef floating-point type float80_t; // optional (See note 6).
- typedef floating-point type float128_t; // optional (See note 7).
- typedef floating-point type floatmax_t; // optional (largest floating-point type available).
-
- typedef floating-point type float_least16_t; // optional.
- typedef floating-point type float_least32_t; // optional.
- typedef floating-point type float_least64_t; // optional.
- typedef floating-point type float_least128_t; // optional.
-
- typedef floating-point type float_fast16_t; // optional.
- typedef floating-point type float_fast32_t; // optional.
- typedef floating-point type float_fast64_t; // optional.
- typedef floating-point type float_fast80_t; // optional.
- typedef floating-point type float_fast128_t; // optional.
- }
-
-Notes
-
-1 There is no IEEE754/IEC559 specification for a 8-bit floating-point type, so the layout is implementation dependent. The type should occupy exactly 8 bits to allow optimisation.
-
-2 There is no IEEE754/IEC559 specification for a 24-bit floating-point type, so the layout is implementation dependent.
-
-3 IEEE754 Half precision.
-
-4 IEEE754 Single precision.
-
-5 IEEE754 Double precision.
-
-6 IEEE754 Extended precision. This type may be implemented using 128 bits, with padding.
-The size and location of any padding is implementation dependent, so this type is unlikely to be suitable for binary interchange.
-
-7 IEEE754 Quadruple precision.
-
-8 The use of denormals is implementation dependent, but can be determined for any type T from `std::numeric_limits<T>::has_denorm, denorm_min` and `float_denorm_style`.
-
-9 If cooperating programs wish to try to use binary interchange for IEEE754/IEC559 types of `float_N_t`,
-for example for serialization,
-because the endianness of the layout of the floating-point types is not specified (but may be determined)
-therefore programs must ensure that they all use the same endianness and the same use of denormals.
-
-The header `stdfloat.h` (called by `<cstdfloat>` should also contain all necessary C function macros in the form shown below.
-
- FLOAT{16 32 64 80 128 MAX}_C
-
-The code below, for example, initializes a constant `float128_t` value using one of these macros.
-
- `#include cstdfloat.h` or `#include <cstdfloat>`
-
- constexpr std::float128_t euler = FLOAT128_C(0.57721566490153286060651209008240243104216);
-
-The following code initializes a constant `float16_t` value using another one of these macros.
-
- const std::float16_t euler = FLOAT16_C(0.577216);
-
-In addition, the header `<cstdfloat>` should contain all necessary macros of the form:
-
- FLOAT_[FAST LEAST]{16 32 64 80 128}_MIN
- FLOAT_[FAST LEAST]{16 32 64 80 128}_MAX
- FLOATMAX_MIN
- FLOATMAX_MAX
-
-These macros can be used to query the ranges of the optional floating-point typedefs having specified widths at compile-time. For example,
-
- #include <limits>
- #include <cstdfloat>
-
- static_assert(FLOATMAX_MAX > (std::numeric_limits<float>::max)(),
- "The iec559 floating-point range is too small.");
+[@https://svn.boost.org/svn/boost/sandbox/precision/libs/precision/doc/n3626%20standard.html n3626 standard text]
 
 [endsect] [/section:thestandard Place in the standard]
 


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