blob: f25f24512d0ba572b7baa70d7ba222b0087b1d57 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
type t
val uint_size : int
val maxuint31 : t
(* conversion to int *)
val of_int : int -> t
val to_int2 : t -> int * int (* msb, lsb *)
val of_int64 : Int64.t -> t
(*
val of_uint : int -> t
*)
val hash : t -> int
(* convertion to a string *)
val to_string : t -> string
val of_string : string -> t
val compile : t -> string
(* constants *)
val zero : t
val one : t
(* logical operations *)
val l_sl : t -> t -> t
val l_sr : t -> t -> t
val l_and : t -> t -> t
val l_xor : t -> t -> t
val l_or : t -> t -> t
(* Arithmetic operations *)
val add : t -> t -> t
val sub : t -> t -> t
val mul : t -> t -> t
val div : t -> t -> t
val rem : t -> t -> t
(* Specific arithmetic operations *)
val mulc : t -> t -> t * t
val addmuldiv : t -> t -> t -> t
(** [div21 xh xl y] returns [q % 2^63, r]
s.t. [xh * 2^63 + xl = q * y + r] and [r < y].
When [y] is [0], returns [0, 0]. *)
val div21 : t -> t -> t -> t * t
(* comparison *)
val lt : t -> t -> bool
val equal : t -> t -> bool
val le : t -> t -> bool
val compare : t -> t -> int
(* head and tail *)
val head0 : t -> t
val tail0 : t -> t
val is_uint63 : Obj.t -> bool
|