On Friday, 13 November 2015 at 08:51:27 UTC, Ali Çehreli wrote:
I understood Walter's response to be so.

That's my interpretation of what Walter has said before too. So a D compiler cannot prevent compilation of a statically detected wrapping (overflow). As a result D-integers are circular enumerations.

On the other hand, in order to define the wrapping behavior at all, one must speak of overflow first.

For educational purposes, probably :-)

Wrapping is the solution for the condition of overflow, which D must have to begin with, no? :)

For definition, not really. Signed integers are often defined as three functions (other definitions are possible):

Zero: 0
Successor of X: S
Predecessor of X: P

For a 2 bit signed modular arithmetics you would get the complete normalized set:

PP0, P0, 0, S0

with the defined rewrites

SPX = X
PSX = X
PPP0 = S0
SS0 = PP0

(implies PPPPX = X and SSSSX = X)

then you define the operators on the set (+,- etc) using relations such as PSX = X etc.

Reply via email to