manual n1256 fixes (annexes)
authornsz <nsz@port70.net>
Fri, 22 Jul 2011 21:26:40 +0000 (23:26 +0200)
committernsz <nsz@port70.net>
Fri, 22 Jul 2011 21:26:40 +0000 (23:26 +0200)
n1256.html

index 30198be..7513496 100644 (file)
@@ -21630,100 +21630,68 @@ If a length modifier appears with any conversion specifier other than as specifi
  This table is reproduced unchanged from ISO/IEC TR 10176:1998, produced by ISO/IEC
  JTC 1/SC 22/WG 20, except for the omission of ranges that are part of the basic character
  sets.
- Latin:            00AA, 00BA, 00C0-00D6, 00D8-00F6, 00F8-01F5, 01FA-0217,
-<pre>
+<table border=1>
+<tr><td> Latin:    <td>        00AA, 00BA, 00C0-00D6, 00D8-00F6, 00F8-01F5, 01FA-0217,
                    0250-02A8, 1E00-1E9B, 1EA0-1EF9, 207F
-</pre>
- Greek:            0386, 0388-038A, 038C, 038E-03A1, 03A3-03CE, 03D0-03D6,
-<pre>
+<tr><td> Greek:    <td>        0386, 0388-038A, 038C, 038E-03A1, 03A3-03CE, 03D0-03D6,
                    03DA, 03DC, 03DE, 03E0, 03E2-03F3, 1F00-1F15, 1F18-1F1D,
                    1F20-1F45, 1F48-1F4D, 1F50-1F57, 1F59, 1F5B, 1F5D,
                    1F5F-1F7D, 1F80-1FB4, 1FB6-1FBC, 1FC2-1FC4, 1FC6-1FCC,
                    1FD0-1FD3, 1FD6-1FDB, 1FE0-1FEC, 1FF2-1FF4, 1FF6-1FFC
-</pre>
- Cyrillic:         0401-040C, 040E-044F, 0451-045C, 045E-0481, 0490-04C4,
-<pre>
+<tr><td> Cyrillic: <td>        0401-040C, 040E-044F, 0451-045C, 045E-0481, 0490-04C4,
                    04C7-04C8, 04CB-04CC, 04D0-04EB, 04EE-04F5, 04F8-04F9
-</pre>
- Armenian:         0531-0556, 0561-0587
- Hebrew:           05B0-05B9,      05BB-05BD,       05BF,   05C1-05C2,      05D0-05EA,
-<pre>
+<tr><td> Armenian: <td>        0531-0556, 0561-0587
+<tr><td> Hebrew:   <td>        05B0-05B9,      05BB-05BD,       05BF,   05C1-05C2,      05D0-05EA,
                    05F0-05F2
-</pre>
- Arabic:           0621-063A, 0640-0652, 0670-06B7, 06BA-06BE, 06C0-06CE,
-<pre>
+<tr><td> Arabic:   <td>        0621-063A, 0640-0652, 0670-06B7, 06BA-06BE, 06C0-06CE,
                    06D0-06DC, 06E5-06E8, 06EA-06ED
-</pre>
- Devanagari:       0901-0903, 0905-0939, 093E-094D, 0950-0952, 0958-0963
- Bengali:          0981-0983, 0985-098C, 098F-0990, 0993-09A8, 09AA-09B0,
-<pre>
+<tr><td> Devanagari:<td>       0901-0903, 0905-0939, 093E-094D, 0950-0952, 0958-0963
+<tr><td> Bengali:   <td>       0981-0983, 0985-098C, 098F-0990, 0993-09A8, 09AA-09B0,
                    09B2, 09B6-09B9, 09BE-09C4, 09C7-09C8, 09CB-09CD,
                    09DC-09DD, 09DF-09E3, 09F0-09F1
-</pre>
- Gurmukhi:         0A02, 0A05-0A0A, 0A0F-0A10, 0A13-0A28, 0A2A-0A30,
-<pre>
+<tr><td> Gurmukhi:  <td>       0A02, 0A05-0A0A, 0A0F-0A10, 0A13-0A28, 0A2A-0A30,
                    0A32-0A33, 0A35-0A36, 0A38-0A39, 0A3E-0A42, 0A47-0A48,
                    0A4B-0A4D, 0A59-0A5C, 0A5E, 0A74
