There are actuall two usefull definition for %.  The first which Ada calls 
'mod' always returns a value 0<=X<N and yes it has no working value that is an 
identity.  The other which Ada calls 'rem' defined as follows:

Signed integer division and remainder are defined by the relation: 

A = (A/B)*B + (A rem B)

   where (A rem B) has the sign of A and an absolute value less than the 
absolute value of B. Signed integer division satisfies the identity: 

(-A)/B = -(A/B) = A/(-B)

It does have a right side identity of +INF.

--
Mark Biggar
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]


> HaloO Mark,
> 
> please don't regard the following as obtrusive.
> 
> you wrote:
> > If as usual the definition of a right identity value e is that a op e = a 
> > for 
> all a,
> > then only +inf works.  Besdies you example should have been;
> 
> Or actually $n % any( abs($n)+1 .. Inf ) to really exclude 0
> from the junction.
> 
> > $n % any (($n+1)..Inf),  $n % $n = 0. 
> 
> That depends on the definition of % and the sign of $n.
> With the euclidean definition 0 <= ($n % $N == $n % -$N) < abs($N)
> and for $n < 0 there's no identity at all. The identity element
> has to be an element of the set, which +Inf isn't. It's a type.
> 
> BTW, is % defined as truncation in Perl6?
> That would be a bit unfortunate. Simple but not well thought out.
> -- 
> TSa (Thomas Sandlaß)
> 

Reply via email to