symmetric signed types

Dominikus Dittes Scherkl Dominikus.Scherkl at continental-corporation.com
Sat Jan 25 04:57:52 PST 2014


On Friday, 24 January 2014 at 23:26:04 UTC, Brad Roberts wrote:
> On 1/24/14 6:08 AM, Dominikus Dittes Scherkl wrote:
>> I had something very simple in mind:
>> 1) get rid of the asymmetric T.min value
>>    that always causes problems with abs()
>> 2) instead use this special value as NaN
>> 3) let NaN be the init-value of the signed types
>> 4) let every over-/underflow result in NaN
>> 5) let every operation involving NaN result in NaN
>> 5) let any cast from other types to the save
>>    signed types check range and set NaN if the
>>    value doesn't fit
> The only reason that NaN works in the FP world is that it's 
> done in hardware as part of existing operations.

Walter wrote:
"There's no NaN for integrals."

At least the carry-bit is already available in hardware. So the 
save type doesn't incure much performance loss in operations. On 
the other hand comparison, assignment and casts become slower by 
a factor 2 or 3. And then comparison cannot be implemented fully 
correct with the current operator overloding system of D.

> It's, pretty much by definition, too expensive for a
> set of people and the apps they care about.
Yeah, but I think it's a small share and they could use the 
unsafe types - like they use manual memory management insted of 
GC.

> The only practical way is to introduce a new type that behaves 
> like this and use that instead.
Thats what I did. I will share my code soon.


More information about the Digitalmars-d mailing list