]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.runtime/scl/BigInteger.scl
Merge commit '53059ca'
[simantics/platform.git] / bundles / org.simantics.scl.runtime / scl / BigInteger.scl
1 import "Prelude"
2
3 /// BigInteger ///
4
5 importJava "java.math.BigInteger" where
6     "Arbitrary-precision integer"
7     data BigInteger
8     
9     @JavaName equals
10     equalsBigInteger :: BigInteger -> BigInteger -> Boolean
11     @JavaName min
12     minBigInteger :: BigInteger -> BigInteger -> BigInteger
13     @JavaName max
14     maxBigInteger :: BigInteger -> BigInteger -> BigInteger
15     @JavaName toString
16     showBigInteger :: BigInteger -> String
17     @JavaName compareTo
18     compareBigInteger :: BigInteger -> BigInteger -> Integer
19     @JavaName hashCode
20     hashBigInteger :: BigInteger -> Integer
21     @JavaName ZERO
22     zeroBigInteger :: BigInteger
23     @JavaName ONE
24     oneBigInteger :: BigInteger
25     @JavaName valueOf
26     longToBigInteger :: Long -> BigInteger
27     
28     @JavaName add
29     addBigInteger :: BigInteger -> BigInteger -> BigInteger
30     @JavaName negate
31     negBigInteger :: BigInteger -> BigInteger
32     @JavaName subtract
33     subBigInteger :: BigInteger -> BigInteger -> BigInteger
34     @JavaName multiply
35     mulBigInteger :: BigInteger -> BigInteger -> BigInteger
36     @JavaName divide
37     divBigInteger :: BigInteger -> BigInteger -> BigInteger
38     @JavaName remainder
39     remBigInteger :: BigInteger -> BigInteger -> BigInteger
40     @JavaName abs
41     absBigInteger :: BigInteger -> BigInteger
42     @JavaName intValue
43     toIntegerBigInteger :: BigInteger -> Integer
44
45 instance Eq BigInteger where
46     (==) = equalsBigInteger
47
48 instance Show BigInteger where
49     show = showBigInteger
50
51 instance Ord BigInteger where
52     compare = compareBigInteger
53     min = minBigInteger
54     max = maxBigInteger
55
56 instance Hashable BigInteger where
57     hashP v x = hashBigInteger v + 31*x
58
59 instance Additive BigInteger where
60     zero = zeroBigInteger
61     (+) = addBigInteger
62
63 instance Ring BigInteger where
64     neg = negBigInteger
65     (-) = subBigInteger
66     one = oneBigInteger
67     (*) = mulBigInteger
68     fromInteger x = longToBigInteger (fromInteger x)
69     
70 instance OrderedRing BigInteger where
71     abs = absBigInteger
72     toInteger = toIntegerBigInteger
73
74 instance Integral BigInteger where
75     div = divBigInteger
76     mod = remBigInteger