]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/ocaml/ocaml/contrib/stdlib/int64.ml
Update
[l4.git] / l4 / pkg / ocaml / ocaml / contrib / stdlib / int64.ml
1 (***********************************************************************)
2 (*                                                                     *)
3 (*                           Objective Caml                            *)
4 (*                                                                     *)
5 (*            Xavier Leroy, projet Cristal, INRIA Rocquencourt         *)
6 (*                                                                     *)
7 (*  Copyright 1996 Institut National de Recherche en Informatique et   *)
8 (*  en Automatique.  All rights reserved.  This file is distributed    *)
9 (*  under the terms of the GNU Library General Public License, with    *)
10 (*  the special exception on linking described in file ../LICENSE.     *)
11 (*                                                                     *)
12 (***********************************************************************)
13
14 (* $Id: int64.ml 7818 2007-01-30 09:34:36Z xleroy $ *)
15
16 (* Module [Int64]: 64-bit integers *)
17
18 external neg : int64 -> int64 = "%int64_neg"
19 external add : int64 -> int64 -> int64 = "%int64_add"
20 external sub : int64 -> int64 -> int64 = "%int64_sub"
21 external mul : int64 -> int64 -> int64 = "%int64_mul"
22 external div : int64 -> int64 -> int64 = "%int64_div"
23 external rem : int64 -> int64 -> int64 = "%int64_mod"
24 external logand : int64 -> int64 -> int64 = "%int64_and"
25 external logor : int64 -> int64 -> int64 = "%int64_or"
26 external logxor : int64 -> int64 -> int64 = "%int64_xor"
27 external shift_left : int64 -> int -> int64 = "%int64_lsl"
28 external shift_right : int64 -> int -> int64 = "%int64_asr"
29 external shift_right_logical : int64 -> int -> int64 = "%int64_lsr"
30 external of_int : int -> int64 = "%int64_of_int"
31 external to_int : int64 -> int = "%int64_to_int"
32 external of_float : float -> int64 = "caml_int64_of_float"
33 external to_float : int64 -> float = "caml_int64_to_float"
34 external of_int32 : int32 -> int64 = "%int64_of_int32"
35 external to_int32 : int64 -> int32 = "%int64_to_int32"
36 external of_nativeint : nativeint -> int64 = "%int64_of_nativeint"
37 external to_nativeint : int64 -> nativeint = "%int64_to_nativeint"
38
39 let zero = 0L
40 let one = 1L
41 let minus_one = -1L
42 let succ n = add n 1L
43 let pred n = sub n 1L
44 let abs n = if n >= 0L then n else neg n
45 let min_int = 0x8000000000000000L
46 let max_int = 0x7FFFFFFFFFFFFFFFL
47 let lognot n = logxor n (-1L)
48
49 external format : string -> int64 -> string = "caml_int64_format"
50 let to_string n = format "%d" n
51
52 external of_string : string -> int64 = "caml_int64_of_string"
53
54 external bits_of_float : float -> int64 = "caml_int64_bits_of_float"
55 external float_of_bits : int64 -> float = "caml_int64_float_of_bits"
56
57 type t = int64
58
59 let compare (x: t) (y: t) = Pervasives.compare x y