Hi Vivek,

On 03 Jul 2008, at 00:38, Vivek Sarkar wrote:

> Hi, Nate,
>
> Here's a related thought.  If you're adding Int8, Int16, Int32, Int64
> as new value classes, it would be useful to extend them to points by
> adding Point8, Point16, Point32, and Point64 as well.

Agreed.  Or, we could make Point generic; that is, support  
Point[Int32], Point[Int64], etc.

Nate




>
>
> Best,
>
> Vivek
>
> On Jun 19, 2008, at 11:01 AM, Nate Nystrom wrote:
>
>> Hello,
>>
>> We're starting to look at adding support for unsigned integers to
>> X10.  The proposal is to add the following value classes:
>>
>> Int8, Int16, Int32, Int64 - signed integers of the given widths
>> Nat8, Nat16, Nat32, Nat64 - unsigned integers of the given widths
>>
>> More familiar names (e.g., byte, ubyte, short, ushort) will be
>> supported via type aliases.
>>
>> Note that Nat16 is not the same as Char, although they may have the
>> same representation.  In particular, toString() should differ, e.g.,
>> "97" rather than "a".
>>
>>
>> So, some questions:
>>
>> 1. How should comparisons between signed and unsigned values work?
>>
>> Consider:
>>
>>    u16 = Nat16.MAX; // 2^16-1 == 0xffff;
>>    u32 = Nat32.MAX; // 2^32-1 == 0xffffffff;
>>    i32 = -1;        // -1     == 0xffffffff;
>>
>> What is i32 < u16?
>>
>> K&R C is "unsignedness preserving":
>>
>>    i32 < u16 == (nat32) i32 < (nat32) u16 == 0xffffffff < 0xffffffff
>> == false
>>
>> ANSI C is "value preserving":
>>
>>    i32 < u16 == (int32) -1 < (int32) 0xffff == -1 < 65536 == true
>>
>> Except if the operands have the same width:
>>
>>    i32 < u32 == -1 < 2^32-1 == 0xffffffff < 0xffffffff == false
>>
>> I find both the K&R rule and the ANSI rule are non-intuitive in these
>> corner cases.  I think the last test should return true, but it
>> doesn't because they have the same representation.
>>
>> So, here are some of our options:
>>
>> (a) Be unsignedness preserving in the broken K&R C way.
>> (b) Be value preserving in the broken ANSI C way.
>> (c) Be value preserving correctly (i.e., i32 < u32 == true).
>> (d) Disallow signed vs. unsigned comparisons, forcing the programmer
>> to explicitly convert.
>> (e) Introduce different signed and unsigned operators (probably a bad
>> idea)
>>
>> C#, BTW, does (c) for 32-bit values, but (d) for 64-bit values.
>>
>> Any opinions?
>>
>>
>> 2. What are the conversion semantics?
>>
>> Assuming 2's complement representation, we can just truncate or sign
>> extend to the right width and reinterpret the bits in the new type.
>> When converting from a signed number to a longer unsigned, do we sign
>> extend before widening or after?
>>
>> i16: int16 = -1; // 0xffff
>> (a) (i16 to nat32) == 0x0000ffff
>> (b) (i16 to nat32) == 0xffffffff
>>
>> ANSI C does (b) and I don't see a good reason to be different.
>>
>>
>> 3. Should we get rid of >>> as redundant, since >> on an unsigned int
>> would do the same thing?
>>
>>
>> Thanks,
>> Nate
>>
>>
>> -------------------------------------------------------------------------
>> Check out the new SourceForge.net Marketplace.
>> It's the best place to buy or sell services for
>> just about anything Open Source.
>> http://sourceforge.net/services/buy/index.php
>> _______________________________________________
>> X10-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/x10-users
>>
>
>
> -------------------------------------------------------------------------
> Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
> Studies have shown that voting for your favorite open source project,
> along with a healthy diet, reduces your potential for chronic lameness
> and boredom. Vote Now at http://www.sourceforge.net/community/cca08
> _______________________________________________
> X10-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/x10-users
>


-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
X10-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/x10-users

Reply via email to