<font size=2 face="sans-serif">WG 14 Fall 2011 meeting notes for IEEE
754-2008 binding</font>
<br>
<br><font size=2 face="sans-serif">IEEE 754-2008 C Binding</font>
<br>
<br><font size=2 face="sans-serif">Jim Thomas presenting, 11:00 am, October
25th, 2011</font>
<br><font size=2 face="sans-serif">Notes by Rajan Bhakta</font>
<br>
<br><font size=2 face="sans-serif">Changes required:</font>
<br>
<br><font size=2 face="sans-serif">Slide 2: Vendor (spelling mistake)</font>
<br><font size=2 face="sans-serif">Slide 3: Goal change: TS that superscedes
the Decimal FP TR and specifies the binding to IEEE 754-2008.</font>
<br><font size=2 face="sans-serif">Alternate exception handling (recommended):
"substitute" has a typo</font>
<br>
<br><font size=2 face="sans-serif">Key Comments:</font>
<br>
<br><font size=2 face="sans-serif">** What is the market for tihs?</font>
<br><font size=2 face="sans-serif">We need macros for widths of integers
to make use of these easy (New Operations (3))</font>
<br><font size=2 face="sans-serif">Small manpower implies the CFP group
should do parts of this instead of everything. It is call of the CFP group
what they want to do.</font>
<br><font size=2 face="sans-serif">Suggestion: The reduction functions
can be a later part after the core part is issued.</font>
<br><font size=2 face="sans-serif">John Benito will work with us to get
the idea of the how to write and organize the base document.</font>
<br>
<br><font size=2 face="sans-serif">Full Discussion Notes:</font>
<br>
<br><font size=2 face="sans-serif">Blaine: What are the implications on
Annex F?</font>
<br><font size=2 face="sans-serif">Jim: Will specify changes to Annex F
and the standard itself.</font>
<br><font size=2 face="sans-serif">Tom: Annex F covers the old IEEE spec.
If you want the new spec you use the TS</font>
<br><font size=2 face="sans-serif">Blaine: There are changes that could
cause Annex F to change. Since Annex F is Conditionally Normative</font>
<br><font size=2 face="sans-serif">Jim: Current Annex F allows flexibility
where the new TS won't</font>
<br><font size=2 face="sans-serif">Blaine: This could be the new Annex
F in the next revision of the C standard</font>
<br><font size=2 face="sans-serif">Jim: This would be an "extension"
to the standard</font>
<br><font size=2 face="sans-serif">Doug: What language recommendations
were made by IEEE?</font>
<br><font size=2 face="sans-serif">Jim: We'll go through them in the later
slides</font>
<br><font size=2 face="sans-serif">Tom: Anyone from Fortran on the committee?</font>
<br><font size=2 face="sans-serif">Jim: Intel is interested in Fortran.
David Huff is also there from Oracle.</font>
<br>
<br><font size=2 face="sans-serif">Slide 5:</font>
<br><font size=2 face="sans-serif">Doug: Does quad conflict with Annex
F?</font>
<br><font size=2 face="sans-serif">Jim: If we do make this required it
would pin down a flexibility.</font>
<br><font size=2 face="sans-serif">Bill: What does arithmetic format mean?</font>
<br><font size=2 face="sans-serif">Jim: You can do arithmetic with it?</font>
<br><font size=2 face="sans-serif">Doug: Interchange formats don't need
types.</font>
<br><font size=2 face="sans-serif">Blaine: They have to be some opaque
types.</font>
<br><font size=2 face="sans-serif">Clive: What is a non-arithmetic type?</font>
<br><font size=2 face="sans-serif">Jim: It is just a storage type, you
can convert it to an arithmetic type to do operations</font>
<br>
<br><font size=2 face="sans-serif">Slide 6:</font>
<br><font size=2 face="sans-serif">Blaine: 32 extended can have 64 or 128
sizes?</font>
<br><font size=2 face="sans-serif">Jim: Yes</font>
<br>
<br><font size=2 face="sans-serif">Slide 9:</font>
<br><font size=2 face="sans-serif">Blaine: Implicit conversions?</font>
<br><font size=2 face="sans-serif">Jim: No, through assignments and casts</font>
<br><font size=2 face="sans-serif">Doug: Are the conversions by source
constants or through runtime via scanf/printf?</font>
<br><font size=2 face="sans-serif">Jim: We'll cover this later</font>
<br>
<br><font size=2 face="sans-serif">Tom: Do the new operations use tgmath?</font>
<br><font size=2 face="sans-serif">Jim: There are fixed versions. Type
generic will apply as well.</font>
<br><font size=2 face="sans-serif">P.J.: What is the difference between
nextUp/Down vs nextAfter/nextTowards functions.</font>
<br><font size=2 face="sans-serif">Jim: Difference is that these take one
argument. Not removing old ones.</font>
<br><font size=2 face="sans-serif">Blaine: What does integer logb currently
do?</font>
<br><font size=2 face="sans-serif">Jim: Currently unspecified.</font>
<br><font size=2 face="sans-serif">Blaine: Will the narrowing functions
be type generic or functions?</font>
<br><font size=2 face="sans-serif">Jim: Functions. Only used to narrow
types.</font>
<br><font size=2 face="sans-serif">Doug: How does it handle all floating
types?</font>
<br><font size=2 face="sans-serif">Jim: One set of these for each floating
type</font>
<br><font size=2 face="sans-serif">*Doug: Implies we need macros for widths
of integers to make use of these easy (New Operations (3))</font>
<br>
<br><font size=2 face="sans-serif">New Operations (4):</font>
<br><font size=2 face="sans-serif">Blaine: What are the types?</font>
<br><font size=2 face="sans-serif">Jim: They are the containers for the
bits in those encodings</font>
<br><font size=2 face="sans-serif">Doug: Can you feed a binary into the
encoder and get a decimal?</font>
<br><font size=2 face="sans-serif">Jim: IBM gives DPD encoding, use the
dpdencodingdN_t, and then use the decode function to get it in BID format</font>
<br><font size=2 face="sans-serif">Blaine: How do you get the bytes of
these? For transmittal?</font>
<br><font size=2 face="sans-serif">Jim: Use sizeof, fixed size.</font>
<br><font size=2 face="sans-serif">Tom: Is there a way to make an entry
canonical</font>
<br><font size=2 face="sans-serif">Jim: There is a canonical function</font>
<br><font size=2 face="sans-serif">P.J.: Isn't there a trick to do this?</font>
<br><font size=2 face="sans-serif">Fred: Multiple by one but it may be
optimized out</font>
<br>
<br><font size=2 face="sans-serif">New operations (6):</font>
<br><font size=2 face="sans-serif">P.J.: Could be used for hashtables.
Why not just look at the magnitudes?</font>
<br><font size=2 face="sans-serif">Doug: What sort of value does this give?</font>
<br><font size=2 face="sans-serif">Jim: Gives the greater/less ordering.
Bit ordering gives different results for decimal</font>
<br><font size=2 face="sans-serif">P.J.: Yes, for decimal it doesn't work</font>
<br>
<br><font size=2 face="sans-serif">Character string conversions:</font>
<br><font size=2 face="sans-serif">Doug: Why 3?</font>
<br><font size=2 face="sans-serif">Jim: It is a cushion. IEEE recommends
Infinity, but has to be at least 3.</font>
<br>
<br><font size=2 face="sans-serif">NaN:</font>
<br><font size=2 face="sans-serif">Bill: Is the payload an interesting
quantity?</font>
<br><font size=2 face="sans-serif">Jim: It can be. For example, diagnostic
information.</font>
<br><font size=2 face="sans-serif">Doug: Is there a range for the payload?</font>
<br><font size=2 face="sans-serif">Jim: Significand - 1 (sign) is used
to representing an integer. The IEEE spec specifies that the pl argument
has to be in the range needed.</font>
<br><font size=2 face="sans-serif">Bill: So it can be a DPD interpreted
value, not just bits</font>
<br>
<br><font size=2 face="sans-serif">Static rounding attributes:</font>
<br><font size=2 face="sans-serif">P.J.: Static could mean compile time
or code exectuted before main. Which ones?</font>
<br><font size=2 face="sans-serif">Jim: Means both. Compilers always default
to round to nearest.</font>
<br><font size=2 face="sans-serif">Doug: Dynamic overrides static?</font>
<br><font size=2 face="sans-serif">Jim: No, the other way around. Static
overrides dynamic.</font>
<br><font size=2 face="sans-serif">Doug: Library functions?</font>
<br><font size=2 face="sans-serif">Jim: Dynamic rounding can be used to
emulate static rounding.</font>
<br><font size=2 face="sans-serif">P.J.: sqrt has to know the static rounding
mode?</font>
<br><font size=2 face="sans-serif">Jim: sqrt already has to know the dynamic
rounding mode</font>
<br><font size=2 face="sans-serif">Martin: How does the pragma interact
with thread storage?</font>
<br><font size=2 face="sans-serif">P.J.: A good implementation should follow
the static value</font>
<br><font size=2 face="sans-serif">Jim: Follows the same rules as the other
std pragma</font>
<br><font size=2 face="sans-serif">Martin: So it needs to be stashed somewhere
for the thread</font>
<br>
<br><font size=2 face="sans-serif">Scaled reduction functions (recommended):</font>
<br><font size=2 face="sans-serif">Blaine: Surprised they are not type
generic</font>
<br><font size=2 face="sans-serif">Jim: In the same style, there are float
and long double versions, just listing the double version for examples</font>
<br>
<br><font size=2 face="sans-serif">Slide before "Alternate exception
handling (recommended)" (mode setting/getting)</font>
<br><font size=2 face="sans-serif">Doug: Can you reset back to default
mode after a lot of changes?</font>
<br><font size=2 face="sans-serif">Jim: Yes.</font>
<br><font size=2 face="sans-serif">Blaine: By global do you mean thread?</font>
<br><font size=2 face="sans-serif">Jim: Yes. Each thread has their own
mode.</font>
<br>
<br><font size=2 face="sans-serif">Alternate exception handling (recommended):</font>
<br><font size=2 face="sans-serif">Martin: "substitute" has a
typo</font>
<br>
<br><font size=2 face="sans-serif">After:</font>
<br><font size=2 face="sans-serif">*P.J.: What is the market for tihs?</font>
<br><font size=2 face="sans-serif">Doug: Referenced in the C standard so
we will need to acknowedge it. Could be subset.</font>
<br><font size=2 face="sans-serif">Blaine: Huge, so probably parts will
be taken</font>
<br><font size=2 face="sans-serif">*Benito: Small manpower implies the
CFP group should do parts of this instead of everything. It is call of
the group.</font>
<br><font size=2 face="sans-serif">David Keaton: Maybe as parts? Part 1,
part 2, etc. to cover everything.</font>
<br><font size=2 face="sans-serif">*Blaine: The reduction functions can
be a later part</font>
<br><font size=2 face="sans-serif">Doug: The study group is not implementing
anything. They are just specifying which is a great service to the implementors.</font>
<br><font size=2 face="sans-serif">Blaine: The edge cases are where the
most of the work is. This is where it needs to be covered. Where the group
invents is where the problems will lie.</font>
<br><font size=2 face="sans-serif">Jim: IEEE spec does go over in detail
the cases.</font>
<br><font size=2 face="sans-serif">Blaine: Can we phrase the TS to make
parts optional to avoid burdening implementers</font>
<br>
<br><font size=2 face="sans-serif">Regards,<br>
<br>
Rajan Bhakta<br>
z/OS XL C/C++ Compiler Technical Architect<br>
ISO C Standards Representative for Canada<br>
C Compiler Development<br>
Contact: rbhakta@ca.ibm.com, Rajan Bhakta/Toronto/IBM<br>
Telephone: (905) 413-3995</font>
<br>