[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Xavier Leroy <Xavier.Leroy@i...> |
| Subject: | Re: [Caml-list] Ints and overflow... |
> However, this has led me directly into the zone of integer overflow. > Basically, I don't understand what I can expect to be portable, and > I really don't understand what OCaml does -- what is the tagging > scheme, and how does that affect the overflow results I can expect? As long as you're programming in well-typed Caml, the exact details of the tagging scheme do not matter. You get regular 2-complement modulo arithmetic, just like in Java and most if not all C compilers, with 31 bits of precision, or 63 bits if you're lucky enought to run on a 64-bit processor. > For example: Is the integer tag 0 or 1? It's a 1 in the least significant bit, but again you can't observe this from well-typed Caml. > Does it vary by platform? No, but same comment as above. > Can the results vary by how Caml chooses to optimize adds? Normally, no. If it varied, that would be due to a bug in the tagging optimization scheme of the ocamlopt compiler. > Does Caml promise anything at all about the results of an > overflowing integer add? Yes: it wraps around, i.e. you get the result modulo 2^31 (or 2^63 on a 64-bit platform). Hope this answers your questions. - Xavier Leroy ------------------- 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