1signature Arbnumcore =
2sig
3
4  eqtype num
5
6  val zero        : num
7  val one         : num
8  val two         : num
9
10  val times2      : num -> num
11  val div2        : num -> num
12  val mod2        : num -> num
13  val log2        : num -> num
14
15  val plus1       : num -> num
16  val plus2       : num -> num
17  val less1       : num -> num
18  val less2       : num -> num
19
20  val toString    : num -> string
21  val toBinString : num -> string
22  val toOctString : num -> string
23  val toHexString : num -> string
24
25  val fromString  : string -> num (* decimal *)
26  val genFromString : StringCvt.radix -> string -> num
27  val fromHexString : string -> num
28  val fromOctString : string -> num
29  val fromBinString : string -> num
30
31  val fromInt     : int -> num    (* raises Overflow if i < 0 *)
32  val toInt       : num -> int    (* raises Overflow if n > maxInt *)
33
34  val floor       : real -> num   (* raises Overflow if r < 0 *)
35  val toReal      : num -> real
36
37  val asList      : num -> int list
38
39  val +           : num * num -> num
40  val -           : num * num -> num
41  val *           : num * num -> num
42  val pow         : num * num -> num
43  val div         : num * num -> num
44  val mod         : num * num -> num
45  val divmod      : num * num -> num * num
46  val gcd         : num * num -> num
47  val isqrt       : num -> num
48
49  val <           : num * num -> bool
50  val <=          : num * num -> bool
51  val >           : num * num -> bool
52  val >=          : num * num -> bool
53
54  val compare     : num * num -> order
55
56end
57