-</pre>
- Gujarati:         0A81-0A83, 0A85-0A8B, 0A8D, 0A8F-0A91, 0A93-0AA8,
-<pre>
+<tr><td> Gujarati:  <td>       0A81-0A83, 0A85-0A8B, 0A8D, 0A8F-0A91, 0A93-0AA8,
                    0AAA-0AB0,    0AB2-0AB3,     0AB5-0AB9, 0ABD-0AC5,
                    0AC7-0AC9, 0ACB-0ACD, 0AD0, 0AE0
-</pre>
- Oriya:            0B01-0B03, 0B05-0B0C, 0B0F-0B10, 0B13-0B28, 0B2A-0B30,
+<tr><td> Oriya:     <td>       0B01-0B03, 0B05-0B0C, 0B0F-0B10, 0B13-0B28, 0B2A-0B30,
 <!--page 453 -->
-<pre>
                    0B32-0B33, 0B36-0B39, 0B3E-0B43, 0B47-0B48, 0B4B-0B4D,
                  0B5C-0B5D, 0B5F-0B61
-</pre>
- Tamil:          0B82-0B83, 0B85-0B8A, 0B8E-0B90, 0B92-0B95, 0B99-0B9A,
-<pre>
+<tr><td> Tamil:     <td>     0B82-0B83, 0B85-0B8A, 0B8E-0B90, 0B92-0B95, 0B99-0B9A,
                  0B9C, 0B9E-0B9F, 0BA3-0BA4, 0BA8-0BAA, 0BAE-0BB5,
                  0BB7-0BB9, 0BBE-0BC2, 0BC6-0BC8, 0BCA-0BCD
-</pre>
- Telugu:         0C01-0C03, 0C05-0C0C, 0C0E-0C10, 0C12-0C28, 0C2A-0C33,
-<pre>
+<tr><td> Telugu:    <td>     0C01-0C03, 0C05-0C0C, 0C0E-0C10, 0C12-0C28, 0C2A-0C33,
                  0C35-0C39, 0C3E-0C44, 0C46-0C48, 0C4A-0C4D, 0C60-0C61
-</pre>
- Kannada:        0C82-0C83, 0C85-0C8C, 0C8E-0C90, 0C92-0CA8, 0CAA-0CB3,
-<pre>
+<tr><td> Kannada:   <td>     0C82-0C83, 0C85-0C8C, 0C8E-0C90, 0C92-0CA8, 0CAA-0CB3,
                  0CB5-0CB9, 0CBE-0CC4, 0CC6-0CC8, 0CCA-0CCD, 0CDE,
                  0CE0-0CE1
-</pre>
- Malayalam:      0D02-0D03, 0D05-0D0C, 0D0E-0D10, 0D12-0D28, 0D2A-0D39,
-<pre>
+<tr><td> Malayalam: <td>     0D02-0D03, 0D05-0D0C, 0D0E-0D10, 0D12-0D28, 0D2A-0D39,
                  0D3E-0D43, 0D46-0D48, 0D4A-0D4D, 0D60-0D61
-</pre>
- Thai:           0E01-0E3A, 0E40-0E5B
- Lao:            0E81-0E82, 0E84, 0E87-0E88, 0E8A, 0E8D, 0E94-0E97,
-<pre>
+<tr><td> Thai:      <td>     0E01-0E3A, 0E40-0E5B
+<tr><td> Lao:       <td>     0E81-0E82, 0E84, 0E87-0E88, 0E8A, 0E8D, 0E94-0E97,
                  0E99-0E9F,   0EA1-0EA3,  0EA5,  0EA7,  0EAA-0EAB,
                  0EAD-0EAE, 0EB0-0EB9, 0EBB-0EBD, 0EC0-0EC4, 0EC6,
                  0EC8-0ECD, 0EDC-0EDD
-</pre>
- Tibetan:        0F00, 0F18-0F19, 0F35, 0F37, 0F39, 0F3E-0F47, 0F49-0F69,
-<pre>
+<tr><td> Tibetan:   <td>     0F00, 0F18-0F19, 0F35, 0F37, 0F39, 0F3E-0F47, 0F49-0F69,
                  0F71-0F84, 0F86-0F8B, 0F90-0F95, 0F97, 0F99-0FAD,
                  0FB1-0FB7, 0FB9
