Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Integer arithmetic: mod
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: John Max Skaller <skaller@m...>
Subject: Re: [Caml-list] Integer arithmetic: mod
Kai Kaminski wrote:
> 
> Hi,
> 
> I have a question regarding the 'mod' operator in OCaml. While playing
> around with the toplevel, I found that
> 
> -1 mod 10 = -1 instead of -1 mod 10 = 9.


> The reason is that whenever such a behaviour is platform-dependent, you
> can't use it at all, as long as you want to have your programs portable.

	Yes you can: it works for non-negative arguments.
And you can always roll your own function that works as you desire
for negative ones:

	let mymod x y = 
		if ((x mod y) as r) < 0 
		then r + y 
		else r

which works for negative x provided the result is in the range

	 y .. -1

This way, YOU choose whether you want a deterministic result
for non-negative values (use mod, its fast), or are willing
to pay extra for determinism for negative values.

But I agree with you anyhow. :-)

-- 
John (Max) Skaller, mailto:skaller@maxtal.com.au 
10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850
New generation programming language Felix  http://felix.sourceforge.net
Literate Programming tool Interscript     
http://Interscript.sourceforge.net
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr