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 fromLargeInt: LargeInt.int -> num (* raises Overflow if i < 0 *)
33  val toInt       : num -> int          (* raises Overflow if n > maxInt *)
34  val toLargeInt  : num -> LargeInt.int
35
36  val floor       : real -> num   (* raises Overflow if r < 0 *)
37  val toReal      : num -> real
38
39  val asList      : num -> int list
40
41  val +           : num * num -> num
42  val -           : num * num -> num
43  val *           : num * num -> num
44  val pow         : num * num -> num
45  val div         : num * num -> num
46  val mod         : num * num -> num
47  val divmod      : num * num -> num * num
48  val gcd         : num * num -> num
49  val isqrt       : num -> num
50
51  val <           : num * num -> bool
52  val <=          : num * num -> bool
53  val >           : num * num -> bool
54  val >=          : num * num -> bool
55
56  val compare     : num * num -> order
57
58end
59