-</pre>
- Georgian:       10A0-10C5, 10D0-10F6
- Hiragana:       3041-3093, 309B-309C
- Katakana:       30A1-30F6, 30FB-30FC
- Bopomofo:       3105-312C
- CJK Unified Ideographs: 4E00-9FA5
- Hangul:         AC00-D7A3
- Digits:         0660-0669, 06F0-06F9, 0966-096F, 09E6-09EF, 0A66-0A6F,
-<pre>
+<tr><td> Georgian:  <td>     10A0-10C5, 10D0-10F6
+<tr><td> Hiragana:  <td>     3041-3093, 309B-309C
+<tr><td> Katakana:  <td>     30A1-30F6, 30FB-30FC
+<tr><td> Bopomofo:  <td>     3105-312C
+<tr><td> CJK Unified Ideographs:<td> 4E00-9FA5
+<tr><td> Hangul:    <td>     AC00-D7A3
+<tr><td> Digits:    <td>     0660-0669, 06F0-06F9, 0966-096F, 09E6-09EF, 0A66-0A6F,
                  0AE6-0AEF, 0B66-0B6F, 0BE7-0BEF, 0C66-0C6F, 0CE6-0CEF,
                  0D66-0D6F, 0E50-0E59, 0ED0-0ED9, 0F20-0F33
-</pre>
- Special characters: 00B5, 00B7, 02B0-02B8, 02BB, 02BD-02C1, 02D0-02D1,
+<tr><td> Special characters:<td> 00B5, 00B7, 02B0-02B8, 02BB, 02BD-02C1, 02D0-02D1,
 <!--page 454 -->
-<pre>
                     02E0-02E4, 037A, 0559, 093D, 0B3D, 1FBE, 203F-2040, 2102,
                     2107, 210A-2113, 2115, 2118-211D, 2124, 2126, 2128, 212A-2131,
                     2133-2138, 2160-2182, 3005-3007, 3021-3029
-</pre>
+</table>
 
 <h2><a name="E" href="#E">Annex E</a></h2>
 <pre>
@@ -22214,61 +22182,39 @@ If a length modifier appears with any conversion specifier other than as specifi
 
 <h4><a name="F.8.2" href="#F.8.2">F.8.2 Expression transformations</a></h4>
 <p><!--para 1 -->
- x / 2 &lt;-&gt; x * 0.5                         Although similar transformations involving inexact
-<pre>
+<table border=1>
+<tr><td><pre> x / 2 &lt;-&gt; x * 0.5    </pre><td>                 Although similar transformations involving inexact
                                          constants generally do not yield numerically equivalent
                                          expressions, if the constants are exact then such
                                          transformations can be made on IEC 60559 machines
                                          and others that round perfectly.
-</pre>
- 1 * x and x / 1 -&gt; x                     The expressions 1 * x, x / 1, and x are equivalent
-<pre>
+<tr><td><pre> 1 * x and x / 1 -&gt; x    </pre><td>             The expressions 1 * x, x / 1, and x are equivalent
                                          (on IEC 60559 machines, among others).<sup><a href="#note317"><b>317)</b></a></sup>
-</pre>
- x / x -&gt; 1.0                             The expressions x / x and 1.0 are not equivalent if x
-<pre>
+<tr><td><pre> x / x -&gt; 1.0            </pre><td>             The expressions x / x and 1.0 are not equivalent if x
                                          can be zero, infinite, or NaN.
-</pre>
- x - y &lt;-&gt; x + (-y)                        The expressions x - y, x + (-y), and (-y) + x
-<pre>
+<tr><td><pre> x - y &lt;-&gt; x + (-y)   </pre><td>                 The expressions x - y, x + (-y), and (-y) + x
                                          are equivalent (on IEC 60559 machines, among others).
-</pre>
- x - y &lt;-&gt; -(y - x)                        The expressions x - y and -(y - x) are not
-<pre>
+<tr><td><pre> x - y &lt;-&gt; -(y - x)   </pre><td>                 The expressions x - y and -(y - x) are not
                                          equivalent because 1 - 1 is +0 but -(1 - 1) is -0 (in the
                                          default rounding direction).<sup><a href="#note318"><b>318)</b></a></sup>
