<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en"><head>
<meta charset="utf-8"/>
<style type="text/css">
.open { text-decoration: none; font-size: larger; color: red; }
.review { text-decoration: none; font-size: larger; color: purple; }
.closed { text-decoration: none; font-size: larger; color: blue; }
.c17 { text-decoration: none; font-size: larger; color: black; }
.future { text-decoration: none; font-size: larger; color: orange; }
.c2x { text-decoration: none; font-size: larger; color: green; }
.published { text-decoration: none; font-size: larger; color: orange; }
</style>
<title>Clarification Request Summary for FPE 18661</title>
</head>
<body>
<h3 align="center">Clarification Request Summary for FPE 18661<br>Version 1.6</h3><a id="top"><b>Date:</b></a> April 2019
<table cellspacing="6" summary="Clarification Request Summary for FPE 18661">
<thead>
<tr style="background-color:Cornsilk">
<th>Request</th>
<th align="center" style="width:450px">Summary</th>
<th>Date</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr >
<td><a href="#dr_1">DR 1</a></td>
<td style="width:400px">P1: Typos</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr style="background-color:AliceBlue">
<td><a href="#dr_2">DR 2</a></td>
<td style="width:400px">P1: Functions that round result to narrower type don't always</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr >
<td><a href="#dr_3">DR 3</a></td>
<td style="width:400px">P1: feature macros and header file inclusions</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr style="background-color:AliceBlue">
<td><a href="#dr_4">DR 4</a></td>
<td style="width:400px">P3: Error in function name</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr >
<td><a href="#dr_5">DR 5</a></td>
<td style="width:400px">P1: Is return of same type convertFormat or copy?</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr style="background-color:AliceBlue">
<td><a href="#dr_6">DR 6</a></td>
<td style="width:400px">P1: <b>fetestexceptflag</b> and exceptions passed to <b>fegetexceptflag</b></td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr >
<td><a href="#dr_7">DR 7</a></td>
<td style="width:400px">P1: Editorial changes</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr style="background-color:AliceBlue">
<td><a href="#dr_8">DR 8</a></td>
<td style="width:400px">P2: Editorial clarification about number digits in the coefficient</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr >
<td><a href="#dr_9">DR 9</a></td>
<td style="width:400px">P2,P3: Missing specification for usual arithmetic conversions, tgmath</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr style="background-color:AliceBlue">
<td><a href="#dr_10">DR 10</a></td>
<td style="width:400px">P1: wrong type for <b>fesetmode<b> parameter</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr >
<td><a href="#dr_11">DR 11</a></td>
<td style="width:400px">P2: a-style formatting not IEC 60559 conformant</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr style="background-color:AliceBlue">
<td><a href="#dr_12">DR 12</a></td>
<td style="width:400px">P1: Zero payloads and <tt>set payload</tt> function</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr >
<td><a href="#dr_13">DR 13</a></td>
<td style="width:400px">P3: Type-generic macros for functions that round result to narrower type</td>
<td>04/2019</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr style="background-color:AliceBlue">
<td><a href="#dr_14">DR 14</a></td>
<td style="width:400px">P2: Effect of <tt>%a</tt> vs <tt>%A</tt> conversion specifiers</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr >
<td><a href="#dr_15">DR 15</a></td>
<td style="width:400px">P3: Characteristic macros for non-arithmetic formats</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr style="background-color:AliceBlue">
<td><a href="#dr_16">DR 16</a></td>
<td style="width:400px">P1: tgmath cbrt macro</td>
<td>04/2019</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr >
<td><a href="#dr_17">DR 17</a></td>
<td style="width:400px">P3: incommensurate arguments for comparison macros</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr style="background-color:AliceBlue">
<td><a href="#dr_18">DR 18</a></td>
<td style="width:400px">P4: missing specification of preferred quantum exponents</td>
<td>10/2018</td>
<td><span class="closed">Closed</span></td>
</tr>
<tr >
<td><a href="#dr_19">DR 19</a></td>
<td style="width:400px">P1: updating underflow definition</td>
<td>10/2018</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr style="background-color:AliceBlue">
<td><a href="#dr_20">DR 20</a></td>
<td style="width:400px">P1: changes for obsolescing DECIMAL_DIG</td>
<td>04/2019</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr >
<td><a href="#dr_21">DR 21</a></td>
<td style="width:400px">P1: printf of one-digit character string</td>
<td>04/2019</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr style="background-color:AliceBlue">
<td><a href="#dr_22">DR 22</a></td>
<td style="width:400px">P3: changes for obsolescing DECIMAL_DIG</td>
<td>04/2019</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr >
<td><a href="#dr_23">DR 23</a></td>
<td style="width:400px">P2: llquantexp invalid case</td>
<td>04/2019</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr style="background-color:AliceBlue">
<td><a href="#dr_24">DR 24</a></td>
<td style="width:400px">P1 remainder NaN case </td>
<td>04/2019</td>
<td><span class="c2x">C2x</span></td>
</tr>
<tr >
<td><a href="#dr_25">DR 25</a></td>
<td style="width:400px">P1 totalorder parameters</td>
<td>04/2019</td>
<td><span class="c2x">C2x</span></td>
</tr>
</table>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_1><b><u>DR 1</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_25">DR 25</a> Prev <— C2x —> Next <a href="#dr_2">DR 2</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas et al.<br>
<b>Submission Date:</b> 2016-03-19<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2029.pdf">N2029</a><br>
<b>Subject:</b> Part 1: Typos</p>
<p><b>Summary</b></p>
<ol><li>
Page 18: In C 7.6.1a#4, the last sentence, “functon” should be “function”.
</li>
<li>Page 48: In C 7.6.2.4a#3, “The <b>fetestexcept</b> function returns ...” should be “The
<b>fetestexceptflag</b> function returns ...”.
</li></ol>
<p><b>Suggested Technical Corrigendum</b></p>
<ol><li>Page 18: In C 7.6.1a, paragraph 4, the last sentence, change “functon” to “function”</li>
<li>Page 48: In C 7.6.2.4a#3, change “<b>fetestexcept</b>” to “<b><b>fetestexcept</b>flag</b>”.
</li></ol>
<hr>
<p>Apr 2016 meeting</p>
<p><b>Committee Discussion</b></p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
<p><b>Proposed Technical Corrigendum</b>
<p>
<ol><li>Page 18: In C 7.6.1a, paragraph 4, the last sentence, change “functon” to “function”</li>
<li>Page 48: In C 7.6.2.4a#3, change “<b>fetestexcept</b>” to “<b><b>fetestexcept</b>flag</b>”.
</li></ol>
<!-- LINKAGE --> <p align="center"> <a href="#dr_25">DR 25</a> Prev <— C2x —> Next <a href="#dr_2">DR 2</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_2><b><u>DR 2</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_1">DR 1</a> Prev <— C2x —> Next <a href="#dr_3">DR 3</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas et al.<br>
<b>Submission Date:</b> 2016-03-19<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2029.pdf">N2029</a><br>
<b>Subject:</b> Part 1: Functions that round result to narrower type don't always</p>
<p><b>Summary</b></p>
<p><b>Summary</b></p>
Page 38: The C 7.12.13a subclause heading is “Functions that round result to narrower type” and this is the way the functions in the subclause are referred to throughout the TS. In some cases, the functions in the subclause round their result to a type that isn’t really narrower than the parameter types. For example, this is true for the functions <b>daddl</b>, <b>dsubl</b>, etc. if the <b>long double</b> and <b>double</b> types have the same width (as is allowed). (With the extended types introduced in TS 18661-3, the destination type might be wider, as it might for <b>f32xaddf64</b>.)
</p><p>
The current way of referencing these functions reflects the usual situation, and is perhaps a helpful way of think about them generally. With a note about the uncharacteristic cases, it seems unlike to cause significant confusion. Also, changing all the references to these functions would be a large editorial undertaking, spanning multiple parts of the TS. Confusion could easily arise from having an inconsistent set of documents.</p>
<p><b>Suggested Technical Corrigendum</b></p>
Page 38: After the C 7.12.13a subclause heading, insert the following paragraph:
<blockquote>
[1] The functions in this subclause round their results to a type typically narrower than the parameter types.
</blockquote>
<br>
Page 40: After the change to C ending with “7.12.13a.6 Square root rounded to narrower type ... [3] These functions return the square root of x, rounded to the type of the function.”, insert the following:
<blockquote>
In 7.12.13a #1, attach a footnote to the wording:
<blockquote>typically narrower</blockquote>
where the footnote is:
<blockquote>
*) In some cases the destination type might not be narrower than the parameter types. For example, <b>double</b> might not be narrower than <b>long double</b>.
</blockquote>
</blockquote>
<hr>
<p>Apr 2016 meeting</p>
<p><b>Committee Discussion</b></p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
<p><b>Proposed Technical Corrigendum</b>
<p>
Page 38: After the C 7.12.13a subclause heading, insert the following paragraph:
<blockquote>
[1] The functions in this subclause round their results to a type typically narrower than the parameter types.
</blockquote>
<br>
Page 40: After the change to C ending with “7.12.13a.6 Square root rounded to narrower type ... [3] These functions return the square root of x, rounded to the type of the function.”, insert the following:
<blockquote>
In 7.12.13a #1, attach a footnote to the wording:
<blockquote>typically narrower</blockquote>
where the footnote is:
<blockquote>
*) In some cases the destination type might not be narrower than the parameter types. For example, <b>double</b> might not be narrower than <b>long double</b>.
</blockquote>
</blockquote>
<!-- LINKAGE --> <p align="center"> <a href="#dr_1">DR 1</a> Prev <— C2x —> Next <a href="#dr_3">DR 3</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_3><b><u>DR 3</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_2">DR 2</a> Prev <— C2x —> Next <a href="#dr_4">DR 4</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas et al.<br>
<b>Submission Date:</b> 2016-03-19<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2029.pdf">N2029</a><br>
<b>Subject:</b> Part 1: feature macros and header file inclusions/p>
<p><b>Summary</b></p>
ISO/IEC TS 18661-1 subclause 5.3 specifies interfaces that are defined or declared “only if <b>__STDC_WANT_IEC_60559_BFP_EXT__</b> is defined as a macro at the point in the source file where the header for the interface is first included.” C 7.12#1 says <b><tgmath.h></b> includes <b><math.h></b> and <b><complex.h></b>.<p>
So for
<blockquote>
<code><pre><b>
#include <math.h>
#define __STDC_WANT_IEC_60559_BFP_EXT__
#include <tgmath.h>
float f(float x) { return <b>nextup</b>(x); }
</b></pre></code>
</blockquote>
the <b>nextup</b> functions in <b><math.h></b> are not declared and the <b>nextup</b> macro in <b><tgmath.h></b> is defined. Since x has type float, the function determined by the <b>nextup</b> macro in <b><tgmath.h></b> is <b><b>nextup</b>f</b>. But is this function available to be called?
Another example. For
<blockquote>
<code><pre><b>
#include <limits.h>
#define __STDC_WANT_IEC_60559_BFP_EXT__
#include <math.h>
...
</pre></code></b>
</blockquote>
the <b>fromfp</b> functions in <b><math.h></b> are declared, but the <b>WIDTH</b> macros in <b><limits.h></b>, which are needed for portable use of the <b>fromfp</b> functions, are not defined.
In these examples, interfaces provided by one header are related to interfaces that are not provided by another header, because of the placement of the <b>WANT</b> macros. This leads to ambiguous cases (as in the first example above) and incomplete feature sets. Later parts of the TS have their own WANT macros, which compounds the problem. See also Joseph Myers’s <http://www.open-std.org/jtc1/sc22/wg14/13831>.
</p><p>
The suggested corrigendum below specifies that the same set of <b>WANT</b> macros must be defined at the points in the code where the relevant headers are first included. This results in fewer combinations of interfaces and provides one sets of interfaces that is consistent
and complete with respect to a given set of WANT macros.
<p><b>Suggested Technical Corrigendum</b></p>
Page 5: At the end of 5.3, insert:
<blockquote>
After 7.1.2#4, insert:
<blockquote>
[4a] Some standard headers define or declare identifiers contingent on whether certain macros whose names begin with <b>_STDC_WANT_IEC_60559_</b> and end with <b>_EXT_</b> are defined (by the user) at the point in the code where the header is first included. Within a preprocessing translation unit, the same set of such macros shall be defined for the first inclusion of all such headers.
</blockquote>
</blockquote>
<hr>
<p>Apr 2016 meeting</p>
<p><b>Committee Discussion</b></p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
<p><b>Proposed Technical Corrigendum</b>
<p>
Page 5: At the end of 5.3, insert:
<blockquote>
After 7.1.2#4, insert:
<blockquote>
[4a] Some standard headers define or declare identifiers contingent on whether certain macros whose names begin with <b>_STDC_WANT_IEC_60559_</b> and end with <b>_EXT_</b> are defined (by the user) at the point in the code where the header is first included. Within a preprocessing translation unit, the same set of such macros shall be defined for the first inclusion of all such headers.
</blockquote>
</blockquote>
<!-- LINKAGE --> <p align="center"> <a href="#dr_2">DR 2</a> Prev <— C2x —> Next <a href="#dr_4">DR 4</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_4><b><u>DR 4</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_3">DR 3</a> Prev <— C2x —> Next <a href="#dr_5">DR 5</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas et al.<br>
<b>Submission Date:</b> 2016-03-19<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2029.pdf">N2029</a><br>
<b>Subject:</b> Part 3: Error in function name/p>
<p><b>Summary</b></p>
Page 32: In 12.3, the function name is written as “<b>scoshdNx</b>”, instead of “<b>coshdNx</b>” as intended.
Although correcting the mistake could be seen as a substantive change, it is clear from the context that this function is in the family of <b>cosh</b> functions. It is extremely unlikely that any implementer would not have recognized the mistake and provided the function with the erroneous name.
<p><b>Suggested Technical Corrigendum</b></p>
Page 32: In 12.3, change “<b>scoshdNx</b>” to “<b>coshdNx</b>”.
<hr>
<p>Apr 2016 meeting</p>
<p><b>Committee Discussion</b></p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
<p><b>Proposed Technical Corrigendum</b>
<p>
Page 32: In 12.3, change “<b>scoshdNx</b>” to “<b>coshdNx</b>”.
<!-- LINKAGE --> <p align="center"> <a href="#dr_3">DR 3</a> Prev <— C2x —> Next <a href="#dr_5">DR 5</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_5><b><u>DR 5</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_4">DR 4</a> Prev <— C2x —> Next <a href="#dr_6">DR 6</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas<br>
<b>Submission Date:</b> 2016-09-10<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2077.html ">N2077</a><br>
<b>Subject:</b> Part 1: Is return of same type convertFormat or copy?</p>
<p><b>Summary</b></p>
<p class=MsoNormal style='margin-bottom:12.0pt;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Summary<o:p></o:p></span></b></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>This is about
the issue raised by Joseph Myers in email SC22WG14.14280:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;page-break-after:avoid'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>TS 18661-1 says "Whether C assignment (6.5.16) (and conversion as if
by assignment) to the same format is an IEC 60559 <span class=SpellE>convertFormat</span>
or copy operation is implementation-defined, even if </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'><<span
class=SpellE>fenv.h</span>></span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'> defines the
macro <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>FE_SNANS_ALWAYS_SIGNAL</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> (F.2.1).".<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Does this
apply to function return, where the return type of the function is the same as
the type of the expression passed to the return statement and no wider
evaluation format is in use - that is, may this act as either <span
class=SpellE>convertFormat</span> or copy? C11 F.6 clearly envisages that
such a return statement may do a conversion to the same type in the case of
wider evaluation formats. But 6.8.6.4#3 only refers to conversions
"If the expression has a type different from the return type of the
function in which it appears".<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>The specification, from F.3#3, quoted
above is incomplete in that it doesn’t cover function returns, which are not
assignments or conversions as if by assignment. As currently written, C11 +
TS18661-1 might be read to exclude the possibility of using <span class=SpellE>convertFormat</span>
in this case. A statement should be added to say that the implementation has
the option to apply <span class=SpellE>convertFormat</span> to the return value.
The change does not break existing implementations. <o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>The effect of <span class=SpellE>convertFormat</span>
would be that signaling <span class=SpellE>NaNs</span> would signal and <span
class=SpellE>noncanonical</span> representations would be <span class=SpellE>canonicalized</span>.
It is extremely unlikely that a program would depend on <span class=SpellE>convertFormat</span>
not being used.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><span
style="mso-spacerun:yes"> </span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Suggested
Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In Clause 8, to the text for C F.3#3:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>[3] Whether C
assignment (6.5.16) (and conversion as if by assignment) to the same format is
an IEC 60559 <span class=SpellE>convertFormat</span> or copy operation is
implementation-defined, even if </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'><<span class=SpellE>fenv.h</span>></span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> defines the macro </span><b><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>FE_SNANS_ALWAYS_SIGNAL</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> (F.2.1).<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>append the sentence:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If the return
expression of a </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>return</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> statement is evaluated to the
floating-point format of the return type, it is implementation-defined whether
a <span class=SpellE>convertFormat</span> operation is applied to the result of
the return expression.”<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>At the end of Clause 8, add:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>In F.3#3,
attach a footnote to the wording:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Whether C
assignment (6.5.16) (and conversion as if by assignment) to the same format is
an IEC 60559 <span class=SpellE>convertFormat</span> or copy operation<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>where the
footnote is:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>*) Where the
source and destination formats are the same, <span class=SpellE>convertFormat</span>
operations differ from copy operations in that <span class=SpellE>convertFormat</span>
operations raise the “invalid” floating-point exception on signaling <span
class=SpellE>NaN</span> inputs and do not propagate non-canonical encodings.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<hr>
<p>Oct 2016 meeting</p>
<p><b>Committee Discussion</b></p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
<p><b>Proposed Technical Corrigendum</b>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In Clause 8, to the text for C F.3#3:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>[3] Whether C
assignment (6.5.16) (and conversion as if by assignment) to the same format is
an IEC 60559 <span class=SpellE>convertFormat</span> or copy operation is
implementation-defined, even if </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'><<span class=SpellE>fenv.h</span>></span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> defines the macro </span><b><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>FE_SNANS_ALWAYS_SIGNAL</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> (F.2.1).<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>append the sentence:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If the return
expression of a </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>return</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> statement is evaluated to the
floating-point format of the return type, it is implementation-defined whether
a <span class=SpellE>convertFormat</span> operation is applied to the result of
the return expression.”<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>At the end of Clause 8, add:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>In F.3#3,
attach a footnote to the wording:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Whether C
assignment (6.5.16) (and conversion as if by assignment) to the same format is
an IEC 60559 <span class=SpellE>convertFormat</span> or copy operation<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>where the
footnote is:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>*) Where the
source and destination formats are the same, <span class=SpellE>convertFormat</span>
operations differ from copy operations in that <span class=SpellE>convertFormat</span>
operations raise the “invalid” floating-point exception on signaling <span
class=SpellE>NaN</span> inputs and do not propagate non-canonical encodings.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_4">DR 4</a> Prev <— C2x —> Next <a href="#dr_6">DR 6</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_6><b><u>DR 6</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_5">DR 5</a> Prev <— C2x —> Next <a href="#dr_7">DR 7</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas<br>
<b>Submission Date:</b> 2016-09-10<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2077.html ">N2077</a><br>
<b>Subject:</b> Part 1: <b>fetestexceptflag</b> and exceptions passed to <b>fegetexceptflag</b></p>
<p><b>Summary</b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>This is about the issue raised by Joseph
Myers in email SC22WG14.14328:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>TS 18661-1
says, for </span><span class=SpellE><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>fetestexceptflag</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, "The value of </span><b><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>*<span class=SpellE>flagp</span></span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> shall have been set by a previous call to </span><span class=SpellE><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>fegetexceptflag</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>.".<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>This
contrasts with the C11 wording for </span><span class=SpellE><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>fesetexceptflag</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, "The value of </span><b><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>*<span class=SpellE>flagp</span></span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> shall have been set by a previous call to </span><span class=SpellE><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>fegetexceptflag</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> whose second argument represented at least those floating-point
exceptions represented by the argument </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>excepts</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>.". So what happens if more exceptions are specified in the
call to </span><span class=SpellE><b><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>fetestexceptflag</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> than were specified in the call to </span><span class=SpellE><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>fegetexceptflag</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>? Then </span><span class=SpellE><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>fegetexceptflag</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> may or may not have stored any meaningful representation of the state of
the extra exceptions being tested.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>I think </span><span
class=SpellE><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>fetestexceptflag</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'> should have
the same wording for this issue as </span><span class=SpellE><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>fesetexceptflag</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>: "whose second argument represented at least those floating-point
exceptions represented by the argument </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>excepts</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>".<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span class=SpellE><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>fesetexceptflag</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> sets global state, typically a hardware register, whereas </span><span
class=SpellE><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>fetestexceptflag</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'> just reads a
variable. It seems more important to avoid spurious data in the former. <o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>Still, there’s no utility in testing
spurious flag settings, and placing the same restrictions on </span><span
class=SpellE><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>fetestexceptflag</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'> as on </span><span
class=SpellE><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>fesetexceptflag</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'> might be
less error prone. <o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Suggested
Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In 15.2, in the new text for C 7.6.2.4a#2,
change:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'>The value of </span><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>*<span class=SpellE>flagp</span></span></b><b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB'> </span></b><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>shall have
been set by a previous call to </span><span class=SpellE><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>fegetexceptflag</span></b></span><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>.</span><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>to:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>The value of </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>*<span
class=SpellE>flagp</span></span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> shall have been set by a previous
call to </span><span class=SpellE><b><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>fegetexceptflag</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> whose second argument represented at least those floating-point
exceptions represented by the argument </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>excepts</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>.<o:p></o:p></span></p>
<hr>
<p>Oct 2016 meeting</p>
<p><b>Committee Discussion</b></p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
<p><b>Proposed Technical Corrigendum</b>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In 15.2, in the new text for C 7.6.2.4a#2,
change:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'>The value of </span><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>*<span class=SpellE>flagp</span></span></b><b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB'> </span></b><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>shall have
been set by a previous call to </span><span class=SpellE><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>fegetexceptflag</span></b></span><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>.</span><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>to:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>The value of </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>*<span
class=SpellE>flagp</span></span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> shall have been set by a previous
call to </span><span class=SpellE><b><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>fegetexceptflag</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> whose second argument represented at least those floating-point
exceptions represented by the argument </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>excepts</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>.<o:p></o:p></span></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_5">DR 5</a> Prev <— C2x —> Next <a href="#dr_7">DR 7</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_7><b><u>DR 7</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_6">DR 6</a> Prev <— C2x —> Next <a href="#dr_8">DR 8</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas<br>
<b>Submission Date:</b> 2016-09-10<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2077.html ">N2077</a><br>
<b>Subject:</b> Part 1: Editorial changes</p>
<p><b>Summary</b></p>
<p class=MsoNormal style='margin-bottom:12.0pt;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Summary<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In CFP email, Fred <span class=SpellE>Tydeman</span>
noted:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Searching for
"infinite precision" in part 1, most of them have "(as if)
to" before it. Except, </span><span class=SpellE><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>ffma</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, </span><span class=SpellE><b><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>ffmal</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>, </span><span
class=SpellE><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>dfmal</span></b></span><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> which is missing the "(as
if)". <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>Right. In particular, all the functions
that round result to narrower type have “(as if)”, except for the </span><span
class=SpellE><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>fma</span></b></span><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> family. <o:p></o:p></span></p>
<p class=MsoNormal><b><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black'><o:p> </o:p></span></b></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Suggested
Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In 14.5, in the new text for C
7.12.13a.5#2, insert “(as if)” before “to infinite precision”.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<hr>
<p>Oct 2016 meeting</p>
<p><b>Committee Discussion</b></p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
<p><b>Proposed Technical Corrigendum</b>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In 14.5, in the new text for C
7.12.13a.5#2, insert “(as if)” before “to infinite precision”.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_6">DR 6</a> Prev <— C2x —> Next <a href="#dr_8">DR 8</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_8><b><u>DR 8</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_7">DR 7</a> Prev <— C2x —> Next <a href="#dr_9">DR 9</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas<br>
<b>Submission Date:</b> 2016-09-10<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2077.html ">N2077</a><br>
<b>Subject:</b> Part 2: Editorial clarification about number digits in the coefficient</p>
<p><b>Summary</b></p>
<p class=MsoNormal style='margin-bottom:12.0pt;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><b><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'>Summary<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-bottom:12.0pt;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>In
12.5, n is defined to be “the number of digits in the coefficient <i
style='mso-bidi-font-style:normal'>c</i>”, where the decimal floating-point
argument is represented by the triple (<i style='mso-bidi-font-style:normal'>s</i>,
<i style='mso-bidi-font-style:normal'>c</i>, <i style='mso-bidi-font-style:
normal'>q</i>). The intention is that <i style='mso-bidi-font-style:normal'>n</i>
is the number of digits in the coefficient of the particular argument, i.e.,
the number of significant digits, not the maximum number of digits in the
coefficient for the type. This might be misread, particularly since 5.2.4.2.2a says<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;line-height:14.0pt;
mso-pagination:none;mso-list:l1 level1 lfo3;mso-layout-grid-align:none;
text-autospace:none'><![if !supportLists]><span lang=EN-GB style='font-size:
11.0pt;font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'><span
style='mso-list:Ignore'>¾<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>number of digits in the coefficient<br>
<br>
</span><b><span lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";
color:black;mso-ansi-language:EN-GB'>DEC32_MANT_DIG</span></b><!--[if supportFields]><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span> XE
"DEC32_MANT_DIG macro" </span></b><![endif]--><!--[if supportFields]><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'><span style='mso-tab-count:4'> </span>7<o:p></o:p></span></b></p>
<p class=MsoNormal style='text-indent:.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>DEC64_MANT_DIG</span></b><!--[if supportFields]><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'><span style='mso-element:field-begin'></span> XE "DEC64_MANT_DIG
macro" </span></b><![endif]--><!--[if supportFields]><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'><span style='mso-tab-count:4'> </span>16<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.5in;line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><b><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>DEC128_MANT_DIG</span></b><!--[if supportFields]><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span> XE
"DEC128_MANT_DIG macro" </span></b><![endif]--><!--[if supportFields]><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'><span style='mso-tab-count:4'> </span>34<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-bottom:12.0pt;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'>This part of 5.2.4.2.2a is in the context of
characterizing the type, so clearly refers to the type and not any particular
representation.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Suggested
Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In 12.5, change:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>where <i
style='mso-bidi-font-style:normal'>n</i> is the number of digits in the
coefficient <i style='mso-bidi-font-style:normal'>c</i> <o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>to:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><span
style='mso-tab-count:1'> </span>where
<i style='mso-bidi-font-style:normal'>n</i> is the number of significant digits
in the coefficient <i style='mso-bidi-font-style:normal'>c</i><o:p></o:p></span></p>
<hr>
<p>Oct 2016 meeting</p>
<p><b>Committee Discussion</b></p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
<p><b>Proposed Technical Corrigendum</b>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In 12.5, change:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>where <i
style='mso-bidi-font-style:normal'>n</i> is the number of digits in the
coefficient <i style='mso-bidi-font-style:normal'>c</i> <o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>to:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><span
style='mso-tab-count:1'> </span>where
<i style='mso-bidi-font-style:normal'>n</i> is the number of significant digits
in the coefficient <i style='mso-bidi-font-style:normal'>c</i><o:p></o:p></span></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_7">DR 7</a> Prev <— C2x —> Next <a href="#dr_9">DR 9</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_9><b><u>DR 9</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_8">DR 8</a> Prev <— C2x —> Next <a href="#dr_10">DR 10</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas<br>
<b>Submission Date:</b> 2016-09-10<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2077.html ">N2077</a><br>
<b>Subject:</b> Part 2,3: Missing specification for usual arithmetic conversions, tgmath</p>
<p><b>Summary</b></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>This is about
the issue raised by Joseph Myers in email SC22WG14.14282:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;page-break-after:avoid'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>C11 specifies that the usual arithmetic conversions on the pair of types
(</span><b><span style='font-size:11.0pt;font-family:"Courier New";color:black'>long
double</span></b><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>, </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>double</span></b><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>)
produces a result of type </span><b><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>long double</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Suppose </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>long double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> and </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>double</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> have the same set of values.
TS 18661-3 rewrites the rules for usual arithmetic conversions so that
the case "if both operands are floating types and the sets of values of
their corresponding real types are equivalent" prefers interchange types
to standard types to extended types. But this leaves the case of (</span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>long double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>double</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'>) unspecified as to which type is
chosen, unlike in C11, as those are both standard types.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>I think this
is a defect in TS 18661-3, and it should say that if both are standard types
with the same set of values then </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>long double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> is preferred to </span><b><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>double</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'> which is
preferred to </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>float</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'>, as in C11.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>A similar
issue could arise if two of the extended types have equivalent sets of values.
I'm not aware of anything to prohibit that, although it seems less likely
in practice. I think the natural fix would be to say that </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Float128x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> is preferred to </span><b><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>_Float64x</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'> which is
preferred to </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>_Float32x</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>I think such
an issue would also arise for </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'><<span class=SpellE>tgmath.h</span>></span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> (if </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>_Float64x</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> and </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Float128x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> have the same set of values, the choice doesn't seem to be specified).
It also seems possible for the </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'><<span class=SpellE>tgmath.h</span>></span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> rules for purely floating-point arguments to produce a different result
from the usual arithmetic conversions (consider the case where </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Float32x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> is wider than </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>long double</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'>, and </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'><<span
class=SpellE>tgmath.h</span>></span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'> chooses </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>long double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>), and since rules that are the same in most cases but subtly different
in obscure cases tend to be confusing, I wonder if it might be better to
specify much simpler rules for </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'><<span class=SpellE>tgmath.h</span>></span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>: take the type resulting from the usual arithmetic conversions[*], where
integer arguments are replaced by </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>_Decimal64</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> if there are any decimal arguments and </span><b><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> otherwise. (That's different from the present rules for e.g. (</span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Float32x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, </span><span class=SpellE><b><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>int</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>), but it's a
lot simpler, and seems unlikely in practice to choose a type with a different
set of values from the present choice.)<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>[*]
Meaningful for more than two arguments as long as the usual arithmetic
conversions are commutative and associative as an operation on pairs of types.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>Though substantive, the suggested change
to the usual arithmetic conversions is consistent with the intention in TS
18661-3 to specify all the cases (except where neither format is a subset of
the other and the formats are not the same). The missing cases were an
oversight. The suggested preferences of </span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>long double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> over </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>double</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> over </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>float</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> and </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>_Float128x</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> over </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Float64x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> over </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>_Float32x</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> are the obvious choices.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>Joseph Myers notes that the </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'><<span
class=SpellE>tgmath.h</span>></span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>
specification is incomplete in the same way as the usual arithmetic conversions.
He argues for simplifying the specification by referring to the usual
arithmetic conversions specification, rather than mostly repeating it, as the
current specification does. The suggested Technical Corrigendum below follows
this new approach. Though a substantive change to TS 18661-3, the effects on
implementations and users are expected to be minimal – worth the
simplification.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>The suggested Technical Corrigendum
below also restores footnote number 62, which is lost in the current TS
18661-3.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Suggested
Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In clause 8, change the replacement text
for 6.3.1.8#1:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If one
operand has decimal floating type, the other operand shall not have standard
floating type, binary floating type, complex type, or imaginary type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If both
operands have floating types and neither of the sets of values of their
corresponding real types is a subset of (or equivalent to) the other, the
behavior is undefined.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
both operands are floating types and the sets of values of their corresponding
real types are equivalent, then the following rules are applied:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If both
operands have the same corresponding real type, no further conversion is
needed.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
the corresponding real type of either operand is an interchange floating type,
the other operand is converted, without change of type domain, to a type
whose corresponding real type is that same interchange floating type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
the corresponding real type of either operand is a standard floating type, the
other operand is converted, without change of type domain, to a type
whose corresponding real type is that same standard floating type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
both operands have floating types, the operand, whose set of values of its
corresponding real type is a (proper) subset of the set of values of the
corresponding real type of the other operand, is converted, without change of
type domain, to a type with the corresponding real type of that other operand.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
one operand has a floating type, the other operand is converted to the
corresponding real type of the operand of floating type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise,
the integer promotions are performed on both operands. Then the following rules
are applied to the promoted operands:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>. . .<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>to:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If one
operand has decimal floating type, the other operand shall not have standard
floating type, binary floating type, complex type, or imaginary type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If both
operands have floating types and neither of the sets of values of their
corresponding real types is a subset of (or equivalent to) the other, the
behavior is undefined.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If both
operands have the same corresponding real type, no further conversion is
needed. <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
both operands are floating types and the sets of values of their corresponding
real types are equivalent, then the following rules are applied: <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If the
corresponding real type of either operand is an interchange floating type, the
other operand is converted, without change of type domain, to a type
whose corresponding real type is that same interchange floating type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
the corresponding real type of either operand is </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>long double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, the other operand is converted, without change of
type domain, to a type whose corresponding real type is </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>long double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
the corresponding real type of either operand is </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, the other operand is converted, without change of
type domain, to a type whose corresponding real type is </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>(All cases
where </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>float </span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'>might have the same format as
another type are covered above.)<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
the corresponding real type of either operand is </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Float128x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> or </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>_Decimal128x</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'>, the other operand is
converted, without change of type domain, to a type whose corresponding
real type is </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>_Float128x</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> or </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Decimal128x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, respectively.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
the corresponding real type of either operand is </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Float64x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> or </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>_Decimal64x</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'>, the other operand is
converted, without change of type domain, to a type whose corresponding
real type is </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>_Float64x</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> or </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Decimal64x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, respectively.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
both operands have floating types, the operand, whose set of values of its
corresponding real type is a (proper) subset of the set of values of the
corresponding real type of the other operand, is converted, without change of
type domain62), to a type with the corresponding real type of that other
operand.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
one operand has a floating type, the other operand is converted to the
corresponding real type of the operand of floating type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise,
the integer promotions are performed on both operands. Then the following rules
are applied to the promoted operands:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>. . .<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In clause 15, replace:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'>In 7.25#3c, replace the bullets:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'>… bullets …<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.5in'><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>with:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.25in;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>— If two arguments have floating types and neither of the
sets of values of their corresponding real types is a subset of (or equivalent
to) the other, the <span class=SpellE>behavior</span> is undefined.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.25in;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>— If any arguments for generic parameters have type </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>_<span class=SpellE>Decimal<i style='mso-bidi-font-style:
normal'><span style='font-family:Cambria;mso-ascii-theme-font:minor-latin;
mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Times;font-weight:normal;
mso-bidi-font-weight:bold'>M</span></i></span></span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'> where <i style='mso-bidi-font-style:normal'>M</i>
≥ 64 or </span><b><span lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";
color:black;mso-ansi-language:EN-GB'>_<span class=SpellE>Decimal<i
style='mso-bidi-font-style:normal'><span style='font-family:Cambria;mso-ascii-theme-font:
minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Times;
font-weight:normal;mso-bidi-font-weight:bold'>N</span></i>x</span></span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'> where <i style='mso-bidi-font-style:
normal'>N</i> ≥ 32, the type determined is the widest of the types of these
arguments. If </span><b><span lang=EN-GB style='font-size:11.0pt;font-family:
"Courier New";color:black;mso-ansi-language:EN-GB'>_<span class=SpellE>Decimal<i
style='mso-bidi-font-style:normal'><span style='font-family:Cambria;mso-ascii-theme-font:
minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Times;
font-weight:normal;mso-bidi-font-weight:bold'>M</span></i></span></span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'> and </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>_<span class=SpellE>Decimal<i style='mso-bidi-font-style:
normal'><span style='font-family:Cambria;mso-ascii-theme-font:minor-latin;
mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Times;font-weight:normal;
mso-bidi-font-weight:bold'>N</span></i>x</span></span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'> are both widest types (with equivalent sets
of values) of these arguments, the type determined is </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>_<span class=SpellE>Decimal<i style='mso-bidi-font-style:
normal'><span style='font-family:Cambria;mso-ascii-theme-font:minor-latin;
mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Times;font-weight:normal;
mso-bidi-font-weight:bold'>M</span></i></span></span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.25in;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>— Otherwise, if any argument for generic parameters is of
integer type and another argument for generic parameters has type </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>_Decimal32</span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'>, the type determined is </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>_Decimal64</span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.25in;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>— Otherwise, if any argument for generic parameters has type </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>_Decimal32</span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'>, the type determined is </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>_Decimal32</span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.25in;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>— Otherwise, if the corresponding real type of any argument
for generic parameters has type </span><b><span lang=EN-GB style='font-size:
11.0pt;font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>long double</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>, </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>_<span class=SpellE>Float<i style='mso-bidi-font-style:
normal'><span style='font-family:Cambria;mso-ascii-theme-font:minor-latin;
mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Times;font-weight:normal;
mso-bidi-font-weight:bold'>M</span></i></span></span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'> where <i style='mso-bidi-font-style:normal'>M</i>
≥ 128, or </span><b><span lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";
color:black;mso-ansi-language:EN-GB'>_<span class=SpellE>Float<i
style='mso-bidi-font-style:normal'><span style='font-family:Cambria;mso-ascii-theme-font:
minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Times;
font-weight:normal;mso-bidi-font-weight:bold'>N</span></i>x</span></span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'> where <i style='mso-bidi-font-style:
normal'>N</i> ≥ 64, the type determined is the widest of the corresponding real
types of these arguments. If </span><b><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>_<span
class=SpellE>Float<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Times;font-weight:normal;mso-bidi-font-weight:bold'>M</span></i></span></span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'> and either </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>long double</span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'> or </span><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>_<span class=SpellE>Float<i style='mso-bidi-font-style:normal'><span
style='font-family:Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Times;font-weight:normal;mso-bidi-font-weight:
bold'>N</span></i>x</span></span></b><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'> are both widest corresponding real types (with equivalent sets of
values) of these arguments, the type determined is </span><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>_<span class=SpellE>Float<i style='mso-bidi-font-style:normal'><span
style='font-family:Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Times;font-weight:normal;mso-bidi-font-weight:
bold'>M</span></i></span></span></b><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>. Otherwise, if </span><b><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>long double</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'> and </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>_<span class=SpellE>Float<i style='mso-bidi-font-style:
normal'><span style='font-family:Cambria;mso-ascii-theme-font:minor-latin;
mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Times;font-weight:normal;
mso-bidi-font-weight:bold'>N</span></i>x</span></span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'> are both widest corresponding real types
(with equivalent sets of values) of these arguments, the type determined is </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>long double</span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.25in;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>— Otherwise, if the corresponding real type of any argument
for generic parameters has type </span><b><span lang=EN-GB style='font-size:
11.0pt;font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>double</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>, </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>_Float64</span></b><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'>, or </span><b><span lang=EN-GB style='font-size:
11.0pt;font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>_Float32x</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>, the type determined is the
widest of the corresponding real types of these arguments. If </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>_Float64</span></b><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'> and either </span><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>double</span></b><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'> or</span><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'> <b>_Float32x</b></span><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'> are both widest
corresponding real types (with equivalent sets of values) of these arguments,
the type determined is </span><b><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>_Float64</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>. Otherwise, if </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>double</span></b><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'> and </span><b><span lang=EN-GB style='font-size:
11.0pt;font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>_Float32x</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'> are both widest
corresponding real types (with equivalent sets of values) of these arguments,
the type determined is </span><b><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>double</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.25in;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>— Otherwise, if any argument for generic parameters is of
integer type, the type determined is </span><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>double</span></b><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.25in;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>— Otherwise, if the corresponding real type of any argument
for generic parameters has type </span><b><span lang=EN-GB style='font-size:
11.0pt;font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>_Float32</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>, the type determined is </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>_Float32</span></b><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.25in;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>— Otherwise, the type determined is </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>float</span></b><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.0in'><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>In the
second bullet 7.25#3c, attach a footnote to the wording:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.0in'><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>the type
determined is the widest<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.0in'><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>where the
footnote is:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.0in'><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>*) The
term widest here refers to a type whose set of values is a superset of (or
equivalent to) the sets of values of the other types.<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>with: <o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'>In 7.25#3c, replace the first sentence and bullets:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:1.0in'><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>[3c] </span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>Except for the macros for functions that round result to a narrower type
(7.12.13a), u</span><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>se of a
type-generic macro invokes a function whose generic parameters have the
corresponding real type determined by the corresponding real types of the
arguments as follows:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:85.5pt;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>—<span style='mso-tab-count:1'> </span>First, if
any argument for generic parameters has type </span><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>_Decimal128</span></b><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>, the type determined is </span><b><span lang=EN-GB style='font-size:
11.0pt;font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>_Decimal128</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:85.5pt;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>—<span style='mso-tab-count:1'> </span>Otherwise,
if any argument for generic parameters has type </span><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>_Decimal64</span></b><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>, or if any argument for generic parameters is of integer type and
another argument for generic parameters has type </span><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>_Decimal32</span></b><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>, the type determined is </span><b><span lang=EN-GB style='font-size:
11.0pt;font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>_Decimal64</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:85.5pt;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>—<span style='mso-tab-count:1'> </span>Otherwise,
if any argument for generic parameters has type </span><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>_Decimal32</span></b><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>, the type determined is </span><b><span lang=EN-GB style='font-size:
11.0pt;font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>_Decimal32</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:85.5pt;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>—<span style='mso-tab-count:1'> </span>Otherwise,
if the corresponding real type of any argument for generic parameters is </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>long double</span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'>, the type determined is </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>long double</span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:85.5pt;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>—<span style='mso-tab-count:1'> </span>Otherwise,
if the corresponding real type of any argument for generic parameters is </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>double</span></b><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'> or is of integer type, the type determined is </span><b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN-GB'>double</span></b><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:85.5pt;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>—<span style='mso-tab-count:1'> </span>Otherwise,
if any argument for generic parameters is of integer type, the type determined
is </span><b><span lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";
color:black;mso-ansi-language:EN-GB'>double</span></b><span lang=EN-GB
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:
EN-GB;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:85.5pt;text-indent:-.25in'><span lang=EN-GB style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:
bold'>—<span style='mso-tab-count:1'> </span>Otherwise,
the type determined is </span><b><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>float</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'>with:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>[3c] Except
for the macros for functions that round result to a narrower type (7.12.13a), </span><span
style='font-size:11.0pt'>use of a type-generic macro invokes a function
whose generic parameters have the corresponding real
type determined by the types of the arguments for the generic
parameters as follows:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:85.5pt;text-indent:-13.5pt'><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>—<span
style='mso-tab-count:1'> </span></span><span style='font-size:11.0pt'>Arguments
of integer type are regarded as having type </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>_Decimal64</span></b><span
style='font-size:11.0pt'> if any argument has decimal floating type,
and as having type </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>double</span></b><span
style='font-size:11.0pt'> otherwise.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:85.5pt;text-indent:-13.5pt'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:85.5pt;text-indent:-13.5pt'><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>—<span
style='mso-tab-count:1'> </span></span><span style='font-size:11.0pt'>If
the function has exactly one generic parameter, the type determined is
the corresponding real type of the argument for the generic
parameter.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:85.5pt;text-indent:-13.5pt'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:85.5pt;text-indent:-13.5pt'><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>—<span
style='mso-tab-count:1'> </span></span><span style='font-size:11.0pt'>If
the function has exactly two generic parameters, the type determined is
the corresponding real type determined by the usual arithmetic
conversions (6.3.1.8) applied to the arguments for the
generic parameters.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:85.5pt;text-indent:-13.5pt'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:85.5pt;text-indent:-13.5pt'><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>—<span
style='mso-tab-count:1'> </span></span><span style='font-size:11.0pt'>If
the function has more than two generic parameters, the type determined is
the corresponding real type determined by repeatedly applying the usual
arithmetic conversions, first to the first two arguments for generic
parameters, then to that result type and the next argument for a generic
parameter, and so forth until the usual arithmetic conversions have been
applied to the last argument for a generic parameter.<o:p></o:p></span></p>
<hr>
<p>Oct 2016 meeting</p>
<p><b>Committee Discussion</b></p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
<p>Apr 2017 meeting</p>
<p><b>Committee Discussion</b></p>
A new paper
<a href= "http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2127.pdf">N2127</a> was presented which offers a simplified Technical Corrigendum. From that paper:
<blockquote>
<p>
The TC in DR 501 includes two changes to TS 18661-3, one for
the usual arithmetic conversions, the other for type-generic math. The first
change fills in missing conversions for new types in TS 18661-3. The second
change simplifies type-generic math by referencing the usual arithmetic
conversions, and thereby also fills in missing type-generic math rules for
arguments of the new types.</p>
<p>
This is a proposal for an alternative change to type-generic
math. The original change was proposed for TS 18661-3, where the new types
where introduced. However, the change can be made in TS 18661-2, where it is
easier to understand and leads to a simplification in TS 18661-3.</p>
</blockquote>
The committee accepts the proposed modification as reflected below.
<p><b>Proposed Technical Corrigendum</b>
<p>
In TS 18662-3
<p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In clause 8, change the replacement text
for 6.3.1.8#1:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If one
operand has decimal floating type, the other operand shall not have standard
floating type, binary floating type, complex type, or imaginary type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If both
operands have floating types and neither of the sets of values of their
corresponding real types is a subset of (or equivalent to) the other, the
behavior is undefined.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
both operands are floating types and the sets of values of their corresponding
real types are equivalent, then the following rules are applied:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If both
operands have the same corresponding real type, no further conversion is
needed.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
the corresponding real type of either operand is an interchange floating type,
the other operand is converted, without change of type domain, to a type
whose corresponding real type is that same interchange floating type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
the corresponding real type of either operand is a standard floating type, the
other operand is converted, without change of type domain, to a type
whose corresponding real type is that same standard floating type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
both operands have floating types, the operand, whose set of values of its
corresponding real type is a (proper) subset of the set of values of the
corresponding real type of the other operand, is converted, without change of
type domain, to a type with the corresponding real type of that other operand.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
one operand has a floating type, the other operand is converted to the
corresponding real type of the operand of floating type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise,
the integer promotions are performed on both operands. Then the following rules
are applied to the promoted operands:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>. . .<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>to:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If one
operand has decimal floating type, the other operand shall not have standard
floating type, binary floating type, complex type, or imaginary type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If both
operands have floating types and neither of the sets of values of their
corresponding real types is a subset of (or equivalent to) the other, the
behavior is undefined.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If both
operands have the same corresponding real type, no further conversion is
needed. <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
both operands are floating types and the sets of values of their corresponding
real types are equivalent, then the following rules are applied: <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If the
corresponding real type of either operand is an interchange floating type, the
other operand is converted, without change of type domain, to a type
whose corresponding real type is that same interchange floating type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
the corresponding real type of either operand is </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>long double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, the other operand is converted, without change of
type domain, to a type whose corresponding real type is </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>long double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
the corresponding real type of either operand is </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, the other operand is converted, without change of
type domain, to a type whose corresponding real type is </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>(All cases
where </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>float </span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'>might have the same format as
another type are covered above.)<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
the corresponding real type of either operand is </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Float128x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> or </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>_Decimal128x</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'>, the other operand is
converted, without change of type domain, to a type whose corresponding
real type is </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>_Float128x</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> or </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Decimal128x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, respectively.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
the corresponding real type of either operand is </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Float64x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> or </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>_Decimal64x</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'>, the other operand is
converted, without change of type domain, to a type whose corresponding
real type is </span><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>_Float64x</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'> or </span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Decimal64x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, respectively.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
both operands have floating types, the operand, whose set of values of its
corresponding real type is a (proper) subset of the set of values of the
corresponding real type of the other operand, is converted, without change of
type domain62), to a type with the corresponding real type of that other
operand.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise, if
one operand has a floating type, the other operand is converted to the
corresponding real type of the operand of floating type.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Otherwise,
the integer promotions are performed on both operands. Then the following rules
are applied to the promoted operands:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>. . .<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p>
In TS 18661-2
<p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>In 12.9, change the introduced [3c] from:</p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=stdtext style='page-break-after:avoid'><span lang=EN-GB
style='mso-bidi-font-family:Times'>[3c] </span><span style='mso-ansi-language:
EN-US'>Except for the macros for functions that round result to a narrower type
(7.12.13a), u</span><span lang=EN-GB style='mso-bidi-font-family:Times'>se of a
type-generic macro invokes a function whose generic parameters have the
corresponding real type determined by the corresponding real types of the
arguments as follows:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;tab-stops:.5in'><span
lang=EN-GB>—<span style='mso-tab-count:1'> </span></span><span
lang=EN-GB style='mso-bidi-font-family:Times'>First, if any argument for
generic parameters has type </span><b><span lang=EN-GB style='font-family:"Courier New"'>_Decimal128</span></b><span
lang=EN-GB style='mso-bidi-font-family:Times'>, the type determined is </span><b><span
lang=EN-GB style='font-family:"Courier New"'>_Decimal128</span></b><span
lang=EN-GB style='mso-bidi-font-family:Times'>.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;tab-stops:.5in'><span
lang=EN-GB>—<span style='mso-tab-count:1'> </span></span><span
lang=EN-GB style='mso-bidi-font-family:Times'>Otherwise, if any argument for
generic parameters has type </span><b><span lang=EN-GB style='font-family:"Courier New"'>_Decimal64</span></b><span
lang=EN-GB style='mso-bidi-font-family:Times'>, or if any argument for generic
parameters is of integer type and another argument for generic parameters has
type </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>_Decimal32</span></b><span lang=EN-GB
style='mso-bidi-font-family:Times'>, the type determined is </span><b><span
lang=EN-GB style='font-family:"Courier New"'>_Decimal64</span></b><span
lang=EN-GB style='mso-bidi-font-family:Times'>.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;tab-stops:.5in'><span
lang=EN-GB>—<span style='mso-tab-count:1'> </span></span><span
lang=EN-GB style='mso-bidi-font-family:Times'>Otherwise, if any argument for
generic parameters has type </span><b><span lang=EN-GB style='font-family:"Courier New"'>_Decimal32</span></b><span
lang=EN-GB style='mso-bidi-font-family:Times'>, the type determined is </span><b><span
lang=EN-GB style='font-family:"Courier New"'>_Decimal32</span></b><span
lang=EN-GB style='mso-bidi-font-family:Times'>.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;tab-stops:.5in'><span
lang=EN-GB>—<span style='mso-tab-count:1'> </span></span><span
lang=EN-GB style='mso-bidi-font-family:Times'>Otherwise, if the corresponding
real type of any argument for generic parameters is </span><b><span lang=EN-GB
style='font-family:"Courier New"'>long double</span></b><span lang=EN-GB
style='mso-bidi-font-family:Times'>, the type determined is </span><b><span
lang=EN-GB style='font-family:"Courier New"'>long double</span></b><span
lang=EN-GB style='mso-bidi-font-family:Times'>.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;tab-stops:.5in'><span
lang=EN-GB>—<span style='mso-tab-count:1'> </span></span><span
lang=EN-GB style='mso-bidi-font-family:Times'>Otherwise, if the corresponding
real type of any argument for generic parameters is </span><b><span lang=EN-GB
style='font-family:"Courier New"'>double</span></b><span lang=EN-GB
style='mso-bidi-font-family:Times'> or is of integer type, the type determined
is </span><b><span lang=EN-GB style='font-family:"Courier New"'>double</span></b><span
lang=EN-GB style='mso-bidi-font-family:Times'>.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;tab-stops:.5in'><span
lang=EN-GB>—<span style='mso-tab-count:1'> </span></span><span
lang=EN-GB style='mso-bidi-font-family:Times'>Otherwise, if any argument for
generic parameters is of integer type, the type determined is </span><b><span
lang=EN-GB style='font-family:"Courier New"'>double</span></b><span lang=EN-GB
style='mso-bidi-font-family:Times'>.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;tab-stops:.5in'><span
lang=EN-GB>—<span style='mso-tab-count:1'> </span></span><span
lang=EN-GB style='mso-bidi-font-family:Times'>Otherwise, the type determined is
</span><b><span lang=EN-GB style='font-family:"Courier New"'>float</span></b><span
lang=EN-GB style='mso-bidi-font-family:Times'>.<o:p></o:p></span></p>
<p class=MsoNormal><span class=GramE>to</span>:</p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=stdtext style='page-break-after:avoid'><span style='mso-bidi-font-family:
Times;mso-ansi-language:EN-US'>[3c] Except for the macros for functions
that round result to a narrower type (7.12.13a), use of a
type-generic macro invokes a function whose generic parameters have
the corresponding real type determined by the types of the arguments for
the generic parameters as follows:</span><span lang=EN-GB
style='mso-bidi-font-family:Times'><o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;tab-stops:.5in'><span
lang=EN-GB>—<span style='mso-tab-count:1'> </span></span><span
style='mso-bidi-font-family:Times;mso-ansi-language:EN-US'>Arguments of
integer type are regarded as having type </span><b><span style='font-family:
"Courier New";mso-ansi-language:EN-US'>_Decimal64</span></b><span
style='mso-bidi-font-family:Times;mso-ansi-language:EN-US'> if any
argument has decimal floating type, and as having type </span><b><span
style='font-family:"Courier New";mso-ansi-language:EN-US'>double</span></b><b
style='mso-bidi-font-weight:normal'><span style='font-family:"Courier New";
mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-family:
Times;mso-ansi-language:EN-US'>otherwise.</span><span lang=EN-GB
style='mso-bidi-font-family:Times'><o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;tab-stops:.5in'><span
lang=EN-GB>—<span style='mso-tab-count:1'> </span></span><span
style='mso-bidi-font-family:Times;mso-ansi-language:EN-US'> If the
function has exactly one generic parameter, the type determined
is the corresponding real type of the argument for
the generic parameter.</span><span lang=EN-GB style='mso-bidi-font-family:
Times'><o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;tab-stops:.5in'><span
lang=EN-GB>—<span style='mso-tab-count:1'> </span></span><span
style='mso-bidi-font-family:Times;mso-ansi-language:EN-US'>If the
function has exactly two generic parameters, the type determined
is the corresponding real type determined by the
usual arithmetic conversions (6.3.1.8) applied to the arguments for
the generic parameters.</span><span lang=EN-GB style='mso-bidi-font-family:
Times'><o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;tab-stops:.5in'><span
lang=EN-GB>—<span style='mso-tab-count:1'> </span></span><span
style='mso-bidi-font-family:Times;mso-ansi-language:EN-US'>If the
function has more than two generic parameters, the type determined
is the corresponding real type determined by repeatedly applying
the usual arithmetic conversions, first to the first two arguments
for generic parameters, then to that result type and the next
argument for a generic parameter, and so forth until the usual arithmetic
conversions have been applied to the last argument for a generic
parameter.</span><span lang=EN-GB style='mso-bidi-font-family:Times'><o:p></o:p></span></p>
<p class=MsoNormal><o:p> </o:p></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_8">DR 8</a> Prev <— C2x —> Next <a href="#dr_10">DR 10</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_10><b><u>DR 10</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_9">DR 9</a> Prev <— C2x —> Next <a href="#dr_11">DR 11</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas<br>
<b>Submission Date:</b> 2016-09-10<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2077.html ">N2077</a><br>
<b>Subject:</b> Part 1: wrong type for <b>fesetmode</b> parameter</p>
<p><b>Summary</b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>This is about the issue raised by Joseph
Myers in email SC22WG14.14358:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>TS 18661-1
gives the declaration of </span><span class=SpellE><b><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>fesetmode</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> as:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>int</span></b></span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'> <span
class=SpellE>fesetmode</span>(<span class=SpellE>const</span> <span
class=SpellE>fenv_t</span> *<span class=SpellE>modep</span>);<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>The argument
should be of type </span><span class=SpellE><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>const</span></b></span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'> <span
class=SpellE>femode_t</span> *</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>, not </span><span
class=SpellE><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>const</span></b></span><b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'> <span class=SpellE>fenv_t</span> *</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>-- <o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>This was an editorial cut-and-past
error. The Description says the argument </span><span class=SpellE><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>modep</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> shall point to an objet set by a call to </span><span class=SpellE><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>fegetmode</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>, which sets objects of type </span><span class=SpellE><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>femode_t</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>. It’s unlikely the function would be implemented with the erroneous
type.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Suggested
Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In 15.3, in the new text for C
7.6.3.1a#1, change:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><b><span lang=EN-GB style='font-size:11.0pt;font-family:
"Courier New";color:black;mso-ansi-language:EN-GB'><span style='mso-tab-count:
1'> </span><span style='mso-tab-count:1'> </span><span
class=SpellE>int</span> <span class=SpellE>fesetmode</span>(<span class=SpellE>const</span>
<span class=SpellE>fenv_t</span> *<span class=SpellE>modep</span>);<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>to:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><b><span lang=EN-GB style='font-size:11.0pt;font-family:
"Courier New";color:black;mso-ansi-language:EN-GB'><span style='mso-tab-count:
1'> </span><span style='mso-tab-count:1'> </span><span
class=SpellE>int</span> <span class=SpellE>fesetmode</span>(<span class=SpellE>const</span>
<span class=SpellE>femode_t</span> *<span class=SpellE>modep</span>);<o:p></o:p></span></b></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<hr>
<p>Oct 2016 meeting</p>
<p><b>Committee Discussion</b></p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
<p><b>Proposed Technical Corrigendum</b>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In 15.3, in the new text for C
7.6.3.1a#1, change:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><b><span lang=EN-GB style='font-size:11.0pt;font-family:
"Courier New";color:black;mso-ansi-language:EN-GB'><span style='mso-tab-count:
1'> </span><span style='mso-tab-count:1'> </span><span
class=SpellE>int</span> <span class=SpellE>fesetmode</span>(<span class=SpellE>const</span>
<span class=SpellE>fenv_t</span> *<span class=SpellE>modep</span>);<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>to:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><b><span lang=EN-GB style='font-size:11.0pt;font-family:
"Courier New";color:black;mso-ansi-language:EN-GB'><span style='mso-tab-count:
1'> </span><span style='mso-tab-count:1'> </span><span
class=SpellE>int</span> <span class=SpellE>fesetmode</span>(<span class=SpellE>const</span>
<span class=SpellE>femode_t</span> *<span class=SpellE>modep</span>);<o:p></o:p></span></b></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_9">DR 9</a> Prev <— C2x —> Next <a href="#dr_11">DR 11</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_11><b><u>DR 11</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_10">DR 10</a> Prev <— C2x —> Next <a href="#dr_12">DR 12</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas<br>
<b>Submission Date:</b> 2016-09-10<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2077.html ">N2077</a><br>
<b>Subject:</b> Part 2: a-style formatting not IEC 60559 conformant</p>
<p><b>Summary</b></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>The </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>a</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>-style
formatting specified in <span class=SpellE>subclause</span> 12.5 of TS 18661-2
is not an IEC 60559 conversion for cases where the formatting precision is less
than the length of the coefficient of the input. The specification entails an
intermediate rounding to the floating type of the input, which might overflow resulting
in a character sequence representation of infinity. IEC 60559 conversions to
character sequences do not overflow, unless the language over-restricts the
exponent range for character sequence output, which C does not. <o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>Another undesirable aspect of the
current specification is that in certain cases it produces results with more
precision than given by a width modifier.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>Here are some examples, showing the
result of the intermediate conversion, with different behaviors for the current
spec (“old”) and the spec in the suggested Technical Corrigendum below (“new”):<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>For </span><b><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>_Decimal32</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> input <i style='mso-bidi-font-style:normal'>x</i> with representation
(1, 9512345, 90) and <span class=SpellE>specifier</span> ...<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>%.3Ha<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>old:<span style='mso-tab-count:2'> </span><i
style='mso-bidi-font-style:normal'>x</i><span style='mso-tab-count:1'> </span>-><span
style='mso-tab-count:1'> </span>(1,
9510000, 90)<span style='mso-tab-count:1'> </span>-><span
style='mso-tab-count:1'> </span></span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>9.510000e96</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>new:<span style='mso-tab-count:1'> </span><span
style='mso-tab-count:1'> </span><i
style='mso-bidi-font-style:normal'>x</i><span style='mso-tab-count:1'> </span>-><span
style='mso-tab-count:1'> </span>(1,
951, 94)<span style='mso-tab-count:2'> </span>-><span
style='mso-tab-count:1'> </span></span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>9.51e96</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>%.2Ha<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>old:<span style='mso-tab-count:2'> </span><i
style='mso-bidi-font-style:normal'>x</i><span style='mso-tab-count:1'> </span>-><span
style='mso-tab-count:1'> </span>(1,
9500000, 90)<span style='mso-tab-count:1'> </span>-><span
style='mso-tab-count:1'> </span></span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>9.500000e96</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>new:<span style='mso-tab-count:1'> </span><span
style='mso-tab-count:1'> </span><i
style='mso-bidi-font-style:normal'>x</i><span style='mso-tab-count:1'> </span>-><span
style='mso-tab-count:1'> </span>(1,
95, 95)<span style='mso-tab-count:2'> </span>-><span
style='mso-tab-count:1'> </span></span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>9.5e96</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>%.1Ha<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>old: <span style='mso-tab-count:
2'> </span><i
style='mso-bidi-font-style:normal'>x</i><span style='mso-tab-count:1'> </span>-><span
style='mso-tab-count:1'> </span><span
class=SpellE>Inf</span> <span style='mso-tab-count:3'> </span>-><span
style='mso-tab-count:1'> </span></span><span
class=SpellE><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>inf</span></b></span><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>new: <span style='mso-tab-count:1'> </span><span
style='mso-tab-count:1'> </span><i
style='mso-bidi-font-style:normal'>x</i><span style='mso-tab-count:1'> </span>-><span
style='mso-tab-count:1'> </span>(1,
1, 97)<span style='mso-tab-count:2'> </span>-><span
style='mso-tab-count:1'> </span></span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>1e97</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>Here’s another example:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>For </span><b><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>_Decimal32</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'> input x with representation (1, 9512345, 86) and <span class=SpellE>specifier</span>
...<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Courier New";
color:black'>%.2Ha<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>old:<span style='mso-tab-count:2'> </span><i
style='mso-bidi-font-style:normal'>x</i><span style='mso-tab-count:1'> </span>-><span
style='mso-tab-count:1'> </span>(1,
950, 90)<span style='mso-tab-count:2'> </span>-><span
style='mso-tab-count:1'> </span></span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>9.50e92</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>new:<span style='mso-tab-count:1'> </span><span
style='mso-tab-count:1'> </span><i
style='mso-bidi-font-style:normal'>x</i><span style='mso-tab-count:1'> </span>-><span
style='mso-tab-count:1'> </span>(1,
95, 91)<span style='mso-tab-count:2'> </span>-><span
style='mso-tab-count:1'> </span></span><b><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>9.5e92</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>The examples use a to-nearest rounding.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><span
style="mso-spacerun:yes"> </span><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>As the examples illustrate, the problematic
cases for the current “old” spec occur because of the exponent range limitation
of the format used for the intermediate conversion.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>The suggested Technical Corrigendum
below specifies formatting that is IEC 60559 conformant and which honors a
width modifier. It does not change the numerical value of the result, except in
overflow cases.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Suggested
Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In 12.5, in the addition to </span><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>7.21.6.1#8 and 7.29.2.1#8,
under </span><span class=SpellE><b><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>a</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>,</span><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>A</span></b></span><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>
conversion <span class=SpellE>specifiers</span>, change</span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'>If the precision is present (in the conversion
specification) and is zero or at least as large as the precision <i
style='mso-bidi-font-style:normal'>p</i> (5.2.4.2.2) of the decimal floating
type, the conversion is as if the precision were missing. If the precision is
present (and nonzero) and less than the precision <i style='mso-bidi-font-style:
normal'>p</i> of the decimal floating type, the conversion first obtains an
intermediate result by rounding the input in the type, according to the current
rounding direction for decimal floating-point operations, to the number of
digits specified by the precision, then converts the intermediate result as if
the precision were missing. The length of the coefficient of the intermediate
result is the smallest number, at least as large as the formatting precision,
for which the quantum exponent is within the quantum exponent range of the type
(see 5.2.4.2.2a). The intermediate rounding may overflow.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>to:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If the
precision <i style='mso-bidi-font-style:normal'>P</i> is present (in the
conversion specification) and is zero or at least as large as the precision <i
style='mso-bidi-font-style:normal'>p</i> (5.2.4.2.2) of the decimal floating
type, the conversion is as if the precision were missing. If the precision
<i style='mso-bidi-font-style:normal'>P</i> is present (and nonzero) and less
than the precision <i style='mso-bidi-font-style:normal'>p</i> of the decimal
floating type, the conversion first obtains an intermediate result as follows,
where <i style='mso-bidi-font-style:normal'>n</i> is the number of significant
digits in the coefficient:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If <i
style='mso-bidi-font-style:normal'>n</i> <= <i style='mso-bidi-font-style:
normal'>P</i>, set the intermediate result to the input.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If <i
style='mso-bidi-font-style:normal'>n</i> > <i style='mso-bidi-font-style:
normal'>P</i>, round the input value, according to the current rounding
direction for decimal floating-point operations, to <i style='mso-bidi-font-style:
normal'>P</i> decimal digits, with unbounded exponent range, representing the
result with a <i style='mso-bidi-font-style:normal'>P</i>-digit integer
coefficient when in the form (<i style='mso-bidi-font-style:normal'>s</i>, <i
style='mso-bidi-font-style:normal'>c</i>, <i style='mso-bidi-font-style:normal'>q</i>).<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Convert the
intermediate result in the manner described above for the case where the
precision is missing.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In 12.5, in the addition to </span><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>7.21.6.1#8 and 7.29.2.1#8, in
EXAMPLE 3, change the results</span><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'>:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.54321e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.5432e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.543e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.540e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.500e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>1.0000e+94<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in'><span class=SpellE><span
lang=EN-GB style='font-family:"Courier New"'>inf</span></span><span lang=EN-GB
style='font-family:"Courier New"'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>to:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.54321e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.5432e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.543e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.54e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.5e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>1e+94<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>1e+97<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'><span
style='mso-tab-count:2'> </span><o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<hr>
<p>Oct 2016 meeting</p>
<p><b>Committee Discussion</b></p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
<p>
Apr 2017 meeting
<p><b>Committee Discussion</b></p>
The paper
<a href= "http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2126.htm">N2126</a>
provides an example that illustrates this change, and the committee agreed to accept this as an addendum to the Proposed Technical Corrigendum.
<p>
However, the committee is concerned that <tt>%a</tt> behavior differs from binary floating point and more review is needed. In particular, there were concerns that for the decimal floating point types now the %a format specifier given with a precision is the total number of significant digits, not the number of digits after the decimal point as it has been for other data types.
<p><b>Proposed Technical Corrigendum</b>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In 12.5, in the addition to </span><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>7.21.6.1#8 and 7.29.2.1#8,
under </span><span class=SpellE><b><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";color:black;mso-ansi-language:EN-GB'>a</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>,</span><b><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN-GB'>A</span></b></span><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>
conversion <span class=SpellE>specifiers</span>, change</span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:
bold'>:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black;mso-ansi-language:EN-GB;
mso-bidi-font-weight:bold'>If the precision is present (in the conversion
specification) and is zero or at least as large as the precision <i
style='mso-bidi-font-style:normal'>p</i> (5.2.4.2.2) of the decimal floating
type, the conversion is as if the precision were missing. If the precision is
present (and nonzero) and less than the precision <i style='mso-bidi-font-style:
normal'>p</i> of the decimal floating type, the conversion first obtains an
intermediate result by rounding the input in the type, according to the current
rounding direction for decimal floating-point operations, to the number of
digits specified by the precision, then converts the intermediate result as if
the precision were missing. The length of the coefficient of the intermediate
result is the smallest number, at least as large as the formatting precision,
for which the quantum exponent is within the quantum exponent range of the type
(see 5.2.4.2.2a). The intermediate rounding may overflow.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>to:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If the
precision <i style='mso-bidi-font-style:normal'>P</i> is present (in the
conversion specification) and is zero or at least as large as the precision <i
style='mso-bidi-font-style:normal'>p</i> (5.2.4.2.2) of the decimal floating
type, the conversion is as if the precision were missing. If the precision
<i style='mso-bidi-font-style:normal'>P</i> is present (and nonzero) and less
than the precision <i style='mso-bidi-font-style:normal'>p</i> of the decimal
floating type, the conversion first obtains an intermediate result as follows,
where <i style='mso-bidi-font-style:normal'>n</i> is the number of significant
digits in the coefficient:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If <i
style='mso-bidi-font-style:normal'>n</i> <= <i style='mso-bidi-font-style:
normal'>P</i>, set the intermediate result to the input.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>If <i
style='mso-bidi-font-style:normal'>n</i> > <i style='mso-bidi-font-style:
normal'>P</i>, round the input value, according to the current rounding
direction for decimal floating-point operations, to <i style='mso-bidi-font-style:
normal'>P</i> decimal digits, with unbounded exponent range, representing the
result with a <i style='mso-bidi-font-style:normal'>P</i>-digit integer
coefficient when in the form (<i style='mso-bidi-font-style:normal'>s</i>, <i
style='mso-bidi-font-style:normal'>c</i>, <i style='mso-bidi-font-style:normal'>q</i>).<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>Convert the
intermediate result in the manner described above for the case where the
precision is missing.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'>In 12.5, in the addition to </span><span
lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:Times;color:black;
mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'>7.21.6.1#8 and 7.29.2.1#8, in
EXAMPLE 3, change the results</span><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-bidi-font-weight:bold'>:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.54321e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.5432e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.543e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.540e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.500e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>1.0000e+94<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in'><span class=SpellE><span
lang=EN-GB style='font-family:"Courier New"'>inf</span></span><span lang=EN-GB
style='font-family:"Courier New"'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'>to:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.54321e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.5432e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.543e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.54e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>9.5e+93<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>1e+94<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>1e+97<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'><span
style='mso-tab-count:2'> </span><o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black;mso-ansi-language:EN-GB;mso-bidi-font-weight:bold'><o:p> </o:p></span></p>
<p>
Add, as a new EXAMPLE,
<br>
<pre>
#include <stdio.h>
int main(void) {
_Decimal32 x = 9512345e90df;
_Decimal32 x2 = 9512345e86df;
printf("%.3Ha\n", x); // New expected output: 9.51e96
printf("%.2Ha\n", x); // New expected output: 9.5e96
printf("%.1Ha\n", x); // New expected output: 1e97
printf("%.2Ha\n", x2); // New expected output: 9.5e92
return 0;
}
</pre>
<!-- LINKAGE --> <p align="center"> <a href="#dr_10">DR 10</a> Prev <— C2x —> Next <a href="#dr_12">DR 12</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_12><b><u>DR 12</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_11">DR 11</a> Prev <— C2x —> Next <a href="#dr_13">DR 13</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas<br>
<b>Submission Date:</b> 2017-03-04<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2125.pdf">N2125</a><br>
<b>Subject:</b> P1: Zero payloads and <tt>set payload</tt> function</p>
<p><b>Summary</b></p>
<p class=MsoNormal><span style='font-size:11.0pt'>This is about an issue raised
by Joseph Myers in </span><span style='mso-bidi-font-family:"Helvetica Neue";
color:black'>SC22WG14.14450</span><span style='font-size:11.0pt'>:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-top:0in;margin-right:0in;margin-bottom:
12.0pt;margin-left:.5in;mso-add-space:auto'><span style='font-size:11.0pt'>The
specification for </span><span class=SpellE><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>setpayload</span></b></span><span
style='font-size:11.0pt'> (and likewise </span><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>setpayloadsig</span></b></span><span style='font-size:11.0pt'>)
says "If </span><span class=SpellE><span class=GramE><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>pl</span></b></span></span><span
style='font-size:11.0pt'> is not a positive floating-point integer representing
a valid payload, </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>*res</span></b><span
style='font-size:11.0pt'> is set to positive zero."<o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-top:0in;margin-right:0in;margin-bottom:
12.0pt;margin-left:.5in;mso-add-space:auto'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-top:0in;margin-right:0in;margin-bottom:
12.0pt;margin-left:.5in;mso-add-space:auto'><span style='font-size:11.0pt'>Does
"positive" as applied to "floating-point integer" here mean
"with sign bit 0" (the list of definitions in IEEE 754 doesn't
include "positive")? In the preferred encodings for binary
interchange formats, 0 is a valid payload for quiet <span class=SpellE>NaNs</span>.
So should +0.0 as an argument to </span><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>setpayload</span></b></span><span style='font-size:11.0pt'>
result in a quiet <span class=SpellE>NaN</span> with payload 0, while -0.0
results in </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>*res</span></b><span
style='font-size:11.0pt'> being set to +0.0 because -0.0 isn't positive (and
for </span><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>setpayloadsig</span></b></span><span
style='font-size:11.0pt'>, both result in </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>*res</span></b><span
style='font-size:11.0pt'> set to +0.0 because a payload for a signaling <span
class=SpellE>NaN</span> has to be nonzero to avoid all mantissa bits being
zero)?<o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'>A “positive floating-point integer” is a positive
integer in the floating-point <span class=GramE>format,</span> hence it is
greater than zero. So, the current specification for </span><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>setpayload</span></b></span><span style='font-size:11.0pt'> and </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New"'>setpayloadsig</span></b></span><span
style='font-size:11.0pt'> is <span class=GramE>flawed</span> in that it doesn’t
allow setting the payload to zero.<o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'>A more basic problem is that TS 18661-1 assumes IEC
60559 interprets payloads as integers. This is true for decimal formats. IEC
60559 says:<o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-top:0in;margin-right:0in;margin-bottom:
12.0pt;margin-left:.5in;mso-add-space:auto'><span style='font-size:11.0pt'>The
payload corresponds to the <span class=SpellE>significand</span> of finite
numbers, interpreted as an integer with a maximum value of 10^(3×<span
class=GramE>J)−1</span>, …<o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'>The <span class=SpellE>significand</span> c
interpreted as an integer is assumed throughout to be non-negative, while the <i
style='mso-bidi-font-style:normal'>s</i> field in (<i style='mso-bidi-font-style:
normal'>s</i>, <i style='mso-bidi-font-style:normal'>q</i>, <i
style='mso-bidi-font-style:normal'>c</i>) provides the sign. For decimal,
interpreting the bits in the encodings allows the two encoding schemes to have
the same payloads and the payloads to fit conceptually with their encoding
schemes. <o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'>However, for binary formats, IEC 60559 says:<o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-top:0in;margin-right:0in;margin-bottom:
12.0pt;margin-left:.5in;mso-add-space:auto'><span style='font-size:11.0pt'>For
binary formats, the payload is encoded in the <i style='mso-bidi-font-style:
normal'>p</i>−2 least significant bits of the trailing <span
class=SpellE>significand</span> field.<o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'>Nowhere does it actually interpret the payload for
binary formats as an integer.<o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'>However, the payload for binary formats has a natural
interpretation as an unsigned integer, so it is reasonable for TS 1866-1 to
interpret payloads (for binary and decimal formats) as such.<o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'>The suggested Technical Corrigendum below addresses
these problems.<o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>Suggested Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In 14.10, replace the first
sentence:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>IEC 60559 defines the payload of a <span
class=SpellE>NaN</span> to be a certain part of the <span class=SpellE>NaN’s</span>
<span class=SpellE>significand</span> interpreted as an integer.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'><o:p> </o:p></span></p>
<p class=MsoNormal><span class=GramE><span lang=EN-GB style='font-size:11.0pt;
mso-ansi-language:EN-GB'>with</span></span><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>:<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-ansi-language:
EN-GB'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>IEC 60559 defines the payload of a <span
class=SpellE>NaN</span> to be a certain part of the <span class=SpellE>NaN’s</span>
<span class=SpellE>significand</span>. The payload can be interpreted as an
unsigned integer.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In 14.10, in the new C <span
class=SpellE>subclause</span> F.10.13, replace:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>IEC 60559 defines the <i style='mso-bidi-font-style:
normal'>payload</i> of a quiet or <span class=SpellE>signaling</span> <span
class=SpellE>NaN</span> as an integer value encoded in the <span class=SpellE>significand</span>.<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-ansi-language:
EN-GB'><o:p> </o:p></span></p>
<p class=MsoNormal><span class=GramE><span lang=EN-GB style='font-size:11.0pt;
mso-ansi-language:EN-GB'>with</span></span><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>:<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-ansi-language:
EN-GB'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>IEC 60559 defines the <i style='mso-bidi-font-style:
normal'>payload</i> of a quiet or <span class=SpellE>signaling</span> <span
class=SpellE>NaN</span> as information encoded in part of the <span
class=SpellE>NaN</span> <span class=SpellE>significand</span>. The payload can
be interpreted as an unsigned integer.</span><span style='font-size:11.0pt'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In 14.10, in the new C <span
class=SpellE>subclauses</span> F.10.13.2#2 and F.10.13.3#2, change:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>If </span><span class=SpellE><span class=GramE><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-GB'>pl</span></b></span></span><span
lang=EN-GB style='font-size:11.0pt;mso-ansi-language:EN-GB'> is not a positive
floating-point integer representing a valid payload, </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-GB'>*res</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-ansi-language:EN-GB'> is set to positive
zero.</span><span style='font-size:11.0pt'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span class=GramE><span
style='font-size:11.0pt'>to</span></span><span style='font-size:11.0pt'>:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>If </span><span class=SpellE><span class=GramE><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-GB'>pl</span></b></span></span><span
lang=EN-GB style='font-size:11.0pt;mso-ansi-language:EN-GB'> is not a floating-point
integer representing a valid payload, </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'>*res</span></b><span lang=EN-GB style='font-size:11.0pt;
mso-ansi-language:EN-GB'> is set to positive zero.</span><span
style='font-size:11.0pt'><o:p></o:p></span></p>
<hr>
Apr 2017 meeting
<p><b>Committee Discussion</b></p>
<p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
</p>
<p><b>Proposed Change</b></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In 14.10, replace the first
sentence:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>IEC 60559 defines the payload of a <span
class=SpellE>NaN</span> to be a certain part of the <span class=SpellE>NaN’s</span>
<span class=SpellE>significand</span> interpreted as an integer.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'><o:p> </o:p></span></p>
<p class=MsoNormal><span class=GramE><span lang=EN-GB style='font-size:11.0pt;
mso-ansi-language:EN-GB'>with</span></span><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>:<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-ansi-language:
EN-GB'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>IEC 60559 defines the payload of a <span
class=SpellE>NaN</span> to be a certain part of the <span class=SpellE>NaN’s</span>
<span class=SpellE>significand</span>. The payload can be interpreted as an
unsigned integer.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In 14.10, in the new C <span
class=SpellE>subclause</span> F.10.13, replace:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>IEC 60559 defines the <i style='mso-bidi-font-style:
normal'>payload</i> of a quiet or <span class=SpellE>signaling</span> <span
class=SpellE>NaN</span> as an integer value encoded in the <span class=SpellE>significand</span>.<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-ansi-language:
EN-GB'><o:p> </o:p></span></p>
<p class=MsoNormal><span class=GramE><span lang=EN-GB style='font-size:11.0pt;
mso-ansi-language:EN-GB'>with</span></span><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>:<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;mso-ansi-language:
EN-GB'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>IEC 60559 defines the <i style='mso-bidi-font-style:
normal'>payload</i> of a quiet or <span class=SpellE>signaling</span> <span
class=SpellE>NaN</span> as information encoded in part of the <span
class=SpellE>NaN</span> <span class=SpellE>significand</span>. The payload can
be interpreted as an unsigned integer.</span><span style='font-size:11.0pt'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In 14.10, in the new C <span
class=SpellE>subclauses</span> F.10.13.2#2 and F.10.13.3#2, change:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>If </span><span class=SpellE><span class=GramE><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-GB'>pl</span></b></span></span><span
lang=EN-GB style='font-size:11.0pt;mso-ansi-language:EN-GB'> is not a positive
floating-point integer representing a valid payload, </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-GB'>*res</span></b><span
lang=EN-GB style='font-size:11.0pt;mso-ansi-language:EN-GB'> is set to positive
zero.</span><span style='font-size:11.0pt'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span class=GramE><span
style='font-size:11.0pt'>to</span></span><span style='font-size:11.0pt'>:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>If </span><span class=SpellE><span class=GramE><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-GB'>pl</span></b></span></span><span
lang=EN-GB style='font-size:11.0pt;mso-ansi-language:EN-GB'> is not a floating-point
integer representing a valid payload, </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'>*res</span></b><span lang=EN-GB style='font-size:11.0pt;
mso-ansi-language:EN-GB'> is set to positive zero.</span><span
style='font-size:11.0pt'><o:p></o:p></span></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_11">DR 11</a> Prev <— C2x —> Next <a href="#dr_13">DR 13</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_13><b><u>DR 13</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_12">DR 12</a> Prev <— C2x —> Next <a href="#dr_14">DR 14</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas<br>
<b>Submission Date:</b> 2017-03-04<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2125.pdf">N2125</a><br>
<b>Subject:</b> P3: Type-generic macros for functions that round result to narrower type</p>
<p><b>Summary</b></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt'>This
is about an issue raised by Joseph Myers in </span><span style='mso-bidi-font-family:
"Helvetica Neue";color:black'>SC22WG14.14561</span><span style='font-size:11.0pt'>:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;page-break-after:avoid'><span
style='font-size:11.0pt'>TS 18661-1 and -2 define type-generic macros for the
functions that round <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;page-break-after:avoid'><span
class=GramE><span style='font-size:11.0pt'>result</span></span><span
style='font-size:11.0pt'> to a narrower type. In part 1 these are, for
example, <span class=SpellE>fadd</span> and <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
class=GramE><span style='font-size:11.0pt'>dadd</span></span></span><span
style='font-size:11.0pt'> for addition; in part 2, for example, d32add and
d64add.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>Part
3 does not seem to make any changes or additions to those macros, and <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>consequences</span></span><span style='font-size:11.0pt'>
of that seem nonobvious. It defines new functions for the <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>new</span></span><span style='font-size:11.0pt'>
types: <span class=SpellE>fMaddfN</span>, <span class=SpellE>fMaddfNx</span>, <span
class=SpellE>fMxaddfN</span>, <span class=SpellE>fMxaddfNx</span> (where M <
N, or M <= N <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>in</span></span><span style='font-size:11.0pt'> the <span
class=SpellE>fMaddfNx</span> case), and likewise for decimal types. But
the <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>type</span></span><span style='font-size:11.0pt'>-generic
macros remain as defined in 7.25#6a after the changes from <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>parts</span></span><span style='font-size:11.0pt'> 1
and 2 are applied (part 3 does not contain the string "6a").<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>That
is, it's valid to pass the _<span class=SpellE>FloatN</span> and _<span
class=SpellE>FloatNx</span> types to the <span class=SpellE>fadd</span> and <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
class=GramE><span style='font-size:11.0pt'>dadd</span></span></span><span
style='font-size:11.0pt'> macros, and valid to pass the new _<span
class=SpellE>DecimalN</span> and _<span class=SpellE>DecimalNx</span> types
from <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>part</span></span><span style='font-size:11.0pt'> 3 to
the d32add and d64add types.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>(a)
7.25#6a <span class=GramE>says</span> "If the macro prefix is d32 or d64,
use of an argument of <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>standard</span></span><span style='font-size:11.0pt'>
floating type results in undefined behavior.". Other places get <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>amended</span></span><span style='font-size:11.0pt'>
in part 3 to say "floating type of radix 2" in addition to <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>"<span
class=GramE>standard</span> floating type". But it appears it fails
to make it undefined to <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>pass</span></span><span style='font-size:11.0pt'> _<span
class=SpellE>FloatN</span> or _<span class=SpellE>FloatNx</span> arguments to
d32add, d64add etc. type-generic <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>macros</span></span><span style='font-size:11.0pt'> -
although clearly it should be undefined.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>(b)
Passing _Decimal128 to d32add would result in the d32addd128 function <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>being</span></span><span style='font-size:11.0pt'>
called, as expected. But say you pass a _Decimal128x argument. A <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>function</span></span><span style='font-size:11.0pt'>
d32addd128x exists but the specification would seem to result in <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>d32addd64</span></span><span style='font-size:11.0pt'>
being called, which seems unintuitive. Similar issues apply <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>with</span></span><span style='font-size:11.0pt'> _<span
class=SpellE>FloatN</span> and _<span class=SpellE>FloatNx</span> types -
calling <span class=SpellE>fadd</span> on them would always call <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>the</span></span><span style='font-size:11.0pt'> <span
class=SpellE>fadd</span> function not <span class=SpellE>faddl</span>.
(But in that case there *are* no functions <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
style='font-size:11.0pt'>defined</span></span><span style='font-size:11.0pt'>
that take _<span class=SpellE>FloatN</span> / _<span class=SpellE>FloatNx</span>
arguments and return float or double. <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>So
the right thing to do is less obvious.)<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>The following addresses these
issues by filling in the missing specification in part 3.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Suggested
Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'>In clause 15, after the change
to 7.25#6, add:<o:p></o:p></span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Change 7.25#6a
from:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>[6a] The
functions that round result to a narrower type have type-generic macros whose
names are obtained by omitting any suffix from the function names. Thus, the
macros with </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>f</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> or </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> prefix are:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-left:1.5in;mso-add-space:auto;
line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:
none'><span class=SpellE><span class=GramE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>fadd</span></b></span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>fmul</span>
<span
class=SpellE>ffma</span><o:p></o:p></span></b></p>
<p class=MsoNormalCxSpMiddle style='margin-left:1.5in;mso-add-space:auto;
line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:
none'><span class=SpellE><span class=GramE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>dadd</span></b></span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>dmul</span>
<span
class=SpellE>dfma</span><o:p></o:p></span></b></p>
<p class=MsoNormalCxSpMiddle style='margin-left:1.5in;mso-add-space:auto;
line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:
none'><span class=SpellE><span class=GramE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>fsub</span></b></span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>fdiv</span>
<span
class=SpellE>fsqrt</span><o:p></o:p></span></b></p>
<p class=MsoNormalCxSpMiddle style='margin-left:1.5in;mso-add-space:auto;
line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:
none'><span class=SpellE><span class=GramE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>dsub</span></b></span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>ddiv</span>
<span
class=SpellE>dsqrt</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>and</span></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> the macros
with </span><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>d32</span></b><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'> or </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d64</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> prefix are:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d32add</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
d32mul
d32fma<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d64add</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
d64mul
d64fma<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d32sub</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
d32div
d32sqrt<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d64sub</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
d64div
d64sqrt<o:p></o:p></span></b></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'>All arguments are generic. If
any argument is not real, use of the macro results in undefined behavior. If
the macro prefix is </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>f</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> or </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, use of an argument of decimal
floating type results in undefined behavior. If the macro prefix is </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d32</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> or </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d64</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, use of an
argument of standard floating type results in undefined behavior. The function
invoked is determined as follows:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—
If any argument has type </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>_Decimal128</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, or if the
macro prefix is </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>d64</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, the function
invoked has the name of the macro, with a </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d128</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> suffix.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—
Otherwise, if the macro prefix is </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d32</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, the function
invoked has the name of the macro, with a </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d64</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> suffix.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—
Otherwise, if any argument has type </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>long double</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, or if the macro prefix is </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, the function invoked has the name of
the macro, with an </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>l</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> suffix.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—
Otherwise, the function invoked has the name of the macro
(with no suffix).<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><span
style="mso-spacerun:yes"> </span><span class=GramE>to</span>:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'>[6a] The functions that round
result to a narrower type have type-generic macros whose names are obtained by
omitting any suffix from the function names. Thus, the macros with </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f</span></b><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:Calibri;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:"Courier New";color:black'>
</span></b><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>or
</span><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>d</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> prefix are:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>fadd</span></b></span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>fmul</span>
<span
class=SpellE>ffma</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>dadd</span></b></span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>dmul</span>
<span
class=SpellE>dfma</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>fsub</span></b></span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>fdiv</span>
<span
class=SpellE>fsqrt</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>dsub</span></b></span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>ddiv</span>
<span
class=SpellE>dsqrt</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>and</span></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> the macros
with </span><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>f</span></b><i
style='mso-bidi-font-style:normal'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'>M</span></i></span><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'>, </span><span class=SpellE><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>f</span></b><i
style='mso-bidi-font-style:normal'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'>M</span></i><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>x</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>d</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, or </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>d</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>x</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> prefix are:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>add</span></b></span></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>f<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xmul</span> <span
style="mso-spacerun:yes">
</span><span class=SpellE>d<i style='mso-bidi-font-style:normal'><span
style='font-family:Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>fma</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>sub</span></b></span></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>f<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xdiv</span>
<span
class=SpellE>d<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>sqrt</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>mul</span></b></span></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>f<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xfma</span> <span
class=SpellE>d<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xadd</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>div</span></b></span></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>f<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xsqrt</span> <span
class=SpellE>d<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xsub</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>fma</span></b></span></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>d<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>add</span> <span
style="mso-spacerun:yes">
</span><span class=SpellE>d<i style='mso-bidi-font-style:normal'><span
style='font-family:Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xmul</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>sqrt</span></b></span></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>d<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
font-weight:normal'>M</span></i>sub</span> <span
style="mso-spacerun:yes">
</span><span class=SpellE>d<i style='mso-bidi-font-style:normal'><span
style='font-family:Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xdiv</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>xadd</span></b></span></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'><span
style="mso-spacerun:yes">
</span><span class=SpellE>d<i style='mso-bidi-font-style:normal'><span
style='font-family:Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>mul</span>
<span
style="mso-spacerun:yes"> </span><span
class=SpellE>d<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xfma</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>xsub</span></b></span></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'><span
style="mso-spacerun:yes">
</span><span class=SpellE>d<i style='mso-bidi-font-style:normal'><span
style='font-family:Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>div</span>
<span
style="mso-spacerun:yes"> </span><span
class=SpellE>d<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xsqrt</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'>All arguments are generic. If
any argument is not real, use of the macro results in undefined behavior. If
the macro prefix is </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>f</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, </span><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, or </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>x</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, use of an argument of decimal
floating type results in undefined behavior. If the macro prefix is </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>d</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> or </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>d</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>x</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, use of an argument of standard or
binary floating type results in undefined behavior. The function invoked is
determined as follows:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—<span
style='mso-tab-count:1'> </span>Arguments that have integer
type are regarded as having type </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Decimal64</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> if any
argument has decimal floating type, and as having type </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>double</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> otherwise.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—<span
style='mso-tab-count:1'> </span>The <span class=SpellE>unsuffixed</span>
name of the function is the name of the macro, and its suffix, if any,
corresponds to the parameter type which may be any type with at least the range
and precision of the argument types.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'>In clause 15, at the end of the text appended to the table
in 7.25#7, further append:<o:p></o:p></span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:3.0in;text-indent:-2.0in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>f32xadd</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>(d, f32x)</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'><span style='mso-tab-count:1'> </span>any
</span><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>f32xaddf</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>N</span></i><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> or </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f32xaddf</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>N</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>x</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> such that <i style='mso-bidi-font-style:
normal'>N</i> > 32 and the suffix type, </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>_<span
class=SpellE>Float<i style='mso-bidi-font-style:normal'><span style='font-family:
Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Times;font-weight:normal'>N</span></i></span></span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> or </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>_<span class=SpellE>Float<i style='mso-bidi-font-style:
normal'><span style='font-family:Cambria;mso-ascii-theme-font:minor-latin;
mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Times;font-weight:normal'>N</span></i>x</span></span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, is at least
as wide as </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> and </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>_Float32x</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> <o:p></o:p></span></p>
<hr>
Apr 2017 meeting
<p><b>Committee Discussion</b></p>
<p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
</p>
<p>Apr 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
After extensive discussion on the mailing list several documents were proposed with new and revised change suggestions. The following revised proposed change is largely drawn from
<a href= "http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2213.pdf">N2213</a>
with further changes reviewed at the meeting.
<p>
</blockquote>
<p><b>Proposed Change</b>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'>In clause 15, after the change
to 7.25#6, add:<o:p></o:p></span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Change 7.25#6a
from:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>[6a] The
functions that round result to a narrower type have type-generic macros whose
names are obtained by omitting any suffix from the function names. Thus, the
macros with </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>f</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> or </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> prefix are:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-left:1.5in;mso-add-space:auto;
line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:
none'><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>fadd</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>fmul</span>
<span
class=SpellE>ffma</span><o:p></o:p></span></b></p>
<p class=MsoNormalCxSpMiddle style='margin-left:1.5in;mso-add-space:auto;
line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:
none'><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>dadd</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>dmul</span>
<span
class=SpellE>dfma</span><o:p></o:p></span></b></p>
<p class=MsoNormalCxSpMiddle style='margin-left:1.5in;mso-add-space:auto;
line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:
none'><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>fsub</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>fdiv</span>
<span
class=SpellE>fsqrt</span><o:p></o:p></span></b></p>
<p class=MsoNormalCxSpMiddle style='margin-left:1.5in;mso-add-space:auto;
line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:
none'><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>dsub</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>ddiv</span>
<span
class=SpellE>dsqrt</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'>and the macros with </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d32</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> or </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d64</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> prefix are:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d32add
d32mul
d32fma<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d64add
d64mul
d64fma<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d32sub
d32div
d32sqrt<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d64sub
d64div
d64sqrt<o:p></o:p></span></b></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'>All arguments are generic. If
any argument is not real, use of the macro results in undefined behavior. If
the macro prefix is </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>f</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> or </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, use of an argument of decimal
floating type results in undefined behavior. If the macro prefix is </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d32</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> or </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d64</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, use of an
argument of standard floating type results in undefined behavior. The function
invoked is determined as follows:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—
If any argument has type </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>_Decimal128</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, or if the
macro prefix is </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>d64</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, the function
invoked has the name of the macro, with a </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d128</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> suffix.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—
Otherwise, if the macro prefix is </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d32</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, the function
invoked has the name of the macro, with a </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d64</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> suffix.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—
Otherwise, if any argument has type </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>long double</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, or if the macro prefix is </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, the function invoked has the name of
the macro, with an </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>l</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> suffix.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:94.5pt;text-indent:-22.5pt;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—
Otherwise, the function invoked has the name of the macro
(with no suffix).<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><span
style='mso-spacerun:yes'> </span>to:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>[6a] The
functions that round result to a narrower type have type-generic macros whose
names are obtained by omitting any suffix from the function names. Thus, the
macros with </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>f</span></b><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;mso-bidi-font-family:
"Courier New";color:black'> </span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>or </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> prefix are:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>fadd</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>fmul</span>
<span
class=SpellE>ffma</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>dadd</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>dmul</span>
<span
class=SpellE>dfma</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;page-break-after:avoid;mso-layout-grid-align:none;text-autospace:none'><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>fsub</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>
<span
class=SpellE>fdiv</span>
<span
class=SpellE>fsqrt</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>dsub</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>ddiv</span>
<span
class=SpellE>dsqrt</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'>and the macros with </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>x</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, </span><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, or </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>d</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>x</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> prefix are:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>add</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>f<i style='mso-bidi-font-style:normal'><span style='font-family:
"Times New Roman",serif;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xmul</span>
<span style='mso-spacerun:yes'> </span><span class=SpellE>d<i
style='mso-bidi-font-style:normal'><span style='font-family:"Times New Roman",serif;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>fma</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>sub</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>f<i style='mso-bidi-font-style:normal'><span style='font-family:
"Times New Roman",serif;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xdiv</span>
<span
class=SpellE>d<i style='mso-bidi-font-style:normal'><span style='font-family:
"Times New Roman",serif;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>sqrt</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>mul</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>f<i style='mso-bidi-font-style:normal'><span style='font-family:
"Times New Roman",serif;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xfma</span>
<span
class=SpellE>d<i style='mso-bidi-font-style:normal'><span style='font-family:
"Times New Roman",serif;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xadd</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>div</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>f<i style='mso-bidi-font-style:normal'><span style='font-family:
"Times New Roman",serif;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xsqrt</span>
<span
class=SpellE>d<i style='mso-bidi-font-style:normal'><span style='font-family:
"Times New Roman",serif;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xsub</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>fma</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>d<i style='mso-bidi-font-style:normal'><span style='font-family:
"Times New Roman",serif;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>add</span> <span
style='mso-spacerun:yes'> </span><span class=SpellE>d<i
style='mso-bidi-font-style:normal'><span style='font-family:"Times New Roman",serif;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xmul</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>sqrt</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>
<span
class=SpellE>d<i style='mso-bidi-font-style:normal'><span style='font-family:
"Times New Roman",serif;mso-bidi-font-family:Times;font-weight:normal'>M</span></i>sub</span> <span
style='mso-spacerun:yes'> </span><span class=SpellE>d<i
style='mso-bidi-font-style:normal'><span style='font-family:"Times New Roman",serif;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xdiv</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>xadd</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'><span
style='mso-spacerun:yes'> </span><span class=SpellE>d<i
style='mso-bidi-font-style:normal'><span style='font-family:"Times New Roman",serif;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>mul</span><span
style='mso-spacerun:yes'> </span><span class=SpellE>d<i
style='mso-bidi-font-style:normal'><span style='font-family:"Times New Roman",serif;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xfma</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:1.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>xsub</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'><span
style='mso-spacerun:yes'> </span><span class=SpellE>d<i
style='mso-bidi-font-style:normal'><span style='font-family:"Times New Roman",serif;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>div</span><span
style='mso-spacerun:yes'> </span><span class=SpellE>d<i
style='mso-bidi-font-style:normal'><span style='font-family:"Times New Roman",serif;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>xsqrt</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'>All arguments are generic. If
any argument is not real, use of the macro results in undefined behavior. If
the macro prefix is </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>f</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> or </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, use of an argument of interchange or
extended floating type results in undefined behavior. If the macro prefix is </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>, or </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>x</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, use of an argument of standard or
decimal floating type results in undefined behavior. If the macro prefix is </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>d</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> or </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>d</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>x</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, use of an argument of standard or
binary floating type results in undefined behavior.<span
style='mso-spacerun:yes'> </span>The function invoked is determined as
follows:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—<span
style='mso-tab-count:1'> </span>Arguments that have integer type are regarded
as having type </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>double</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> if the macro
prefix is </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>f</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> or </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, as having type </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>_Float64</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> if the macro prefix is </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> or </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>x</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, and as having type </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>_Decimal64</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'> if the macro prefix is </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>d</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'> or </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>d</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>x</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>.<o:p></o:p></span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—<span
style='mso-tab-count:1'> </span></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times'>If the function has exactly one generic
parameter, the type determined is the type of the argument. <span
style='color:black'><o:p></o:p></span></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—<span
style='mso-tab-count:1'> </span></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times'>If the function has exactly two generic
parameters, the type determined is the type determined by the
usual arithmetic conversions (6.3.1.8) applied to the arguments.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>—<span
style='mso-tab-count:1'> </span></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times'>If the function has three generic parameters,
the type determined is the type determined by applying the usual
arithmetic conversions twice, first to the first two arguments, then to
that result type and the third argument.<span style='color:black'><o:p></o:p></span></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;page-break-after:avoid;mso-layout-grid-align:none;
text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black'>—<span style='mso-tab-count:1'> </span></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times'>If no function with the
given prefix has the parameter type determined above, the parameter type is
determined from the prefix as follows:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;page-break-after:avoid;mso-layout-grid-align:none;
text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:Times'><o:p> </o:p></span></p>
<table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
style='margin-left:1.25in;border-collapse:collapse;border:none;mso-border-alt:
solid windowtext .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td valign=top style='border:solid windowtext 1.0pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>f<o:p></o:p></span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>double<o:p></o:p></span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d<o:p></o:p></span></b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;mso-border-top-alt:solid windowtext .5pt;
mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>long
double<o:p></o:p></span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p></o:p></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;mso-border-top-alt:solid windowtext .5pt;
mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>_<span
class=SpellE>Float<i style='mso-bidi-font-style:normal'><span
style='font-family:"Times New Roman",serif;mso-bidi-font-family:Times;
font-weight:normal'>N</span></i></span></span></b><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'> for minimum <i
style='mso-bidi-font-style:normal'>N</i> > <i style='mso-bidi-font-style:
normal'>M</i></span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'> </span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>if supported,
else </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>_<span class=SpellE>Float<i
style='mso-bidi-font-style:normal'><span style='font-family:"Times New Roman",serif;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i><span
style='font-family:"Times New Roman",serif;mso-bidi-font-family:Times;
font-weight:normal'>x</span></span></span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'><o:p></o:p></span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>x</span></b></span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'><o:p></o:p></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;mso-border-top-alt:solid windowtext .5pt;
mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>_<span
class=SpellE>Float<i style='mso-bidi-font-style:normal'><span
style='font-family:"Times New Roman",serif;mso-bidi-font-family:Times;
font-weight:normal'>N</span></i>x</span></span></b><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'> for minimum <i
style='mso-bidi-font-style:normal'>N</i> > <i style='mso-bidi-font-style:
normal'>M</i> if supported, else </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_<span
class=SpellE>Float<i style='mso-bidi-font-style:normal'><span
style='font-family:"Times New Roman",serif;mso-bidi-font-family:Times;
font-weight:normal'>N</span></i></span></span></b><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'> for minimum <i
style='mso-bidi-font-style:normal'>N</i> > <i style='mso-bidi-font-style:
normal'>M</i><o:p></o:p></span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>M</span></i></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p></o:p></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;mso-border-top-alt:solid windowtext .5pt;
mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;page-break-after:
avoid;mso-layout-grid-align:none;text-autospace:none'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>_<span
class=SpellE>Decimal<i style='mso-bidi-font-style:normal'><span
style='font-family:"Times New Roman",serif;mso-bidi-font-family:Times;
font-weight:normal'>N</span></i></span></span></b><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'> for minimum <i
style='mso-bidi-font-style:normal'>N</i> > <i style='mso-bidi-font-style:
normal'>M</i></span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'> </span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>if supported,
else </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New";color:black'>_<span class=SpellE>Decimal<i
style='mso-bidi-font-style:normal'><span style='font-family:"Times New Roman",serif;
mso-bidi-font-family:Times;font-weight:normal'>M</span></i>x</span></span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p></o:p></span></p>
</td>
</tr>
<tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span class=SpellE><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d</span></b><i
style='mso-bidi-font-style:normal'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'>M</span></i><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>x</span></b></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p></o:p></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;mso-border-top-alt:solid windowtext .5pt;
mso-border-left-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_<span
class=SpellE>Decimal<i style='mso-bidi-font-style:normal'><span
style='font-family:"Times New Roman",serif;mso-bidi-font-family:Times;
font-weight:normal'>N</span></i>x</span></span></b><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'> for minimum <i
style='mso-bidi-font-style:normal'>N</i> > <i style='mso-bidi-font-style:
normal'>M</i> if supported, else </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_<span
class=SpellE>Decimal<i style='mso-bidi-font-style:normal'><span
style='font-family:"Times New Roman",serif;mso-bidi-font-family:Times;
font-weight:normal'>N</span></i></span></span></b><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'> for minimum <i
style='mso-bidi-font-style:normal'>N</i> > <i style='mso-bidi-font-style:
normal'>M</i><o:p></o:p></span></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;line-height:14.0pt;mso-pagination:
none;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
11.0pt;mso-bidi-font-family:Times;color:black'>In clause 15, at the end of the
text appended to the table in 7.25#7, further append:<o:p></o:p></span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:3.0in;text-indent:-2.0in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
class=SpellE><span class=GramE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>fsub</span></b></span></span><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>(</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>d,
<span class=SpellE>ld</span>)<span style='mso-tab-count:1'> </span><span
class=SpellE>fsubl</span><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:3.0in;text-indent:-2.0in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f32<span class=GramE>add(</span>f64x, f64)<span
style='mso-tab-count:1'> </span>f32addf64x<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:3.0in;text-indent:-2.0in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>d32xsqrt(n)<span style='mso-tab-count:1'> </span>d32xsqrtd64
<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:3.0in;text-indent:-2.0in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f32<span class=GramE>mul(</span>f128, f32x)<span
style='mso-tab-count:1'> </span>f32mulf128</span></b><span style='font-size:
11.0pt;mso-bidi-font-family:"Courier New";color:black'> if </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>_Float128</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:"Courier New";color:black'> is at least as wide as </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>_Float32x</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:"Courier New";color:black'>, or </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f32mulf32x</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:"Courier New";color:black'> if </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>_Float32x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:"Courier New";color:black'> is
wider than </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>_Float128</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:3.0in;text-indent:-2.0in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f32<span class=GramE>fma(</span>f32x, n, f32x)</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><span
style='mso-tab-count:1'> </span></span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>f32fmaf64</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:"Courier New";color:black'> if </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>_Float64</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:"Courier New";color:black'> is at least as wide as </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>_Float32x</span></b><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>,</span><span style='font-size:11.0pt;
mso-bidi-font-family:"Courier New";color:black'> or </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>f32fmaf32x</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:"Courier New";color:black'> if </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>_Float32x</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:"Courier New";color:black'> is wider than </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>_Float64</span></b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:3.0in;text-indent:-2.0in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
class=SpellE><span class=GramE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>ddiv</span></b></span></span><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>(</span></b></span><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>ld</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>,
f128)</span></b><span style='font-size:11.0pt;mso-bidi-font-family:Times;
color:black'><span style='mso-tab-count:1'> </span>undefined <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:3.0in;text-indent:-2.0in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";color:black'>f32<span class=GramE>fma(</span>f64, d, f64)</span></b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'><span
style='mso-tab-count:1'> </span>undefined <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:3.0in;text-indent:-2.0in;line-height:
14.0pt;mso-pagination:none;mso-layout-grid-align:none;text-autospace:none'><span
class=SpellE><span class=GramE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";color:black'>fmul</span></b></span></span><span
class=GramE><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New";color:black'>(</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";color:black'>dc,
d)</span></b><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;mso-bidi-font-family:"Courier New";color:black'><span style='mso-tab-count:
1'> </span></span></b><span style='font-size:11.0pt;
mso-bidi-font-family:"Courier New";color:black'>undefined<b style='mso-bidi-font-weight:
normal'><o:p></o:p></b></span></p>
<p class=MsoNormal style='margin-left:1.0in'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>f32<span
class=GramE>add(</span>f32, f32)</span></b><span style='font-size:11.0pt'><span
style='mso-tab-count:1'> </span><span style='mso-tab-count:1'> </span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>f32addf64(f32, f32)</span></b><span style='font-size:11.0pt'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;page-break-after:avoid'><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>f32xsqrt(f32)</span></b><span style='font-size:11.0pt'><span
style='mso-tab-count:2'> </span></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>f32xsqrtf64x(f32)</span></b><span
style='font-size:11.0pt'> if </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>_Float64x</span></b><span
style='font-size:11.0pt'> is <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:3.0in'><span style='font-size:11.0pt'>supported,
else </span><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New"'>f32xsqrtf64</span></b><span style='font-size:11.0pt'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in'><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>f64<span
class=GramE>div(</span>f32x, f32x)</span></b><span style='font-size:11.0pt'><span
style='mso-tab-count:1'> </span></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>f64divf128(f32x,
f32x)</span></b><span style='font-size:11.0pt'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:2.5in;text-indent:.5in'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:11.0pt'><o:p> </o:p></span></p>
</div>
<!-- LINKAGE --> <p align="center"> <a href="#dr_12">DR 12</a> Prev <— C2x —> Next <a href="#dr_14">DR 14</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_14><b><u>DR 14</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_13">DR 13</a> Prev <— C2x —> Next <a href="#dr_15">DR 15</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas<br>
<b>Submission Date:</b> 2017-03-04<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2125.pdf">N2125</a><br>
<b>Subject:</b> P2: Effect of <tt>%a</tt> vs <tt>%A</tt> conversion specifiers</p>
<p><b>Summary</b></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt'>The
specification in TS 18661-2 for </span><span class=SpellE><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>a</span></b><span
class=GramE><span style='font-size:11.0pt'>,</span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>A</span></b></span></span><span
style='font-size:11.0pt'> conversion <span class=SpellE>specifiers</span> for
decimal describes the behavior in terms of<span style="mso-spacerun:yes">
</span></span><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New"'>f</span></b><span style='font-size:11.0pt'>
and </span><b style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;
font-family:"Courier New"'>e</span></b><span style='font-size:11.0pt'>
formatting. The intention was that the </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>A</span></b><span
style='font-size:11.0pt'> conversion <span class=SpellE>specifier</span> would
have the effects of </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>F</span></b><span
style='font-size:11.0pt'> and </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>E</span></b><span
style='font-size:11.0pt'> formatting. The following Technical Corrigendum
corrects this oversight, using wording similar to that in C11 for the </span><span
class=SpellE><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New"'>g</span></b><span class=GramE><span
style='font-size:11.0pt'>,</span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>G</span></b></span></span><span
style='font-size:11.0pt'> conversion <span class=SpellE>specifiers</span>.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>Suggested Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'>In 12.5, in the text added to </span>7.21.6.1#8 and
7.29.2.1#8, under <span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-family:"Courier New"'>a</span></b><span class=GramE>,<b
style='mso-bidi-font-weight:normal'><span style='font-family:"Courier New"'>A</span></b></span></span>
conversion <span class=SpellE>specifiers</span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, replace the bullets:<o:p></o:p></span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;page-break-after:
avoid'><span lang=EN-GB>—<span style='mso-tab-count:1'> </span><span
class=GramE>if</span> −(<i style='mso-bidi-font-style:normal'>n</i>+5) ≤ <i
style='mso-bidi-font-style:normal'>q</i> ≤ 0, use style </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>f</span></b><span
lang=EN-GB> formatting with formatting precision equal to −<i
style='mso-bidi-font-style:normal'>q</i>,</span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in'><span lang=EN-GB>—<span
style='mso-tab-count:1'> </span><span class=GramE>otherwise</span>,
use style </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>e</span></b><span lang=EN-GB> formatting with
…</span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span class=GramE><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>with</span></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>:<o:p></o:p></span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;page-break-after:
avoid'><span lang=EN-GB>—<span style='mso-tab-count:1'> </span><span
class=GramE>if</span> −(<i style='mso-bidi-font-style:normal'>n</i>+5) ≤ <i
style='mso-bidi-font-style:normal'>q</i> ≤ 0, use style </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>f</span></b><span
lang=EN-GB> (or style </span><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>F</span></b><span lang=EN-GB> in
the case of an </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>A</span></b><span lang=EN-GB> conversion <span
class=SpellE>specifier</span>) with formatting precision equal to −<i
style='mso-bidi-font-style:normal'>q</i>,</span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in'><span lang=EN-GB>—<span
style='mso-tab-count:1'> </span><span class=GramE>otherwise</span>,
use style </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>e</span></b><span lang=EN-GB> (or style </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>E</span></b><span
lang=EN-GB> in the case of an </span><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>A</span></b><span lang=EN-GB>
conversion <span class=SpellE>specifier</span>) with …</span></p>
<hr>
Apr 2017 meeting
<p><b>Committee Discussion</b></p>
<p>
The committee agrees that this is a defect and accepts the Suggested Technical Corrigendum
</p>
<p><b>Proposed Technical Corrigendum</b>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'>In 12.5, in the text added to </span>7.21.6.1#8 and
7.29.2.1#8, under <span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-family:"Courier New"'>a</span></b><span class=GramE>,<b
style='mso-bidi-font-weight:normal'><span style='font-family:"Courier New"'>A</span></b></span></span>
conversion <span class=SpellE>specifiers</span><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>, replace the bullets:<o:p></o:p></span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;page-break-after:
avoid'><span lang=EN-GB>—<span style='mso-tab-count:1'> </span><span
class=GramE>if</span> −(<i style='mso-bidi-font-style:normal'>n</i>+5) ≤ <i
style='mso-bidi-font-style:normal'>q</i> ≤ 0, use style </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>f</span></b><span
lang=EN-GB> formatting with formatting precision equal to −<i
style='mso-bidi-font-style:normal'>q</i>,</span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in'><span lang=EN-GB>—<span
style='mso-tab-count:1'> </span><span class=GramE>otherwise</span>,
use style </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>e</span></b><span lang=EN-GB> formatting with
…</span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span class=GramE><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>with</span></span><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>:<o:p></o:p></span></p>
<p class=MsoNormal style='line-height:14.0pt;mso-pagination:none;mso-layout-grid-align:
none;text-autospace:none'><span style='font-size:11.0pt;mso-bidi-font-family:
Times;color:black'><o:p> </o:p></span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in;page-break-after:
avoid'><span lang=EN-GB>—<span style='mso-tab-count:1'> </span><span
class=GramE>if</span> −(<i style='mso-bidi-font-style:normal'>n</i>+5) ≤ <i
style='mso-bidi-font-style:normal'>q</i> ≤ 0, use style </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>f</span></b><span
lang=EN-GB> (or style </span><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>F</span></b><span lang=EN-GB> in
the case of an </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>A</span></b><span lang=EN-GB> conversion <span
class=SpellE>specifier</span>) with formatting precision equal to −<i
style='mso-bidi-font-style:normal'>q</i>,</span></p>
<p class=stdtext style='margin-left:.5in;text-indent:-.25in'><span lang=EN-GB>—<span
style='mso-tab-count:1'> </span><span class=GramE>otherwise</span>,
use style </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>e</span></b><span lang=EN-GB> (or style </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>E</span></b><span
lang=EN-GB> in the case of an </span><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>A</span></b><span lang=EN-GB>
conversion <span class=SpellE>specifier</span>) with …</span></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_13">DR 13</a> Prev <— C2x —> Next <a href="#dr_15">DR 15</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_15><b><u>DR 15</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_14">DR 14</a> Prev <— C2x —> Next <a href="#dr_16">DR 16</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas<br>
<b>Submission Date:</b> 2017-10-25<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2171.pdf">N2171</a><br>
<b>Subject:</b> P3: Characteristic macros for non-arithmetic formats</p>
<p><b>Summary</b></p>
<p class=MsoNormal><span style='font-size:11.0pt'>This DR addresses an issue
related to DR 501 and IEC 60559 non-arithmetic interchange formats.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>TS 18661-3 attempted to
change the definition of </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>DECIMAL_DIG</span></b><span
style='font-size:11.0pt'> so that it would apply to all supported IEC 60559
formats. DR 501 shows that this change is problematic. After several
unsuccessful attempts at a suitable TC, WG 14 and the CFP group have agreed to
obsolesce </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New"'>DECIMAL_DIG</span></b><span style='font-size:
11.0pt'> in favor of the <span class=SpellE><i style='mso-bidi-font-style:normal'>type</i><b
style='mso-bidi-font-weight:normal'><span style='font-family:"Courier New"'>_DECIMAL_DIG</span></b></span>
macros. <o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>The <span class=SpellE><i
style='mso-bidi-font-style:normal'>type</i><b style='mso-bidi-font-weight:normal'><span
style='font-family:"Courier New"'>_DECIMAL_DIG</span></b></span> macros are
helpful in using conversions between binary floating-point formats and decimal
character sequences. TS 18661-3 <span class=GramE>specifies</span> such
conversions for non-arithmetic binary interchange formats, but neglects to
include the macros for such formats.<o:p></o:p></span></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Likewise, the <span class=SpellE><i style='mso-bidi-font-style:
normal'>type</i><b style='mso-bidi-font-weight:normal'><span style='font-family:
"Courier New"'>_DIG</span></b></span> macros too are helpful in using conversions
between binary floating-point formats and decimal character sequences, though TS
18661-3 does not specify them for non-arithmetic formats.</p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt'>The suggested TC below extends the set of </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>FLT</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt'>N</span></i><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>_DECIMAL_DIG</span></b><span
style='font-size:11.0pt'> and </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>FLT</span></b><i
style='mso-bidi-font-style:normal'><span style='font-size:11.0pt'>N</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>_DIG</span></b><span style='font-size:11.0pt;mso-bidi-font-family:
"Courier New"'> macros to include ones for IEC 60559 non-arithmetic binary interchange
formats. <o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt;mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='font-size:11.0pt;
mso-bidi-font-family:Times;color:black'>Suggested Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In TS 18661-3 5.3, in the
text for 5.2.4.2.2#6c, after the list for supported types </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>_<span class=SpellE>Float<i style='mso-bidi-font-style:normal'><span
style='font-family:Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Arial;font-weight:normal'>N</span></i></span></span></b><span
style='font-size:11.0pt'>, insert:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=stdtext style='page-break-after:avoid'><span class=GramE><span
style='mso-ansi-language:EN-US'>for</span></span><span style='mso-ansi-language:
EN-US'> IEC 60559 non-arithmetic binary interchange formats of width <i
style='mso-bidi-font-style:normal'>N</i>:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:19.45pt;margin-bottom:
0in;margin-left:40.3pt;margin-bottom:.0001pt;line-height:11.5pt;page-break-after:
avoid;tab-stops:184.5pt 328.5pt'><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>FLT</span></b><i
style='mso-bidi-font-style:normal'><span style='font-size:11.0pt;mso-bidi-font-family:
Arial'>N</span></i><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>_DECIMAL_DIG<span
style='mso-tab-count:1'> </span>FLT</span></b><i
style='mso-bidi-font-style:normal'><span style='font-size:11.0pt;mso-bidi-font-family:
Arial'>N</span></i><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>_DIG<span style='mso-tab-count:
1'> </span>
</span></b><span style='font-size:11.0pt;font-family:"Courier New"'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In TS 18661-3 clause 7, in
the text for 5.2.4.2.2a#1, change:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>The
prefix </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New"'>FLT</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt'>N</span></i><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>_</span></b><span
style='font-size:11.0pt'> indicates a binary interchange floating type of width
<i style='mso-bidi-font-style:normal'>N</i>.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span class=GramE><span style='font-size:11.0pt'>to</span></span><span
style='font-size:11.0pt'>:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>The
prefix </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New"'>FLT</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt'>N</span></i><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>_</span></b><span
style='font-size:11.0pt'> indicates a binary interchange floating type or a
non-arithmetic binary interchange format of width <i style='mso-bidi-font-style:
normal'>N</i>.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>Change the last sentence <span
class=GramE>of<span style="mso-spacerun:yes"> </span>5.2.4.2.2a</span>#1
from:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>Conversely,
for each such type that the implementation does not provide, </span><b><span
style='font-size:11.0pt;font-family:"Courier New"'><<span class=SpellE>float.h</span>></span></b><b><span
style='font-size:11.0pt'> </span></b><span style='font-size:11.0pt'>shall not
define the associated macros in the following lists.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span class=GramE><span style='font-size:11.0pt'>to</span></span><span
style='font-size:11.0pt'>:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>Conversely,
for each such type that the implementation does not provide, </span><b><span
style='font-size:11.0pt;font-family:"Courier New"'><<span class=SpellE>float.h</span>></span></b><b><span
style='font-size:11.0pt'> </span></b><span style='font-size:11.0pt'>shall not
define the associated macros in the following list, except, the implementation
shall define the macros </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>FLT</span></b><i
style='mso-bidi-font-style:normal'><span style='font-size:11.0pt'>N</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>_DECIMAL_DIG</span></b><span style='font-size:11.0pt'> and </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>FLT</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt'>N</span></i><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>_DIG</span></b><span
style='font-size:11.0pt'> if it supports IEC 60559 non-arithmetic binary
interchange formats of width <i style='mso-bidi-font-style:normal'>N</i> by
providing the encoding-to-encoding conversion functions in </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'><<span class=SpellE>math.h</span>></span></b><span
style='font-size:11.0pt'> and the string-to-encoding and string-from-encoding
functions in </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'><<span class=SpellE>stdlib.h</span>></span></b><span
style='font-size:11.0pt'>.<o:p></o:p></span></p>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<hr>
Oct 2017 meeting
<p><b>Committee Discussion</b></p>
The committee agreed with this issue and its proposed clarification.
<br>
<p>
<b>Proposed Technical Clarification</b>
<p class=MsoNormal><span style='font-size:11.0pt'>In TS 18661-3 5.3, in the
text for 5.2.4.2.2#6c, after the list for supported types </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>_<span class=SpellE>Float<i style='mso-bidi-font-style:normal'><span
style='font-family:Cambria;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Arial;font-weight:normal'>N</span></i></span></span></b><span
style='font-size:11.0pt'>, insert:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=stdtext style='page-break-after:avoid'><span class=GramE><span
style='mso-ansi-language:EN-US'>for</span></span><span style='mso-ansi-language:
EN-US'> IEC 60559 non-arithmetic binary interchange formats of width <i
style='mso-bidi-font-style:normal'>N</i>:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:19.45pt;margin-bottom:
0in;margin-left:40.3pt;margin-bottom:.0001pt;line-height:11.5pt;page-break-after:
avoid;tab-stops:184.5pt 328.5pt'><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>FLT</span></b><i
style='mso-bidi-font-style:normal'><span style='font-size:11.0pt;mso-bidi-font-family:
Arial'>N</span></i><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>_DECIMAL_DIG<span
style='mso-tab-count:1'> </span>FLT</span></b><i
style='mso-bidi-font-style:normal'><span style='font-size:11.0pt;mso-bidi-font-family:
Arial'>N</span></i><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>_DIG<span style='mso-tab-count:
1'> </span>
</span></b><span style='font-size:11.0pt;font-family:"Courier New"'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In TS 18661-3 clause 7, in
the text for 5.2.4.2.2a#1, change:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>The
prefix </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New"'>FLT</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt'>N</span></i><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>_</span></b><span
style='font-size:11.0pt'> indicates a binary interchange floating type of width
<i style='mso-bidi-font-style:normal'>N</i>.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span class=GramE><span style='font-size:11.0pt'>to</span></span><span
style='font-size:11.0pt'>:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>The
prefix </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New"'>FLT</span></b><i style='mso-bidi-font-style:
normal'><span style='font-size:11.0pt'>N</span></i><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>_</span></b><span
style='font-size:11.0pt'> indicates a binary interchange floating type or a
non-arithmetic binary interchange format of width <i style='mso-bidi-font-style:
normal'>N</i>.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>Change the last sentence <span
class=GramE>of<span style="mso-spacerun:yes"> </span>5.2.4.2.2a</span>#1
from:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>Conversely,
for each such type that the implementation does not provide, </span><b><span
style='font-size:11.0pt;font-family:"Courier New"'><<span class=SpellE>float.h</span>></span></b><b><span
style='font-size:11.0pt'> </span></b><span style='font-size:11.0pt'>shall not
define the associated macros in the following lists.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span class=GramE><span style='font-size:11.0pt'>to</span></span><span
style='font-size:11.0pt'>:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>Conversely,
for each such type that the implementation does not provide, </span><b><span
style='font-size:11.0pt;font-family:"Courier New"'><<span class=SpellE>float.h</span>></span></b><b><span
style='font-size:11.0pt'> </span></b><span style='font-size:11.0pt'>shall not
define the associated macros in the following list, except, the implementation
shall define the macros </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>FLT</span></b><i
style='mso-bidi-font-style:normal'><span style='font-size:11.0pt'>N</span></i><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>_DECIMAL_DIG</span></b><span style='font-size:11.0pt'> and </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'>FLT</span></b><i style='mso-bidi-font-style:normal'><span
style='font-size:11.0pt'>N</span></i><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>_DIG</span></b><span
style='font-size:11.0pt'> if it supports IEC 60559 non-arithmetic binary
interchange formats of width <i style='mso-bidi-font-style:normal'>N</i> by
providing the encoding-to-encoding conversion functions in </span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New"'><<span class=SpellE>math.h</span>></span></b><span
style='font-size:11.0pt'> and the string-to-encoding and string-from-encoding
functions in </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'><<span class=SpellE>stdlib.h</span>></span></b><span
style='font-size:11.0pt'>.<o:p></o:p></span></p>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<!-- LINKAGE --> <p align="center"> <a href="#dr_14">DR 14</a> Prev <— C2x —> Next <a href="#dr_16">DR 16</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_16><b><u>DR 16</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_15">DR 15</a> Prev <— C2x —> Next <a href="#dr_17">DR 17</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> Jim Thomas<br>
<b>Submission Date:</b> 2017-10-25<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2178.pdf">N2178</a><br>
<b>Subject:</b> P1: tgmath cbrt macro</p>
<p><b>Summary</b></p>
<p class=MsoNormal><span style='font-size:11.0pt'>This DR addresses a problem
noted by Joseph Myers in emails SC22WG14.14743 and 14744:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>… <span
class=GramE>the</span> example [in TS 18661-1 clause 16, for 7.25#6b –
see below] implies that "#<span class=SpellE>undef</span> <span
class=SpellE>cbrtl</span>" before calling the <span class=SpellE>cbrt</span>
type-generic macro would mean it's not affected by constant rounding
modes, but the actual normative text says "is affected by constant
rounding modes" with no such caveat. <o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span class=GramE><span style='font-size:11.0pt'>and</span></span><span
style='font-size:11.0pt'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>… <span
class=GramE>neither</span> example definition [in C11 or TS 18661-1] is
valid because they might call a block-scope <span class=SpellE>cbrtf</span>
/ <span class=SpellE>cbrtl</span>; they need to avoid such a block-scope
identifier, or a macro defined by the user, while still depending on
whether expansion of the <br>
standard header <span class=SpellE>cbrtf</span> / <span class=SpellE>cbrtl</span>
macros has been suppressed at that point.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>The text in question is:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=stdtext><span lang=EN-GB>[6b] A type-generic macro corresponding to a
function indicated in the table in 7.6.1a is affected by constant rounding
modes (7.6.2). Note that the type-generic macro definition in the example in
6.5.1.1 does not conform to this specification. A conforming macro could be
implemented as follows:</span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>#<span class=GramE>define</span> <span
class=SpellE>cbrt</span>(X)<span style='mso-tab-count:1'> </span>_Generic((X),<span
style='mso-tab-count:4'> </span>\<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'><span style='mso-tab-count:3'> </span><span
class=GramE>long</span> double: <span class=SpellE><span style='mso-bidi-font-style:
italic'>cbrtl</span></span><span style='mso-bidi-font-style:italic'>(X),<span
style='mso-tab-count:2'> </span>\<o:p></o:p></span></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New";mso-bidi-font-style:italic'><span
style='mso-tab-count:3'> </span><span
class=GramE>default</span>: _<span class=SpellE>Roundwise_cbrt</span>(X),<span
style='mso-tab-count:1'> </span>\<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New";mso-bidi-font-style:italic'><span
style='mso-tab-count:3'> </span><span
class=GramE>float</span>: <span class=SpellE>cbrtf</span>(X)<span
style='mso-tab-count:4'> </span>\<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt'><span lang=EN-GB
style='font-family:"Courier New";mso-bidi-font-style:italic'><span
style='mso-tab-count:3'> </span>)<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt'><span lang=EN-GB><o:p> </o:p></span></p>
<p class=stdtext><span class=GramE><span style='mso-ansi-language:EN-US'>where</span></span><span
style='mso-ansi-language:EN-US'> </span><b style='mso-bidi-font-weight:normal'><span
style='font-family:"Courier New";mso-ansi-language:EN-US'>_<span class=SpellE><span
style='mso-bidi-font-style:italic'>Roundwise_</span>cbrt</span>()</span></b><span
style='mso-ansi-language:EN-US'> is equivalent to </span><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-family:"Courier New";
mso-ansi-language:EN-US'>cbrt</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-family:"Courier New";mso-ansi-language:EN-US'>()</span></b><span
style='mso-ansi-language:EN-US'> invoked without macro-replacement suppression.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>The cause of the problems is
the use of </span><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New"'>cbrtl</span></b></span><span
style='font-size:11.0pt'> and </span><span class=SpellE><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New"'>cbrtf</span></b></span><span
style='font-size:11.0pt'> in the macro definition. The suggested TC below
replaces these uses with </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-bidi-font-style:italic'>_<span
class=SpellE>Roundwise</span><span class=GramE>_<span style='font-family:Cambria;
mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:
"Times New Roman";mso-bidi-theme-font:minor-bidi;font-weight:normal;mso-bidi-font-style:
normal'> prefixed</span></span></span></b><span style='font-size:11.0pt'> identifiers
similar to </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-bidi-font-style:italic'>_<span
class=SpellE>Roundwise_cbrt</span></span></b><span style='font-size:11.0pt'>.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt;mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Suggested
Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt'>In
TS 18661-1, clause 16, replace:<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>#<span class=GramE>define</span> <span
class=SpellE>cbrt</span>(X)<span style='mso-tab-count:1'> </span>_Generic((X),<span
style='mso-tab-count:4'> </span>\<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'><span style='mso-tab-count:3'> </span><span
class=GramE>long</span> double: <span class=SpellE><span style='mso-bidi-font-style:
italic'>cbrtl</span></span><span style='mso-bidi-font-style:italic'>(X),<span
style='mso-tab-count:2'> </span>\<o:p></o:p></span></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New";mso-bidi-font-style:italic'><span
style='mso-tab-count:3'> </span><span
class=GramE>default</span>: _<span class=SpellE>Roundwise_cbrt</span>(X),<span
style='mso-tab-count:1'> </span>\<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New";mso-bidi-font-style:italic'><span
style='mso-tab-count:3'> </span><span
class=GramE>float</span>: <span class=SpellE>cbrtf</span>(X)<span
style='mso-tab-count:4'> </span>\<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt'><span lang=EN-GB
style='font-family:"Courier New";mso-bidi-font-style:italic'><span
style='mso-tab-count:3'> </span>)<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt'><span lang=EN-GB><o:p> </o:p></span></p>
<p class=stdtext><span class=GramE><span style='mso-ansi-language:EN-US'>where</span></span><span
style='mso-ansi-language:EN-US'> </span><b style='mso-bidi-font-weight:normal'><span
style='font-family:"Courier New";mso-ansi-language:EN-US'>_<span class=SpellE><span
style='mso-bidi-font-style:italic'>Roundwise_</span>cbrt</span>()</span></b><span
style='mso-ansi-language:EN-US'> is equivalent to </span><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-family:"Courier New";
mso-ansi-language:EN-US'>cbrt</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-family:"Courier New";mso-ansi-language:EN-US'>()</span></b><span
style='mso-ansi-language:EN-US'> invoked without macro-replacement suppression.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span class=GramE><span
style='font-size:11.0pt'>with</span></span><span style='font-size:11.0pt'><o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'>#<span class=GramE>define</span> <span
class=SpellE>cbrt</span>(X)<span style='mso-tab-count:1'> </span>_Generic((X),<span
style='mso-tab-count:5'> </span>\<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New"'><span style='mso-tab-count:3'> </span><span
class=GramE>long</span> double: <span style='mso-bidi-font-style:italic'>_<span
class=SpellE>Roundwise_cbrtl</span>(X),<span style='mso-tab-count:1'> </span>\<o:p></o:p></span></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New";mso-bidi-font-style:italic'><span
style='mso-tab-count:3'> </span><span
class=GramE>default</span>: _<span class=SpellE>Roundwise_cbrt</span>(X),<span
style='mso-tab-count:2'> </span>\<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt;page-break-after:avoid'><span
lang=EN-GB style='font-family:"Courier New";mso-bidi-font-style:italic'><span
style='mso-tab-count:3'> </span><span
class=GramE>float</span>: _<span class=SpellE>Roundwise_cbrtf</span>(X)<span
style='mso-tab-count:3'> </span>\<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt'><span lang=EN-GB
style='font-family:"Courier New";mso-bidi-font-style:italic'><span
style='mso-tab-count:3'> </span>)<o:p></o:p></span></p>
<p class=MsoNoSpacing style='margin-left:40.3pt'><span lang=EN-GB><o:p> </o:p></span></p>
<p class=stdtext><span class=GramE><span style='mso-ansi-language:EN-US'>where</span></span><span
style='mso-ansi-language:EN-US'> </span><b style='mso-bidi-font-weight:normal'><span
style='font-family:"Courier New";mso-ansi-language:EN-US'>_<span class=SpellE><span
style='mso-bidi-font-style:italic'>Roundwise_</span>cbrtl</span>()</span></b><span
style='mso-ascii-font-family:Cambria;mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Cambria;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:
"Courier New";mso-ansi-language:EN-US'>, </span><b style='mso-bidi-font-weight:
normal'><span style='font-family:"Courier New";mso-ansi-language:EN-US'>_<span
class=SpellE><span style='mso-bidi-font-style:italic'>Roundwise_</span>cbrt</span>()</span></b><span
style='mso-ascii-font-family:Cambria;mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Cambria;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:
"Courier New";mso-ansi-language:EN-US'>, and</span><b style='mso-bidi-font-weight:
normal'><span style='font-family:"Courier New";mso-ansi-language:EN-US'> _<span
class=SpellE><span style='mso-bidi-font-style:italic'>Roundwise_</span>cbrtf</span>()</span></b><span
style='mso-ansi-language:EN-US'> are equivalent to </span><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-family:"Courier New";
mso-ansi-language:EN-US'>cbrtl</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-family:"Courier New";mso-ansi-language:EN-US'>()</span></b><span
style='mso-ascii-font-family:Cambria;mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Cambria;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:
"Courier New";mso-ansi-language:EN-US'>, </span><span class=SpellE><b
style='mso-bidi-font-weight:normal'><span style='font-family:"Courier New";
mso-ansi-language:EN-US'>cbrt</span></b></span><b style='mso-bidi-font-weight:
normal'><span style='font-family:"Courier New";mso-ansi-language:EN-US'>()</span></b><span
style='mso-ascii-font-family:Cambria;mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Cambria;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:
"Courier New";mso-ansi-language:EN-US'>, and</span><b style='mso-bidi-font-weight:
normal'><span style='font-family:"Courier New";mso-ansi-language:EN-US'> <span
class=SpellE>cbrtf</span>()</span></b><span style='mso-ansi-language:EN-US'>,
respectively, invoked without macro-replacement suppression.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<hr>
Oct 2017 meeting
<p><b>Committee Discussion</b></p>
<blockquote>
There was considerable discussion on this issue. The first point is that the _Generic example cited that is proposed to be fixed was not intended to impose requirements, yet has elicited two fixes so far, this being a third. The second point is that the fix offered would likely elicit numerous compiler errors as stated and no longer serves its original intention of illustrating _Generic best practice usage. Lastly, lacking a clear simple example, is there a problem here that needs clarification becomes uncertain.
</blockquote>
<p>Apr 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
A new document
<a href= "http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2212.pdf">N2212</a>
was presented with a much simpler proposed change. It was accepted by the committee.
</blockquote>
<p><b>Proposed Change</b>
<p>
In TS 18661-1, clause 16, replace:
<p>
<pre>
#define cbrt(X) _Generic((X), \
long double: cbrtl(X), \
default: _Roundwise_cbrt(X), \
float: cbrtf(X) \
)
</pre>
<blockquote>
where <tt>_Roundwise_cbrt()</tt> is equivalent to <tt>cbrt()</tt> invoked without macro-
replacement suppression.
</blockquote>
<p>
with
<p>
<pre>
#define cbrt(X) _Generic((X), \
long double: _Roundwise_cbrtl, \
default: _Roundwise_cbrt, \
float: _Roundwise_cbrtf \
)(X)
</pre>
<blockquote>
where
<tt>_Roundwise_cbrtl()</tt>,
<tt>_Roundwise_cbrt()</tt>, and
<tt>_Roundwise_cbrtf()</tt> are equivalent to <tt>cbrtl()</tt>, <tt>cbrt()</tt>, and <tt>cbrtf()</tt>, respectively, invoked without macro- replacement suppression.
</blockquote>
<!-- LINKAGE --> <p align="center"> <a href="#dr_15">DR 15</a> Prev <— C2x —> Next <a href="#dr_17">DR 17</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_17><b><u>DR 17</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_16">DR 16</a> Prev <— C2x —> Next <a href="#dr_19">DR 19</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> C Floating Point Group<br>
<b>Submission Date:</b> 2018-02-11<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2203.pdf">N2203</a><br>
<b>Subject:</b> P3: incommensurate arguments for comparison macros</p>
<p><b>Summary</b></p>
<p class=MsoNormal><span style='font-size:11.0pt'>This DR addresses a problem
noted by Joseph Myers in email SC22WG14.14885:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt'>The
usual arithmetic conversions in TS 18661-3 include "If both operands have
floating types and neither of the sets of values of their corresponding
real types is a subset of (or equivalent to) the other, the behavior is
undefined.".<br>
<br>
Thus, for example, if neither of long double and _Float128 has a set of values
that is a subset of the other, given<br>
<br>
long double a;<br>
_Float128 b;<br>
<br>
it's undefined to have the expression "a < b".<br>
<br>
Now what about the expression "<span class=SpellE>isless</span> (a, b)"?
By analogy with the direct comparison, it would seem natural for it
to be undefined. But while 18661-2 explicitly disallows using those
macros with one decimal and one non-decimal argument, I see nothing
to disallow the case where neither set of values is a subset of the other,
and the definition of these macros doesn't actually include the usual
arithmetic conversions.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>It was an oversight to not
disallow argument types neither of which is a subset (or equivalent to) the
other.<o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt;mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Suggested
Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt'>In
TS 18661-3, at the end of clause 12 (just before 12.1), insert:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.5in;page-break-after:avoid'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>To 7.12.14#1, append:</span><span
style='font-size:11.0pt'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-size:11.0pt;mso-ansi-language:EN-GB'>If neither of the
sets of values of the argument formats is a subset of (or equivalent to)
the other, the <span class=SpellE>behavior</span> is undefined.</span><span
style='font-size:11.0pt'> <o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<hr>
<p>Apr 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
The committee accepted the Suggested Technical Corrigendum as the Proposed Change (using our new terminology).
</blockquote>
<p><b>Proposed Change</b>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt'>In
TS 18661-3, at the end of clause 12 (just before 12.1), insert:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.5in;page-break-after:avoid'><span lang=EN-GB style='font-size:
11.0pt;mso-ansi-language:EN-GB'>To 7.12.14#1, append:</span><span
style='font-size:11.0pt'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;page-break-after:avoid'><span
lang=EN-GB style='font-size:11.0pt;mso-ansi-language:EN-GB'>If neither of the
sets of values of the argument formats is a subset of (or equivalent to)
the other, the <span class=SpellE>behavior</span> is undefined.</span><span
style='font-size:11.0pt'> <o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<!-- LINKAGE --> <p align="center"> <a href="#dr_16">DR 16</a> Prev <— C2x —> Next <a href="#dr_19">DR 19</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_18><b><u>DR 18</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_18">DR 18</a> Prev <— Closed —> Next <a href="#dr_18">DR 18</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> C Floating Point Group<br>
<b>Submission Date:</b> 2018-02-22<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2204.pdf">N2204</a><br>
<b>Subject:</b> P4: missing specification of preferred quantum exponents</p>
<p><b>Summary</b></p>
<p class=MsoNormal><span style='font-size:11.0pt'>TS 18661-4 neglected to
specify the preferred quantum exponent for its new functions. This was an
oversight. The following suggested TC adds the missing specification.<o:p></o:p></span></p>
<p class=MsoNormalCxSpMiddle style='margin-bottom:12.0pt;mso-add-space:auto'><span
style='font-size:11.0pt;mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;mso-bidi-font-family:Times;color:black'>Suggested
Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In TS 18661-4, at the end of
clause 7, append:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In the Preferred Quantum
Exponents table in 5.2.4.2.2a#7, insert before the final row:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>rsqrt</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></b></p>
</td>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>−</span><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>floor(Q(</span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>x</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>)/2)<o:p></o:p></span></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>compoundn</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></b></p>
</td>
<td width=312 valign=top style='width:233.75pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=GramE><span style='font-size:11.0pt;
mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>floor(</span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>n</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'> </span><span style='mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>×</span><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'> min(0, Q(</span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>x</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>)))<o:p></o:p></span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>rootn</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></b></p>
</td>
<td width=312 valign=top style='width:233.75pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>floor(Q(</span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>x</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>)/</span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>n</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>)<o:p></o:p></span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>pown</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></b></p>
</td>
<td width=312 valign=top style='width:233.75pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=GramE><span style='font-size:11.0pt;
mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>floor(</span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>n</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'> </span><span style='mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>×</span><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'> Q(</span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>x</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>))<o:p></o:p></span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes'>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>powr</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></b></p>
</td>
<td width=312 valign=top style='width:233.75pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=GramE><span style='font-size:11.0pt;
mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>floor(</span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>y</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'> </span><span style='mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>×</span><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'> Q(</span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>x</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>))<o:p></o:p></span></p>
</td>
</tr>
</table>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In TS 18661-4, at the end of
clause 8, append:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In the Preferred Exponents
Table in 5.2.4.2.2a#7, append:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>reduction functions<o:p></o:p></span></p>
</td>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>unspecified<o:p></o:p></span></p>
</td>
</tr>
</table>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><o:p> </o:p></p>
</div>
<hr>
<p>Apr 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
The committee accepted the Suggested Technical Corrigendum as the Proposed Change (using our new terminology).
</blockquote>
<p><b>Proposed Change</b>
<p class=MsoNormal><span style='font-size:11.0pt'>In TS 18661-4, at the end of
clause 7, append:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In the Preferred Quantum
Exponents table in 5.2.4.2.2a#7, insert before the final row:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>rsqrt</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></b></p>
</td>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>−</span><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>floor(Q(</span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>x</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>)/2)<o:p></o:p></span></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>compoundn</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></b></p>
</td>
<td width=312 valign=top style='width:233.75pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=GramE><span style='font-size:11.0pt;
mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>floor(</span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>n</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'> </span><span style='mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>×</span><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'> min(0, Q(</span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>x</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>)))<o:p></o:p></span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>rootn</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></b></p>
</td>
<td width=312 valign=top style='width:233.75pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>floor(Q(</span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>x</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>)/</span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>n</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>)<o:p></o:p></span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>pown</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></b></p>
</td>
<td width=312 valign=top style='width:233.75pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=GramE><span style='font-size:11.0pt;
mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>floor(</span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>n</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'> </span><span style='mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>×</span><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'> Q(</span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>x</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>))<o:p></o:p></span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes'>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>powr</span></b></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></b></p>
</td>
<td width=312 valign=top style='width:233.75pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span class=GramE><span style='font-size:11.0pt;
mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>floor(</span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:11.0pt;font-family:
"Courier New";mso-fareast-font-family:Cambria;mso-fareast-theme-font:minor-latin'>y</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'> </span><span style='mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>×</span><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'> Q(</span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>x</span></b><span
style='font-size:11.0pt;mso-fareast-font-family:Cambria;mso-fareast-theme-font:
minor-latin'>))<o:p></o:p></span></p>
</td>
</tr>
</table>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In TS 18661-4, at the end of
clause 8, append:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'>In the Preferred Exponents
Table in 5.2.4.2.2a#7, append:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-yfti-tbllook:1184;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>reduction functions<o:p></o:p></span></p>
</td>
<td width=312 valign=top style='width:233.75pt;border:solid windowtext 1.0pt;
border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-font-family:
Cambria;mso-fareast-theme-font:minor-latin'>unspecified<o:p></o:p></span></p>
</td>
</tr>
</table>
<p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><o:p> </o:p></p>
</div>
<!-- LINKAGE --> <p align="center"> <a href="#dr_18">DR 18</a> Prev <— Closed —> Next <a href="#dr_18">DR 18</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_19><b><u>DR 19</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_17">DR 17</a> Prev <— C2x —> Next <a href="#dr_20">DR 20</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> C Floating Point Group<br>
<b>Submission Date:</b> 2018-03-16<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2210.pdf">N2210</a><br>
<b>Subject:</b> P1: updating underflow definition</p>
<p><b>Summary</b></p>
<p>
C11 7.12.1 says
<blockquote>
The result underflows if the magnitude of the mathematical result is so small that the mathematical result cannot be represented, without extraordinary roundoff error, in an object of the specified type.232)
<p>
232) The term underflow here is intended to encompass both ‘‘gradual underflow’’ as in IEC 60559 and also ‘‘flush-to-zero’’ underflow
</blockquote>
<p>
<p>
The C definition of underflow doesn’t accomplish its intention as expressed in footnote 232. It’s too restrictive to encompass IEC 60559 gradual underflow, because IEC 60559 underflow can occur without extraordinary roundoff error.
<p>
In IEC 60559:2011, the underflow flag is raised (in C terminology, set) if and only if the result is tiny and inexact, even if the roundoff error is the same as it would have been if the full (normal) precision of the type were available, i.e., even if there is no extraordinary roundoff error.
<p>
IEC 60559:1989 offered the implementation the option to raise the underflow flag for tiny results with extraordinary roundoff error, though it also offered the option to raise the underflow flag for tiny inexact results, which is what most implementations did. IEC 60559:2011 dropped the option to raise the underflow flag based on extraordinary roundoff error.
<p>
The following suggested TC aims to loosens the C definition of underflow to encompass IEC 60559:2011 underflow behavior, which is based on tiny inexact results.
<p>
<b>Suggested Technical Corrigendum</b>
<p>
In TS 18661-1, before 14.1, insert:
<p>
<b>14.0 C underflow</b>
<p>
The following change to C11 loosens the C definition of underflow to encompass IEC 60559 gradual underflow, as is its stated intention (see C11 footnote 232).<p>
<p>
<b>Changes to C11:</b>
<p>
Change the first sentence in 7.12.1#6 from:
<p>
<blockquote>
[6] The result underflows if the magnitude of the mathematical result is so small that the mathematical result cannot be represented, without extraordinary roundoff error, in an object of the specified type.232) …
</blockquote>
<p>
to:
<p>
<blockquote>
[6] The result underflows if the magnitude of the mathematical result is nonzero and less than the minimum normal number in the type.232) …
</blockquote>
<p>
<hr>
<p>Apr 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
The committee accepted the Suggested Technical Corrigendum as the Proposed Change (using our new terminology).
</blockquote>
<p><b>Proposed Change</b>
<p>
In TS 18661-1, before 14.1, insert:
<p>
<b>14.0 C underflow</b>
<p>
The following change to C11 loosens the C definition of underflow to encompass IEC 60559 gradual underflow, as is its stated intention (see C11 footnote 232).<p>
<p>
<b>Changes to C11:</b>
<p>
Change the first sentence in 7.12.1#6 from:
<p>
<blockquote>
[6] The result underflows if the magnitude of the mathematical result is so small that the mathematical result cannot be represented, without extraordinary roundoff error, in an object of the specified type.232) …
</blockquote>
<p>
to:
<p>
<blockquote>
[6] The result underflows if the magnitude of the mathematical result is nonzero and less than the minimum normal number in the type.232) …
</blockquote>
<p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_17">DR 17</a> Prev <— C2x —> Next <a href="#dr_20">DR 20</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_20><b><u>DR 20</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_19">DR 19</a> Prev <— C2x —> Next <a href="#dr_21">DR 21</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> C Floating Point Group<br>
<b>Submission Date:</b> 2018-03-16<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2211.pdf">N2211</a><br>
<b>Subject:</b> P1: changes for obsolescing DECIMAL_DIG</p>
<p><b>Summary</b></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'>N2211 described changes in C11 and TS
18661 to remove references to </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman"'>DECIMAL_DIG</span></b><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman"'>, which CR501 is
expected to obsolesce. The changes that apply to C11 are collected in N2253 as
an update to the suggested TC in CR501. The changes that apply to TS 18661-1 compose
the CR in this document. The remaining change is for TS 18661-3, which will be
covered by a CR in a subsequent document.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:Times;
color:black'>Suggested Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'>In 7.1, omit:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.25in'><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'>Change footnote 361) from:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman"'>361) </span><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>If the minimum-width IEC60559 extended format (64 bits
of precision) is supported, </span><b><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>DECIMAL_DIG</span></b><b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>shall be at
least 21. If IEC 60559 double (53 bits of precision) is the widest IEC 60559
format supported, then </span><b><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>DECIMAL_DIG</span></b><b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>shall be at
least 17. (By contrast, </span><b><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>LDBL_DIG</span></b><b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>and </span><b><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>DBL_DIG</span></b><b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>are 18
and 15, respectively, for these formats.)<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.25in;page-break-after:avoid'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>to:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;line-height:normal;page-break-after:
avoid'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman"'>361) </span><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>If the
minimum-width IEC 60559 binary64-extended format (64 bits of precision) is
supported, </span><b><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>DECIMAL_DIG</span></b><b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> </span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>shall be at least 21. If IEC 60559 binary64 (53 bits
of precision) is the widest IEC 60559 format supported, then </span><b><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>DECIMAL_DIG</span></b><b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> </span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>shall be at least 17. (By contrast, </span><b><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>LDBL_DIG</span></b><b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>and </span><b><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>DBL_DIG</span></b><b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>are 18
and 15, respectively, for these formats.)<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>In 10.1, change:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.25in;page-break-after:avoid'><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>After
F.5#2, insert:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.25in;page-break-after:avoid'><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>[2a] The </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'><float.h></span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> header defines the macro<o:p></o:p></span></p>
<p class=stdtext style='margin-left:58.3pt'><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><span style='mso-bidi-font-size:
11.0pt;font-family:"Courier New";mso-ansi-language:EN-US'><o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>if and only if </span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>__STDC_WANT_IEC_60559_BFP_EXT__</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> is defined as a macro at the point in the source file
where </span><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:
11.0pt;font-family:"Courier New";mso-ansi-language:EN-US'><float.h></span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> is first included. If defined, </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> expands to an integral constant expression suitable
for use in </span><b style='mso-bidi-font-weight:normal'><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>#if</span></b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'> preprocessing directives whose
value is a number such that conversions between all supported types with IEC
60559 binary formats and character sequences with at most </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> </span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>significant decimal digits are correctly rounded. The
value of </span><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:
11.0pt;font-family:"Courier New";mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> </span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>shall be at least </span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>DECIMAL_DIG</span></b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> + 3. If
the implementation correctly rounds for all numbers of significant decimal
digits, then </span><b style='mso-bidi-font-weight:normal'><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>CR_DECIMAL_DIG</span></b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> shall have the
value of the macro </span><b style='mso-bidi-font-weight:normal'><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>UINTMAX_MAX</span></b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'>.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>[2b]
Conversions of types with IEC 60559 binary formats to character sequences with
more than </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits shall correctly round to </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant digits and pad zeros on the right.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>[2c]
Conversions from character sequences with more than </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits to types with IEC 60559 binary formats shall
correctly round to an intermediate character sequence with </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits, according to the applicable rounding direction, and
correctly round the intermediate result (having </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits) to the destination type. The “inexact”
floating-point exception is raised (once) if either conversion is inexact. (The
second conversion may raise the “overflow” or “underflow” floating-point
exception.)<o:p></o:p></span></p>
<p class=stdtext><span lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman"'>In F.5#2c, attach a footnote to the wording:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>The
“inexact” floating-point exception is raised (once) if either conversion is
inexact.<o:p></o:p></span></p>
<p class=stdtext><span lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman"'>where the footnote is:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>*)
The intermediate conversion is exact only if all input digits after the first </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'> digits
are </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>0</span></b><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></b></p>
<p class=stdtext style='margin-left:0in;page-break-after:avoid'><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
color:#4472C4;mso-themecolor:accent1;mso-ansi-language:EN-US'>to:</span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></b></p>
<p class=stdtext><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'>Replace the content of F.5 with:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>[1] The </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'><float.h></span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> header defines the macro<o:p></o:p></span></p>
<p class=stdtext style='margin-left:58.3pt'><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><span style='mso-bidi-font-size:
11.0pt;font-family:"Courier New";mso-ansi-language:EN-US'><o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>if and only if </span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>__STDC_WANT_IEC_60559_BFP_EXT__</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> is defined as a macro at the point in the source file
where </span><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:
11.0pt;font-family:"Courier New";mso-ansi-language:EN-US'><float.h></span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> is first included. If defined, </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> expands to an integral constant expression suitable
for use in </span><b style='mso-bidi-font-weight:normal'><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Courier New";mso-ansi-language:
EN-US'>#if</span></b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'> preprocessing directives whose
value is a number such that conversions between all supported IEC 60559 binary
formats and character sequences with at most </span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>significant
decimal digits are correctly rounded. The value of </span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>shall be at
least <i style='mso-bidi-font-style:normal'>M</i> + 3, where <i
style='mso-bidi-font-style:normal'>M</i> is the maximum value of the <i
style='mso-bidi-font-style:normal'>T</i></span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>_DECIMAL_DIG</span></b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> macros
for IEC 60559 binary formats. If the implementation correctly rounds for all
numbers of significant decimal digits, then </span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> shall
have the value of the macro </span><b style='mso-bidi-font-weight:normal'><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>UINTMAX_MAX</span></b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'>.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>[2]
Conversions of types with IEC 60559 binary formats to character sequences with
more than </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits shall correctly round to </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant digits and pad zeros on the right.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>[3]
Conversions from character sequences with more than </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits to types with IEC 60559 binary formats shall
correctly round to an intermediate character sequence with </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits, according to the applicable rounding direction, and
correctly round the intermediate result (having </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits) to the destination type. The “inexact”
floating-point exception is raised (once) if either conversion is inexact. (The
second conversion may raise the “overflow” or “underflow” floating-point
exception.)<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>[4] The specification in this subclause assures
conversion between IEC 60559 binary format and decimal character sequence follows
all pertinent recommended practice. </span><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman"'>It also assures conversion from IEC
60559 format to decimal character sequence with at least <i style='mso-bidi-font-style:
normal'>T</i></span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>_DECIMAL_DIG</span></b><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman"'> </span></b><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>digits
and back, using to-nearest rounding, is the identity function, where <i
style='mso-bidi-font-style:normal'>T</i> is the macro prefix for the format.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span lang=EN-GB>[5] Functions such
as </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>strtod</span></b><span lang=EN-GB> that
convert character sequences to floating types honor the rounding direction.
Hence, if the rounding direction might be upward or downward, the
implementation cannot convert a minus-signed sequence by negating the converted
unsigned sequence.</span></p>
<p class=stdtext><span lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman"'>In F.5#3, attach a footnote to the wording:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>The
“inexact” floating-point exception is raised (once) if either conversion is
inexact.<o:p></o:p></span></p>
<p class=stdtext><span lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman"'>where the footnote is:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>*)
The intermediate conversion is exact only if all input digits after the first </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'> digits
are </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>0</span></b><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></b></p>
</div>
<hr>
<p>Apr 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
The paper was only briefly discussed.
<p>
This resolution is tied to the Floating Point
<a href="#dr_22">CR 22</a>
as well as to the C2x DR 501.
</blockquote>
<p>Oct 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
A new paper
<a href= "http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2254.pdf">N2254</a>
was split out from
<a href= "http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2211.pdf">N2211</a>
that incorporates directly the Suggested Technical Corrigendum already extracted above.
<p>
The committee accepts the Suggested Technical Corrigendum as the Proposed Change to resolve this issue.
</blockquote>
<p>
<p><b>Proposed Change</b></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'>In 7.1, omit:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.25in'><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'>Change footnote 361) from:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman"'>361) </span><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>If the minimum-width IEC60559 extended format (64 bits
of precision) is supported, </span><b><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>DECIMAL_DIG</span></b><b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>shall be at
least 21. If IEC 60559 double (53 bits of precision) is the widest IEC 60559
format supported, then </span><b><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>DECIMAL_DIG</span></b><b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>shall be at
least 17. (By contrast, </span><b><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>LDBL_DIG</span></b><b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>and </span><b><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>DBL_DIG</span></b><b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>are 18
and 15, respectively, for these formats.)<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.25in;page-break-after:avoid'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>to:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;line-height:normal;page-break-after:
avoid'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman"'>361) </span><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>If the
minimum-width IEC 60559 binary64-extended format (64 bits of precision) is
supported, </span><b><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>DECIMAL_DIG</span></b><b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> </span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>shall be at least 21. If IEC 60559 binary64 (53 bits
of precision) is the widest IEC 60559 format supported, then </span><b><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>DECIMAL_DIG</span></b><b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> </span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>shall be at least 17. (By contrast, </span><b><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>LDBL_DIG</span></b><b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>and </span><b><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>DBL_DIG</span></b><b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>are 18
and 15, respectively, for these formats.)<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>In 10.1, change:<o:p></o:p></span></p>
<p class=MsoNormal style='page-break-after:avoid'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-left:.25in;page-break-after:avoid'><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>After
F.5#2, insert:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.25in;page-break-after:avoid'><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>[2a] The </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'><float.h></span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> header defines the macro<o:p></o:p></span></p>
<p class=stdtext style='margin-left:58.3pt'><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><span style='mso-bidi-font-size:
11.0pt;font-family:"Courier New";mso-ansi-language:EN-US'><o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>if and only if </span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>__STDC_WANT_IEC_60559_BFP_EXT__</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> is defined as a macro at the point in the source file
where </span><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:
11.0pt;font-family:"Courier New";mso-ansi-language:EN-US'><float.h></span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> is first included. If defined, </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> expands to an integral constant expression suitable
for use in </span><b style='mso-bidi-font-weight:normal'><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>#if</span></b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'> preprocessing directives whose
value is a number such that conversions between all supported types with IEC
60559 binary formats and character sequences with at most </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> </span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>significant decimal digits are correctly rounded. The
value of </span><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:
11.0pt;font-family:"Courier New";mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> </span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>shall be at least </span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>DECIMAL_DIG</span></b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> + 3. If
the implementation correctly rounds for all numbers of significant decimal
digits, then </span><b style='mso-bidi-font-weight:normal'><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>CR_DECIMAL_DIG</span></b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> shall have the
value of the macro </span><b style='mso-bidi-font-weight:normal'><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>UINTMAX_MAX</span></b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'>.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>[2b]
Conversions of types with IEC 60559 binary formats to character sequences with
more than </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits shall correctly round to </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant digits and pad zeros on the right.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>[2c]
Conversions from character sequences with more than </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits to types with IEC 60559 binary formats shall
correctly round to an intermediate character sequence with </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits, according to the applicable rounding direction, and
correctly round the intermediate result (having </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits) to the destination type. The “inexact”
floating-point exception is raised (once) if either conversion is inexact. (The
second conversion may raise the “overflow” or “underflow” floating-point
exception.)<o:p></o:p></span></p>
<p class=stdtext><span lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman"'>In F.5#2c, attach a footnote to the wording:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>The
“inexact” floating-point exception is raised (once) if either conversion is
inexact.<o:p></o:p></span></p>
<p class=stdtext><span lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman"'>where the footnote is:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>*)
The intermediate conversion is exact only if all input digits after the first </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'> digits
are </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>0</span></b><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></b></p>
<p class=stdtext style='margin-left:0in;page-break-after:avoid'><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
color:#4472C4;mso-themecolor:accent1;mso-ansi-language:EN-US'>to:</span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></b></p>
<p class=stdtext><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'>Replace the content of F.5 with:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>[1] The </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'><float.h></span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> header defines the macro<o:p></o:p></span></p>
<p class=stdtext style='margin-left:58.3pt'><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><span style='mso-bidi-font-size:
11.0pt;font-family:"Courier New";mso-ansi-language:EN-US'><o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>if and only if </span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>__STDC_WANT_IEC_60559_BFP_EXT__</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> is defined as a macro at the point in the source file
where </span><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:
11.0pt;font-family:"Courier New";mso-ansi-language:EN-US'><float.h></span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> is first included. If defined, </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> expands to an integral constant expression suitable
for use in </span><b style='mso-bidi-font-weight:normal'><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Courier New";mso-ansi-language:
EN-US'>#if</span></b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'> preprocessing directives whose
value is a number such that conversions between all supported IEC 60559 binary
formats and character sequences with at most </span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>significant
decimal digits are correctly rounded. The value of </span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> </span></b><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>shall be at
least <i style='mso-bidi-font-style:normal'>M</i> + 3, where <i
style='mso-bidi-font-style:normal'>M</i> is the maximum value of the <i
style='mso-bidi-font-style:normal'>T</i></span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>_DECIMAL_DIG</span></b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> macros
for IEC 60559 binary formats. If the implementation correctly rounds for all
numbers of significant decimal digits, then </span><b style='mso-bidi-font-weight:
normal'><span style='mso-bidi-font-size:11.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>CR_DECIMAL_DIG</span></b><span style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'> shall
have the value of the macro </span><b style='mso-bidi-font-weight:normal'><span
style='mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-US'>UINTMAX_MAX</span></b><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-US'>.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>[2]
Conversions of types with IEC 60559 binary formats to character sequences with
more than </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits shall correctly round to </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant digits and pad zeros on the right.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>[3]
Conversions from character sequences with more than </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits to types with IEC 60559 binary formats shall
correctly round to an intermediate character sequence with </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits, according to the applicable rounding direction, and
correctly round the intermediate result (having </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>
significant decimal digits) to the destination type. The “inexact”
floating-point exception is raised (once) if either conversion is inexact. (The
second conversion may raise the “overflow” or “underflow” floating-point
exception.)<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>[4] The specification in this subclause assures
conversion between IEC 60559 binary format and decimal character sequence follows
all pertinent recommended practice. </span><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman"'>It also assures conversion from IEC
60559 format to decimal character sequence with at least <i style='mso-bidi-font-style:
normal'>T</i></span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>_DECIMAL_DIG</span></b><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman"'> </span></b><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>digits
and back, using to-nearest rounding, is the identity function, where <i
style='mso-bidi-font-style:normal'>T</i> is the macro prefix for the format.<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span lang=EN-GB>[5] Functions such
as </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>strtod</span></b><span lang=EN-GB> that
convert character sequences to floating types honor the rounding direction.
Hence, if the rounding direction might be upward or downward, the
implementation cannot convert a minus-signed sequence by negating the converted
unsigned sequence.</span></p>
<p class=stdtext><span lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman"'>In F.5#3, attach a footnote to the wording:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>The
“inexact” floating-point exception is raised (once) if either conversion is
inexact.<o:p></o:p></span></p>
<p class=stdtext><span lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:
"Times New Roman"'>where the footnote is:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in;page-break-after:avoid'><span
lang=EN-GB style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'>*)
The intermediate conversion is exact only if all input digits after the first </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;font-family:"Courier New"'>CR_DECIMAL_DIG</span></b><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman"'> digits
are </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='mso-bidi-font-size:11.0pt;font-family:"Courier New"'>0</span></b><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='mso-bidi-font-size:
11.0pt;mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></b></p>
</div>
<!-- LINKAGE --> <p align="center"> <a href="#dr_19">DR 19</a> Prev <— C2x —> Next <a href="#dr_21">DR 21</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_21><b><u>DR 21</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_20">DR 20</a> Prev <— C2x —> Next <a href="#dr_22">DR 22</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> C Floating Point Group<br>
<b>Submission Date:</b> 2018-03-24<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2224.pdf">N2224</a><br>
<b>Subject:</b> P1: printf of one-digit character string</p>
<p><b>Summary</b></p>
<p>It is possible that a floating-point value, when converted to
a one-digit character string, results in odd numbers no matter
which way rounding is done. For roundTiesToEven, IEC 60559
specifies that the larger magnitude value be used.</p>
<p>Suggested Technical Corrigendum:</p>
<p>Add the following to TS 18661-1 clause 10.2 Conversions to
character sequences:</p>
<blockquote>
<p>Add to F.5 Binary-decimal conversion:</p>
<p>NOTE: IEC 60559 specifies that conversion to one-digit
character strings using roundTiesToEven when both choices are
odd, shall produce the value with the larger magnitude. This
can happen with 9.5 whose nearest neighbors are 9.e0 and 1.e1,
both of which are odd.</p>
</blockquote>
<hr>
<p>Apr 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
The committee, once it understood the three floating values supplied, agreed with the proposed change.
<p>
Subsequently, the author supplied revised values making such an understanding easier. The committee as a whole has yet to see the tweaked values presented below as the Proposed Change.
</blockquote>
<p><b>Proposed Change</b>
<p>Add the following to TS 18661-1 clause 10.2 Conversions to
character sequences:</p>
<blockquote>
<p>Add to F.5 Binary-decimal conversion:</p>
<p>NOTE: IEC 60559 specifies that conversion to one-digit
character strings using roundTiesToEven when both choices are
odd, shall produce the value with the larger magnitude. This
can happen with 9.5e2 whose nearest neighbors are 9.e2 and 1.e3,
both of which are odd.</p>
</blockquote>
<p>Oct 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
A new paper
<a href= "http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2283.htm">N2283</a>
was presented with revised words from those suggested above in private correspondence.
<p>
The committee accepts the Suggested Technical Corrigendum from that paper as the Proposed Change to resolve this issue.
</blockquote>
<p>
<p><b>Proposed Change</b></p>
<p>Add the following to TS 18661-1 clause 10.2 Conversions to character sequences:</p>
<blockquote>
<p>At the end of F.5 Binary-decimal conversion, add:</p>
<p>NOTE IEC 60559 specifies that conversion to one-digit character strings using roundTiesToEven when both choices have an odd least significant digit, shall produce the value with the larger magnitude. For example, this can happen with 9.5e2 whose nearest neighbors are 9.e2 and 1.e3, both of which have a single odd digit in the significand part.</p>
</blockquote>
<!-- LINKAGE --> <p align="center"> <a href="#dr_20">DR 20</a> Prev <— C2x —> Next <a href="#dr_22">DR 22</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_22><b><u>DR 22</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_21">DR 21</a> Prev <— C2x —> Next <a href="#dr_23">DR 23</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> C Floating Point Group<br>
<b>Submission Date:</b> 2018-03-16<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2211.pdf">N2211</a><br>
<b>Subject:</b> P2: changes for obsolescing DECIMAL_DIG</p>
<p><b>Summary</b></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'>N2211 described changes in C11 and TS
18661 to remove references to </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman"'>DECIMAL_DIG</span></b><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman"'>, which CR501 is
expected to obsolesce. The changes that apply to C11 are collected in N2253 as
an update to the suggested TC in CR501. The changes that apply to TS 18661-1 are
in the CR in N2254. The remaining change is for TS 18661-3, which is covered by
the CR in this document.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:Times;
color:black'>Suggested Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'>At the end of clause 7, omit:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.25in'><span lang=EN-GB style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>With the
following change, </span><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-GB'>DECIMAL_DIG</span></b><span lang=EN-GB style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-GB'> characterizes conversions of supported IEC 60559 encodings, which may
be wider than supported floating types.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.25in'><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-GB'>Change to C11 + TS18661-1 + TS18661-2:<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.25in'><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'>In 5.2.4.2.2#11, change the bullet
defining </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New"'>DECIMAL_DIG</span></b><span style='font-size:
11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>
from:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:49.5pt;text-indent:-13.5pt;tab-stops:.25in'><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>—<span style='mso-tab-count:1'> </span>number of
decimal digits, <i>n</i>, such that any floating-point number in the widest
supported floating type with …<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.25in;page-break-after:avoid'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>to:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:49.5pt;text-indent:-13.5pt;page-break-after:
avoid'><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>—<span style='mso-tab-count:1'> </span>number of
decimal digits, <i>n</i>, such that any floating-point number in the widest of
the supported floating types and the supported IEC 60559 encodings with …<o:p></o:p></span></p>
</div>
<hr>
<p>Apr 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
The paper was only briefly discussed.
<p>
This resolution is tied to the Floating Point
<a href="#dr_20">CR 20</a>
as well as to the C2x DR 501.
</blockquote>
<p>Oct 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
A new paper
<a href= "http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2255.pdf">N2255</a>
was split out from
<a href= "http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2211.pdf">N2211</a>
that incorporates directly the Suggested Technical Corrigendum already extracted above.
<p>
The committee accepts the Suggested Technical Corrigendum as the Proposed Change to resolve this issue.
</blockquote>
<p>
<p><b>Proposed Change</b></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'>At the end of clause 7, omit:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.25in'><span lang=EN-GB style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>With the
following change, </span><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";mso-ansi-language:
EN-GB'>DECIMAL_DIG</span></b><span lang=EN-GB style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-GB'> characterizes conversions of supported IEC 60559 encodings, which may
be wider than supported floating types.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.25in'><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-GB'>Change to C11 + TS18661-1 + TS18661-2:<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.25in'><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'>In 5.2.4.2.2#11, change the bullet
defining </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
11.0pt;font-family:"Courier New"'>DECIMAL_DIG</span></b><span style='font-size:
11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>
from:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:49.5pt;text-indent:-13.5pt;tab-stops:.25in'><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>—<span style='mso-tab-count:1'> </span>number of
decimal digits, <i>n</i>, such that any floating-point number in the widest
supported floating type with …<o:p></o:p></span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
margin-left:.25in;page-break-after:avoid'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>to:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:49.5pt;text-indent:-13.5pt;page-break-after:
avoid'><span style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>—<span style='mso-tab-count:1'> </span>number of
decimal digits, <i>n</i>, such that any floating-point number in the widest of
the supported floating types and the supported IEC 60559 encodings with …<o:p></o:p></span></p>
</div>
<!-- LINKAGE --> <p align="center"> <a href="#dr_21">DR 21</a> Prev <— C2x —> Next <a href="#dr_23">DR 23</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_23><b><u>DR 23</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_22">DR 22</a> Prev <— C2x —> Next <a href="#dr_24">DR 24</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> C Floating Point Group<br>
<b>Submission Date:</b> 2018-05-26<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2262.pdf">N2262</a><br>
<b>Subject:</b> P2: llquantexp invalid case</p>
<p><b>Summary</b></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'>The </span><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
"Times New Roman"'>llquantexp</span></b><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'> functions in 12.4.1 of TS 18661-2
compute the quantum exponent of a finite argument (of decimal floating type).
Infinities and NaNs don’t have a quantum exponent, so the description in C
7.12.11a.4 says “</span><span lang=EN-GB style='font-size:11.0pt;font-family:
"Cambria",serif;mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-GB'>If </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";
mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-GB'>x</span></b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-GB'> is infinite or NaN, they compute </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";
mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-GB'>LLONG_MIN</span></b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-GB'> and a domain error occurs.” In similar cases, of a function with
floating parameters and integer return type, where no return value is suitable,
the “invalid” floating-point exception is raised. Examples in current C include
</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
mso-ansi-language:EN-GB'>ilogb</span></b><span lang=EN-GB style='font-size:
11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>, </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-GB'>lrint</span></b><span lang=EN-GB style='font-size:11.0pt;font-family:
"Cambria",serif;mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:
"Times New Roman";mso-ansi-language:EN-GB'>, and </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";
mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-GB'>lround</span></b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-GB'>. However, TS 18661-2 neglects to specify raising “invalid” for </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-GB'>llquantexp</span></b><span lang=EN-GB style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>, which was an
oversight.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span lang=EN-GB
style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-GB'>For the C examples above, the specification of “invalid” is in annex F,
because the functions are not just for IEC 60559 implementations. The </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:11.0pt;
font-family:"Courier New";mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-GB'>llquantexp</span></b><span lang=EN-GB style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> functions are
only for decimal floating types, which C requires to be IEC 60559 conformant.
Therefore, the specification for “invalid” can be in the primary description in
7.12.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span lang=EN-GB
style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-GB'>CFP has made a similar change for the </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='font-size:11.0pt;font-family:"Courier New";
mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-GB'>quantize</span></b><span
lang=EN-GB style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-GB'> functions. This was done as an editorial change, because it matches
specification for the IEC 60559 quantize operation, whose specification TS
18661 adopts by reference.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:Times;
color:black'>Suggested Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'>In TS 18661-2 12.4.1, in C 7.12.11a.4#2,
change the second sentence from:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>If </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>x</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> is infinite or NaN, they compute </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>LLONG_MIN</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> and a domain error occurs.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>to:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>If </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>x</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> is infinite or NaN, they compute </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>LLONG_MIN</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>, the “invalid” floating-point exception is raised, and
a domain error occurs.<o:p></o:p></span></p>
</div>
<hr>
<p>Oct 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
The committee accepts the Suggested Technical Corrigendum as the Proposed Change to resolve this issue.
</blockquote>
<p>
<p><b>Proposed Change</b></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'>In TS 18661-2 12.4.1, in C 7.12.11a.4#2,
change the second sentence from:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>If </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>x</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> is infinite or NaN, they compute </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>LLONG_MIN</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> and a domain error occurs.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>to:<o:p></o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>If </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>x</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'> is infinite or NaN, they compute </span><b
style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:11.0pt;
font-family:"Courier New";mso-ansi-language:EN-US'>LLONG_MIN</span></b><span
style='mso-bidi-font-size:11.0pt;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US'>, the “invalid” floating-point exception is raised, and
a domain error occurs.<o:p></o:p></span></p>
</div>
<!-- LINKAGE --> <p align="center"> <a href="#dr_22">DR 22</a> Prev <— C2x —> Next <a href="#dr_24">DR 24</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_24><b><u>DR 24</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_23">DR 23</a> Prev <— C2x —> Next <a href="#dr_25">DR 25</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> C Floating Point Group <br>
<b>Submission Date:</b> 2018-06-26<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2272.pdf">N2272</a><br>
<b>Subject:</b> P1 remainder NaN case </p>
<p><b>Summary</b></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'>The TS 18661-1 specification for
remainder in F.10.7.2, says<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'>—<span style='mso-tab-count:1'> </span><b>remainder(</b><i
style='mso-bidi-font-style:normal'><span style='mso-bidi-font-weight:bold'>x</span></i><b>,
</b>±∞<b style='mso-bidi-font-weight:normal'>)</b> returns <i>x </i>for <i>x </i>not
infinite.</span><span lang=EN-GB style='font-size:11.0pt;font-family:"Cambria",serif;
mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-GB'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'>For <i style='mso-bidi-font-style:normal'>x</i>
a (quiet) NaN, this specification appears to require that the same NaN be
returned. This unintentionally goes beyond IEC 60559 whose general
specification for NaNs requires only that some (quiet) NaN be returned. The
suggested TC below uses similar words to IEC 60559’s, which allows the general
specification for NaNs to apply.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:Times;
color:black'>Suggested Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'>In TS 18661-1 clause 12, for C F.10.7.2,
change the third bullet from:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'>—<span style='mso-tab-count:1'> </span><b>remainder(</b><i
style='mso-bidi-font-style:normal'><span style='mso-bidi-font-weight:bold'>x</span></i><b>,
</b>±∞<b style='mso-bidi-font-weight:normal'>)</b> returns <i>x </i>for <i>x </i>not
infinite.</span><span lang=EN-GB style='font-size:11.0pt;font-family:"Cambria",serif;
mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-GB'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>to:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'>—<span style='mso-tab-count:1'> </span><b>remainder(</b><i
style='mso-bidi-font-style:normal'><span style='mso-bidi-font-weight:bold'>x</span></i><b>,
</b>±∞<b style='mso-bidi-font-weight:normal'>)</b> returns <i>x </i>for finite <i>x</i>.</span><span
lang=EN-GB style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-GB'><o:p></o:p></span></p>
</div>
<hr>
<p>Oct 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
The committee accepts the Suggested Technical Corrigendum as the Proposed Change to resolve this issue.
</blockquote>
<p>
<p><b>Proposed Change</b></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'>In TS 18661-1 clause 12, for C F.10.7.2,
change the third bullet from:<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Cambria",serif;
mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'>—<span style='mso-tab-count:1'> </span><b>remainder(</b><i
style='mso-bidi-font-style:normal'><span style='mso-bidi-font-weight:bold'>x</span></i><b>,
</b>±∞<b style='mso-bidi-font-weight:normal'>)</b> returns <i>x </i>for <i>x </i>not
infinite.</span><span lang=EN-GB style='font-size:11.0pt;font-family:"Cambria",serif;
mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-GB'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>to:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'>—<span style='mso-tab-count:1'> </span><b>remainder(</b><i
style='mso-bidi-font-style:normal'><span style='mso-bidi-font-weight:bold'>x</span></i><b>,
</b>±∞<b style='mso-bidi-font-weight:normal'>)</b> returns <i>x </i>for finite <i>x</i>.</span><span
lang=EN-GB style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-GB'><o:p></o:p></span></p>
</div>
<!-- LINKAGE --> <p align="center"> <a href="#dr_23">DR 23</a> Prev <— C2x —> Next <a href="#dr_25">DR 25</a>, or summary at <a href="#top"> top </a></p><br><p>
<hr style="border: 3px double #939;">
<!-- DRNUM --><p align="center"> <a id=dr_25><b><u>DR 25</u></b></a><br></p>
<!-- LINKAGE --> <p align="center"> <a href="#dr_24">DR 24</a> Prev <— C2x —> Next <a href="#dr_1">DR 1</a>, or summary at <a href="#top"> top </a></p><br><p>
<b>Submitter:</b> C Floating Point Group<br>
<b>Submission Date:</b> 2018-09-05<br>
<b>Source:</b> WG14<br>
<b>Reference Document:</b> <a href=
"http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2292.pdf">N2292</a><br>
<b>Subject:</b> P1 totalorder parameters</p>
<p><b>Summary</b></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'>The IEC 60559 <span class=SpellE>totalOrder</span>
operation provides a total ordering of the canonical members of the format,
including signaling <span class=SpellE>NaNs</span>. <span class=GramE>Therefore</span>
the binding C function </span><span class=SpellE><b style='mso-bidi-font-weight:
normal'><span style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
"Times New Roman"'>totalorder</span></b></span><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman"'>, specified in TS 18661-1, must be able
to accept signaling <span class=SpellE>NaN</span> inputs. Currently the
parameters for </span><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman"'>totalorder</span></b></span><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman"'> have floating type, whose
argument passing may convert a signaling <span class=SpellE>NaN</span> argument
into a quiet <span class=SpellE>NaN</span> parameter value. The following
suggested changes use pointers to preserve signaling <span class=SpellE>NaN</span>
inputs.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt;page-break-after:avoid'><b><span
style='font-size:11.0pt;font-family:"Cambria",serif;mso-bidi-font-family:Times;
color:black'>Suggested Technical Corrigendum<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>In
F.10.12.1 (TS 18661-1), change:<o:p></o:p></span></p>
<p class=stdtext><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>int</span></b></span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'> <span
class=SpellE><span class=GramE>totalorder</span></span><span class=GramE>(</span>double
x, double y);<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>to:<o:p></o:p></span></p>
<p class=stdtext><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>int</span></b></span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'> <span
class=SpellE><span class=GramE>totalorder</span></span><span class=GramE>(</span>double
* x, double * y);<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>and <span
class=GramE>similarly</span> for the other prototypes in F.10.12.1 and
F.10.12.2.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>In
F.10.12.1 (TS 18661-1), change:<o:p></o:p></span></p>
<p class=stdtext><b style='mso-bidi-font-weight:normal'><span lang=EN-GB>Description<br>
</span></b><span lang=EN-GB><br>
[2] The </span><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>totalorder</span></b></span><span
lang=EN-GB> functions determine whether the total order relationship,
defined by IEC 60559, is true for the ordered pair of its arguments </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>x</span></b><span
lang=EN-GB>, </span><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>y</span></b><span lang=EN-GB>.
These functions are fully specified in IEC 60559. These functions are
independent of the current rounding direction mode and raise no
floating-point exceptions, even if an argument is a <span class=SpellE>signaling</span>
<span class=SpellE>NaN</span>.<br>
<br>
<b style='mso-bidi-font-weight:normal'>Returns<br>
</b><br>
[3] The </span><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>totalorder</span></b></span><span
lang=EN-GB> functions return nonzero if and only if the total order
relation is true for the ordered pair of its arguments </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>x</span></b><span
lang=EN-GB>, </span><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>y</span></b><span lang=EN-GB>.</span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>to:<o:p></o:p></span></p>
<p class=stdtext><b style='mso-bidi-font-weight:normal'><span lang=EN-GB>Description<br>
</span></b><span lang=EN-GB><br>
[2] The </span><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>totalorder</span></b></span><span
lang=EN-GB> functions determine whether the total order relationship,
defined by IEC 60559, is true for the ordered pair </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>*x</span></b><span
lang=EN-GB>, </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>*y</span></b><span lang=EN-GB>.
These functions are fully specified in IEC 60559. These functions are
independent of the current rounding direction mode and raise no floating-point
exceptions, even if </span><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>*x</span></b><span lang=EN-GB> or </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>*y</span></b><span
lang=EN-GB> is a signalling <span class=SpellE>NaN</span>.</span></p>
<p class=stdtext><b style='mso-bidi-font-weight:normal'><span lang=EN-GB>Returns<br>
</span></b><span lang=EN-GB><br>
[3] The </span><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>totalorder</span></b></span><span
lang=EN-GB> functions return nonzero if and only if the total order
relation is true for the ordered pair </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='font-family:"Courier New"'>*x</span></b><span
lang=EN-GB>, </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>*y</span></b><span lang=EN-GB>.</span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>and <span
class=GramE>similarly</span> for F.10.12.2.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span lang=EN-GB
style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-GB'><o:p> </o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'><o:p> </o:p></span></p>
</div>
<hr>
<p>Oct 2018 meeting</p>
<p><b>Committee Discussion</b></p>
<blockquote>
The committee accepts the Suggested Technical Corrigendum as the Proposed Change to resolve this issue.
</blockquote>
<p>
<p><b>Proposed Change</b></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>In
F.10.12.1 (TS 18661-1), change:<o:p></o:p></span></p>
<p class=stdtext><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>int</span></b></span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'> <span
class=SpellE><span class=GramE>totalorder</span></span><span class=GramE>(</span>double
x, double y);<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>to:<o:p></o:p></span></p>
<p class=stdtext><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>int</span></b></span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'> <span
class=SpellE><span class=GramE>totalorder</span></span><span class=GramE>(</span>double
* x, double * y);<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>and <span
class=GramE>similarly</span> for the other prototypes in F.10.12.1 and
F.10.12.2.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>In
F.10.12.1 (TS 18661-1), change:<o:p></o:p></span></p>
<p class=stdtext><b style='mso-bidi-font-weight:normal'><span lang=EN-GB>Description<br>
</span></b><span lang=EN-GB><br>
[2] The </span><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>totalorder</span></b></span><span
lang=EN-GB> functions determine whether the total order relationship,
defined by IEC 60559, is true for the ordered pair of its arguments </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>x</span></b><span
lang=EN-GB>, </span><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>y</span></b><span lang=EN-GB>.
These functions are fully specified in IEC 60559. These functions are
independent of the current rounding direction mode and raise no
floating-point exceptions, even if an argument is a <span class=SpellE>signaling</span>
<span class=SpellE>NaN</span>.<br>
<br>
<b style='mso-bidi-font-weight:normal'>Returns<br>
</b><br>
[3] The </span><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>totalorder</span></b></span><span
lang=EN-GB> functions return nonzero if and only if the total order
relation is true for the ordered pair of its arguments </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>x</span></b><span
lang=EN-GB>, </span><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>y</span></b><span lang=EN-GB>.</span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>to:<o:p></o:p></span></p>
<p class=stdtext><b style='mso-bidi-font-weight:normal'><span lang=EN-GB>Description<br>
</span></b><span lang=EN-GB><br>
[2] The </span><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>totalorder</span></b></span><span
lang=EN-GB> functions determine whether the total order relationship,
defined by IEC 60559, is true for the ordered pair </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>*x</span></b><span
lang=EN-GB>, </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>*y</span></b><span lang=EN-GB>.
These functions are fully specified in IEC 60559. These functions are
independent of the current rounding direction mode and raise no floating-point
exceptions, even if </span><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>*x</span></b><span lang=EN-GB> or </span><b
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Courier New"'>*y</span></b><span
lang=EN-GB> is a signalling <span class=SpellE>NaN</span>.</span></p>
<p class=stdtext><b style='mso-bidi-font-weight:normal'><span lang=EN-GB>Returns<br>
</span></b><span lang=EN-GB><br>
[3] The </span><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
lang=EN-GB style='font-family:"Courier New"'>totalorder</span></b></span><span
lang=EN-GB> functions return nonzero if and only if the total order
relation is true for the ordered pair </span><b style='mso-bidi-font-weight:
normal'><span lang=EN-GB style='font-family:"Courier New"'>*x</span></b><span
lang=EN-GB>, </span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
style='font-family:"Courier New"'>*y</span></b><span lang=EN-GB>.</span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'>and <span
class=GramE>similarly</span> for F.10.12.2.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:11.0pt;
font-family:"Cambria",serif;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span lang=EN-GB
style='font-size:11.0pt;font-family:"Cambria",serif;mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
EN-GB'><o:p> </o:p></span></p>
<p class=stdtext style='margin-left:.5in'><span style='mso-bidi-font-size:11.0pt;
mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'><o:p> </o:p></span></p>
</div>
<!-- LINKAGE --> <p align="center"> <a href="#dr_24">DR 24</a> Prev <— C2x —> Next <a href="#dr_1">DR 1</a>, or summary at <a href="#top"> top </a></p><br><p>
</body>
</html>