<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><br><div>Begin forwarded message:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>From: </b></span><span style="font-family:'Helvetica'; font-size:medium;">James W Thomas &lt;<a href="mailto:jaswthomas@sbcglobal.net">jaswthomas@sbcglobal.net</a>&gt;<br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>Subject: </b></span><span style="font-family:'Helvetica'; font-size:medium;"><b>Reset for TS 18661 Part 3?</b><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>Date: </b></span><span style="font-family:'Helvetica'; font-size:medium;">May 11, 2013 4:49:42 PM PDT<br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>To: </b></span><span style="font-family:'Helvetica'; font-size:medium;">SC22 WG14 &lt;<a href="mailto:sc22wg14@open-std.org">sc22wg14@open-std.org</a>&gt;<br></span></div><br><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br>At the WG 14 meeting in Delft, TS 18661 Part 3 met with confusion and&nbsp;concern about data-interchange types vs&nbsp;interchange floating types. Why are they&nbsp;named the same (_FloatN, _DecimalN)? Why are data-interchange&nbsp;types named&nbsp;_FloatN when they aren’t floating types? Why do non-arithmetic interchange&nbsp;formats need&nbsp;types at all? Following is an outline of a different approach to&nbsp;supporting the IEC 60559 non-arithmetic&nbsp;interchange formats, intended to address&nbsp;these issues.&nbsp;We will discuss this approach at the May 16 CFP&nbsp;teleconference. Email discussion beforehand is&nbsp;encouraged, especially from WG14&nbsp;members who were at Delft.<div><br></div><div>- Jim Thomas<br>&nbsp;<br>1. Replace data-interchange types with&nbsp;data-interchange encodings. (We already have these for decimal.)<br>&nbsp;<br>Typedef names:<br>encodingfN_t<br>decencodingdN_t<br>binencodingdN_t<br>represent encodings for IEC 60559 interchange formats<br>If Part 1 …<br>Required for binary: encodingfN_t for N = 16, 32, 64, and&nbsp;128<br>Optional for binary: encodingfN_t for N &gt; 128 and a&nbsp;multiple of 32<br>If Part 2 …<br>Required for decimal: decencodingdN_t and binencodingdN_t&nbsp;for N = 32, 64, 128<br>Optional for decimal: decencodingdN_t and binencodingdN_t&nbsp;for N = 96 and for N &gt; 128 and a multiple of 32<br>&nbsp;<br>2. Rename interchange floating types to&nbsp;<i>IEC 60559 interchange floating types</i>. (Yes, this still has&nbsp;“interchange”&nbsp;in the name, but I don’t know what else to call them that&nbsp;wouldn’t be a serious mismatch with IEC 60559&nbsp;terminology. Note that item 4&nbsp;below means the use of this term would be limited.)<br>&nbsp;<br>Types (as now):<br>_FloatN<br>_DecimalN<br>provide IEC 60559 arithmetic interchange formats<br>If Part 1 …<br>Required for binary: _FloatN, N = 32, 64<br>Optional for binary: N = 16 and N &gt;= 128 and a multiple&nbsp;of 32<br>If _FloatN is&nbsp;supported, so shall be encodingfN_t.<br>If Part 2 …<br>Required for decimal: _DecimalN, N = 32, 64, 128<br>Optional for decimal: N = 96 and N &gt; 128 and a multiple&nbsp;of 32<br>If _DecimalN is&nbsp;supported, so shall be decencodingdN_t and binencodingdN_t<br>&nbsp;<br>3. Rename extended floating types to&nbsp;<i>IEC 60559 extended floating types</i>.<br>&nbsp;<br>Types (as now):<br>_FloatNx<br>_DecimalNx<br>provide IEC 60559 (arithmetic) extended formats<br>If Part 1 …<br>Required for binary: N = 32<br>Optional for binary: N = 64, 128<br>If Part 2 …<br>Required for decimal: N = 32, 64<br>Optional for decimal: N = 128<br>&nbsp;<br>4. Define: the IEC 60559 interchange floating types and the&nbsp;IEC 60559 extended floating types are&nbsp;collectively referred to as&nbsp;<i>IEC 60559 floating types</i>.<br>&nbsp;<br>5. Rename generic floating types to&nbsp;<i>general floating types</i>&nbsp;(in Parts 2 and 3). This is intended to&nbsp;address&nbsp;committee concern about different meanings of the term “generic”.<br>&nbsp;<br>6. Define: the general floating types and IEC 60559 floating&nbsp;types are collectively called the&nbsp;<i>real&nbsp;floating&nbsp;types</i>.<br>&nbsp;<br>7. Do not provide classification and totalOrder operations&nbsp;for the encodings. We currently have classification&nbsp;macros and totalorder&nbsp;functions for all the data-interchange types, but for non-arithmetic formats&nbsp;these&nbsp;operations are only recommended in IEC 60559, not required. If the&nbsp;functionality is desirable, we could&nbsp;include it (interfaces TBD) in Part 4&nbsp;(Supplementary functions).<br>&nbsp;<br>8. Provide functions for all the IEC 60559 required mappings&nbsp;to and from the encodings. Here’s where this&nbsp;approach might seem cumbersome.&nbsp;IEC 60559 requires formatOf operations (conversions) between all its&nbsp;floating-point formats (which incudes arithmetic and non-arithmetic). Thus we&nbsp;might have something like<br>&nbsp;<br>void srcTypeAbbrtodstTypeAbbr(const srcType * x, dstType *&nbsp;y);<br>&nbsp;<br>where srcTypeAbbr (srcType) is one of:<br>encfM (encodingfM_t), decencdM decencodingdM_t), binencdM&nbsp;(binencodingdM_t)<br>&nbsp;<br>and dstTypeAbbr (dstType) is one of:<br>encfN (encodingfN_t), decencdN (decencdoingdN_t), binencdN&nbsp;(binencodingdN_t), fN (_FloatN), fNx&nbsp;(_FloatNx), dN (_DecimalN), dNx&nbsp;(_DecimalNx)<br>&nbsp;<br>and where srcTypeAbbr is one of:<br>fM (_FloatM), fMx (_FloatMx), dM (_DecimalM), dMx&nbsp;(_DecimalMx)<br>&nbsp;<br>and dstTypeAbbr is one of:<br>encfN (encodingfN_t), decencdN (decencdoingdN_t), binencdN&nbsp;(binencodingdN_t)<br>&nbsp;<br>Conversions among the arithmetic types are still done by&nbsp;assignment, cast, etc.<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;</div></div></blockquote></div><br></body></html>