X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.scl.runtime%2Fscl%2FBigInteger.scl;fp=bundles%2Forg.simantics.scl.runtime%2Fscl%2FBigInteger.scl;h=af9093701d51186c4059b30685b42024c41e5fc9;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.runtime/scl/BigInteger.scl b/bundles/org.simantics.scl.runtime/scl/BigInteger.scl new file mode 100644 index 000000000..af9093701 --- /dev/null +++ b/bundles/org.simantics.scl.runtime/scl/BigInteger.scl @@ -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