[Cfp-interest] format - type names issue
Jim Thomas
jwthomas at cup.hp.com
Wed Feb 3 11:30:45 PST 2010
Ian McIntosh wrote:
>
> I agree that "_Real" is redundant and would not be welcomed by most
> programmers. Also C TR1 already defines the decimal types as
> _DecimalN and at least IBM and gcc have already implemented that.
HP too.
> There are other options to consider. One is similar to #3 but without
> the "_Real":
>
> 4 _BinaryN
> _DecimalN
> _Complex_BinaryN
> _Complex_DecimalN
> _Imaginary_BinaryN
> _Imaginary_DecimalN
>
> You can divide this into orthogonol decisions:
> 1. Do we use _Binary or _Float ?
> 2. Do we use _Real or omit it ?
> 3. Do we put _Complex and _Imaginary first or last, or do we
> omit _Binary or _Float when used with _Complex and _Imaginary ? (a 3
> way choice)
> which means there are 8 combinations.
>
> My preferences (subject to change after discussion) are:
> 1. Undecided, leaning towards _Float.
> I prefer _Binary because while _Float feels more
> C-like, it could be confusing that _Float64 and _Float128 don't match
> the precision of the typical float.
I don't think it would be confusing. It's like int16_t not matching int.
> I prefer _Binary because it matches IEEE better.
> I prefer _Float because _Binary doesn't imply floating
> point as well as _Float does.
> Some might prefer _Float because it's one character
> shorter. I don't care about one character.
> 2. Omit it.
> _Real is redundant, would not be welcomed by most
> programmers, and TR1 already defines the decimal types as _DecimalN.
> 3. _Complex and _Imaginary first.
> Adjectives normally precede nouns, and I think of
> Complex and Imaginary as adjectives, and _Float, _Binary and _Decimal
> as being closer by usage to being nouns.
> A C++ implementation using templates would have to use
> Complex <_BinaryN> not _BinaryN <Complex>, etc.,
> because the template parameter must be an existing
> type and the template name must not be..
> I think complex and imaginary are uncommon enough that
> consistency wins over brevity.
Given that the existing names for imaginary and complex types have the
associated real type first (e.g., float complex), it seems more
consistent with C style to place _Complex and _Imaginary last.
-Jim
>
> That leads me to choice #6 (or maybe #10) of the 12 possible:
>
> *6 _FloatN*
> * _DecimalN*
> * _Complex_FloatN*
> * _Complex_DecimalN*
> * _Imaginary_FloatN*
> * _Imaginary_DecimalN*
>
> 10 _FloatN
> _DecimalN
> _ComplexN
> _Complex_DecimalN
> _ImaginaryN
> _Imaginary_DecimalN
>
> Yes, I omitted the other 6 types. That's an exercise for somebody who
> prefers one of them. 8<)
>
> - Ian McIntosh IBM Canada Lab Compiler Back End
> Support and Development
>
>
>
> From: Jim Thomas <jwthomas at cup.hp.com>
> To: "cfp-interest at ucbtest.org" <cfp-interest at ucbtest.org>
> Date: 02/02/2010 11:55 AM
> Subject: [Cfp-interest] format - type names issue
> Sent by: cfp-interest-bounces at oakapple.net
>
>
> ------------------------------------------------------------------------
>
>
>
> >> Issue: What type names to use? Alternatives:
> >>
> >> 1 _BinaryN
> >> _DecimalN
> >> _BinaryN_Complex
> >> _DecimalN_Complex
> >> _BinaryN_Imaginary
> >> _DecimalN_Imaginary
> >>
> >> 2 _FloatN
> >> _DecimalN
> >> _FloatN_Complex
> >> _DecimalN_Complex
> >> _FloatN_Imaginary
> >> _DecimalN_Imaginary
> >>
> >> 3 _Real_BinaryN
> >> _Real_DecimalN
> >> _Complex_BinaryN
> >> _Complex_DecimalN
> >> _Imaginary_BinaryN
> >> _Imaginary_DecimalN
>
> 1 and 2 are more in the style of the existing C floating types. C
> doesn't qualify the names of floating types with "real". It's just float,
> not "real float" or "float real". The imaginary and complex types can be
> thought of as constructed from their corresponding real types, so it
> makes sense to explicitly name the domain for imaginary and complex but
> not for real. I'm unaware of any confusion caused by this naming approach.
>
> 99.9[...]% of programs and programmers will deal only with real types.
> Programmers wouldn't thank us for lengthening the names of the real
> types (as with 3):
>
> _Real_Binary256 fmab256 (_Real_Binary256, _Real_Binary256,
> _Real_Binary256);
>
> vs
>
> _Float256 fmaf256 (_Float256, _Float256, _Float256);
>
> 3 is inconsistent with the existing C decimal FP TR (_Real_DecimalN vs
> _DecimalN). This would mean that current implementations of the TR would
> need to support two naming schemes for their decimal floating types.
>
> _FloatN is easily thought of as the binary floating type of width N. The
> existing C float type must be binary for Annex F (IEEE) implementations
> and is binary in almost all implementations. Existing implementations
> (including gcc) currently use __floatN to designate binary floating
> types (__float80, __float128). I'm unaware of any C history that would
> associate _BinaryN with floating point.
>
> I think this argues that 2 is the best choice.
>
> -Jim
>
>
>
>
> _______________________________________________
> Cfp-interest mailing list
> Cfp-interest at oakapple.net
> http://mailman.oakapple.net/mailman/listinfo/cfp-interest
>
>
More information about the Cfp-interest
mailing list