-</pre>
- x - x -&gt; 0.0                             The expressions x - x and 0.0 are not equivalent if
-<pre>
+<tr><td><pre> x - x -&gt; 0.0            </pre><td>             The expressions x - x and 0.0 are not equivalent if
                                          x is a NaN or infinite.
-</pre>
- 0 * x -&gt; 0.0                             The expressions 0 * x and 0.0 are not equivalent if
-<pre>
+<tr><td><pre> 0 * x -&gt; 0.0            </pre><td>             The expressions 0 * x and 0.0 are not equivalent if
                                          x is a NaN, infinite, or -0.
-</pre>
- x + 0-&gt;x                                 The expressions x + 0 and x are not equivalent if x is
-<pre>
+<tr><td><pre> x + 0 -&gt; x              </pre><td>             The expressions x + 0 and x are not equivalent if x is
                                          -0, because (-0) + (+0) yields +0 (in the default
                                          rounding direction), not -0.
-</pre>
- x - 0-&gt;x                                 (+0) - (+0) yields -0 when rounding is downward
-<pre>
+<tr><td><pre> x - 0 -&gt; x              </pre><td>             (+0) - (+0) yields -0 when rounding is downward
                                          (toward -(inf)), but +0 otherwise, and (-0) - (+0) always
                                          yields -0; so, if the state of the FENV_ACCESS pragma
                                          is ''off'', promising default rounding, then the
                                          implementation can replace x - 0 by x, even if x
-</pre>
 <!--page 465 -->
-<pre>
                                           might be zero.
-</pre>
- -x &lt;-&gt; 0 - x                               The expressions -x and 0 - x are not equivalent if x
-<pre>
+<tr><td><pre> -x &lt;-&gt; 0 - x         </pre><td>                  The expressions -x and 0 - x are not equivalent if x
                                           is +0, because -(+0) yields -0, but 0 - (+0) yields +0
                                           (unless rounding is downward).
-</pre>
+</table>
 
 <p><b>Footnotes</b>
 <p><small><a name="note317" href="#note317">317)</a> Strict support for signaling NaNs -- not required by this specification -- would invalidate these and
@@ -22290,10 +22236,10 @@ If a length modifier appears with any conversion specifier other than as specifi
 
 <h4><a name="F.8.3" href="#F.8.3">F.8.3 Relational operators</a></h4>
 <p><!--para 1 -->
- x != x -&gt; false                           The statement x != x is true if x is a NaN.
- x == x -&gt; true                            The statement x == x is false if x is a NaN.
- x &lt; y -&gt; isless(x,y)                      (and similarly for &lt;=, &gt;, &gt;=) Though numerically
-<pre>
+<table border=1>
+<tr><td><pre> x != x -&gt; false          </pre><td>                 The statement x != x is true if x is a NaN.
+<tr><td><pre> x == x -&gt; true           </pre><td>                 The statement x == x is false if x is a NaN.
+<tr><td><pre> x &lt; y -&gt; isless(x,y)  </pre><td>                    (and similarly for &lt;=, &gt;, &gt;=) Though numerically
                                           equal, these expressions are not equivalent because of
                                           side effects when x or y is a NaN and the state of the
                                           FENV_ACCESS pragma is ''on''. This transformation,
@@ -22301,7 +22247,7 @@ If a length modifier appears with any conversion specifier other than as specifi
                                           cause the ''invalid'' floating-point exception for
                                           unordered cases, could be performed provided the state
                                           of the FENV_ACCESS pragma is ''off''.
-</pre>
+</table>
  The sense of relational operators shall be maintained. This includes handling unordered
  cases as expressed by the source code.
 <p><!--para 2 -->
@@ -23309,7 +23255,7 @@ If a length modifier appears with any conversion specifier other than as specifi
  and the result, the result has the same sign as the argument.
 <p><!--para 3 -->
  The functions are continuous onto both sides of their branch cuts, taking into account the
- sign of zero. For example, csqrt(-2 (+-) i0) = (+-)i(sqrt)2.  ???
+ sign of zero. For example, csqrt(-2 (+-) i0) = (+-)i(sqrt)(2).
 <p><!--para 4 -->
  Since complex and imaginary values are composed of real values, each function may be
  regarded as computing real values from real values. Except as noted, the functions treat
