]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.runtime/scl/BigInteger.scl
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.runtime / scl / BigInteger.scl
diff --git a/bundles/org.simantics.scl.runtime/scl/BigInteger.scl b/bundles/org.simantics.scl.runtime/scl/BigInteger.scl
new file mode 100644 (file)
index 0000000..af90937
--- /dev/null
@@ -0,0 +1,76 @@
+import "Prelude"
+
+/// BigInteger ///
+
+importJava "java.math.BigInteger" where
+    "Arbitrary-precision integer"
+    data BigInteger
+    
+    @JavaName equals
+    equalsBigInteger :: BigInteger -> BigInteger -> Boolean
+    @JavaName min
+    minBigInteger :: BigInteger -> BigInteger -> BigInteger
+    @JavaName max
+    maxBigInteger :: BigInteger -> BigInteger -> BigInteger
+    @JavaName toString
+    showBigInteger :: BigInteger -> String
+    @JavaName compareTo
+    compareBigInteger :: BigInteger -> BigInteger -> Integer
+    @JavaName hashCode
+    hashBigInteger :: BigInteger -> Integer
+    @JavaName ZERO
+    zeroBigInteger :: BigInteger
+    @JavaName ONE
+    oneBigInteger :: BigInteger
+    @JavaName valueOf
+    longToBigInteger :: Long -> BigInteger
+    
+    @JavaName add
+    addBigInteger :: BigInteger -> BigInteger -> BigInteger
+    @JavaName negate
+    negBigInteger :: BigInteger -> BigInteger
+    @JavaName subtract
+    subBigInteger :: BigInteger -> BigInteger -> BigInteger
+    @JavaName multiply
+    mulBigInteger :: BigInteger -> BigInteger -> BigInteger
+    @JavaName divide
+    divBigInteger :: BigInteger -> BigInteger -> BigInteger
+    @JavaName remainder
+    remBigInteger :: BigInteger -> BigInteger -> BigInteger
+    @JavaName abs
+    absBigInteger :: BigInteger -> BigInteger
+    @JavaName intValue
+    toIntegerBigInteger :: BigInteger -> Integer
+
+instance Eq BigInteger where
+    (==) = equalsBigInteger
+
+instance Show BigInteger where
+    show = showBigInteger
+
+instance Ord BigInteger where
+    compare = compareBigInteger
+    min = minBigInteger
+    max = maxBigInteger
+
+instance Hashable BigInteger where
+    hashP v x = hashBigInteger v + 31*x
+
+instance Additive BigInteger where
+    zero = zeroBigInteger
+    (+) = addBigInteger
+
+instance Ring BigInteger where
+    neg = negBigInteger
+    (-) = subBigInteger
+    one = oneBigInteger
+    (*) = mulBigInteger
+    fromInteger x = longToBigInteger (fromInteger x)
+    
+instance OrderedRing BigInteger where
+    abs = absBigInteger
+    toInteger = toIntegerBigInteger
+
+instance Integral BigInteger where
+    div = divBigInteger
+    mod = remBigInteger