GDC release 0.23

Daniel Keep daniel.keep.lists at gmail.com
Tue Mar 6 19:29:47 PST 2007



David Friedman wrote:
> Sean Kelly wrote:
>> Anders F Björklund wrote:
>>
>>>>> GDC now supports 64-bit targets! A new x86_64 Linux binary is
>>>>> available and the MacOS X binary supports x86_64 and ppc64.
>>>>
>>>>
>>>> Excellent news! I'll try it on ppc64 Linux too (Fedora Core)
>>>
>>>
>>> Except for some strange (temporary?) build error with soft-float,
>>> it built just fine for powerpc64-unknown-linux-gnu (with FC5/PPC*)
>>
>>
>> That reminds me.  Is it really a good idea to map the GCC/PPC "long
>> double" to "real" in D?  I know this has come up before:
>>
>> http://www.digitalmars.com/d/archives/digitalmars/D/20790.html
>>
>> and the data type seems like an aberration.  Here is some more info:
>>
>> http://lists.apple.com/archives/Darwin-development/2001/Jan/msg00499.html
>>
>> And from the ELF ABI:
>>
>>     This "Extended precision" differs from the IEEE 754 Standard
>>     in the following ways:
>>
>>     * The software support is restricted to round-to-nearest
>>       mode. Programs that use extended precision must ensure
>>       that this rounding mode is in effect when
>>       extended-precision calculations are performed.
>>     * Does not fully support the IEEE special numbers NaN and
>>       INF. These values are encoded in the high-order double
>>       value only. The low-order value is not significant.
>>     * Does not support the IEEE status flags for overflow,
>>       underflow, and other conditions. These flag have no
>>       meaning in this format.
>>
>> I can't claim to have the maths background of some folks here, but
>> this suggests to me that this 128-bit representation isn't truly
>> IEEE-754 compliant and therefore probably shouldn't be a default data
>> type in D?
>>
>>
>> Sean
> 
> The double+double type has caused me no end of trouble, but I think it
> is important to maintain interoperability with C.  If I make the D
> 'real' implementation IEEE double, there would be no way interact with C
> code that uses 'long double'.  I could add another floating point type
> for this purpose, but that would diverge from the D spec more than what
> I have now.
> 
> David

I might be off-base, but couldn't you do something like this?

> version( GDC )
>     pragma(gdc_enable, gdc_longdouble);
>
> // ...
>
> extern(C) gdc_longdouble foo(gdc_longdouble);

Yes, you'd be adding a new type, but at least it's hidden behind a
pragma.  Interfacing with C code is fairly important to D, but I'd hate
to have fp code that works fine under DMD and then mysteriously breaks
with gdc--I think compatibility with other D implementations should come
before interfacing with C.

Just my AU$0.02.

	-- Daniel

-- 
Unlike Knuth, I have neither proven or tried the above; it may not even
make sense.

v2sw5+8Yhw5ln4+5pr6OFPma8u6+7Lw4Tm6+7l6+7D
i28a2Xs3MSr2e4/6+7t4TNSMb6HTOp5en5g6RAHCP  http://hackerkey.com/


More information about the D.gnu mailing list