@@ -23661,11 +23607,11 @@ If a length modifier appears with any conversion specifier other than as specifi
  only integer divide-by-zero need be detected.
 <p><!--para 2 -->
  The parameters for the integer data types can be accessed by the following:
- maxint        INT_MAX, LONG_MAX, LLONG_MAX, UINT_MAX, ULONG_MAX,
 <pre>
+ maxint        INT_MAX, LONG_MAX, LLONG_MAX, UINT_MAX, ULONG_MAX,
                ULLONG_MAX
-</pre>
  minint        INT_MIN, LONG_MIN, LLONG_MIN
+</pre>
 <p><!--para 3 -->
  The parameter ''bounded'' is always true, and is not provided. The parameter ''minint''
  is always 0 for the unsigned types, and is not provided for those types.
@@ -23674,6 +23620,7 @@ If a length modifier appears with any conversion specifier other than as specifi
 <h5><a name="H.2.2.1" href="#H.2.2.1">H.2.2.1 Integer operations</a></h5>
 <p><!--para 1 -->
  The integer operations on integer types are the following:
+<pre>
  addI           x + y
  subI           x - y
  mulI           x * y
@@ -23687,6 +23634,7 @@ If a length modifier appears with any conversion specifier other than as specifi
  leqI           x &lt;= y
  gtrI           x &gt; y
  geqI           x &gt;= y
+</pre>
  where x and y are expressions of the same integer type.
 
 <h4><a name="H.2.3" href="#H.2.3">H.2.3 Floating-point types</a></h4>
@@ -23701,21 +23649,26 @@ If a length modifier appears with any conversion specifier other than as specifi
 <h5><a name="H.2.3.1" href="#H.2.3.1">H.2.3.1 Floating-point parameters</a></h5>
 <p><!--para 1 -->
  The parameters for a floating point data type can be accessed by the following:
+<pre>
  r              FLT_RADIX
  p              FLT_MANT_DIG, DBL_MANT_DIG, LDBL_MANT_DIG
  emax           FLT_MAX_EXP, DBL_MAX_EXP, LDBL_MAX_EXP
  emin           FLT_MIN_EXP, DBL_MIN_EXP, LDBL_MIN_EXP
+</pre>
 <p><!--para 2 -->
  The derived constants for the floating point types are accessed by the following:
 <!--page 495 -->
+<pre>
  fmax          FLT_MAX, DBL_MAX, LDBL_MAX
  fminN         FLT_MIN, DBL_MIN, LDBL_MIN
  epsilon       FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON
  rnd_style     FLT_ROUNDS
+</pre>
 
 <h5><a name="H.2.3.2" href="#H.2.3.2">H.2.3.2 Floating-point operations</a></h5>
 <p><!--para 1 -->
  The floating-point operations on floating-point types are the following:
+<pre>
  addF          x + y
  subF          x - y
  mulF          x * y
@@ -23724,9 +23677,7 @@ If a length modifier appears with any conversion specifier other than as specifi
  absF          fabsf(x), fabs(x), fabsl(x)
  exponentF     1.f+logbf(x), 1.0+logb(x), 1.L+logbl(x)
  scaleF        scalbnf(x, n), scalbn(x, n), scalbnl(x, n),
-<pre>
                scalblnf(x, li), scalbln(x, li), scalblnl(x, li)
-</pre>
  intpartF      modff(x, &amp;y), modf(x, &amp;y), modfl(x, &amp;y)
  fractpartF    modff(x, &amp;y), modf(x, &amp;y), modfl(x, &amp;y)
  eqF           x == y
@@ -23735,6 +23686,7 @@ If a length modifier appears with any conversion specifier other than as specifi
  leqF          x &lt;= y
  gtrF          x &gt; y
  geqF          x &gt;= y
+</pre>
  where x and y are expressions of the same floating point type, n is of type int, and li
  is of type long int.
 
@@ -23744,28 +23696,28 @@ If a length modifier appears with any conversion specifier other than as specifi
  that only one identifier for each is provided to map to LIA-1.
 <p><!--para 2 -->
  The FLT_ROUNDS parameter can be used to indicate the LIA-1 rounding styles:
+<pre>
  truncate      FLT_ROUNDS == 0
 <!--page 496 -->
  nearest        FLT_ROUNDS == 1
  other          FLT_ROUNDS != 0 &amp;&amp; FLT_ROUNDS != 1
+</pre>
  provided that an implementation extends FLT_ROUNDS to cover the rounding style used
  in all relevant LIA-1 operations, not just addition as in C.
 
 <h4><a name="H.2.4" href="#H.2.4">H.2.4 Type conversions</a></h4>
 <p><!--para 1 -->
  The LIA-1 type conversions are the following type casts:
- cvtI' -&gt; I      (int)i, (long int)i, (long long int)i,
 <pre>
+ cvtI' -&gt; I      (int)i, (long int)i, (long long int)i,
                 (unsigned int)i, (unsigned long int)i,
                 (unsigned long long int)i
-</pre>
  cvtF -&gt; I       (int)x, (long int)x, (long long int)x,
-<pre>
                 (unsigned int)x, (unsigned long int)x,
                 (unsigned long long int)x
-</pre>
  cvtI -&gt; F       (float)i, (double)i, (long double)i
  cvtF' -&gt; F      (float)x, (double)x, (long double)x
+</pre>
 <p><!--para 2 -->
  In the above conversions from floating to integer, the use of (cast)x can be replaced with
  (cast)round(x), (cast)rint(x), (cast)nearbyint(x), (cast)trunc(x),
@@ -23822,15 +23774,19 @@ If a length modifier appears with any conversion specifier other than as specifi
  C's <a href="#7.6">&lt;fenv.h&gt;</a> status flags are compatible with the LIA-1 indicators.
 <p><!--para 2 -->
  The following mapping is for floating-point types:
+<pre>
  undefined                FE_INVALID, FE_DIVBYZERO
  floating_overflow         FE_OVERFLOW
  underflow                FE_UNDERFLOW
+</pre>
 <p><!--para 3 -->
  The floating-point indicator interrogation and manipulation operations are:
+<pre>
  set_indicators          feraiseexcept(i)
  clear_indicators        feclearexcept(i)
  test_indicators         fetestexcept(i)
  current_indicators      fetestexcept(FE_ALL_EXCEPT)
+</pre>
  where i is an expression of type int representing a subset of the LIA-1 indicators.
 <p><!--para 4 -->
  C allows an implementation to provide the following LIA-1 required behavior: at
@@ -24976,9 +24932,9 @@ If a length modifier appears with any conversion specifier other than as specifi
 
 <h2><a name="Index" href="#Index">Index</a></h2>
 <pre>
- ??? x ???, <a href="#3.18">3.18</a>                                                    , (comma punctuator), <a href="#6.5.2">6.5.2</a>, <a href="#6.7">6.7</a>, <a href="#6.7.2.1">6.7.2.1</a>, <a href="#6.7.2.2">6.7.2.2</a>,
+ [^ x ^], <a href="#3.18">3.18</a>                                                    , (comma punctuator), <a href="#6.5.2">6.5.2</a>, <a href="#6.7">6.7</a>, <a href="#6.7.2.1">6.7.2.1</a>, <a href="#6.7.2.2">6.7.2.2</a>,
                                                                      <a href="#6.7.2.3">6.7.2.3</a>, <a href="#6.7.8">6.7.8</a>
- ??? x ???, <a href="#3.19">3.19</a>                                                    - (subtraction operator), <a href="#6.5.6">6.5.6</a>, <a href="#F.3">F.3</a>, <a href="#G.5.2">G.5.2</a>
+ [_ x _], <a href="#3.19">3.19</a>                                                    - (subtraction operator), <a href="#6.5.6">6.5.6</a>, <a href="#F.3">F.3</a>, <a href="#G.5.2">G.5.2</a>
  ! (logical negation operator), <a href="#6.5.3.3">6.5.3.3</a>                         - (unary minus operator), <a href="#6.5.3.3">6.5.3.3</a>, <a href="#F.3">F.3</a>
  != (inequality operator), <a href="#6.5.9">6.5.9</a>                                -- (postfix decrement operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.4">6.5.2.4</a>
  # operator, <a href="#6.10.3.2">6.10.3.2</a>                                           -- (prefix decrement operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.1">6.5.3.1</a>