[project @ 2004-07-19 22:11:45 by igloo]
authorigloo <unknown>
Mon, 19 Jul 2004 22:11:54 +0000 (22:11 +0000)
committerigloo <unknown>
Mon, 19 Jul 2004 22:11:54 +0000 (22:11 +0000)
Allows a -ws-64 stdout variant rather than requiring each 64-bit
platform to have a -platform one. (You now need to make boot in
testsuite after configure but before running tests).

Modify enum001, partly to alter spacing but also to inline printTest
where things like \NUL are used, as modern cpp behaves differently.

Rename the generated .script files to .genscript to make it easier to
clean a testsuite tree.

18 files changed:
testsuite/Makefile
testsuite/driver/testlib.py
testsuite/mk/test.mk
testsuite/mk/wordsize.mk.in [new file with mode: 0644]
testsuite/tests/ghc-regress/lib/Numeric/num002.stdout-ws-64 [new file with mode: 0644]
testsuite/tests/ghc-regress/lib/Numeric/num003.stdout-ws-64 [new file with mode: 0644]
testsuite/tests/ghc-regress/lib/Numeric/num004.stdout-ws-64 [new file with mode: 0644]
testsuite/tests/ghc-regress/lib/Numeric/num005.stdout-ws-64 [new file with mode: 0644]
testsuite/tests/ghc-regress/lib/should_run/addr001.stdout-ws-64 [new file with mode: 0644]
testsuite/tests/ghc-regress/lib/should_run/enum01.hs
testsuite/tests/ghc-regress/lib/should_run/enum01.stdout-ws-64 [new file with mode: 0644]
testsuite/tests/ghc-regress/lib/should_run/enum02.stdout-ws-64 [new file with mode: 0644]
testsuite/tests/ghc-regress/lib/should_run/enum03.stdout-ws-64 [new file with mode: 0644]
testsuite/tests/ghc-regress/numeric/should_run/arith003.stdout-ws-64 [new file with mode: 0644]
testsuite/tests/ghc-regress/numeric/should_run/arith005.stdout-ws-64 [new file with mode: 0644]
testsuite/tests/ghc-regress/numeric/should_run/arith011.stdout-ws-64 [new file with mode: 0644]
testsuite/tests/ghc-regress/numeric/should_run/num009.stdout-ws-64 [new file with mode: 0644]
testsuite/tests/ghc-regress/typecheck/should_run/tcrun002.stdout-ws-64 [new file with mode: 0644]

index 795e6bc..f49015d 100644 (file)
@@ -1,9 +1,14 @@
 TOP = .
 include $(TOP)/mk/boilerplate.mk
 
-all boot ::
+CLEAN_FILES += mk/wordsize.mk
+
+all ::
        @echo "To run the tests, go into tests/ghc-regress and say \`make'."
        @echo "More information about configuring and running the testsuite"
        @echo "can be found in the file \`README' in this directory."
 
+boot ::
+       $(CPP) $(RAWCPP_FLAGS) -x c mk/wordsize.mk.in > mk/wordsize.mk
+
 include $(TOP)/mk/target.mk
index e9e7a0f..763d9cc 100644 (file)
@@ -41,6 +41,9 @@ class TestConfig:
         # What platform are we running on?
         self.platform = ''
 
+        # What is the wordsize (in bits) of this platform?
+        self.wordsize = ''
+
         # Verbosity level
         self.verbose = 1
 
@@ -415,7 +418,7 @@ def do_compile( name, way, should_fail, top_mod, extra_hc_opts ):
     # of whether we expected the compilation to fail or not (successful
     # compilations may generate warnings).
 
-    expected_stderr_file = platform_qualify(name, 'stderr')
+    expected_stderr_file = platform_wordsize_qualify(name, 'stderr')
     actual_stderr_file = qualify(name, 'comp.stderr')
     actual_stderr = normalise_errmsg(open(actual_stderr_file).read())
 
@@ -575,7 +578,7 @@ def interpreter_run( name, way, extra_hc_opts, compile_only, top_mod ):
     else:
         srcname = top_mod
         
-    scriptname = add_suffix(name, 'script')
+    scriptname = add_suffix(name, 'genscript')
     qscriptname = in_testdir(scriptname)
     rm_no_fail(qscriptname)
 
@@ -753,7 +756,7 @@ def extcore_run( name, way, extra_hc_opts, compile_only, top_mod ):
 
 def check_stdout_ok( name ):
    actual_stdout_file   = qualify(name, 'run.stdout')
-   expected_stdout_file = platform_qualify(name, 'stdout')
+   expected_stdout_file = platform_wordsize_qualify(name, 'stdout')
 
    if os.path.exists(expected_stdout_file):
        expected_stdout = open(expected_stdout_file).read()
@@ -778,7 +781,7 @@ def check_stdout_ok( name ):
 
 def check_stderr_ok( name ):
    actual_stderr_file   = qualify(name, 'run.stderr')
-   expected_stderr_file = platform_qualify(name, 'stderr')
+   expected_stderr_file = platform_wordsize_qualify(name, 'stderr')
 
    if os.path.exists(expected_stderr_file):
        expected_stderr = open(expected_stderr_file).read()
@@ -883,12 +886,16 @@ def in_testdir( name ):
 def qualify( name, suff ):
     return in_testdir(add_suffix(name, suff))
 
-# "foo" -> qualify("foo-platform") if it exists, or qualify("foo") otherwise
-def platform_qualify( name, suff ):
+# "foo" -> qualify("foo-platform") if it exists, otherwise
+# try qualify("foo-ws-wordsize") or finally qualify("foo")
+def platform_wordsize_qualify( name, suff ):
     path = qualify(name, suff)
     platform_path = path + '-' + config.platform
+    wordsize_path = path + '-ws-' + config.wordsize
     if os.path.exists(platform_path):
         return platform_path
+    elif os.path.exists(wordsize_path):
+        return wordsize_path
     else:
         return path
 
index ea84af8..e2b7999 100644 (file)
@@ -15,6 +15,8 @@
 #
 # -----------------------------------------------------------------------------
 
+include $(TOP)/mk/wordsize.mk
+
 ifeq "$(PYTHON)" ""
 $(error Python must be installed in order to use the testsuite)
 endif
@@ -64,6 +66,7 @@ RUNTEST_OPTS +=  \
        -e config.compiler=\"$(TEST_HC)\" \
        -e config.compiler_always_flags.append"(\"$(EXTRA_HC_OPTS)\")" \
        -e config.platform=\"$(TARGETPLATFORM)\" \
+       -e config.wordsize=\"$(WORDSIZE)\" \
        $(EXTRA_RUNTEST_OPTS)
 
 TESTS       = 
diff --git a/testsuite/mk/wordsize.mk.in b/testsuite/mk/wordsize.mk.in
new file mode 100644 (file)
index 0000000..f04a5d1
--- /dev/null
@@ -0,0 +1,5 @@
+
+#include "../../ghc/includes/MachDeps.h"
+
+WORDSIZE = WORD_SIZE_IN_BITS
+
diff --git a/testsuite/tests/ghc-regress/lib/Numeric/num002.stdout-ws-64 b/testsuite/tests/ghc-regress/lib/Numeric/num002.stdout-ws-64
new file mode 100644 (file)
index 0000000..b81876f
--- /dev/null
@@ -0,0 +1,6 @@
+343023920121
+3430239
+1212
+1143376523
+-111
+232189458241
diff --git a/testsuite/tests/ghc-regress/lib/Numeric/num003.stdout-ws-64 b/testsuite/tests/ghc-regress/lib/Numeric/num003.stdout-ws-64
new file mode 100644 (file)
index 0000000..ae95d2a
--- /dev/null
@@ -0,0 +1,6 @@
+[(343023920121,"")]
+[(3430239,"")]
+[(1212,"")]
+[(1143376523,"")]
+[(-111,"")]
+[(232189458241,"")]
diff --git a/testsuite/tests/ghc-regress/lib/Numeric/num004.stdout-ws-64 b/testsuite/tests/ghc-regress/lib/Numeric/num004.stdout-ws-64
new file mode 100644 (file)
index 0000000..150f98e
--- /dev/null
@@ -0,0 +1,6 @@
+[(343023920121,"")]
+[(3430239,"")]
+[(0,"")]
+[(1143376523,"")]
+[(-111,"")]
+[(232189458241,"")]
diff --git a/testsuite/tests/ghc-regress/lib/Numeric/num005.stdout-ws-64 b/testsuite/tests/ghc-regress/lib/Numeric/num005.stdout-ws-64
new file mode 100644 (file)
index 0000000..35678af
--- /dev/null
@@ -0,0 +1,55 @@
+
+(readDec::ReadS Integer) 3489348394032498320438240938403 = [(3489348394032498320438240938403,"")]
+(readDec::ReadS Integer) 0 = [(0,"")]
+(readDec::ReadS Integer) -1 = []
+(readDec::ReadS Integer) 1 = [(1,"")]
+(readDec::ReadS Integer) 34323 = [(34323,"")]
+(readDec::ReadS Integer) 2L = [(2,"L")]
+(readDec::ReadS Integer) 012 = [(12,"")]
+(readDec::ReadS Integer) 0x23 = [(0,"x23")]
+(readDec::ReadS Integer) 3243ab = [(3243,"ab")]
+(readDec::ReadS Int) 3489348394032498320438240938403 = [(8154046292665502115,"")]
+(readDec::ReadS Int) 0 = [(0,"")]
+(readDec::ReadS Int) -1 = []
+(readDec::ReadS Int) 1 = [(1,"")]
+(readDec::ReadS Int) 34323 = [(34323,"")]
+(readDec::ReadS Int) 2L = [(2,"L")]
+(readDec::ReadS Int) 012 = [(12,"")]
+(readDec::ReadS Int) 0x23 = [(0,"x23")]
+(readDec::ReadS Int) 3243ab = [(3243,"ab")]
+(readOct::ReadS Integer) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
+(readOct::ReadS Integer) 0 = [(0,"")]
+(readOct::ReadS Integer) -1 = []
+(readOct::ReadS Integer) 1 = [(1,"")]
+(readOct::ReadS Integer) 34323 = [(14547,"")]
+(readOct::ReadS Integer) 2L = [(2,"L")]
+(readOct::ReadS Integer) 012 = [(10,"")]
+(readOct::ReadS Integer) 0x23 = [(0,"x23")]
+(readOct::ReadS Integer) 3243ab = [(1699,"ab")]
+(readOct::ReadS Int) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
+(readOct::ReadS Int) 0 = [(0,"")]
+(readOct::ReadS Int) -1 = []
+(readOct::ReadS Int) 1 = [(1,"")]
+(readOct::ReadS Int) 34323 = [(14547,"")]
+(readOct::ReadS Int) 2L = [(2,"L")]
+(readOct::ReadS Int) 012 = [(10,"")]
+(readOct::ReadS Int) 0x23 = [(0,"x23")]
+(readOct::ReadS Int) 3243ab = [(1699,"ab")]
+(readHex::ReadS Integer) 3489348394032498320438240938403 = [(4364516597526947317207336190131536899,"")]
+(readHex::ReadS Integer) 0 = [(0,"")]
+(readHex::ReadS Integer) -1 = []
+(readHex::ReadS Integer) 1 = [(1,"")]
+(readHex::ReadS Integer) 34323 = [(213795,"")]
+(readHex::ReadS Integer) 2L = [(2,"L")]
+(readHex::ReadS Integer) 012 = [(18,"")]
+(readHex::ReadS Integer) 0x23 = [(0,"x23")]
+(readHex::ReadS Integer) 3243ab = [(3294123,"")]
+(readHex::ReadS Int) 3489348394032498320438240938403 = [(-8998117828778032125,"")]
+(readHex::ReadS Int) 0 = [(0,"")]
+(readHex::ReadS Int) -1 = []
+(readHex::ReadS Int) 1 = [(1,"")]
+(readHex::ReadS Int) 34323 = [(213795,"")]
+(readHex::ReadS Int) 2L = [(2,"L")]
+(readHex::ReadS Int) 012 = [(18,"")]
+(readHex::ReadS Int) 0x23 = [(0,"x23")]
+(readHex::ReadS Int) 3243ab = [(3294123,"")]
diff --git a/testsuite/tests/ghc-regress/lib/should_run/addr001.stdout-ws-64 b/testsuite/tests/ghc-regress/lib/should_run/addr001.stdout-ws-64
new file mode 100644 (file)
index 0000000..f38ea71
--- /dev/null
@@ -0,0 +1,2 @@
+0x7fffffffffffffff
+0x8000000000000000
index 7d001dd..c09373e 100644 (file)
@@ -161,8 +161,10 @@ testEnumChar = do
   printTest ((map fromEnum ['X',minBound,maxBound]))
 
      -- [x..] aka enumFrom
-  printTest ((take 7 ['\NUL' .. ]))
-  printTest ((take 7 ['\250' .. ]))
+  -- printTest ((take 7 ['\NUL' .. ]))
+  do{ putStr ( "    " ++ "(take 7 ['\\NUL' .. ])" ++ " = " ) ; print (take 7 ['\NUL' .. ]) }
+  -- printTest ((take 7 ['\250' .. ]))
+  do{ putStr ( "    " ++ "(take 7 ['\\250' .. ])" ++ " = " ) ; print (take 7 ['\250' .. ]) }
   
      -- [x,y..] aka enumFromThen
   printTest ((take 7 ['a','b'..]))
@@ -171,19 +173,24 @@ testEnumChar = do
   printTest ((take 7 ['z','y'..]))
   printTest ((take 7 ['z','v'..]))
   let x = '\1'
-  printTest ((take 7 ['\1', '\0' ..]))
+  -- printTest ((take 7 ['\1', '\0' ..]))
+  do{ putStr ( "    " ++ "(take 7 ['\\1', '\\0' ..])" ++ " = " ) ; print (take 7 ['\1', '\0' ..]) }
   let x = '\5'
-  printTest ((take 7 ['\5', '\4' ..]))
+  -- printTest ((take 7 ['\5', '\4' ..]))
+  do{ putStr ( "    " ++ "(take 7 ['\\5', '\\4' ..])" ++ " = " ) ; print (take 7 ['\5', '\4' ..]) }
   let x = (maxBound::Int) - 5
-  printTest ((take 7 ['\250', '\251' ..]))
+  -- printTest ((take 7 ['\250', '\251' ..]))
+  do{ putStr ( "    " ++ "(take 7 ['\\250', '\\251' ..])" ++ " = " ) ; print (take 7 ['\250', '\251' ..]) }
 
      -- [x..y] aka enumFromTo
   printTest ((take 7 (['a' .. 'e'])))
   printTest ((take 4 (['a' .. 'a'])))
   printTest ((take 7 (['b' .. 'a'])))
   printTest ((take 7 (['e' .. 'a'])))
-  printTest ((take 7 (['\250' .. '\255'])))
-  printTest ((take 7 (['\5' .. '\0'])))
+  -- printTest ((take 7 (['\250' .. '\255'])))
+  do{ putStr ( "    " ++ "(take 7 (['\\250' .. '\\255']))" ++ " = " ) ; print (take 7 (['\250' .. '\255'])) }
+  -- printTest ((take 7 (['\5' .. '\0'])))
+  do{ putStr ( "    " ++ "(take 7 (['\\5' .. '\\0']))" ++ " = " ) ; print (take 7 (['\5' .. '\0'])) }
 
      -- [x,y..z] aka enumFromThenTo
   printTest ((take 7 ['f','e' .. 'b']))
@@ -193,8 +200,10 @@ testEnumChar = do
   printTest ((take 7 ['c','b' .. 'c']))
   printTest ((take 7 ['c','b' .. 'b']))
   printTest ((take 7 ['c','d' .. 'b']))
-  printTest ((take 7 ['\251', '\252' .. maxBound]))
-  printTest ((take 7 ['\5', '\4' .. minBound]))
+  -- printTest ((take 7 ['\251', '\252' .. maxBound]))
+  do{ putStr ( "    " ++ "(take 7 ['\\251', '\\252' .. maxBound])" ++ " = " ) ; print (take 7 ['\251', '\252' .. maxBound]) }
+  -- printTest ((take 7 ['\5', '\4' .. minBound]))
+  do{ putStr ( "    " ++ "(take 7 ['\\5', '\\4' .. minBound])" ++ " = " ) ; print (take 7 ['\5', '\4' .. minBound]) }
 
 
 testEnumUnit :: IO ()
@@ -323,8 +332,8 @@ testEnumBool = do
   printTest (take 7 ([False,True .. True]))
   printTest (take 7 ([True,False .. False]))
   printTest (take 7 ([True,False .. True]))
-  printTest (take 7 ([True,True ..  False]))
-  printTest (take 7 ([True,True ..  True]))
+  printTest (take 7 ([True,True .. False]))
+  printTest (take 7 ([True,True .. True]))
 
 
 testEnumInteger :: IO ()
diff --git a/testsuite/tests/ghc-regress/lib/should_run/enum01.stdout-ws-64 b/testsuite/tests/ghc-regress/lib/should_run/enum01.stdout-ws-64
new file mode 100644 (file)
index 0000000..a5f22dc
--- /dev/null
@@ -0,0 +1,230 @@
+Testing Enum Int: 
+    (succ (0::Int)) = 1
+    (succ (minBound::Int)) = -9223372036854775807
+    (succ (maxBound::Int)) = error "Prelude.Enum.succ{Int}: tried to take `succ' of maxBound"
+    pred (1::Int) = 0
+    pred (maxBound::Int) = 9223372036854775806
+    pred (minBound::Int) = error "Prelude.Enum.pred{Int}: tried to take `pred' of minBound"
+    (map (toEnum::Int->Int) [1,minBound,maxBound]) = [1,-9223372036854775808,9223372036854775807]
+    (map fromEnum [(1::Int),minBound,maxBound]) = [1,-9223372036854775808,9223372036854775807]
+    (take 7 [(1::Int)..]) = [1,2,3,4,5,6,7]
+    (take 7 [((maxBound::Int)-5)..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
+    (take 7 [(1::Int),2..]) = [1,2,3,4,5,6,7]
+    (take 7 [(1::Int),7..]) = [1,7,13,19,25,31,37]
+    (take 7 [(1::Int),1..]) = [1,1,1,1,1,1,1]
+    (take 7 [(1::Int),0..]) = [1,0,-1,-2,-3,-4,-5]
+    (take 7 [(5::Int),2..]) = [5,2,-1,-4,-7,-10,-13]
+    (take 7 [x, x-1 ..]) = [-9223372036854775807,-9223372036854775808]
+    (take 7 [x, x-1 ..]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
+    (take 7 [x, (x+1) ..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
+    (take 7 ([(1::Int) .. 5])) = [1,2,3,4,5]
+    (take 4 ([(1::Int) .. 1])) = [1]
+    (take 7 ([(1::Int) .. 0])) = []
+    (take 7 ([(5::Int) .. 0])) = []
+    (take 7 ([(maxBound-(5::Int)) .. maxBound])) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
+    (take 7 ([(minBound+(5::Int)) .. minBound])) = []
+    (take 7 [(5::Int),4..1]) = [5,4,3,2,1]
+    (take 7 [(5::Int),3..1]) = [5,3,1]
+    (take 7 [(5::Int),3..2]) = [5,3]
+    (take 7 [(1::Int),2..1]) = [1]
+    (take 7 [(2::Int),1..2]) = [2]
+    (take 7 [(2::Int),1..1]) = [2,1]
+    (take 7 [(2::Int),3..1]) = []
+    (take 7 [x,(x+1)..maxBound]) = [9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
+    (take 7 [x,(x-1)..minBound]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
+Testing Enum Integer: 
+    (succ (0::Integer)) = 1
+    (succ ((-1)::Integer)) = 0
+    pred (1::Integer) = 0
+    pred (0::Integer) = -1
+    (map (toEnum::Int->Integer) [1,minBound,maxBound]) = [1,-9223372036854775808,9223372036854775807]
+    (map fromEnum [(1::Integer),42,45]) = [1,42,45]
+    (take 7 [(1::Integer)..]) = [1,2,3,4,5,6,7]
+    (take 7 [(-5::Integer)..]) = [-5,-4,-3,-2,-1,0,1]
+    (take 7 [(1::Integer),2..]) = [1,2,3,4,5,6,7]
+    (take 7 [(1::Integer),7..]) = [1,7,13,19,25,31,37]
+    (take 7 [(1::Integer),1..]) = [1,1,1,1,1,1,1]
+    (take 7 [(1::Integer),0..]) = [1,0,-1,-2,-3,-4,-5]
+    (take 7 [(5::Integer),2..]) = [5,2,-1,-4,-7,-10,-13]
+    (take 7 ([(1::Integer) .. 5])) = [1,2,3,4,5]
+    (take 4 ([(1::Integer) .. 1])) = [1]
+    (take 7 ([(1::Integer) .. 0])) = []
+    (take 7 ([(5::Integer) .. 0])) = []
+    (take 7 [(5::Integer),4..1]) = [5,4,3,2,1]
+    (take 7 [(5::Integer),3..1]) = [5,3,1]
+    (take 7 [(5::Integer),3..2]) = [5,3]
+    (take 7 [(1::Integer),2..1]) = [1]
+    (take 7 [(2::Integer),1..2]) = [2]
+    (take 7 [(2::Integer),1..1]) = [2,1]
+    (take 7 [(2::Integer),3..1]) = []
+Testing Enum Char: 
+    (succ 'a') = 'b'
+    (succ (minBound::Char)) = '\SOH'
+    (succ (maxBound::Char)) = error "Prelude.Enum.Char.succ: bad argument"
+    (pred 'b') = 'a'
+    pred (maxBound::Char) = '\1114110'
+    pred (minBound::Char) = error "Prelude.Enum.Char.pred: bad argument"
+    (map (toEnum::Int->Char) [123,ord (minBound::Char), ord(maxBound::Char)]) = "{\NUL\1114111"
+    (toEnum::Int->Char) (minBound::Int) = error "Prelude.chr: bad argument"
+    (map fromEnum ['X',minBound,maxBound]) = [88,0,1114111]
+    (take 7 ['\NUL' .. ]) = "\NUL\SOH\STX\ETX\EOT\ENQ\ACK"
+    (take 7 ['\250' .. ]) = "\250\251\252\253\254\255\256"
+    (take 7 ['a','b'..]) = "abcdefg"
+    (take 7 ['a','e'..]) = "aeimquy"
+    (take 7 ['a','a'..]) = "aaaaaaa"
+    (take 7 ['z','y'..]) = "zyxwvut"
+    (take 7 ['z','v'..]) = "zvrnjfb"
+    (take 7 ['\1', '\0' ..]) = "\SOH\NUL"
+    (take 7 ['\5', '\4' ..]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
+    (take 7 ['\250', '\251' ..]) = "\250\251\252\253\254\255\256"
+    (take 7 (['a' .. 'e'])) = "abcde"
+    (take 4 (['a' .. 'a'])) = "a"
+    (take 7 (['b' .. 'a'])) = ""
+    (take 7 (['e' .. 'a'])) = ""
+    (take 7 (['\250' .. '\255'])) = "\250\251\252\253\254\255"
+    (take 7 (['\5' .. '\0'])) = ""
+    (take 7 ['f','e' .. 'b']) = "fedcb"
+    (take 7 ['g','e' .. 'b']) = "gec"
+    (take 7 ['g','d' .. 'c']) = "gd"
+    (take 7 ['b','c' .. 'b']) = "b"
+    (take 7 ['c','b' .. 'c']) = "c"
+    (take 7 ['c','b' .. 'b']) = "cb"
+    (take 7 ['c','d' .. 'b']) = ""
+    (take 7 ['\251', '\252' .. maxBound]) = "\251\252\253\254\255\256\257"
+    (take 7 ['\5', '\4' .. minBound]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
+Testing Enum (): 
+    (succ ()) = error "Prelude.Enum.().succ: bad argment"
+    (succ (minBound::())) = error "Prelude.Enum.().succ: bad argment"
+    (succ (maxBound::())) = error "Prelude.Enum.().succ: bad argment"
+    (pred ()) = error "Prelude.Enum.().pred: bad argument"
+    (pred (minBound::())) = error "Prelude.Enum.().pred: bad argument"
+    (pred (maxBound::())) = error "Prelude.Enum.().pred: bad argument"
+    (toEnum 0)::() = ()
+    (toEnum 1)::() = error "Prelude.Enum.().toEnum: bad argument"
+    (fromEnum ()) = 0
+    ([()..]) = [()]
+    ([(),()..]) = [()]
+    ([()..()]) = [()]
+    ([(),()..()]) = [()]
+Testing Enum Ordering (derived): 
+    (succ LT) = EQ
+    (succ (minBound::Ordering)) = EQ
+    (succ (maxBound::Ordering)) = error "Prelude.Enum.Ordering.succ: bad argment"
+    (pred GT) = EQ
+    (pred (maxBound::Ordering)) = EQ
+    (pred (minBound::Ordering)) = error "Prelude.Enum.Ordering.pred: bad argment"
+    (toEnum 0)::Ordering = LT
+    (toEnum 5)::Ordering = error "Prelude.Enum.Ordering.toEnum: bad argment"
+    (fromEnum LT) = 0
+    (fromEnum EQ) = 1
+    (fromEnum GT) = 2
+    ([LT ..]) = [LT,EQ,GT]
+    ([EQ ..]) = [EQ,GT]
+    ([GT ..]) = [GT]
+    ([LT,EQ ..]) = [LT,EQ,GT]
+    ([EQ,GT ..]) = [EQ,GT]
+    ([EQ,LT ..]) = [EQ,LT]
+    ([LT,GT ..]) = [LT,GT]
+    ([GT,LT ..]) = [GT,LT]
+    take 7 (([GT,GT ..])) = [GT,GT,GT,GT,GT,GT,GT]
+    take 7 (([LT,LT ..])) = [LT,LT,LT,LT,LT,LT,LT]
+    ([LT .. GT]) = [LT,EQ,GT]
+    ([LT .. EQ]) = [LT,EQ]
+    ([LT .. LT]) = [LT]
+    ([GT .. LT]) = []
+    ([GT .. EQ]) = []
+    ([GT .. GT]) = [GT]
+    ([LT,EQ .. GT]) = [LT,EQ,GT]
+    ([GT,EQ .. LT]) = [GT,EQ,LT]
+    ([GT,EQ .. EQ]) = [GT,EQ]
+    ([GT,EQ .. GT]) = [GT]
+    ([GT,EQ .. LT]) = [GT,EQ,LT]
+    ([LT,EQ .. LT]) = [LT]
+    ([LT,EQ .. GT]) = [LT,EQ,GT]
+    take 7 (([LT,LT .. GT])) = [LT,LT,LT,LT,LT,LT,LT]
+    take 7 (([GT,GT .. LT])) = []
+Testing Enum Bool: 
+    (succ False) = True
+    (succ (minBound::Bool)) = True
+    (succ (maxBound::Bool)) = error "Prelude.Enum.Bool.succ: bad argment"
+    (pred True) = False
+    (pred (maxBound::Bool)) = False
+    (pred (minBound::Bool)) = error "Prelude.Enum.Bool.pred: bad argment"
+    (toEnum 0)::Bool = False
+    (toEnum 5)::Bool = error "Prelude.Enum.Bool.toEnum: bad argment"
+    (fromEnum False) = 0
+    (fromEnum True) = 1
+    ([False ..]) = [False,True]
+    ([True ..]) = [True]
+    ([False,True ..]) = [False,True]
+    ([True,False ..]) = [True,False]
+    (take 7 ([False,False ..])) = [False,False,False,False,False,False,False]
+    (take 7 ([True,True ..])) = [True,True,True,True,True,True,True]
+    ([False .. True]) = [False,True]
+    ([True .. False]) = []
+    take 7 ([False,False .. False]) = [False,False,False,False,False,False,False]
+    take 7 ([False,False .. True]) = [False,False,False,False,False,False,False]
+    take 7 ([False,True .. False]) = [False]
+    take 7 ([False,True .. True]) = [False,True]
+    take 7 ([True,False .. False]) = [True,False]
+    take 7 ([True,False .. True]) = [True]
+    take 7 ([True,True .. False]) = []
+    take 7 ([True,True .. True]) = [True,True,True,True,True,True,True]
+Testing Enum Rational: 
+    (succ (0::Rational)) = 1%1
+    (succ ((-1)::Rational)) = 0%1
+    pred (1::Rational) = 0%1
+    pred (0::Rational) = (-1)%1
+    (map (toEnum::Int->Rational) [1,minBound,maxBound]) = [1%1,(-9223372036854775808)%1,9223372036854775807%1]
+    (map fromEnum [(1::Rational),42,45]) = [1,42,45]
+    (take 7 [(1::Rational)..]) = [1%1,2%1,3%1,4%1,5%1,6%1,7%1]
+    (take 7 [(-5::Rational)..]) = [(-5)%1,(-4)%1,(-3)%1,(-2)%1,(-1)%1,0%1,1%1]
+    (take 7 [(1::Rational),2..]) = [1%1,2%1,3%1,4%1,5%1,6%1,7%1]
+    (take 7 [(1::Rational),7..]) = [1%1,7%1,13%1,19%1,25%1,31%1,37%1]
+    (take 7 [(1::Rational),1..]) = [1%1,1%1,1%1,1%1,1%1,1%1,1%1]
+    (take 7 [(1::Rational),0..]) = [1%1,0%1,(-1)%1,(-2)%1,(-3)%1,(-4)%1,(-5)%1]
+    (take 7 [(5::Rational),2..]) = [5%1,2%1,(-1)%1,(-4)%1,(-7)%1,(-10)%1,(-13)%1]
+    (take 7 ([(1::Rational) .. 5])) = [1%1,2%1,3%1,4%1,5%1]
+    (take 4 ([(1::Rational) .. 1])) = [1%1]
+    (take 7 ([(1::Rational) .. 0])) = []
+    (take 7 ([(5::Rational) .. 0])) = []
+    (take 7 [(5::Rational),4..1]) = [5%1,4%1,3%1,2%1,1%1]
+    (take 7 [(5::Rational),3..1]) = [5%1,3%1,1%1]
+    (take 7 [(5::Rational),3..2]) = [5%1,3%1,1%1]
+    (take 7 [(1::Rational),2..1]) = [1%1]
+    (take 7 [(2::Rational),1..2]) = [2%1]
+    (take 7 [(2::Rational),1..1]) = [2%1,1%1]
+    (take 7 [(2::Rational),3..1]) = []
+Testing Enum (Ratio Int): 
+    (succ (0::Ratio Int)) = 1%1
+    (succ ((-1)::Ratio Int)) = 0%1
+    pred (1::Ratio Int) = 0%1
+    pred (0::Ratio Int) = (-1)%1
+    (map (toEnum::Int->Ratio Int) [1,minBound,maxBound]) = [1%1,(-9223372036854775808)%1,9223372036854775807%1]
+    (map fromEnum [(1::Ratio Int),42,45]) = [1,42,45]
+    (take 7 [(1::Ratio Int)..]) = [1%1,2%1,3%1,4%1,5%1,6%1,7%1]
+    (take 7 [(-5::Ratio Int)..]) = [(-5)%1,(-4)%1,(-3)%1,(-2)%1,(-1)%1,0%1,1%1]
+    (take 7 [((toEnum ((maxBound::Int)-5))::Ratio Int)..]) = [9223372036854775802%1,9223372036854775803%1,9223372036854775804%1,9223372036854775805%1,9223372036854775806%1,9223372036854775807%1,(-9223372036854775808)%1]
+    (take 7 [(1::Ratio Int),2..]) = [1%1,2%1,3%1,4%1,5%1,6%1,7%1]
+    (take 7 [(1::Ratio Int),7..]) = [1%1,7%1,13%1,19%1,25%1,31%1,37%1]
+    (take 7 [(1::Ratio Int),1..]) = [1%1,1%1,1%1,1%1,1%1,1%1,1%1]
+    (take 7 [(1::Ratio Int),0..]) = [1%1,0%1,(-1)%1,(-2)%1,(-3)%1,(-4)%1,(-5)%1]
+    (take 7 [(5::Ratio Int),2..]) = [5%1,2%1,(-1)%1,(-4)%1,(-7)%1,(-10)%1,(-13)%1]
+    (take 7 [x, x-1 ..]) = [(-9223372036854775807)%1,(-9223372036854775808)%1,9223372036854775807%1,9223372036854775806%1,9223372036854775805%1,9223372036854775804%1,9223372036854775803%1]
+    (take 7 [x, x-1 ..]) = [(-9223372036854775803)%1,(-9223372036854775804)%1,(-9223372036854775805)%1,(-9223372036854775806)%1,(-9223372036854775807)%1,(-9223372036854775808)%1,9223372036854775807%1]
+    (take 7 [x, (x+1) ..]) = [9223372036854775802%1,9223372036854775803%1,9223372036854775804%1,9223372036854775805%1,9223372036854775806%1,9223372036854775807%1,(-9223372036854775808)%1]
+    (take 7 ([(1::Ratio Int) .. 5])) = [1%1,2%1,3%1,4%1,5%1]
+    (take 4 ([(1::Ratio Int) .. 1])) = [1%1]
+    (take 7 ([(1::Ratio Int) .. 0])) = []
+    (take 7 ([(5::Ratio Int) .. 0])) = []
+    (take 7 ([x..y])) = [9223372036854775802%1,9223372036854775803%1,9223372036854775804%1,9223372036854775805%1,9223372036854775806%1,9223372036854775807%1]
+    (take 7 ([x..y])) = []
+    (take 7 [(5::Ratio Int),4..1]) = [5%1,4%1,3%1,2%1,1%1]
+    (take 7 [(5::Ratio Int),3..1]) = [5%1,3%1,1%1]
+    (take 7 [(5::Ratio Int),3..2]) = [5%1,3%1,1%1]
+    (take 7 [(1::Ratio Int),2..1]) = [1%1]
+    (take 7 [(2::Ratio Int),1..2]) = [2%1]
+    (take 7 [(2::Ratio Int),1..1]) = [2%1,1%1]
+    (take 7 [(2::Ratio Int),3..1]) = []
+    (take 7 [x,(x+1)..y]) = [9223372036854775803%1,9223372036854775804%1,9223372036854775805%1,9223372036854775806%1,9223372036854775807%1]
+    (take 7 [x,(x-1)..y]) = [(-9223372036854775803)%1,(-9223372036854775804)%1,(-9223372036854775805)%1,(-9223372036854775806)%1,(-9223372036854775807)%1,(-9223372036854775808)%1]
diff --git a/testsuite/tests/ghc-regress/lib/should_run/enum02.stdout-ws-64 b/testsuite/tests/ghc-regress/lib/should_run/enum02.stdout-ws-64
new file mode 100644 (file)
index 0000000..3177d54
--- /dev/null
@@ -0,0 +1,141 @@
+Testing Enum Int8:
+    (succ (0::Int8)) = 1
+    (succ (minBound::Int8)) = -127
+    (succ (maxBound::Int8)) = error "Enum.succ{Int8}: tried to take `succ' of maxBound"
+    pred (1::Int8) = 0
+    pred (maxBound::Int8) = 126
+    pred (minBound::Int8) = error "Enum.pred{Int8}: tried to take `pred' of minBound"
+    (map (toEnum::Int->Int8) [1, fromIntegral (minBound::Int8), fromIntegral (maxBound::Int8)]) = [1,-128,127]
+    (toEnum (maxBound::Int))::Int8 = error "Enum.toEnum{Int8}: tag (9223372036854775807) is outside of bounds (-128,127)"
+    (map fromEnum [(1::Int8),minBound,maxBound]) = [1,-128,127]
+    (take 7 [(1::Int8)..]) = [1,2,3,4,5,6,7]
+    (take 7 [((maxBound::Int8)-5)..]) = [122,123,124,125,126,127]
+    (take 7 [(1::Int8),2..]) = [1,2,3,4,5,6,7]
+    (take 7 [(1::Int8),7..]) = [1,7,13,19,25,31,37]
+    (take 7 [(1::Int8),1..]) = [1,1,1,1,1,1,1]
+    (take 7 [(1::Int8),0..]) = [1,0,-1,-2,-3,-4,-5]
+    (take 7 [(5::Int8),2..]) = [5,2,-1,-4,-7,-10,-13]
+    (take 7 [x, x-1 ..]) = [-127,-128]
+    (take 7 [x, x-1 ..]) = [-123,-124,-125,-126,-127,-128]
+    (take 7 [x, (x+1) ..]) = [122,123,124,125,126,127]
+    (take 7 ([(1::Int8) .. 5])) = [1,2,3,4,5]
+    (take 4 ([(1::Int8) .. 1])) = [1]
+    (take 7 ([(1::Int8) .. 0])) = []
+    (take 7 ([(5::Int8) .. 0])) = []
+    (take 7 ([(maxBound-(5::Int8)) .. maxBound])) = [122,123,124,125,126,127]
+    (take 7 ([(minBound+(5::Int8)) .. minBound])) = []
+    (take 7 [(5::Int8),4..1]) = [5,4,3,2,1]
+    (take 7 [(5::Int8),3..1]) = [5,3,1]
+    (take 7 [(5::Int8),3..2]) = [5,3]
+    (take 7 [(1::Int8),2..1]) = [1]
+    (take 7 [(2::Int8),1..2]) = [2]
+    (take 7 [(2::Int8),1..1]) = [2,1]
+    (take 7 [(2::Int8),3..1]) = []
+    (take 7 [x,(x+1)..maxBound]) = [123,124,125,126,127]
+    (take 7 [x,(x-1)..minBound]) = [-123,-124,-125,-126,-127,-128]
+Testing Enum Int16:
+    (succ (0::Int16)) = 1
+    (succ (minBound::Int16)) = -32767
+    (succ (maxBound::Int16)) = error "Enum.succ{Int16}: tried to take `succ' of maxBound"
+    pred (1::Int16) = 0
+    pred (maxBound::Int16) = 32766
+    pred (minBound::Int16) = error "Enum.pred{Int16}: tried to take `pred' of minBound"
+    (map (toEnum::Int->Int16) [1, fromIntegral (minBound::Int16), fromIntegral (maxBound::Int16)]) = [1,-32768,32767]
+    (toEnum (maxBound::Int))::Int16 = error "Enum.toEnum{Int16}: tag (9223372036854775807) is outside of bounds (-32768,32767)"
+    (map fromEnum [(1::Int16),minBound,maxBound]) = [1,-32768,32767]
+    (take 7 [(1::Int16)..]) = [1,2,3,4,5,6,7]
+    (take 7 [((maxBound::Int16)-5)..]) = [32762,32763,32764,32765,32766,32767]
+    (take 7 [(1::Int16),2..]) = [1,2,3,4,5,6,7]
+    (take 7 [(1::Int16),7..]) = [1,7,13,19,25,31,37]
+    (take 7 [(1::Int16),1..]) = [1,1,1,1,1,1,1]
+    (take 7 [(1::Int16),0..]) = [1,0,-1,-2,-3,-4,-5]
+    (take 7 [(5::Int16),2..]) = [5,2,-1,-4,-7,-10,-13]
+    (take 7 [x, x-1 ..]) = [-32767,-32768]
+    (take 7 [x, x-1 ..]) = [-32763,-32764,-32765,-32766,-32767,-32768]
+    (take 7 [x, (x+1) ..]) = [32762,32763,32764,32765,32766,32767]
+    (take 7 ([(1::Int16) .. 5])) = [1,2,3,4,5]
+    (take 4 ([(1::Int16) .. 1])) = [1]
+    (take 7 ([(1::Int16) .. 0])) = []
+    (take 7 ([(5::Int16) .. 0])) = []
+    (take 7 ([(maxBound-(5::Int16)) .. maxBound])) = [32762,32763,32764,32765,32766,32767]
+    (take 7 ([(minBound+(5::Int16)) .. minBound])) = []
+    (take 7 [(5::Int16),4..1]) = [5,4,3,2,1]
+    (take 7 [(5::Int16),3..1]) = [5,3,1]
+    (take 7 [(5::Int16),3..2]) = [5,3]
+    (take 7 [(1::Int16),2..1]) = [1]
+    (take 7 [(2::Int16),1..2]) = [2]
+    (take 7 [(2::Int16),1..1]) = [2,1]
+    (take 7 [(2::Int16),3..1]) = []
+    (take 7 [x,(x+1)..maxBound]) = [32763,32764,32765,32766,32767]
+    (take 7 [x,(x-1)..minBound]) = [-32763,-32764,-32765,-32766,-32767,-32768]
+Testing Enum Int32:
+    (succ (0::Int32)) = 1
+    (succ (minBound::Int32)) = -2147483647
+    (succ (maxBound::Int32)) = error "Enum.succ{Int32}: tried to take `succ' of maxBound"
+    pred (1::Int32) = 0
+    pred (maxBound::Int32) = 2147483646
+    pred (minBound::Int32) = error "Enum.pred{Int32}: tried to take `pred' of minBound"
+    (map (toEnum::Int->Int32) [1, fromIntegral (minBound::Int32), fromIntegral (maxBound::Int32)]) = [1,-2147483648,2147483647]
+    (toEnum (maxBound::Int))::Int32 = error "Enum.toEnum{Int32}: tag (9223372036854775807) is outside of bounds (-2147483648,2147483647)"
+    (map fromEnum [(1::Int32),minBound,maxBound]) = [1,-2147483648,2147483647]
+    (take 7 [(1::Int32)..]) = [1,2,3,4,5,6,7]
+    (take 7 [((maxBound::Int32)-5)..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
+    (take 7 [(1::Int32),2..]) = [1,2,3,4,5,6,7]
+    (take 7 [(1::Int32),7..]) = [1,7,13,19,25,31,37]
+    (take 7 [(1::Int32),1..]) = [1,1,1,1,1,1,1]
+    (take 7 [(1::Int32),0..]) = [1,0,-1,-2,-3,-4,-5]
+    (take 7 [(5::Int32),2..]) = [5,2,-1,-4,-7,-10,-13]
+    (take 7 [x, x-1 ..]) = [-2147483647,-2147483648]
+    (take 7 [x, x-1 ..]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
+    (take 7 [x, (x+1) ..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
+    (take 7 ([(1::Int32) .. 5])) = [1,2,3,4,5]
+    (take 4 ([(1::Int32) .. 1])) = [1]
+    (take 7 ([(1::Int32) .. 0])) = []
+    (take 7 ([(5::Int32) .. 0])) = []
+    (take 7 ([(maxBound-(5::Int32)) .. maxBound])) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
+    (take 7 ([(minBound+(5::Int32)) .. minBound])) = []
+    (take 7 [(5::Int32),4..1]) = [5,4,3,2,1]
+    (take 7 [(5::Int32),3..1]) = [5,3,1]
+    (take 7 [(5::Int32),3..2]) = [5,3]
+    (take 7 [(1::Int32),2..1]) = [1]
+    (take 7 [(2::Int32),1..2]) = [2]
+    (take 7 [(2::Int32),1..1]) = [2,1]
+    (take 7 [(2::Int32),3..1]) = []
+    (take 7 [x,(x+1)..maxBound]) = [2147483643,2147483644,2147483645,2147483646,2147483647]
+    (take 7 [x,(x-1)..minBound]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
+Testing Enum Int64:
+    (succ (0::Int64)) = 1
+    (succ (minBound::Int64)) = -9223372036854775807
+    (succ (maxBound::Int64)) = error "Enum.succ{Int64}: tried to take `succ' of maxBound"
+    pred (1::Int64) = 0
+    pred (maxBound::Int64) = 9223372036854775806
+    pred (minBound::Int64) = error "Enum.pred{Int64}: tried to take `pred' of minBound"
+    (map (toEnum::Int->Int64) [1, fromIntegral (minBound::Int64), fromIntegral (maxBound::Int64)]) = [1,-9223372036854775808,9223372036854775807]
+    (toEnum (maxBound::Int))::Int64 = 9223372036854775807
+    (map fromEnum [(1::Int64),fromIntegral (minBound::Int) ,fromIntegral (maxBound::Int)]) = [1,-9223372036854775808,9223372036854775807]
+    fromEnum (maxBound::Int64) = 9223372036854775807
+    (take 7 [(1::Int64)..]) = [1,2,3,4,5,6,7]
+    (take 7 [((maxBound::Int64)-5)..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
+    (take 7 [(1::Int64),2..]) = [1,2,3,4,5,6,7]
+    (take 7 [(1::Int64),7..]) = [1,7,13,19,25,31,37]
+    (take 7 [(1::Int64),1..]) = [1,1,1,1,1,1,1]
+    (take 7 [(1::Int64),0..]) = [1,0,-1,-2,-3,-4,-5]
+    (take 7 [(5::Int64),2..]) = [5,2,-1,-4,-7,-10,-13]
+    (take 7 [x, x-1 ..]) = [-9223372036854775807,-9223372036854775808]
+    (take 7 [x, x-1 ..]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
+    (take 7 [x, (x+1) ..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
+    (take 7 ([(1::Int64) .. 5])) = [1,2,3,4,5]
+    (take 4 ([(1::Int64) .. 1])) = [1]
+    (take 7 ([(1::Int64) .. 0])) = []
+    (take 7 ([(5::Int64) .. 0])) = []
+    (take 7 ([(maxBound-(5::Int64)) .. maxBound])) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
+    (take 7 ([(minBound+(5::Int64)) .. minBound])) = []
+    (take 7 [(5::Int64),4..1]) = [5,4,3,2,1]
+    (take 7 [(5::Int64),3..1]) = [5,3,1]
+    (take 7 [(5::Int64),3..2]) = [5,3]
+    (take 7 [(1::Int64),2..1]) = [1]
+    (take 7 [(2::Int64),1..2]) = [2]
+    (take 7 [(2::Int64),1..1]) = [2,1]
+    (take 7 [(2::Int64),3..1]) = []
+    (take 7 [x,(x+1)..maxBound]) = [9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
+    (take 7 [x,(x-1)..minBound]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
diff --git a/testsuite/tests/ghc-regress/lib/should_run/enum03.stdout-ws-64 b/testsuite/tests/ghc-regress/lib/should_run/enum03.stdout-ws-64
new file mode 100644 (file)
index 0000000..716782c
--- /dev/null
@@ -0,0 +1,142 @@
+Testing Enum Word8:
+    (succ (0::Word8)) = 1
+    (succ (minBound::Word8)) = 1
+    (succ (maxBound::Word8)) = error "Enum.succ{Word8}: tried to take `succ' of maxBound"
+    pred (1::Word8) = 0
+    pred (maxBound::Word8) = 254
+    pred (minBound::Word8) = error "Enum.pred{Word8}: tried to take `pred' of minBound"
+    (map (toEnum::Int->Word8) [1, fromIntegral (minBound::Word8)::Int, fromIntegral (maxBound::Word8)::Int]) = [1,0,255]
+    (toEnum (maxBound::Int))::Word8 = error "Enum.toEnum{Word8}: tag (9223372036854775807) is outside of bounds (0,255)"
+    (map fromEnum [(1::Word8),minBound,maxBound]) = [1,0,255]
+    (take 7 [(1::Word8)..]) = [1,2,3,4,5,6,7]
+    (take 7 [((maxBound::Word8)-5)..]) = [250,251,252,253,254,255]
+    (take 7 [(1::Word8),2..]) = [1,2,3,4,5,6,7]
+    (take 7 [(1::Word8),7..]) = [1,7,13,19,25,31,37]
+    (take 7 [(1::Word8),1..]) = [1,1,1,1,1,1,1]
+    (take 7 [(1::Word8),0..]) = [1,0]
+    (take 7 [(5::Word8),2..]) = [5,2]
+    (take 7 [x, x-1 ..]) = [1,0]
+    (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
+    (take 7 [x, (x+1) ..]) = [250,251,252,253,254,255]
+    (take 7 ([(1::Word8) .. 5])) = [1,2,3,4,5]
+    (take 4 ([(1::Word8) .. 1])) = [1]
+    (take 7 ([(1::Word8) .. 0])) = []
+    (take 7 ([(5::Word8) .. 0])) = []
+    (take 7 ([(maxBound-(5::Word8)) .. maxBound])) = [250,251,252,253,254,255]
+    (take 7 ([(minBound+(5::Word8)) .. minBound])) = []
+    (take 7 [(5::Word8),4..1]) = [5,4,3,2,1]
+    (take 7 [(5::Word8),3..1]) = [5,3,1]
+    (take 7 [(5::Word8),3..2]) = [5,3]
+    (take 7 [(1::Word8),2..1]) = [1]
+    (take 7 [(2::Word8),1..2]) = [2]
+    (take 7 [(2::Word8),1..1]) = [2,1]
+    (take 7 [(2::Word8),3..1]) = []
+    (take 7 [x,(x+1)..maxBound]) = [251,252,253,254,255]
+    (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
+Testing Enum Word16:
+    (succ (0::Word16)) = 1
+    (succ (minBound::Word16)) = 1
+    (succ (maxBound::Word16)) = error "Enum.succ{Word16}: tried to take `succ' of maxBound"
+    pred (1::Word16) = 0
+    pred (maxBound::Word16) = 65534
+    pred (minBound::Word16) = error "Enum.pred{Word16}: tried to take `pred' of minBound"
+    (map (toEnum::Int->Word16) [1, fromIntegral (minBound::Word16)::Int, fromIntegral (maxBound::Word16)::Int]) = [1,0,65535]
+    (toEnum (maxBound::Int))::Word16 = error "Enum.toEnum{Word16}: tag (9223372036854775807) is outside of bounds (0,65535)"
+    (map fromEnum [(1::Word16),minBound,maxBound]) = [1,0,65535]
+    (take 7 [(1::Word16)..]) = [1,2,3,4,5,6,7]
+    (take 7 [((maxBound::Word16)-5)..]) = [65530,65531,65532,65533,65534,65535]
+    (take 7 [(1::Word16),2..]) = [1,2,3,4,5,6,7]
+    (take 7 [(1::Word16),7..]) = [1,7,13,19,25,31,37]
+    (take 7 [(1::Word16),1..]) = [1,1,1,1,1,1,1]
+    (take 7 [(1::Word16),0..]) = [1,0]
+    (take 7 [(5::Word16),2..]) = [5,2]
+    (take 7 [x, x-1 ..]) = [1,0]
+    (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
+    (take 7 [x, (x+1) ..]) = [65530,65531,65532,65533,65534,65535]
+    (take 7 ([(1::Word16) .. 5])) = [1,2,3,4,5]
+    (take 4 ([(1::Word16) .. 1])) = [1]
+    (take 7 ([(1::Word16) .. 0])) = []
+    (take 7 ([(5::Word16) .. 0])) = []
+    (take 7 ([(maxBound-(5::Word16)) .. maxBound])) = [65530,65531,65532,65533,65534,65535]
+    (take 7 ([(minBound+(5::Word16)) .. minBound])) = []
+    (take 7 [(5::Word16),4..1]) = [5,4,3,2,1]
+    (take 7 [(5::Word16),3..1]) = [5,3,1]
+    (take 7 [(5::Word16),3..2]) = [5,3]
+    (take 7 [(1::Word16),2..1]) = [1]
+    (take 7 [(2::Word16),1..2]) = [2]
+    (take 7 [(2::Word16),1..1]) = [2,1]
+    (take 7 [(2::Word16),3..1]) = []
+    (take 7 [x,(x+1)..maxBound]) = [65531,65532,65533,65534,65535]
+    (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
+Testing Enum Word32:
+    (succ (0::Word32)) = 1
+    (succ (minBound::Word32)) = 1
+    (succ (maxBound::Word32)) = error "Enum.succ{Word32}: tried to take `succ' of maxBound"
+    pred (1::Word32) = 0
+    pred (maxBound::Word32) = 4294967294
+    pred (minBound::Word32) = error "Enum.pred{Word32}: tried to take `pred' of minBound"
+    (map (toEnum::Int->Word32) [1, fromIntegral (minBound::Word32)::Int, fromIntegral (maxBound::Int32)::Int]) = [1,0,2147483647]
+    (toEnum (maxBound::Int))::Word32 = error "Enum.toEnum{Word32}: tag (9223372036854775807) is outside of bounds (0,4294967295)"
+    (map fromEnum [(1::Word32),minBound,fromIntegral (maxBound::Int)]) = [1,0,4294967295]
+    fromEnum (maxBound::Word32) = 4294967295
+    (take 7 [(1::Word32)..]) = [1,2,3,4,5,6,7]
+    (take 7 [((maxBound::Word32)-5)..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
+    (take 7 [(1::Word32),2..]) = [1,2,3,4,5,6,7]
+    (take 7 [(1::Word32),7..]) = [1,7,13,19,25,31,37]
+    (take 7 [(1::Word32),1..]) = [1,1,1,1,1,1,1]
+    (take 7 [(1::Word32),0..]) = [1,0]
+    (take 7 [(5::Word32),2..]) = [5,2]
+    (take 7 [x, x-1 ..]) = [1,0]
+    (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
+    (take 7 [x, (x+1) ..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
+    (take 7 ([(1::Word32) .. 5])) = [1,2,3,4,5]
+    (take 4 ([(1::Word32) .. 1])) = [1]
+    (take 7 ([(1::Word32) .. 0])) = []
+    (take 7 ([(5::Word32) .. 0])) = []
+    (take 7 ([(maxBound-(5::Word32)) .. maxBound])) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
+    (take 7 ([(minBound+(5::Word32)) .. minBound])) = []
+    (take 7 [(5::Word32),4..1]) = [5,4,3,2,1]
+    (take 7 [(5::Word32),3..1]) = [5,3,1]
+    (take 7 [(5::Word32),3..2]) = [5,3]
+    (take 7 [(1::Word32),2..1]) = [1]
+    (take 7 [(2::Word32),1..2]) = [2]
+    (take 7 [(2::Word32),1..1]) = [2,1]
+    (take 7 [(2::Word32),3..1]) = []
+    (take 7 [x,(x+1)..maxBound]) = [4294967291,4294967292,4294967293,4294967294,4294967295]
+    (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
+Testing Enum Word64:
+    (succ (0::Word64)) = 1
+    (succ (minBound::Word64)) = 1
+    (succ (maxBound::Word64)) = error "Enum.succ{Word64}: tried to take `succ' of maxBound"
+    pred (1::Word64) = 0
+    pred (maxBound::Word64) = 18446744073709551614
+    pred (minBound::Word64) = error "Enum.pred{Word64}: tried to take `pred' of minBound"
+    (map (toEnum::Int->Word64) [1, fromIntegral (minBound::Word64)::Int, maxBound::Int]) = [1,0,9223372036854775807]
+    (toEnum (maxBound::Int))::Word64 = 9223372036854775807
+    (map fromEnum [(1::Word64),minBound,fromIntegral (maxBound::Int)]) = [1,0,9223372036854775807]
+    fromEnum (maxBound::Word64) = error "Enum.fromEnum{Word64}: value (18446744073709551615) is outside of Int's bounds (-9223372036854775808,9223372036854775807)"
+    (take 7 [(1::Word64)..]) = [1,2,3,4,5,6,7]
+    (take 7 [((maxBound::Word64)-5)..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
+    (take 7 [(1::Word64),2..]) = [1,2,3,4,5,6,7]
+    (take 7 [(1::Word64),7..]) = [1,7,13,19,25,31,37]
+    (take 7 [(1::Word64),1..]) = [1,1,1,1,1,1,1]
+    (take 7 [(1::Word64),0..]) = [1,0]
+    (take 7 [(5::Word64),2..]) = [5,2]
+    (take 7 [x, x-1 ..]) = [1,0]
+    (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
+    (take 7 [x, (x+1) ..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
+    (take 7 ([(1::Word64) .. 5])) = [1,2,3,4,5]
+    (take 4 ([(1::Word64) .. 1])) = [1]
+    (take 7 ([(1::Word64) .. 0])) = []
+    (take 7 ([(5::Word64) .. 0])) = []
+    (take 7 ([(maxBound-(5::Word64)) .. maxBound])) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
+    (take 7 ([(minBound+(5::Word64)) .. minBound])) = []
+    (take 7 [(5::Word64),4..1]) = [5,4,3,2,1]
+    (take 7 [(5::Word64),3..1]) = [5,3,1]
+    (take 7 [(5::Word64),3..2]) = [5,3]
+    (take 7 [(1::Word64),2..1]) = [1]
+    (take 7 [(2::Word64),1..2]) = [2]
+    (take 7 [(2::Word64),1..1]) = [2,1]
+    (take 7 [(2::Word64),3..1]) = []
+    (take 7 [x,(x+1)..maxBound]) = [18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
+    (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
diff --git a/testsuite/tests/ghc-regress/numeric/should_run/arith003.stdout-ws-64 b/testsuite/tests/ghc-regress/numeric/should_run/arith003.stdout-ws-64
new file mode 100644 (file)
index 0000000..9ea4a0f
--- /dev/null
@@ -0,0 +1,1053 @@
+(+) 0 0 = 0
+(+) 0 1 = 1
+(+) 0 -1 = -1
+(+) 0 2 = 2
+(+) 0 -2 = -2
+(+) 0 -9223372036854775808 = -9223372036854775808
+(+) 0 9223372036854775807 = 9223372036854775807
+(+) 1 0 = 1
+(+) 1 1 = 2
+(+) 1 -1 = 0
+(+) 1 2 = 3
+(+) 1 -2 = -1
+(+) 1 -9223372036854775808 = -9223372036854775807
+(+) 1 9223372036854775807 = -9223372036854775808
+(+) -1 0 = -1
+(+) -1 1 = 0
+(+) -1 -1 = -2
+(+) -1 2 = 1
+(+) -1 -2 = -3
+(+) -1 -9223372036854775808 = 9223372036854775807
+(+) -1 9223372036854775807 = 9223372036854775806
+(+) 2 0 = 2
+(+) 2 1 = 3
+(+) 2 -1 = 1
+(+) 2 2 = 4
+(+) 2 -2 = 0
+(+) 2 -9223372036854775808 = -9223372036854775806
+(+) 2 9223372036854775807 = -9223372036854775807
+(+) -2 0 = -2
+(+) -2 1 = -1
+(+) -2 -1 = -3
+(+) -2 2 = 0
+(+) -2 -2 = -4
+(+) -2 -9223372036854775808 = 9223372036854775806
+(+) -2 9223372036854775807 = 9223372036854775805
+(+) -9223372036854775808 0 = -9223372036854775808
+(+) -9223372036854775808 1 = -9223372036854775807
+(+) -9223372036854775808 -1 = 9223372036854775807
+(+) -9223372036854775808 2 = -9223372036854775806
+(+) -9223372036854775808 -2 = 9223372036854775806
+(+) -9223372036854775808 -9223372036854775808 = 0
+(+) -9223372036854775808 9223372036854775807 = -1
+(+) 9223372036854775807 0 = 9223372036854775807
+(+) 9223372036854775807 1 = -9223372036854775808
+(+) 9223372036854775807 -1 = 9223372036854775806
+(+) 9223372036854775807 2 = -9223372036854775807
+(+) 9223372036854775807 -2 = 9223372036854775805
+(+) 9223372036854775807 -9223372036854775808 = -1
+(+) 9223372036854775807 9223372036854775807 = -2
+(-) 0 0 = 0
+(-) 0 1 = -1
+(-) 0 -1 = 1
+(-) 0 2 = -2
+(-) 0 -2 = 2
+(-) 0 -9223372036854775808 = -9223372036854775808
+(-) 0 9223372036854775807 = -9223372036854775807
+(-) 1 0 = 1
+(-) 1 1 = 0
+(-) 1 -1 = 2
+(-) 1 2 = -1
+(-) 1 -2 = 3
+(-) 1 -9223372036854775808 = -9223372036854775807
+(-) 1 9223372036854775807 = -9223372036854775806
+(-) -1 0 = -1
+(-) -1 1 = -2
+(-) -1 -1 = 0
+(-) -1 2 = -3
+(-) -1 -2 = 1
+(-) -1 -9223372036854775808 = 9223372036854775807
+(-) -1 9223372036854775807 = -9223372036854775808
+(-) 2 0 = 2
+(-) 2 1 = 1
+(-) 2 -1 = 3
+(-) 2 2 = 0
+(-) 2 -2 = 4
+(-) 2 -9223372036854775808 = -9223372036854775806
+(-) 2 9223372036854775807 = -9223372036854775805
+(-) -2 0 = -2
+(-) -2 1 = -3
+(-) -2 -1 = -1
+(-) -2 2 = -4
+(-) -2 -2 = 0
+(-) -2 -9223372036854775808 = 9223372036854775806
+(-) -2 9223372036854775807 = 9223372036854775807
+(-) -9223372036854775808 0 = -9223372036854775808
+(-) -9223372036854775808 1 = 9223372036854775807
+(-) -9223372036854775808 -1 = -9223372036854775807
+(-) -9223372036854775808 2 = 9223372036854775806
+(-) -9223372036854775808 -2 = -9223372036854775806
+(-) -9223372036854775808 -9223372036854775808 = 0
+(-) -9223372036854775808 9223372036854775807 = 1
+(-) 9223372036854775807 0 = 9223372036854775807
+(-) 9223372036854775807 1 = 9223372036854775806
+(-) 9223372036854775807 -1 = -9223372036854775808
+(-) 9223372036854775807 2 = 9223372036854775805
+(-) 9223372036854775807 -2 = -9223372036854775807
+(-) 9223372036854775807 -9223372036854775808 = -1
+(-) 9223372036854775807 9223372036854775807 = 0
+(^) 0 0 = 1
+(^) 0 1 = 0
+(^) 0 2 = 0
+(^) 1 0 = 1
+(^) 1 1 = 1
+(^) 1 2 = 1
+(^) -1 0 = 1
+(^) -1 1 = -1
+(^) -1 2 = 1
+(^) 2 0 = 1
+(^) 2 1 = 2
+(^) 2 2 = 4
+(^) -2 0 = 1
+(^) -2 1 = -2
+(^) -2 2 = 4
+(^) -9223372036854775808 0 = 1
+(^) -9223372036854775808 1 = -9223372036854775808
+(^) -9223372036854775808 2 = 0
+(^) 9223372036854775807 0 = 1
+(^) 9223372036854775807 1 = 9223372036854775807
+(^) 9223372036854775807 2 = 1
+div 0 1 = 0
+div 0 -1 = 0
+div 0 2 = 0
+div 0 -2 = 0
+div 0 -9223372036854775808 = 0
+div 0 9223372036854775807 = 0
+div 1 1 = 1
+div 1 -1 = -1
+div 1 2 = 0
+div 1 -2 = -1
+div 1 -9223372036854775808 = -1
+div 1 9223372036854775807 = 0
+div -1 1 = -1
+div -1 -1 = 1
+div -1 2 = -1
+div -1 -2 = 0
+div -1 -9223372036854775808 = 0
+div -1 9223372036854775807 = -1
+div 2 1 = 2
+div 2 -1 = -2
+div 2 2 = 1
+div 2 -2 = -1
+div 2 -9223372036854775808 = -1
+div 2 9223372036854775807 = 0
+div -2 1 = -2
+div -2 -1 = 2
+div -2 2 = -1
+div -2 -2 = 1
+div -2 -9223372036854775808 = 0
+div -2 9223372036854775807 = -1
+div 9223372036854775807 1 = 9223372036854775807
+div 9223372036854775807 -1 = -9223372036854775807
+div 9223372036854775807 2 = 4611686018427387903
+div 9223372036854775807 -2 = -4611686018427387904
+div 9223372036854775807 -9223372036854775808 = -1
+div 9223372036854775807 9223372036854775807 = 1
+mod 0 1 = 0
+mod 0 -1 = 0
+mod 0 2 = 0
+mod 0 -2 = 0
+mod 0 -9223372036854775808 = 0
+mod 0 9223372036854775807 = 0
+mod 1 1 = 0
+mod 1 -1 = 0
+mod 1 2 = 1
+mod 1 -2 = -1
+mod 1 -9223372036854775808 = -9223372036854775807
+mod 1 9223372036854775807 = 1
+mod -1 1 = 0
+mod -1 -1 = 0
+mod -1 2 = 1
+mod -1 -2 = -1
+mod -1 -9223372036854775808 = -1
+mod -1 9223372036854775807 = 9223372036854775806
+mod 2 1 = 0
+mod 2 -1 = 0
+mod 2 2 = 0
+mod 2 -2 = 0
+mod 2 -9223372036854775808 = -9223372036854775806
+mod 2 9223372036854775807 = 2
+mod -2 1 = 0
+mod -2 -1 = 0
+mod -2 2 = 0
+mod -2 -2 = 0
+mod -2 -9223372036854775808 = -2
+mod -2 9223372036854775807 = 9223372036854775805
+mod 9223372036854775807 1 = 0
+mod 9223372036854775807 -1 = 0
+mod 9223372036854775807 2 = 1
+mod 9223372036854775807 -2 = -1
+mod 9223372036854775807 -9223372036854775808 = -1
+mod 9223372036854775807 9223372036854775807 = 0
+quot 0 1 = 0
+quot 0 -1 = 0
+quot 0 2 = 0
+quot 0 -2 = 0
+quot 0 -9223372036854775808 = 0
+quot 0 9223372036854775807 = 0
+quot 1 1 = 1
+quot 1 -1 = -1
+quot 1 2 = 0
+quot 1 -2 = 0
+quot 1 -9223372036854775808 = 0
+quot 1 9223372036854775807 = 0
+quot -1 1 = -1
+quot -1 -1 = 1
+quot -1 2 = 0
+quot -1 -2 = 0
+quot -1 -9223372036854775808 = 0
+quot -1 9223372036854775807 = 0
+quot 2 1 = 2
+quot 2 -1 = -2
+quot 2 2 = 1
+quot 2 -2 = -1
+quot 2 -9223372036854775808 = 0
+quot 2 9223372036854775807 = 0
+quot -2 1 = -2
+quot -2 -1 = 2
+quot -2 2 = -1
+quot -2 -2 = 1
+quot -2 -9223372036854775808 = 0
+quot -2 9223372036854775807 = 0
+quot 9223372036854775807 1 = 9223372036854775807
+quot 9223372036854775807 -1 = -9223372036854775807
+quot 9223372036854775807 2 = 4611686018427387903
+quot 9223372036854775807 -2 = -4611686018427387903
+quot 9223372036854775807 -9223372036854775808 = 0
+quot 9223372036854775807 9223372036854775807 = 1
+rem 0 1 = 0
+rem 0 -1 = 0
+rem 0 2 = 0
+rem 0 -2 = 0
+rem 0 -9223372036854775808 = 0
+rem 0 9223372036854775807 = 0
+rem 1 1 = 0
+rem 1 -1 = 0
+rem 1 2 = 1
+rem 1 -2 = 1
+rem 1 -9223372036854775808 = 1
+rem 1 9223372036854775807 = 1
+rem -1 1 = 0
+rem -1 -1 = 0
+rem -1 2 = -1
+rem -1 -2 = -1
+rem -1 -9223372036854775808 = -1
+rem -1 9223372036854775807 = -1
+rem 2 1 = 0
+rem 2 -1 = 0
+rem 2 2 = 0
+rem 2 -2 = 0
+rem 2 -9223372036854775808 = 2
+rem 2 9223372036854775807 = 2
+rem -2 1 = 0
+rem -2 -1 = 0
+rem -2 2 = 0
+rem -2 -2 = 0
+rem -2 -9223372036854775808 = -2
+rem -2 9223372036854775807 = -2
+rem 9223372036854775807 1 = 0
+rem 9223372036854775807 -1 = 0
+rem 9223372036854775807 2 = 1
+rem 9223372036854775807 -2 = 1
+rem 9223372036854775807 -9223372036854775808 = 9223372036854775807
+rem 9223372036854775807 9223372036854775807 = 0
+gcd 0 1 = 1
+gcd 0 -1 = 1
+gcd 0 2 = 2
+gcd 0 -2 = 2
+gcd 0 9223372036854775807 = 9223372036854775807
+gcd 1 0 = 1
+gcd 1 1 = 1
+gcd 1 -1 = 1
+gcd 1 2 = 1
+gcd 1 -2 = 1
+gcd 1 9223372036854775807 = 1
+gcd -1 0 = 1
+gcd -1 1 = 1
+gcd -1 -1 = 1
+gcd -1 2 = 1
+gcd -1 -2 = 1
+gcd -1 9223372036854775807 = 1
+gcd 2 0 = 2
+gcd 2 1 = 1
+gcd 2 -1 = 1
+gcd 2 2 = 2
+gcd 2 -2 = 2
+gcd 2 9223372036854775807 = 1
+gcd -2 0 = 2
+gcd -2 1 = 1
+gcd -2 -1 = 1
+gcd -2 2 = 2
+gcd -2 -2 = 2
+gcd -2 9223372036854775807 = 1
+gcd 9223372036854775807 0 = 9223372036854775807
+gcd 9223372036854775807 1 = 1
+gcd 9223372036854775807 -1 = 1
+gcd 9223372036854775807 2 = 1
+gcd 9223372036854775807 -2 = 1
+gcd 9223372036854775807 9223372036854775807 = 9223372036854775807
+lcm 0 1 = 0
+lcm 0 -1 = 0
+lcm 0 2 = 0
+lcm 0 -2 = 0
+lcm 0 -9223372036854775808 = 0
+lcm 1 0 = 0
+lcm 1 1 = 1
+lcm 1 -1 = 1
+lcm 1 2 = 2
+lcm 1 -2 = 2
+lcm 1 -9223372036854775808 = -9223372036854775808
+lcm -1 0 = 0
+lcm -1 1 = 1
+lcm -1 -1 = 1
+lcm -1 2 = 2
+lcm -1 -2 = 2
+lcm -1 -9223372036854775808 = -9223372036854775808
+lcm 2 0 = 0
+lcm 2 1 = 2
+lcm 2 -1 = 2
+lcm 2 2 = 2
+lcm 2 -2 = 2
+lcm 2 -9223372036854775808 = -9223372036854775808
+lcm -2 0 = 0
+lcm -2 1 = 2
+lcm -2 -1 = 2
+lcm -2 2 = 2
+lcm -2 -2 = 2
+lcm -2 -9223372036854775808 = -9223372036854775808
+lcm -9223372036854775808 0 = 0
+lcm -9223372036854775808 1 = -9223372036854775808
+lcm -9223372036854775808 -1 = -9223372036854775808
+lcm -9223372036854775808 2 = -9223372036854775808
+lcm -9223372036854775808 -2 = -9223372036854775808
+lcm -9223372036854775808 -9223372036854775808 = -9223372036854775808
+lcm 9223372036854775807 0 = 0
+lcm 9223372036854775807 1 = 9223372036854775807
+lcm 9223372036854775807 -1 = 9223372036854775807
+lcm 9223372036854775807 2 = 2
+lcm 9223372036854775807 -2 = 2
+lcm 9223372036854775807 -9223372036854775808 = -9223372036854775808
+(+) 0 0 = 0
+(+) 0 1 = 1
+(+) 0 -1 = -1
+(+) 0 2 = 2
+(+) 0 -2 = -2
+(+) 0 -9223372036854775808 = -9223372036854775808
+(+) 0 9223372036854775807 = 9223372036854775807
+(+) 0 -9223372036854775809 = -9223372036854775809
+(+) 0 9223372036854775808 = 9223372036854775808
+(+) 0 0 = 0
+(+) 0 18446744073709551614 = 18446744073709551614
+(+) 0 0 = 0
+(+) 0 85070591730234615847396907784232501249 = 85070591730234615847396907784232501249
+(+) 1 0 = 1
+(+) 1 1 = 2
+(+) 1 -1 = 0
+(+) 1 2 = 3
+(+) 1 -2 = -1
+(+) 1 -9223372036854775808 = -9223372036854775807
+(+) 1 9223372036854775807 = 9223372036854775808
+(+) 1 -9223372036854775809 = -9223372036854775808
+(+) 1 9223372036854775808 = 9223372036854775809
+(+) 1 0 = 1
+(+) 1 18446744073709551614 = 18446744073709551615
+(+) 1 0 = 1
+(+) 1 85070591730234615847396907784232501249 = 85070591730234615847396907784232501250
+(+) -1 0 = -1
+(+) -1 1 = 0
+(+) -1 -1 = -2
+(+) -1 2 = 1
+(+) -1 -2 = -3
+(+) -1 -9223372036854775808 = -9223372036854775809
+(+) -1 9223372036854775807 = 9223372036854775806
+(+) -1 -9223372036854775809 = -9223372036854775810
+(+) -1 9223372036854775808 = 9223372036854775807
+(+) -1 0 = -1
+(+) -1 18446744073709551614 = 18446744073709551613
+(+) -1 0 = -1
+(+) -1 85070591730234615847396907784232501249 = 85070591730234615847396907784232501248
+(+) 2 0 = 2
+(+) 2 1 = 3
+(+) 2 -1 = 1
+(+) 2 2 = 4
+(+) 2 -2 = 0
+(+) 2 -9223372036854775808 = -9223372036854775806
+(+) 2 9223372036854775807 = 9223372036854775809
+(+) 2 -9223372036854775809 = -9223372036854775807
+(+) 2 9223372036854775808 = 9223372036854775810
+(+) 2 0 = 2
+(+) 2 18446744073709551614 = 18446744073709551616
+(+) 2 0 = 2
+(+) 2 85070591730234615847396907784232501249 = 85070591730234615847396907784232501251
+(+) -2 0 = -2
+(+) -2 1 = -1
+(+) -2 -1 = -3
+(+) -2 2 = 0
+(+) -2 -2 = -4
+(+) -2 -9223372036854775808 = -9223372036854775810
+(+) -2 9223372036854775807 = 9223372036854775805
+(+) -2 -9223372036854775809 = -9223372036854775811
+(+) -2 9223372036854775808 = 9223372036854775806
+(+) -2 0 = -2
+(+) -2 18446744073709551614 = 18446744073709551612
+(+) -2 0 = -2
+(+) -2 85070591730234615847396907784232501249 = 85070591730234615847396907784232501247
+(+) -9223372036854775808 0 = -9223372036854775808
+(+) -9223372036854775808 1 = -9223372036854775807
+(+) -9223372036854775808 -1 = -9223372036854775809
+(+) -9223372036854775808 2 = -9223372036854775806
+(+) -9223372036854775808 -2 = -9223372036854775810
+(+) -9223372036854775808 -9223372036854775808 = -18446744073709551616
+(+) -9223372036854775808 9223372036854775807 = -1
+(+) -9223372036854775808 -9223372036854775809 = -18446744073709551617
+(+) -9223372036854775808 9223372036854775808 = 0
+(+) -9223372036854775808 0 = -9223372036854775808
+(+) -9223372036854775808 18446744073709551614 = 9223372036854775806
+(+) -9223372036854775808 0 = -9223372036854775808
+(+) -9223372036854775808 85070591730234615847396907784232501249 = 85070591730234615838173535747377725441
+(+) 9223372036854775807 0 = 9223372036854775807
+(+) 9223372036854775807 1 = 9223372036854775808
+(+) 9223372036854775807 -1 = 9223372036854775806
+(+) 9223372036854775807 2 = 9223372036854775809
+(+) 9223372036854775807 -2 = 9223372036854775805
+(+) 9223372036854775807 -9223372036854775808 = -1
+(+) 9223372036854775807 9223372036854775807 = 18446744073709551614
+(+) 9223372036854775807 -9223372036854775809 = -2
+(+) 9223372036854775807 9223372036854775808 = 18446744073709551615
+(+) 9223372036854775807 0 = 9223372036854775807
+(+) 9223372036854775807 18446744073709551614 = 27670116110564327421
+(+) 9223372036854775807 0 = 9223372036854775807
+(+) 9223372036854775807 85070591730234615847396907784232501249 = 85070591730234615856620279821087277056
+(+) -9223372036854775809 0 = -9223372036854775809
+(+) -9223372036854775809 1 = -9223372036854775808
+(+) -9223372036854775809 -1 = -9223372036854775810
+(+) -9223372036854775809 2 = -9223372036854775807
+(+) -9223372036854775809 -2 = -9223372036854775811
+(+) -9223372036854775809 -9223372036854775808 = -18446744073709551617
+(+) -9223372036854775809 9223372036854775807 = -2
+(+) -9223372036854775809 -9223372036854775809 = -18446744073709551618
+(+) -9223372036854775809 9223372036854775808 = -1
+(+) -9223372036854775809 0 = -9223372036854775809
+(+) -9223372036854775809 18446744073709551614 = 9223372036854775805
+(+) -9223372036854775809 0 = -9223372036854775809
+(+) -9223372036854775809 85070591730234615847396907784232501249 = 85070591730234615838173535747377725440
+(+) 9223372036854775808 0 = 9223372036854775808
+(+) 9223372036854775808 1 = 9223372036854775809
+(+) 9223372036854775808 -1 = 9223372036854775807
+(+) 9223372036854775808 2 = 9223372036854775810
+(+) 9223372036854775808 -2 = 9223372036854775806
+(+) 9223372036854775808 -9223372036854775808 = 0
+(+) 9223372036854775808 9223372036854775807 = 18446744073709551615
+(+) 9223372036854775808 -9223372036854775809 = -1
+(+) 9223372036854775808 9223372036854775808 = 18446744073709551616
+(+) 9223372036854775808 0 = 9223372036854775808
+(+) 9223372036854775808 18446744073709551614 = 27670116110564327422
+(+) 9223372036854775808 0 = 9223372036854775808
+(+) 9223372036854775808 85070591730234615847396907784232501249 = 85070591730234615856620279821087277057
+(+) 0 0 = 0
+(+) 0 1 = 1
+(+) 0 -1 = -1
+(+) 0 2 = 2
+(+) 0 -2 = -2
+(+) 0 -9223372036854775808 = -9223372036854775808
+(+) 0 9223372036854775807 = 9223372036854775807
+(+) 0 -9223372036854775809 = -9223372036854775809
+(+) 0 9223372036854775808 = 9223372036854775808
+(+) 0 0 = 0
+(+) 0 18446744073709551614 = 18446744073709551614
+(+) 0 0 = 0
+(+) 0 85070591730234615847396907784232501249 = 85070591730234615847396907784232501249
+(+) 18446744073709551614 0 = 18446744073709551614
+(+) 18446744073709551614 1 = 18446744073709551615
+(+) 18446744073709551614 -1 = 18446744073709551613
+(+) 18446744073709551614 2 = 18446744073709551616
+(+) 18446744073709551614 -2 = 18446744073709551612
+(+) 18446744073709551614 -9223372036854775808 = 9223372036854775806
+(+) 18446744073709551614 9223372036854775807 = 27670116110564327421
+(+) 18446744073709551614 -9223372036854775809 = 9223372036854775805
+(+) 18446744073709551614 9223372036854775808 = 27670116110564327422
+(+) 18446744073709551614 0 = 18446744073709551614
+(+) 18446744073709551614 18446744073709551614 = 36893488147419103228
+(+) 18446744073709551614 0 = 18446744073709551614
+(+) 18446744073709551614 85070591730234615847396907784232501249 = 85070591730234615865843651857942052863
+(+) 0 0 = 0
+(+) 0 1 = 1
+(+) 0 -1 = -1
+(+) 0 2 = 2
+(+) 0 -2 = -2
+(+) 0 -9223372036854775808 = -9223372036854775808
+(+) 0 9223372036854775807 = 9223372036854775807
+(+) 0 -9223372036854775809 = -9223372036854775809
+(+) 0 9223372036854775808 = 9223372036854775808
+(+) 0 0 = 0
+(+) 0 18446744073709551614 = 18446744073709551614
+(+) 0 0 = 0
+(+) 0 85070591730234615847396907784232501249 = 85070591730234615847396907784232501249
+(+) 85070591730234615847396907784232501249 0 = 85070591730234615847396907784232501249
+(+) 85070591730234615847396907784232501249 1 = 85070591730234615847396907784232501250
+(+) 85070591730234615847396907784232501249 -1 = 85070591730234615847396907784232501248
+(+) 85070591730234615847396907784232501249 2 = 85070591730234615847396907784232501251
+(+) 85070591730234615847396907784232501249 -2 = 85070591730234615847396907784232501247
+(+) 85070591730234615847396907784232501249 -9223372036854775808 = 85070591730234615838173535747377725441
+(+) 85070591730234615847396907784232501249 9223372036854775807 = 85070591730234615856620279821087277056
+(+) 85070591730234615847396907784232501249 -9223372036854775809 = 85070591730234615838173535747377725440
+(+) 85070591730234615847396907784232501249 9223372036854775808 = 85070591730234615856620279821087277057
+(+) 85070591730234615847396907784232501249 0 = 85070591730234615847396907784232501249
+(+) 85070591730234615847396907784232501249 18446744073709551614 = 85070591730234615865843651857942052863
+(+) 85070591730234615847396907784232501249 0 = 85070591730234615847396907784232501249
+(+) 85070591730234615847396907784232501249 85070591730234615847396907784232501249 = 170141183460469231694793815568465002498
+(-) 0 0 = 0
+(-) 0 1 = -1
+(-) 0 -1 = 1
+(-) 0 2 = -2
+(-) 0 -2 = 2
+(-) 0 -9223372036854775808 = 9223372036854775808
+(-) 0 9223372036854775807 = -9223372036854775807
+(-) 0 -9223372036854775809 = 9223372036854775809
+(-) 0 9223372036854775808 = -9223372036854775808
+(-) 0 0 = 0
+(-) 0 18446744073709551614 = -18446744073709551614
+(-) 0 0 = 0
+(-) 0 85070591730234615847396907784232501249 = -85070591730234615847396907784232501249
+(-) 1 0 = 1
+(-) 1 1 = 0
+(-) 1 -1 = 2
+(-) 1 2 = -1
+(-) 1 -2 = 3
+(-) 1 -9223372036854775808 = 9223372036854775809
+(-) 1 9223372036854775807 = -9223372036854775806
+(-) 1 -9223372036854775809 = 9223372036854775810
+(-) 1 9223372036854775808 = -9223372036854775807
+(-) 1 0 = 1
+(-) 1 18446744073709551614 = -18446744073709551613
+(-) 1 0 = 1
+(-) 1 85070591730234615847396907784232501249 = -85070591730234615847396907784232501248
+(-) -1 0 = -1
+(-) -1 1 = -2
+(-) -1 -1 = 0
+(-) -1 2 = -3
+(-) -1 -2 = 1
+(-) -1 -9223372036854775808 = 9223372036854775807
+(-) -1 9223372036854775807 = -9223372036854775808
+(-) -1 -9223372036854775809 = 9223372036854775808
+(-) -1 9223372036854775808 = -9223372036854775809
+(-) -1 0 = -1
+(-) -1 18446744073709551614 = -18446744073709551615
+(-) -1 0 = -1
+(-) -1 85070591730234615847396907784232501249 = -85070591730234615847396907784232501250
+(-) 2 0 = 2
+(-) 2 1 = 1
+(-) 2 -1 = 3
+(-) 2 2 = 0
+(-) 2 -2 = 4
+(-) 2 -9223372036854775808 = 9223372036854775810
+(-) 2 9223372036854775807 = -9223372036854775805
+(-) 2 -9223372036854775809 = 9223372036854775811
+(-) 2 9223372036854775808 = -9223372036854775806
+(-) 2 0 = 2
+(-) 2 18446744073709551614 = -18446744073709551612
+(-) 2 0 = 2
+(-) 2 85070591730234615847396907784232501249 = -85070591730234615847396907784232501247
+(-) -2 0 = -2
+(-) -2 1 = -3
+(-) -2 -1 = -1
+(-) -2 2 = -4
+(-) -2 -2 = 0
+(-) -2 -9223372036854775808 = 9223372036854775806
+(-) -2 9223372036854775807 = -9223372036854775809
+(-) -2 -9223372036854775809 = 9223372036854775807
+(-) -2 9223372036854775808 = -9223372036854775810
+(-) -2 0 = -2
+(-) -2 18446744073709551614 = -18446744073709551616
+(-) -2 0 = -2
+(-) -2 85070591730234615847396907784232501249 = -85070591730234615847396907784232501251
+(-) -9223372036854775808 0 = -9223372036854775808
+(-) -9223372036854775808 1 = -9223372036854775809
+(-) -9223372036854775808 -1 = -9223372036854775807
+(-) -9223372036854775808 2 = -9223372036854775810
+(-) -9223372036854775808 -2 = -9223372036854775806
+(-) -9223372036854775808 -9223372036854775808 = 0
+(-) -9223372036854775808 9223372036854775807 = -18446744073709551615
+(-) -9223372036854775808 -9223372036854775809 = 1
+(-) -9223372036854775808 9223372036854775808 = -18446744073709551616
+(-) -9223372036854775808 0 = -9223372036854775808
+(-) -9223372036854775808 18446744073709551614 = -27670116110564327422
+(-) -9223372036854775808 0 = -9223372036854775808
+(-) -9223372036854775808 85070591730234615847396907784232501249 = -85070591730234615856620279821087277057
+(-) 9223372036854775807 0 = 9223372036854775807
+(-) 9223372036854775807 1 = 9223372036854775806
+(-) 9223372036854775807 -1 = 9223372036854775808
+(-) 9223372036854775807 2 = 9223372036854775805
+(-) 9223372036854775807 -2 = 9223372036854775809
+(-) 9223372036854775807 -9223372036854775808 = 18446744073709551615
+(-) 9223372036854775807 9223372036854775807 = 0
+(-) 9223372036854775807 -9223372036854775809 = 18446744073709551616
+(-) 9223372036854775807 9223372036854775808 = -1
+(-) 9223372036854775807 0 = 9223372036854775807
+(-) 9223372036854775807 18446744073709551614 = -9223372036854775807
+(-) 9223372036854775807 0 = 9223372036854775807
+(-) 9223372036854775807 85070591730234615847396907784232501249 = -85070591730234615838173535747377725442
+(-) -9223372036854775809 0 = -9223372036854775809
+(-) -9223372036854775809 1 = -9223372036854775810
+(-) -9223372036854775809 -1 = -9223372036854775808
+(-) -9223372036854775809 2 = -9223372036854775811
+(-) -9223372036854775809 -2 = -9223372036854775807
+(-) -9223372036854775809 -9223372036854775808 = -1
+(-) -9223372036854775809 9223372036854775807 = -18446744073709551616
+(-) -9223372036854775809 -9223372036854775809 = 0
+(-) -9223372036854775809 9223372036854775808 = -18446744073709551617
+(-) -9223372036854775809 0 = -9223372036854775809
+(-) -9223372036854775809 18446744073709551614 = -27670116110564327423
+(-) -9223372036854775809 0 = -9223372036854775809
+(-) -9223372036854775809 85070591730234615847396907784232501249 = -85070591730234615856620279821087277058
+(-) 9223372036854775808 0 = 9223372036854775808
+(-) 9223372036854775808 1 = 9223372036854775807
+(-) 9223372036854775808 -1 = 9223372036854775809
+(-) 9223372036854775808 2 = 9223372036854775806
+(-) 9223372036854775808 -2 = 9223372036854775810
+(-) 9223372036854775808 -9223372036854775808 = 18446744073709551616
+(-) 9223372036854775808 9223372036854775807 = 1
+(-) 9223372036854775808 -9223372036854775809 = 18446744073709551617
+(-) 9223372036854775808 9223372036854775808 = 0
+(-) 9223372036854775808 0 = 9223372036854775808
+(-) 9223372036854775808 18446744073709551614 = -9223372036854775806
+(-) 9223372036854775808 0 = 9223372036854775808
+(-) 9223372036854775808 85070591730234615847396907784232501249 = -85070591730234615838173535747377725441
+(-) 0 0 = 0
+(-) 0 1 = -1
+(-) 0 -1 = 1
+(-) 0 2 = -2
+(-) 0 -2 = 2
+(-) 0 -9223372036854775808 = 9223372036854775808
+(-) 0 9223372036854775807 = -9223372036854775807
+(-) 0 -9223372036854775809 = 9223372036854775809
+(-) 0 9223372036854775808 = -9223372036854775808
+(-) 0 0 = 0
+(-) 0 18446744073709551614 = -18446744073709551614
+(-) 0 0 = 0
+(-) 0 85070591730234615847396907784232501249 = -85070591730234615847396907784232501249
+(-) 18446744073709551614 0 = 18446744073709551614
+(-) 18446744073709551614 1 = 18446744073709551613
+(-) 18446744073709551614 -1 = 18446744073709551615
+(-) 18446744073709551614 2 = 18446744073709551612
+(-) 18446744073709551614 -2 = 18446744073709551616
+(-) 18446744073709551614 -9223372036854775808 = 27670116110564327422
+(-) 18446744073709551614 9223372036854775807 = 9223372036854775807
+(-) 18446744073709551614 -9223372036854775809 = 27670116110564327423
+(-) 18446744073709551614 9223372036854775808 = 9223372036854775806
+(-) 18446744073709551614 0 = 18446744073709551614
+(-) 18446744073709551614 18446744073709551614 = 0
+(-) 18446744073709551614 0 = 18446744073709551614
+(-) 18446744073709551614 85070591730234615847396907784232501249 = -85070591730234615828950163710522949635
+(-) 0 0 = 0
+(-) 0 1 = -1
+(-) 0 -1 = 1
+(-) 0 2 = -2
+(-) 0 -2 = 2
+(-) 0 -9223372036854775808 = 9223372036854775808
+(-) 0 9223372036854775807 = -9223372036854775807
+(-) 0 -9223372036854775809 = 9223372036854775809
+(-) 0 9223372036854775808 = -9223372036854775808
+(-) 0 0 = 0
+(-) 0 18446744073709551614 = -18446744073709551614
+(-) 0 0 = 0
+(-) 0 85070591730234615847396907784232501249 = -85070591730234615847396907784232501249
+(-) 85070591730234615847396907784232501249 0 = 85070591730234615847396907784232501249
+(-) 85070591730234615847396907784232501249 1 = 85070591730234615847396907784232501248
+(-) 85070591730234615847396907784232501249 -1 = 85070591730234615847396907784232501250
+(-) 85070591730234615847396907784232501249 2 = 85070591730234615847396907784232501247
+(-) 85070591730234615847396907784232501249 -2 = 85070591730234615847396907784232501251
+(-) 85070591730234615847396907784232501249 -9223372036854775808 = 85070591730234615856620279821087277057
+(-) 85070591730234615847396907784232501249 9223372036854775807 = 85070591730234615838173535747377725442
+(-) 85070591730234615847396907784232501249 -9223372036854775809 = 85070591730234615856620279821087277058
+(-) 85070591730234615847396907784232501249 9223372036854775808 = 85070591730234615838173535747377725441
+(-) 85070591730234615847396907784232501249 0 = 85070591730234615847396907784232501249
+(-) 85070591730234615847396907784232501249 18446744073709551614 = 85070591730234615828950163710522949635
+(-) 85070591730234615847396907784232501249 0 = 85070591730234615847396907784232501249
+(-) 85070591730234615847396907784232501249 85070591730234615847396907784232501249 = 0
+div 0 1 = 0
+div 0 -1 = 0
+div 0 2 = 0
+div 0 -2 = 0
+div 0 -9223372036854775808 = 0
+div 0 9223372036854775807 = 0
+div 0 -9223372036854775809 = 0
+div 0 9223372036854775808 = 0
+div 0 18446744073709551614 = 0
+div 0 85070591730234615847396907784232501249 = 0
+div 1 1 = 1
+div 1 -1 = -1
+div 1 2 = 0
+div 1 -2 = -1
+div 1 -9223372036854775808 = -1
+div 1 9223372036854775807 = 0
+div 1 -9223372036854775809 = -1
+div 1 9223372036854775808 = 0
+div 1 18446744073709551614 = 0
+div 1 85070591730234615847396907784232501249 = 0
+div -1 1 = -1
+div -1 -1 = 1
+div -1 2 = -1
+div -1 -2 = 0
+div -1 -9223372036854775808 = 0
+div -1 9223372036854775807 = -1
+div -1 -9223372036854775809 = 0
+div -1 9223372036854775808 = -1
+div -1 18446744073709551614 = -1
+div -1 85070591730234615847396907784232501249 = -1
+div 2 1 = 2
+div 2 -1 = -2
+div 2 2 = 1
+div 2 -2 = -1
+div 2 -9223372036854775808 = -1
+div 2 9223372036854775807 = 0
+div 2 -9223372036854775809 = -1
+div 2 9223372036854775808 = 0
+div 2 18446744073709551614 = 0
+div 2 85070591730234615847396907784232501249 = 0
+div -2 1 = -2
+div -2 -1 = 2
+div -2 2 = -1
+div -2 -2 = 1
+div -2 -9223372036854775808 = 0
+div -2 9223372036854775807 = -1
+div -2 -9223372036854775809 = 0
+div -2 9223372036854775808 = -1
+div -2 18446744073709551614 = -1
+div -2 85070591730234615847396907784232501249 = -1
+div -9223372036854775808 1 = -9223372036854775808
+div -9223372036854775808 -1 = 9223372036854775808
+div -9223372036854775808 2 = -4611686018427387904
+div -9223372036854775808 -2 = 4611686018427387904
+div -9223372036854775808 -9223372036854775808 = 1
+div -9223372036854775808 9223372036854775807 = -2
+div -9223372036854775808 -9223372036854775809 = 0
+div -9223372036854775808 9223372036854775808 = -1
+div -9223372036854775808 18446744073709551614 = -1
+div -9223372036854775808 85070591730234615847396907784232501249 = -1
+div 9223372036854775807 1 = 9223372036854775807
+div 9223372036854775807 -1 = -9223372036854775807
+div 9223372036854775807 2 = 4611686018427387903
+div 9223372036854775807 -2 = -4611686018427387904
+div 9223372036854775807 -9223372036854775808 = -1
+div 9223372036854775807 9223372036854775807 = 1
+div 9223372036854775807 -9223372036854775809 = -1
+div 9223372036854775807 9223372036854775808 = 0
+div 9223372036854775807 18446744073709551614 = 0
+div 9223372036854775807 85070591730234615847396907784232501249 = 0
+mod 0 1 = 0
+mod 0 -1 = 0
+mod 0 2 = 0
+mod 0 -2 = 0
+mod 0 -9223372036854775808 = 0
+mod 0 9223372036854775807 = 0
+mod 0 -9223372036854775809 = 0
+mod 0 9223372036854775808 = 0
+mod 0 18446744073709551614 = 0
+mod 0 85070591730234615847396907784232501249 = 0
+mod 1 1 = 0
+mod 1 -1 = 0
+mod 1 2 = 1
+mod 1 -2 = -1
+mod 1 -9223372036854775808 = -9223372036854775807
+mod 1 9223372036854775807 = 1
+mod 1 -9223372036854775809 = -9223372036854775808
+mod 1 9223372036854775808 = 1
+mod 1 18446744073709551614 = 1
+mod 1 85070591730234615847396907784232501249 = 1
+mod -1 1 = 0
+mod -1 -1 = 0
+mod -1 2 = 1
+mod -1 -2 = -1
+mod -1 -9223372036854775808 = -1
+mod -1 9223372036854775807 = 9223372036854775806
+mod -1 -9223372036854775809 = -1
+mod -1 9223372036854775808 = 9223372036854775807
+mod -1 18446744073709551614 = 18446744073709551613
+mod -1 85070591730234615847396907784232501249 = 85070591730234615847396907784232501248
+mod 2 1 = 0
+mod 2 -1 = 0
+mod 2 2 = 0
+mod 2 -2 = 0
+mod 2 -9223372036854775808 = -9223372036854775806
+mod 2 9223372036854775807 = 2
+mod 2 -9223372036854775809 = -9223372036854775807
+mod 2 9223372036854775808 = 2
+mod 2 18446744073709551614 = 2
+mod 2 85070591730234615847396907784232501249 = 2
+mod -2 1 = 0
+mod -2 -1 = 0
+mod -2 2 = 0
+mod -2 -2 = 0
+mod -2 -9223372036854775808 = -2
+mod -2 9223372036854775807 = 9223372036854775805
+mod -2 -9223372036854775809 = -2
+mod -2 9223372036854775808 = 9223372036854775806
+mod -2 18446744073709551614 = 18446744073709551612
+mod -2 85070591730234615847396907784232501249 = 85070591730234615847396907784232501247
+mod -9223372036854775808 1 = 0
+mod -9223372036854775808 -1 = 0
+mod -9223372036854775808 2 = 0
+mod -9223372036854775808 -2 = 0
+mod -9223372036854775808 -9223372036854775808 = 0
+mod -9223372036854775808 9223372036854775807 = 9223372036854775806
+mod -9223372036854775808 -9223372036854775809 = -9223372036854775808
+mod -9223372036854775808 9223372036854775808 = 0
+mod -9223372036854775808 18446744073709551614 = 9223372036854775806
+mod -9223372036854775808 85070591730234615847396907784232501249 = 85070591730234615838173535747377725441
+mod 9223372036854775807 1 = 0
+mod 9223372036854775807 -1 = 0
+mod 9223372036854775807 2 = 1
+mod 9223372036854775807 -2 = -1
+mod 9223372036854775807 -9223372036854775808 = -1
+mod 9223372036854775807 9223372036854775807 = 0
+mod 9223372036854775807 -9223372036854775809 = -2
+mod 9223372036854775807 9223372036854775808 = 9223372036854775807
+mod 9223372036854775807 18446744073709551614 = 9223372036854775807
+mod 9223372036854775807 85070591730234615847396907784232501249 = 9223372036854775807
+quot 0 1 = 0
+quot 0 -1 = 0
+quot 0 2 = 0
+quot 0 -2 = 0
+quot 0 -9223372036854775808 = 0
+quot 0 9223372036854775807 = 0
+quot 0 -9223372036854775809 = 0
+quot 0 9223372036854775808 = 0
+quot 0 18446744073709551614 = 0
+quot 0 85070591730234615847396907784232501249 = 0
+quot 1 1 = 1
+quot 1 -1 = -1
+quot 1 2 = 0
+quot 1 -2 = 0
+quot 1 -9223372036854775808 = 0
+quot 1 9223372036854775807 = 0
+quot 1 -9223372036854775809 = 0
+quot 1 9223372036854775808 = 0
+quot 1 18446744073709551614 = 0
+quot 1 85070591730234615847396907784232501249 = 0
+quot -1 1 = -1
+quot -1 -1 = 1
+quot -1 2 = 0
+quot -1 -2 = 0
+quot -1 -9223372036854775808 = 0
+quot -1 9223372036854775807 = 0
+quot -1 -9223372036854775809 = 0
+quot -1 9223372036854775808 = 0
+quot -1 18446744073709551614 = 0
+quot -1 85070591730234615847396907784232501249 = 0
+quot 2 1 = 2
+quot 2 -1 = -2
+quot 2 2 = 1
+quot 2 -2 = -1
+quot 2 -9223372036854775808 = 0
+quot 2 9223372036854775807 = 0
+quot 2 -9223372036854775809 = 0
+quot 2 9223372036854775808 = 0
+quot 2 18446744073709551614 = 0
+quot 2 85070591730234615847396907784232501249 = 0
+quot -2 1 = -2
+quot -2 -1 = 2
+quot -2 2 = -1
+quot -2 -2 = 1
+quot -2 -9223372036854775808 = 0
+quot -2 9223372036854775807 = 0
+quot -2 -9223372036854775809 = 0
+quot -2 9223372036854775808 = 0
+quot -2 18446744073709551614 = 0
+quot -2 85070591730234615847396907784232501249 = 0
+quot -9223372036854775808 1 = -9223372036854775808
+quot -9223372036854775808 -1 = 9223372036854775808
+quot -9223372036854775808 2 = -4611686018427387904
+quot -9223372036854775808 -2 = 4611686018427387904
+quot -9223372036854775808 -9223372036854775808 = 1
+quot -9223372036854775808 9223372036854775807 = -1
+quot -9223372036854775808 -9223372036854775809 = 0
+quot -9223372036854775808 9223372036854775808 = -1
+quot -9223372036854775808 18446744073709551614 = 0
+quot -9223372036854775808 85070591730234615847396907784232501249 = 0
+quot 9223372036854775807 1 = 9223372036854775807
+quot 9223372036854775807 -1 = -9223372036854775807
+quot 9223372036854775807 2 = 4611686018427387903
+quot 9223372036854775807 -2 = -4611686018427387903
+quot 9223372036854775807 -9223372036854775808 = 0
+quot 9223372036854775807 9223372036854775807 = 1
+quot 9223372036854775807 -9223372036854775809 = 0
+quot 9223372036854775807 9223372036854775808 = 0
+quot 9223372036854775807 18446744073709551614 = 0
+quot 9223372036854775807 85070591730234615847396907784232501249 = 0
+rem 0 1 = 0
+rem 0 -1 = 0
+rem 0 2 = 0
+rem 0 -2 = 0
+rem 0 -9223372036854775808 = 0
+rem 0 9223372036854775807 = 0
+rem 0 -9223372036854775809 = 0
+rem 0 9223372036854775808 = 0
+rem 0 18446744073709551614 = 0
+rem 0 85070591730234615847396907784232501249 = 0
+rem 1 1 = 0
+rem 1 -1 = 0
+rem 1 2 = 1
+rem 1 -2 = 1
+rem 1 -9223372036854775808 = 1
+rem 1 9223372036854775807 = 1
+rem 1 -9223372036854775809 = 1
+rem 1 9223372036854775808 = 1
+rem 1 18446744073709551614 = 1
+rem 1 85070591730234615847396907784232501249 = 1
+rem -1 1 = 0
+rem -1 -1 = 0
+rem -1 2 = -1
+rem -1 -2 = -1
+rem -1 -9223372036854775808 = -1
+rem -1 9223372036854775807 = -1
+rem -1 -9223372036854775809 = -1
+rem -1 9223372036854775808 = -1
+rem -1 18446744073709551614 = -1
+rem -1 85070591730234615847396907784232501249 = -1
+rem 2 1 = 0
+rem 2 -1 = 0
+rem 2 2 = 0
+rem 2 -2 = 0
+rem 2 -9223372036854775808 = 2
+rem 2 9223372036854775807 = 2
+rem 2 -9223372036854775809 = 2
+rem 2 9223372036854775808 = 2
+rem 2 18446744073709551614 = 2
+rem 2 85070591730234615847396907784232501249 = 2
+rem -2 1 = 0
+rem -2 -1 = 0
+rem -2 2 = 0
+rem -2 -2 = 0
+rem -2 -9223372036854775808 = -2
+rem -2 9223372036854775807 = -2
+rem -2 -9223372036854775809 = -2
+rem -2 9223372036854775808 = -2
+rem -2 18446744073709551614 = -2
+rem -2 85070591730234615847396907784232501249 = -2
+rem -9223372036854775808 1 = 0
+rem -9223372036854775808 -1 = 0
+rem -9223372036854775808 2 = 0
+rem -9223372036854775808 -2 = 0
+rem -9223372036854775808 -9223372036854775808 = 0
+rem -9223372036854775808 9223372036854775807 = -1
+rem -9223372036854775808 -9223372036854775809 = -9223372036854775808
+rem -9223372036854775808 9223372036854775808 = 0
+rem -9223372036854775808 18446744073709551614 = -9223372036854775808
+rem -9223372036854775808 85070591730234615847396907784232501249 = -9223372036854775808
+rem 9223372036854775807 1 = 0
+rem 9223372036854775807 -1 = 0
+rem 9223372036854775807 2 = 1
+rem 9223372036854775807 -2 = 1
+rem 9223372036854775807 -9223372036854775808 = 9223372036854775807
+rem 9223372036854775807 9223372036854775807 = 0
+rem 9223372036854775807 -9223372036854775809 = 9223372036854775807
+rem 9223372036854775807 9223372036854775808 = 9223372036854775807
+rem 9223372036854775807 18446744073709551614 = 9223372036854775807
+rem 9223372036854775807 85070591730234615847396907784232501249 = 9223372036854775807
+gcd 0 1 = 1
+gcd 0 -1 = 1
+gcd 0 2 = 2
+gcd 0 -2 = 2
+gcd 0 -9223372036854775808 = 9223372036854775808
+gcd 0 9223372036854775807 = 9223372036854775807
+gcd 1 0 = 1
+gcd 1 1 = 1
+gcd 1 -1 = 1
+gcd 1 2 = 1
+gcd 1 -2 = 1
+gcd 1 -9223372036854775808 = 1
+gcd 1 9223372036854775807 = 1
+gcd -1 0 = 1
+gcd -1 1 = 1
+gcd -1 -1 = 1
+gcd -1 2 = 1
+gcd -1 -2 = 1
+gcd -1 -9223372036854775808 = 1
+gcd -1 9223372036854775807 = 1
+gcd 2 0 = 2
+gcd 2 1 = 1
+gcd 2 -1 = 1
+gcd 2 2 = 2
+gcd 2 -2 = 2
+gcd 2 -9223372036854775808 = 2
+gcd 2 9223372036854775807 = 1
+gcd -2 0 = 2
+gcd -2 1 = 1
+gcd -2 -1 = 1
+gcd -2 2 = 2
+gcd -2 -2 = 2
+gcd -2 -9223372036854775808 = 2
+gcd -2 9223372036854775807 = 1
+gcd -9223372036854775808 0 = 9223372036854775808
+gcd -9223372036854775808 1 = 1
+gcd -9223372036854775808 -1 = 1
+gcd -9223372036854775808 2 = 2
+gcd -9223372036854775808 -2 = 2
+gcd -9223372036854775808 -9223372036854775808 = 9223372036854775808
+gcd -9223372036854775808 9223372036854775807 = 1
+gcd 9223372036854775807 0 = 9223372036854775807
+gcd 9223372036854775807 1 = 1
+gcd 9223372036854775807 -1 = 1
+gcd 9223372036854775807 2 = 1
+gcd 9223372036854775807 -2 = 1
+gcd 9223372036854775807 -9223372036854775808 = 1
+gcd 9223372036854775807 9223372036854775807 = 9223372036854775807
+lcm 0 1 = 0
+lcm 0 -1 = 0
+lcm 0 2 = 0
+lcm 0 -2 = 0
+lcm 0 -9223372036854775808 = 0
+lcm 0 9223372036854775807 = 0
+lcm 1 0 = 0
+lcm 1 1 = 1
+lcm 1 -1 = 1
+lcm 1 2 = 2
+lcm 1 -2 = 2
+lcm 1 -9223372036854775808 = 9223372036854775808
+lcm 1 9223372036854775807 = 9223372036854775807
+lcm -1 0 = 0
+lcm -1 1 = 1
+lcm -1 -1 = 1
+lcm -1 2 = 2
+lcm -1 -2 = 2
+lcm -1 -9223372036854775808 = 9223372036854775808
+lcm -1 9223372036854775807 = 9223372036854775807
+lcm 2 0 = 0
+lcm 2 1 = 2
+lcm 2 -1 = 2
+lcm 2 2 = 2
+lcm 2 -2 = 2
+lcm 2 -9223372036854775808 = 9223372036854775808
+lcm 2 9223372036854775807 = 18446744073709551614
+lcm -2 0 = 0
+lcm -2 1 = 2
+lcm -2 -1 = 2
+lcm -2 2 = 2
+lcm -2 -2 = 2
+lcm -2 -9223372036854775808 = 9223372036854775808
+lcm -2 9223372036854775807 = 18446744073709551614
+lcm -9223372036854775808 0 = 0
+lcm -9223372036854775808 1 = 9223372036854775808
+lcm -9223372036854775808 -1 = 9223372036854775808
+lcm -9223372036854775808 2 = 9223372036854775808
+lcm -9223372036854775808 -2 = 9223372036854775808
+lcm -9223372036854775808 -9223372036854775808 = 9223372036854775808
+lcm -9223372036854775808 9223372036854775807 = 85070591730234615856620279821087277056
+lcm 9223372036854775807 0 = 0
+lcm 9223372036854775807 1 = 9223372036854775807
+lcm 9223372036854775807 -1 = 9223372036854775807
+lcm 9223372036854775807 2 = 18446744073709551614
+lcm 9223372036854775807 -2 = 18446744073709551614
+lcm 9223372036854775807 -9223372036854775808 = 85070591730234615856620279821087277056
+lcm 9223372036854775807 9223372036854775807 = 9223372036854775807
diff --git a/testsuite/tests/ghc-regress/numeric/should_run/arith005.stdout-ws-64 b/testsuite/tests/ghc-regress/numeric/should_run/arith005.stdout-ws-64
new file mode 100644 (file)
index 0000000..65f9fd9
--- /dev/null
@@ -0,0 +1,20 @@
+[0.0,-0.0,1.1,2.8,3.5,4.5,-1.0,-2.9999995,-3.5,-4.5,1000012.0,123.456,100.25,102.5,1.2e-3,-1.2e-7,17000.0,-1.7e-4,1.5e-7,3.1415927,1.18088e11,1.2111e14]
+[0.0,-0.0,1.1,2.8,3.5,4.5,-1.0000000001,-2.9999995,-3.50000000001,-4.49999999999,1000012.0,123.456,100.25,102.5,1.2e-3,-1.2e-7,17000.0,-1.7e-4,1.5e-7,3.141592653589793,1.18088e11,1.2111e14]
+[0,0,2,3,4,5,-1,-2,-3,-4,1000012,124,101,103,1,0,17000,0,1,4,118087999488,121109999517696]
+[0,0,2,3,4,5,-1,-2,-3,-4,1000012,124,101,103,1,0,17000,0,1,4,118087999488,121109999517696]
+[0,0,2,3,4,5,-1,-2,-3,-4,1000012,124,101,103,1,0,17000,0,1,4,118088000000,121110000000000]
+[0,0,2,3,4,5,-1,-2,-3,-4,1000012,124,101,103,1,0,17000,0,1,4,118088000000,121110000000000]
+[0,0,1,2,3,4,-1,-3,-4,-5,1000012,123,100,102,0,-1,17000,-1,0,3,118087999488,121109999517696]
+[0,0,1,2,3,4,-1,-3,-4,-5,1000012,123,100,102,0,-1,17000,-1,0,3,118087999488,121109999517696]
+[0,0,1,2,3,4,-2,-3,-4,-5,1000012,123,100,102,0,-1,17000,-1,0,3,118088000000,121110000000000]
+[0,0,1,2,3,4,-2,-3,-4,-5,1000012,123,100,102,0,-1,17000,-1,0,3,118088000000,121110000000000]
+[0,0,1,2,3,4,-1,-2,-3,-4,1000012,123,100,102,0,0,17000,0,0,3,118087999488,121109999517696]
+[0,0,1,2,3,4,-1,-2,-3,-4,1000012,123,100,102,0,0,17000,0,0,3,118087999488,121109999517696]
+[0,0,1,2,3,4,-1,-2,-3,-4,1000012,123,100,102,0,0,17000,0,0,3,118088000000,121110000000000]
+[0,0,1,2,3,4,-1,-2,-3,-4,1000012,123,100,102,0,0,17000,0,0,3,118088000000,121110000000000]
+[0,0,1,3,4,4,-1,-3,-4,-4,1000012,123,100,102,0,0,17000,0,0,3,118087999488,121109999517696]
+[0,0,1,3,4,4,-1,-3,-4,-4,1000012,123,100,102,0,0,17000,0,0,3,118088000000,121110000000000]
+[0,0,1,3,4,4,-1,-3,-4,-4,1000012,123,100,102,0,0,17000,0,0,3,118088000000,121110000000000]
+[(0,0.0),(0,0.0),(1,0.100000024),(2,0.79999995),(3,0.5),(4,0.5),(-1,0.0),(-2,-0.9999995),(-3,-0.5),(-4,-0.5),(1000012,0.0),(123,0.45600128),(100,0.25),(102,0.5),(0,1.2e-3),(0,-1.2e-7),(17000,0.0),(0,-1.7e-4),(0,1.5e-7),(3,0.14159274),(118087999488,0.0),(121109999517696,0.0)]
+[(0,0.0),(0,0.0),(1,0.100000024),(2,0.79999995),(3,0.5),(4,0.5),(-1,0.0),(-2,-0.9999995),(-3,-0.5),(-4,-0.5),(1000012,0.0),(123,0.45600128),(100,0.25),(102,0.5),(0,1.2e-3),(0,-1.2e-7),(17000,0.0),(0,-1.7e-4),(0,1.5e-7),(3,0.14159274),(118087999488,0.0),(121109999517696,0.0)]
+(0,0.0)
diff --git a/testsuite/tests/ghc-regress/numeric/should_run/arith011.stdout-ws-64 b/testsuite/tests/ghc-regress/numeric/should_run/arith011.stdout-ws-64
new file mode 100644 (file)
index 0000000..305321a
--- /dev/null
@@ -0,0 +1,15138 @@
+--------------------------------
+--Testing Int
+--------------------------------
+testBounded
+(9223372036854775807,-9223372036854775808,-9223372036854775807)
+(9223372036854775806,9223372036854775807,-9223372036854775808)
+testEnum
+[0,1,2,3,4,5,6,7,8,9]
+[0,2,4,6,8,10,12,14,16,18]
+[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
+[0,2,4,6,8,10,12,14,16,18,20]
+testReadShow
+[-3,-2,-1,0,1,2,3]
+[-3,-2,-1,0,1,2,3]
+testEq
+-3 == -3 = True
+-3 == -2 = False
+-3 == -1 = False
+-3 == 0 = False
+-3 == 1 = False
+-3 == 2 = False
+-3 == 3 = False
+-2 == -3 = False
+-2 == -2 = True
+-2 == -1 = False
+-2 == 0 = False
+-2 == 1 = False
+-2 == 2 = False
+-2 == 3 = False
+-1 == -3 = False
+-1 == -2 = False
+-1 == -1 = True
+-1 == 0 = False
+-1 == 1 = False
+-1 == 2 = False
+-1 == 3 = False
+0 == -3 = False
+0 == -2 = False
+0 == -1 = False
+0 == 0 = True
+0 == 1 = False
+0 == 2 = False
+0 == 3 = False
+1 == -3 = False
+1 == -2 = False
+1 == -1 = False
+1 == 0 = False
+1 == 1 = True
+1 == 2 = False
+1 == 3 = False
+2 == -3 = False
+2 == -2 = False
+2 == -1 = False
+2 == 0 = False
+2 == 1 = False
+2 == 2 = True
+2 == 3 = False
+3 == -3 = False
+3 == -2 = False
+3 == -1 = False
+3 == 0 = False
+3 == 1 = False
+3 == 2 = False
+3 == 3 = True
+#
+-3 /= -3 = False
+-3 /= -2 = True
+-3 /= -1 = True
+-3 /= 0 = True
+-3 /= 1 = True
+-3 /= 2 = True
+-3 /= 3 = True
+-2 /= -3 = True
+-2 /= -2 = False
+-2 /= -1 = True
+-2 /= 0 = True
+-2 /= 1 = True
+-2 /= 2 = True
+-2 /= 3 = True
+-1 /= -3 = True
+-1 /= -2 = True
+-1 /= -1 = False
+-1 /= 0 = True
+-1 /= 1 = True
+-1 /= 2 = True
+-1 /= 3 = True
+0 /= -3 = True
+0 /= -2 = True
+0 /= -1 = True
+0 /= 0 = False
+0 /= 1 = True
+0 /= 2 = True
+0 /= 3 = True
+1 /= -3 = True
+1 /= -2 = True
+1 /= -1 = True
+1 /= 0 = True
+1 /= 1 = False
+1 /= 2 = True
+1 /= 3 = True
+2 /= -3 = True
+2 /= -2 = True
+2 /= -1 = True
+2 /= 0 = True
+2 /= 1 = True
+2 /= 2 = False
+2 /= 3 = True
+3 /= -3 = True
+3 /= -2 = True
+3 /= -1 = True
+3 /= 0 = True
+3 /= 1 = True
+3 /= 2 = True
+3 /= 3 = False
+#
+testOrd
+-3 <= -3 = True
+-3 <= -2 = True
+-3 <= -1 = True
+-3 <= 0 = True
+-3 <= 1 = True
+-3 <= 2 = True
+-3 <= 3 = True
+-2 <= -3 = False
+-2 <= -2 = True
+-2 <= -1 = True
+-2 <= 0 = True
+-2 <= 1 = True
+-2 <= 2 = True
+-2 <= 3 = True
+-1 <= -3 = False
+-1 <= -2 = False
+-1 <= -1 = True
+-1 <= 0 = True
+-1 <= 1 = True
+-1 <= 2 = True
+-1 <= 3 = True
+0 <= -3 = False
+0 <= -2 = False
+0 <= -1 = False
+0 <= 0 = True
+0 <= 1 = True
+0 <= 2 = True
+0 <= 3 = True
+1 <= -3 = False
+1 <= -2 = False
+1 <= -1 = False
+1 <= 0 = False
+1 <= 1 = True
+1 <= 2 = True
+1 <= 3 = True
+2 <= -3 = False
+2 <= -2 = False
+2 <= -1 = False
+2 <= 0 = False
+2 <= 1 = False
+2 <= 2 = True
+2 <= 3 = True
+3 <= -3 = False
+3 <= -2 = False
+3 <= -1 = False
+3 <= 0 = False
+3 <= 1 = False
+3 <= 2 = False
+3 <= 3 = True
+#
+-3 <  -3 = False
+-3 <  -2 = True
+-3 <  -1 = True
+-3 <  0 = True
+-3 <  1 = True
+-3 <  2 = True
+-3 <  3 = True
+-2 <  -3 = False
+-2 <  -2 = False
+-2 <  -1 = True
+-2 <  0 = True
+-2 <  1 = True
+-2 <  2 = True
+-2 <  3 = True
+-1 <  -3 = False
+-1 <  -2 = False
+-1 <  -1 = False
+-1 <  0 = True
+-1 <  1 = True
+-1 <  2 = True
+-1 <  3 = True
+0 <  -3 = False
+0 <  -2 = False
+0 <  -1 = False
+0 <  0 = False
+0 <  1 = True
+0 <  2 = True
+0 <  3 = True
+1 <  -3 = False
+1 <  -2 = False
+1 <  -1 = False
+1 <  0 = False
+1 <  1 = False
+1 <  2 = True
+1 <  3 = True
+2 <  -3 = False
+2 <  -2 = False
+2 <  -1 = False
+2 <  0 = False
+2 <  1 = False
+2 <  2 = False
+2 <  3 = True
+3 <  -3 = False
+3 <  -2 = False
+3 <  -1 = False
+3 <  0 = False
+3 <  1 = False
+3 <  2 = False
+3 <  3 = False
+#
+-3 >  -3 = False
+-3 >  -2 = False
+-3 >  -1 = False
+-3 >  0 = False
+-3 >  1 = False
+-3 >  2 = False
+-3 >  3 = False
+-2 >  -3 = True
+-2 >  -2 = False
+-2 >  -1 = False
+-2 >  0 = False
+-2 >  1 = False
+-2 >  2 = False
+-2 >  3 = False
+-1 >  -3 = True
+-1 >  -2 = True
+-1 >  -1 = False
+-1 >  0 = False
+-1 >  1 = False
+-1 >  2 = False
+-1 >  3 = False
+0 >  -3 = True
+0 >  -2 = True
+0 >  -1 = True
+0 >  0 = False
+0 >  1 = False
+0 >  2 = False
+0 >  3 = False
+1 >  -3 = True
+1 >  -2 = True
+1 >  -1 = True
+1 >  0 = True
+1 >  1 = False
+1 >  2 = False
+1 >  3 = False
+2 >  -3 = True
+2 >  -2 = True
+2 >  -1 = True
+2 >  0 = True
+2 >  1 = True
+2 >  2 = False
+2 >  3 = False
+3 >  -3 = True
+3 >  -2 = True
+3 >  -1 = True
+3 >  0 = True
+3 >  1 = True
+3 >  2 = True
+3 >  3 = False
+#
+-3 >= -3 = True
+-3 >= -2 = False
+-3 >= -1 = False
+-3 >= 0 = False
+-3 >= 1 = False
+-3 >= 2 = False
+-3 >= 3 = False
+-2 >= -3 = True
+-2 >= -2 = True
+-2 >= -1 = False
+-2 >= 0 = False
+-2 >= 1 = False
+-2 >= 2 = False
+-2 >= 3 = False
+-1 >= -3 = True
+-1 >= -2 = True
+-1 >= -1 = True
+-1 >= 0 = False
+-1 >= 1 = False
+-1 >= 2 = False
+-1 >= 3 = False
+0 >= -3 = True
+0 >= -2 = True
+0 >= -1 = True
+0 >= 0 = True
+0 >= 1 = False
+0 >= 2 = False
+0 >= 3 = False
+1 >= -3 = True
+1 >= -2 = True
+1 >= -1 = True
+1 >= 0 = True
+1 >= 1 = True
+1 >= 2 = False
+1 >= 3 = False
+2 >= -3 = True
+2 >= -2 = True
+2 >= -1 = True
+2 >= 0 = True
+2 >= 1 = True
+2 >= 2 = True
+2 >= 3 = False
+3 >= -3 = True
+3 >= -2 = True
+3 >= -1 = True
+3 >= 0 = True
+3 >= 1 = True
+3 >= 2 = True
+3 >= 3 = True
+#
+-3 `compare` -3 = EQ
+-3 `compare` -2 = LT
+-3 `compare` -1 = LT
+-3 `compare` 0 = LT
+-3 `compare` 1 = LT
+-3 `compare` 2 = LT
+-3 `compare` 3 = LT
+-2 `compare` -3 = GT
+-2 `compare` -2 = EQ
+-2 `compare` -1 = LT
+-2 `compare` 0 = LT
+-2 `compare` 1 = LT
+-2 `compare` 2 = LT
+-2 `compare` 3 = LT
+-1 `compare` -3 = GT
+-1 `compare` -2 = GT
+-1 `compare` -1 = EQ
+-1 `compare` 0 = LT
+-1 `compare` 1 = LT
+-1 `compare` 2 = LT
+-1 `compare` 3 = LT
+0 `compare` -3 = GT
+0 `compare` -2 = GT
+0 `compare` -1 = GT
+0 `compare` 0 = EQ
+0 `compare` 1 = LT
+0 `compare` 2 = LT
+0 `compare` 3 = LT
+1 `compare` -3 = GT
+1 `compare` -2 = GT
+1 `compare` -1 = GT
+1 `compare` 0 = GT
+1 `compare` 1 = EQ
+1 `compare` 2 = LT
+1 `compare` 3 = LT
+2 `compare` -3 = GT
+2 `compare` -2 = GT
+2 `compare` -1 = GT
+2 `compare` 0 = GT
+2 `compare` 1 = GT
+2 `compare` 2 = EQ
+2 `compare` 3 = LT
+3 `compare` -3 = GT
+3 `compare` -2 = GT
+3 `compare` -1 = GT
+3 `compare` 0 = GT
+3 `compare` 1 = GT
+3 `compare` 2 = GT
+3 `compare` 3 = EQ
+#
+testNum
+-3 + -3 = -6
+-3 + -2 = -5
+-3 + -1 = -4
+-3 + 0 = -3
+-3 + 1 = -2
+-3 + 2 = -1
+-3 + 3 = 0
+-2 + -3 = -5
+-2 + -2 = -4
+-2 + -1 = -3
+-2 + 0 = -2
+-2 + 1 = -1
+-2 + 2 = 0
+-2 + 3 = 1
+-1 + -3 = -4
+-1 + -2 = -3
+-1 + -1 = -2
+-1 + 0 = -1
+-1 + 1 = 0
+-1 + 2 = 1
+-1 + 3 = 2
+0 + -3 = -3
+0 + -2 = -2
+0 + -1 = -1
+0 + 0 = 0
+0 + 1 = 1
+0 + 2 = 2
+0 + 3 = 3
+1 + -3 = -2
+1 + -2 = -1
+1 + -1 = 0
+1 + 0 = 1
+1 + 1 = 2
+1 + 2 = 3
+1 + 3 = 4
+2 + -3 = -1
+2 + -2 = 0
+2 + -1 = 1
+2 + 0 = 2
+2 + 1 = 3
+2 + 2 = 4
+2 + 3 = 5
+3 + -3 = 0
+3 + -2 = 1
+3 + -1 = 2
+3 + 0 = 3
+3 + 1 = 4
+3 + 2 = 5
+3 + 3 = 6
+#
+-3 - -3 = 0
+-3 - -2 = -1
+-3 - -1 = -2
+-3 - 0 = -3
+-3 - 1 = -4
+-3 - 2 = -5
+-3 - 3 = -6
+-2 - -3 = 1
+-2 - -2 = 0
+-2 - -1 = -1
+-2 - 0 = -2
+-2 - 1 = -3
+-2 - 2 = -4
+-2 - 3 = -5
+-1 - -3 = 2
+-1 - -2 = 1
+-1 - -1 = 0
+-1 - 0 = -1
+-1 - 1 = -2
+-1 - 2 = -3
+-1 - 3 = -4
+0 - -3 = 3
+0 - -2 = 2
+0 - -1 = 1
+0 - 0 = 0
+0 - 1 = -1
+0 - 2 = -2
+0 - 3 = -3
+1 - -3 = 4
+1 - -2 = 3
+1 - -1 = 2
+1 - 0 = 1
+1 - 1 = 0
+1 - 2 = -1
+1 - 3 = -2
+2 - -3 = 5
+2 - -2 = 4
+2 - -1 = 3
+2 - 0 = 2
+2 - 1 = 1
+2 - 2 = 0
+2 - 3 = -1
+3 - -3 = 6
+3 - -2 = 5
+3 - -1 = 4
+3 - 0 = 3
+3 - 1 = 2
+3 - 2 = 1
+3 - 3 = 0
+#
+-3 * -3 = 9
+-3 * -2 = 6
+-3 * -1 = 3
+-3 * 0 = 0
+-3 * 1 = -3
+-3 * 2 = -6
+-3 * 3 = -9
+-2 * -3 = 6
+-2 * -2 = 4
+-2 * -1 = 2
+-2 * 0 = 0
+-2 * 1 = -2
+-2 * 2 = -4
+-2 * 3 = -6
+-1 * -3 = 3
+-1 * -2 = 2
+-1 * -1 = 1
+-1 * 0 = 0
+-1 * 1 = -1
+-1 * 2 = -2
+-1 * 3 = -3
+0 * -3 = 0
+0 * -2 = 0
+0 * -1 = 0
+0 * 0 = 0
+0 * 1 = 0
+0 * 2 = 0
+0 * 3 = 0
+1 * -3 = -3
+1 * -2 = -2
+1 * -1 = -1
+1 * 0 = 0
+1 * 1 = 1
+1 * 2 = 2
+1 * 3 = 3
+2 * -3 = -6
+2 * -2 = -4
+2 * -1 = -2
+2 * 0 = 0
+2 * 1 = 2
+2 * 2 = 4
+2 * 3 = 6
+3 * -3 = -9
+3 * -2 = -6
+3 * -1 = -3
+3 * 0 = 0
+3 * 1 = 3
+3 * 2 = 6
+3 * 3 = 9
+#
+negate -3 = 3
+negate -2 = 2
+negate -1 = 1
+negate 0 = 0
+negate 1 = -1
+negate 2 = -2
+negate 3 = -3
+#
+testReal
+toRational -3 = (-3)%1
+toRational -2 = (-2)%1
+toRational -1 = (-1)%1
+toRational 0 = 0%1
+toRational 1 = 1%1
+toRational 2 = 2%1
+toRational 3 = 3%1
+#
+testIntegral
+-3 `divMod`  -3 = (1,0)
+-3 `divMod`  -2 = (1,-1)
+-3 `divMod`  -1 = (3,0)
+-3 `divMod`  0 = divide by zero
+-3 `divMod`  1 = (-3,0)
+-3 `divMod`  2 = (-2,1)
+-3 `divMod`  3 = (-1,0)
+-2 `divMod`  -3 = (0,-2)
+-2 `divMod`  -2 = (1,0)
+-2 `divMod`  -1 = (2,0)
+-2 `divMod`  0 = divide by zero
+-2 `divMod`  1 = (-2,0)
+-2 `divMod`  2 = (-1,0)
+-2 `divMod`  3 = (-1,1)
+-1 `divMod`  -3 = (0,-1)
+-1 `divMod`  -2 = (0,-1)
+-1 `divMod`  -1 = (1,0)
+-1 `divMod`  0 = divide by zero
+-1 `divMod`  1 = (-1,0)
+-1 `divMod`  2 = (-1,1)
+-1 `divMod`  3 = (-1,2)
+0 `divMod`  -3 = (0,0)
+0 `divMod`  -2 = (0,0)
+0 `divMod`  -1 = (0,0)
+0 `divMod`  0 = divide by zero
+0 `divMod`  1 = (0,0)
+0 `divMod`  2 = (0,0)
+0 `divMod`  3 = (0,0)
+1 `divMod`  -3 = (-1,-2)
+1 `divMod`  -2 = (-1,-1)
+1 `divMod`  -1 = (-1,0)
+1 `divMod`  0 = divide by zero
+1 `divMod`  1 = (1,0)
+1 `divMod`  2 = (0,1)
+1 `divMod`  3 = (0,1)
+2 `divMod`  -3 = (-1,-1)
+2 `divMod`  -2 = (-1,0)
+2 `divMod`  -1 = (-2,0)
+2 `divMod`  0 = divide by zero
+2 `divMod`  1 = (2,0)
+2 `divMod`  2 = (1,0)
+2 `divMod`  3 = (0,2)
+3 `divMod`  -3 = (-1,0)
+3 `divMod`  -2 = (-2,-1)
+3 `divMod`  -1 = (-3,0)
+3 `divMod`  0 = divide by zero
+3 `divMod`  1 = (3,0)
+3 `divMod`  2 = (1,1)
+3 `divMod`  3 = (1,0)
+#
+-3 `div`     -3 = 1
+-3 `div`     -2 = 1
+-3 `div`     -1 = 3
+-3 `div`     0 = divide by zero
+-3 `div`     1 = -3
+-3 `div`     2 = -2
+-3 `div`     3 = -1
+-2 `div`     -3 = 0
+-2 `div`     -2 = 1
+-2 `div`     -1 = 2
+-2 `div`     0 = divide by zero
+-2 `div`     1 = -2
+-2 `div`     2 = -1
+-2 `div`     3 = -1
+-1 `div`     -3 = 0
+-1 `div`     -2 = 0
+-1 `div`     -1 = 1
+-1 `div`     0 = divide by zero
+-1 `div`     1 = -1
+-1 `div`     2 = -1
+-1 `div`     3 = -1
+0 `div`     -3 = 0
+0 `div`     -2 = 0
+0 `div`     -1 = 0
+0 `div`     0 = divide by zero
+0 `div`     1 = 0
+0 `div`     2 = 0
+0 `div`     3 = 0
+1 `div`     -3 = -1
+1 `div`     -2 = -1
+1 `div`     -1 = -1
+1 `div`     0 = divide by zero
+1 `div`     1 = 1
+1 `div`     2 = 0
+1 `div`     3 = 0
+2 `div`     -3 = -1
+2 `div`     -2 = -1
+2 `div`     -1 = -2
+2 `div`     0 = divide by zero
+2 `div`     1 = 2
+2 `div`     2 = 1
+2 `div`     3 = 0
+3 `div`     -3 = -1
+3 `div`     -2 = -2
+3 `div`     -1 = -3
+3 `div`     0 = divide by zero
+3 `div`     1 = 3
+3 `div`     2 = 1
+3 `div`     3 = 1
+#
+-3 `mod`     -3 = 0
+-3 `mod`     -2 = -1
+-3 `mod`     -1 = 0
+-3 `mod`     0 = divide by zero
+-3 `mod`     1 = 0
+-3 `mod`     2 = 1
+-3 `mod`     3 = 0
+-2 `mod`     -3 = -2
+-2 `mod`     -2 = 0
+-2 `mod`     -1 = 0
+-2 `mod`     0 = divide by zero
+-2 `mod`     1 = 0
+-2 `mod`     2 = 0
+-2 `mod`     3 = 1
+-1 `mod`     -3 = -1
+-1 `mod`     -2 = -1
+-1 `mod`     -1 = 0
+-1 `mod`     0 = divide by zero
+-1 `mod`     1 = 0
+-1 `mod`     2 = 1
+-1 `mod`     3 = 2
+0 `mod`     -3 = 0
+0 `mod`     -2 = 0
+0 `mod`     -1 = 0
+0 `mod`     0 = divide by zero
+0 `mod`     1 = 0
+0 `mod`     2 = 0
+0 `mod`     3 = 0
+1 `mod`     -3 = -2
+1 `mod`     -2 = -1
+1 `mod`     -1 = 0
+1 `mod`     0 = divide by zero
+1 `mod`     1 = 0
+1 `mod`     2 = 1
+1 `mod`     3 = 1
+2 `mod`     -3 = -1
+2 `mod`     -2 = 0
+2 `mod`     -1 = 0
+2 `mod`     0 = divide by zero
+2 `mod`     1 = 0
+2 `mod`     2 = 0
+2 `mod`     3 = 2
+3 `mod`     -3 = 0
+3 `mod`     -2 = -1
+3 `mod`     -1 = 0
+3 `mod`     0 = divide by zero
+3 `mod`     1 = 0
+3 `mod`     2 = 1
+3 `mod`     3 = 0
+#
+-3 `quotRem` -3 = (1,0)
+-3 `quotRem` -2 = (1,-1)
+-3 `quotRem` -1 = (3,0)
+-3 `quotRem` 0 = divide by zero
+-3 `quotRem` 1 = (-3,0)
+-3 `quotRem` 2 = (-1,-1)
+-3 `quotRem` 3 = (-1,0)
+-2 `quotRem` -3 = (0,-2)
+-2 `quotRem` -2 = (1,0)
+-2 `quotRem` -1 = (2,0)
+-2 `quotRem` 0 = divide by zero
+-2 `quotRem` 1 = (-2,0)
+-2 `quotRem` 2 = (-1,0)
+-2 `quotRem` 3 = (0,-2)
+-1 `quotRem` -3 = (0,-1)
+-1 `quotRem` -2 = (0,-1)
+-1 `quotRem` -1 = (1,0)
+-1 `quotRem` 0 = divide by zero
+-1 `quotRem` 1 = (-1,0)
+-1 `quotRem` 2 = (0,-1)
+-1 `quotRem` 3 = (0,-1)
+0 `quotRem` -3 = (0,0)
+0 `quotRem` -2 = (0,0)
+0 `quotRem` -1 = (0,0)
+0 `quotRem` 0 = divide by zero
+0 `quotRem` 1 = (0,0)
+0 `quotRem` 2 = (0,0)
+0 `quotRem` 3 = (0,0)
+1 `quotRem` -3 = (0,1)
+1 `quotRem` -2 = (0,1)
+1 `quotRem` -1 = (-1,0)
+1 `quotRem` 0 = divide by zero
+1 `quotRem` 1 = (1,0)
+1 `quotRem` 2 = (0,1)
+1 `quotRem` 3 = (0,1)
+2 `quotRem` -3 = (0,2)
+2 `quotRem` -2 = (-1,0)
+2 `quotRem` -1 = (-2,0)
+2 `quotRem` 0 = divide by zero
+2 `quotRem` 1 = (2,0)
+2 `quotRem` 2 = (1,0)
+2 `quotRem` 3 = (0,2)
+3 `quotRem` -3 = (-1,0)
+3 `quotRem` -2 = (-1,1)
+3 `quotRem` -1 = (-3,0)
+3 `quotRem` 0 = divide by zero
+3 `quotRem` 1 = (3,0)
+3 `quotRem` 2 = (1,1)
+3 `quotRem` 3 = (1,0)
+#
+-3 `quot`    -3 = 1
+-3 `quot`    -2 = 1
+-3 `quot`    -1 = 3
+-3 `quot`    0 = divide by zero
+-3 `quot`    1 = -3
+-3 `quot`    2 = -1
+-3 `quot`    3 = -1
+-2 `quot`    -3 = 0
+-2 `quot`    -2 = 1
+-2 `quot`    -1 = 2
+-2 `quot`    0 = divide by zero
+-2 `quot`    1 = -2
+-2 `quot`    2 = -1
+-2 `quot`    3 = 0
+-1 `quot`    -3 = 0
+-1 `quot`    -2 = 0
+-1 `quot`    -1 = 1
+-1 `quot`    0 = divide by zero
+-1 `quot`    1 = -1
+-1 `quot`    2 = 0
+-1 `quot`    3 = 0
+0 `quot`    -3 = 0
+0 `quot`    -2 = 0
+0 `quot`    -1 = 0
+0 `quot`    0 = divide by zero
+0 `quot`    1 = 0
+0 `quot`    2 = 0
+0 `quot`    3 = 0
+1 `quot`    -3 = 0
+1 `quot`    -2 = 0
+1 `quot`    -1 = -1
+1 `quot`    0 = divide by zero
+1 `quot`    1 = 1
+1 `quot`    2 = 0
+1 `quot`    3 = 0
+2 `quot`    -3 = 0
+2 `quot`    -2 = -1
+2 `quot`    -1 = -2
+2 `quot`    0 = divide by zero
+2 `quot`    1 = 2
+2 `quot`    2 = 1
+2 `quot`    3 = 0
+3 `quot`    -3 = -1
+3 `quot`    -2 = -1
+3 `quot`    -1 = -3
+3 `quot`    0 = divide by zero
+3 `quot`    1 = 3
+3 `quot`    2 = 1
+3 `quot`    3 = 1
+#
+-3 `rem`     -3 = 0
+-3 `rem`     -2 = -1
+-3 `rem`     -1 = 0
+-3 `rem`     0 = divide by zero
+-3 `rem`     1 = 0
+-3 `rem`     2 = -1
+-3 `rem`     3 = 0
+-2 `rem`     -3 = -2
+-2 `rem`     -2 = 0
+-2 `rem`     -1 = 0
+-2 `rem`     0 = divide by zero
+-2 `rem`     1 = 0
+-2 `rem`     2 = 0
+-2 `rem`     3 = -2
+-1 `rem`     -3 = -1
+-1 `rem`     -2 = -1
+-1 `rem`     -1 = 0
+-1 `rem`     0 = divide by zero
+-1 `rem`     1 = 0
+-1 `rem`     2 = -1
+-1 `rem`     3 = -1
+0 `rem`     -3 = 0
+0 `rem`     -2 = 0
+0 `rem`     -1 = 0
+0 `rem`     0 = divide by zero
+0 `rem`     1 = 0
+0 `rem`     2 = 0
+0 `rem`     3 = 0
+1 `rem`     -3 = 1
+1 `rem`     -2 = 1
+1 `rem`     -1 = 0
+1 `rem`     0 = divide by zero
+1 `rem`     1 = 0
+1 `rem`     2 = 1
+1 `rem`     3 = 1
+2 `rem`     -3 = 2
+2 `rem`     -2 = 0
+2 `rem`     -1 = 0
+2 `rem`     0 = divide by zero
+2 `rem`     1 = 0
+2 `rem`     2 = 0
+2 `rem`     3 = 2
+3 `rem`     -3 = 0
+3 `rem`     -2 = 1
+3 `rem`     -1 = 0
+3 `rem`     0 = divide by zero
+3 `rem`     1 = 0
+3 `rem`     2 = 1
+3 `rem`     3 = 0
+#
+testConversions
+Integer : [-9223372036854775808,0,9223372036854775807]
+Int     : [-9223372036854775808,0,9223372036854775807]
+Int8    : [0,0,-1]
+Int16   : [0,0,-1]
+Int32   : [0,0,-1]
+Int64   : [-9223372036854775808,0,9223372036854775807]
+Word8   : [0,0,255]
+Word16  : [0,0,65535]
+Word32  : [0,0,4294967295]
+Word64  : [9223372036854775808,0,9223372036854775807]
+testBits
+-3 .&.   -3 = -3
+-3 .&.   -2 = -4
+-3 .&.   -1 = -3
+-3 .&.   0 = 0
+-3 .&.   1 = 1
+-3 .&.   2 = 0
+-3 .&.   3 = 1
+-2 .&.   -3 = -4
+-2 .&.   -2 = -2
+-2 .&.   -1 = -2
+-2 .&.   0 = 0
+-2 .&.   1 = 0
+-2 .&.   2 = 2
+-2 .&.   3 = 2
+-1 .&.   -3 = -3
+-1 .&.   -2 = -2
+-1 .&.   -1 = -1
+-1 .&.   0 = 0
+-1 .&.   1 = 1
+-1 .&.   2 = 2
+-1 .&.   3 = 3
+0 .&.   -3 = 0
+0 .&.   -2 = 0
+0 .&.   -1 = 0
+0 .&.   0 = 0
+0 .&.   1 = 0
+0 .&.   2 = 0
+0 .&.   3 = 0
+1 .&.   -3 = 1
+1 .&.   -2 = 0
+1 .&.   -1 = 1
+1 .&.   0 = 0
+1 .&.   1 = 1
+1 .&.   2 = 0
+1 .&.   3 = 1
+2 .&.   -3 = 0
+2 .&.   -2 = 2
+2 .&.   -1 = 2
+2 .&.   0 = 0
+2 .&.   1 = 0
+2 .&.   2 = 2
+2 .&.   3 = 2
+3 .&.   -3 = 1
+3 .&.   -2 = 2
+3 .&.   -1 = 3
+3 .&.   0 = 0
+3 .&.   1 = 1
+3 .&.   2 = 2
+3 .&.   3 = 3
+#
+-3 .|.   -3 = -3
+-3 .|.   -2 = -1
+-3 .|.   -1 = -1
+-3 .|.   0 = -3
+-3 .|.   1 = -3
+-3 .|.   2 = -1
+-3 .|.   3 = -1
+-2 .|.   -3 = -1
+-2 .|.   -2 = -2
+-2 .|.   -1 = -1
+-2 .|.   0 = -2
+-2 .|.   1 = -1
+-2 .|.   2 = -2
+-2 .|.   3 = -1
+-1 .|.   -3 = -1
+-1 .|.   -2 = -1
+-1 .|.   -1 = -1
+-1 .|.   0 = -1
+-1 .|.   1 = -1
+-1 .|.   2 = -1
+-1 .|.   3 = -1
+0 .|.   -3 = -3
+0 .|.   -2 = -2
+0 .|.   -1 = -1
+0 .|.   0 = 0
+0 .|.   1 = 1
+0 .|.   2 = 2
+0 .|.   3 = 3
+1 .|.   -3 = -3
+1 .|.   -2 = -1
+1 .|.   -1 = -1
+1 .|.   0 = 1
+1 .|.   1 = 1
+1 .|.   2 = 3
+1 .|.   3 = 3
+2 .|.   -3 = -1
+2 .|.   -2 = -2
+2 .|.   -1 = -1
+2 .|.   0 = 2
+2 .|.   1 = 3
+2 .|.   2 = 2
+2 .|.   3 = 3
+3 .|.   -3 = -1
+3 .|.   -2 = -1
+3 .|.   -1 = -1
+3 .|.   0 = 3
+3 .|.   1 = 3
+3 .|.   2 = 3
+3 .|.   3 = 3
+#
+-3 `xor` -3 = 0
+-3 `xor` -2 = 3
+-3 `xor` -1 = 2
+-3 `xor` 0 = -3
+-3 `xor` 1 = -4
+-3 `xor` 2 = -1
+-3 `xor` 3 = -2
+-2 `xor` -3 = 3
+-2 `xor` -2 = 0
+-2 `xor` -1 = 1
+-2 `xor` 0 = -2
+-2 `xor` 1 = -1
+-2 `xor` 2 = -4
+-2 `xor` 3 = -3
+-1 `xor` -3 = 2
+-1 `xor` -2 = 1
+-1 `xor` -1 = 0
+-1 `xor` 0 = -1
+-1 `xor` 1 = -2
+-1 `xor` 2 = -3
+-1 `xor` 3 = -4
+0 `xor` -3 = -3
+0 `xor` -2 = -2
+0 `xor` -1 = -1
+0 `xor` 0 = 0
+0 `xor` 1 = 1
+0 `xor` 2 = 2
+0 `xor` 3 = 3
+1 `xor` -3 = -4
+1 `xor` -2 = -1
+1 `xor` -1 = -2
+1 `xor` 0 = 1
+1 `xor` 1 = 0
+1 `xor` 2 = 3
+1 `xor` 3 = 2
+2 `xor` -3 = -1
+2 `xor` -2 = -4
+2 `xor` -1 = -3
+2 `xor` 0 = 2
+2 `xor` 1 = 3
+2 `xor` 2 = 0
+2 `xor` 3 = 1
+3 `xor` -3 = -2
+3 `xor` -2 = -3
+3 `xor` -1 = -4
+3 `xor` 0 = 3
+3 `xor` 1 = 2
+3 `xor` 2 = 1
+3 `xor` 3 = 0
+#
+complement -3 = 2
+complement -2 = 1
+complement -1 = 0
+complement 0 = -1
+complement 1 = -2
+complement 2 = -3
+complement 3 = -4
+#
+-3 `shiftL` 0 = -3
+-3 `shiftL` 1 = -6
+-3 `shiftL` 2 = -12
+-3 `shiftL` 3 = -24
+-3 `shiftL` 32 = -12884901888
+-3 `shiftL` 64 = 0
+-2 `shiftL` 0 = -2
+-2 `shiftL` 1 = -4
+-2 `shiftL` 2 = -8
+-2 `shiftL` 3 = -16
+-2 `shiftL` 32 = -8589934592
+-2 `shiftL` 64 = 0
+-1 `shiftL` 0 = -1
+-1 `shiftL` 1 = -2
+-1 `shiftL` 2 = -4
+-1 `shiftL` 3 = -8
+-1 `shiftL` 32 = -4294967296
+-1 `shiftL` 64 = 0
+0 `shiftL` 0 = 0
+0 `shiftL` 1 = 0
+0 `shiftL` 2 = 0
+0 `shiftL` 3 = 0
+0 `shiftL` 32 = 0
+0 `shiftL` 64 = 0
+1 `shiftL` 0 = 1
+1 `shiftL` 1 = 2
+1 `shiftL` 2 = 4
+1 `shiftL` 3 = 8
+1 `shiftL` 32 = 4294967296
+1 `shiftL` 64 = 0
+2 `shiftL` 0 = 2
+2 `shiftL` 1 = 4
+2 `shiftL` 2 = 8
+2 `shiftL` 3 = 16
+2 `shiftL` 32 = 8589934592
+2 `shiftL` 64 = 0
+3 `shiftL` 0 = 3
+3 `shiftL` 1 = 6
+3 `shiftL` 2 = 12
+3 `shiftL` 3 = 24
+3 `shiftL` 32 = 12884901888
+3 `shiftL` 64 = 0
+#
+-3 `shiftR` 0 = -3
+-3 `shiftR` 1 = -2
+-3 `shiftR` 2 = -1
+-3 `shiftR` 3 = -1
+-3 `shiftR` 32 = -1
+-3 `shiftR` 64 = -1
+-2 `shiftR` 0 = -2
+-2 `shiftR` 1 = -1
+-2 `shiftR` 2 = -1
+-2 `shiftR` 3 = -1
+-2 `shiftR` 32 = -1
+-2 `shiftR` 64 = -1
+-1 `shiftR` 0 = -1
+-1 `shiftR` 1 = -1
+-1 `shiftR` 2 = -1
+-1 `shiftR` 3 = -1
+-1 `shiftR` 32 = -1
+-1 `shiftR` 64 = -1
+0 `shiftR` 0 = 0
+0 `shiftR` 1 = 0
+0 `shiftR` 2 = 0
+0 `shiftR` 3 = 0
+0 `shiftR` 32 = 0
+0 `shiftR` 64 = 0
+1 `shiftR` 0 = 1
+1 `shiftR` 1 = 0
+1 `shiftR` 2 = 0
+1 `shiftR` 3 = 0
+1 `shiftR` 32 = 0
+1 `shiftR` 64 = 0
+2 `shiftR` 0 = 2
+2 `shiftR` 1 = 1
+2 `shiftR` 2 = 0
+2 `shiftR` 3 = 0
+2 `shiftR` 32 = 0
+2 `shiftR` 64 = 0
+3 `shiftR` 0 = 3
+3 `shiftR` 1 = 1
+3 `shiftR` 2 = 0
+3 `shiftR` 3 = 0
+3 `shiftR` 32 = 0
+3 `shiftR` 64 = 0
+#
+-3 `rotate` -3 = -4611686018427387905
+-3 `rotate` -2 = 9223372036854775807
+-3 `rotate` -1 = -2
+-3 `rotate` 0 = -3
+-3 `rotate` 1 = -5
+-3 `rotate` 2 = -9
+-3 `rotate` 3 = -17
+-2 `rotate` -3 = -2305843009213693953
+-2 `rotate` -2 = -4611686018427387905
+-2 `rotate` -1 = 9223372036854775807
+-2 `rotate` 0 = -2
+-2 `rotate` 1 = -3
+-2 `rotate` 2 = -5
+-2 `rotate` 3 = -9
+-1 `rotate` -3 = -1
+-1 `rotate` -2 = -1
+-1 `rotate` -1 = -1
+-1 `rotate` 0 = -1
+-1 `rotate` 1 = -1
+-1 `rotate` 2 = -1
+-1 `rotate` 3 = -1
+0 `rotate` -3 = 0
+0 `rotate` -2 = 0
+0 `rotate` -1 = 0
+0 `rotate` 0 = 0
+0 `rotate` 1 = 0
+0 `rotate` 2 = 0
+0 `rotate` 3 = 0
+1 `rotate` -3 = 2305843009213693952
+1 `rotate` -2 = 4611686018427387904
+1 `rotate` -1 = -9223372036854775808
+1 `rotate` 0 = 1
+1 `rotate` 1 = 2
+1 `rotate` 2 = 4
+1 `rotate` 3 = 8
+2 `rotate` -3 = 4611686018427387904
+2 `rotate` -2 = -9223372036854775808
+2 `rotate` -1 = 1
+2 `rotate` 0 = 2
+2 `rotate` 1 = 4
+2 `rotate` 2 = 8
+2 `rotate` 3 = 16
+3 `rotate` -3 = 6917529027641081856
+3 `rotate` -2 = -4611686018427387904
+3 `rotate` -1 = -9223372036854775807
+3 `rotate` 0 = 3
+3 `rotate` 1 = 6
+3 `rotate` 2 = 12
+3 `rotate` 3 = 24
+#
+bit 0 = 1
+bit 1 = 2
+bit 2 = 4
+bit 3 = 8
+#
+-3 `setBit` 0 = -3
+-3 `setBit` 1 = -1
+-3 `setBit` 2 = -3
+-3 `setBit` 3 = -3
+-3 `setBit` 32 = -3
+-3 `setBit` 64 = -3
+-2 `setBit` 0 = -1
+-2 `setBit` 1 = -2
+-2 `setBit` 2 = -2
+-2 `setBit` 3 = -2
+-2 `setBit` 32 = -2
+-2 `setBit` 64 = -2
+-1 `setBit` 0 = -1
+-1 `setBit` 1 = -1
+-1 `setBit` 2 = -1
+-1 `setBit` 3 = -1
+-1 `setBit` 32 = -1
+-1 `setBit` 64 = -1
+0 `setBit` 0 = 1
+0 `setBit` 1 = 2
+0 `setBit` 2 = 4
+0 `setBit` 3 = 8
+0 `setBit` 32 = 4294967296
+0 `setBit` 64 = 0
+1 `setBit` 0 = 1
+1 `setBit` 1 = 3
+1 `setBit` 2 = 5
+1 `setBit` 3 = 9
+1 `setBit` 32 = 4294967297
+1 `setBit` 64 = 1
+2 `setBit` 0 = 3
+2 `setBit` 1 = 2
+2 `setBit` 2 = 6
+2 `setBit` 3 = 10
+2 `setBit` 32 = 4294967298
+2 `setBit` 64 = 2
+3 `setBit` 0 = 3
+3 `setBit` 1 = 3
+3 `setBit` 2 = 7
+3 `setBit` 3 = 11
+3 `setBit` 32 = 4294967299
+3 `setBit` 64 = 3
+#
+-3 `clearBit` 0 = -4
+-3 `clearBit` 1 = -3
+-3 `clearBit` 2 = -7
+-3 `clearBit` 3 = -11
+-3 `clearBit` 32 = -4294967299
+-3 `clearBit` 64 = -3
+-2 `clearBit` 0 = -2
+-2 `clearBit` 1 = -4
+-2 `clearBit` 2 = -6
+-2 `clearBit` 3 = -10
+-2 `clearBit` 32 = -4294967298
+-2 `clearBit` 64 = -2
+-1 `clearBit` 0 = -2
+-1 `clearBit` 1 = -3
+-1 `clearBit` 2 = -5
+-1 `clearBit` 3 = -9
+-1 `clearBit` 32 = -4294967297
+-1 `clearBit` 64 = -1
+0 `clearBit` 0 = 0
+0 `clearBit` 1 = 0
+0 `clearBit` 2 = 0
+0 `clearBit` 3 = 0
+0 `clearBit` 32 = 0
+0 `clearBit` 64 = 0
+1 `clearBit` 0 = 0
+1 `clearBit` 1 = 1
+1 `clearBit` 2 = 1
+1 `clearBit` 3 = 1
+1 `clearBit` 32 = 1
+1 `clearBit` 64 = 1
+2 `clearBit` 0 = 2
+2 `clearBit` 1 = 0
+2 `clearBit` 2 = 2
+2 `clearBit` 3 = 2
+2 `clearBit` 32 = 2
+2 `clearBit` 64 = 2
+3 `clearBit` 0 = 2
+3 `clearBit` 1 = 1
+3 `clearBit` 2 = 3
+3 `clearBit` 3 = 3
+3 `clearBit` 32 = 3
+3 `clearBit` 64 = 3
+#
+-3 `complementBit` 0 = -4
+-3 `complementBit` 1 = -1
+-3 `complementBit` 2 = -7
+-3 `complementBit` 3 = -11
+-3 `complementBit` 32 = -4294967299
+-3 `complementBit` 64 = -3
+-2 `complementBit` 0 = -1
+-2 `complementBit` 1 = -4
+-2 `complementBit` 2 = -6
+-2 `complementBit` 3 = -10
+-2 `complementBit` 32 = -4294967298
+-2 `complementBit` 64 = -2
+-1 `complementBit` 0 = -2
+-1 `complementBit` 1 = -3
+-1 `complementBit` 2 = -5
+-1 `complementBit` 3 = -9
+-1 `complementBit` 32 = -4294967297
+-1 `complementBit` 64 = -1
+0 `complementBit` 0 = 1
+0 `complementBit` 1 = 2
+0 `complementBit` 2 = 4
+0 `complementBit` 3 = 8
+0 `complementBit` 32 = 4294967296
+0 `complementBit` 64 = 0
+1 `complementBit` 0 = 0
+1 `complementBit` 1 = 3
+1 `complementBit` 2 = 5
+1 `complementBit` 3 = 9
+1 `complementBit` 32 = 4294967297
+1 `complementBit` 64 = 1
+2 `complementBit` 0 = 3
+2 `complementBit` 1 = 0
+2 `complementBit` 2 = 6
+2 `complementBit` 3 = 10
+2 `complementBit` 32 = 4294967298
+2 `complementBit` 64 = 2
+3 `complementBit` 0 = 2
+3 `complementBit` 1 = 1
+3 `complementBit` 2 = 7
+3 `complementBit` 3 = 11
+3 `complementBit` 32 = 4294967299
+3 `complementBit` 64 = 3
+#
+-3 `testBit` 0 = True
+-3 `testBit` 1 = False
+-3 `testBit` 2 = True
+-3 `testBit` 3 = True
+-3 `testBit` 32 = True
+-3 `testBit` 64 = False
+-2 `testBit` 0 = False
+-2 `testBit` 1 = True
+-2 `testBit` 2 = True
+-2 `testBit` 3 = True
+-2 `testBit` 32 = True
+-2 `testBit` 64 = False
+-1 `testBit` 0 = True
+-1 `testBit` 1 = True
+-1 `testBit` 2 = True
+-1 `testBit` 3 = True
+-1 `testBit` 32 = True
+-1 `testBit` 64 = False
+0 `testBit` 0 = False
+0 `testBit` 1 = False
+0 `testBit` 2 = False
+0 `testBit` 3 = False
+0 `testBit` 32 = False
+0 `testBit` 64 = False
+1 `testBit` 0 = True
+1 `testBit` 1 = False
+1 `testBit` 2 = False
+1 `testBit` 3 = False
+1 `testBit` 32 = False
+1 `testBit` 64 = False
+2 `testBit` 0 = False
+2 `testBit` 1 = True
+2 `testBit` 2 = False
+2 `testBit` 3 = False
+2 `testBit` 32 = False
+2 `testBit` 64 = False
+3 `testBit` 0 = True
+3 `testBit` 1 = True
+3 `testBit` 2 = False
+3 `testBit` 3 = False
+3 `testBit` 32 = False
+3 `testBit` 64 = False
+#
+bitSize -3 = 64
+bitSize -2 = 64
+bitSize -1 = 64
+bitSize 0 = 64
+bitSize 1 = 64
+bitSize 2 = 64
+bitSize 3 = 64
+#
+isSigned -3 = True
+isSigned -2 = True
+isSigned -1 = True
+isSigned 0 = True
+isSigned 1 = True
+isSigned 2 = True
+isSigned 3 = True
+#
+--------------------------------
+--Testing Int8
+--------------------------------
+testBounded
+(127,-128,-127)
+(126,127,-128)
+testEnum
+[0,1,2,3,4,5,6,7,8,9]
+[0,2,4,6,8,10,12,14,16,18]
+[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
+[0,2,4,6,8,10,12,14,16,18,20]
+testReadShow
+[-3,-2,-1,0,1,2,3]
+[-3,-2,-1,0,1,2,3]
+testEq
+-3 == -3 = True
+-3 == -2 = False
+-3 == -1 = False
+-3 == 0 = False
+-3 == 1 = False
+-3 == 2 = False
+-3 == 3 = False
+-2 == -3 = False
+-2 == -2 = True
+-2 == -1 = False
+-2 == 0 = False
+-2 == 1 = False
+-2 == 2 = False
+-2 == 3 = False
+-1 == -3 = False
+-1 == -2 = False
+-1 == -1 = True
+-1 == 0 = False
+-1 == 1 = False
+-1 == 2 = False
+-1 == 3 = False
+0 == -3 = False
+0 == -2 = False
+0 == -1 = False
+0 == 0 = True
+0 == 1 = False
+0 == 2 = False
+0 == 3 = False
+1 == -3 = False
+1 == -2 = False
+1 == -1 = False
+1 == 0 = False
+1 == 1 = True
+1 == 2 = False
+1 == 3 = False
+2 == -3 = False
+2 == -2 = False
+2 == -1 = False
+2 == 0 = False
+2 == 1 = False
+2 == 2 = True
+2 == 3 = False
+3 == -3 = False
+3 == -2 = False
+3 == -1 = False
+3 == 0 = False
+3 == 1 = False
+3 == 2 = False
+3 == 3 = True
+#
+-3 /= -3 = False
+-3 /= -2 = True
+-3 /= -1 = True
+-3 /= 0 = True
+-3 /= 1 = True
+-3 /= 2 = True
+-3 /= 3 = True
+-2 /= -3 = True
+-2 /= -2 = False
+-2 /= -1 = True
+-2 /= 0 = True
+-2 /= 1 = True
+-2 /= 2 = True
+-2 /= 3 = True
+-1 /= -3 = True
+-1 /= -2 = True
+-1 /= -1 = False
+-1 /= 0 = True
+-1 /= 1 = True
+-1 /= 2 = True
+-1 /= 3 = True
+0 /= -3 = True
+0 /= -2 = True
+0 /= -1 = True
+0 /= 0 = False
+0 /= 1 = True
+0 /= 2 = True
+0 /= 3 = True
+1 /= -3 = True
+1 /= -2 = True
+1 /= -1 = True
+1 /= 0 = True
+1 /= 1 = False
+1 /= 2 = True
+1 /= 3 = True
+2 /= -3 = True
+2 /= -2 = True
+2 /= -1 = True
+2 /= 0 = True
+2 /= 1 = True
+2 /= 2 = False
+2 /= 3 = True
+3 /= -3 = True
+3 /= -2 = True
+3 /= -1 = True
+3 /= 0 = True
+3 /= 1 = True
+3 /= 2 = True
+3 /= 3 = False
+#
+testOrd
+-3 <= -3 = True
+-3 <= -2 = True
+-3 <= -1 = True
+-3 <= 0 = True
+-3 <= 1 = True
+-3 <= 2 = True
+-3 <= 3 = True
+-2 <= -3 = False
+-2 <= -2 = True
+-2 <= -1 = True
+-2 <= 0 = True
+-2 <= 1 = True
+-2 <= 2 = True
+-2 <= 3 = True
+-1 <= -3 = False
+-1 <= -2 = False
+-1 <= -1 = True
+-1 <= 0 = True
+-1 <= 1 = True
+-1 <= 2 = True
+-1 <= 3 = True
+0 <= -3 = False
+0 <= -2 = False
+0 <= -1 = False
+0 <= 0 = True
+0 <= 1 = True
+0 <= 2 = True
+0 <= 3 = True
+1 <= -3 = False
+1 <= -2 = False
+1 <= -1 = False
+1 <= 0 = False
+1 <= 1 = True
+1 <= 2 = True
+1 <= 3 = True
+2 <= -3 = False
+2 <= -2 = False
+2 <= -1 = False
+2 <= 0 = False
+2 <= 1 = False
+2 <= 2 = True
+2 <= 3 = True
+3 <= -3 = False
+3 <= -2 = False
+3 <= -1 = False
+3 <= 0 = False
+3 <= 1 = False
+3 <= 2 = False
+3 <= 3 = True
+#
+-3 <  -3 = False
+-3 <  -2 = True
+-3 <  -1 = True
+-3 <  0 = True
+-3 <  1 = True
+-3 <  2 = True
+-3 <  3 = True
+-2 <  -3 = False
+-2 <  -2 = False
+-2 <  -1 = True
+-2 <  0 = True
+-2 <  1 = True
+-2 <  2 = True
+-2 <  3 = True
+-1 <  -3 = False
+-1 <  -2 = False
+-1 <  -1 = False
+-1 <  0 = True
+-1 <  1 = True
+-1 <  2 = True
+-1 <  3 = True
+0 <  -3 = False
+0 <  -2 = False
+0 <  -1 = False
+0 <  0 = False
+0 <  1 = True
+0 <  2 = True
+0 <  3 = True
+1 <  -3 = False
+1 <  -2 = False
+1 <  -1 = False
+1 <  0 = False
+1 <  1 = False
+1 <  2 = True
+1 <  3 = True
+2 <  -3 = False
+2 <  -2 = False
+2 <  -1 = False
+2 <  0 = False
+2 <  1 = False
+2 <  2 = False
+2 <  3 = True
+3 <  -3 = False
+3 <  -2 = False
+3 <  -1 = False
+3 <  0 = False
+3 <  1 = False
+3 <  2 = False
+3 <  3 = False
+#
+-3 >  -3 = False
+-3 >  -2 = False
+-3 >  -1 = False
+-3 >  0 = False
+-3 >  1 = False
+-3 >  2 = False
+-3 >  3 = False
+-2 >  -3 = True
+-2 >  -2 = False
+-2 >  -1 = False
+-2 >  0 = False
+-2 >  1 = False
+-2 >  2 = False
+-2 >  3 = False
+-1 >  -3 = True
+-1 >  -2 = True
+-1 >  -1 = False
+-1 >  0 = False
+-1 >  1 = False
+-1 >  2 = False
+-1 >  3 = False
+0 >  -3 = True
+0 >  -2 = True
+0 >  -1 = True
+0 >  0 = False
+0 >  1 = False
+0 >  2 = False
+0 >  3 = False
+1 >  -3 = True
+1 >  -2 = True
+1 >  -1 = True
+1 >  0 = True
+1 >  1 = False
+1 >  2 = False
+1 >  3 = False
+2 >  -3 = True
+2 >  -2 = True
+2 >  -1 = True
+2 >  0 = True
+2 >  1 = True
+2 >  2 = False
+2 >  3 = False
+3 >  -3 = True
+3 >  -2 = True
+3 >  -1 = True
+3 >  0 = True
+3 >  1 = True
+3 >  2 = True
+3 >  3 = False
+#
+-3 >= -3 = True
+-3 >= -2 = False
+-3 >= -1 = False
+-3 >= 0 = False
+-3 >= 1 = False
+-3 >= 2 = False
+-3 >= 3 = False
+-2 >= -3 = True
+-2 >= -2 = True
+-2 >= -1 = False
+-2 >= 0 = False
+-2 >= 1 = False
+-2 >= 2 = False
+-2 >= 3 = False
+-1 >= -3 = True
+-1 >= -2 = True
+-1 >= -1 = True
+-1 >= 0 = False
+-1 >= 1 = False
+-1 >= 2 = False
+-1 >= 3 = False
+0 >= -3 = True
+0 >= -2 = True
+0 >= -1 = True
+0 >= 0 = True
+0 >= 1 = False
+0 >= 2 = False
+0 >= 3 = False
+1 >= -3 = True
+1 >= -2 = True
+1 >= -1 = True
+1 >= 0 = True
+1 >= 1 = True
+1 >= 2 = False
+1 >= 3 = False
+2 >= -3 = True
+2 >= -2 = True
+2 >= -1 = True
+2 >= 0 = True
+2 >= 1 = True
+2 >= 2 = True
+2 >= 3 = False
+3 >= -3 = True
+3 >= -2 = True
+3 >= -1 = True
+3 >= 0 = True
+3 >= 1 = True
+3 >= 2 = True
+3 >= 3 = True
+#
+-3 `compare` -3 = EQ
+-3 `compare` -2 = LT
+-3 `compare` -1 = LT
+-3 `compare` 0 = LT
+-3 `compare` 1 = LT
+-3 `compare` 2 = LT
+-3 `compare` 3 = LT
+-2 `compare` -3 = GT
+-2 `compare` -2 = EQ
+-2 `compare` -1 = LT
+-2 `compare` 0 = LT
+-2 `compare` 1 = LT
+-2 `compare` 2 = LT
+-2 `compare` 3 = LT
+-1 `compare` -3 = GT
+-1 `compare` -2 = GT
+-1 `compare` -1 = EQ
+-1 `compare` 0 = LT
+-1 `compare` 1 = LT
+-1 `compare` 2 = LT
+-1 `compare` 3 = LT
+0 `compare` -3 = GT
+0 `compare` -2 = GT
+0 `compare` -1 = GT
+0 `compare` 0 = EQ
+0 `compare` 1 = LT
+0 `compare` 2 = LT
+0 `compare` 3 = LT
+1 `compare` -3 = GT
+1 `compare` -2 = GT
+1 `compare` -1 = GT
+1 `compare` 0 = GT
+1 `compare` 1 = EQ
+1 `compare` 2 = LT
+1 `compare` 3 = LT
+2 `compare` -3 = GT
+2 `compare` -2 = GT
+2 `compare` -1 = GT
+2 `compare` 0 = GT
+2 `compare` 1 = GT
+2 `compare` 2 = EQ
+2 `compare` 3 = LT
+3 `compare` -3 = GT
+3 `compare` -2 = GT
+3 `compare` -1 = GT
+3 `compare` 0 = GT
+3 `compare` 1 = GT
+3 `compare` 2 = GT
+3 `compare` 3 = EQ
+#
+testNum
+-3 + -3 = -6
+-3 + -2 = -5
+-3 + -1 = -4
+-3 + 0 = -3
+-3 + 1 = -2
+-3 + 2 = -1
+-3 + 3 = 0
+-2 + -3 = -5
+-2 + -2 = -4
+-2 + -1 = -3
+-2 + 0 = -2
+-2 + 1 = -1
+-2 + 2 = 0
+-2 + 3 = 1
+-1 + -3 = -4
+-1 + -2 = -3
+-1 + -1 = -2
+-1 + 0 = -1
+-1 + 1 = 0
+-1 + 2 = 1
+-1 + 3 = 2
+0 + -3 = -3
+0 + -2 = -2
+0 + -1 = -1
+0 + 0 = 0
+0 + 1 = 1
+0 + 2 = 2
+0 + 3 = 3
+1 + -3 = -2
+1 + -2 = -1
+1 + -1 = 0
+1 + 0 = 1
+1 + 1 = 2
+1 + 2 = 3
+1 + 3 = 4
+2 + -3 = -1
+2 + -2 = 0
+2 + -1 = 1
+2 + 0 = 2
+2 + 1 = 3
+2 + 2 = 4
+2 + 3 = 5
+3 + -3 = 0
+3 + -2 = 1
+3 + -1 = 2
+3 + 0 = 3
+3 + 1 = 4
+3 + 2 = 5
+3 + 3 = 6
+#
+-3 - -3 = 0
+-3 - -2 = -1
+-3 - -1 = -2
+-3 - 0 = -3
+-3 - 1 = -4
+-3 - 2 = -5
+-3 - 3 = -6
+-2 - -3 = 1
+-2 - -2 = 0
+-2 - -1 = -1
+-2 - 0 = -2
+-2 - 1 = -3
+-2 - 2 = -4
+-2 - 3 = -5
+-1 - -3 = 2
+-1 - -2 = 1
+-1 - -1 = 0
+-1 - 0 = -1
+-1 - 1 = -2
+-1 - 2 = -3
+-1 - 3 = -4
+0 - -3 = 3
+0 - -2 = 2
+0 - -1 = 1
+0 - 0 = 0
+0 - 1 = -1
+0 - 2 = -2
+0 - 3 = -3
+1 - -3 = 4
+1 - -2 = 3
+1 - -1 = 2
+1 - 0 = 1
+1 - 1 = 0
+1 - 2 = -1
+1 - 3 = -2
+2 - -3 = 5
+2 - -2 = 4
+2 - -1 = 3
+2 - 0 = 2
+2 - 1 = 1
+2 - 2 = 0
+2 - 3 = -1
+3 - -3 = 6
+3 - -2 = 5
+3 - -1 = 4
+3 - 0 = 3
+3 - 1 = 2
+3 - 2 = 1
+3 - 3 = 0
+#
+-3 * -3 = 9
+-3 * -2 = 6
+-3 * -1 = 3
+-3 * 0 = 0
+-3 * 1 = -3
+-3 * 2 = -6
+-3 * 3 = -9
+-2 * -3 = 6
+-2 * -2 = 4
+-2 * -1 = 2
+-2 * 0 = 0
+-2 * 1 = -2
+-2 * 2 = -4
+-2 * 3 = -6
+-1 * -3 = 3
+-1 * -2 = 2
+-1 * -1 = 1
+-1 * 0 = 0
+-1 * 1 = -1
+-1 * 2 = -2
+-1 * 3 = -3
+0 * -3 = 0
+0 * -2 = 0
+0 * -1 = 0
+0 * 0 = 0
+0 * 1 = 0
+0 * 2 = 0
+0 * 3 = 0
+1 * -3 = -3
+1 * -2 = -2
+1 * -1 = -1
+1 * 0 = 0
+1 * 1 = 1
+1 * 2 = 2
+1 * 3 = 3
+2 * -3 = -6
+2 * -2 = -4
+2 * -1 = -2
+2 * 0 = 0
+2 * 1 = 2
+2 * 2 = 4
+2 * 3 = 6
+3 * -3 = -9
+3 * -2 = -6
+3 * -1 = -3
+3 * 0 = 0
+3 * 1 = 3
+3 * 2 = 6
+3 * 3 = 9
+#
+negate -3 = 3
+negate -2 = 2
+negate -1 = 1
+negate 0 = 0
+negate 1 = -1
+negate 2 = -2
+negate 3 = -3
+#
+testReal
+toRational -3 = (-3)%1
+toRational -2 = (-2)%1
+toRational -1 = (-1)%1
+toRational 0 = 0%1
+toRational 1 = 1%1
+toRational 2 = 2%1
+toRational 3 = 3%1
+#
+testIntegral
+-3 `divMod`  -3 = (1,0)
+-3 `divMod`  -2 = (1,-1)
+-3 `divMod`  -1 = (3,0)
+-3 `divMod`  0 = divide by zero
+-3 `divMod`  1 = (-3,0)
+-3 `divMod`  2 = (-2,1)
+-3 `divMod`  3 = (-1,0)
+-2 `divMod`  -3 = (0,-2)
+-2 `divMod`  -2 = (1,0)
+-2 `divMod`  -1 = (2,0)
+-2 `divMod`  0 = divide by zero
+-2 `divMod`  1 = (-2,0)
+-2 `divMod`  2 = (-1,0)
+-2 `divMod`  3 = (-1,1)
+-1 `divMod`  -3 = (0,-1)
+-1 `divMod`  -2 = (0,-1)
+-1 `divMod`  -1 = (1,0)
+-1 `divMod`  0 = divide by zero
+-1 `divMod`  1 = (-1,0)
+-1 `divMod`  2 = (-1,1)
+-1 `divMod`  3 = (-1,2)
+0 `divMod`  -3 = (0,0)
+0 `divMod`  -2 = (0,0)
+0 `divMod`  -1 = (0,0)
+0 `divMod`  0 = divide by zero
+0 `divMod`  1 = (0,0)
+0 `divMod`  2 = (0,0)
+0 `divMod`  3 = (0,0)
+1 `divMod`  -3 = (-1,-2)
+1 `divMod`  -2 = (-1,-1)
+1 `divMod`  -1 = (-1,0)
+1 `divMod`  0 = divide by zero
+1 `divMod`  1 = (1,0)
+1 `divMod`  2 = (0,1)
+1 `divMod`  3 = (0,1)
+2 `divMod`  -3 = (-1,-1)
+2 `divMod`  -2 = (-1,0)
+2 `divMod`  -1 = (-2,0)
+2 `divMod`  0 = divide by zero
+2 `divMod`  1 = (2,0)
+2 `divMod`  2 = (1,0)
+2 `divMod`  3 = (0,2)
+3 `divMod`  -3 = (-1,0)
+3 `divMod`  -2 = (-2,-1)
+3 `divMod`  -1 = (-3,0)
+3 `divMod`  0 = divide by zero
+3 `divMod`  1 = (3,0)
+3 `divMod`  2 = (1,1)
+3 `divMod`  3 = (1,0)
+#
+-3 `div`     -3 = 1
+-3 `div`     -2 = 1
+-3 `div`     -1 = 3
+-3 `div`     0 = divide by zero
+-3 `div`     1 = -3
+-3 `div`     2 = -2
+-3 `div`     3 = -1
+-2 `div`     -3 = 0
+-2 `div`     -2 = 1
+-2 `div`     -1 = 2
+-2 `div`     0 = divide by zero
+-2 `div`     1 = -2
+-2 `div`     2 = -1
+-2 `div`     3 = -1
+-1 `div`     -3 = 0
+-1 `div`     -2 = 0
+-1 `div`     -1 = 1
+-1 `div`     0 = divide by zero
+-1 `div`     1 = -1
+-1 `div`     2 = -1
+-1 `div`     3 = -1
+0 `div`     -3 = 0
+0 `div`     -2 = 0
+0 `div`     -1 = 0
+0 `div`     0 = divide by zero
+0 `div`     1 = 0
+0 `div`     2 = 0
+0 `div`     3 = 0
+1 `div`     -3 = -1
+1 `div`     -2 = -1
+1 `div`     -1 = -1
+1 `div`     0 = divide by zero
+1 `div`     1 = 1
+1 `div`     2 = 0
+1 `div`     3 = 0
+2 `div`     -3 = -1
+2 `div`     -2 = -1
+2 `div`     -1 = -2
+2 `div`     0 = divide by zero
+2 `div`     1 = 2
+2 `div`     2 = 1
+2 `div`     3 = 0
+3 `div`     -3 = -1
+3 `div`     -2 = -2
+3 `div`     -1 = -3
+3 `div`     0 = divide by zero
+3 `div`     1 = 3
+3 `div`     2 = 1
+3 `div`     3 = 1
+#
+-3 `mod`     -3 = 0
+-3 `mod`     -2 = -1
+-3 `mod`     -1 = 0
+-3 `mod`     0 = divide by zero
+-3 `mod`     1 = 0
+-3 `mod`     2 = 1
+-3 `mod`     3 = 0
+-2 `mod`     -3 = -2
+-2 `mod`     -2 = 0
+-2 `mod`     -1 = 0
+-2 `mod`     0 = divide by zero
+-2 `mod`     1 = 0
+-2 `mod`     2 = 0
+-2 `mod`     3 = 1
+-1 `mod`     -3 = -1
+-1 `mod`     -2 = -1
+-1 `mod`     -1 = 0
+-1 `mod`     0 = divide by zero
+-1 `mod`     1 = 0
+-1 `mod`     2 = 1
+-1 `mod`     3 = 2
+0 `mod`     -3 = 0
+0 `mod`     -2 = 0
+0 `mod`     -1 = 0
+0 `mod`     0 = divide by zero
+0 `mod`     1 = 0
+0 `mod`     2 = 0
+0 `mod`     3 = 0
+1 `mod`     -3 = -2
+1 `mod`     -2 = -1
+1 `mod`     -1 = 0
+1 `mod`     0 = divide by zero
+1 `mod`     1 = 0
+1 `mod`     2 = 1
+1 `mod`     3 = 1
+2 `mod`     -3 = -1
+2 `mod`     -2 = 0
+2 `mod`     -1 = 0
+2 `mod`     0 = divide by zero
+2 `mod`     1 = 0
+2 `mod`     2 = 0
+2 `mod`     3 = 2
+3 `mod`     -3 = 0
+3 `mod`     -2 = -1
+3 `mod`     -1 = 0
+3 `mod`     0 = divide by zero
+3 `mod`     1 = 0
+3 `mod`     2 = 1
+3 `mod`     3 = 0
+#
+-3 `quotRem` -3 = (1,0)
+-3 `quotRem` -2 = (1,-1)
+-3 `quotRem` -1 = (3,0)
+-3 `quotRem` 0 = divide by zero
+-3 `quotRem` 1 = (-3,0)
+-3 `quotRem` 2 = (-1,-1)
+-3 `quotRem` 3 = (-1,0)
+-2 `quotRem` -3 = (0,-2)
+-2 `quotRem` -2 = (1,0)
+-2 `quotRem` -1 = (2,0)
+-2 `quotRem` 0 = divide by zero
+-2 `quotRem` 1 = (-2,0)
+-2 `quotRem` 2 = (-1,0)
+-2 `quotRem` 3 = (0,-2)
+-1 `quotRem` -3 = (0,-1)
+-1 `quotRem` -2 = (0,-1)
+-1 `quotRem` -1 = (1,0)
+-1 `quotRem` 0 = divide by zero
+-1 `quotRem` 1 = (-1,0)
+-1 `quotRem` 2 = (0,-1)
+-1 `quotRem` 3 = (0,-1)
+0 `quotRem` -3 = (0,0)
+0 `quotRem` -2 = (0,0)
+0 `quotRem` -1 = (0,0)
+0 `quotRem` 0 = divide by zero
+0 `quotRem` 1 = (0,0)
+0 `quotRem` 2 = (0,0)
+0 `quotRem` 3 = (0,0)
+1 `quotRem` -3 = (0,1)
+1 `quotRem` -2 = (0,1)
+1 `quotRem` -1 = (-1,0)
+1 `quotRem` 0 = divide by zero
+1 `quotRem` 1 = (1,0)
+1 `quotRem` 2 = (0,1)
+1 `quotRem` 3 = (0,1)
+2 `quotRem` -3 = (0,2)
+2 `quotRem` -2 = (-1,0)
+2 `quotRem` -1 = (-2,0)
+2 `quotRem` 0 = divide by zero
+2 `quotRem` 1 = (2,0)
+2 `quotRem` 2 = (1,0)
+2 `quotRem` 3 = (0,2)
+3 `quotRem` -3 = (-1,0)
+3 `quotRem` -2 = (-1,1)
+3 `quotRem` -1 = (-3,0)
+3 `quotRem` 0 = divide by zero
+3 `quotRem` 1 = (3,0)
+3 `quotRem` 2 = (1,1)
+3 `quotRem` 3 = (1,0)
+#
+-3 `quot`    -3 = 1
+-3 `quot`    -2 = 1
+-3 `quot`    -1 = 3
+-3 `quot`    0 = divide by zero
+-3 `quot`    1 = -3
+-3 `quot`    2 = -1
+-3 `quot`    3 = -1
+-2 `quot`    -3 = 0
+-2 `quot`    -2 = 1
+-2 `quot`    -1 = 2
+-2 `quot`    0 = divide by zero
+-2 `quot`    1 = -2
+-2 `quot`    2 = -1
+-2 `quot`    3 = 0
+-1 `quot`    -3 = 0
+-1 `quot`    -2 = 0
+-1 `quot`    -1 = 1
+-1 `quot`    0 = divide by zero
+-1 `quot`    1 = -1
+-1 `quot`    2 = 0
+-1 `quot`    3 = 0
+0 `quot`    -3 = 0
+0 `quot`    -2 = 0
+0 `quot`    -1 = 0
+0 `quot`    0 = divide by zero
+0 `quot`    1 = 0
+0 `quot`    2 = 0
+0 `quot`    3 = 0
+1 `quot`    -3 = 0
+1 `quot`    -2 = 0
+1 `quot`    -1 = -1
+1 `quot`    0 = divide by zero
+1 `quot`    1 = 1
+1 `quot`    2 = 0
+1 `quot`    3 = 0
+2 `quot`    -3 = 0
+2 `quot`    -2 = -1
+2 `quot`    -1 = -2
+2 `quot`    0 = divide by zero
+2 `quot`    1 = 2
+2 `quot`    2 = 1
+2 `quot`    3 = 0
+3 `quot`    -3 = -1
+3 `quot`    -2 = -1
+3 `quot`    -1 = -3
+3 `quot`    0 = divide by zero
+3 `quot`    1 = 3
+3 `quot`    2 = 1
+3 `quot`    3 = 1
+#
+-3 `rem`     -3 = 0
+-3 `rem`     -2 = -1
+-3 `rem`     -1 = 0
+-3 `rem`     0 = divide by zero
+-3 `rem`     1 = 0
+-3 `rem`     2 = -1
+-3 `rem`     3 = 0
+-2 `rem`     -3 = -2
+-2 `rem`     -2 = 0
+-2 `rem`     -1 = 0
+-2 `rem`     0 = divide by zero
+-2 `rem`     1 = 0
+-2 `rem`     2 = 0
+-2 `rem`     3 = -2
+-1 `rem`     -3 = -1
+-1 `rem`     -2 = -1
+-1 `rem`     -1 = 0
+-1 `rem`     0 = divide by zero
+-1 `rem`     1 = 0
+-1 `rem`     2 = -1
+-1 `rem`     3 = -1
+0 `rem`     -3 = 0
+0 `rem`     -2 = 0
+0 `rem`     -1 = 0
+0 `rem`     0 = divide by zero
+0 `rem`     1 = 0
+0 `rem`     2 = 0
+0 `rem`     3 = 0
+1 `rem`     -3 = 1
+1 `rem`     -2 = 1
+1 `rem`     -1 = 0
+1 `rem`     0 = divide by zero
+1 `rem`     1 = 0
+1 `rem`     2 = 1
+1 `rem`     3 = 1
+2 `rem`     -3 = 2
+2 `rem`     -2 = 0
+2 `rem`     -1 = 0
+2 `rem`     0 = divide by zero
+2 `rem`     1 = 0
+2 `rem`     2 = 0
+2 `rem`     3 = 2
+3 `rem`     -3 = 0
+3 `rem`     -2 = 1
+3 `rem`     -1 = 0
+3 `rem`     0 = divide by zero
+3 `rem`     1 = 0
+3 `rem`     2 = 1
+3 `rem`     3 = 0
+#
+testConversions
+Integer : [-128,0,127]
+Int     : [-128,0,127]
+Int8    : [-128,0,127]
+Int16   : [-128,0,127]
+Int32   : [-128,0,127]
+Int64   : [-128,0,127]
+Word8   : [128,0,127]
+Word16  : [65408,0,127]
+Word32  : [4294967168,0,127]
+Word64  : [18446744073709551488,0,127]
+testBits
+-3 .&.   -3 = -3
+-3 .&.   -2 = -4
+-3 .&.   -1 = -3
+-3 .&.   0 = 0
+-3 .&.   1 = 1
+-3 .&.   2 = 0
+-3 .&.   3 = 1
+-2 .&.   -3 = -4
+-2 .&.   -2 = -2
+-2 .&.   -1 = -2
+-2 .&.   0 = 0
+-2 .&.   1 = 0
+-2 .&.   2 = 2
+-2 .&.   3 = 2
+-1 .&.   -3 = -3
+-1 .&.   -2 = -2
+-1 .&.   -1 = -1
+-1 .&.   0 = 0
+-1 .&.   1 = 1
+-1 .&.   2 = 2
+-1 .&.   3 = 3
+0 .&.   -3 = 0
+0 .&.   -2 = 0
+0 .&.   -1 = 0
+0 .&.   0 = 0
+0 .&.   1 = 0
+0 .&.   2 = 0
+0 .&.   3 = 0
+1 .&.   -3 = 1
+1 .&.   -2 = 0
+1 .&.   -1 = 1
+1 .&.   0 = 0
+1 .&.   1 = 1
+1 .&.   2 = 0
+1 .&.   3 = 1
+2 .&.   -3 = 0
+2 .&.   -2 = 2
+2 .&.   -1 = 2
+2 .&.   0 = 0
+2 .&.   1 = 0
+2 .&.   2 = 2
+2 .&.   3 = 2
+3 .&.   -3 = 1
+3 .&.   -2 = 2
+3 .&.   -1 = 3
+3 .&.   0 = 0
+3 .&.   1 = 1
+3 .&.   2 = 2
+3 .&.   3 = 3
+#
+-3 .|.   -3 = -3
+-3 .|.   -2 = -1
+-3 .|.   -1 = -1
+-3 .|.   0 = -3
+-3 .|.   1 = -3
+-3 .|.   2 = -1
+-3 .|.   3 = -1
+-2 .|.   -3 = -1
+-2 .|.   -2 = -2
+-2 .|.   -1 = -1
+-2 .|.   0 = -2
+-2 .|.   1 = -1
+-2 .|.   2 = -2
+-2 .|.   3 = -1
+-1 .|.   -3 = -1
+-1 .|.   -2 = -1
+-1 .|.   -1 = -1
+-1 .|.   0 = -1
+-1 .|.   1 = -1
+-1 .|.   2 = -1
+-1 .|.   3 = -1
+0 .|.   -3 = -3
+0 .|.   -2 = -2
+0 .|.   -1 = -1
+0 .|.   0 = 0
+0 .|.   1 = 1
+0 .|.   2 = 2
+0 .|.   3 = 3
+1 .|.   -3 = -3
+1 .|.   -2 = -1
+1 .|.   -1 = -1
+1 .|.   0 = 1
+1 .|.   1 = 1
+1 .|.   2 = 3
+1 .|.   3 = 3
+2 .|.   -3 = -1
+2 .|.   -2 = -2
+2 .|.   -1 = -1
+2 .|.   0 = 2
+2 .|.   1 = 3
+2 .|.   2 = 2
+2 .|.   3 = 3
+3 .|.   -3 = -1
+3 .|.   -2 = -1
+3 .|.   -1 = -1
+3 .|.   0 = 3
+3 .|.   1 = 3
+3 .|.   2 = 3
+3 .|.   3 = 3
+#
+-3 `xor` -3 = 0
+-3 `xor` -2 = 3
+-3 `xor` -1 = 2
+-3 `xor` 0 = -3
+-3 `xor` 1 = -4
+-3 `xor` 2 = -1
+-3 `xor` 3 = -2
+-2 `xor` -3 = 3
+-2 `xor` -2 = 0
+-2 `xor` -1 = 1
+-2 `xor` 0 = -2
+-2 `xor` 1 = -1
+-2 `xor` 2 = -4
+-2 `xor` 3 = -3
+-1 `xor` -3 = 2
+-1 `xor` -2 = 1
+-1 `xor` -1 = 0
+-1 `xor` 0 = -1
+-1 `xor` 1 = -2
+-1 `xor` 2 = -3
+-1 `xor` 3 = -4
+0 `xor` -3 = -3
+0 `xor` -2 = -2
+0 `xor` -1 = -1
+0 `xor` 0 = 0
+0 `xor` 1 = 1
+0 `xor` 2 = 2
+0 `xor` 3 = 3
+1 `xor` -3 = -4
+1 `xor` -2 = -1
+1 `xor` -1 = -2
+1 `xor` 0 = 1
+1 `xor` 1 = 0
+1 `xor` 2 = 3
+1 `xor` 3 = 2
+2 `xor` -3 = -1
+2 `xor` -2 = -4
+2 `xor` -1 = -3
+2 `xor` 0 = 2
+2 `xor` 1 = 3
+2 `xor` 2 = 0
+2 `xor` 3 = 1
+3 `xor` -3 = -2
+3 `xor` -2 = -3
+3 `xor` -1 = -4
+3 `xor` 0 = 3
+3 `xor` 1 = 2
+3 `xor` 2 = 1
+3 `xor` 3 = 0
+#
+complement -3 = 2
+complement -2 = 1
+complement -1 = 0
+complement 0 = -1
+complement 1 = -2
+complement 2 = -3
+complement 3 = -4
+#
+-3 `shiftL` 0 = -3
+-3 `shiftL` 1 = -6
+-3 `shiftL` 2 = -12
+-3 `shiftL` 3 = -24
+-3 `shiftL` 32 = 0
+-3 `shiftL` 64 = 0
+-2 `shiftL` 0 = -2
+-2 `shiftL` 1 = -4
+-2 `shiftL` 2 = -8
+-2 `shiftL` 3 = -16
+-2 `shiftL` 32 = 0
+-2 `shiftL` 64 = 0
+-1 `shiftL` 0 = -1
+-1 `shiftL` 1 = -2
+-1 `shiftL` 2 = -4
+-1 `shiftL` 3 = -8
+-1 `shiftL` 32 = 0
+-1 `shiftL` 64 = 0
+0 `shiftL` 0 = 0
+0 `shiftL` 1 = 0
+0 `shiftL` 2 = 0
+0 `shiftL` 3 = 0
+0 `shiftL` 32 = 0
+0 `shiftL` 64 = 0
+1 `shiftL` 0 = 1
+1 `shiftL` 1 = 2
+1 `shiftL` 2 = 4
+1 `shiftL` 3 = 8
+1 `shiftL` 32 = 0
+1 `shiftL` 64 = 0
+2 `shiftL` 0 = 2
+2 `shiftL` 1 = 4
+2 `shiftL` 2 = 8
+2 `shiftL` 3 = 16
+2 `shiftL` 32 = 0
+2 `shiftL` 64 = 0
+3 `shiftL` 0 = 3
+3 `shiftL` 1 = 6
+3 `shiftL` 2 = 12
+3 `shiftL` 3 = 24
+3 `shiftL` 32 = 0
+3 `shiftL` 64 = 0
+#
+-3 `shiftR` 0 = -3
+-3 `shiftR` 1 = -2
+-3 `shiftR` 2 = -1
+-3 `shiftR` 3 = -1
+-3 `shiftR` 32 = -1
+-3 `shiftR` 64 = -1
+-2 `shiftR` 0 = -2
+-2 `shiftR` 1 = -1
+-2 `shiftR` 2 = -1
+-2 `shiftR` 3 = -1
+-2 `shiftR` 32 = -1
+-2 `shiftR` 64 = -1
+-1 `shiftR` 0 = -1
+-1 `shiftR` 1 = -1
+-1 `shiftR` 2 = -1
+-1 `shiftR` 3 = -1
+-1 `shiftR` 32 = -1
+-1 `shiftR` 64 = -1
+0 `shiftR` 0 = 0
+0 `shiftR` 1 = 0
+0 `shiftR` 2 = 0
+0 `shiftR` 3 = 0
+0 `shiftR` 32 = 0
+0 `shiftR` 64 = 0
+1 `shiftR` 0 = 1
+1 `shiftR` 1 = 0
+1 `shiftR` 2 = 0
+1 `shiftR` 3 = 0
+1 `shiftR` 32 = 0
+1 `shiftR` 64 = 0
+2 `shiftR` 0 = 2
+2 `shiftR` 1 = 1
+2 `shiftR` 2 = 0
+2 `shiftR` 3 = 0
+2 `shiftR` 32 = 0
+2 `shiftR` 64 = 0
+3 `shiftR` 0 = 3
+3 `shiftR` 1 = 1
+3 `shiftR` 2 = 0
+3 `shiftR` 3 = 0
+3 `shiftR` 32 = 0
+3 `shiftR` 64 = 0
+#
+-3 `rotate` -3 = -65
+-3 `rotate` -2 = 127
+-3 `rotate` -1 = -2
+-3 `rotate` 0 = -3
+-3 `rotate` 1 = -5
+-3 `rotate` 2 = -9
+-3 `rotate` 3 = -17
+-2 `rotate` -3 = -33
+-2 `rotate` -2 = -65
+-2 `rotate` -1 = 127
+-2 `rotate` 0 = -2
+-2 `rotate` 1 = -3
+-2 `rotate` 2 = -5
+-2 `rotate` 3 = -9
+-1 `rotate` -3 = -1
+-1 `rotate` -2 = -1
+-1 `rotate` -1 = -1
+-1 `rotate` 0 = -1
+-1 `rotate` 1 = -1
+-1 `rotate` 2 = -1
+-1 `rotate` 3 = -1
+0 `rotate` -3 = 0
+0 `rotate` -2 = 0
+0 `rotate` -1 = 0
+0 `rotate` 0 = 0
+0 `rotate` 1 = 0
+0 `rotate` 2 = 0
+0 `rotate` 3 = 0
+1 `rotate` -3 = 32
+1 `rotate` -2 = 64
+1 `rotate` -1 = -128
+1 `rotate` 0 = 1
+1 `rotate` 1 = 2
+1 `rotate` 2 = 4
+1 `rotate` 3 = 8
+2 `rotate` -3 = 64
+2 `rotate` -2 = -128
+2 `rotate` -1 = 1
+2 `rotate` 0 = 2
+2 `rotate` 1 = 4
+2 `rotate` 2 = 8
+2 `rotate` 3 = 16
+3 `rotate` -3 = 96
+3 `rotate` -2 = -64
+3 `rotate` -1 = -127
+3 `rotate` 0 = 3
+3 `rotate` 1 = 6
+3 `rotate` 2 = 12
+3 `rotate` 3 = 24
+#
+bit 0 = 1
+bit 1 = 2
+bit 2 = 4
+bit 3 = 8
+#
+-3 `setBit` 0 = -3
+-3 `setBit` 1 = -1
+-3 `setBit` 2 = -3
+-3 `setBit` 3 = -3
+-3 `setBit` 32 = -3
+-3 `setBit` 64 = -3
+-2 `setBit` 0 = -1
+-2 `setBit` 1 = -2
+-2 `setBit` 2 = -2
+-2 `setBit` 3 = -2
+-2 `setBit` 32 = -2
+-2 `setBit` 64 = -2
+-1 `setBit` 0 = -1
+-1 `setBit` 1 = -1
+-1 `setBit` 2 = -1
+-1 `setBit` 3 = -1
+-1 `setBit` 32 = -1
+-1 `setBit` 64 = -1
+0 `setBit` 0 = 1
+0 `setBit` 1 = 2
+0 `setBit` 2 = 4
+0 `setBit` 3 = 8
+0 `setBit` 32 = 0
+0 `setBit` 64 = 0
+1 `setBit` 0 = 1
+1 `setBit` 1 = 3
+1 `setBit` 2 = 5
+1 `setBit` 3 = 9
+1 `setBit` 32 = 1
+1 `setBit` 64 = 1
+2 `setBit` 0 = 3
+2 `setBit` 1 = 2
+2 `setBit` 2 = 6
+2 `setBit` 3 = 10
+2 `setBit` 32 = 2
+2 `setBit` 64 = 2
+3 `setBit` 0 = 3
+3 `setBit` 1 = 3
+3 `setBit` 2 = 7
+3 `setBit` 3 = 11
+3 `setBit` 32 = 3
+3 `setBit` 64 = 3
+#
+-3 `clearBit` 0 = -4
+-3 `clearBit` 1 = -3
+-3 `clearBit` 2 = -7
+-3 `clearBit` 3 = -11
+-3 `clearBit` 32 = -3
+-3 `clearBit` 64 = -3
+-2 `clearBit` 0 = -2
+-2 `clearBit` 1 = -4
+-2 `clearBit` 2 = -6
+-2 `clearBit` 3 = -10
+-2 `clearBit` 32 = -2
+-2 `clearBit` 64 = -2
+-1 `clearBit` 0 = -2
+-1 `clearBit` 1 = -3
+-1 `clearBit` 2 = -5
+-1 `clearBit` 3 = -9
+-1 `clearBit` 32 = -1
+-1 `clearBit` 64 = -1
+0 `clearBit` 0 = 0
+0 `clearBit` 1 = 0
+0 `clearBit` 2 = 0
+0 `clearBit` 3 = 0
+0 `clearBit` 32 = 0
+0 `clearBit` 64 = 0
+1 `clearBit` 0 = 0
+1 `clearBit` 1 = 1
+1 `clearBit` 2 = 1
+1 `clearBit` 3 = 1
+1 `clearBit` 32 = 1
+1 `clearBit` 64 = 1
+2 `clearBit` 0 = 2
+2 `clearBit` 1 = 0
+2 `clearBit` 2 = 2
+2 `clearBit` 3 = 2
+2 `clearBit` 32 = 2
+2 `clearBit` 64 = 2
+3 `clearBit` 0 = 2
+3 `clearBit` 1 = 1
+3 `clearBit` 2 = 3
+3 `clearBit` 3 = 3
+3 `clearBit` 32 = 3
+3 `clearBit` 64 = 3
+#
+-3 `complementBit` 0 = -4
+-3 `complementBit` 1 = -1
+-3 `complementBit` 2 = -7
+-3 `complementBit` 3 = -11
+-3 `complementBit` 32 = -3
+-3 `complementBit` 64 = -3
+-2 `complementBit` 0 = -1
+-2 `complementBit` 1 = -4
+-2 `complementBit` 2 = -6
+-2 `complementBit` 3 = -10
+-2 `complementBit` 32 = -2
+-2 `complementBit` 64 = -2
+-1 `complementBit` 0 = -2
+-1 `complementBit` 1 = -3
+-1 `complementBit` 2 = -5
+-1 `complementBit` 3 = -9
+-1 `complementBit` 32 = -1
+-1 `complementBit` 64 = -1
+0 `complementBit` 0 = 1
+0 `complementBit` 1 = 2
+0 `complementBit` 2 = 4
+0 `complementBit` 3 = 8
+0 `complementBit` 32 = 0
+0 `complementBit` 64 = 0
+1 `complementBit` 0 = 0
+1 `complementBit` 1 = 3
+1 `complementBit` 2 = 5
+1 `complementBit` 3 = 9
+1 `complementBit` 32 = 1
+1 `complementBit` 64 = 1
+2 `complementBit` 0 = 3
+2 `complementBit` 1 = 0
+2 `complementBit` 2 = 6
+2 `complementBit` 3 = 10
+2 `complementBit` 32 = 2
+2 `complementBit` 64 = 2
+3 `complementBit` 0 = 2
+3 `complementBit` 1 = 1
+3 `complementBit` 2 = 7
+3 `complementBit` 3 = 11
+3 `complementBit` 32 = 3
+3 `complementBit` 64 = 3
+#
+-3 `testBit` 0 = True
+-3 `testBit` 1 = False
+-3 `testBit` 2 = True
+-3 `testBit` 3 = True
+-3 `testBit` 32 = False
+-3 `testBit` 64 = False
+-2 `testBit` 0 = False
+-2 `testBit` 1 = True
+-2 `testBit` 2 = True
+-2 `testBit` 3 = True
+-2 `testBit` 32 = False
+-2 `testBit` 64 = False
+-1 `testBit` 0 = True
+-1 `testBit` 1 = True
+-1 `testBit` 2 = True
+-1 `testBit` 3 = True
+-1 `testBit` 32 = False
+-1 `testBit` 64 = False
+0 `testBit` 0 = False
+0 `testBit` 1 = False
+0 `testBit` 2 = False
+0 `testBit` 3 = False
+0 `testBit` 32 = False
+0 `testBit` 64 = False
+1 `testBit` 0 = True
+1 `testBit` 1 = False
+1 `testBit` 2 = False
+1 `testBit` 3 = False
+1 `testBit` 32 = False
+1 `testBit` 64 = False
+2 `testBit` 0 = False
+2 `testBit` 1 = True
+2 `testBit` 2 = False
+2 `testBit` 3 = False
+2 `testBit` 32 = False
+2 `testBit` 64 = False
+3 `testBit` 0 = True
+3 `testBit` 1 = True
+3 `testBit` 2 = False
+3 `testBit` 3 = False
+3 `testBit` 32 = False
+3 `testBit` 64 = False
+#
+bitSize -3 = 8
+bitSize -2 = 8
+bitSize -1 = 8
+bitSize 0 = 8
+bitSize 1 = 8
+bitSize 2 = 8
+bitSize 3 = 8
+#
+isSigned -3 = True
+isSigned -2 = True
+isSigned -1 = True
+isSigned 0 = True
+isSigned 1 = True
+isSigned 2 = True
+isSigned 3 = True
+#
+--------------------------------
+--Testing Int16
+--------------------------------
+testBounded
+(32767,-32768,-32767)
+(32766,32767,-32768)
+testEnum
+[0,1,2,3,4,5,6,7,8,9]
+[0,2,4,6,8,10,12,14,16,18]
+[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
+[0,2,4,6,8,10,12,14,16,18,20]
+testReadShow
+[-3,-2,-1,0,1,2,3]
+[-3,-2,-1,0,1,2,3]
+testEq
+-3 == -3 = True
+-3 == -2 = False
+-3 == -1 = False
+-3 == 0 = False
+-3 == 1 = False
+-3 == 2 = False
+-3 == 3 = False
+-2 == -3 = False
+-2 == -2 = True
+-2 == -1 = False
+-2 == 0 = False
+-2 == 1 = False
+-2 == 2 = False
+-2 == 3 = False
+-1 == -3 = False
+-1 == -2 = False
+-1 == -1 = True
+-1 == 0 = False
+-1 == 1 = False
+-1 == 2 = False
+-1 == 3 = False
+0 == -3 = False
+0 == -2 = False
+0 == -1 = False
+0 == 0 = True
+0 == 1 = False
+0 == 2 = False
+0 == 3 = False
+1 == -3 = False
+1 == -2 = False
+1 == -1 = False
+1 == 0 = False
+1 == 1 = True
+1 == 2 = False
+1 == 3 = False
+2 == -3 = False
+2 == -2 = False
+2 == -1 = False
+2 == 0 = False
+2 == 1 = False
+2 == 2 = True
+2 == 3 = False
+3 == -3 = False
+3 == -2 = False
+3 == -1 = False
+3 == 0 = False
+3 == 1 = False
+3 == 2 = False
+3 == 3 = True
+#
+-3 /= -3 = False
+-3 /= -2 = True
+-3 /= -1 = True
+-3 /= 0 = True
+-3 /= 1 = True
+-3 /= 2 = True
+-3 /= 3 = True
+-2 /= -3 = True
+-2 /= -2 = False
+-2 /= -1 = True
+-2 /= 0 = True
+-2 /= 1 = True
+-2 /= 2 = True
+-2 /= 3 = True
+-1 /= -3 = True
+-1 /= -2 = True
+-1 /= -1 = False
+-1 /= 0 = True
+-1 /= 1 = True
+-1 /= 2 = True
+-1 /= 3 = True
+0 /= -3 = True
+0 /= -2 = True
+0 /= -1 = True
+0 /= 0 = False
+0 /= 1 = True
+0 /= 2 = True
+0 /= 3 = True
+1 /= -3 = True
+1 /= -2 = True
+1 /= -1 = True
+1 /= 0 = True
+1 /= 1 = False
+1 /= 2 = True
+1 /= 3 = True
+2 /= -3 = True
+2 /= -2 = True
+2 /= -1 = True
+2 /= 0 = True
+2 /= 1 = True
+2 /= 2 = False
+2 /= 3 = True
+3 /= -3 = True
+3 /= -2 = True
+3 /= -1 = True
+3 /= 0 = True
+3 /= 1 = True
+3 /= 2 = True
+3 /= 3 = False
+#
+testOrd
+-3 <= -3 = True
+-3 <= -2 = True
+-3 <= -1 = True
+-3 <= 0 = True
+-3 <= 1 = True
+-3 <= 2 = True
+-3 <= 3 = True
+-2 <= -3 = False
+-2 <= -2 = True
+-2 <= -1 = True
+-2 <= 0 = True
+-2 <= 1 = True
+-2 <= 2 = True
+-2 <= 3 = True
+-1 <= -3 = False
+-1 <= -2 = False
+-1 <= -1 = True
+-1 <= 0 = True
+-1 <= 1 = True
+-1 <= 2 = True
+-1 <= 3 = True
+0 <= -3 = False
+0 <= -2 = False
+0 <= -1 = False
+0 <= 0 = True
+0 <= 1 = True
+0 <= 2 = True
+0 <= 3 = True
+1 <= -3 = False
+1 <= -2 = False
+1 <= -1 = False
+1 <= 0 = False
+1 <= 1 = True
+1 <= 2 = True
+1 <= 3 = True
+2 <= -3 = False
+2 <= -2 = False
+2 <= -1 = False
+2 <= 0 = False
+2 <= 1 = False
+2 <= 2 = True
+2 <= 3 = True
+3 <= -3 = False
+3 <= -2 = False
+3 <= -1 = False
+3 <= 0 = False
+3 <= 1 = False
+3 <= 2 = False
+3 <= 3 = True
+#
+-3 <  -3 = False
+-3 <  -2 = True
+-3 <  -1 = True
+-3 <  0 = True
+-3 <  1 = True
+-3 <  2 = True
+-3 <  3 = True
+-2 <  -3 = False
+-2 <  -2 = False
+-2 <  -1 = True
+-2 <  0 = True
+-2 <  1 = True
+-2 <  2 = True
+-2 <  3 = True
+-1 <  -3 = False
+-1 <  -2 = False
+-1 <  -1 = False
+-1 <  0 = True
+-1 <  1 = True
+-1 <  2 = True
+-1 <  3 = True
+0 <  -3 = False
+0 <  -2 = False
+0 <  -1 = False
+0 <  0 = False
+0 <  1 = True
+0 <  2 = True
+0 <  3 = True
+1 <  -3 = False
+1 <  -2 = False
+1 <  -1 = False
+1 <  0 = False
+1 <  1 = False
+1 <  2 = True
+1 <  3 = True
+2 <  -3 = False
+2 <  -2 = False
+2 <  -1 = False
+2 <  0 = False
+2 <  1 = False
+2 <  2 = False
+2 <  3 = True
+3 <  -3 = False
+3 <  -2 = False
+3 <  -1 = False
+3 <  0 = False
+3 <  1 = False
+3 <  2 = False
+3 <  3 = False
+#
+-3 >  -3 = False
+-3 >  -2 = False
+-3 >  -1 = False
+-3 >  0 = False
+-3 >  1 = False
+-3 >  2 = False
+-3 >  3 = False
+-2 >  -3 = True
+-2 >  -2 = False
+-2 >  -1 = False
+-2 >  0 = False
+-2 >  1 = False
+-2 >  2 = False
+-2 >  3 = False
+-1 >  -3 = True
+-1 >  -2 = True
+-1 >  -1 = False
+-1 >  0 = False
+-1 >  1 = False
+-1 >  2 = False
+-1 >  3 = False
+0 >  -3 = True
+0 >  -2 = True
+0 >  -1 = True
+0 >  0 = False
+0 >  1 = False
+0 >  2 = False
+0 >  3 = False
+1 >  -3 = True
+1 >  -2 = True
+1 >  -1 = True
+1 >  0 = True
+1 >  1 = False
+1 >  2 = False
+1 >  3 = False
+2 >  -3 = True
+2 >  -2 = True
+2 >  -1 = True
+2 >  0 = True
+2 >  1 = True
+2 >  2 = False
+2 >  3 = False
+3 >  -3 = True
+3 >  -2 = True
+3 >  -1 = True
+3 >  0 = True
+3 >  1 = True
+3 >  2 = True
+3 >  3 = False
+#
+-3 >= -3 = True
+-3 >= -2 = False
+-3 >= -1 = False
+-3 >= 0 = False
+-3 >= 1 = False
+-3 >= 2 = False
+-3 >= 3 = False
+-2 >= -3 = True
+-2 >= -2 = True
+-2 >= -1 = False
+-2 >= 0 = False
+-2 >= 1 = False
+-2 >= 2 = False
+-2 >= 3 = False
+-1 >= -3 = True
+-1 >= -2 = True
+-1 >= -1 = True
+-1 >= 0 = False
+-1 >= 1 = False
+-1 >= 2 = False
+-1 >= 3 = False
+0 >= -3 = True
+0 >= -2 = True
+0 >= -1 = True
+0 >= 0 = True
+0 >= 1 = False
+0 >= 2 = False
+0 >= 3 = False
+1 >= -3 = True
+1 >= -2 = True
+1 >= -1 = True
+1 >= 0 = True
+1 >= 1 = True
+1 >= 2 = False
+1 >= 3 = False
+2 >= -3 = True
+2 >= -2 = True
+2 >= -1 = True
+2 >= 0 = True
+2 >= 1 = True
+2 >= 2 = True
+2 >= 3 = False
+3 >= -3 = True
+3 >= -2 = True
+3 >= -1 = True
+3 >= 0 = True
+3 >= 1 = True
+3 >= 2 = True
+3 >= 3 = True
+#
+-3 `compare` -3 = EQ
+-3 `compare` -2 = LT
+-3 `compare` -1 = LT
+-3 `compare` 0 = LT
+-3 `compare` 1 = LT
+-3 `compare` 2 = LT
+-3 `compare` 3 = LT
+-2 `compare` -3 = GT
+-2 `compare` -2 = EQ
+-2 `compare` -1 = LT
+-2 `compare` 0 = LT
+-2 `compare` 1 = LT
+-2 `compare` 2 = LT
+-2 `compare` 3 = LT
+-1 `compare` -3 = GT
+-1 `compare` -2 = GT
+-1 `compare` -1 = EQ
+-1 `compare` 0 = LT
+-1 `compare` 1 = LT
+-1 `compare` 2 = LT
+-1 `compare` 3 = LT
+0 `compare` -3 = GT
+0 `compare` -2 = GT
+0 `compare` -1 = GT
+0 `compare` 0 = EQ
+0 `compare` 1 = LT
+0 `compare` 2 = LT
+0 `compare` 3 = LT
+1 `compare` -3 = GT
+1 `compare` -2 = GT
+1 `compare` -1 = GT
+1 `compare` 0 = GT
+1 `compare` 1 = EQ
+1 `compare` 2 = LT
+1 `compare` 3 = LT
+2 `compare` -3 = GT
+2 `compare` -2 = GT
+2 `compare` -1 = GT
+2 `compare` 0 = GT
+2 `compare` 1 = GT
+2 `compare` 2 = EQ
+2 `compare` 3 = LT
+3 `compare` -3 = GT
+3 `compare` -2 = GT
+3 `compare` -1 = GT
+3 `compare` 0 = GT
+3 `compare` 1 = GT
+3 `compare` 2 = GT
+3 `compare` 3 = EQ
+#
+testNum
+-3 + -3 = -6
+-3 + -2 = -5
+-3 + -1 = -4
+-3 + 0 = -3
+-3 + 1 = -2
+-3 + 2 = -1
+-3 + 3 = 0
+-2 + -3 = -5
+-2 + -2 = -4
+-2 + -1 = -3
+-2 + 0 = -2
+-2 + 1 = -1
+-2 + 2 = 0
+-2 + 3 = 1
+-1 + -3 = -4
+-1 + -2 = -3
+-1 + -1 = -2
+-1 + 0 = -1
+-1 + 1 = 0
+-1 + 2 = 1
+-1 + 3 = 2
+0 + -3 = -3
+0 + -2 = -2
+0 + -1 = -1
+0 + 0 = 0
+0 + 1 = 1
+0 + 2 = 2
+0 + 3 = 3
+1 + -3 = -2
+1 + -2 = -1
+1 + -1 = 0
+1 + 0 = 1
+1 + 1 = 2
+1 + 2 = 3
+1 + 3 = 4
+2 + -3 = -1
+2 + -2 = 0
+2 + -1 = 1
+2 + 0 = 2
+2 + 1 = 3
+2 + 2 = 4
+2 + 3 = 5
+3 + -3 = 0
+3 + -2 = 1
+3 + -1 = 2
+3 + 0 = 3
+3 + 1 = 4
+3 + 2 = 5
+3 + 3 = 6
+#
+-3 - -3 = 0
+-3 - -2 = -1
+-3 - -1 = -2
+-3 - 0 = -3
+-3 - 1 = -4
+-3 - 2 = -5
+-3 - 3 = -6
+-2 - -3 = 1
+-2 - -2 = 0
+-2 - -1 = -1
+-2 - 0 = -2
+-2 - 1 = -3
+-2 - 2 = -4
+-2 - 3 = -5
+-1 - -3 = 2
+-1 - -2 = 1
+-1 - -1 = 0
+-1 - 0 = -1
+-1 - 1 = -2
+-1 - 2 = -3
+-1 - 3 = -4
+0 - -3 = 3
+0 - -2 = 2
+0 - -1 = 1
+0 - 0 = 0
+0 - 1 = -1
+0 - 2 = -2
+0 - 3 = -3
+1 - -3 = 4
+1 - -2 = 3
+1 - -1 = 2
+1 - 0 = 1
+1 - 1 = 0
+1 - 2 = -1
+1 - 3 = -2
+2 - -3 = 5
+2 - -2 = 4
+2 - -1 = 3
+2 - 0 = 2
+2 - 1 = 1
+2 - 2 = 0
+2 - 3 = -1
+3 - -3 = 6
+3 - -2 = 5
+3 - -1 = 4
+3 - 0 = 3
+3 - 1 = 2
+3 - 2 = 1
+3 - 3 = 0
+#
+-3 * -3 = 9
+-3 * -2 = 6
+-3 * -1 = 3
+-3 * 0 = 0
+-3 * 1 = -3
+-3 * 2 = -6
+-3 * 3 = -9
+-2 * -3 = 6
+-2 * -2 = 4
+-2 * -1 = 2
+-2 * 0 = 0
+-2 * 1 = -2
+-2 * 2 = -4
+-2 * 3 = -6
+-1 * -3 = 3
+-1 * -2 = 2
+-1 * -1 = 1
+-1 * 0 = 0
+-1 * 1 = -1
+-1 * 2 = -2
+-1 * 3 = -3
+0 * -3 = 0
+0 * -2 = 0
+0 * -1 = 0
+0 * 0 = 0
+0 * 1 = 0
+0 * 2 = 0
+0 * 3 = 0
+1 * -3 = -3
+1 * -2 = -2
+1 * -1 = -1
+1 * 0 = 0
+1 * 1 = 1
+1 * 2 = 2
+1 * 3 = 3
+2 * -3 = -6
+2 * -2 = -4
+2 * -1 = -2
+2 * 0 = 0
+2 * 1 = 2
+2 * 2 = 4
+2 * 3 = 6
+3 * -3 = -9
+3 * -2 = -6
+3 * -1 = -3
+3 * 0 = 0
+3 * 1 = 3
+3 * 2 = 6
+3 * 3 = 9
+#
+negate -3 = 3
+negate -2 = 2
+negate -1 = 1
+negate 0 = 0
+negate 1 = -1
+negate 2 = -2
+negate 3 = -3
+#
+testReal
+toRational -3 = (-3)%1
+toRational -2 = (-2)%1
+toRational -1 = (-1)%1
+toRational 0 = 0%1
+toRational 1 = 1%1
+toRational 2 = 2%1
+toRational 3 = 3%1
+#
+testIntegral
+-3 `divMod`  -3 = (1,0)
+-3 `divMod`  -2 = (1,-1)
+-3 `divMod`  -1 = (3,0)
+-3 `divMod`  0 = divide by zero
+-3 `divMod`  1 = (-3,0)
+-3 `divMod`  2 = (-2,1)
+-3 `divMod`  3 = (-1,0)
+-2 `divMod`  -3 = (0,-2)
+-2 `divMod`  -2 = (1,0)
+-2 `divMod`  -1 = (2,0)
+-2 `divMod`  0 = divide by zero
+-2 `divMod`  1 = (-2,0)
+-2 `divMod`  2 = (-1,0)
+-2 `divMod`  3 = (-1,1)
+-1 `divMod`  -3 = (0,-1)
+-1 `divMod`  -2 = (0,-1)
+-1 `divMod`  -1 = (1,0)
+-1 `divMod`  0 = divide by zero
+-1 `divMod`  1 = (-1,0)
+-1 `divMod`  2 = (-1,1)
+-1 `divMod`  3 = (-1,2)
+0 `divMod`  -3 = (0,0)
+0 `divMod`  -2 = (0,0)
+0 `divMod`  -1 = (0,0)
+0 `divMod`  0 = divide by zero
+0 `divMod`  1 = (0,0)
+0 `divMod`  2 = (0,0)
+0 `divMod`  3 = (0,0)
+1 `divMod`  -3 = (-1,-2)
+1 `divMod`  -2 = (-1,-1)
+1 `divMod`  -1 = (-1,0)
+1 `divMod`  0 = divide by zero
+1 `divMod`  1 = (1,0)
+1 `divMod`  2 = (0,1)
+1 `divMod`  3 = (0,1)
+2 `divMod`  -3 = (-1,-1)
+2 `divMod`  -2 = (-1,0)
+2 `divMod`  -1 = (-2,0)
+2 `divMod`  0 = divide by zero
+2 `divMod`  1 = (2,0)
+2 `divMod`  2 = (1,0)
+2 `divMod`  3 = (0,2)
+3 `divMod`  -3 = (-1,0)
+3 `divMod`  -2 = (-2,-1)
+3 `divMod`  -1 = (-3,0)
+3 `divMod`  0 = divide by zero
+3 `divMod`  1 = (3,0)
+3 `divMod`  2 = (1,1)
+3 `divMod`  3 = (1,0)
+#
+-3 `div`     -3 = 1
+-3 `div`     -2 = 1
+-3 `div`     -1 = 3
+-3 `div`     0 = divide by zero
+-3 `div`     1 = -3
+-3 `div`     2 = -2
+-3 `div`     3 = -1
+-2 `div`     -3 = 0
+-2 `div`     -2 = 1
+-2 `div`     -1 = 2
+-2 `div`     0 = divide by zero
+-2 `div`     1 = -2
+-2 `div`     2 = -1
+-2 `div`     3 = -1
+-1 `div`     -3 = 0
+-1 `div`     -2 = 0
+-1 `div`     -1 = 1
+-1 `div`     0 = divide by zero
+-1 `div`     1 = -1
+-1 `div`     2 = -1
+-1 `div`     3 = -1
+0 `div`     -3 = 0
+0 `div`     -2 = 0
+0 `div`     -1 = 0
+0 `div`     0 = divide by zero
+0 `div`     1 = 0
+0 `div`     2 = 0
+0 `div`     3 = 0
+1 `div`     -3 = -1
+1 `div`     -2 = -1
+1 `div`     -1 = -1
+1 `div`     0 = divide by zero
+1 `div`     1 = 1
+1 `div`     2 = 0
+1 `div`     3 = 0
+2 `div`     -3 = -1
+2 `div`     -2 = -1
+2 `div`     -1 = -2
+2 `div`     0 = divide by zero
+2 `div`     1 = 2
+2 `div`     2 = 1
+2 `div`     3 = 0
+3 `div`     -3 = -1
+3 `div`     -2 = -2
+3 `div`     -1 = -3
+3 `div`     0 = divide by zero
+3 `div`     1 = 3
+3 `div`     2 = 1
+3 `div`     3 = 1
+#
+-3 `mod`     -3 = 0
+-3 `mod`     -2 = -1
+-3 `mod`     -1 = 0
+-3 `mod`     0 = divide by zero
+-3 `mod`     1 = 0
+-3 `mod`     2 = 1
+-3 `mod`     3 = 0
+-2 `mod`     -3 = -2
+-2 `mod`     -2 = 0
+-2 `mod`     -1 = 0
+-2 `mod`     0 = divide by zero
+-2 `mod`     1 = 0
+-2 `mod`     2 = 0
+-2 `mod`     3 = 1
+-1 `mod`     -3 = -1
+-1 `mod`     -2 = -1
+-1 `mod`     -1 = 0
+-1 `mod`     0 = divide by zero
+-1 `mod`     1 = 0
+-1 `mod`     2 = 1
+-1 `mod`     3 = 2
+0 `mod`     -3 = 0
+0 `mod`     -2 = 0
+0 `mod`     -1 = 0
+0 `mod`     0 = divide by zero
+0 `mod`     1 = 0
+0 `mod`     2 = 0
+0 `mod`     3 = 0
+1 `mod`     -3 = -2
+1 `mod`     -2 = -1
+1 `mod`     -1 = 0
+1 `mod`     0 = divide by zero
+1 `mod`     1 = 0
+1 `mod`     2 = 1
+1 `mod`     3 = 1
+2 `mod`     -3 = -1
+2 `mod`     -2 = 0
+2 `mod`     -1 = 0
+2 `mod`     0 = divide by zero
+2 `mod`     1 = 0
+2 `mod`     2 = 0
+2 `mod`     3 = 2
+3 `mod`     -3 = 0
+3 `mod`     -2 = -1
+3 `mod`     -1 = 0
+3 `mod`     0 = divide by zero
+3 `mod`     1 = 0
+3 `mod`     2 = 1
+3 `mod`     3 = 0
+#
+-3 `quotRem` -3 = (1,0)
+-3 `quotRem` -2 = (1,-1)
+-3 `quotRem` -1 = (3,0)
+-3 `quotRem` 0 = divide by zero
+-3 `quotRem` 1 = (-3,0)
+-3 `quotRem` 2 = (-1,-1)
+-3 `quotRem` 3 = (-1,0)
+-2 `quotRem` -3 = (0,-2)
+-2 `quotRem` -2 = (1,0)
+-2 `quotRem` -1 = (2,0)
+-2 `quotRem` 0 = divide by zero
+-2 `quotRem` 1 = (-2,0)
+-2 `quotRem` 2 = (-1,0)
+-2 `quotRem` 3 = (0,-2)
+-1 `quotRem` -3 = (0,-1)
+-1 `quotRem` -2 = (0,-1)
+-1 `quotRem` -1 = (1,0)
+-1 `quotRem` 0 = divide by zero
+-1 `quotRem` 1 = (-1,0)
+-1 `quotRem` 2 = (0,-1)
+-1 `quotRem` 3 = (0,-1)
+0 `quotRem` -3 = (0,0)
+0 `quotRem` -2 = (0,0)
+0 `quotRem` -1 = (0,0)
+0 `quotRem` 0 = divide by zero
+0 `quotRem` 1 = (0,0)
+0 `quotRem` 2 = (0,0)
+0 `quotRem` 3 = (0,0)
+1 `quotRem` -3 = (0,1)
+1 `quotRem` -2 = (0,1)
+1 `quotRem` -1 = (-1,0)
+1 `quotRem` 0 = divide by zero
+1 `quotRem` 1 = (1,0)
+1 `quotRem` 2 = (0,1)
+1 `quotRem` 3 = (0,1)
+2 `quotRem` -3 = (0,2)
+2 `quotRem` -2 = (-1,0)
+2 `quotRem` -1 = (-2,0)
+2 `quotRem` 0 = divide by zero
+2 `quotRem` 1 = (2,0)
+2 `quotRem` 2 = (1,0)
+2 `quotRem` 3 = (0,2)
+3 `quotRem` -3 = (-1,0)
+3 `quotRem` -2 = (-1,1)
+3 `quotRem` -1 = (-3,0)
+3 `quotRem` 0 = divide by zero
+3 `quotRem` 1 = (3,0)
+3 `quotRem` 2 = (1,1)
+3 `quotRem` 3 = (1,0)
+#
+-3 `quot`    -3 = 1
+-3 `quot`    -2 = 1
+-3 `quot`    -1 = 3
+-3 `quot`    0 = divide by zero
+-3 `quot`    1 = -3
+-3 `quot`    2 = -1
+-3 `quot`    3 = -1
+-2 `quot`    -3 = 0
+-2 `quot`    -2 = 1
+-2 `quot`    -1 = 2
+-2 `quot`    0 = divide by zero
+-2 `quot`    1 = -2
+-2 `quot`    2 = -1
+-2 `quot`    3 = 0
+-1 `quot`    -3 = 0
+-1 `quot`    -2 = 0
+-1 `quot`    -1 = 1
+-1 `quot`    0 = divide by zero
+-1 `quot`    1 = -1
+-1 `quot`    2 = 0
+-1 `quot`    3 = 0
+0 `quot`    -3 = 0
+0 `quot`    -2 = 0
+0 `quot`    -1 = 0
+0 `quot`    0 = divide by zero
+0 `quot`    1 = 0
+0 `quot`    2 = 0
+0 `quot`    3 = 0
+1 `quot`    -3 = 0
+1 `quot`    -2 = 0
+1 `quot`    -1 = -1
+1 `quot`    0 = divide by zero
+1 `quot`    1 = 1
+1 `quot`    2 = 0
+1 `quot`    3 = 0
+2 `quot`    -3 = 0
+2 `quot`    -2 = -1
+2 `quot`    -1 = -2
+2 `quot`    0 = divide by zero
+2 `quot`    1 = 2
+2 `quot`    2 = 1
+2 `quot`    3 = 0
+3 `quot`    -3 = -1
+3 `quot`    -2 = -1
+3 `quot`    -1 = -3
+3 `quot`    0 = divide by zero
+3 `quot`    1 = 3
+3 `quot`    2 = 1
+3 `quot`    3 = 1
+#
+-3 `rem`     -3 = 0
+-3 `rem`     -2 = -1
+-3 `rem`     -1 = 0
+-3 `rem`     0 = divide by zero
+-3 `rem`     1 = 0
+-3 `rem`     2 = -1
+-3 `rem`     3 = 0
+-2 `rem`     -3 = -2
+-2 `rem`     -2 = 0
+-2 `rem`     -1 = 0
+-2 `rem`     0 = divide by zero
+-2 `rem`     1 = 0
+-2 `rem`     2 = 0
+-2 `rem`     3 = -2
+-1 `rem`     -3 = -1
+-1 `rem`     -2 = -1
+-1 `rem`     -1 = 0
+-1 `rem`     0 = divide by zero
+-1 `rem`     1 = 0
+-1 `rem`     2 = -1
+-1 `rem`     3 = -1
+0 `rem`     -3 = 0
+0 `rem`     -2 = 0
+0 `rem`     -1 = 0
+0 `rem`     0 = divide by zero
+0 `rem`     1 = 0
+0 `rem`     2 = 0
+0 `rem`     3 = 0
+1 `rem`     -3 = 1
+1 `rem`     -2 = 1
+1 `rem`     -1 = 0
+1 `rem`     0 = divide by zero
+1 `rem`     1 = 0
+1 `rem`     2 = 1
+1 `rem`     3 = 1
+2 `rem`     -3 = 2
+2 `rem`     -2 = 0
+2 `rem`     -1 = 0
+2 `rem`     0 = divide by zero
+2 `rem`     1 = 0
+2 `rem`     2 = 0
+2 `rem`     3 = 2
+3 `rem`     -3 = 0
+3 `rem`     -2 = 1
+3 `rem`     -1 = 0
+3 `rem`     0 = divide by zero
+3 `rem`     1 = 0
+3 `rem`     2 = 1
+3 `rem`     3 = 0
+#
+testConversions
+Integer : [-32768,0,32767]
+Int     : [-32768,0,32767]
+Int8    : [0,0,-1]
+Int16   : [-32768,0,32767]
+Int32   : [-32768,0,32767]
+Int64   : [-32768,0,32767]
+Word8   : [0,0,255]
+Word16  : [32768,0,32767]
+Word32  : [4294934528,0,32767]
+Word64  : [18446744073709518848,0,32767]
+testBits
+-3 .&.   -3 = -3
+-3 .&.   -2 = -4
+-3 .&.   -1 = -3
+-3 .&.   0 = 0
+-3 .&.   1 = 1
+-3 .&.   2 = 0
+-3 .&.   3 = 1
+-2 .&.   -3 = -4
+-2 .&.   -2 = -2
+-2 .&.   -1 = -2
+-2 .&.   0 = 0
+-2 .&.   1 = 0
+-2 .&.   2 = 2
+-2 .&.   3 = 2
+-1 .&.   -3 = -3
+-1 .&.   -2 = -2
+-1 .&.   -1 = -1
+-1 .&.   0 = 0
+-1 .&.   1 = 1
+-1 .&.   2 = 2
+-1 .&.   3 = 3
+0 .&.   -3 = 0
+0 .&.   -2 = 0
+0 .&.   -1 = 0
+0 .&.   0 = 0
+0 .&.   1 = 0
+0 .&.   2 = 0
+0 .&.   3 = 0
+1 .&.   -3 = 1
+1 .&.   -2 = 0
+1 .&.   -1 = 1
+1 .&.   0 = 0
+1 .&.   1 = 1
+1 .&.   2 = 0
+1 .&.   3 = 1
+2 .&.   -3 = 0
+2 .&.   -2 = 2
+2 .&.   -1 = 2
+2 .&.   0 = 0
+2 .&.   1 = 0
+2 .&.   2 = 2
+2 .&.   3 = 2
+3 .&.   -3 = 1
+3 .&.   -2 = 2
+3 .&.   -1 = 3
+3 .&.   0 = 0
+3 .&.   1 = 1
+3 .&.   2 = 2
+3 .&.   3 = 3
+#
+-3 .|.   -3 = -3
+-3 .|.   -2 = -1
+-3 .|.   -1 = -1
+-3 .|.   0 = -3
+-3 .|.   1 = -3
+-3 .|.   2 = -1
+-3 .|.   3 = -1
+-2 .|.   -3 = -1
+-2 .|.   -2 = -2
+-2 .|.   -1 = -1
+-2 .|.   0 = -2
+-2 .|.   1 = -1
+-2 .|.   2 = -2
+-2 .|.   3 = -1
+-1 .|.   -3 = -1
+-1 .|.   -2 = -1
+-1 .|.   -1 = -1
+-1 .|.   0 = -1
+-1 .|.   1 = -1
+-1 .|.   2 = -1
+-1 .|.   3 = -1
+0 .|.   -3 = -3
+0 .|.   -2 = -2
+0 .|.   -1 = -1
+0 .|.   0 = 0
+0 .|.   1 = 1
+0 .|.   2 = 2
+0 .|.   3 = 3
+1 .|.   -3 = -3
+1 .|.   -2 = -1
+1 .|.   -1 = -1
+1 .|.   0 = 1
+1 .|.   1 = 1
+1 .|.   2 = 3
+1 .|.   3 = 3
+2 .|.   -3 = -1
+2 .|.   -2 = -2
+2 .|.   -1 = -1
+2 .|.   0 = 2
+2 .|.   1 = 3
+2 .|.   2 = 2
+2 .|.   3 = 3
+3 .|.   -3 = -1
+3 .|.   -2 = -1
+3 .|.   -1 = -1
+3 .|.   0 = 3
+3 .|.   1 = 3
+3 .|.   2 = 3
+3 .|.   3 = 3
+#
+-3 `xor` -3 = 0
+-3 `xor` -2 = 3
+-3 `xor` -1 = 2
+-3 `xor` 0 = -3
+-3 `xor` 1 = -4
+-3 `xor` 2 = -1
+-3 `xor` 3 = -2
+-2 `xor` -3 = 3
+-2 `xor` -2 = 0
+-2 `xor` -1 = 1
+-2 `xor` 0 = -2
+-2 `xor` 1 = -1
+-2 `xor` 2 = -4
+-2 `xor` 3 = -3
+-1 `xor` -3 = 2
+-1 `xor` -2 = 1
+-1 `xor` -1 = 0
+-1 `xor` 0 = -1
+-1 `xor` 1 = -2
+-1 `xor` 2 = -3
+-1 `xor` 3 = -4
+0 `xor` -3 = -3
+0 `xor` -2 = -2
+0 `xor` -1 = -1
+0 `xor` 0 = 0
+0 `xor` 1 = 1
+0 `xor` 2 = 2
+0 `xor` 3 = 3
+1 `xor` -3 = -4
+1 `xor` -2 = -1
+1 `xor` -1 = -2
+1 `xor` 0 = 1
+1 `xor` 1 = 0
+1 `xor` 2 = 3
+1 `xor` 3 = 2
+2 `xor` -3 = -1
+2 `xor` -2 = -4
+2 `xor` -1 = -3
+2 `xor` 0 = 2
+2 `xor` 1 = 3
+2 `xor` 2 = 0
+2 `xor` 3 = 1
+3 `xor` -3 = -2
+3 `xor` -2 = -3
+3 `xor` -1 = -4
+3 `xor` 0 = 3
+3 `xor` 1 = 2
+3 `xor` 2 = 1
+3 `xor` 3 = 0
+#
+complement -3 = 2
+complement -2 = 1
+complement -1 = 0
+complement 0 = -1
+complement 1 = -2
+complement 2 = -3
+complement 3 = -4
+#
+-3 `shiftL` 0 = -3
+-3 `shiftL` 1 = -6
+-3 `shiftL` 2 = -12
+-3 `shiftL` 3 = -24
+-3 `shiftL` 32 = 0
+-3 `shiftL` 64 = 0
+-2 `shiftL` 0 = -2
+-2 `shiftL` 1 = -4
+-2 `shiftL` 2 = -8
+-2 `shiftL` 3 = -16
+-2 `shiftL` 32 = 0
+-2 `shiftL` 64 = 0
+-1 `shiftL` 0 = -1
+-1 `shiftL` 1 = -2
+-1 `shiftL` 2 = -4
+-1 `shiftL` 3 = -8
+-1 `shiftL` 32 = 0
+-1 `shiftL` 64 = 0
+0 `shiftL` 0 = 0
+0 `shiftL` 1 = 0
+0 `shiftL` 2 = 0
+0 `shiftL` 3 = 0
+0 `shiftL` 32 = 0
+0 `shiftL` 64 = 0
+1 `shiftL` 0 = 1
+1 `shiftL` 1 = 2
+1 `shiftL` 2 = 4
+1 `shiftL` 3 = 8
+1 `shiftL` 32 = 0
+1 `shiftL` 64 = 0
+2 `shiftL` 0 = 2
+2 `shiftL` 1 = 4
+2 `shiftL` 2 = 8
+2 `shiftL` 3 = 16
+2 `shiftL` 32 = 0
+2 `shiftL` 64 = 0
+3 `shiftL` 0 = 3
+3 `shiftL` 1 = 6
+3 `shiftL` 2 = 12
+3 `shiftL` 3 = 24
+3 `shiftL` 32 = 0
+3 `shiftL` 64 = 0
+#
+-3 `shiftR` 0 = -3
+-3 `shiftR` 1 = -2
+-3 `shiftR` 2 = -1
+-3 `shiftR` 3 = -1
+-3 `shiftR` 32 = -1
+-3 `shiftR` 64 = -1
+-2 `shiftR` 0 = -2
+-2 `shiftR` 1 = -1
+-2 `shiftR` 2 = -1
+-2 `shiftR` 3 = -1
+-2 `shiftR` 32 = -1
+-2 `shiftR` 64 = -1
+-1 `shiftR` 0 = -1
+-1 `shiftR` 1 = -1
+-1 `shiftR` 2 = -1
+-1 `shiftR` 3 = -1
+-1 `shiftR` 32 = -1
+-1 `shiftR` 64 = -1
+0 `shiftR` 0 = 0
+0 `shiftR` 1 = 0
+0 `shiftR` 2 = 0
+0 `shiftR` 3 = 0
+0 `shiftR` 32 = 0
+0 `shiftR` 64 = 0
+1 `shiftR` 0 = 1
+1 `shiftR` 1 = 0
+1 `shiftR` 2 = 0
+1 `shiftR` 3 = 0
+1 `shiftR` 32 = 0
+1 `shiftR` 64 = 0
+2 `shiftR` 0 = 2
+2 `shiftR` 1 = 1
+2 `shiftR` 2 = 0
+2 `shiftR` 3 = 0
+2 `shiftR` 32 = 0
+2 `shiftR` 64 = 0
+3 `shiftR` 0 = 3
+3 `shiftR` 1 = 1
+3 `shiftR` 2 = 0
+3 `shiftR` 3 = 0
+3 `shiftR` 32 = 0
+3 `shiftR` 64 = 0
+#
+-3 `rotate` -3 = -16385
+-3 `rotate` -2 = 32767
+-3 `rotate` -1 = -2
+-3 `rotate` 0 = -3
+-3 `rotate` 1 = -5
+-3 `rotate` 2 = -9
+-3 `rotate` 3 = -17
+-2 `rotate` -3 = -8193
+-2 `rotate` -2 = -16385
+-2 `rotate` -1 = 32767
+-2 `rotate` 0 = -2
+-2 `rotate` 1 = -3
+-2 `rotate` 2 = -5
+-2 `rotate` 3 = -9
+-1 `rotate` -3 = -1
+-1 `rotate` -2 = -1
+-1 `rotate` -1 = -1
+-1 `rotate` 0 = -1
+-1 `rotate` 1 = -1
+-1 `rotate` 2 = -1
+-1 `rotate` 3 = -1
+0 `rotate` -3 = 0
+0 `rotate` -2 = 0
+0 `rotate` -1 = 0
+0 `rotate` 0 = 0
+0 `rotate` 1 = 0
+0 `rotate` 2 = 0
+0 `rotate` 3 = 0
+1 `rotate` -3 = 8192
+1 `rotate` -2 = 16384
+1 `rotate` -1 = -32768
+1 `rotate` 0 = 1
+1 `rotate` 1 = 2
+1 `rotate` 2 = 4
+1 `rotate` 3 = 8
+2 `rotate` -3 = 16384
+2 `rotate` -2 = -32768
+2 `rotate` -1 = 1
+2 `rotate` 0 = 2
+2 `rotate` 1 = 4
+2 `rotate` 2 = 8
+2 `rotate` 3 = 16
+3 `rotate` -3 = 24576
+3 `rotate` -2 = -16384
+3 `rotate` -1 = -32767
+3 `rotate` 0 = 3
+3 `rotate` 1 = 6
+3 `rotate` 2 = 12
+3 `rotate` 3 = 24
+#
+bit 0 = 1
+bit 1 = 2
+bit 2 = 4
+bit 3 = 8
+#
+-3 `setBit` 0 = -3
+-3 `setBit` 1 = -1
+-3 `setBit` 2 = -3
+-3 `setBit` 3 = -3
+-3 `setBit` 32 = -3
+-3 `setBit` 64 = -3
+-2 `setBit` 0 = -1
+-2 `setBit` 1 = -2
+-2 `setBit` 2 = -2
+-2 `setBit` 3 = -2
+-2 `setBit` 32 = -2
+-2 `setBit` 64 = -2
+-1 `setBit` 0 = -1
+-1 `setBit` 1 = -1
+-1 `setBit` 2 = -1
+-1 `setBit` 3 = -1
+-1 `setBit` 32 = -1
+-1 `setBit` 64 = -1
+0 `setBit` 0 = 1
+0 `setBit` 1 = 2
+0 `setBit` 2 = 4
+0 `setBit` 3 = 8
+0 `setBit` 32 = 0
+0 `setBit` 64 = 0
+1 `setBit` 0 = 1
+1 `setBit` 1 = 3
+1 `setBit` 2 = 5
+1 `setBit` 3 = 9
+1 `setBit` 32 = 1
+1 `setBit` 64 = 1
+2 `setBit` 0 = 3
+2 `setBit` 1 = 2
+2 `setBit` 2 = 6
+2 `setBit` 3 = 10
+2 `setBit` 32 = 2
+2 `setBit` 64 = 2
+3 `setBit` 0 = 3
+3 `setBit` 1 = 3
+3 `setBit` 2 = 7
+3 `setBit` 3 = 11
+3 `setBit` 32 = 3
+3 `setBit` 64 = 3
+#
+-3 `clearBit` 0 = -4
+-3 `clearBit` 1 = -3
+-3 `clearBit` 2 = -7
+-3 `clearBit` 3 = -11
+-3 `clearBit` 32 = -3
+-3 `clearBit` 64 = -3
+-2 `clearBit` 0 = -2
+-2 `clearBit` 1 = -4
+-2 `clearBit` 2 = -6
+-2 `clearBit` 3 = -10
+-2 `clearBit` 32 = -2
+-2 `clearBit` 64 = -2
+-1 `clearBit` 0 = -2
+-1 `clearBit` 1 = -3
+-1 `clearBit` 2 = -5
+-1 `clearBit` 3 = -9
+-1 `clearBit` 32 = -1
+-1 `clearBit` 64 = -1
+0 `clearBit` 0 = 0
+0 `clearBit` 1 = 0
+0 `clearBit` 2 = 0
+0 `clearBit` 3 = 0
+0 `clearBit` 32 = 0
+0 `clearBit` 64 = 0
+1 `clearBit` 0 = 0
+1 `clearBit` 1 = 1
+1 `clearBit` 2 = 1
+1 `clearBit` 3 = 1
+1 `clearBit` 32 = 1
+1 `clearBit` 64 = 1
+2 `clearBit` 0 = 2
+2 `clearBit` 1 = 0
+2 `clearBit` 2 = 2
+2 `clearBit` 3 = 2
+2 `clearBit` 32 = 2
+2 `clearBit` 64 = 2
+3 `clearBit` 0 = 2
+3 `clearBit` 1 = 1
+3 `clearBit` 2 = 3
+3 `clearBit` 3 = 3
+3 `clearBit` 32 = 3
+3 `clearBit` 64 = 3
+#
+-3 `complementBit` 0 = -4
+-3 `complementBit` 1 = -1
+-3 `complementBit` 2 = -7
+-3 `complementBit` 3 = -11
+-3 `complementBit` 32 = -3
+-3 `complementBit` 64 = -3
+-2 `complementBit` 0 = -1
+-2 `complementBit` 1 = -4
+-2 `complementBit` 2 = -6
+-2 `complementBit` 3 = -10
+-2 `complementBit` 32 = -2
+-2 `complementBit` 64 = -2
+-1 `complementBit` 0 = -2
+-1 `complementBit` 1 = -3
+-1 `complementBit` 2 = -5
+-1 `complementBit` 3 = -9
+-1 `complementBit` 32 = -1
+-1 `complementBit` 64 = -1
+0 `complementBit` 0 = 1
+0 `complementBit` 1 = 2
+0 `complementBit` 2 = 4
+0 `complementBit` 3 = 8
+0 `complementBit` 32 = 0
+0 `complementBit` 64 = 0
+1 `complementBit` 0 = 0
+1 `complementBit` 1 = 3
+1 `complementBit` 2 = 5
+1 `complementBit` 3 = 9
+1 `complementBit` 32 = 1
+1 `complementBit` 64 = 1
+2 `complementBit` 0 = 3
+2 `complementBit` 1 = 0
+2 `complementBit` 2 = 6
+2 `complementBit` 3 = 10
+2 `complementBit` 32 = 2
+2 `complementBit` 64 = 2
+3 `complementBit` 0 = 2
+3 `complementBit` 1 = 1
+3 `complementBit` 2 = 7
+3 `complementBit` 3 = 11
+3 `complementBit` 32 = 3
+3 `complementBit` 64 = 3
+#
+-3 `testBit` 0 = True
+-3 `testBit` 1 = False
+-3 `testBit` 2 = True
+-3 `testBit` 3 = True
+-3 `testBit` 32 = False
+-3 `testBit` 64 = False
+-2 `testBit` 0 = False
+-2 `testBit` 1 = True
+-2 `testBit` 2 = True
+-2 `testBit` 3 = True
+-2 `testBit` 32 = False
+-2 `testBit` 64 = False
+-1 `testBit` 0 = True
+-1 `testBit` 1 = True
+-1 `testBit` 2 = True
+-1 `testBit` 3 = True
+-1 `testBit` 32 = False
+-1 `testBit` 64 = False
+0 `testBit` 0 = False
+0 `testBit` 1 = False
+0 `testBit` 2 = False
+0 `testBit` 3 = False
+0 `testBit` 32 = False
+0 `testBit` 64 = False
+1 `testBit` 0 = True
+1 `testBit` 1 = False
+1 `testBit` 2 = False
+1 `testBit` 3 = False
+1 `testBit` 32 = False
+1 `testBit` 64 = False
+2 `testBit` 0 = False
+2 `testBit` 1 = True
+2 `testBit` 2 = False
+2 `testBit` 3 = False
+2 `testBit` 32 = False
+2 `testBit` 64 = False
+3 `testBit` 0 = True
+3 `testBit` 1 = True
+3 `testBit` 2 = False
+3 `testBit` 3 = False
+3 `testBit` 32 = False
+3 `testBit` 64 = False
+#
+bitSize -3 = 16
+bitSize -2 = 16
+bitSize -1 = 16
+bitSize 0 = 16
+bitSize 1 = 16
+bitSize 2 = 16
+bitSize 3 = 16
+#
+isSigned -3 = True
+isSigned -2 = True
+isSigned -1 = True
+isSigned 0 = True
+isSigned 1 = True
+isSigned 2 = True
+isSigned 3 = True
+#
+--------------------------------
+--Testing Int32
+--------------------------------
+testBounded
+(2147483647,-2147483648,-2147483647)
+(2147483646,2147483647,-2147483648)
+testEnum
+[0,1,2,3,4,5,6,7,8,9]
+[0,2,4,6,8,10,12,14,16,18]
+[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
+[0,2,4,6,8,10,12,14,16,18,20]
+testReadShow
+[-3,-2,-1,0,1,2,3]
+[-3,-2,-1,0,1,2,3]
+testEq
+-3 == -3 = True
+-3 == -2 = False
+-3 == -1 = False
+-3 == 0 = False
+-3 == 1 = False
+-3 == 2 = False
+-3 == 3 = False
+-2 == -3 = False
+-2 == -2 = True
+-2 == -1 = False
+-2 == 0 = False
+-2 == 1 = False
+-2 == 2 = False
+-2 == 3 = False
+-1 == -3 = False
+-1 == -2 = False
+-1 == -1 = True
+-1 == 0 = False
+-1 == 1 = False
+-1 == 2 = False
+-1 == 3 = False
+0 == -3 = False
+0 == -2 = False
+0 == -1 = False
+0 == 0 = True
+0 == 1 = False
+0 == 2 = False
+0 == 3 = False
+1 == -3 = False
+1 == -2 = False
+1 == -1 = False
+1 == 0 = False
+1 == 1 = True
+1 == 2 = False
+1 == 3 = False
+2 == -3 = False
+2 == -2 = False
+2 == -1 = False
+2 == 0 = False
+2 == 1 = False
+2 == 2 = True
+2 == 3 = False
+3 == -3 = False
+3 == -2 = False
+3 == -1 = False
+3 == 0 = False
+3 == 1 = False
+3 == 2 = False
+3 == 3 = True
+#
+-3 /= -3 = False
+-3 /= -2 = True
+-3 /= -1 = True
+-3 /= 0 = True
+-3 /= 1 = True
+-3 /= 2 = True
+-3 /= 3 = True
+-2 /= -3 = True
+-2 /= -2 = False
+-2 /= -1 = True
+-2 /= 0 = True
+-2 /= 1 = True
+-2 /= 2 = True
+-2 /= 3 = True
+-1 /= -3 = True
+-1 /= -2 = True
+-1 /= -1 = False
+-1 /= 0 = True
+-1 /= 1 = True
+-1 /= 2 = True
+-1 /= 3 = True
+0 /= -3 = True
+0 /= -2 = True
+0 /= -1 = True
+0 /= 0 = False
+0 /= 1 = True
+0 /= 2 = True
+0 /= 3 = True
+1 /= -3 = True
+1 /= -2 = True
+1 /= -1 = True
+1 /= 0 = True
+1 /= 1 = False
+1 /= 2 = True
+1 /= 3 = True
+2 /= -3 = True
+2 /= -2 = True
+2 /= -1 = True
+2 /= 0 = True
+2 /= 1 = True
+2 /= 2 = False
+2 /= 3 = True
+3 /= -3 = True
+3 /= -2 = True
+3 /= -1 = True
+3 /= 0 = True
+3 /= 1 = True
+3 /= 2 = True
+3 /= 3 = False
+#
+testOrd
+-3 <= -3 = True
+-3 <= -2 = True
+-3 <= -1 = True
+-3 <= 0 = True
+-3 <= 1 = True
+-3 <= 2 = True
+-3 <= 3 = True
+-2 <= -3 = False
+-2 <= -2 = True
+-2 <= -1 = True
+-2 <= 0 = True
+-2 <= 1 = True
+-2 <= 2 = True
+-2 <= 3 = True
+-1 <= -3 = False
+-1 <= -2 = False
+-1 <= -1 = True
+-1 <= 0 = True
+-1 <= 1 = True
+-1 <= 2 = True
+-1 <= 3 = True
+0 <= -3 = False
+0 <= -2 = False
+0 <= -1 = False
+0 <= 0 = True
+0 <= 1 = True
+0 <= 2 = True
+0 <= 3 = True
+1 <= -3 = False
+1 <= -2 = False
+1 <= -1 = False
+1 <= 0 = False
+1 <= 1 = True
+1 <= 2 = True
+1 <= 3 = True
+2 <= -3 = False
+2 <= -2 = False
+2 <= -1 = False
+2 <= 0 = False
+2 <= 1 = False
+2 <= 2 = True
+2 <= 3 = True
+3 <= -3 = False
+3 <= -2 = False
+3 <= -1 = False
+3 <= 0 = False
+3 <= 1 = False
+3 <= 2 = False
+3 <= 3 = True
+#
+-3 <  -3 = False
+-3 <  -2 = True
+-3 <  -1 = True
+-3 <  0 = True
+-3 <  1 = True
+-3 <  2 = True
+-3 <  3 = True
+-2 <  -3 = False
+-2 <  -2 = False
+-2 <  -1 = True
+-2 <  0 = True
+-2 <  1 = True
+-2 <  2 = True
+-2 <  3 = True
+-1 <  -3 = False
+-1 <  -2 = False
+-1 <  -1 = False
+-1 <  0 = True
+-1 <  1 = True
+-1 <  2 = True
+-1 <  3 = True
+0 <  -3 = False
+0 <  -2 = False
+0 <  -1 = False
+0 <  0 = False
+0 <  1 = True
+0 <  2 = True
+0 <  3 = True
+1 <  -3 = False
+1 <  -2 = False
+1 <  -1 = False
+1 <  0 = False
+1 <  1 = False
+1 <  2 = True
+1 <  3 = True
+2 <  -3 = False
+2 <  -2 = False
+2 <  -1 = False
+2 <  0 = False
+2 <  1 = False
+2 <  2 = False
+2 <  3 = True
+3 <  -3 = False
+3 <  -2 = False
+3 <  -1 = False
+3 <  0 = False
+3 <  1 = False
+3 <  2 = False
+3 <  3 = False
+#
+-3 >  -3 = False
+-3 >  -2 = False
+-3 >  -1 = False
+-3 >  0 = False
+-3 >  1 = False
+-3 >  2 = False
+-3 >  3 = False
+-2 >  -3 = True
+-2 >  -2 = False
+-2 >  -1 = False
+-2 >  0 = False
+-2 >  1 = False
+-2 >  2 = False
+-2 >  3 = False
+-1 >  -3 = True
+-1 >  -2 = True
+-1 >  -1 = False
+-1 >  0 = False
+-1 >  1 = False
+-1 >  2 = False
+-1 >  3 = False
+0 >  -3 = True
+0 >  -2 = True
+0 >  -1 = True
+0 >  0 = False
+0 >  1 = False
+0 >  2 = False
+0 >  3 = False
+1 >  -3 = True
+1 >  -2 = True
+1 >  -1 = True
+1 >  0 = True
+1 >  1 = False
+1 >  2 = False
+1 >  3 = False
+2 >  -3 = True
+2 >  -2 = True
+2 >  -1 = True
+2 >  0 = True
+2 >  1 = True
+2 >  2 = False
+2 >  3 = False
+3 >  -3 = True
+3 >  -2 = True
+3 >  -1 = True
+3 >  0 = True
+3 >  1 = True
+3 >  2 = True
+3 >  3 = False
+#
+-3 >= -3 = True
+-3 >= -2 = False
+-3 >= -1 = False
+-3 >= 0 = False
+-3 >= 1 = False
+-3 >= 2 = False
+-3 >= 3 = False
+-2 >= -3 = True
+-2 >= -2 = True
+-2 >= -1 = False
+-2 >= 0 = False
+-2 >= 1 = False
+-2 >= 2 = False
+-2 >= 3 = False
+-1 >= -3 = True
+-1 >= -2 = True
+-1 >= -1 = True
+-1 >= 0 = False
+-1 >= 1 = False
+-1 >= 2 = False
+-1 >= 3 = False
+0 >= -3 = True
+0 >= -2 = True
+0 >= -1 = True
+0 >= 0 = True
+0 >= 1 = False
+0 >= 2 = False
+0 >= 3 = False
+1 >= -3 = True
+1 >= -2 = True
+1 >= -1 = True
+1 >= 0 = True
+1 >= 1 = True
+1 >= 2 = False
+1 >= 3 = False
+2 >= -3 = True
+2 >= -2 = True
+2 >= -1 = True
+2 >= 0 = True
+2 >= 1 = True
+2 >= 2 = True
+2 >= 3 = False
+3 >= -3 = True
+3 >= -2 = True
+3 >= -1 = True
+3 >= 0 = True
+3 >= 1 = True
+3 >= 2 = True
+3 >= 3 = True
+#
+-3 `compare` -3 = EQ
+-3 `compare` -2 = LT
+-3 `compare` -1 = LT
+-3 `compare` 0 = LT
+-3 `compare` 1 = LT
+-3 `compare` 2 = LT
+-3 `compare` 3 = LT
+-2 `compare` -3 = GT
+-2 `compare` -2 = EQ
+-2 `compare` -1 = LT
+-2 `compare` 0 = LT
+-2 `compare` 1 = LT
+-2 `compare` 2 = LT
+-2 `compare` 3 = LT
+-1 `compare` -3 = GT
+-1 `compare` -2 = GT
+-1 `compare` -1 = EQ
+-1 `compare` 0 = LT
+-1 `compare` 1 = LT
+-1 `compare` 2 = LT
+-1 `compare` 3 = LT
+0 `compare` -3 = GT
+0 `compare` -2 = GT
+0 `compare` -1 = GT
+0 `compare` 0 = EQ
+0 `compare` 1 = LT
+0 `compare` 2 = LT
+0 `compare` 3 = LT
+1 `compare` -3 = GT
+1 `compare` -2 = GT
+1 `compare` -1 = GT
+1 `compare` 0 = GT
+1 `compare` 1 = EQ
+1 `compare` 2 = LT
+1 `compare` 3 = LT
+2 `compare` -3 = GT
+2 `compare` -2 = GT
+2 `compare` -1 = GT
+2 `compare` 0 = GT
+2 `compare` 1 = GT
+2 `compare` 2 = EQ
+2 `compare` 3 = LT
+3 `compare` -3 = GT
+3 `compare` -2 = GT
+3 `compare` -1 = GT
+3 `compare` 0 = GT
+3 `compare` 1 = GT
+3 `compare` 2 = GT
+3 `compare` 3 = EQ
+#
+testNum
+-3 + -3 = -6
+-3 + -2 = -5
+-3 + -1 = -4
+-3 + 0 = -3
+-3 + 1 = -2
+-3 + 2 = -1
+-3 + 3 = 0
+-2 + -3 = -5
+-2 + -2 = -4
+-2 + -1 = -3
+-2 + 0 = -2
+-2 + 1 = -1
+-2 + 2 = 0
+-2 + 3 = 1
+-1 + -3 = -4
+-1 + -2 = -3
+-1 + -1 = -2
+-1 + 0 = -1
+-1 + 1 = 0
+-1 + 2 = 1
+-1 + 3 = 2
+0 + -3 = -3
+0 + -2 = -2
+0 + -1 = -1
+0 + 0 = 0
+0 + 1 = 1
+0 + 2 = 2
+0 + 3 = 3
+1 + -3 = -2
+1 + -2 = -1
+1 + -1 = 0
+1 + 0 = 1
+1 + 1 = 2
+1 + 2 = 3
+1 + 3 = 4
+2 + -3 = -1
+2 + -2 = 0
+2 + -1 = 1
+2 + 0 = 2
+2 + 1 = 3
+2 + 2 = 4
+2 + 3 = 5
+3 + -3 = 0
+3 + -2 = 1
+3 + -1 = 2
+3 + 0 = 3
+3 + 1 = 4
+3 + 2 = 5
+3 + 3 = 6
+#
+-3 - -3 = 0
+-3 - -2 = -1
+-3 - -1 = -2
+-3 - 0 = -3
+-3 - 1 = -4
+-3 - 2 = -5
+-3 - 3 = -6
+-2 - -3 = 1
+-2 - -2 = 0
+-2 - -1 = -1
+-2 - 0 = -2
+-2 - 1 = -3
+-2 - 2 = -4
+-2 - 3 = -5
+-1 - -3 = 2
+-1 - -2 = 1
+-1 - -1 = 0
+-1 - 0 = -1
+-1 - 1 = -2
+-1 - 2 = -3
+-1 - 3 = -4
+0 - -3 = 3
+0 - -2 = 2
+0 - -1 = 1
+0 - 0 = 0
+0 - 1 = -1
+0 - 2 = -2
+0 - 3 = -3
+1 - -3 = 4
+1 - -2 = 3
+1 - -1 = 2
+1 - 0 = 1
+1 - 1 = 0
+1 - 2 = -1
+1 - 3 = -2
+2 - -3 = 5
+2 - -2 = 4
+2 - -1 = 3
+2 - 0 = 2
+2 - 1 = 1
+2 - 2 = 0
+2 - 3 = -1
+3 - -3 = 6
+3 - -2 = 5
+3 - -1 = 4
+3 - 0 = 3
+3 - 1 = 2
+3 - 2 = 1
+3 - 3 = 0
+#
+-3 * -3 = 9
+-3 * -2 = 6
+-3 * -1 = 3
+-3 * 0 = 0
+-3 * 1 = -3
+-3 * 2 = -6
+-3 * 3 = -9
+-2 * -3 = 6
+-2 * -2 = 4
+-2 * -1 = 2
+-2 * 0 = 0
+-2 * 1 = -2
+-2 * 2 = -4
+-2 * 3 = -6
+-1 * -3 = 3
+-1 * -2 = 2
+-1 * -1 = 1
+-1 * 0 = 0
+-1 * 1 = -1
+-1 * 2 = -2
+-1 * 3 = -3
+0 * -3 = 0
+0 * -2 = 0
+0 * -1 = 0
+0 * 0 = 0
+0 * 1 = 0
+0 * 2 = 0
+0 * 3 = 0
+1 * -3 = -3
+1 * -2 = -2
+1 * -1 = -1
+1 * 0 = 0
+1 * 1 = 1
+1 * 2 = 2
+1 * 3 = 3
+2 * -3 = -6
+2 * -2 = -4
+2 * -1 = -2
+2 * 0 = 0
+2 * 1 = 2
+2 * 2 = 4
+2 * 3 = 6
+3 * -3 = -9
+3 * -2 = -6
+3 * -1 = -3
+3 * 0 = 0
+3 * 1 = 3
+3 * 2 = 6
+3 * 3 = 9
+#
+negate -3 = 3
+negate -2 = 2
+negate -1 = 1
+negate 0 = 0
+negate 1 = -1
+negate 2 = -2
+negate 3 = -3
+#
+testReal
+toRational -3 = (-3)%1
+toRational -2 = (-2)%1
+toRational -1 = (-1)%1
+toRational 0 = 0%1
+toRational 1 = 1%1
+toRational 2 = 2%1
+toRational 3 = 3%1
+#
+testIntegral
+-3 `divMod`  -3 = (1,0)
+-3 `divMod`  -2 = (1,-1)
+-3 `divMod`  -1 = (3,0)
+-3 `divMod`  0 = divide by zero
+-3 `divMod`  1 = (-3,0)
+-3 `divMod`  2 = (-2,1)
+-3 `divMod`  3 = (-1,0)
+-2 `divMod`  -3 = (0,-2)
+-2 `divMod`  -2 = (1,0)
+-2 `divMod`  -1 = (2,0)
+-2 `divMod`  0 = divide by zero
+-2 `divMod`  1 = (-2,0)
+-2 `divMod`  2 = (-1,0)
+-2 `divMod`  3 = (-1,1)
+-1 `divMod`  -3 = (0,-1)
+-1 `divMod`  -2 = (0,-1)
+-1 `divMod`  -1 = (1,0)
+-1 `divMod`  0 = divide by zero
+-1 `divMod`  1 = (-1,0)
+-1 `divMod`  2 = (-1,1)
+-1 `divMod`  3 = (-1,2)
+0 `divMod`  -3 = (0,0)
+0 `divMod`  -2 = (0,0)
+0 `divMod`  -1 = (0,0)
+0 `divMod`  0 = divide by zero
+0 `divMod`  1 = (0,0)
+0 `divMod`  2 = (0,0)
+0 `divMod`  3 = (0,0)
+1 `divMod`  -3 = (-1,-2)
+1 `divMod`  -2 = (-1,-1)
+1 `divMod`  -1 = (-1,0)
+1 `divMod`  0 = divide by zero
+1 `divMod`  1 = (1,0)
+1 `divMod`  2 = (0,1)
+1 `divMod`  3 = (0,1)
+2 `divMod`  -3 = (-1,-1)
+2 `divMod`  -2 = (-1,0)
+2 `divMod`  -1 = (-2,0)
+2 `divMod`  0 = divide by zero
+2 `divMod`  1 = (2,0)
+2 `divMod`  2 = (1,0)
+2 `divMod`  3 = (0,2)
+3 `divMod`  -3 = (-1,0)
+3 `divMod`  -2 = (-2,-1)
+3 `divMod`  -1 = (-3,0)
+3 `divMod`  0 = divide by zero
+3 `divMod`  1 = (3,0)
+3 `divMod`  2 = (1,1)
+3 `divMod`  3 = (1,0)
+#
+-3 `div`     -3 = 1
+-3 `div`     -2 = 1
+-3 `div`     -1 = 3
+-3 `div`     0 = divide by zero
+-3 `div`     1 = -3
+-3 `div`     2 = -2
+-3 `div`     3 = -1
+-2 `div`     -3 = 0
+-2 `div`     -2 = 1
+-2 `div`     -1 = 2
+-2 `div`     0 = divide by zero
+-2 `div`     1 = -2
+-2 `div`     2 = -1
+-2 `div`     3 = -1
+-1 `div`     -3 = 0
+-1 `div`     -2 = 0
+-1 `div`     -1 = 1
+-1 `div`     0 = divide by zero
+-1 `div`     1 = -1
+-1 `div`     2 = -1
+-1 `div`     3 = -1
+0 `div`     -3 = 0
+0 `div`     -2 = 0
+0 `div`     -1 = 0
+0 `div`     0 = divide by zero
+0 `div`     1 = 0
+0 `div`     2 = 0
+0 `div`     3 = 0
+1 `div`     -3 = -1
+1 `div`     -2 = -1
+1 `div`     -1 = -1
+1 `div`     0 = divide by zero
+1 `div`     1 = 1
+1 `div`     2 = 0
+1 `div`     3 = 0
+2 `div`     -3 = -1
+2 `div`     -2 = -1
+2 `div`     -1 = -2
+2 `div`     0 = divide by zero
+2 `div`     1 = 2
+2 `div`     2 = 1
+2 `div`     3 = 0
+3 `div`     -3 = -1
+3 `div`     -2 = -2
+3 `div`     -1 = -3
+3 `div`     0 = divide by zero
+3 `div`     1 = 3
+3 `div`     2 = 1
+3 `div`     3 = 1
+#
+-3 `mod`     -3 = 0
+-3 `mod`     -2 = -1
+-3 `mod`     -1 = 0
+-3 `mod`     0 = divide by zero
+-3 `mod`     1 = 0
+-3 `mod`     2 = 1
+-3 `mod`     3 = 0
+-2 `mod`     -3 = -2
+-2 `mod`     -2 = 0
+-2 `mod`     -1 = 0
+-2 `mod`     0 = divide by zero
+-2 `mod`     1 = 0
+-2 `mod`     2 = 0
+-2 `mod`     3 = 1
+-1 `mod`     -3 = -1
+-1 `mod`     -2 = -1
+-1 `mod`     -1 = 0
+-1 `mod`     0 = divide by zero
+-1 `mod`     1 = 0
+-1 `mod`     2 = 1
+-1 `mod`     3 = 2
+0 `mod`     -3 = 0
+0 `mod`     -2 = 0
+0 `mod`     -1 = 0
+0 `mod`     0 = divide by zero
+0 `mod`     1 = 0
+0 `mod`     2 = 0
+0 `mod`     3 = 0
+1 `mod`     -3 = -2
+1 `mod`     -2 = -1
+1 `mod`     -1 = 0
+1 `mod`     0 = divide by zero
+1 `mod`     1 = 0
+1 `mod`     2 = 1
+1 `mod`     3 = 1
+2 `mod`     -3 = -1
+2 `mod`     -2 = 0
+2 `mod`     -1 = 0
+2 `mod`     0 = divide by zero
+2 `mod`     1 = 0
+2 `mod`     2 = 0
+2 `mod`     3 = 2
+3 `mod`     -3 = 0
+3 `mod`     -2 = -1
+3 `mod`     -1 = 0
+3 `mod`     0 = divide by zero
+3 `mod`     1 = 0
+3 `mod`     2 = 1
+3 `mod`     3 = 0
+#
+-3 `quotRem` -3 = (1,0)
+-3 `quotRem` -2 = (1,-1)
+-3 `quotRem` -1 = (3,0)
+-3 `quotRem` 0 = divide by zero
+-3 `quotRem` 1 = (-3,0)
+-3 `quotRem` 2 = (-1,-1)
+-3 `quotRem` 3 = (-1,0)
+-2 `quotRem` -3 = (0,-2)
+-2 `quotRem` -2 = (1,0)
+-2 `quotRem` -1 = (2,0)
+-2 `quotRem` 0 = divide by zero
+-2 `quotRem` 1 = (-2,0)
+-2 `quotRem` 2 = (-1,0)
+-2 `quotRem` 3 = (0,-2)
+-1 `quotRem` -3 = (0,-1)
+-1 `quotRem` -2 = (0,-1)
+-1 `quotRem` -1 = (1,0)
+-1 `quotRem` 0 = divide by zero
+-1 `quotRem` 1 = (-1,0)
+-1 `quotRem` 2 = (0,-1)
+-1 `quotRem` 3 = (0,-1)
+0 `quotRem` -3 = (0,0)
+0 `quotRem` -2 = (0,0)
+0 `quotRem` -1 = (0,0)
+0 `quotRem` 0 = divide by zero
+0 `quotRem` 1 = (0,0)
+0 `quotRem` 2 = (0,0)
+0 `quotRem` 3 = (0,0)
+1 `quotRem` -3 = (0,1)
+1 `quotRem` -2 = (0,1)
+1 `quotRem` -1 = (-1,0)
+1 `quotRem` 0 = divide by zero
+1 `quotRem` 1 = (1,0)
+1 `quotRem` 2 = (0,1)
+1 `quotRem` 3 = (0,1)
+2 `quotRem` -3 = (0,2)
+2 `quotRem` -2 = (-1,0)
+2 `quotRem` -1 = (-2,0)
+2 `quotRem` 0 = divide by zero
+2 `quotRem` 1 = (2,0)
+2 `quotRem` 2 = (1,0)
+2 `quotRem` 3 = (0,2)
+3 `quotRem` -3 = (-1,0)
+3 `quotRem` -2 = (-1,1)
+3 `quotRem` -1 = (-3,0)
+3 `quotRem` 0 = divide by zero
+3 `quotRem` 1 = (3,0)
+3 `quotRem` 2 = (1,1)
+3 `quotRem` 3 = (1,0)
+#
+-3 `quot`    -3 = 1
+-3 `quot`    -2 = 1
+-3 `quot`    -1 = 3
+-3 `quot`    0 = divide by zero
+-3 `quot`    1 = -3
+-3 `quot`    2 = -1
+-3 `quot`    3 = -1
+-2 `quot`    -3 = 0
+-2 `quot`    -2 = 1
+-2 `quot`    -1 = 2
+-2 `quot`    0 = divide by zero
+-2 `quot`    1 = -2
+-2 `quot`    2 = -1
+-2 `quot`    3 = 0
+-1 `quot`    -3 = 0
+-1 `quot`    -2 = 0
+-1 `quot`    -1 = 1
+-1 `quot`    0 = divide by zero
+-1 `quot`    1 = -1
+-1 `quot`    2 = 0
+-1 `quot`    3 = 0
+0 `quot`    -3 = 0
+0 `quot`    -2 = 0
+0 `quot`    -1 = 0
+0 `quot`    0 = divide by zero
+0 `quot`    1 = 0
+0 `quot`    2 = 0
+0 `quot`    3 = 0
+1 `quot`    -3 = 0
+1 `quot`    -2 = 0
+1 `quot`    -1 = -1
+1 `quot`    0 = divide by zero
+1 `quot`    1 = 1
+1 `quot`    2 = 0
+1 `quot`    3 = 0
+2 `quot`    -3 = 0
+2 `quot`    -2 = -1
+2 `quot`    -1 = -2
+2 `quot`    0 = divide by zero
+2 `quot`    1 = 2
+2 `quot`    2 = 1
+2 `quot`    3 = 0
+3 `quot`    -3 = -1
+3 `quot`    -2 = -1
+3 `quot`    -1 = -3
+3 `quot`    0 = divide by zero
+3 `quot`    1 = 3
+3 `quot`    2 = 1
+3 `quot`    3 = 1
+#
+-3 `rem`     -3 = 0
+-3 `rem`     -2 = -1
+-3 `rem`     -1 = 0
+-3 `rem`     0 = divide by zero
+-3 `rem`     1 = 0
+-3 `rem`     2 = -1
+-3 `rem`     3 = 0
+-2 `rem`     -3 = -2
+-2 `rem`     -2 = 0
+-2 `rem`     -1 = 0
+-2 `rem`     0 = divide by zero
+-2 `rem`     1 = 0
+-2 `rem`     2 = 0
+-2 `rem`     3 = -2
+-1 `rem`     -3 = -1
+-1 `rem`     -2 = -1
+-1 `rem`     -1 = 0
+-1 `rem`     0 = divide by zero
+-1 `rem`     1 = 0
+-1 `rem`     2 = -1
+-1 `rem`     3 = -1
+0 `rem`     -3 = 0
+0 `rem`     -2 = 0
+0 `rem`     -1 = 0
+0 `rem`     0 = divide by zero
+0 `rem`     1 = 0
+0 `rem`     2 = 0
+0 `rem`     3 = 0
+1 `rem`     -3 = 1
+1 `rem`     -2 = 1
+1 `rem`     -1 = 0
+1 `rem`     0 = divide by zero
+1 `rem`     1 = 0
+1 `rem`     2 = 1
+1 `rem`     3 = 1
+2 `rem`     -3 = 2
+2 `rem`     -2 = 0
+2 `rem`     -1 = 0
+2 `rem`     0 = divide by zero
+2 `rem`     1 = 0
+2 `rem`     2 = 0
+2 `rem`     3 = 2
+3 `rem`     -3 = 0
+3 `rem`     -2 = 1
+3 `rem`     -1 = 0
+3 `rem`     0 = divide by zero
+3 `rem`     1 = 0
+3 `rem`     2 = 1
+3 `rem`     3 = 0
+#
+testConversions
+Integer : [-2147483648,0,2147483647]
+Int     : [-2147483648,0,2147483647]
+Int8    : [0,0,-1]
+Int16   : [0,0,-1]
+Int32   : [-2147483648,0,2147483647]
+Int64   : [-2147483648,0,2147483647]
+Word8   : [0,0,255]
+Word16  : [0,0,65535]
+Word32  : [2147483648,0,2147483647]
+Word64  : [18446744071562067968,0,2147483647]
+testBits
+-3 .&.   -3 = -3
+-3 .&.   -2 = -4
+-3 .&.   -1 = -3
+-3 .&.   0 = 0
+-3 .&.   1 = 1
+-3 .&.   2 = 0
+-3 .&.   3 = 1
+-2 .&.   -3 = -4
+-2 .&.   -2 = -2
+-2 .&.   -1 = -2
+-2 .&.   0 = 0
+-2 .&.   1 = 0
+-2 .&.   2 = 2
+-2 .&.   3 = 2
+-1 .&.   -3 = -3
+-1 .&.   -2 = -2
+-1 .&.   -1 = -1
+-1 .&.   0 = 0
+-1 .&.   1 = 1
+-1 .&.   2 = 2
+-1 .&.   3 = 3
+0 .&.   -3 = 0
+0 .&.   -2 = 0
+0 .&.   -1 = 0
+0 .&.   0 = 0
+0 .&.   1 = 0
+0 .&.   2 = 0
+0 .&.   3 = 0
+1 .&.   -3 = 1
+1 .&.   -2 = 0
+1 .&.   -1 = 1
+1 .&.   0 = 0
+1 .&.   1 = 1
+1 .&.   2 = 0
+1 .&.   3 = 1
+2 .&.   -3 = 0
+2 .&.   -2 = 2
+2 .&.   -1 = 2
+2 .&.   0 = 0
+2 .&.   1 = 0
+2 .&.   2 = 2
+2 .&.   3 = 2
+3 .&.   -3 = 1
+3 .&.   -2 = 2
+3 .&.   -1 = 3
+3 .&.   0 = 0
+3 .&.   1 = 1
+3 .&.   2 = 2
+3 .&.   3 = 3
+#
+-3 .|.   -3 = -3
+-3 .|.   -2 = -1
+-3 .|.   -1 = -1
+-3 .|.   0 = -3
+-3 .|.   1 = -3
+-3 .|.   2 = -1
+-3 .|.   3 = -1
+-2 .|.   -3 = -1
+-2 .|.   -2 = -2
+-2 .|.   -1 = -1
+-2 .|.   0 = -2
+-2 .|.   1 = -1
+-2 .|.   2 = -2
+-2 .|.   3 = -1
+-1 .|.   -3 = -1
+-1 .|.   -2 = -1
+-1 .|.   -1 = -1
+-1 .|.   0 = -1
+-1 .|.   1 = -1
+-1 .|.   2 = -1
+-1 .|.   3 = -1
+0 .|.   -3 = -3
+0 .|.   -2 = -2
+0 .|.   -1 = -1
+0 .|.   0 = 0
+0 .|.   1 = 1
+0 .|.   2 = 2
+0 .|.   3 = 3
+1 .|.   -3 = -3
+1 .|.   -2 = -1
+1 .|.   -1 = -1
+1 .|.   0 = 1
+1 .|.   1 = 1
+1 .|.   2 = 3
+1 .|.   3 = 3
+2 .|.   -3 = -1
+2 .|.   -2 = -2
+2 .|.   -1 = -1
+2 .|.   0 = 2
+2 .|.   1 = 3
+2 .|.   2 = 2
+2 .|.   3 = 3
+3 .|.   -3 = -1
+3 .|.   -2 = -1
+3 .|.   -1 = -1
+3 .|.   0 = 3
+3 .|.   1 = 3
+3 .|.   2 = 3
+3 .|.   3 = 3
+#
+-3 `xor` -3 = 0
+-3 `xor` -2 = 3
+-3 `xor` -1 = 2
+-3 `xor` 0 = -3
+-3 `xor` 1 = -4
+-3 `xor` 2 = -1
+-3 `xor` 3 = -2
+-2 `xor` -3 = 3
+-2 `xor` -2 = 0
+-2 `xor` -1 = 1
+-2 `xor` 0 = -2
+-2 `xor` 1 = -1
+-2 `xor` 2 = -4
+-2 `xor` 3 = -3
+-1 `xor` -3 = 2
+-1 `xor` -2 = 1
+-1 `xor` -1 = 0
+-1 `xor` 0 = -1
+-1 `xor` 1 = -2
+-1 `xor` 2 = -3
+-1 `xor` 3 = -4
+0 `xor` -3 = -3
+0 `xor` -2 = -2
+0 `xor` -1 = -1
+0 `xor` 0 = 0
+0 `xor` 1 = 1
+0 `xor` 2 = 2
+0 `xor` 3 = 3
+1 `xor` -3 = -4
+1 `xor` -2 = -1
+1 `xor` -1 = -2
+1 `xor` 0 = 1
+1 `xor` 1 = 0
+1 `xor` 2 = 3
+1 `xor` 3 = 2
+2 `xor` -3 = -1
+2 `xor` -2 = -4
+2 `xor` -1 = -3
+2 `xor` 0 = 2
+2 `xor` 1 = 3
+2 `xor` 2 = 0
+2 `xor` 3 = 1
+3 `xor` -3 = -2
+3 `xor` -2 = -3
+3 `xor` -1 = -4
+3 `xor` 0 = 3
+3 `xor` 1 = 2
+3 `xor` 2 = 1
+3 `xor` 3 = 0
+#
+complement -3 = 2
+complement -2 = 1
+complement -1 = 0
+complement 0 = -1
+complement 1 = -2
+complement 2 = -3
+complement 3 = -4
+#
+-3 `shiftL` 0 = -3
+-3 `shiftL` 1 = -6
+-3 `shiftL` 2 = -12
+-3 `shiftL` 3 = -24
+-3 `shiftL` 32 = 0
+-3 `shiftL` 64 = 0
+-2 `shiftL` 0 = -2
+-2 `shiftL` 1 = -4
+-2 `shiftL` 2 = -8
+-2 `shiftL` 3 = -16
+-2 `shiftL` 32 = 0
+-2 `shiftL` 64 = 0
+-1 `shiftL` 0 = -1
+-1 `shiftL` 1 = -2
+-1 `shiftL` 2 = -4
+-1 `shiftL` 3 = -8
+-1 `shiftL` 32 = 0
+-1 `shiftL` 64 = 0
+0 `shiftL` 0 = 0
+0 `shiftL` 1 = 0
+0 `shiftL` 2 = 0
+0 `shiftL` 3 = 0
+0 `shiftL` 32 = 0
+0 `shiftL` 64 = 0
+1 `shiftL` 0 = 1
+1 `shiftL` 1 = 2
+1 `shiftL` 2 = 4
+1 `shiftL` 3 = 8
+1 `shiftL` 32 = 0
+1 `shiftL` 64 = 0
+2 `shiftL` 0 = 2
+2 `shiftL` 1 = 4
+2 `shiftL` 2 = 8
+2 `shiftL` 3 = 16
+2 `shiftL` 32 = 0
+2 `shiftL` 64 = 0
+3 `shiftL` 0 = 3
+3 `shiftL` 1 = 6
+3 `shiftL` 2 = 12
+3 `shiftL` 3 = 24
+3 `shiftL` 32 = 0
+3 `shiftL` 64 = 0
+#
+-3 `shiftR` 0 = -3
+-3 `shiftR` 1 = -2
+-3 `shiftR` 2 = -1
+-3 `shiftR` 3 = -1
+-3 `shiftR` 32 = -1
+-3 `shiftR` 64 = -1
+-2 `shiftR` 0 = -2
+-2 `shiftR` 1 = -1
+-2 `shiftR` 2 = -1
+-2 `shiftR` 3 = -1
+-2 `shiftR` 32 = -1
+-2 `shiftR` 64 = -1
+-1 `shiftR` 0 = -1
+-1 `shiftR` 1 = -1
+-1 `shiftR` 2 = -1
+-1 `shiftR` 3 = -1
+-1 `shiftR` 32 = -1
+-1 `shiftR` 64 = -1
+0 `shiftR` 0 = 0
+0 `shiftR` 1 = 0
+0 `shiftR` 2 = 0
+0 `shiftR` 3 = 0
+0 `shiftR` 32 = 0
+0 `shiftR` 64 = 0
+1 `shiftR` 0 = 1
+1 `shiftR` 1 = 0
+1 `shiftR` 2 = 0
+1 `shiftR` 3 = 0
+1 `shiftR` 32 = 0
+1 `shiftR` 64 = 0
+2 `shiftR` 0 = 2
+2 `shiftR` 1 = 1
+2 `shiftR` 2 = 0
+2 `shiftR` 3 = 0
+2 `shiftR` 32 = 0
+2 `shiftR` 64 = 0
+3 `shiftR` 0 = 3
+3 `shiftR` 1 = 1
+3 `shiftR` 2 = 0
+3 `shiftR` 3 = 0
+3 `shiftR` 32 = 0
+3 `shiftR` 64 = 0
+#
+-3 `rotate` -3 = -1073741825
+-3 `rotate` -2 = 2147483647
+-3 `rotate` -1 = -2
+-3 `rotate` 0 = -3
+-3 `rotate` 1 = -5
+-3 `rotate` 2 = -9
+-3 `rotate` 3 = -17
+-2 `rotate` -3 = -536870913
+-2 `rotate` -2 = -1073741825
+-2 `rotate` -1 = 2147483647
+-2 `rotate` 0 = -2
+-2 `rotate` 1 = -3
+-2 `rotate` 2 = -5
+-2 `rotate` 3 = -9
+-1 `rotate` -3 = -1
+-1 `rotate` -2 = -1
+-1 `rotate` -1 = -1
+-1 `rotate` 0 = -1
+-1 `rotate` 1 = -1
+-1 `rotate` 2 = -1
+-1 `rotate` 3 = -1
+0 `rotate` -3 = 0
+0 `rotate` -2 = 0
+0 `rotate` -1 = 0
+0 `rotate` 0 = 0
+0 `rotate` 1 = 0
+0 `rotate` 2 = 0
+0 `rotate` 3 = 0
+1 `rotate` -3 = 536870912
+1 `rotate` -2 = 1073741824
+1 `rotate` -1 = -2147483648
+1 `rotate` 0 = 1
+1 `rotate` 1 = 2
+1 `rotate` 2 = 4
+1 `rotate` 3 = 8
+2 `rotate` -3 = 1073741824
+2 `rotate` -2 = -2147483648
+2 `rotate` -1 = 1
+2 `rotate` 0 = 2
+2 `rotate` 1 = 4
+2 `rotate` 2 = 8
+2 `rotate` 3 = 16
+3 `rotate` -3 = 1610612736
+3 `rotate` -2 = -1073741824
+3 `rotate` -1 = -2147483647
+3 `rotate` 0 = 3
+3 `rotate` 1 = 6
+3 `rotate` 2 = 12
+3 `rotate` 3 = 24
+#
+bit 0 = 1
+bit 1 = 2
+bit 2 = 4
+bit 3 = 8
+#
+-3 `setBit` 0 = -3
+-3 `setBit` 1 = -1
+-3 `setBit` 2 = -3
+-3 `setBit` 3 = -3
+-3 `setBit` 32 = -3
+-3 `setBit` 64 = -3
+-2 `setBit` 0 = -1
+-2 `setBit` 1 = -2
+-2 `setBit` 2 = -2
+-2 `setBit` 3 = -2
+-2 `setBit` 32 = -2
+-2 `setBit` 64 = -2
+-1 `setBit` 0 = -1
+-1 `setBit` 1 = -1
+-1 `setBit` 2 = -1
+-1 `setBit` 3 = -1
+-1 `setBit` 32 = -1
+-1 `setBit` 64 = -1
+0 `setBit` 0 = 1
+0 `setBit` 1 = 2
+0 `setBit` 2 = 4
+0 `setBit` 3 = 8
+0 `setBit` 32 = 0
+0 `setBit` 64 = 0
+1 `setBit` 0 = 1
+1 `setBit` 1 = 3
+1 `setBit` 2 = 5
+1 `setBit` 3 = 9
+1 `setBit` 32 = 1
+1 `setBit` 64 = 1
+2 `setBit` 0 = 3
+2 `setBit` 1 = 2
+2 `setBit` 2 = 6
+2 `setBit` 3 = 10
+2 `setBit` 32 = 2
+2 `setBit` 64 = 2
+3 `setBit` 0 = 3
+3 `setBit` 1 = 3
+3 `setBit` 2 = 7
+3 `setBit` 3 = 11
+3 `setBit` 32 = 3
+3 `setBit` 64 = 3
+#
+-3 `clearBit` 0 = -4
+-3 `clearBit` 1 = -3
+-3 `clearBit` 2 = -7
+-3 `clearBit` 3 = -11
+-3 `clearBit` 32 = -3
+-3 `clearBit` 64 = -3
+-2 `clearBit` 0 = -2
+-2 `clearBit` 1 = -4
+-2 `clearBit` 2 = -6
+-2 `clearBit` 3 = -10
+-2 `clearBit` 32 = -2
+-2 `clearBit` 64 = -2
+-1 `clearBit` 0 = -2
+-1 `clearBit` 1 = -3
+-1 `clearBit` 2 = -5
+-1 `clearBit` 3 = -9
+-1 `clearBit` 32 = -1
+-1 `clearBit` 64 = -1
+0 `clearBit` 0 = 0
+0 `clearBit` 1 = 0
+0 `clearBit` 2 = 0
+0 `clearBit` 3 = 0
+0 `clearBit` 32 = 0
+0 `clearBit` 64 = 0
+1 `clearBit` 0 = 0
+1 `clearBit` 1 = 1
+1 `clearBit` 2 = 1
+1 `clearBit` 3 = 1
+1 `clearBit` 32 = 1
+1 `clearBit` 64 = 1
+2 `clearBit` 0 = 2
+2 `clearBit` 1 = 0
+2 `clearBit` 2 = 2
+2 `clearBit` 3 = 2
+2 `clearBit` 32 = 2
+2 `clearBit` 64 = 2
+3 `clearBit` 0 = 2
+3 `clearBit` 1 = 1
+3 `clearBit` 2 = 3
+3 `clearBit` 3 = 3
+3 `clearBit` 32 = 3
+3 `clearBit` 64 = 3
+#
+-3 `complementBit` 0 = -4
+-3 `complementBit` 1 = -1
+-3 `complementBit` 2 = -7
+-3 `complementBit` 3 = -11
+-3 `complementBit` 32 = -3
+-3 `complementBit` 64 = -3
+-2 `complementBit` 0 = -1
+-2 `complementBit` 1 = -4
+-2 `complementBit` 2 = -6
+-2 `complementBit` 3 = -10
+-2 `complementBit` 32 = -2
+-2 `complementBit` 64 = -2
+-1 `complementBit` 0 = -2
+-1 `complementBit` 1 = -3
+-1 `complementBit` 2 = -5
+-1 `complementBit` 3 = -9
+-1 `complementBit` 32 = -1
+-1 `complementBit` 64 = -1
+0 `complementBit` 0 = 1
+0 `complementBit` 1 = 2
+0 `complementBit` 2 = 4
+0 `complementBit` 3 = 8
+0 `complementBit` 32 = 0
+0 `complementBit` 64 = 0
+1 `complementBit` 0 = 0
+1 `complementBit` 1 = 3
+1 `complementBit` 2 = 5
+1 `complementBit` 3 = 9
+1 `complementBit` 32 = 1
+1 `complementBit` 64 = 1
+2 `complementBit` 0 = 3
+2 `complementBit` 1 = 0
+2 `complementBit` 2 = 6
+2 `complementBit` 3 = 10
+2 `complementBit` 32 = 2
+2 `complementBit` 64 = 2
+3 `complementBit` 0 = 2
+3 `complementBit` 1 = 1
+3 `complementBit` 2 = 7
+3 `complementBit` 3 = 11
+3 `complementBit` 32 = 3
+3 `complementBit` 64 = 3
+#
+-3 `testBit` 0 = True
+-3 `testBit` 1 = False
+-3 `testBit` 2 = True
+-3 `testBit` 3 = True
+-3 `testBit` 32 = False
+-3 `testBit` 64 = False
+-2 `testBit` 0 = False
+-2 `testBit` 1 = True
+-2 `testBit` 2 = True
+-2 `testBit` 3 = True
+-2 `testBit` 32 = False
+-2 `testBit` 64 = False
+-1 `testBit` 0 = True
+-1 `testBit` 1 = True
+-1 `testBit` 2 = True
+-1 `testBit` 3 = True
+-1 `testBit` 32 = False
+-1 `testBit` 64 = False
+0 `testBit` 0 = False
+0 `testBit` 1 = False
+0 `testBit` 2 = False
+0 `testBit` 3 = False
+0 `testBit` 32 = False
+0 `testBit` 64 = False
+1 `testBit` 0 = True
+1 `testBit` 1 = False
+1 `testBit` 2 = False
+1 `testBit` 3 = False
+1 `testBit` 32 = False
+1 `testBit` 64 = False
+2 `testBit` 0 = False
+2 `testBit` 1 = True
+2 `testBit` 2 = False
+2 `testBit` 3 = False
+2 `testBit` 32 = False
+2 `testBit` 64 = False
+3 `testBit` 0 = True
+3 `testBit` 1 = True
+3 `testBit` 2 = False
+3 `testBit` 3 = False
+3 `testBit` 32 = False
+3 `testBit` 64 = False
+#
+bitSize -3 = 32
+bitSize -2 = 32
+bitSize -1 = 32
+bitSize 0 = 32
+bitSize 1 = 32
+bitSize 2 = 32
+bitSize 3 = 32
+#
+isSigned -3 = True
+isSigned -2 = True
+isSigned -1 = True
+isSigned 0 = True
+isSigned 1 = True
+isSigned 2 = True
+isSigned 3 = True
+#
+--------------------------------
+--Testing Int64
+--------------------------------
+testBounded
+(9223372036854775807,-9223372036854775808,-9223372036854775807)
+(9223372036854775806,9223372036854775807,-9223372036854775808)
+testEnum
+[0,1,2,3,4,5,6,7,8,9]
+[0,2,4,6,8,10,12,14,16,18]
+[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
+[0,2,4,6,8,10,12,14,16,18,20]
+testReadShow
+[-3,-2,-1,0,1,2,3]
+[-3,-2,-1,0,1,2,3]
+testEq
+-3 == -3 = True
+-3 == -2 = False
+-3 == -1 = False
+-3 == 0 = False
+-3 == 1 = False
+-3 == 2 = False
+-3 == 3 = False
+-2 == -3 = False
+-2 == -2 = True
+-2 == -1 = False
+-2 == 0 = False
+-2 == 1 = False
+-2 == 2 = False
+-2 == 3 = False
+-1 == -3 = False
+-1 == -2 = False
+-1 == -1 = True
+-1 == 0 = False
+-1 == 1 = False
+-1 == 2 = False
+-1 == 3 = False
+0 == -3 = False
+0 == -2 = False
+0 == -1 = False
+0 == 0 = True
+0 == 1 = False
+0 == 2 = False
+0 == 3 = False
+1 == -3 = False
+1 == -2 = False
+1 == -1 = False
+1 == 0 = False
+1 == 1 = True
+1 == 2 = False
+1 == 3 = False
+2 == -3 = False
+2 == -2 = False
+2 == -1 = False
+2 == 0 = False
+2 == 1 = False
+2 == 2 = True
+2 == 3 = False
+3 == -3 = False
+3 == -2 = False
+3 == -1 = False
+3 == 0 = False
+3 == 1 = False
+3 == 2 = False
+3 == 3 = True
+#
+-3 /= -3 = False
+-3 /= -2 = True
+-3 /= -1 = True
+-3 /= 0 = True
+-3 /= 1 = True
+-3 /= 2 = True
+-3 /= 3 = True
+-2 /= -3 = True
+-2 /= -2 = False
+-2 /= -1 = True
+-2 /= 0 = True
+-2 /= 1 = True
+-2 /= 2 = True
+-2 /= 3 = True
+-1 /= -3 = True
+-1 /= -2 = True
+-1 /= -1 = False
+-1 /= 0 = True
+-1 /= 1 = True
+-1 /= 2 = True
+-1 /= 3 = True
+0 /= -3 = True
+0 /= -2 = True
+0 /= -1 = True
+0 /= 0 = False
+0 /= 1 = True
+0 /= 2 = True
+0 /= 3 = True
+1 /= -3 = True
+1 /= -2 = True
+1 /= -1 = True
+1 /= 0 = True
+1 /= 1 = False
+1 /= 2 = True
+1 /= 3 = True
+2 /= -3 = True
+2 /= -2 = True
+2 /= -1 = True
+2 /= 0 = True
+2 /= 1 = True
+2 /= 2 = False
+2 /= 3 = True
+3 /= -3 = True
+3 /= -2 = True
+3 /= -1 = True
+3 /= 0 = True
+3 /= 1 = True
+3 /= 2 = True
+3 /= 3 = False
+#
+testOrd
+-3 <= -3 = True
+-3 <= -2 = True
+-3 <= -1 = True
+-3 <= 0 = True
+-3 <= 1 = True
+-3 <= 2 = True
+-3 <= 3 = True
+-2 <= -3 = False
+-2 <= -2 = True
+-2 <= -1 = True
+-2 <= 0 = True
+-2 <= 1 = True
+-2 <= 2 = True
+-2 <= 3 = True
+-1 <= -3 = False
+-1 <= -2 = False
+-1 <= -1 = True
+-1 <= 0 = True
+-1 <= 1 = True
+-1 <= 2 = True
+-1 <= 3 = True
+0 <= -3 = False
+0 <= -2 = False
+0 <= -1 = False
+0 <= 0 = True
+0 <= 1 = True
+0 <= 2 = True
+0 <= 3 = True
+1 <= -3 = False
+1 <= -2 = False
+1 <= -1 = False
+1 <= 0 = False
+1 <= 1 = True
+1 <= 2 = True
+1 <= 3 = True
+2 <= -3 = False
+2 <= -2 = False
+2 <= -1 = False
+2 <= 0 = False
+2 <= 1 = False
+2 <= 2 = True
+2 <= 3 = True
+3 <= -3 = False
+3 <= -2 = False
+3 <= -1 = False
+3 <= 0 = False
+3 <= 1 = False
+3 <= 2 = False
+3 <= 3 = True
+#
+-3 <  -3 = False
+-3 <  -2 = True
+-3 <  -1 = True
+-3 <  0 = True
+-3 <  1 = True
+-3 <  2 = True
+-3 <  3 = True
+-2 <  -3 = False
+-2 <  -2 = False
+-2 <  -1 = True
+-2 <  0 = True
+-2 <  1 = True
+-2 <  2 = True
+-2 <  3 = True
+-1 <  -3 = False
+-1 <  -2 = False
+-1 <  -1 = False
+-1 <  0 = True
+-1 <  1 = True
+-1 <  2 = True
+-1 <  3 = True
+0 <  -3 = False
+0 <  -2 = False
+0 <  -1 = False
+0 <  0 = False
+0 <  1 = True
+0 <  2 = True
+0 <  3 = True
+1 <  -3 = False
+1 <  -2 = False
+1 <  -1 = False
+1 <  0 = False
+1 <  1 = False
+1 <  2 = True
+1 <  3 = True
+2 <  -3 = False
+2 <  -2 = False
+2 <  -1 = False
+2 <  0 = False
+2 <  1 = False
+2 <  2 = False
+2 <  3 = True
+3 <  -3 = False
+3 <  -2 = False
+3 <  -1 = False
+3 <  0 = False
+3 <  1 = False
+3 <  2 = False
+3 <  3 = False
+#
+-3 >  -3 = False
+-3 >  -2 = False
+-3 >  -1 = False
+-3 >  0 = False
+-3 >  1 = False
+-3 >  2 = False
+-3 >  3 = False
+-2 >  -3 = True
+-2 >  -2 = False
+-2 >  -1 = False
+-2 >  0 = False
+-2 >  1 = False
+-2 >  2 = False
+-2 >  3 = False
+-1 >  -3 = True
+-1 >  -2 = True
+-1 >  -1 = False
+-1 >  0 = False
+-1 >  1 = False
+-1 >  2 = False
+-1 >  3 = False
+0 >  -3 = True
+0 >  -2 = True
+0 >  -1 = True
+0 >  0 = False
+0 >  1 = False
+0 >  2 = False
+0 >  3 = False
+1 >  -3 = True
+1 >  -2 = True
+1 >  -1 = True
+1 >  0 = True
+1 >  1 = False
+1 >  2 = False
+1 >  3 = False
+2 >  -3 = True
+2 >  -2 = True
+2 >  -1 = True
+2 >  0 = True
+2 >  1 = True
+2 >  2 = False
+2 >  3 = False
+3 >  -3 = True
+3 >  -2 = True
+3 >  -1 = True
+3 >  0 = True
+3 >  1 = True
+3 >  2 = True
+3 >  3 = False
+#
+-3 >= -3 = True
+-3 >= -2 = False
+-3 >= -1 = False
+-3 >= 0 = False
+-3 >= 1 = False
+-3 >= 2 = False
+-3 >= 3 = False
+-2 >= -3 = True
+-2 >= -2 = True
+-2 >= -1 = False
+-2 >= 0 = False
+-2 >= 1 = False
+-2 >= 2 = False
+-2 >= 3 = False
+-1 >= -3 = True
+-1 >= -2 = True
+-1 >= -1 = True
+-1 >= 0 = False
+-1 >= 1 = False
+-1 >= 2 = False
+-1 >= 3 = False
+0 >= -3 = True
+0 >= -2 = True
+0 >= -1 = True
+0 >= 0 = True
+0 >= 1 = False
+0 >= 2 = False
+0 >= 3 = False
+1 >= -3 = True
+1 >= -2 = True
+1 >= -1 = True
+1 >= 0 = True
+1 >= 1 = True
+1 >= 2 = False
+1 >= 3 = False
+2 >= -3 = True
+2 >= -2 = True
+2 >= -1 = True
+2 >= 0 = True
+2 >= 1 = True
+2 >= 2 = True
+2 >= 3 = False
+3 >= -3 = True
+3 >= -2 = True
+3 >= -1 = True
+3 >= 0 = True
+3 >= 1 = True
+3 >= 2 = True
+3 >= 3 = True
+#
+-3 `compare` -3 = EQ
+-3 `compare` -2 = LT
+-3 `compare` -1 = LT
+-3 `compare` 0 = LT
+-3 `compare` 1 = LT
+-3 `compare` 2 = LT
+-3 `compare` 3 = LT
+-2 `compare` -3 = GT
+-2 `compare` -2 = EQ
+-2 `compare` -1 = LT
+-2 `compare` 0 = LT
+-2 `compare` 1 = LT
+-2 `compare` 2 = LT
+-2 `compare` 3 = LT
+-1 `compare` -3 = GT
+-1 `compare` -2 = GT
+-1 `compare` -1 = EQ
+-1 `compare` 0 = LT
+-1 `compare` 1 = LT
+-1 `compare` 2 = LT
+-1 `compare` 3 = LT
+0 `compare` -3 = GT
+0 `compare` -2 = GT
+0 `compare` -1 = GT
+0 `compare` 0 = EQ
+0 `compare` 1 = LT
+0 `compare` 2 = LT
+0 `compare` 3 = LT
+1 `compare` -3 = GT
+1 `compare` -2 = GT
+1 `compare` -1 = GT
+1 `compare` 0 = GT
+1 `compare` 1 = EQ
+1 `compare` 2 = LT
+1 `compare` 3 = LT
+2 `compare` -3 = GT
+2 `compare` -2 = GT
+2 `compare` -1 = GT
+2 `compare` 0 = GT
+2 `compare` 1 = GT
+2 `compare` 2 = EQ
+2 `compare` 3 = LT
+3 `compare` -3 = GT
+3 `compare` -2 = GT
+3 `compare` -1 = GT
+3 `compare` 0 = GT
+3 `compare` 1 = GT
+3 `compare` 2 = GT
+3 `compare` 3 = EQ
+#
+testNum
+-3 + -3 = -6
+-3 + -2 = -5
+-3 + -1 = -4
+-3 + 0 = -3
+-3 + 1 = -2
+-3 + 2 = -1
+-3 + 3 = 0
+-2 + -3 = -5
+-2 + -2 = -4
+-2 + -1 = -3
+-2 + 0 = -2
+-2 + 1 = -1
+-2 + 2 = 0
+-2 + 3 = 1
+-1 + -3 = -4
+-1 + -2 = -3
+-1 + -1 = -2
+-1 + 0 = -1
+-1 + 1 = 0
+-1 + 2 = 1
+-1 + 3 = 2
+0 + -3 = -3
+0 + -2 = -2
+0 + -1 = -1
+0 + 0 = 0
+0 + 1 = 1
+0 + 2 = 2
+0 + 3 = 3
+1 + -3 = -2
+1 + -2 = -1
+1 + -1 = 0
+1 + 0 = 1
+1 + 1 = 2
+1 + 2 = 3
+1 + 3 = 4
+2 + -3 = -1
+2 + -2 = 0
+2 + -1 = 1
+2 + 0 = 2
+2 + 1 = 3
+2 + 2 = 4
+2 + 3 = 5
+3 + -3 = 0
+3 + -2 = 1
+3 + -1 = 2
+3 + 0 = 3
+3 + 1 = 4
+3 + 2 = 5
+3 + 3 = 6
+#
+-3 - -3 = 0
+-3 - -2 = -1
+-3 - -1 = -2
+-3 - 0 = -3
+-3 - 1 = -4
+-3 - 2 = -5
+-3 - 3 = -6
+-2 - -3 = 1
+-2 - -2 = 0
+-2 - -1 = -1
+-2 - 0 = -2
+-2 - 1 = -3
+-2 - 2 = -4
+-2 - 3 = -5
+-1 - -3 = 2
+-1 - -2 = 1
+-1 - -1 = 0
+-1 - 0 = -1
+-1 - 1 = -2
+-1 - 2 = -3
+-1 - 3 = -4
+0 - -3 = 3
+0 - -2 = 2
+0 - -1 = 1
+0 - 0 = 0
+0 - 1 = -1
+0 - 2 = -2
+0 - 3 = -3
+1 - -3 = 4
+1 - -2 = 3
+1 - -1 = 2
+1 - 0 = 1
+1 - 1 = 0
+1 - 2 = -1
+1 - 3 = -2
+2 - -3 = 5
+2 - -2 = 4
+2 - -1 = 3
+2 - 0 = 2
+2 - 1 = 1
+2 - 2 = 0
+2 - 3 = -1
+3 - -3 = 6
+3 - -2 = 5
+3 - -1 = 4
+3 - 0 = 3
+3 - 1 = 2
+3 - 2 = 1
+3 - 3 = 0
+#
+-3 * -3 = 9
+-3 * -2 = 6
+-3 * -1 = 3
+-3 * 0 = 0
+-3 * 1 = -3
+-3 * 2 = -6
+-3 * 3 = -9
+-2 * -3 = 6
+-2 * -2 = 4
+-2 * -1 = 2
+-2 * 0 = 0
+-2 * 1 = -2
+-2 * 2 = -4
+-2 * 3 = -6
+-1 * -3 = 3
+-1 * -2 = 2
+-1 * -1 = 1
+-1 * 0 = 0
+-1 * 1 = -1
+-1 * 2 = -2
+-1 * 3 = -3
+0 * -3 = 0
+0 * -2 = 0
+0 * -1 = 0
+0 * 0 = 0
+0 * 1 = 0
+0 * 2 = 0
+0 * 3 = 0
+1 * -3 = -3
+1 * -2 = -2
+1 * -1 = -1
+1 * 0 = 0
+1 * 1 = 1
+1 * 2 = 2
+1 * 3 = 3
+2 * -3 = -6
+2 * -2 = -4
+2 * -1 = -2
+2 * 0 = 0
+2 * 1 = 2
+2 * 2 = 4
+2 * 3 = 6
+3 * -3 = -9
+3 * -2 = -6
+3 * -1 = -3
+3 * 0 = 0
+3 * 1 = 3
+3 * 2 = 6
+3 * 3 = 9
+#
+negate -3 = 3
+negate -2 = 2
+negate -1 = 1
+negate 0 = 0
+negate 1 = -1
+negate 2 = -2
+negate 3 = -3
+#
+testReal
+toRational -3 = (-3)%1
+toRational -2 = (-2)%1
+toRational -1 = (-1)%1
+toRational 0 = 0%1
+toRational 1 = 1%1
+toRational 2 = 2%1
+toRational 3 = 3%1
+#
+testIntegral
+-3 `divMod`  -3 = (1,0)
+-3 `divMod`  -2 = (1,-1)
+-3 `divMod`  -1 = (3,0)
+-3 `divMod`  0 = divide by zero
+-3 `divMod`  1 = (-3,0)
+-3 `divMod`  2 = (-2,1)
+-3 `divMod`  3 = (-1,0)
+-2 `divMod`  -3 = (0,-2)
+-2 `divMod`  -2 = (1,0)
+-2 `divMod`  -1 = (2,0)
+-2 `divMod`  0 = divide by zero
+-2 `divMod`  1 = (-2,0)
+-2 `divMod`  2 = (-1,0)
+-2 `divMod`  3 = (-1,1)
+-1 `divMod`  -3 = (0,-1)
+-1 `divMod`  -2 = (0,-1)
+-1 `divMod`  -1 = (1,0)
+-1 `divMod`  0 = divide by zero
+-1 `divMod`  1 = (-1,0)
+-1 `divMod`  2 = (-1,1)
+-1 `divMod`  3 = (-1,2)
+0 `divMod`  -3 = (0,0)
+0 `divMod`  -2 = (0,0)
+0 `divMod`  -1 = (0,0)
+0 `divMod`  0 = divide by zero
+0 `divMod`  1 = (0,0)
+0 `divMod`  2 = (0,0)
+0 `divMod`  3 = (0,0)
+1 `divMod`  -3 = (-1,-2)
+1 `divMod`  -2 = (-1,-1)
+1 `divMod`  -1 = (-1,0)
+1 `divMod`  0 = divide by zero
+1 `divMod`  1 = (1,0)
+1 `divMod`  2 = (0,1)
+1 `divMod`  3 = (0,1)
+2 `divMod`  -3 = (-1,-1)
+2 `divMod`  -2 = (-1,0)
+2 `divMod`  -1 = (-2,0)
+2 `divMod`  0 = divide by zero
+2 `divMod`  1 = (2,0)
+2 `divMod`  2 = (1,0)
+2 `divMod`  3 = (0,2)
+3 `divMod`  -3 = (-1,0)
+3 `divMod`  -2 = (-2,-1)
+3 `divMod`  -1 = (-3,0)
+3 `divMod`  0 = divide by zero
+3 `divMod`  1 = (3,0)
+3 `divMod`  2 = (1,1)
+3 `divMod`  3 = (1,0)
+#
+-3 `div`     -3 = 1
+-3 `div`     -2 = 1
+-3 `div`     -1 = 3
+-3 `div`     0 = divide by zero
+-3 `div`     1 = -3
+-3 `div`     2 = -2
+-3 `div`     3 = -1
+-2 `div`     -3 = 0
+-2 `div`     -2 = 1
+-2 `div`     -1 = 2
+-2 `div`     0 = divide by zero
+-2 `div`     1 = -2
+-2 `div`     2 = -1
+-2 `div`     3 = -1
+-1 `div`     -3 = 0
+-1 `div`     -2 = 0
+-1 `div`     -1 = 1
+-1 `div`     0 = divide by zero
+-1 `div`     1 = -1
+-1 `div`     2 = -1
+-1 `div`     3 = -1
+0 `div`     -3 = 0
+0 `div`     -2 = 0
+0 `div`     -1 = 0
+0 `div`     0 = divide by zero
+0 `div`     1 = 0
+0 `div`     2 = 0
+0 `div`     3 = 0
+1 `div`     -3 = -1
+1 `div`     -2 = -1
+1 `div`     -1 = -1
+1 `div`     0 = divide by zero
+1 `div`     1 = 1
+1 `div`     2 = 0
+1 `div`     3 = 0
+2 `div`     -3 = -1
+2 `div`     -2 = -1
+2 `div`     -1 = -2
+2 `div`     0 = divide by zero
+2 `div`     1 = 2
+2 `div`     2 = 1
+2 `div`     3 = 0
+3 `div`     -3 = -1
+3 `div`     -2 = -2
+3 `div`     -1 = -3
+3 `div`     0 = divide by zero
+3 `div`     1 = 3
+3 `div`     2 = 1
+3 `div`     3 = 1
+#
+-3 `mod`     -3 = 0
+-3 `mod`     -2 = -1
+-3 `mod`     -1 = 0
+-3 `mod`     0 = divide by zero
+-3 `mod`     1 = 0
+-3 `mod`     2 = 1
+-3 `mod`     3 = 0
+-2 `mod`     -3 = -2
+-2 `mod`     -2 = 0
+-2 `mod`     -1 = 0
+-2 `mod`     0 = divide by zero
+-2 `mod`     1 = 0
+-2 `mod`     2 = 0
+-2 `mod`     3 = 1
+-1 `mod`     -3 = -1
+-1 `mod`     -2 = -1
+-1 `mod`     -1 = 0
+-1 `mod`     0 = divide by zero
+-1 `mod`     1 = 0
+-1 `mod`     2 = 1
+-1 `mod`     3 = 2
+0 `mod`     -3 = 0
+0 `mod`     -2 = 0
+0 `mod`     -1 = 0
+0 `mod`     0 = divide by zero
+0 `mod`     1 = 0
+0 `mod`     2 = 0
+0 `mod`     3 = 0
+1 `mod`     -3 = -2
+1 `mod`     -2 = -1
+1 `mod`     -1 = 0
+1 `mod`     0 = divide by zero
+1 `mod`     1 = 0
+1 `mod`     2 = 1
+1 `mod`     3 = 1
+2 `mod`     -3 = -1
+2 `mod`     -2 = 0
+2 `mod`     -1 = 0
+2 `mod`     0 = divide by zero
+2 `mod`     1 = 0
+2 `mod`     2 = 0
+2 `mod`     3 = 2
+3 `mod`     -3 = 0
+3 `mod`     -2 = -1
+3 `mod`     -1 = 0
+3 `mod`     0 = divide by zero
+3 `mod`     1 = 0
+3 `mod`     2 = 1
+3 `mod`     3 = 0
+#
+-3 `quotRem` -3 = (1,0)
+-3 `quotRem` -2 = (1,-1)
+-3 `quotRem` -1 = (3,0)
+-3 `quotRem` 0 = divide by zero
+-3 `quotRem` 1 = (-3,0)
+-3 `quotRem` 2 = (-1,-1)
+-3 `quotRem` 3 = (-1,0)
+-2 `quotRem` -3 = (0,-2)
+-2 `quotRem` -2 = (1,0)
+-2 `quotRem` -1 = (2,0)
+-2 `quotRem` 0 = divide by zero
+-2 `quotRem` 1 = (-2,0)
+-2 `quotRem` 2 = (-1,0)
+-2 `quotRem` 3 = (0,-2)
+-1 `quotRem` -3 = (0,-1)
+-1 `quotRem` -2 = (0,-1)
+-1 `quotRem` -1 = (1,0)
+-1 `quotRem` 0 = divide by zero
+-1 `quotRem` 1 = (-1,0)
+-1 `quotRem` 2 = (0,-1)
+-1 `quotRem` 3 = (0,-1)
+0 `quotRem` -3 = (0,0)
+0 `quotRem` -2 = (0,0)
+0 `quotRem` -1 = (0,0)
+0 `quotRem` 0 = divide by zero
+0 `quotRem` 1 = (0,0)
+0 `quotRem` 2 = (0,0)
+0 `quotRem` 3 = (0,0)
+1 `quotRem` -3 = (0,1)
+1 `quotRem` -2 = (0,1)
+1 `quotRem` -1 = (-1,0)
+1 `quotRem` 0 = divide by zero
+1 `quotRem` 1 = (1,0)
+1 `quotRem` 2 = (0,1)
+1 `quotRem` 3 = (0,1)
+2 `quotRem` -3 = (0,2)
+2 `quotRem` -2 = (-1,0)
+2 `quotRem` -1 = (-2,0)
+2 `quotRem` 0 = divide by zero
+2 `quotRem` 1 = (2,0)
+2 `quotRem` 2 = (1,0)
+2 `quotRem` 3 = (0,2)
+3 `quotRem` -3 = (-1,0)
+3 `quotRem` -2 = (-1,1)
+3 `quotRem` -1 = (-3,0)
+3 `quotRem` 0 = divide by zero
+3 `quotRem` 1 = (3,0)
+3 `quotRem` 2 = (1,1)
+3 `quotRem` 3 = (1,0)
+#
+-3 `quot`    -3 = 1
+-3 `quot`    -2 = 1
+-3 `quot`    -1 = 3
+-3 `quot`    0 = divide by zero
+-3 `quot`    1 = -3
+-3 `quot`    2 = -1
+-3 `quot`    3 = -1
+-2 `quot`    -3 = 0
+-2 `quot`    -2 = 1
+-2 `quot`    -1 = 2
+-2 `quot`    0 = divide by zero
+-2 `quot`    1 = -2
+-2 `quot`    2 = -1
+-2 `quot`    3 = 0
+-1 `quot`    -3 = 0
+-1 `quot`    -2 = 0
+-1 `quot`    -1 = 1
+-1 `quot`    0 = divide by zero
+-1 `quot`    1 = -1
+-1 `quot`    2 = 0
+-1 `quot`    3 = 0
+0 `quot`    -3 = 0
+0 `quot`    -2 = 0
+0 `quot`    -1 = 0
+0 `quot`    0 = divide by zero
+0 `quot`    1 = 0
+0 `quot`    2 = 0
+0 `quot`    3 = 0
+1 `quot`    -3 = 0
+1 `quot`    -2 = 0
+1 `quot`    -1 = -1
+1 `quot`    0 = divide by zero
+1 `quot`    1 = 1
+1 `quot`    2 = 0
+1 `quot`    3 = 0
+2 `quot`    -3 = 0
+2 `quot`    -2 = -1
+2 `quot`    -1 = -2
+2 `quot`    0 = divide by zero
+2 `quot`    1 = 2
+2 `quot`    2 = 1
+2 `quot`    3 = 0
+3 `quot`    -3 = -1
+3 `quot`    -2 = -1
+3 `quot`    -1 = -3
+3 `quot`    0 = divide by zero
+3 `quot`    1 = 3
+3 `quot`    2 = 1
+3 `quot`    3 = 1
+#
+-3 `rem`     -3 = 0
+-3 `rem`     -2 = -1
+-3 `rem`     -1 = 0
+-3 `rem`     0 = divide by zero
+-3 `rem`     1 = 0
+-3 `rem`     2 = -1
+-3 `rem`     3 = 0
+-2 `rem`     -3 = -2
+-2 `rem`     -2 = 0
+-2 `rem`     -1 = 0
+-2 `rem`     0 = divide by zero
+-2 `rem`     1 = 0
+-2 `rem`     2 = 0
+-2 `rem`     3 = -2
+-1 `rem`     -3 = -1
+-1 `rem`     -2 = -1
+-1 `rem`     -1 = 0
+-1 `rem`     0 = divide by zero
+-1 `rem`     1 = 0
+-1 `rem`     2 = -1
+-1 `rem`     3 = -1
+0 `rem`     -3 = 0
+0 `rem`     -2 = 0
+0 `rem`     -1 = 0
+0 `rem`     0 = divide by zero
+0 `rem`     1 = 0
+0 `rem`     2 = 0
+0 `rem`     3 = 0
+1 `rem`     -3 = 1
+1 `rem`     -2 = 1
+1 `rem`     -1 = 0
+1 `rem`     0 = divide by zero
+1 `rem`     1 = 0
+1 `rem`     2 = 1
+1 `rem`     3 = 1
+2 `rem`     -3 = 2
+2 `rem`     -2 = 0
+2 `rem`     -1 = 0
+2 `rem`     0 = divide by zero
+2 `rem`     1 = 0
+2 `rem`     2 = 0
+2 `rem`     3 = 2
+3 `rem`     -3 = 0
+3 `rem`     -2 = 1
+3 `rem`     -1 = 0
+3 `rem`     0 = divide by zero
+3 `rem`     1 = 0
+3 `rem`     2 = 1
+3 `rem`     3 = 0
+#
+testConversions
+Integer : [-9223372036854775808,0,9223372036854775807]
+Int     : [-9223372036854775808,0,9223372036854775807]
+Int8    : [0,0,-1]
+Int16   : [0,0,-1]
+Int32   : [0,0,-1]
+Int64   : [-9223372036854775808,0,9223372036854775807]
+Word8   : [0,0,255]
+Word16  : [0,0,65535]
+Word32  : [0,0,4294967295]
+Word64  : [9223372036854775808,0,9223372036854775807]
+testBits
+-3 .&.   -3 = -3
+-3 .&.   -2 = -4
+-3 .&.   -1 = -3
+-3 .&.   0 = 0
+-3 .&.   1 = 1
+-3 .&.   2 = 0
+-3 .&.   3 = 1
+-2 .&.   -3 = -4
+-2 .&.   -2 = -2
+-2 .&.   -1 = -2
+-2 .&.   0 = 0
+-2 .&.   1 = 0
+-2 .&.   2 = 2
+-2 .&.   3 = 2
+-1 .&.   -3 = -3
+-1 .&.   -2 = -2
+-1 .&.   -1 = -1
+-1 .&.   0 = 0
+-1 .&.   1 = 1
+-1 .&.   2 = 2
+-1 .&.   3 = 3
+0 .&.   -3 = 0
+0 .&.   -2 = 0
+0 .&.   -1 = 0
+0 .&.   0 = 0
+0 .&.   1 = 0
+0 .&.   2 = 0
+0 .&.   3 = 0
+1 .&.   -3 = 1
+1 .&.   -2 = 0
+1 .&.   -1 = 1
+1 .&.   0 = 0
+1 .&.   1 = 1
+1 .&.   2 = 0
+1 .&.   3 = 1
+2 .&.   -3 = 0
+2 .&.   -2 = 2
+2 .&.   -1 = 2
+2 .&.   0 = 0
+2 .&.   1 = 0
+2 .&.   2 = 2
+2 .&.   3 = 2
+3 .&.   -3 = 1
+3 .&.   -2 = 2
+3 .&.   -1 = 3
+3 .&.   0 = 0
+3 .&.   1 = 1
+3 .&.   2 = 2
+3 .&.   3 = 3
+#
+-3 .|.   -3 = -3
+-3 .|.   -2 = -1
+-3 .|.   -1 = -1
+-3 .|.   0 = -3
+-3 .|.   1 = -3
+-3 .|.   2 = -1
+-3 .|.   3 = -1
+-2 .|.   -3 = -1
+-2 .|.   -2 = -2
+-2 .|.   -1 = -1
+-2 .|.   0 = -2
+-2 .|.   1 = -1
+-2 .|.   2 = -2
+-2 .|.   3 = -1
+-1 .|.   -3 = -1
+-1 .|.   -2 = -1
+-1 .|.   -1 = -1
+-1 .|.   0 = -1
+-1 .|.   1 = -1
+-1 .|.   2 = -1
+-1 .|.   3 = -1
+0 .|.   -3 = -3
+0 .|.   -2 = -2
+0 .|.   -1 = -1
+0 .|.   0 = 0
+0 .|.   1 = 1
+0 .|.   2 = 2
+0 .|.   3 = 3
+1 .|.   -3 = -3
+1 .|.   -2 = -1
+1 .|.   -1 = -1
+1 .|.   0 = 1
+1 .|.   1 = 1
+1 .|.   2 = 3
+1 .|.   3 = 3
+2 .|.   -3 = -1
+2 .|.   -2 = -2
+2 .|.   -1 = -1
+2 .|.   0 = 2
+2 .|.   1 = 3
+2 .|.   2 = 2
+2 .|.   3 = 3
+3 .|.   -3 = -1
+3 .|.   -2 = -1
+3 .|.   -1 = -1
+3 .|.   0 = 3
+3 .|.   1 = 3
+3 .|.   2 = 3
+3 .|.   3 = 3
+#
+-3 `xor` -3 = 0
+-3 `xor` -2 = 3
+-3 `xor` -1 = 2
+-3 `xor` 0 = -3
+-3 `xor` 1 = -4
+-3 `xor` 2 = -1
+-3 `xor` 3 = -2
+-2 `xor` -3 = 3
+-2 `xor` -2 = 0
+-2 `xor` -1 = 1
+-2 `xor` 0 = -2
+-2 `xor` 1 = -1
+-2 `xor` 2 = -4
+-2 `xor` 3 = -3
+-1 `xor` -3 = 2
+-1 `xor` -2 = 1
+-1 `xor` -1 = 0
+-1 `xor` 0 = -1
+-1 `xor` 1 = -2
+-1 `xor` 2 = -3
+-1 `xor` 3 = -4
+0 `xor` -3 = -3
+0 `xor` -2 = -2
+0 `xor` -1 = -1
+0 `xor` 0 = 0
+0 `xor` 1 = 1
+0 `xor` 2 = 2
+0 `xor` 3 = 3
+1 `xor` -3 = -4
+1 `xor` -2 = -1
+1 `xor` -1 = -2
+1 `xor` 0 = 1
+1 `xor` 1 = 0
+1 `xor` 2 = 3
+1 `xor` 3 = 2
+2 `xor` -3 = -1
+2 `xor` -2 = -4
+2 `xor` -1 = -3
+2 `xor` 0 = 2
+2 `xor` 1 = 3
+2 `xor` 2 = 0
+2 `xor` 3 = 1
+3 `xor` -3 = -2
+3 `xor` -2 = -3
+3 `xor` -1 = -4
+3 `xor` 0 = 3
+3 `xor` 1 = 2
+3 `xor` 2 = 1
+3 `xor` 3 = 0
+#
+complement -3 = 2
+complement -2 = 1
+complement -1 = 0
+complement 0 = -1
+complement 1 = -2
+complement 2 = -3
+complement 3 = -4
+#
+-3 `shiftL` 0 = -3
+-3 `shiftL` 1 = -6
+-3 `shiftL` 2 = -12
+-3 `shiftL` 3 = -24
+-3 `shiftL` 32 = -12884901888
+-3 `shiftL` 64 = 0
+-2 `shiftL` 0 = -2
+-2 `shiftL` 1 = -4
+-2 `shiftL` 2 = -8
+-2 `shiftL` 3 = -16
+-2 `shiftL` 32 = -8589934592
+-2 `shiftL` 64 = 0
+-1 `shiftL` 0 = -1
+-1 `shiftL` 1 = -2
+-1 `shiftL` 2 = -4
+-1 `shiftL` 3 = -8
+-1 `shiftL` 32 = -4294967296
+-1 `shiftL` 64 = 0
+0 `shiftL` 0 = 0
+0 `shiftL` 1 = 0
+0 `shiftL` 2 = 0
+0 `shiftL` 3 = 0
+0 `shiftL` 32 = 0
+0 `shiftL` 64 = 0
+1 `shiftL` 0 = 1
+1 `shiftL` 1 = 2
+1 `shiftL` 2 = 4
+1 `shiftL` 3 = 8
+1 `shiftL` 32 = 4294967296
+1 `shiftL` 64 = 0
+2 `shiftL` 0 = 2
+2 `shiftL` 1 = 4
+2 `shiftL` 2 = 8
+2 `shiftL` 3 = 16
+2 `shiftL` 32 = 8589934592
+2 `shiftL` 64 = 0
+3 `shiftL` 0 = 3
+3 `shiftL` 1 = 6
+3 `shiftL` 2 = 12
+3 `shiftL` 3 = 24
+3 `shiftL` 32 = 12884901888
+3 `shiftL` 64 = 0
+#
+-3 `shiftR` 0 = -3
+-3 `shiftR` 1 = -2
+-3 `shiftR` 2 = -1
+-3 `shiftR` 3 = -1
+-3 `shiftR` 32 = -1
+-3 `shiftR` 64 = -1
+-2 `shiftR` 0 = -2
+-2 `shiftR` 1 = -1
+-2 `shiftR` 2 = -1
+-2 `shiftR` 3 = -1
+-2 `shiftR` 32 = -1
+-2 `shiftR` 64 = -1
+-1 `shiftR` 0 = -1
+-1 `shiftR` 1 = -1
+-1 `shiftR` 2 = -1
+-1 `shiftR` 3 = -1
+-1 `shiftR` 32 = -1
+-1 `shiftR` 64 = -1
+0 `shiftR` 0 = 0
+0 `shiftR` 1 = 0
+0 `shiftR` 2 = 0
+0 `shiftR` 3 = 0
+0 `shiftR` 32 = 0
+0 `shiftR` 64 = 0
+1 `shiftR` 0 = 1
+1 `shiftR` 1 = 0
+1 `shiftR` 2 = 0
+1 `shiftR` 3 = 0
+1 `shiftR` 32 = 0
+1 `shiftR` 64 = 0
+2 `shiftR` 0 = 2
+2 `shiftR` 1 = 1
+2 `shiftR` 2 = 0
+2 `shiftR` 3 = 0
+2 `shiftR` 32 = 0
+2 `shiftR` 64 = 0
+3 `shiftR` 0 = 3
+3 `shiftR` 1 = 1
+3 `shiftR` 2 = 0
+3 `shiftR` 3 = 0
+3 `shiftR` 32 = 0
+3 `shiftR` 64 = 0
+#
+-3 `rotate` -3 = -4611686018427387905
+-3 `rotate` -2 = 9223372036854775807
+-3 `rotate` -1 = -2
+-3 `rotate` 0 = -3
+-3 `rotate` 1 = -5
+-3 `rotate` 2 = -9
+-3 `rotate` 3 = -17
+-2 `rotate` -3 = -2305843009213693953
+-2 `rotate` -2 = -4611686018427387905
+-2 `rotate` -1 = 9223372036854775807
+-2 `rotate` 0 = -2
+-2 `rotate` 1 = -3
+-2 `rotate` 2 = -5
+-2 `rotate` 3 = -9
+-1 `rotate` -3 = -1
+-1 `rotate` -2 = -1
+-1 `rotate` -1 = -1
+-1 `rotate` 0 = -1
+-1 `rotate` 1 = -1
+-1 `rotate` 2 = -1
+-1 `rotate` 3 = -1
+0 `rotate` -3 = 0
+0 `rotate` -2 = 0
+0 `rotate` -1 = 0
+0 `rotate` 0 = 0
+0 `rotate` 1 = 0
+0 `rotate` 2 = 0
+0 `rotate` 3 = 0
+1 `rotate` -3 = 2305843009213693952
+1 `rotate` -2 = 4611686018427387904
+1 `rotate` -1 = -9223372036854775808
+1 `rotate` 0 = 1
+1 `rotate` 1 = 2
+1 `rotate` 2 = 4
+1 `rotate` 3 = 8
+2 `rotate` -3 = 4611686018427387904
+2 `rotate` -2 = -9223372036854775808
+2 `rotate` -1 = 1
+2 `rotate` 0 = 2
+2 `rotate` 1 = 4
+2 `rotate` 2 = 8
+2 `rotate` 3 = 16
+3 `rotate` -3 = 6917529027641081856
+3 `rotate` -2 = -4611686018427387904
+3 `rotate` -1 = -9223372036854775807
+3 `rotate` 0 = 3
+3 `rotate` 1 = 6
+3 `rotate` 2 = 12
+3 `rotate` 3 = 24
+#
+bit 0 = 1
+bit 1 = 2
+bit 2 = 4
+bit 3 = 8
+#
+-3 `setBit` 0 = -3
+-3 `setBit` 1 = -1
+-3 `setBit` 2 = -3
+-3 `setBit` 3 = -3
+-3 `setBit` 32 = -3
+-3 `setBit` 64 = -3
+-2 `setBit` 0 = -1
+-2 `setBit` 1 = -2
+-2 `setBit` 2 = -2
+-2 `setBit` 3 = -2
+-2 `setBit` 32 = -2
+-2 `setBit` 64 = -2
+-1 `setBit` 0 = -1
+-1 `setBit` 1 = -1
+-1 `setBit` 2 = -1
+-1 `setBit` 3 = -1
+-1 `setBit` 32 = -1
+-1 `setBit` 64 = -1
+0 `setBit` 0 = 1
+0 `setBit` 1 = 2
+0 `setBit` 2 = 4
+0 `setBit` 3 = 8
+0 `setBit` 32 = 4294967296
+0 `setBit` 64 = 0
+1 `setBit` 0 = 1
+1 `setBit` 1 = 3
+1 `setBit` 2 = 5
+1 `setBit` 3 = 9
+1 `setBit` 32 = 4294967297
+1 `setBit` 64 = 1
+2 `setBit` 0 = 3
+2 `setBit` 1 = 2
+2 `setBit` 2 = 6
+2 `setBit` 3 = 10
+2 `setBit` 32 = 4294967298
+2 `setBit` 64 = 2
+3 `setBit` 0 = 3
+3 `setBit` 1 = 3
+3 `setBit` 2 = 7
+3 `setBit` 3 = 11
+3 `setBit` 32 = 4294967299
+3 `setBit` 64 = 3
+#
+-3 `clearBit` 0 = -4
+-3 `clearBit` 1 = -3
+-3 `clearBit` 2 = -7
+-3 `clearBit` 3 = -11
+-3 `clearBit` 32 = -4294967299
+-3 `clearBit` 64 = -3
+-2 `clearBit` 0 = -2
+-2 `clearBit` 1 = -4
+-2 `clearBit` 2 = -6
+-2 `clearBit` 3 = -10
+-2 `clearBit` 32 = -4294967298
+-2 `clearBit` 64 = -2
+-1 `clearBit` 0 = -2
+-1 `clearBit` 1 = -3
+-1 `clearBit` 2 = -5
+-1 `clearBit` 3 = -9
+-1 `clearBit` 32 = -4294967297
+-1 `clearBit` 64 = -1
+0 `clearBit` 0 = 0
+0 `clearBit` 1 = 0
+0 `clearBit` 2 = 0
+0 `clearBit` 3 = 0
+0 `clearBit` 32 = 0
+0 `clearBit` 64 = 0
+1 `clearBit` 0 = 0
+1 `clearBit` 1 = 1
+1 `clearBit` 2 = 1
+1 `clearBit` 3 = 1
+1 `clearBit` 32 = 1
+1 `clearBit` 64 = 1
+2 `clearBit` 0 = 2
+2 `clearBit` 1 = 0
+2 `clearBit` 2 = 2
+2 `clearBit` 3 = 2
+2 `clearBit` 32 = 2
+2 `clearBit` 64 = 2
+3 `clearBit` 0 = 2
+3 `clearBit` 1 = 1
+3 `clearBit` 2 = 3
+3 `clearBit` 3 = 3
+3 `clearBit` 32 = 3
+3 `clearBit` 64 = 3
+#
+-3 `complementBit` 0 = -4
+-3 `complementBit` 1 = -1
+-3 `complementBit` 2 = -7
+-3 `complementBit` 3 = -11
+-3 `complementBit` 32 = -4294967299
+-3 `complementBit` 64 = -3
+-2 `complementBit` 0 = -1
+-2 `complementBit` 1 = -4
+-2 `complementBit` 2 = -6
+-2 `complementBit` 3 = -10
+-2 `complementBit` 32 = -4294967298
+-2 `complementBit` 64 = -2
+-1 `complementBit` 0 = -2
+-1 `complementBit` 1 = -3
+-1 `complementBit` 2 = -5
+-1 `complementBit` 3 = -9
+-1 `complementBit` 32 = -4294967297
+-1 `complementBit` 64 = -1
+0 `complementBit` 0 = 1
+0 `complementBit` 1 = 2
+0 `complementBit` 2 = 4
+0 `complementBit` 3 = 8
+0 `complementBit` 32 = 4294967296
+0 `complementBit` 64 = 0
+1 `complementBit` 0 = 0
+1 `complementBit` 1 = 3
+1 `complementBit` 2 = 5
+1 `complementBit` 3 = 9
+1 `complementBit` 32 = 4294967297
+1 `complementBit` 64 = 1
+2 `complementBit` 0 = 3
+2 `complementBit` 1 = 0
+2 `complementBit` 2 = 6
+2 `complementBit` 3 = 10
+2 `complementBit` 32 = 4294967298
+2 `complementBit` 64 = 2
+3 `complementBit` 0 = 2
+3 `complementBit` 1 = 1
+3 `complementBit` 2 = 7
+3 `complementBit` 3 = 11
+3 `complementBit` 32 = 4294967299
+3 `complementBit` 64 = 3
+#
+-3 `testBit` 0 = True
+-3 `testBit` 1 = False
+-3 `testBit` 2 = True
+-3 `testBit` 3 = True
+-3 `testBit` 32 = True
+-3 `testBit` 64 = False
+-2 `testBit` 0 = False
+-2 `testBit` 1 = True
+-2 `testBit` 2 = True
+-2 `testBit` 3 = True
+-2 `testBit` 32 = True
+-2 `testBit` 64 = False
+-1 `testBit` 0 = True
+-1 `testBit` 1 = True
+-1 `testBit` 2 = True
+-1 `testBit` 3 = True
+-1 `testBit` 32 = True
+-1 `testBit` 64 = False
+0 `testBit` 0 = False
+0 `testBit` 1 = False
+0 `testBit` 2 = False
+0 `testBit` 3 = False
+0 `testBit` 32 = False
+0 `testBit` 64 = False
+1 `testBit` 0 = True
+1 `testBit` 1 = False
+1 `testBit` 2 = False
+1 `testBit` 3 = False
+1 `testBit` 32 = False
+1 `testBit` 64 = False
+2 `testBit` 0 = False
+2 `testBit` 1 = True
+2 `testBit` 2 = False
+2 `testBit` 3 = False
+2 `testBit` 32 = False
+2 `testBit` 64 = False
+3 `testBit` 0 = True
+3 `testBit` 1 = True
+3 `testBit` 2 = False
+3 `testBit` 3 = False
+3 `testBit` 32 = False
+3 `testBit` 64 = False
+#
+bitSize -3 = 64
+bitSize -2 = 64
+bitSize -1 = 64
+bitSize 0 = 64
+bitSize 1 = 64
+bitSize 2 = 64
+bitSize 3 = 64
+#
+isSigned -3 = True
+isSigned -2 = True
+isSigned -1 = True
+isSigned 0 = True
+isSigned 1 = True
+isSigned 2 = True
+isSigned 3 = True
+#
+--------------------------------
+--Testing Word8
+--------------------------------
+testBounded
+(255,0,1)
+(254,255,0)
+testEnum
+[0,1,2,3,4,5,6,7,8,9]
+[0,2,4,6,8,10,12,14,16,18]
+[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
+[0,2,4,6,8,10,12,14,16,18,20]
+testReadShow
+[253,254,255,0,1,2,3]
+[253,254,255,0,1,2,3]
+testEq
+253 == 253 = True
+253 == 254 = False
+253 == 255 = False
+253 == 0 = False
+253 == 1 = False
+253 == 2 = False
+253 == 3 = False
+254 == 253 = False
+254 == 254 = True
+254 == 255 = False
+254 == 0 = False
+254 == 1 = False
+254 == 2 = False
+254 == 3 = False
+255 == 253 = False
+255 == 254 = False
+255 == 255 = True
+255 == 0 = False
+255 == 1 = False
+255 == 2 = False
+255 == 3 = False
+0 == 253 = False
+0 == 254 = False
+0 == 255 = False
+0 == 0 = True
+0 == 1 = False
+0 == 2 = False
+0 == 3 = False
+1 == 253 = False
+1 == 254 = False
+1 == 255 = False
+1 == 0 = False
+1 == 1 = True
+1 == 2 = False
+1 == 3 = False
+2 == 253 = False
+2 == 254 = False
+2 == 255 = False
+2 == 0 = False
+2 == 1 = False
+2 == 2 = True
+2 == 3 = False
+3 == 253 = False
+3 == 254 = False
+3 == 255 = False
+3 == 0 = False
+3 == 1 = False
+3 == 2 = False
+3 == 3 = True
+#
+253 /= 253 = False
+253 /= 254 = True
+253 /= 255 = True
+253 /= 0 = True
+253 /= 1 = True
+253 /= 2 = True
+253 /= 3 = True
+254 /= 253 = True
+254 /= 254 = False
+254 /= 255 = True
+254 /= 0 = True
+254 /= 1 = True
+254 /= 2 = True
+254 /= 3 = True
+255 /= 253 = True
+255 /= 254 = True
+255 /= 255 = False
+255 /= 0 = True
+255 /= 1 = True
+255 /= 2 = True
+255 /= 3 = True
+0 /= 253 = True
+0 /= 254 = True
+0 /= 255 = True
+0 /= 0 = False
+0 /= 1 = True
+0 /= 2 = True
+0 /= 3 = True
+1 /= 253 = True
+1 /= 254 = True
+1 /= 255 = True
+1 /= 0 = True
+1 /= 1 = False
+1 /= 2 = True
+1 /= 3 = True
+2 /= 253 = True
+2 /= 254 = True
+2 /= 255 = True
+2 /= 0 = True
+2 /= 1 = True
+2 /= 2 = False
+2 /= 3 = True
+3 /= 253 = True
+3 /= 254 = True
+3 /= 255 = True
+3 /= 0 = True
+3 /= 1 = True
+3 /= 2 = True
+3 /= 3 = False
+#
+testOrd
+253 <= 253 = True
+253 <= 254 = True
+253 <= 255 = True
+253 <= 0 = False
+253 <= 1 = False
+253 <= 2 = False
+253 <= 3 = False
+254 <= 253 = False
+254 <= 254 = True
+254 <= 255 = True
+254 <= 0 = False
+254 <= 1 = False
+254 <= 2 = False
+254 <= 3 = False
+255 <= 253 = False
+255 <= 254 = False
+255 <= 255 = True
+255 <= 0 = False
+255 <= 1 = False
+255 <= 2 = False
+255 <= 3 = False
+0 <= 253 = True
+0 <= 254 = True
+0 <= 255 = True
+0 <= 0 = True
+0 <= 1 = True
+0 <= 2 = True
+0 <= 3 = True
+1 <= 253 = True
+1 <= 254 = True
+1 <= 255 = True
+1 <= 0 = False
+1 <= 1 = True
+1 <= 2 = True
+1 <= 3 = True
+2 <= 253 = True
+2 <= 254 = True
+2 <= 255 = True
+2 <= 0 = False
+2 <= 1 = False
+2 <= 2 = True
+2 <= 3 = True
+3 <= 253 = True
+3 <= 254 = True
+3 <= 255 = True
+3 <= 0 = False
+3 <= 1 = False
+3 <= 2 = False
+3 <= 3 = True
+#
+253 <  253 = False
+253 <  254 = True
+253 <  255 = True
+253 <  0 = False
+253 <  1 = False
+253 <  2 = False
+253 <  3 = False
+254 <  253 = False
+254 <  254 = False
+254 <  255 = True
+254 <  0 = False
+254 <  1 = False
+254 <  2 = False
+254 <  3 = False
+255 <  253 = False
+255 <  254 = False
+255 <  255 = False
+255 <  0 = False
+255 <  1 = False
+255 <  2 = False
+255 <  3 = False
+0 <  253 = True
+0 <  254 = True
+0 <  255 = True
+0 <  0 = False
+0 <  1 = True
+0 <  2 = True
+0 <  3 = True
+1 <  253 = True
+1 <  254 = True
+1 <  255 = True
+1 <  0 = False
+1 <  1 = False
+1 <  2 = True
+1 <  3 = True
+2 <  253 = True
+2 <  254 = True
+2 <  255 = True
+2 <  0 = False
+2 <  1 = False
+2 <  2 = False
+2 <  3 = True
+3 <  253 = True
+3 <  254 = True
+3 <  255 = True
+3 <  0 = False
+3 <  1 = False
+3 <  2 = False
+3 <  3 = False
+#
+253 >  253 = False
+253 >  254 = False
+253 >  255 = False
+253 >  0 = True
+253 >  1 = True
+253 >  2 = True
+253 >  3 = True
+254 >  253 = True
+254 >  254 = False
+254 >  255 = False
+254 >  0 = True
+254 >  1 = True
+254 >  2 = True
+254 >  3 = True
+255 >  253 = True
+255 >  254 = True
+255 >  255 = False
+255 >  0 = True
+255 >  1 = True
+255 >  2 = True
+255 >  3 = True
+0 >  253 = False
+0 >  254 = False
+0 >  255 = False
+0 >  0 = False
+0 >  1 = False
+0 >  2 = False
+0 >  3 = False
+1 >  253 = False
+1 >  254 = False
+1 >  255 = False
+1 >  0 = True
+1 >  1 = False
+1 >  2 = False
+1 >  3 = False
+2 >  253 = False
+2 >  254 = False
+2 >  255 = False
+2 >  0 = True
+2 >  1 = True
+2 >  2 = False
+2 >  3 = False
+3 >  253 = False
+3 >  254 = False
+3 >  255 = False
+3 >  0 = True
+3 >  1 = True
+3 >  2 = True
+3 >  3 = False
+#
+253 >= 253 = True
+253 >= 254 = False
+253 >= 255 = False
+253 >= 0 = True
+253 >= 1 = True
+253 >= 2 = True
+253 >= 3 = True
+254 >= 253 = True
+254 >= 254 = True
+254 >= 255 = False
+254 >= 0 = True
+254 >= 1 = True
+254 >= 2 = True
+254 >= 3 = True
+255 >= 253 = True
+255 >= 254 = True
+255 >= 255 = True
+255 >= 0 = True
+255 >= 1 = True
+255 >= 2 = True
+255 >= 3 = True
+0 >= 253 = False
+0 >= 254 = False
+0 >= 255 = False
+0 >= 0 = True
+0 >= 1 = False
+0 >= 2 = False
+0 >= 3 = False
+1 >= 253 = False
+1 >= 254 = False
+1 >= 255 = False
+1 >= 0 = True
+1 >= 1 = True
+1 >= 2 = False
+1 >= 3 = False
+2 >= 253 = False
+2 >= 254 = False
+2 >= 255 = False
+2 >= 0 = True
+2 >= 1 = True
+2 >= 2 = True
+2 >= 3 = False
+3 >= 253 = False
+3 >= 254 = False
+3 >= 255 = False
+3 >= 0 = True
+3 >= 1 = True
+3 >= 2 = True
+3 >= 3 = True
+#
+253 `compare` 253 = EQ
+253 `compare` 254 = LT
+253 `compare` 255 = LT
+253 `compare` 0 = GT
+253 `compare` 1 = GT
+253 `compare` 2 = GT
+253 `compare` 3 = GT
+254 `compare` 253 = GT
+254 `compare` 254 = EQ
+254 `compare` 255 = LT
+254 `compare` 0 = GT
+254 `compare` 1 = GT
+254 `compare` 2 = GT
+254 `compare` 3 = GT
+255 `compare` 253 = GT
+255 `compare` 254 = GT
+255 `compare` 255 = EQ
+255 `compare` 0 = GT
+255 `compare` 1 = GT
+255 `compare` 2 = GT
+255 `compare` 3 = GT
+0 `compare` 253 = LT
+0 `compare` 254 = LT
+0 `compare` 255 = LT
+0 `compare` 0 = EQ
+0 `compare` 1 = LT
+0 `compare` 2 = LT
+0 `compare` 3 = LT
+1 `compare` 253 = LT
+1 `compare` 254 = LT
+1 `compare` 255 = LT
+1 `compare` 0 = GT
+1 `compare` 1 = EQ
+1 `compare` 2 = LT
+1 `compare` 3 = LT
+2 `compare` 253 = LT
+2 `compare` 254 = LT
+2 `compare` 255 = LT
+2 `compare` 0 = GT
+2 `compare` 1 = GT
+2 `compare` 2 = EQ
+2 `compare` 3 = LT
+3 `compare` 253 = LT
+3 `compare` 254 = LT
+3 `compare` 255 = LT
+3 `compare` 0 = GT
+3 `compare` 1 = GT
+3 `compare` 2 = GT
+3 `compare` 3 = EQ
+#
+testNum
+253 + 253 = 250
+253 + 254 = 251
+253 + 255 = 252
+253 + 0 = 253
+253 + 1 = 254
+253 + 2 = 255
+253 + 3 = 0
+254 + 253 = 251
+254 + 254 = 252
+254 + 255 = 253
+254 + 0 = 254
+254 + 1 = 255
+254 + 2 = 0
+254 + 3 = 1
+255 + 253 = 252
+255 + 254 = 253
+255 + 255 = 254
+255 + 0 = 255
+255 + 1 = 0
+255 + 2 = 1
+255 + 3 = 2
+0 + 253 = 253
+0 + 254 = 254
+0 + 255 = 255
+0 + 0 = 0
+0 + 1 = 1
+0 + 2 = 2
+0 + 3 = 3
+1 + 253 = 254
+1 + 254 = 255
+1 + 255 = 0
+1 + 0 = 1
+1 + 1 = 2
+1 + 2 = 3
+1 + 3 = 4
+2 + 253 = 255
+2 + 254 = 0
+2 + 255 = 1
+2 + 0 = 2
+2 + 1 = 3
+2 + 2 = 4
+2 + 3 = 5
+3 + 253 = 0
+3 + 254 = 1
+3 + 255 = 2
+3 + 0 = 3
+3 + 1 = 4
+3 + 2 = 5
+3 + 3 = 6
+#
+253 - 253 = 0
+253 - 254 = 255
+253 - 255 = 254
+253 - 0 = 253
+253 - 1 = 252
+253 - 2 = 251
+253 - 3 = 250
+254 - 253 = 1
+254 - 254 = 0
+254 - 255 = 255
+254 - 0 = 254
+254 - 1 = 253
+254 - 2 = 252
+254 - 3 = 251
+255 - 253 = 2
+255 - 254 = 1
+255 - 255 = 0
+255 - 0 = 255
+255 - 1 = 254
+255 - 2 = 253
+255 - 3 = 252
+0 - 253 = 3
+0 - 254 = 2
+0 - 255 = 1
+0 - 0 = 0
+0 - 1 = 255
+0 - 2 = 254
+0 - 3 = 253
+1 - 253 = 4
+1 - 254 = 3
+1 - 255 = 2
+1 - 0 = 1
+1 - 1 = 0
+1 - 2 = 255
+1 - 3 = 254
+2 - 253 = 5
+2 - 254 = 4
+2 - 255 = 3
+2 - 0 = 2
+2 - 1 = 1
+2 - 2 = 0
+2 - 3 = 255
+3 - 253 = 6
+3 - 254 = 5
+3 - 255 = 4
+3 - 0 = 3
+3 - 1 = 2
+3 - 2 = 1
+3 - 3 = 0
+#
+253 * 253 = 9
+253 * 254 = 6
+253 * 255 = 3
+253 * 0 = 0
+253 * 1 = 253
+253 * 2 = 250
+253 * 3 = 247
+254 * 253 = 6
+254 * 254 = 4
+254 * 255 = 2
+254 * 0 = 0
+254 * 1 = 254
+254 * 2 = 252
+254 * 3 = 250
+255 * 253 = 3
+255 * 254 = 2
+255 * 255 = 1
+255 * 0 = 0
+255 * 1 = 255
+255 * 2 = 254
+255 * 3 = 253
+0 * 253 = 0
+0 * 254 = 0
+0 * 255 = 0
+0 * 0 = 0
+0 * 1 = 0
+0 * 2 = 0
+0 * 3 = 0
+1 * 253 = 253
+1 * 254 = 254
+1 * 255 = 255
+1 * 0 = 0
+1 * 1 = 1
+1 * 2 = 2
+1 * 3 = 3
+2 * 253 = 250
+2 * 254 = 252
+2 * 255 = 254
+2 * 0 = 0
+2 * 1 = 2
+2 * 2 = 4
+2 * 3 = 6
+3 * 253 = 247
+3 * 254 = 250
+3 * 255 = 253
+3 * 0 = 0
+3 * 1 = 3
+3 * 2 = 6
+3 * 3 = 9
+#
+negate 253 = 3
+negate 254 = 2
+negate 255 = 1
+negate 0 = 0
+negate 1 = 255
+negate 2 = 254
+negate 3 = 253
+#
+testReal
+toRational 253 = 253%1
+toRational 254 = 254%1
+toRational 255 = 255%1
+toRational 0 = 0%1
+toRational 1 = 1%1
+toRational 2 = 2%1
+toRational 3 = 3%1
+#
+testIntegral
+253 `divMod`  253 = (1,0)
+253 `divMod`  254 = (0,253)
+253 `divMod`  255 = (0,253)
+253 `divMod`  0 = divide by zero
+253 `divMod`  1 = (253,0)
+253 `divMod`  2 = (126,1)
+253 `divMod`  3 = (84,1)
+254 `divMod`  253 = (1,1)
+254 `divMod`  254 = (1,0)
+254 `divMod`  255 = (0,254)
+254 `divMod`  0 = divide by zero
+254 `divMod`  1 = (254,0)
+254 `divMod`  2 = (127,0)
+254 `divMod`  3 = (84,2)
+255 `divMod`  253 = (1,2)
+255 `divMod`  254 = (1,1)
+255 `divMod`  255 = (1,0)
+255 `divMod`  0 = divide by zero
+255 `divMod`  1 = (255,0)
+255 `divMod`  2 = (127,1)
+255 `divMod`  3 = (85,0)
+0 `divMod`  253 = (0,0)
+0 `divMod`  254 = (0,0)
+0 `divMod`  255 = (0,0)
+0 `divMod`  0 = divide by zero
+0 `divMod`  1 = (0,0)
+0 `divMod`  2 = (0,0)
+0 `divMod`  3 = (0,0)
+1 `divMod`  253 = (0,1)
+1 `divMod`  254 = (0,1)
+1 `divMod`  255 = (0,1)
+1 `divMod`  0 = divide by zero
+1 `divMod`  1 = (1,0)
+1 `divMod`  2 = (0,1)
+1 `divMod`  3 = (0,1)
+2 `divMod`  253 = (0,2)
+2 `divMod`  254 = (0,2)
+2 `divMod`  255 = (0,2)
+2 `divMod`  0 = divide by zero
+2 `divMod`  1 = (2,0)
+2 `divMod`  2 = (1,0)
+2 `divMod`  3 = (0,2)
+3 `divMod`  253 = (0,3)
+3 `divMod`  254 = (0,3)
+3 `divMod`  255 = (0,3)
+3 `divMod`  0 = divide by zero
+3 `divMod`  1 = (3,0)
+3 `divMod`  2 = (1,1)
+3 `divMod`  3 = (1,0)
+#
+253 `div`     253 = 1
+253 `div`     254 = 0
+253 `div`     255 = 0
+253 `div`     0 = divide by zero
+253 `div`     1 = 253
+253 `div`     2 = 126
+253 `div`     3 = 84
+254 `div`     253 = 1
+254 `div`     254 = 1
+254 `div`     255 = 0
+254 `div`     0 = divide by zero
+254 `div`     1 = 254
+254 `div`     2 = 127
+254 `div`     3 = 84
+255 `div`     253 = 1
+255 `div`     254 = 1
+255 `div`     255 = 1
+255 `div`     0 = divide by zero
+255 `div`     1 = 255
+255 `div`     2 = 127
+255 `div`     3 = 85
+0 `div`     253 = 0
+0 `div`     254 = 0
+0 `div`     255 = 0
+0 `div`     0 = divide by zero
+0 `div`     1 = 0
+0 `div`     2 = 0
+0 `div`     3 = 0
+1 `div`     253 = 0
+1 `div`     254 = 0
+1 `div`     255 = 0
+1 `div`     0 = divide by zero
+1 `div`     1 = 1
+1 `div`     2 = 0
+1 `div`     3 = 0
+2 `div`     253 = 0
+2 `div`     254 = 0
+2 `div`     255 = 0
+2 `div`     0 = divide by zero
+2 `div`     1 = 2
+2 `div`     2 = 1
+2 `div`     3 = 0
+3 `div`     253 = 0
+3 `div`     254 = 0
+3 `div`     255 = 0
+3 `div`     0 = divide by zero
+3 `div`     1 = 3
+3 `div`     2 = 1
+3 `div`     3 = 1
+#
+253 `mod`     253 = 0
+253 `mod`     254 = 253
+253 `mod`     255 = 253
+253 `mod`     0 = divide by zero
+253 `mod`     1 = 0
+253 `mod`     2 = 1
+253 `mod`     3 = 1
+254 `mod`     253 = 1
+254 `mod`     254 = 0
+254 `mod`     255 = 254
+254 `mod`     0 = divide by zero
+254 `mod`     1 = 0
+254 `mod`     2 = 0
+254 `mod`     3 = 2
+255 `mod`     253 = 2
+255 `mod`     254 = 1
+255 `mod`     255 = 0
+255 `mod`     0 = divide by zero
+255 `mod`     1 = 0
+255 `mod`     2 = 1
+255 `mod`     3 = 0
+0 `mod`     253 = 0
+0 `mod`     254 = 0
+0 `mod`     255 = 0
+0 `mod`     0 = divide by zero
+0 `mod`     1 = 0
+0 `mod`     2 = 0
+0 `mod`     3 = 0
+1 `mod`     253 = 1
+1 `mod`     254 = 1
+1 `mod`     255 = 1
+1 `mod`     0 = divide by zero
+1 `mod`     1 = 0
+1 `mod`     2 = 1
+1 `mod`     3 = 1
+2 `mod`     253 = 2
+2 `mod`     254 = 2
+2 `mod`     255 = 2
+2 `mod`     0 = divide by zero
+2 `mod`     1 = 0
+2 `mod`     2 = 0
+2 `mod`     3 = 2
+3 `mod`     253 = 3
+3 `mod`     254 = 3
+3 `mod`     255 = 3
+3 `mod`     0 = divide by zero
+3 `mod`     1 = 0
+3 `mod`     2 = 1
+3 `mod`     3 = 0
+#
+253 `quotRem` 253 = (1,0)
+253 `quotRem` 254 = (0,253)
+253 `quotRem` 255 = (0,253)
+253 `quotRem` 0 = divide by zero
+253 `quotRem` 1 = (253,0)
+253 `quotRem` 2 = (126,1)
+253 `quotRem` 3 = (84,1)
+254 `quotRem` 253 = (1,1)
+254 `quotRem` 254 = (1,0)
+254 `quotRem` 255 = (0,254)
+254 `quotRem` 0 = divide by zero
+254 `quotRem` 1 = (254,0)
+254 `quotRem` 2 = (127,0)
+254 `quotRem` 3 = (84,2)
+255 `quotRem` 253 = (1,2)
+255 `quotRem` 254 = (1,1)
+255 `quotRem` 255 = (1,0)
+255 `quotRem` 0 = divide by zero
+255 `quotRem` 1 = (255,0)
+255 `quotRem` 2 = (127,1)
+255 `quotRem` 3 = (85,0)
+0 `quotRem` 253 = (0,0)
+0 `quotRem` 254 = (0,0)
+0 `quotRem` 255 = (0,0)
+0 `quotRem` 0 = divide by zero
+0 `quotRem` 1 = (0,0)
+0 `quotRem` 2 = (0,0)
+0 `quotRem` 3 = (0,0)
+1 `quotRem` 253 = (0,1)
+1 `quotRem` 254 = (0,1)
+1 `quotRem` 255 = (0,1)
+1 `quotRem` 0 = divide by zero
+1 `quotRem` 1 = (1,0)
+1 `quotRem` 2 = (0,1)
+1 `quotRem` 3 = (0,1)
+2 `quotRem` 253 = (0,2)
+2 `quotRem` 254 = (0,2)
+2 `quotRem` 255 = (0,2)
+2 `quotRem` 0 = divide by zero
+2 `quotRem` 1 = (2,0)
+2 `quotRem` 2 = (1,0)
+2 `quotRem` 3 = (0,2)
+3 `quotRem` 253 = (0,3)
+3 `quotRem` 254 = (0,3)
+3 `quotRem` 255 = (0,3)
+3 `quotRem` 0 = divide by zero
+3 `quotRem` 1 = (3,0)
+3 `quotRem` 2 = (1,1)
+3 `quotRem` 3 = (1,0)
+#
+253 `quot`    253 = 1
+253 `quot`    254 = 0
+253 `quot`    255 = 0
+253 `quot`    0 = divide by zero
+253 `quot`    1 = 253
+253 `quot`    2 = 126
+253 `quot`    3 = 84
+254 `quot`    253 = 1
+254 `quot`    254 = 1
+254 `quot`    255 = 0
+254 `quot`    0 = divide by zero
+254 `quot`    1 = 254
+254 `quot`    2 = 127
+254 `quot`    3 = 84
+255 `quot`    253 = 1
+255 `quot`    254 = 1
+255 `quot`    255 = 1
+255 `quot`    0 = divide by zero
+255 `quot`    1 = 255
+255 `quot`    2 = 127
+255 `quot`    3 = 85
+0 `quot`    253 = 0
+0 `quot`    254 = 0
+0 `quot`    255 = 0
+0 `quot`    0 = divide by zero
+0 `quot`    1 = 0
+0 `quot`    2 = 0
+0 `quot`    3 = 0
+1 `quot`    253 = 0
+1 `quot`    254 = 0
+1 `quot`    255 = 0
+1 `quot`    0 = divide by zero
+1 `quot`    1 = 1
+1 `quot`    2 = 0
+1 `quot`    3 = 0
+2 `quot`    253 = 0
+2 `quot`    254 = 0
+2 `quot`    255 = 0
+2 `quot`    0 = divide by zero
+2 `quot`    1 = 2
+2 `quot`    2 = 1
+2 `quot`    3 = 0
+3 `quot`    253 = 0
+3 `quot`    254 = 0
+3 `quot`    255 = 0
+3 `quot`    0 = divide by zero
+3 `quot`    1 = 3
+3 `quot`    2 = 1
+3 `quot`    3 = 1
+#
+253 `rem`     253 = 0
+253 `rem`     254 = 253
+253 `rem`     255 = 253
+253 `rem`     0 = divide by zero
+253 `rem`     1 = 0
+253 `rem`     2 = 1
+253 `rem`     3 = 1
+254 `rem`     253 = 1
+254 `rem`     254 = 0
+254 `rem`     255 = 254
+254 `rem`     0 = divide by zero
+254 `rem`     1 = 0
+254 `rem`     2 = 0
+254 `rem`     3 = 2
+255 `rem`     253 = 2
+255 `rem`     254 = 1
+255 `rem`     255 = 0
+255 `rem`     0 = divide by zero
+255 `rem`     1 = 0
+255 `rem`     2 = 1
+255 `rem`     3 = 0
+0 `rem`     253 = 0
+0 `rem`     254 = 0
+0 `rem`     255 = 0
+0 `rem`     0 = divide by zero
+0 `rem`     1 = 0
+0 `rem`     2 = 0
+0 `rem`     3 = 0
+1 `rem`     253 = 1
+1 `rem`     254 = 1
+1 `rem`     255 = 1
+1 `rem`     0 = divide by zero
+1 `rem`     1 = 0
+1 `rem`     2 = 1
+1 `rem`     3 = 1
+2 `rem`     253 = 2
+2 `rem`     254 = 2
+2 `rem`     255 = 2
+2 `rem`     0 = divide by zero
+2 `rem`     1 = 0
+2 `rem`     2 = 0
+2 `rem`     3 = 2
+3 `rem`     253 = 3
+3 `rem`     254 = 3
+3 `rem`     255 = 3
+3 `rem`     0 = divide by zero
+3 `rem`     1 = 0
+3 `rem`     2 = 1
+3 `rem`     3 = 0
+#
+testConversions
+Integer : [0,0,255]
+Int     : [0,0,255]
+Int8    : [0,0,-1]
+Int16   : [0,0,255]
+Int32   : [0,0,255]
+Int64   : [0,0,255]
+Word8   : [0,0,255]
+Word16  : [0,0,255]
+Word32  : [0,0,255]
+Word64  : [0,0,255]
+testBits
+253 .&.   253 = 253
+253 .&.   254 = 252
+253 .&.   255 = 253
+253 .&.   0 = 0
+253 .&.   1 = 1
+253 .&.   2 = 0
+253 .&.   3 = 1
+254 .&.   253 = 252
+254 .&.   254 = 254
+254 .&.   255 = 254
+254 .&.   0 = 0
+254 .&.   1 = 0
+254 .&.   2 = 2
+254 .&.   3 = 2
+255 .&.   253 = 253
+255 .&.   254 = 254
+255 .&.   255 = 255
+255 .&.   0 = 0
+255 .&.   1 = 1
+255 .&.   2 = 2
+255 .&.   3 = 3
+0 .&.   253 = 0
+0 .&.   254 = 0
+0 .&.   255 = 0
+0 .&.   0 = 0
+0 .&.   1 = 0
+0 .&.   2 = 0
+0 .&.   3 = 0
+1 .&.   253 = 1
+1 .&.   254 = 0
+1 .&.   255 = 1
+1 .&.   0 = 0
+1 .&.   1 = 1
+1 .&.   2 = 0
+1 .&.   3 = 1
+2 .&.   253 = 0
+2 .&.   254 = 2
+2 .&.   255 = 2
+2 .&.   0 = 0
+2 .&.   1 = 0
+2 .&.   2 = 2
+2 .&.   3 = 2
+3 .&.   253 = 1
+3 .&.   254 = 2
+3 .&.   255 = 3
+3 .&.   0 = 0
+3 .&.   1 = 1
+3 .&.   2 = 2
+3 .&.   3 = 3
+#
+253 .|.   253 = 253
+253 .|.   254 = 255
+253 .|.   255 = 255
+253 .|.   0 = 253
+253 .|.   1 = 253
+253 .|.   2 = 255
+253 .|.   3 = 255
+254 .|.   253 = 255
+254 .|.   254 = 254
+254 .|.   255 = 255
+254 .|.   0 = 254
+254 .|.   1 = 255
+254 .|.   2 = 254
+254 .|.   3 = 255
+255 .|.   253 = 255
+255 .|.   254 = 255
+255 .|.   255 = 255
+255 .|.   0 = 255
+255 .|.   1 = 255
+255 .|.   2 = 255
+255 .|.   3 = 255
+0 .|.   253 = 253
+0 .|.   254 = 254
+0 .|.   255 = 255
+0 .|.   0 = 0
+0 .|.   1 = 1
+0 .|.   2 = 2
+0 .|.   3 = 3
+1 .|.   253 = 253
+1 .|.   254 = 255
+1 .|.   255 = 255
+1 .|.   0 = 1
+1 .|.   1 = 1
+1 .|.   2 = 3
+1 .|.   3 = 3
+2 .|.   253 = 255
+2 .|.   254 = 254
+2 .|.   255 = 255
+2 .|.   0 = 2
+2 .|.   1 = 3
+2 .|.   2 = 2
+2 .|.   3 = 3
+3 .|.   253 = 255
+3 .|.   254 = 255
+3 .|.   255 = 255
+3 .|.   0 = 3
+3 .|.   1 = 3
+3 .|.   2 = 3
+3 .|.   3 = 3
+#
+253 `xor` 253 = 0
+253 `xor` 254 = 3
+253 `xor` 255 = 2
+253 `xor` 0 = 253
+253 `xor` 1 = 252
+253 `xor` 2 = 255
+253 `xor` 3 = 254
+254 `xor` 253 = 3
+254 `xor` 254 = 0
+254 `xor` 255 = 1
+254 `xor` 0 = 254
+254 `xor` 1 = 255
+254 `xor` 2 = 252
+254 `xor` 3 = 253
+255 `xor` 253 = 2
+255 `xor` 254 = 1
+255 `xor` 255 = 0
+255 `xor` 0 = 255
+255 `xor` 1 = 254
+255 `xor` 2 = 253
+255 `xor` 3 = 252
+0 `xor` 253 = 253
+0 `xor` 254 = 254
+0 `xor` 255 = 255
+0 `xor` 0 = 0
+0 `xor` 1 = 1
+0 `xor` 2 = 2
+0 `xor` 3 = 3
+1 `xor` 253 = 252
+1 `xor` 254 = 255
+1 `xor` 255 = 254
+1 `xor` 0 = 1
+1 `xor` 1 = 0
+1 `xor` 2 = 3
+1 `xor` 3 = 2
+2 `xor` 253 = 255
+2 `xor` 254 = 252
+2 `xor` 255 = 253
+2 `xor` 0 = 2
+2 `xor` 1 = 3
+2 `xor` 2 = 0
+2 `xor` 3 = 1
+3 `xor` 253 = 254
+3 `xor` 254 = 253
+3 `xor` 255 = 252
+3 `xor` 0 = 3
+3 `xor` 1 = 2
+3 `xor` 2 = 1
+3 `xor` 3 = 0
+#
+complement 253 = 2
+complement 254 = 1
+complement 255 = 0
+complement 0 = 255
+complement 1 = 254
+complement 2 = 253
+complement 3 = 252
+#
+253 `shiftL` 0 = 253
+253 `shiftL` 1 = 250
+253 `shiftL` 2 = 244
+253 `shiftL` 3 = 232
+253 `shiftL` 32 = 0
+253 `shiftL` 64 = 0
+254 `shiftL` 0 = 254
+254 `shiftL` 1 = 252
+254 `shiftL` 2 = 248
+254 `shiftL` 3 = 240
+254 `shiftL` 32 = 0
+254 `shiftL` 64 = 0
+255 `shiftL` 0 = 255
+255 `shiftL` 1 = 254
+255 `shiftL` 2 = 252
+255 `shiftL` 3 = 248
+255 `shiftL` 32 = 0
+255 `shiftL` 64 = 0
+0 `shiftL` 0 = 0
+0 `shiftL` 1 = 0
+0 `shiftL` 2 = 0
+0 `shiftL` 3 = 0
+0 `shiftL` 32 = 0
+0 `shiftL` 64 = 0
+1 `shiftL` 0 = 1
+1 `shiftL` 1 = 2
+1 `shiftL` 2 = 4
+1 `shiftL` 3 = 8
+1 `shiftL` 32 = 0
+1 `shiftL` 64 = 0
+2 `shiftL` 0 = 2
+2 `shiftL` 1 = 4
+2 `shiftL` 2 = 8
+2 `shiftL` 3 = 16
+2 `shiftL` 32 = 0
+2 `shiftL` 64 = 0
+3 `shiftL` 0 = 3
+3 `shiftL` 1 = 6
+3 `shiftL` 2 = 12
+3 `shiftL` 3 = 24
+3 `shiftL` 32 = 0
+3 `shiftL` 64 = 0
+#
+253 `shiftR` 0 = 253
+253 `shiftR` 1 = 126
+253 `shiftR` 2 = 63
+253 `shiftR` 3 = 31
+253 `shiftR` 32 = 0
+253 `shiftR` 64 = 0
+254 `shiftR` 0 = 254
+254 `shiftR` 1 = 127
+254 `shiftR` 2 = 63
+254 `shiftR` 3 = 31
+254 `shiftR` 32 = 0
+254 `shiftR` 64 = 0
+255 `shiftR` 0 = 255
+255 `shiftR` 1 = 127
+255 `shiftR` 2 = 63
+255 `shiftR` 3 = 31
+255 `shiftR` 32 = 0
+255 `shiftR` 64 = 0
+0 `shiftR` 0 = 0
+0 `shiftR` 1 = 0
+0 `shiftR` 2 = 0
+0 `shiftR` 3 = 0
+0 `shiftR` 32 = 0
+0 `shiftR` 64 = 0
+1 `shiftR` 0 = 1
+1 `shiftR` 1 = 0
+1 `shiftR` 2 = 0
+1 `shiftR` 3 = 0
+1 `shiftR` 32 = 0
+1 `shiftR` 64 = 0
+2 `shiftR` 0 = 2
+2 `shiftR` 1 = 1
+2 `shiftR` 2 = 0
+2 `shiftR` 3 = 0
+2 `shiftR` 32 = 0
+2 `shiftR` 64 = 0
+3 `shiftR` 0 = 3
+3 `shiftR` 1 = 1
+3 `shiftR` 2 = 0
+3 `shiftR` 3 = 0
+3 `shiftR` 32 = 0
+3 `shiftR` 64 = 0
+#
+253 `rotate` -3 = 191
+253 `rotate` -2 = 127
+253 `rotate` -1 = 254
+253 `rotate` 0 = 253
+253 `rotate` 1 = 251
+253 `rotate` 2 = 247
+253 `rotate` 3 = 239
+254 `rotate` -3 = 223
+254 `rotate` -2 = 191
+254 `rotate` -1 = 127
+254 `rotate` 0 = 254
+254 `rotate` 1 = 253
+254 `rotate` 2 = 251
+254 `rotate` 3 = 247
+255 `rotate` -3 = 255
+255 `rotate` -2 = 255
+255 `rotate` -1 = 255
+255 `rotate` 0 = 255
+255 `rotate` 1 = 255
+255 `rotate` 2 = 255
+255 `rotate` 3 = 255
+0 `rotate` -3 = 0
+0 `rotate` -2 = 0
+0 `rotate` -1 = 0
+0 `rotate` 0 = 0
+0 `rotate` 1 = 0
+0 `rotate` 2 = 0
+0 `rotate` 3 = 0
+1 `rotate` -3 = 32
+1 `rotate` -2 = 64
+1 `rotate` -1 = 128
+1 `rotate` 0 = 1
+1 `rotate` 1 = 2
+1 `rotate` 2 = 4
+1 `rotate` 3 = 8
+2 `rotate` -3 = 64
+2 `rotate` -2 = 128
+2 `rotate` -1 = 1
+2 `rotate` 0 = 2
+2 `rotate` 1 = 4
+2 `rotate` 2 = 8
+2 `rotate` 3 = 16
+3 `rotate` -3 = 96
+3 `rotate` -2 = 192
+3 `rotate` -1 = 129
+3 `rotate` 0 = 3
+3 `rotate` 1 = 6
+3 `rotate` 2 = 12
+3 `rotate` 3 = 24
+#
+bit 0 = 1
+bit 1 = 2
+bit 2 = 4
+bit 3 = 8
+#
+253 `setBit` 0 = 253
+253 `setBit` 1 = 255
+253 `setBit` 2 = 253
+253 `setBit` 3 = 253
+253 `setBit` 32 = 253
+253 `setBit` 64 = 253
+254 `setBit` 0 = 255
+254 `setBit` 1 = 254
+254 `setBit` 2 = 254
+254 `setBit` 3 = 254
+254 `setBit` 32 = 254
+254 `setBit` 64 = 254
+255 `setBit` 0 = 255
+255 `setBit` 1 = 255
+255 `setBit` 2 = 255
+255 `setBit` 3 = 255
+255 `setBit` 32 = 255
+255 `setBit` 64 = 255
+0 `setBit` 0 = 1
+0 `setBit` 1 = 2
+0 `setBit` 2 = 4
+0 `setBit` 3 = 8
+0 `setBit` 32 = 0
+0 `setBit` 64 = 0
+1 `setBit` 0 = 1
+1 `setBit` 1 = 3
+1 `setBit` 2 = 5
+1 `setBit` 3 = 9
+1 `setBit` 32 = 1
+1 `setBit` 64 = 1
+2 `setBit` 0 = 3
+2 `setBit` 1 = 2
+2 `setBit` 2 = 6
+2 `setBit` 3 = 10
+2 `setBit` 32 = 2
+2 `setBit` 64 = 2
+3 `setBit` 0 = 3
+3 `setBit` 1 = 3
+3 `setBit` 2 = 7
+3 `setBit` 3 = 11
+3 `setBit` 32 = 3
+3 `setBit` 64 = 3
+#
+253 `clearBit` 0 = 252
+253 `clearBit` 1 = 253
+253 `clearBit` 2 = 249
+253 `clearBit` 3 = 245
+253 `clearBit` 32 = 253
+253 `clearBit` 64 = 253
+254 `clearBit` 0 = 254
+254 `clearBit` 1 = 252
+254 `clearBit` 2 = 250
+254 `clearBit` 3 = 246
+254 `clearBit` 32 = 254
+254 `clearBit` 64 = 254
+255 `clearBit` 0 = 254
+255 `clearBit` 1 = 253
+255 `clearBit` 2 = 251
+255 `clearBit` 3 = 247
+255 `clearBit` 32 = 255
+255 `clearBit` 64 = 255
+0 `clearBit` 0 = 0
+0 `clearBit` 1 = 0
+0 `clearBit` 2 = 0
+0 `clearBit` 3 = 0
+0 `clearBit` 32 = 0
+0 `clearBit` 64 = 0
+1 `clearBit` 0 = 0
+1 `clearBit` 1 = 1
+1 `clearBit` 2 = 1
+1 `clearBit` 3 = 1
+1 `clearBit` 32 = 1
+1 `clearBit` 64 = 1
+2 `clearBit` 0 = 2
+2 `clearBit` 1 = 0
+2 `clearBit` 2 = 2
+2 `clearBit` 3 = 2
+2 `clearBit` 32 = 2
+2 `clearBit` 64 = 2
+3 `clearBit` 0 = 2
+3 `clearBit` 1 = 1
+3 `clearBit` 2 = 3
+3 `clearBit` 3 = 3
+3 `clearBit` 32 = 3
+3 `clearBit` 64 = 3
+#
+253 `complementBit` 0 = 252
+253 `complementBit` 1 = 255
+253 `complementBit` 2 = 249
+253 `complementBit` 3 = 245
+253 `complementBit` 32 = 253
+253 `complementBit` 64 = 253
+254 `complementBit` 0 = 255
+254 `complementBit` 1 = 252
+254 `complementBit` 2 = 250
+254 `complementBit` 3 = 246
+254 `complementBit` 32 = 254
+254 `complementBit` 64 = 254
+255 `complementBit` 0 = 254
+255 `complementBit` 1 = 253
+255 `complementBit` 2 = 251
+255 `complementBit` 3 = 247
+255 `complementBit` 32 = 255
+255 `complementBit` 64 = 255
+0 `complementBit` 0 = 1
+0 `complementBit` 1 = 2
+0 `complementBit` 2 = 4
+0 `complementBit` 3 = 8
+0 `complementBit` 32 = 0
+0 `complementBit` 64 = 0
+1 `complementBit` 0 = 0
+1 `complementBit` 1 = 3
+1 `complementBit` 2 = 5
+1 `complementBit` 3 = 9
+1 `complementBit` 32 = 1
+1 `complementBit` 64 = 1
+2 `complementBit` 0 = 3
+2 `complementBit` 1 = 0
+2 `complementBit` 2 = 6
+2 `complementBit` 3 = 10
+2 `complementBit` 32 = 2
+2 `complementBit` 64 = 2
+3 `complementBit` 0 = 2
+3 `complementBit` 1 = 1
+3 `complementBit` 2 = 7
+3 `complementBit` 3 = 11
+3 `complementBit` 32 = 3
+3 `complementBit` 64 = 3
+#
+253 `testBit` 0 = True
+253 `testBit` 1 = False
+253 `testBit` 2 = True
+253 `testBit` 3 = True
+253 `testBit` 32 = False
+253 `testBit` 64 = False
+254 `testBit` 0 = False
+254 `testBit` 1 = True
+254 `testBit` 2 = True
+254 `testBit` 3 = True
+254 `testBit` 32 = False
+254 `testBit` 64 = False
+255 `testBit` 0 = True
+255 `testBit` 1 = True
+255 `testBit` 2 = True
+255 `testBit` 3 = True
+255 `testBit` 32 = False
+255 `testBit` 64 = False
+0 `testBit` 0 = False
+0 `testBit` 1 = False
+0 `testBit` 2 = False
+0 `testBit` 3 = False
+0 `testBit` 32 = False
+0 `testBit` 64 = False
+1 `testBit` 0 = True
+1 `testBit` 1 = False
+1 `testBit` 2 = False
+1 `testBit` 3 = False
+1 `testBit` 32 = False
+1 `testBit` 64 = False
+2 `testBit` 0 = False
+2 `testBit` 1 = True
+2 `testBit` 2 = False
+2 `testBit` 3 = False
+2 `testBit` 32 = False
+2 `testBit` 64 = False
+3 `testBit` 0 = True
+3 `testBit` 1 = True
+3 `testBit` 2 = False
+3 `testBit` 3 = False
+3 `testBit` 32 = False
+3 `testBit` 64 = False
+#
+bitSize 253 = 8
+bitSize 254 = 8
+bitSize 255 = 8
+bitSize 0 = 8
+bitSize 1 = 8
+bitSize 2 = 8
+bitSize 3 = 8
+#
+isSigned 253 = False
+isSigned 254 = False
+isSigned 255 = False
+isSigned 0 = False
+isSigned 1 = False
+isSigned 2 = False
+isSigned 3 = False
+#
+--------------------------------
+--Testing Word16
+--------------------------------
+testBounded
+(65535,0,1)
+(65534,65535,0)
+testEnum
+[0,1,2,3,4,5,6,7,8,9]
+[0,2,4,6,8,10,12,14,16,18]
+[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
+[0,2,4,6,8,10,12,14,16,18,20]
+testReadShow
+[65533,65534,65535,0,1,2,3]
+[65533,65534,65535,0,1,2,3]
+testEq
+65533 == 65533 = True
+65533 == 65534 = False
+65533 == 65535 = False
+65533 == 0 = False
+65533 == 1 = False
+65533 == 2 = False
+65533 == 3 = False
+65534 == 65533 = False
+65534 == 65534 = True
+65534 == 65535 = False
+65534 == 0 = False
+65534 == 1 = False
+65534 == 2 = False
+65534 == 3 = False
+65535 == 65533 = False
+65535 == 65534 = False
+65535 == 65535 = True
+65535 == 0 = False
+65535 == 1 = False
+65535 == 2 = False
+65535 == 3 = False
+0 == 65533 = False
+0 == 65534 = False
+0 == 65535 = False
+0 == 0 = True
+0 == 1 = False
+0 == 2 = False
+0 == 3 = False
+1 == 65533 = False
+1 == 65534 = False
+1 == 65535 = False
+1 == 0 = False
+1 == 1 = True
+1 == 2 = False
+1 == 3 = False
+2 == 65533 = False
+2 == 65534 = False
+2 == 65535 = False
+2 == 0 = False
+2 == 1 = False
+2 == 2 = True
+2 == 3 = False
+3 == 65533 = False
+3 == 65534 = False
+3 == 65535 = False
+3 == 0 = False
+3 == 1 = False
+3 == 2 = False
+3 == 3 = True
+#
+65533 /= 65533 = False
+65533 /= 65534 = True
+65533 /= 65535 = True
+65533 /= 0 = True
+65533 /= 1 = True
+65533 /= 2 = True
+65533 /= 3 = True
+65534 /= 65533 = True
+65534 /= 65534 = False
+65534 /= 65535 = True
+65534 /= 0 = True
+65534 /= 1 = True
+65534 /= 2 = True
+65534 /= 3 = True
+65535 /= 65533 = True
+65535 /= 65534 = True
+65535 /= 65535 = False
+65535 /= 0 = True
+65535 /= 1 = True
+65535 /= 2 = True
+65535 /= 3 = True
+0 /= 65533 = True
+0 /= 65534 = True
+0 /= 65535 = True
+0 /= 0 = False
+0 /= 1 = True
+0 /= 2 = True
+0 /= 3 = True
+1 /= 65533 = True
+1 /= 65534 = True
+1 /= 65535 = True
+1 /= 0 = True
+1 /= 1 = False
+1 /= 2 = True
+1 /= 3 = True
+2 /= 65533 = True
+2 /= 65534 = True
+2 /= 65535 = True
+2 /= 0 = True
+2 /= 1 = True
+2 /= 2 = False
+2 /= 3 = True
+3 /= 65533 = True
+3 /= 65534 = True
+3 /= 65535 = True
+3 /= 0 = True
+3 /= 1 = True
+3 /= 2 = True
+3 /= 3 = False
+#
+testOrd
+65533 <= 65533 = True
+65533 <= 65534 = True
+65533 <= 65535 = True
+65533 <= 0 = False
+65533 <= 1 = False
+65533 <= 2 = False
+65533 <= 3 = False
+65534 <= 65533 = False
+65534 <= 65534 = True
+65534 <= 65535 = True
+65534 <= 0 = False
+65534 <= 1 = False
+65534 <= 2 = False
+65534 <= 3 = False
+65535 <= 65533 = False
+65535 <= 65534 = False
+65535 <= 65535 = True
+65535 <= 0 = False
+65535 <= 1 = False
+65535 <= 2 = False
+65535 <= 3 = False
+0 <= 65533 = True
+0 <= 65534 = True
+0 <= 65535 = True
+0 <= 0 = True
+0 <= 1 = True
+0 <= 2 = True
+0 <= 3 = True
+1 <= 65533 = True
+1 <= 65534 = True
+1 <= 65535 = True
+1 <= 0 = False
+1 <= 1 = True
+1 <= 2 = True
+1 <= 3 = True
+2 <= 65533 = True
+2 <= 65534 = True
+2 <= 65535 = True
+2 <= 0 = False
+2 <= 1 = False
+2 <= 2 = True
+2 <= 3 = True
+3 <= 65533 = True
+3 <= 65534 = True
+3 <= 65535 = True
+3 <= 0 = False
+3 <= 1 = False
+3 <= 2 = False
+3 <= 3 = True
+#
+65533 <  65533 = False
+65533 <  65534 = True
+65533 <  65535 = True
+65533 <  0 = False
+65533 <  1 = False
+65533 <  2 = False
+65533 <  3 = False
+65534 <  65533 = False
+65534 <  65534 = False
+65534 <  65535 = True
+65534 <  0 = False
+65534 <  1 = False
+65534 <  2 = False
+65534 <  3 = False
+65535 <  65533 = False
+65535 <  65534 = False
+65535 <  65535 = False
+65535 <  0 = False
+65535 <  1 = False
+65535 <  2 = False
+65535 <  3 = False
+0 <  65533 = True
+0 <  65534 = True
+0 <  65535 = True
+0 <  0 = False
+0 <  1 = True
+0 <  2 = True
+0 <  3 = True
+1 <  65533 = True
+1 <  65534 = True
+1 <  65535 = True
+1 <  0 = False
+1 <  1 = False
+1 <  2 = True
+1 <  3 = True
+2 <  65533 = True
+2 <  65534 = True
+2 <  65535 = True
+2 <  0 = False
+2 <  1 = False
+2 <  2 = False
+2 <  3 = True
+3 <  65533 = True
+3 <  65534 = True
+3 <  65535 = True
+3 <  0 = False
+3 <  1 = False
+3 <  2 = False
+3 <  3 = False
+#
+65533 >  65533 = False
+65533 >  65534 = False
+65533 >  65535 = False
+65533 >  0 = True
+65533 >  1 = True
+65533 >  2 = True
+65533 >  3 = True
+65534 >  65533 = True
+65534 >  65534 = False
+65534 >  65535 = False
+65534 >  0 = True
+65534 >  1 = True
+65534 >  2 = True
+65534 >  3 = True
+65535 >  65533 = True
+65535 >  65534 = True
+65535 >  65535 = False
+65535 >  0 = True
+65535 >  1 = True
+65535 >  2 = True
+65535 >  3 = True
+0 >  65533 = False
+0 >  65534 = False
+0 >  65535 = False
+0 >  0 = False
+0 >  1 = False
+0 >  2 = False
+0 >  3 = False
+1 >  65533 = False
+1 >  65534 = False
+1 >  65535 = False
+1 >  0 = True
+1 >  1 = False
+1 >  2 = False
+1 >  3 = False
+2 >  65533 = False
+2 >  65534 = False
+2 >  65535 = False
+2 >  0 = True
+2 >  1 = True
+2 >  2 = False
+2 >  3 = False
+3 >  65533 = False
+3 >  65534 = False
+3 >  65535 = False
+3 >  0 = True
+3 >  1 = True
+3 >  2 = True
+3 >  3 = False
+#
+65533 >= 65533 = True
+65533 >= 65534 = False
+65533 >= 65535 = False
+65533 >= 0 = True
+65533 >= 1 = True
+65533 >= 2 = True
+65533 >= 3 = True
+65534 >= 65533 = True
+65534 >= 65534 = True
+65534 >= 65535 = False
+65534 >= 0 = True
+65534 >= 1 = True
+65534 >= 2 = True
+65534 >= 3 = True
+65535 >= 65533 = True
+65535 >= 65534 = True
+65535 >= 65535 = True
+65535 >= 0 = True
+65535 >= 1 = True
+65535 >= 2 = True
+65535 >= 3 = True
+0 >= 65533 = False
+0 >= 65534 = False
+0 >= 65535 = False
+0 >= 0 = True
+0 >= 1 = False
+0 >= 2 = False
+0 >= 3 = False
+1 >= 65533 = False
+1 >= 65534 = False
+1 >= 65535 = False
+1 >= 0 = True
+1 >= 1 = True
+1 >= 2 = False
+1 >= 3 = False
+2 >= 65533 = False
+2 >= 65534 = False
+2 >= 65535 = False
+2 >= 0 = True
+2 >= 1 = True
+2 >= 2 = True
+2 >= 3 = False
+3 >= 65533 = False
+3 >= 65534 = False
+3 >= 65535 = False
+3 >= 0 = True
+3 >= 1 = True
+3 >= 2 = True
+3 >= 3 = True
+#
+65533 `compare` 65533 = EQ
+65533 `compare` 65534 = LT
+65533 `compare` 65535 = LT
+65533 `compare` 0 = GT
+65533 `compare` 1 = GT
+65533 `compare` 2 = GT
+65533 `compare` 3 = GT
+65534 `compare` 65533 = GT
+65534 `compare` 65534 = EQ
+65534 `compare` 65535 = LT
+65534 `compare` 0 = GT
+65534 `compare` 1 = GT
+65534 `compare` 2 = GT
+65534 `compare` 3 = GT
+65535 `compare` 65533 = GT
+65535 `compare` 65534 = GT
+65535 `compare` 65535 = EQ
+65535 `compare` 0 = GT
+65535 `compare` 1 = GT
+65535 `compare` 2 = GT
+65535 `compare` 3 = GT
+0 `compare` 65533 = LT
+0 `compare` 65534 = LT
+0 `compare` 65535 = LT
+0 `compare` 0 = EQ
+0 `compare` 1 = LT
+0 `compare` 2 = LT
+0 `compare` 3 = LT
+1 `compare` 65533 = LT
+1 `compare` 65534 = LT
+1 `compare` 65535 = LT
+1 `compare` 0 = GT
+1 `compare` 1 = EQ
+1 `compare` 2 = LT
+1 `compare` 3 = LT
+2 `compare` 65533 = LT
+2 `compare` 65534 = LT
+2 `compare` 65535 = LT
+2 `compare` 0 = GT
+2 `compare` 1 = GT
+2 `compare` 2 = EQ
+2 `compare` 3 = LT
+3 `compare` 65533 = LT
+3 `compare` 65534 = LT
+3 `compare` 65535 = LT
+3 `compare` 0 = GT
+3 `compare` 1 = GT
+3 `compare` 2 = GT
+3 `compare` 3 = EQ
+#
+testNum
+65533 + 65533 = 65530
+65533 + 65534 = 65531
+65533 + 65535 = 65532
+65533 + 0 = 65533
+65533 + 1 = 65534
+65533 + 2 = 65535
+65533 + 3 = 0
+65534 + 65533 = 65531
+65534 + 65534 = 65532
+65534 + 65535 = 65533
+65534 + 0 = 65534
+65534 + 1 = 65535
+65534 + 2 = 0
+65534 + 3 = 1
+65535 + 65533 = 65532
+65535 + 65534 = 65533
+65535 + 65535 = 65534
+65535 + 0 = 65535
+65535 + 1 = 0
+65535 + 2 = 1
+65535 + 3 = 2
+0 + 65533 = 65533
+0 + 65534 = 65534
+0 + 65535 = 65535
+0 + 0 = 0
+0 + 1 = 1
+0 + 2 = 2
+0 + 3 = 3
+1 + 65533 = 65534
+1 + 65534 = 65535
+1 + 65535 = 0
+1 + 0 = 1
+1 + 1 = 2
+1 + 2 = 3
+1 + 3 = 4
+2 + 65533 = 65535
+2 + 65534 = 0
+2 + 65535 = 1
+2 + 0 = 2
+2 + 1 = 3
+2 + 2 = 4
+2 + 3 = 5
+3 + 65533 = 0
+3 + 65534 = 1
+3 + 65535 = 2
+3 + 0 = 3
+3 + 1 = 4
+3 + 2 = 5
+3 + 3 = 6
+#
+65533 - 65533 = 0
+65533 - 65534 = 65535
+65533 - 65535 = 65534
+65533 - 0 = 65533
+65533 - 1 = 65532
+65533 - 2 = 65531
+65533 - 3 = 65530
+65534 - 65533 = 1
+65534 - 65534 = 0
+65534 - 65535 = 65535
+65534 - 0 = 65534
+65534 - 1 = 65533
+65534 - 2 = 65532
+65534 - 3 = 65531
+65535 - 65533 = 2
+65535 - 65534 = 1
+65535 - 65535 = 0
+65535 - 0 = 65535
+65535 - 1 = 65534
+65535 - 2 = 65533
+65535 - 3 = 65532
+0 - 65533 = 3
+0 - 65534 = 2
+0 - 65535 = 1
+0 - 0 = 0
+0 - 1 = 65535
+0 - 2 = 65534
+0 - 3 = 65533
+1 - 65533 = 4
+1 - 65534 = 3
+1 - 65535 = 2
+1 - 0 = 1
+1 - 1 = 0
+1 - 2 = 65535
+1 - 3 = 65534
+2 - 65533 = 5
+2 - 65534 = 4
+2 - 65535 = 3
+2 - 0 = 2
+2 - 1 = 1
+2 - 2 = 0
+2 - 3 = 65535
+3 - 65533 = 6
+3 - 65534 = 5
+3 - 65535 = 4
+3 - 0 = 3
+3 - 1 = 2
+3 - 2 = 1
+3 - 3 = 0
+#
+65533 * 65533 = 9
+65533 * 65534 = 6
+65533 * 65535 = 3
+65533 * 0 = 0
+65533 * 1 = 65533
+65533 * 2 = 65530
+65533 * 3 = 65527
+65534 * 65533 = 6
+65534 * 65534 = 4
+65534 * 65535 = 2
+65534 * 0 = 0
+65534 * 1 = 65534
+65534 * 2 = 65532
+65534 * 3 = 65530
+65535 * 65533 = 3
+65535 * 65534 = 2
+65535 * 65535 = 1
+65535 * 0 = 0
+65535 * 1 = 65535
+65535 * 2 = 65534
+65535 * 3 = 65533
+0 * 65533 = 0
+0 * 65534 = 0
+0 * 65535 = 0
+0 * 0 = 0
+0 * 1 = 0
+0 * 2 = 0
+0 * 3 = 0
+1 * 65533 = 65533
+1 * 65534 = 65534
+1 * 65535 = 65535
+1 * 0 = 0
+1 * 1 = 1
+1 * 2 = 2
+1 * 3 = 3
+2 * 65533 = 65530
+2 * 65534 = 65532
+2 * 65535 = 65534
+2 * 0 = 0
+2 * 1 = 2
+2 * 2 = 4
+2 * 3 = 6
+3 * 65533 = 65527
+3 * 65534 = 65530
+3 * 65535 = 65533
+3 * 0 = 0
+3 * 1 = 3
+3 * 2 = 6
+3 * 3 = 9
+#
+negate 65533 = 3
+negate 65534 = 2
+negate 65535 = 1
+negate 0 = 0
+negate 1 = 65535
+negate 2 = 65534
+negate 3 = 65533
+#
+testReal
+toRational 65533 = 65533%1
+toRational 65534 = 65534%1
+toRational 65535 = 65535%1
+toRational 0 = 0%1
+toRational 1 = 1%1
+toRational 2 = 2%1
+toRational 3 = 3%1
+#
+testIntegral
+65533 `divMod`  65533 = (1,0)
+65533 `divMod`  65534 = (0,65533)
+65533 `divMod`  65535 = (0,65533)
+65533 `divMod`  0 = divide by zero
+65533 `divMod`  1 = (65533,0)
+65533 `divMod`  2 = (32766,1)
+65533 `divMod`  3 = (21844,1)
+65534 `divMod`  65533 = (1,1)
+65534 `divMod`  65534 = (1,0)
+65534 `divMod`  65535 = (0,65534)
+65534 `divMod`  0 = divide by zero
+65534 `divMod`  1 = (65534,0)
+65534 `divMod`  2 = (32767,0)
+65534 `divMod`  3 = (21844,2)
+65535 `divMod`  65533 = (1,2)
+65535 `divMod`  65534 = (1,1)
+65535 `divMod`  65535 = (1,0)
+65535 `divMod`  0 = divide by zero
+65535 `divMod`  1 = (65535,0)
+65535 `divMod`  2 = (32767,1)
+65535 `divMod`  3 = (21845,0)
+0 `divMod`  65533 = (0,0)
+0 `divMod`  65534 = (0,0)
+0 `divMod`  65535 = (0,0)
+0 `divMod`  0 = divide by zero
+0 `divMod`  1 = (0,0)
+0 `divMod`  2 = (0,0)
+0 `divMod`  3 = (0,0)
+1 `divMod`  65533 = (0,1)
+1 `divMod`  65534 = (0,1)
+1 `divMod`  65535 = (0,1)
+1 `divMod`  0 = divide by zero
+1 `divMod`  1 = (1,0)
+1 `divMod`  2 = (0,1)
+1 `divMod`  3 = (0,1)
+2 `divMod`  65533 = (0,2)
+2 `divMod`  65534 = (0,2)
+2 `divMod`  65535 = (0,2)
+2 `divMod`  0 = divide by zero
+2 `divMod`  1 = (2,0)
+2 `divMod`  2 = (1,0)
+2 `divMod`  3 = (0,2)
+3 `divMod`  65533 = (0,3)
+3 `divMod`  65534 = (0,3)
+3 `divMod`  65535 = (0,3)
+3 `divMod`  0 = divide by zero
+3 `divMod`  1 = (3,0)
+3 `divMod`  2 = (1,1)
+3 `divMod`  3 = (1,0)
+#
+65533 `div`     65533 = 1
+65533 `div`     65534 = 0
+65533 `div`     65535 = 0
+65533 `div`     0 = divide by zero
+65533 `div`     1 = 65533
+65533 `div`     2 = 32766
+65533 `div`     3 = 21844
+65534 `div`     65533 = 1
+65534 `div`     65534 = 1
+65534 `div`     65535 = 0
+65534 `div`     0 = divide by zero
+65534 `div`     1 = 65534
+65534 `div`     2 = 32767
+65534 `div`     3 = 21844
+65535 `div`     65533 = 1
+65535 `div`     65534 = 1
+65535 `div`     65535 = 1
+65535 `div`     0 = divide by zero
+65535 `div`     1 = 65535
+65535 `div`     2 = 32767
+65535 `div`     3 = 21845
+0 `div`     65533 = 0
+0 `div`     65534 = 0
+0 `div`     65535 = 0
+0 `div`     0 = divide by zero
+0 `div`     1 = 0
+0 `div`     2 = 0
+0 `div`     3 = 0
+1 `div`     65533 = 0
+1 `div`     65534 = 0
+1 `div`     65535 = 0
+1 `div`     0 = divide by zero
+1 `div`     1 = 1
+1 `div`     2 = 0
+1 `div`     3 = 0
+2 `div`     65533 = 0
+2 `div`     65534 = 0
+2 `div`     65535 = 0
+2 `div`     0 = divide by zero
+2 `div`     1 = 2
+2 `div`     2 = 1
+2 `div`     3 = 0
+3 `div`     65533 = 0
+3 `div`     65534 = 0
+3 `div`     65535 = 0
+3 `div`     0 = divide by zero
+3 `div`     1 = 3
+3 `div`     2 = 1
+3 `div`     3 = 1
+#
+65533 `mod`     65533 = 0
+65533 `mod`     65534 = 65533
+65533 `mod`     65535 = 65533
+65533 `mod`     0 = divide by zero
+65533 `mod`     1 = 0
+65533 `mod`     2 = 1
+65533 `mod`     3 = 1
+65534 `mod`     65533 = 1
+65534 `mod`     65534 = 0
+65534 `mod`     65535 = 65534
+65534 `mod`     0 = divide by zero
+65534 `mod`     1 = 0
+65534 `mod`     2 = 0
+65534 `mod`     3 = 2
+65535 `mod`     65533 = 2
+65535 `mod`     65534 = 1
+65535 `mod`     65535 = 0
+65535 `mod`     0 = divide by zero
+65535 `mod`     1 = 0
+65535 `mod`     2 = 1
+65535 `mod`     3 = 0
+0 `mod`     65533 = 0
+0 `mod`     65534 = 0
+0 `mod`     65535 = 0
+0 `mod`     0 = divide by zero
+0 `mod`     1 = 0
+0 `mod`     2 = 0
+0 `mod`     3 = 0
+1 `mod`     65533 = 1
+1 `mod`     65534 = 1
+1 `mod`     65535 = 1
+1 `mod`     0 = divide by zero
+1 `mod`     1 = 0
+1 `mod`     2 = 1
+1 `mod`     3 = 1
+2 `mod`     65533 = 2
+2 `mod`     65534 = 2
+2 `mod`     65535 = 2
+2 `mod`     0 = divide by zero
+2 `mod`     1 = 0
+2 `mod`     2 = 0
+2 `mod`     3 = 2
+3 `mod`     65533 = 3
+3 `mod`     65534 = 3
+3 `mod`     65535 = 3
+3 `mod`     0 = divide by zero
+3 `mod`     1 = 0
+3 `mod`     2 = 1
+3 `mod`     3 = 0
+#
+65533 `quotRem` 65533 = (1,0)
+65533 `quotRem` 65534 = (0,65533)
+65533 `quotRem` 65535 = (0,65533)
+65533 `quotRem` 0 = divide by zero
+65533 `quotRem` 1 = (65533,0)
+65533 `quotRem` 2 = (32766,1)
+65533 `quotRem` 3 = (21844,1)
+65534 `quotRem` 65533 = (1,1)
+65534 `quotRem` 65534 = (1,0)
+65534 `quotRem` 65535 = (0,65534)
+65534 `quotRem` 0 = divide by zero
+65534 `quotRem` 1 = (65534,0)
+65534 `quotRem` 2 = (32767,0)
+65534 `quotRem` 3 = (21844,2)
+65535 `quotRem` 65533 = (1,2)
+65535 `quotRem` 65534 = (1,1)
+65535 `quotRem` 65535 = (1,0)
+65535 `quotRem` 0 = divide by zero
+65535 `quotRem` 1 = (65535,0)
+65535 `quotRem` 2 = (32767,1)
+65535 `quotRem` 3 = (21845,0)
+0 `quotRem` 65533 = (0,0)
+0 `quotRem` 65534 = (0,0)
+0 `quotRem` 65535 = (0,0)
+0 `quotRem` 0 = divide by zero
+0 `quotRem` 1 = (0,0)
+0 `quotRem` 2 = (0,0)
+0 `quotRem` 3 = (0,0)
+1 `quotRem` 65533 = (0,1)
+1 `quotRem` 65534 = (0,1)
+1 `quotRem` 65535 = (0,1)
+1 `quotRem` 0 = divide by zero
+1 `quotRem` 1 = (1,0)
+1 `quotRem` 2 = (0,1)
+1 `quotRem` 3 = (0,1)
+2 `quotRem` 65533 = (0,2)
+2 `quotRem` 65534 = (0,2)
+2 `quotRem` 65535 = (0,2)
+2 `quotRem` 0 = divide by zero
+2 `quotRem` 1 = (2,0)
+2 `quotRem` 2 = (1,0)
+2 `quotRem` 3 = (0,2)
+3 `quotRem` 65533 = (0,3)
+3 `quotRem` 65534 = (0,3)
+3 `quotRem` 65535 = (0,3)
+3 `quotRem` 0 = divide by zero
+3 `quotRem` 1 = (3,0)
+3 `quotRem` 2 = (1,1)
+3 `quotRem` 3 = (1,0)
+#
+65533 `quot`    65533 = 1
+65533 `quot`    65534 = 0
+65533 `quot`    65535 = 0
+65533 `quot`    0 = divide by zero
+65533 `quot`    1 = 65533
+65533 `quot`    2 = 32766
+65533 `quot`    3 = 21844
+65534 `quot`    65533 = 1
+65534 `quot`    65534 = 1
+65534 `quot`    65535 = 0
+65534 `quot`    0 = divide by zero
+65534 `quot`    1 = 65534
+65534 `quot`    2 = 32767
+65534 `quot`    3 = 21844
+65535 `quot`    65533 = 1
+65535 `quot`    65534 = 1
+65535 `quot`    65535 = 1
+65535 `quot`    0 = divide by zero
+65535 `quot`    1 = 65535
+65535 `quot`    2 = 32767
+65535 `quot`    3 = 21845
+0 `quot`    65533 = 0
+0 `quot`    65534 = 0
+0 `quot`    65535 = 0
+0 `quot`    0 = divide by zero
+0 `quot`    1 = 0
+0 `quot`    2 = 0
+0 `quot`    3 = 0
+1 `quot`    65533 = 0
+1 `quot`    65534 = 0
+1 `quot`    65535 = 0
+1 `quot`    0 = divide by zero
+1 `quot`    1 = 1
+1 `quot`    2 = 0
+1 `quot`    3 = 0
+2 `quot`    65533 = 0
+2 `quot`    65534 = 0
+2 `quot`    65535 = 0
+2 `quot`    0 = divide by zero
+2 `quot`    1 = 2
+2 `quot`    2 = 1
+2 `quot`    3 = 0
+3 `quot`    65533 = 0
+3 `quot`    65534 = 0
+3 `quot`    65535 = 0
+3 `quot`    0 = divide by zero
+3 `quot`    1 = 3
+3 `quot`    2 = 1
+3 `quot`    3 = 1
+#
+65533 `rem`     65533 = 0
+65533 `rem`     65534 = 65533
+65533 `rem`     65535 = 65533
+65533 `rem`     0 = divide by zero
+65533 `rem`     1 = 0
+65533 `rem`     2 = 1
+65533 `rem`     3 = 1
+65534 `rem`     65533 = 1
+65534 `rem`     65534 = 0
+65534 `rem`     65535 = 65534
+65534 `rem`     0 = divide by zero
+65534 `rem`     1 = 0
+65534 `rem`     2 = 0
+65534 `rem`     3 = 2
+65535 `rem`     65533 = 2
+65535 `rem`     65534 = 1
+65535 `rem`     65535 = 0
+65535 `rem`     0 = divide by zero
+65535 `rem`     1 = 0
+65535 `rem`     2 = 1
+65535 `rem`     3 = 0
+0 `rem`     65533 = 0
+0 `rem`     65534 = 0
+0 `rem`     65535 = 0
+0 `rem`     0 = divide by zero
+0 `rem`     1 = 0
+0 `rem`     2 = 0
+0 `rem`     3 = 0
+1 `rem`     65533 = 1
+1 `rem`     65534 = 1
+1 `rem`     65535 = 1
+1 `rem`     0 = divide by zero
+1 `rem`     1 = 0
+1 `rem`     2 = 1
+1 `rem`     3 = 1
+2 `rem`     65533 = 2
+2 `rem`     65534 = 2
+2 `rem`     65535 = 2
+2 `rem`     0 = divide by zero
+2 `rem`     1 = 0
+2 `rem`     2 = 0
+2 `rem`     3 = 2
+3 `rem`     65533 = 3
+3 `rem`     65534 = 3
+3 `rem`     65535 = 3
+3 `rem`     0 = divide by zero
+3 `rem`     1 = 0
+3 `rem`     2 = 1
+3 `rem`     3 = 0
+#
+testConversions
+Integer : [0,0,65535]
+Int     : [0,0,65535]
+Int8    : [0,0,-1]
+Int16   : [0,0,-1]
+Int32   : [0,0,65535]
+Int64   : [0,0,65535]
+Word8   : [0,0,255]
+Word16  : [0,0,65535]
+Word32  : [0,0,65535]
+Word64  : [0,0,65535]
+testBits
+65533 .&.   65533 = 65533
+65533 .&.   65534 = 65532
+65533 .&.   65535 = 65533
+65533 .&.   0 = 0
+65533 .&.   1 = 1
+65533 .&.   2 = 0
+65533 .&.   3 = 1
+65534 .&.   65533 = 65532
+65534 .&.   65534 = 65534
+65534 .&.   65535 = 65534
+65534 .&.   0 = 0
+65534 .&.   1 = 0
+65534 .&.   2 = 2
+65534 .&.   3 = 2
+65535 .&.   65533 = 65533
+65535 .&.   65534 = 65534
+65535 .&.   65535 = 65535
+65535 .&.   0 = 0
+65535 .&.   1 = 1
+65535 .&.   2 = 2
+65535 .&.   3 = 3
+0 .&.   65533 = 0
+0 .&.   65534 = 0
+0 .&.   65535 = 0
+0 .&.   0 = 0
+0 .&.   1 = 0
+0 .&.   2 = 0
+0 .&.   3 = 0
+1 .&.   65533 = 1
+1 .&.   65534 = 0
+1 .&.   65535 = 1
+1 .&.   0 = 0
+1 .&.   1 = 1
+1 .&.   2 = 0
+1 .&.   3 = 1
+2 .&.   65533 = 0
+2 .&.   65534 = 2
+2 .&.   65535 = 2
+2 .&.   0 = 0
+2 .&.   1 = 0
+2 .&.   2 = 2
+2 .&.   3 = 2
+3 .&.   65533 = 1
+3 .&.   65534 = 2
+3 .&.   65535 = 3
+3 .&.   0 = 0
+3 .&.   1 = 1
+3 .&.   2 = 2
+3 .&.   3 = 3
+#
+65533 .|.   65533 = 65533
+65533 .|.   65534 = 65535
+65533 .|.   65535 = 65535
+65533 .|.   0 = 65533
+65533 .|.   1 = 65533
+65533 .|.   2 = 65535
+65533 .|.   3 = 65535
+65534 .|.   65533 = 65535
+65534 .|.   65534 = 65534
+65534 .|.   65535 = 65535
+65534 .|.   0 = 65534
+65534 .|.   1 = 65535
+65534 .|.   2 = 65534
+65534 .|.   3 = 65535
+65535 .|.   65533 = 65535
+65535 .|.   65534 = 65535
+65535 .|.   65535 = 65535
+65535 .|.   0 = 65535
+65535 .|.   1 = 65535
+65535 .|.   2 = 65535
+65535 .|.   3 = 65535
+0 .|.   65533 = 65533
+0 .|.   65534 = 65534
+0 .|.   65535 = 65535
+0 .|.   0 = 0
+0 .|.   1 = 1
+0 .|.   2 = 2
+0 .|.   3 = 3
+1 .|.   65533 = 65533
+1 .|.   65534 = 65535
+1 .|.   65535 = 65535
+1 .|.   0 = 1
+1 .|.   1 = 1
+1 .|.   2 = 3
+1 .|.   3 = 3
+2 .|.   65533 = 65535
+2 .|.   65534 = 65534
+2 .|.   65535 = 65535
+2 .|.   0 = 2
+2 .|.   1 = 3
+2 .|.   2 = 2
+2 .|.   3 = 3
+3 .|.   65533 = 65535
+3 .|.   65534 = 65535
+3 .|.   65535 = 65535
+3 .|.   0 = 3
+3 .|.   1 = 3
+3 .|.   2 = 3
+3 .|.   3 = 3
+#
+65533 `xor` 65533 = 0
+65533 `xor` 65534 = 3
+65533 `xor` 65535 = 2
+65533 `xor` 0 = 65533
+65533 `xor` 1 = 65532
+65533 `xor` 2 = 65535
+65533 `xor` 3 = 65534
+65534 `xor` 65533 = 3
+65534 `xor` 65534 = 0
+65534 `xor` 65535 = 1
+65534 `xor` 0 = 65534
+65534 `xor` 1 = 65535
+65534 `xor` 2 = 65532
+65534 `xor` 3 = 65533
+65535 `xor` 65533 = 2
+65535 `xor` 65534 = 1
+65535 `xor` 65535 = 0
+65535 `xor` 0 = 65535
+65535 `xor` 1 = 65534
+65535 `xor` 2 = 65533
+65535 `xor` 3 = 65532
+0 `xor` 65533 = 65533
+0 `xor` 65534 = 65534
+0 `xor` 65535 = 65535
+0 `xor` 0 = 0
+0 `xor` 1 = 1
+0 `xor` 2 = 2
+0 `xor` 3 = 3
+1 `xor` 65533 = 65532
+1 `xor` 65534 = 65535
+1 `xor` 65535 = 65534
+1 `xor` 0 = 1
+1 `xor` 1 = 0
+1 `xor` 2 = 3
+1 `xor` 3 = 2
+2 `xor` 65533 = 65535
+2 `xor` 65534 = 65532
+2 `xor` 65535 = 65533
+2 `xor` 0 = 2
+2 `xor` 1 = 3
+2 `xor` 2 = 0
+2 `xor` 3 = 1
+3 `xor` 65533 = 65534
+3 `xor` 65534 = 65533
+3 `xor` 65535 = 65532
+3 `xor` 0 = 3
+3 `xor` 1 = 2
+3 `xor` 2 = 1
+3 `xor` 3 = 0
+#
+complement 65533 = 2
+complement 65534 = 1
+complement 65535 = 0
+complement 0 = 65535
+complement 1 = 65534
+complement 2 = 65533
+complement 3 = 65532
+#
+65533 `shiftL` 0 = 65533
+65533 `shiftL` 1 = 65530
+65533 `shiftL` 2 = 65524
+65533 `shiftL` 3 = 65512
+65533 `shiftL` 32 = 0
+65533 `shiftL` 64 = 0
+65534 `shiftL` 0 = 65534
+65534 `shiftL` 1 = 65532
+65534 `shiftL` 2 = 65528
+65534 `shiftL` 3 = 65520
+65534 `shiftL` 32 = 0
+65534 `shiftL` 64 = 0
+65535 `shiftL` 0 = 65535
+65535 `shiftL` 1 = 65534
+65535 `shiftL` 2 = 65532
+65535 `shiftL` 3 = 65528
+65535 `shiftL` 32 = 0
+65535 `shiftL` 64 = 0
+0 `shiftL` 0 = 0
+0 `shiftL` 1 = 0
+0 `shiftL` 2 = 0
+0 `shiftL` 3 = 0
+0 `shiftL` 32 = 0
+0 `shiftL` 64 = 0
+1 `shiftL` 0 = 1
+1 `shiftL` 1 = 2
+1 `shiftL` 2 = 4
+1 `shiftL` 3 = 8
+1 `shiftL` 32 = 0
+1 `shiftL` 64 = 0
+2 `shiftL` 0 = 2
+2 `shiftL` 1 = 4
+2 `shiftL` 2 = 8
+2 `shiftL` 3 = 16
+2 `shiftL` 32 = 0
+2 `shiftL` 64 = 0
+3 `shiftL` 0 = 3
+3 `shiftL` 1 = 6
+3 `shiftL` 2 = 12
+3 `shiftL` 3 = 24
+3 `shiftL` 32 = 0
+3 `shiftL` 64 = 0
+#
+65533 `shiftR` 0 = 65533
+65533 `shiftR` 1 = 32766
+65533 `shiftR` 2 = 16383
+65533 `shiftR` 3 = 8191
+65533 `shiftR` 32 = 0
+65533 `shiftR` 64 = 0
+65534 `shiftR` 0 = 65534
+65534 `shiftR` 1 = 32767
+65534 `shiftR` 2 = 16383
+65534 `shiftR` 3 = 8191
+65534 `shiftR` 32 = 0
+65534 `shiftR` 64 = 0
+65535 `shiftR` 0 = 65535
+65535 `shiftR` 1 = 32767
+65535 `shiftR` 2 = 16383
+65535 `shiftR` 3 = 8191
+65535 `shiftR` 32 = 0
+65535 `shiftR` 64 = 0
+0 `shiftR` 0 = 0
+0 `shiftR` 1 = 0
+0 `shiftR` 2 = 0
+0 `shiftR` 3 = 0
+0 `shiftR` 32 = 0
+0 `shiftR` 64 = 0
+1 `shiftR` 0 = 1
+1 `shiftR` 1 = 0
+1 `shiftR` 2 = 0
+1 `shiftR` 3 = 0
+1 `shiftR` 32 = 0
+1 `shiftR` 64 = 0
+2 `shiftR` 0 = 2
+2 `shiftR` 1 = 1
+2 `shiftR` 2 = 0
+2 `shiftR` 3 = 0
+2 `shiftR` 32 = 0
+2 `shiftR` 64 = 0
+3 `shiftR` 0 = 3
+3 `shiftR` 1 = 1
+3 `shiftR` 2 = 0
+3 `shiftR` 3 = 0
+3 `shiftR` 32 = 0
+3 `shiftR` 64 = 0
+#
+65533 `rotate` -3 = 49151
+65533 `rotate` -2 = 32767
+65533 `rotate` -1 = 65534
+65533 `rotate` 0 = 65533
+65533 `rotate` 1 = 65531
+65533 `rotate` 2 = 65527
+65533 `rotate` 3 = 65519
+65534 `rotate` -3 = 57343
+65534 `rotate` -2 = 49151
+65534 `rotate` -1 = 32767
+65534 `rotate` 0 = 65534
+65534 `rotate` 1 = 65533
+65534 `rotate` 2 = 65531
+65534 `rotate` 3 = 65527
+65535 `rotate` -3 = 65535
+65535 `rotate` -2 = 65535
+65535 `rotate` -1 = 65535
+65535 `rotate` 0 = 65535
+65535 `rotate` 1 = 65535
+65535 `rotate` 2 = 65535
+65535 `rotate` 3 = 65535
+0 `rotate` -3 = 0
+0 `rotate` -2 = 0
+0 `rotate` -1 = 0
+0 `rotate` 0 = 0
+0 `rotate` 1 = 0
+0 `rotate` 2 = 0
+0 `rotate` 3 = 0
+1 `rotate` -3 = 8192
+1 `rotate` -2 = 16384
+1 `rotate` -1 = 32768
+1 `rotate` 0 = 1
+1 `rotate` 1 = 2
+1 `rotate` 2 = 4
+1 `rotate` 3 = 8
+2 `rotate` -3 = 16384
+2 `rotate` -2 = 32768
+2 `rotate` -1 = 1
+2 `rotate` 0 = 2
+2 `rotate` 1 = 4
+2 `rotate` 2 = 8
+2 `rotate` 3 = 16
+3 `rotate` -3 = 24576
+3 `rotate` -2 = 49152
+3 `rotate` -1 = 32769
+3 `rotate` 0 = 3
+3 `rotate` 1 = 6
+3 `rotate` 2 = 12
+3 `rotate` 3 = 24
+#
+bit 0 = 1
+bit 1 = 2
+bit 2 = 4
+bit 3 = 8
+#
+65533 `setBit` 0 = 65533
+65533 `setBit` 1 = 65535
+65533 `setBit` 2 = 65533
+65533 `setBit` 3 = 65533
+65533 `setBit` 32 = 65533
+65533 `setBit` 64 = 65533
+65534 `setBit` 0 = 65535
+65534 `setBit` 1 = 65534
+65534 `setBit` 2 = 65534
+65534 `setBit` 3 = 65534
+65534 `setBit` 32 = 65534
+65534 `setBit` 64 = 65534
+65535 `setBit` 0 = 65535
+65535 `setBit` 1 = 65535
+65535 `setBit` 2 = 65535
+65535 `setBit` 3 = 65535
+65535 `setBit` 32 = 65535
+65535 `setBit` 64 = 65535
+0 `setBit` 0 = 1
+0 `setBit` 1 = 2
+0 `setBit` 2 = 4
+0 `setBit` 3 = 8
+0 `setBit` 32 = 0
+0 `setBit` 64 = 0
+1 `setBit` 0 = 1
+1 `setBit` 1 = 3
+1 `setBit` 2 = 5
+1 `setBit` 3 = 9
+1 `setBit` 32 = 1
+1 `setBit` 64 = 1
+2 `setBit` 0 = 3
+2 `setBit` 1 = 2
+2 `setBit` 2 = 6
+2 `setBit` 3 = 10
+2 `setBit` 32 = 2
+2 `setBit` 64 = 2
+3 `setBit` 0 = 3
+3 `setBit` 1 = 3
+3 `setBit` 2 = 7
+3 `setBit` 3 = 11
+3 `setBit` 32 = 3
+3 `setBit` 64 = 3
+#
+65533 `clearBit` 0 = 65532
+65533 `clearBit` 1 = 65533
+65533 `clearBit` 2 = 65529
+65533 `clearBit` 3 = 65525
+65533 `clearBit` 32 = 65533
+65533 `clearBit` 64 = 65533
+65534 `clearBit` 0 = 65534
+65534 `clearBit` 1 = 65532
+65534 `clearBit` 2 = 65530
+65534 `clearBit` 3 = 65526
+65534 `clearBit` 32 = 65534
+65534 `clearBit` 64 = 65534
+65535 `clearBit` 0 = 65534
+65535 `clearBit` 1 = 65533
+65535 `clearBit` 2 = 65531
+65535 `clearBit` 3 = 65527
+65535 `clearBit` 32 = 65535
+65535 `clearBit` 64 = 65535
+0 `clearBit` 0 = 0
+0 `clearBit` 1 = 0
+0 `clearBit` 2 = 0
+0 `clearBit` 3 = 0
+0 `clearBit` 32 = 0
+0 `clearBit` 64 = 0
+1 `clearBit` 0 = 0
+1 `clearBit` 1 = 1
+1 `clearBit` 2 = 1
+1 `clearBit` 3 = 1
+1 `clearBit` 32 = 1
+1 `clearBit` 64 = 1
+2 `clearBit` 0 = 2
+2 `clearBit` 1 = 0
+2 `clearBit` 2 = 2
+2 `clearBit` 3 = 2
+2 `clearBit` 32 = 2
+2 `clearBit` 64 = 2
+3 `clearBit` 0 = 2
+3 `clearBit` 1 = 1
+3 `clearBit` 2 = 3
+3 `clearBit` 3 = 3
+3 `clearBit` 32 = 3
+3 `clearBit` 64 = 3
+#
+65533 `complementBit` 0 = 65532
+65533 `complementBit` 1 = 65535
+65533 `complementBit` 2 = 65529
+65533 `complementBit` 3 = 65525
+65533 `complementBit` 32 = 65533
+65533 `complementBit` 64 = 65533
+65534 `complementBit` 0 = 65535
+65534 `complementBit` 1 = 65532
+65534 `complementBit` 2 = 65530
+65534 `complementBit` 3 = 65526
+65534 `complementBit` 32 = 65534
+65534 `complementBit` 64 = 65534
+65535 `complementBit` 0 = 65534
+65535 `complementBit` 1 = 65533
+65535 `complementBit` 2 = 65531
+65535 `complementBit` 3 = 65527
+65535 `complementBit` 32 = 65535
+65535 `complementBit` 64 = 65535
+0 `complementBit` 0 = 1
+0 `complementBit` 1 = 2
+0 `complementBit` 2 = 4
+0 `complementBit` 3 = 8
+0 `complementBit` 32 = 0
+0 `complementBit` 64 = 0
+1 `complementBit` 0 = 0
+1 `complementBit` 1 = 3
+1 `complementBit` 2 = 5
+1 `complementBit` 3 = 9
+1 `complementBit` 32 = 1
+1 `complementBit` 64 = 1
+2 `complementBit` 0 = 3
+2 `complementBit` 1 = 0
+2 `complementBit` 2 = 6
+2 `complementBit` 3 = 10
+2 `complementBit` 32 = 2
+2 `complementBit` 64 = 2
+3 `complementBit` 0 = 2
+3 `complementBit` 1 = 1
+3 `complementBit` 2 = 7
+3 `complementBit` 3 = 11
+3 `complementBit` 32 = 3
+3 `complementBit` 64 = 3
+#
+65533 `testBit` 0 = True
+65533 `testBit` 1 = False
+65533 `testBit` 2 = True
+65533 `testBit` 3 = True
+65533 `testBit` 32 = False
+65533 `testBit` 64 = False
+65534 `testBit` 0 = False
+65534 `testBit` 1 = True
+65534 `testBit` 2 = True
+65534 `testBit` 3 = True
+65534 `testBit` 32 = False
+65534 `testBit` 64 = False
+65535 `testBit` 0 = True
+65535 `testBit` 1 = True
+65535 `testBit` 2 = True
+65535 `testBit` 3 = True
+65535 `testBit` 32 = False
+65535 `testBit` 64 = False
+0 `testBit` 0 = False
+0 `testBit` 1 = False
+0 `testBit` 2 = False
+0 `testBit` 3 = False
+0 `testBit` 32 = False
+0 `testBit` 64 = False
+1 `testBit` 0 = True
+1 `testBit` 1 = False
+1 `testBit` 2 = False
+1 `testBit` 3 = False
+1 `testBit` 32 = False
+1 `testBit` 64 = False
+2 `testBit` 0 = False
+2 `testBit` 1 = True
+2 `testBit` 2 = False
+2 `testBit` 3 = False
+2 `testBit` 32 = False
+2 `testBit` 64 = False
+3 `testBit` 0 = True
+3 `testBit` 1 = True
+3 `testBit` 2 = False
+3 `testBit` 3 = False
+3 `testBit` 32 = False
+3 `testBit` 64 = False
+#
+bitSize 65533 = 16
+bitSize 65534 = 16
+bitSize 65535 = 16
+bitSize 0 = 16
+bitSize 1 = 16
+bitSize 2 = 16
+bitSize 3 = 16
+#
+isSigned 65533 = False
+isSigned 65534 = False
+isSigned 65535 = False
+isSigned 0 = False
+isSigned 1 = False
+isSigned 2 = False
+isSigned 3 = False
+#
+--------------------------------
+--Testing Word32
+--------------------------------
+testBounded
+(4294967295,0,1)
+(4294967294,4294967295,0)
+testEnum
+[0,1,2,3,4,5,6,7,8,9]
+[0,2,4,6,8,10,12,14,16,18]
+[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
+[0,2,4,6,8,10,12,14,16,18,20]
+testReadShow
+[4294967293,4294967294,4294967295,0,1,2,3]
+[4294967293,4294967294,4294967295,0,1,2,3]
+testEq
+4294967293 == 4294967293 = True
+4294967293 == 4294967294 = False
+4294967293 == 4294967295 = False
+4294967293 == 0 = False
+4294967293 == 1 = False
+4294967293 == 2 = False
+4294967293 == 3 = False
+4294967294 == 4294967293 = False
+4294967294 == 4294967294 = True
+4294967294 == 4294967295 = False
+4294967294 == 0 = False
+4294967294 == 1 = False
+4294967294 == 2 = False
+4294967294 == 3 = False
+4294967295 == 4294967293 = False
+4294967295 == 4294967294 = False
+4294967295 == 4294967295 = True
+4294967295 == 0 = False
+4294967295 == 1 = False
+4294967295 == 2 = False
+4294967295 == 3 = False
+0 == 4294967293 = False
+0 == 4294967294 = False
+0 == 4294967295 = False
+0 == 0 = True
+0 == 1 = False
+0 == 2 = False
+0 == 3 = False
+1 == 4294967293 = False
+1 == 4294967294 = False
+1 == 4294967295 = False
+1 == 0 = False
+1 == 1 = True
+1 == 2 = False
+1 == 3 = False
+2 == 4294967293 = False
+2 == 4294967294 = False
+2 == 4294967295 = False
+2 == 0 = False
+2 == 1 = False
+2 == 2 = True
+2 == 3 = False
+3 == 4294967293 = False
+3 == 4294967294 = False
+3 == 4294967295 = False
+3 == 0 = False
+3 == 1 = False
+3 == 2 = False
+3 == 3 = True
+#
+4294967293 /= 4294967293 = False
+4294967293 /= 4294967294 = True
+4294967293 /= 4294967295 = True
+4294967293 /= 0 = True
+4294967293 /= 1 = True
+4294967293 /= 2 = True
+4294967293 /= 3 = True
+4294967294 /= 4294967293 = True
+4294967294 /= 4294967294 = False
+4294967294 /= 4294967295 = True
+4294967294 /= 0 = True
+4294967294 /= 1 = True
+4294967294 /= 2 = True
+4294967294 /= 3 = True
+4294967295 /= 4294967293 = True
+4294967295 /= 4294967294 = True
+4294967295 /= 4294967295 = False
+4294967295 /= 0 = True
+4294967295 /= 1 = True
+4294967295 /= 2 = True
+4294967295 /= 3 = True
+0 /= 4294967293 = True
+0 /= 4294967294 = True
+0 /= 4294967295 = True
+0 /= 0 = False
+0 /= 1 = True
+0 /= 2 = True
+0 /= 3 = True
+1 /= 4294967293 = True
+1 /= 4294967294 = True
+1 /= 4294967295 = True
+1 /= 0 = True
+1 /= 1 = False
+1 /= 2 = True
+1 /= 3 = True
+2 /= 4294967293 = True
+2 /= 4294967294 = True
+2 /= 4294967295 = True
+2 /= 0 = True
+2 /= 1 = True
+2 /= 2 = False
+2 /= 3 = True
+3 /= 4294967293 = True
+3 /= 4294967294 = True
+3 /= 4294967295 = True
+3 /= 0 = True
+3 /= 1 = True
+3 /= 2 = True
+3 /= 3 = False
+#
+testOrd
+4294967293 <= 4294967293 = True
+4294967293 <= 4294967294 = True
+4294967293 <= 4294967295 = True
+4294967293 <= 0 = False
+4294967293 <= 1 = False
+4294967293 <= 2 = False
+4294967293 <= 3 = False
+4294967294 <= 4294967293 = False
+4294967294 <= 4294967294 = True
+4294967294 <= 4294967295 = True
+4294967294 <= 0 = False
+4294967294 <= 1 = False
+4294967294 <= 2 = False
+4294967294 <= 3 = False
+4294967295 <= 4294967293 = False
+4294967295 <= 4294967294 = False
+4294967295 <= 4294967295 = True
+4294967295 <= 0 = False
+4294967295 <= 1 = False
+4294967295 <= 2 = False
+4294967295 <= 3 = False
+0 <= 4294967293 = True
+0 <= 4294967294 = True
+0 <= 4294967295 = True
+0 <= 0 = True
+0 <= 1 = True
+0 <= 2 = True
+0 <= 3 = True
+1 <= 4294967293 = True
+1 <= 4294967294 = True
+1 <= 4294967295 = True
+1 <= 0 = False
+1 <= 1 = True
+1 <= 2 = True
+1 <= 3 = True
+2 <= 4294967293 = True
+2 <= 4294967294 = True
+2 <= 4294967295 = True
+2 <= 0 = False
+2 <= 1 = False
+2 <= 2 = True
+2 <= 3 = True
+3 <= 4294967293 = True
+3 <= 4294967294 = True
+3 <= 4294967295 = True
+3 <= 0 = False
+3 <= 1 = False
+3 <= 2 = False
+3 <= 3 = True
+#
+4294967293 <  4294967293 = False
+4294967293 <  4294967294 = True
+4294967293 <  4294967295 = True
+4294967293 <  0 = False
+4294967293 <  1 = False
+4294967293 <  2 = False
+4294967293 <  3 = False
+4294967294 <  4294967293 = False
+4294967294 <  4294967294 = False
+4294967294 <  4294967295 = True
+4294967294 <  0 = False
+4294967294 <  1 = False
+4294967294 <  2 = False
+4294967294 <  3 = False
+4294967295 <  4294967293 = False
+4294967295 <  4294967294 = False
+4294967295 <  4294967295 = False
+4294967295 <  0 = False
+4294967295 <  1 = False
+4294967295 <  2 = False
+4294967295 <  3 = False
+0 <  4294967293 = True
+0 <  4294967294 = True
+0 <  4294967295 = True
+0 <  0 = False
+0 <  1 = True
+0 <  2 = True
+0 <  3 = True
+1 <  4294967293 = True
+1 <  4294967294 = True
+1 <  4294967295 = True
+1 <  0 = False
+1 <  1 = False
+1 <  2 = True
+1 <  3 = True
+2 <  4294967293 = True
+2 <  4294967294 = True
+2 <  4294967295 = True
+2 <  0 = False
+2 <  1 = False
+2 <  2 = False
+2 <  3 = True
+3 <  4294967293 = True
+3 <  4294967294 = True
+3 <  4294967295 = True
+3 <  0 = False
+3 <  1 = False
+3 <  2 = False
+3 <  3 = False
+#
+4294967293 >  4294967293 = False
+4294967293 >  4294967294 = False
+4294967293 >  4294967295 = False
+4294967293 >  0 = True
+4294967293 >  1 = True
+4294967293 >  2 = True
+4294967293 >  3 = True
+4294967294 >  4294967293 = True
+4294967294 >  4294967294 = False
+4294967294 >  4294967295 = False
+4294967294 >  0 = True
+4294967294 >  1 = True
+4294967294 >  2 = True
+4294967294 >  3 = True
+4294967295 >  4294967293 = True
+4294967295 >  4294967294 = True
+4294967295 >  4294967295 = False
+4294967295 >  0 = True
+4294967295 >  1 = True
+4294967295 >  2 = True
+4294967295 >  3 = True
+0 >  4294967293 = False
+0 >  4294967294 = False
+0 >  4294967295 = False
+0 >  0 = False
+0 >  1 = False
+0 >  2 = False
+0 >  3 = False
+1 >  4294967293 = False
+1 >  4294967294 = False
+1 >  4294967295 = False
+1 >  0 = True
+1 >  1 = False
+1 >  2 = False
+1 >  3 = False
+2 >  4294967293 = False
+2 >  4294967294 = False
+2 >  4294967295 = False
+2 >  0 = True
+2 >  1 = True
+2 >  2 = False
+2 >  3 = False
+3 >  4294967293 = False
+3 >  4294967294 = False
+3 >  4294967295 = False
+3 >  0 = True
+3 >  1 = True
+3 >  2 = True
+3 >  3 = False
+#
+4294967293 >= 4294967293 = True
+4294967293 >= 4294967294 = False
+4294967293 >= 4294967295 = False
+4294967293 >= 0 = True
+4294967293 >= 1 = True
+4294967293 >= 2 = True
+4294967293 >= 3 = True
+4294967294 >= 4294967293 = True
+4294967294 >= 4294967294 = True
+4294967294 >= 4294967295 = False
+4294967294 >= 0 = True
+4294967294 >= 1 = True
+4294967294 >= 2 = True
+4294967294 >= 3 = True
+4294967295 >= 4294967293 = True
+4294967295 >= 4294967294 = True
+4294967295 >= 4294967295 = True
+4294967295 >= 0 = True
+4294967295 >= 1 = True
+4294967295 >= 2 = True
+4294967295 >= 3 = True
+0 >= 4294967293 = False
+0 >= 4294967294 = False
+0 >= 4294967295 = False
+0 >= 0 = True
+0 >= 1 = False
+0 >= 2 = False
+0 >= 3 = False
+1 >= 4294967293 = False
+1 >= 4294967294 = False
+1 >= 4294967295 = False
+1 >= 0 = True
+1 >= 1 = True
+1 >= 2 = False
+1 >= 3 = False
+2 >= 4294967293 = False
+2 >= 4294967294 = False
+2 >= 4294967295 = False
+2 >= 0 = True
+2 >= 1 = True
+2 >= 2 = True
+2 >= 3 = False
+3 >= 4294967293 = False
+3 >= 4294967294 = False
+3 >= 4294967295 = False
+3 >= 0 = True
+3 >= 1 = True
+3 >= 2 = True
+3 >= 3 = True
+#
+4294967293 `compare` 4294967293 = EQ
+4294967293 `compare` 4294967294 = LT
+4294967293 `compare` 4294967295 = LT
+4294967293 `compare` 0 = GT
+4294967293 `compare` 1 = GT
+4294967293 `compare` 2 = GT
+4294967293 `compare` 3 = GT
+4294967294 `compare` 4294967293 = GT
+4294967294 `compare` 4294967294 = EQ
+4294967294 `compare` 4294967295 = LT
+4294967294 `compare` 0 = GT
+4294967294 `compare` 1 = GT
+4294967294 `compare` 2 = GT
+4294967294 `compare` 3 = GT
+4294967295 `compare` 4294967293 = GT
+4294967295 `compare` 4294967294 = GT
+4294967295 `compare` 4294967295 = EQ
+4294967295 `compare` 0 = GT
+4294967295 `compare` 1 = GT
+4294967295 `compare` 2 = GT
+4294967295 `compare` 3 = GT
+0 `compare` 4294967293 = LT
+0 `compare` 4294967294 = LT
+0 `compare` 4294967295 = LT
+0 `compare` 0 = EQ
+0 `compare` 1 = LT
+0 `compare` 2 = LT
+0 `compare` 3 = LT
+1 `compare` 4294967293 = LT
+1 `compare` 4294967294 = LT
+1 `compare` 4294967295 = LT
+1 `compare` 0 = GT
+1 `compare` 1 = EQ
+1 `compare` 2 = LT
+1 `compare` 3 = LT
+2 `compare` 4294967293 = LT
+2 `compare` 4294967294 = LT
+2 `compare` 4294967295 = LT
+2 `compare` 0 = GT
+2 `compare` 1 = GT
+2 `compare` 2 = EQ
+2 `compare` 3 = LT
+3 `compare` 4294967293 = LT
+3 `compare` 4294967294 = LT
+3 `compare` 4294967295 = LT
+3 `compare` 0 = GT
+3 `compare` 1 = GT
+3 `compare` 2 = GT
+3 `compare` 3 = EQ
+#
+testNum
+4294967293 + 4294967293 = 4294967290
+4294967293 + 4294967294 = 4294967291
+4294967293 + 4294967295 = 4294967292
+4294967293 + 0 = 4294967293
+4294967293 + 1 = 4294967294
+4294967293 + 2 = 4294967295
+4294967293 + 3 = 0
+4294967294 + 4294967293 = 4294967291
+4294967294 + 4294967294 = 4294967292
+4294967294 + 4294967295 = 4294967293
+4294967294 + 0 = 4294967294
+4294967294 + 1 = 4294967295
+4294967294 + 2 = 0
+4294967294 + 3 = 1
+4294967295 + 4294967293 = 4294967292
+4294967295 + 4294967294 = 4294967293
+4294967295 + 4294967295 = 4294967294
+4294967295 + 0 = 4294967295
+4294967295 + 1 = 0
+4294967295 + 2 = 1
+4294967295 + 3 = 2
+0 + 4294967293 = 4294967293
+0 + 4294967294 = 4294967294
+0 + 4294967295 = 4294967295
+0 + 0 = 0
+0 + 1 = 1
+0 + 2 = 2
+0 + 3 = 3
+1 + 4294967293 = 4294967294
+1 + 4294967294 = 4294967295
+1 + 4294967295 = 0
+1 + 0 = 1
+1 + 1 = 2
+1 + 2 = 3
+1 + 3 = 4
+2 + 4294967293 = 4294967295
+2 + 4294967294 = 0
+2 + 4294967295 = 1
+2 + 0 = 2
+2 + 1 = 3
+2 + 2 = 4
+2 + 3 = 5
+3 + 4294967293 = 0
+3 + 4294967294 = 1
+3 + 4294967295 = 2
+3 + 0 = 3
+3 + 1 = 4
+3 + 2 = 5
+3 + 3 = 6
+#
+4294967293 - 4294967293 = 0
+4294967293 - 4294967294 = 4294967295
+4294967293 - 4294967295 = 4294967294
+4294967293 - 0 = 4294967293
+4294967293 - 1 = 4294967292
+4294967293 - 2 = 4294967291
+4294967293 - 3 = 4294967290
+4294967294 - 4294967293 = 1
+4294967294 - 4294967294 = 0
+4294967294 - 4294967295 = 4294967295
+4294967294 - 0 = 4294967294
+4294967294 - 1 = 4294967293
+4294967294 - 2 = 4294967292
+4294967294 - 3 = 4294967291
+4294967295 - 4294967293 = 2
+4294967295 - 4294967294 = 1
+4294967295 - 4294967295 = 0
+4294967295 - 0 = 4294967295
+4294967295 - 1 = 4294967294
+4294967295 - 2 = 4294967293
+4294967295 - 3 = 4294967292
+0 - 4294967293 = 3
+0 - 4294967294 = 2
+0 - 4294967295 = 1
+0 - 0 = 0
+0 - 1 = 4294967295
+0 - 2 = 4294967294
+0 - 3 = 4294967293
+1 - 4294967293 = 4
+1 - 4294967294 = 3
+1 - 4294967295 = 2
+1 - 0 = 1
+1 - 1 = 0
+1 - 2 = 4294967295
+1 - 3 = 4294967294
+2 - 4294967293 = 5
+2 - 4294967294 = 4
+2 - 4294967295 = 3
+2 - 0 = 2
+2 - 1 = 1
+2 - 2 = 0
+2 - 3 = 4294967295
+3 - 4294967293 = 6
+3 - 4294967294 = 5
+3 - 4294967295 = 4
+3 - 0 = 3
+3 - 1 = 2
+3 - 2 = 1
+3 - 3 = 0
+#
+4294967293 * 4294967293 = 9
+4294967293 * 4294967294 = 6
+4294967293 * 4294967295 = 3
+4294967293 * 0 = 0
+4294967293 * 1 = 4294967293
+4294967293 * 2 = 4294967290
+4294967293 * 3 = 4294967287
+4294967294 * 4294967293 = 6
+4294967294 * 4294967294 = 4
+4294967294 * 4294967295 = 2
+4294967294 * 0 = 0
+4294967294 * 1 = 4294967294
+4294967294 * 2 = 4294967292
+4294967294 * 3 = 4294967290
+4294967295 * 4294967293 = 3
+4294967295 * 4294967294 = 2
+4294967295 * 4294967295 = 1
+4294967295 * 0 = 0
+4294967295 * 1 = 4294967295
+4294967295 * 2 = 4294967294
+4294967295 * 3 = 4294967293
+0 * 4294967293 = 0
+0 * 4294967294 = 0
+0 * 4294967295 = 0
+0 * 0 = 0
+0 * 1 = 0
+0 * 2 = 0
+0 * 3 = 0
+1 * 4294967293 = 4294967293
+1 * 4294967294 = 4294967294
+1 * 4294967295 = 4294967295
+1 * 0 = 0
+1 * 1 = 1
+1 * 2 = 2
+1 * 3 = 3
+2 * 4294967293 = 4294967290
+2 * 4294967294 = 4294967292
+2 * 4294967295 = 4294967294
+2 * 0 = 0
+2 * 1 = 2
+2 * 2 = 4
+2 * 3 = 6
+3 * 4294967293 = 4294967287
+3 * 4294967294 = 4294967290
+3 * 4294967295 = 4294967293
+3 * 0 = 0
+3 * 1 = 3
+3 * 2 = 6
+3 * 3 = 9
+#
+negate 4294967293 = 3
+negate 4294967294 = 2
+negate 4294967295 = 1
+negate 0 = 0
+negate 1 = 4294967295
+negate 2 = 4294967294
+negate 3 = 4294967293
+#
+testReal
+toRational 4294967293 = 4294967293%1
+toRational 4294967294 = 4294967294%1
+toRational 4294967295 = 4294967295%1
+toRational 0 = 0%1
+toRational 1 = 1%1
+toRational 2 = 2%1
+toRational 3 = 3%1
+#
+testIntegral
+4294967293 `divMod`  4294967293 = (1,0)
+4294967293 `divMod`  4294967294 = (0,4294967293)
+4294967293 `divMod`  4294967295 = (0,4294967293)
+4294967293 `divMod`  0 = divide by zero
+4294967293 `divMod`  1 = (4294967293,0)
+4294967293 `divMod`  2 = (2147483646,1)
+4294967293 `divMod`  3 = (1431655764,1)
+4294967294 `divMod`  4294967293 = (1,1)
+4294967294 `divMod`  4294967294 = (1,0)
+4294967294 `divMod`  4294967295 = (0,4294967294)
+4294967294 `divMod`  0 = divide by zero
+4294967294 `divMod`  1 = (4294967294,0)
+4294967294 `divMod`  2 = (2147483647,0)
+4294967294 `divMod`  3 = (1431655764,2)
+4294967295 `divMod`  4294967293 = (1,2)
+4294967295 `divMod`  4294967294 = (1,1)
+4294967295 `divMod`  4294967295 = (1,0)
+4294967295 `divMod`  0 = divide by zero
+4294967295 `divMod`  1 = (4294967295,0)
+4294967295 `divMod`  2 = (2147483647,1)
+4294967295 `divMod`  3 = (1431655765,0)
+0 `divMod`  4294967293 = (0,0)
+0 `divMod`  4294967294 = (0,0)
+0 `divMod`  4294967295 = (0,0)
+0 `divMod`  0 = divide by zero
+0 `divMod`  1 = (0,0)
+0 `divMod`  2 = (0,0)
+0 `divMod`  3 = (0,0)
+1 `divMod`  4294967293 = (0,1)
+1 `divMod`  4294967294 = (0,1)
+1 `divMod`  4294967295 = (0,1)
+1 `divMod`  0 = divide by zero
+1 `divMod`  1 = (1,0)
+1 `divMod`  2 = (0,1)
+1 `divMod`  3 = (0,1)
+2 `divMod`  4294967293 = (0,2)
+2 `divMod`  4294967294 = (0,2)
+2 `divMod`  4294967295 = (0,2)
+2 `divMod`  0 = divide by zero
+2 `divMod`  1 = (2,0)
+2 `divMod`  2 = (1,0)
+2 `divMod`  3 = (0,2)
+3 `divMod`  4294967293 = (0,3)
+3 `divMod`  4294967294 = (0,3)
+3 `divMod`  4294967295 = (0,3)
+3 `divMod`  0 = divide by zero
+3 `divMod`  1 = (3,0)
+3 `divMod`  2 = (1,1)
+3 `divMod`  3 = (1,0)
+#
+4294967293 `div`     4294967293 = 1
+4294967293 `div`     4294967294 = 0
+4294967293 `div`     4294967295 = 0
+4294967293 `div`     0 = divide by zero
+4294967293 `div`     1 = 4294967293
+4294967293 `div`     2 = 2147483646
+4294967293 `div`     3 = 1431655764
+4294967294 `div`     4294967293 = 1
+4294967294 `div`     4294967294 = 1
+4294967294 `div`     4294967295 = 0
+4294967294 `div`     0 = divide by zero
+4294967294 `div`     1 = 4294967294
+4294967294 `div`     2 = 2147483647
+4294967294 `div`     3 = 1431655764
+4294967295 `div`     4294967293 = 1
+4294967295 `div`     4294967294 = 1
+4294967295 `div`     4294967295 = 1
+4294967295 `div`     0 = divide by zero
+4294967295 `div`     1 = 4294967295
+4294967295 `div`     2 = 2147483647
+4294967295 `div`     3 = 1431655765
+0 `div`     4294967293 = 0
+0 `div`     4294967294 = 0
+0 `div`     4294967295 = 0
+0 `div`     0 = divide by zero
+0 `div`     1 = 0
+0 `div`     2 = 0
+0 `div`     3 = 0
+1 `div`     4294967293 = 0
+1 `div`     4294967294 = 0
+1 `div`     4294967295 = 0
+1 `div`     0 = divide by zero
+1 `div`     1 = 1
+1 `div`     2 = 0
+1 `div`     3 = 0
+2 `div`     4294967293 = 0
+2 `div`     4294967294 = 0
+2 `div`     4294967295 = 0
+2 `div`     0 = divide by zero
+2 `div`     1 = 2
+2 `div`     2 = 1
+2 `div`     3 = 0
+3 `div`     4294967293 = 0
+3 `div`     4294967294 = 0
+3 `div`     4294967295 = 0
+3 `div`     0 = divide by zero
+3 `div`     1 = 3
+3 `div`     2 = 1
+3 `div`     3 = 1
+#
+4294967293 `mod`     4294967293 = 0
+4294967293 `mod`     4294967294 = 4294967293
+4294967293 `mod`     4294967295 = 4294967293
+4294967293 `mod`     0 = divide by zero
+4294967293 `mod`     1 = 0
+4294967293 `mod`     2 = 1
+4294967293 `mod`     3 = 1
+4294967294 `mod`     4294967293 = 1
+4294967294 `mod`     4294967294 = 0
+4294967294 `mod`     4294967295 = 4294967294
+4294967294 `mod`     0 = divide by zero
+4294967294 `mod`     1 = 0
+4294967294 `mod`     2 = 0
+4294967294 `mod`     3 = 2
+4294967295 `mod`     4294967293 = 2
+4294967295 `mod`     4294967294 = 1
+4294967295 `mod`     4294967295 = 0
+4294967295 `mod`     0 = divide by zero
+4294967295 `mod`     1 = 0
+4294967295 `mod`     2 = 1
+4294967295 `mod`     3 = 0
+0 `mod`     4294967293 = 0
+0 `mod`     4294967294 = 0
+0 `mod`     4294967295 = 0
+0 `mod`     0 = divide by zero
+0 `mod`     1 = 0
+0 `mod`     2 = 0
+0 `mod`     3 = 0
+1 `mod`     4294967293 = 1
+1 `mod`     4294967294 = 1
+1 `mod`     4294967295 = 1
+1 `mod`     0 = divide by zero
+1 `mod`     1 = 0
+1 `mod`     2 = 1
+1 `mod`     3 = 1
+2 `mod`     4294967293 = 2
+2 `mod`     4294967294 = 2
+2 `mod`     4294967295 = 2
+2 `mod`     0 = divide by zero
+2 `mod`     1 = 0
+2 `mod`     2 = 0
+2 `mod`     3 = 2
+3 `mod`     4294967293 = 3
+3 `mod`     4294967294 = 3
+3 `mod`     4294967295 = 3
+3 `mod`     0 = divide by zero
+3 `mod`     1 = 0
+3 `mod`     2 = 1
+3 `mod`     3 = 0
+#
+4294967293 `quotRem` 4294967293 = (1,0)
+4294967293 `quotRem` 4294967294 = (0,4294967293)
+4294967293 `quotRem` 4294967295 = (0,4294967293)
+4294967293 `quotRem` 0 = divide by zero
+4294967293 `quotRem` 1 = (4294967293,0)
+4294967293 `quotRem` 2 = (2147483646,1)
+4294967293 `quotRem` 3 = (1431655764,1)
+4294967294 `quotRem` 4294967293 = (1,1)
+4294967294 `quotRem` 4294967294 = (1,0)
+4294967294 `quotRem` 4294967295 = (0,4294967294)
+4294967294 `quotRem` 0 = divide by zero
+4294967294 `quotRem` 1 = (4294967294,0)
+4294967294 `quotRem` 2 = (2147483647,0)
+4294967294 `quotRem` 3 = (1431655764,2)
+4294967295 `quotRem` 4294967293 = (1,2)
+4294967295 `quotRem` 4294967294 = (1,1)
+4294967295 `quotRem` 4294967295 = (1,0)
+4294967295 `quotRem` 0 = divide by zero
+4294967295 `quotRem` 1 = (4294967295,0)
+4294967295 `quotRem` 2 = (2147483647,1)
+4294967295 `quotRem` 3 = (1431655765,0)
+0 `quotRem` 4294967293 = (0,0)
+0 `quotRem` 4294967294 = (0,0)
+0 `quotRem` 4294967295 = (0,0)
+0 `quotRem` 0 = divide by zero
+0 `quotRem` 1 = (0,0)
+0 `quotRem` 2 = (0,0)
+0 `quotRem` 3 = (0,0)
+1 `quotRem` 4294967293 = (0,1)
+1 `quotRem` 4294967294 = (0,1)
+1 `quotRem` 4294967295 = (0,1)
+1 `quotRem` 0 = divide by zero
+1 `quotRem` 1 = (1,0)
+1 `quotRem` 2 = (0,1)
+1 `quotRem` 3 = (0,1)
+2 `quotRem` 4294967293 = (0,2)
+2 `quotRem` 4294967294 = (0,2)
+2 `quotRem` 4294967295 = (0,2)
+2 `quotRem` 0 = divide by zero
+2 `quotRem` 1 = (2,0)
+2 `quotRem` 2 = (1,0)
+2 `quotRem` 3 = (0,2)
+3 `quotRem` 4294967293 = (0,3)
+3 `quotRem` 4294967294 = (0,3)
+3 `quotRem` 4294967295 = (0,3)
+3 `quotRem` 0 = divide by zero
+3 `quotRem` 1 = (3,0)
+3 `quotRem` 2 = (1,1)
+3 `quotRem` 3 = (1,0)
+#
+4294967293 `quot`    4294967293 = 1
+4294967293 `quot`    4294967294 = 0
+4294967293 `quot`    4294967295 = 0
+4294967293 `quot`    0 = divide by zero
+4294967293 `quot`    1 = 4294967293
+4294967293 `quot`    2 = 2147483646
+4294967293 `quot`    3 = 1431655764
+4294967294 `quot`    4294967293 = 1
+4294967294 `quot`    4294967294 = 1
+4294967294 `quot`    4294967295 = 0
+4294967294 `quot`    0 = divide by zero
+4294967294 `quot`    1 = 4294967294
+4294967294 `quot`    2 = 2147483647
+4294967294 `quot`    3 = 1431655764
+4294967295 `quot`    4294967293 = 1
+4294967295 `quot`    4294967294 = 1
+4294967295 `quot`    4294967295 = 1
+4294967295 `quot`    0 = divide by zero
+4294967295 `quot`    1 = 4294967295
+4294967295 `quot`    2 = 2147483647
+4294967295 `quot`    3 = 1431655765
+0 `quot`    4294967293 = 0
+0 `quot`    4294967294 = 0
+0 `quot`    4294967295 = 0
+0 `quot`    0 = divide by zero
+0 `quot`    1 = 0
+0 `quot`    2 = 0
+0 `quot`    3 = 0
+1 `quot`    4294967293 = 0
+1 `quot`    4294967294 = 0
+1 `quot`    4294967295 = 0
+1 `quot`    0 = divide by zero
+1 `quot`    1 = 1
+1 `quot`    2 = 0
+1 `quot`    3 = 0
+2 `quot`    4294967293 = 0
+2 `quot`    4294967294 = 0
+2 `quot`    4294967295 = 0
+2 `quot`    0 = divide by zero
+2 `quot`    1 = 2
+2 `quot`    2 = 1
+2 `quot`    3 = 0
+3 `quot`    4294967293 = 0
+3 `quot`    4294967294 = 0
+3 `quot`    4294967295 = 0
+3 `quot`    0 = divide by zero
+3 `quot`    1 = 3
+3 `quot`    2 = 1
+3 `quot`    3 = 1
+#
+4294967293 `rem`     4294967293 = 0
+4294967293 `rem`     4294967294 = 4294967293
+4294967293 `rem`     4294967295 = 4294967293
+4294967293 `rem`     0 = divide by zero
+4294967293 `rem`     1 = 0
+4294967293 `rem`     2 = 1
+4294967293 `rem`     3 = 1
+4294967294 `rem`     4294967293 = 1
+4294967294 `rem`     4294967294 = 0
+4294967294 `rem`     4294967295 = 4294967294
+4294967294 `rem`     0 = divide by zero
+4294967294 `rem`     1 = 0
+4294967294 `rem`     2 = 0
+4294967294 `rem`     3 = 2
+4294967295 `rem`     4294967293 = 2
+4294967295 `rem`     4294967294 = 1
+4294967295 `rem`     4294967295 = 0
+4294967295 `rem`     0 = divide by zero
+4294967295 `rem`     1 = 0
+4294967295 `rem`     2 = 1
+4294967295 `rem`     3 = 0
+0 `rem`     4294967293 = 0
+0 `rem`     4294967294 = 0
+0 `rem`     4294967295 = 0
+0 `rem`     0 = divide by zero
+0 `rem`     1 = 0
+0 `rem`     2 = 0
+0 `rem`     3 = 0
+1 `rem`     4294967293 = 1
+1 `rem`     4294967294 = 1
+1 `rem`     4294967295 = 1
+1 `rem`     0 = divide by zero
+1 `rem`     1 = 0
+1 `rem`     2 = 1
+1 `rem`     3 = 1
+2 `rem`     4294967293 = 2
+2 `rem`     4294967294 = 2
+2 `rem`     4294967295 = 2
+2 `rem`     0 = divide by zero
+2 `rem`     1 = 0
+2 `rem`     2 = 0
+2 `rem`     3 = 2
+3 `rem`     4294967293 = 3
+3 `rem`     4294967294 = 3
+3 `rem`     4294967295 = 3
+3 `rem`     0 = divide by zero
+3 `rem`     1 = 0
+3 `rem`     2 = 1
+3 `rem`     3 = 0
+#
+testConversions
+Integer : [0,0,4294967295]
+Int     : [0,0,4294967295]
+Int8    : [0,0,-1]
+Int16   : [0,0,-1]
+Int32   : [0,0,-1]
+Int64   : [0,0,4294967295]
+Word8   : [0,0,255]
+Word16  : [0,0,65535]
+Word32  : [0,0,4294967295]
+Word64  : [0,0,4294967295]
+testBits
+4294967293 .&.   4294967293 = 4294967293
+4294967293 .&.   4294967294 = 4294967292
+4294967293 .&.   4294967295 = 4294967293
+4294967293 .&.   0 = 0
+4294967293 .&.   1 = 1
+4294967293 .&.   2 = 0
+4294967293 .&.   3 = 1
+4294967294 .&.   4294967293 = 4294967292
+4294967294 .&.   4294967294 = 4294967294
+4294967294 .&.   4294967295 = 4294967294
+4294967294 .&.   0 = 0
+4294967294 .&.   1 = 0
+4294967294 .&.   2 = 2
+4294967294 .&.   3 = 2
+4294967295 .&.   4294967293 = 4294967293
+4294967295 .&.   4294967294 = 4294967294
+4294967295 .&.   4294967295 = 4294967295
+4294967295 .&.   0 = 0
+4294967295 .&.   1 = 1
+4294967295 .&.   2 = 2
+4294967295 .&.   3 = 3
+0 .&.   4294967293 = 0
+0 .&.   4294967294 = 0
+0 .&.   4294967295 = 0
+0 .&.   0 = 0
+0 .&.   1 = 0
+0 .&.   2 = 0
+0 .&.   3 = 0
+1 .&.   4294967293 = 1
+1 .&.   4294967294 = 0
+1 .&.   4294967295 = 1
+1 .&.   0 = 0
+1 .&.   1 = 1
+1 .&.   2 = 0
+1 .&.   3 = 1
+2 .&.   4294967293 = 0
+2 .&.   4294967294 = 2
+2 .&.   4294967295 = 2
+2 .&.   0 = 0
+2 .&.   1 = 0
+2 .&.   2 = 2
+2 .&.   3 = 2
+3 .&.   4294967293 = 1
+3 .&.   4294967294 = 2
+3 .&.   4294967295 = 3
+3 .&.   0 = 0
+3 .&.   1 = 1
+3 .&.   2 = 2
+3 .&.   3 = 3
+#
+4294967293 .|.   4294967293 = 4294967293
+4294967293 .|.   4294967294 = 4294967295
+4294967293 .|.   4294967295 = 4294967295
+4294967293 .|.   0 = 4294967293
+4294967293 .|.   1 = 4294967293
+4294967293 .|.   2 = 4294967295
+4294967293 .|.   3 = 4294967295
+4294967294 .|.   4294967293 = 4294967295
+4294967294 .|.   4294967294 = 4294967294
+4294967294 .|.   4294967295 = 4294967295
+4294967294 .|.   0 = 4294967294
+4294967294 .|.   1 = 4294967295
+4294967294 .|.   2 = 4294967294
+4294967294 .|.   3 = 4294967295
+4294967295 .|.   4294967293 = 4294967295
+4294967295 .|.   4294967294 = 4294967295
+4294967295 .|.   4294967295 = 4294967295
+4294967295 .|.   0 = 4294967295
+4294967295 .|.   1 = 4294967295
+4294967295 .|.   2 = 4294967295
+4294967295 .|.   3 = 4294967295
+0 .|.   4294967293 = 4294967293
+0 .|.   4294967294 = 4294967294
+0 .|.   4294967295 = 4294967295
+0 .|.   0 = 0
+0 .|.   1 = 1
+0 .|.   2 = 2
+0 .|.   3 = 3
+1 .|.   4294967293 = 4294967293
+1 .|.   4294967294 = 4294967295
+1 .|.   4294967295 = 4294967295
+1 .|.   0 = 1
+1 .|.   1 = 1
+1 .|.   2 = 3
+1 .|.   3 = 3
+2 .|.   4294967293 = 4294967295
+2 .|.   4294967294 = 4294967294
+2 .|.   4294967295 = 4294967295
+2 .|.   0 = 2
+2 .|.   1 = 3
+2 .|.   2 = 2
+2 .|.   3 = 3
+3 .|.   4294967293 = 4294967295
+3 .|.   4294967294 = 4294967295
+3 .|.   4294967295 = 4294967295
+3 .|.   0 = 3
+3 .|.   1 = 3
+3 .|.   2 = 3
+3 .|.   3 = 3
+#
+4294967293 `xor` 4294967293 = 0
+4294967293 `xor` 4294967294 = 3
+4294967293 `xor` 4294967295 = 2
+4294967293 `xor` 0 = 4294967293
+4294967293 `xor` 1 = 4294967292
+4294967293 `xor` 2 = 4294967295
+4294967293 `xor` 3 = 4294967294
+4294967294 `xor` 4294967293 = 3
+4294967294 `xor` 4294967294 = 0
+4294967294 `xor` 4294967295 = 1
+4294967294 `xor` 0 = 4294967294
+4294967294 `xor` 1 = 4294967295
+4294967294 `xor` 2 = 4294967292
+4294967294 `xor` 3 = 4294967293
+4294967295 `xor` 4294967293 = 2
+4294967295 `xor` 4294967294 = 1
+4294967295 `xor` 4294967295 = 0
+4294967295 `xor` 0 = 4294967295
+4294967295 `xor` 1 = 4294967294
+4294967295 `xor` 2 = 4294967293
+4294967295 `xor` 3 = 4294967292
+0 `xor` 4294967293 = 4294967293
+0 `xor` 4294967294 = 4294967294
+0 `xor` 4294967295 = 4294967295
+0 `xor` 0 = 0
+0 `xor` 1 = 1
+0 `xor` 2 = 2
+0 `xor` 3 = 3
+1 `xor` 4294967293 = 4294967292
+1 `xor` 4294967294 = 4294967295
+1 `xor` 4294967295 = 4294967294
+1 `xor` 0 = 1
+1 `xor` 1 = 0
+1 `xor` 2 = 3
+1 `xor` 3 = 2
+2 `xor` 4294967293 = 4294967295
+2 `xor` 4294967294 = 4294967292
+2 `xor` 4294967295 = 4294967293
+2 `xor` 0 = 2
+2 `xor` 1 = 3
+2 `xor` 2 = 0
+2 `xor` 3 = 1
+3 `xor` 4294967293 = 4294967294
+3 `xor` 4294967294 = 4294967293
+3 `xor` 4294967295 = 4294967292
+3 `xor` 0 = 3
+3 `xor` 1 = 2
+3 `xor` 2 = 1
+3 `xor` 3 = 0
+#
+complement 4294967293 = 2
+complement 4294967294 = 1
+complement 4294967295 = 0
+complement 0 = 4294967295
+complement 1 = 4294967294
+complement 2 = 4294967293
+complement 3 = 4294967292
+#
+4294967293 `shiftL` 0 = 4294967293
+4294967293 `shiftL` 1 = 4294967290
+4294967293 `shiftL` 2 = 4294967284
+4294967293 `shiftL` 3 = 4294967272
+4294967293 `shiftL` 32 = 0
+4294967293 `shiftL` 64 = 0
+4294967294 `shiftL` 0 = 4294967294
+4294967294 `shiftL` 1 = 4294967292
+4294967294 `shiftL` 2 = 4294967288
+4294967294 `shiftL` 3 = 4294967280
+4294967294 `shiftL` 32 = 0
+4294967294 `shiftL` 64 = 0
+4294967295 `shiftL` 0 = 4294967295
+4294967295 `shiftL` 1 = 4294967294
+4294967295 `shiftL` 2 = 4294967292
+4294967295 `shiftL` 3 = 4294967288
+4294967295 `shiftL` 32 = 0
+4294967295 `shiftL` 64 = 0
+0 `shiftL` 0 = 0
+0 `shiftL` 1 = 0
+0 `shiftL` 2 = 0
+0 `shiftL` 3 = 0
+0 `shiftL` 32 = 0
+0 `shiftL` 64 = 0
+1 `shiftL` 0 = 1
+1 `shiftL` 1 = 2
+1 `shiftL` 2 = 4
+1 `shiftL` 3 = 8
+1 `shiftL` 32 = 0
+1 `shiftL` 64 = 0
+2 `shiftL` 0 = 2
+2 `shiftL` 1 = 4
+2 `shiftL` 2 = 8
+2 `shiftL` 3 = 16
+2 `shiftL` 32 = 0
+2 `shiftL` 64 = 0
+3 `shiftL` 0 = 3
+3 `shiftL` 1 = 6
+3 `shiftL` 2 = 12
+3 `shiftL` 3 = 24
+3 `shiftL` 32 = 0
+3 `shiftL` 64 = 0
+#
+4294967293 `shiftR` 0 = 4294967293
+4294967293 `shiftR` 1 = 2147483646
+4294967293 `shiftR` 2 = 1073741823
+4294967293 `shiftR` 3 = 536870911
+4294967293 `shiftR` 32 = 0
+4294967293 `shiftR` 64 = 0
+4294967294 `shiftR` 0 = 4294967294
+4294967294 `shiftR` 1 = 2147483647
+4294967294 `shiftR` 2 = 1073741823
+4294967294 `shiftR` 3 = 536870911
+4294967294 `shiftR` 32 = 0
+4294967294 `shiftR` 64 = 0
+4294967295 `shiftR` 0 = 4294967295
+4294967295 `shiftR` 1 = 2147483647
+4294967295 `shiftR` 2 = 1073741823
+4294967295 `shiftR` 3 = 536870911
+4294967295 `shiftR` 32 = 0
+4294967295 `shiftR` 64 = 0
+0 `shiftR` 0 = 0
+0 `shiftR` 1 = 0
+0 `shiftR` 2 = 0
+0 `shiftR` 3 = 0
+0 `shiftR` 32 = 0
+0 `shiftR` 64 = 0
+1 `shiftR` 0 = 1
+1 `shiftR` 1 = 0
+1 `shiftR` 2 = 0
+1 `shiftR` 3 = 0
+1 `shiftR` 32 = 0
+1 `shiftR` 64 = 0
+2 `shiftR` 0 = 2
+2 `shiftR` 1 = 1
+2 `shiftR` 2 = 0
+2 `shiftR` 3 = 0
+2 `shiftR` 32 = 0
+2 `shiftR` 64 = 0
+3 `shiftR` 0 = 3
+3 `shiftR` 1 = 1
+3 `shiftR` 2 = 0
+3 `shiftR` 3 = 0
+3 `shiftR` 32 = 0
+3 `shiftR` 64 = 0
+#
+4294967293 `rotate` -3 = 3221225471
+4294967293 `rotate` -2 = 2147483647
+4294967293 `rotate` -1 = 4294967294
+4294967293 `rotate` 0 = 4294967293
+4294967293 `rotate` 1 = 4294967291
+4294967293 `rotate` 2 = 4294967287
+4294967293 `rotate` 3 = 4294967279
+4294967294 `rotate` -3 = 3758096383
+4294967294 `rotate` -2 = 3221225471
+4294967294 `rotate` -1 = 2147483647
+4294967294 `rotate` 0 = 4294967294
+4294967294 `rotate` 1 = 4294967293
+4294967294 `rotate` 2 = 4294967291
+4294967294 `rotate` 3 = 4294967287
+4294967295 `rotate` -3 = 4294967295
+4294967295 `rotate` -2 = 4294967295
+4294967295 `rotate` -1 = 4294967295
+4294967295 `rotate` 0 = 4294967295
+4294967295 `rotate` 1 = 4294967295
+4294967295 `rotate` 2 = 4294967295
+4294967295 `rotate` 3 = 4294967295
+0 `rotate` -3 = 0
+0 `rotate` -2 = 0
+0 `rotate` -1 = 0
+0 `rotate` 0 = 0
+0 `rotate` 1 = 0
+0 `rotate` 2 = 0
+0 `rotate` 3 = 0
+1 `rotate` -3 = 536870912
+1 `rotate` -2 = 1073741824
+1 `rotate` -1 = 2147483648
+1 `rotate` 0 = 1
+1 `rotate` 1 = 2
+1 `rotate` 2 = 4
+1 `rotate` 3 = 8
+2 `rotate` -3 = 1073741824
+2 `rotate` -2 = 2147483648
+2 `rotate` -1 = 1
+2 `rotate` 0 = 2
+2 `rotate` 1 = 4
+2 `rotate` 2 = 8
+2 `rotate` 3 = 16
+3 `rotate` -3 = 1610612736
+3 `rotate` -2 = 3221225472
+3 `rotate` -1 = 2147483649
+3 `rotate` 0 = 3
+3 `rotate` 1 = 6
+3 `rotate` 2 = 12
+3 `rotate` 3 = 24
+#
+bit 0 = 1
+bit 1 = 2
+bit 2 = 4
+bit 3 = 8
+#
+4294967293 `setBit` 0 = 4294967293
+4294967293 `setBit` 1 = 4294967295
+4294967293 `setBit` 2 = 4294967293
+4294967293 `setBit` 3 = 4294967293
+4294967293 `setBit` 32 = 4294967293
+4294967293 `setBit` 64 = 4294967293
+4294967294 `setBit` 0 = 4294967295
+4294967294 `setBit` 1 = 4294967294
+4294967294 `setBit` 2 = 4294967294
+4294967294 `setBit` 3 = 4294967294
+4294967294 `setBit` 32 = 4294967294
+4294967294 `setBit` 64 = 4294967294
+4294967295 `setBit` 0 = 4294967295
+4294967295 `setBit` 1 = 4294967295
+4294967295 `setBit` 2 = 4294967295
+4294967295 `setBit` 3 = 4294967295
+4294967295 `setBit` 32 = 4294967295
+4294967295 `setBit` 64 = 4294967295
+0 `setBit` 0 = 1
+0 `setBit` 1 = 2
+0 `setBit` 2 = 4
+0 `setBit` 3 = 8
+0 `setBit` 32 = 0
+0 `setBit` 64 = 0
+1 `setBit` 0 = 1
+1 `setBit` 1 = 3
+1 `setBit` 2 = 5
+1 `setBit` 3 = 9
+1 `setBit` 32 = 1
+1 `setBit` 64 = 1
+2 `setBit` 0 = 3
+2 `setBit` 1 = 2
+2 `setBit` 2 = 6
+2 `setBit` 3 = 10
+2 `setBit` 32 = 2
+2 `setBit` 64 = 2
+3 `setBit` 0 = 3
+3 `setBit` 1 = 3
+3 `setBit` 2 = 7
+3 `setBit` 3 = 11
+3 `setBit` 32 = 3
+3 `setBit` 64 = 3
+#
+4294967293 `clearBit` 0 = 4294967292
+4294967293 `clearBit` 1 = 4294967293
+4294967293 `clearBit` 2 = 4294967289
+4294967293 `clearBit` 3 = 4294967285
+4294967293 `clearBit` 32 = 4294967293
+4294967293 `clearBit` 64 = 4294967293
+4294967294 `clearBit` 0 = 4294967294
+4294967294 `clearBit` 1 = 4294967292
+4294967294 `clearBit` 2 = 4294967290
+4294967294 `clearBit` 3 = 4294967286
+4294967294 `clearBit` 32 = 4294967294
+4294967294 `clearBit` 64 = 4294967294
+4294967295 `clearBit` 0 = 4294967294
+4294967295 `clearBit` 1 = 4294967293
+4294967295 `clearBit` 2 = 4294967291
+4294967295 `clearBit` 3 = 4294967287
+4294967295 `clearBit` 32 = 4294967295
+4294967295 `clearBit` 64 = 4294967295
+0 `clearBit` 0 = 0
+0 `clearBit` 1 = 0
+0 `clearBit` 2 = 0
+0 `clearBit` 3 = 0
+0 `clearBit` 32 = 0
+0 `clearBit` 64 = 0
+1 `clearBit` 0 = 0
+1 `clearBit` 1 = 1
+1 `clearBit` 2 = 1
+1 `clearBit` 3 = 1
+1 `clearBit` 32 = 1
+1 `clearBit` 64 = 1
+2 `clearBit` 0 = 2
+2 `clearBit` 1 = 0
+2 `clearBit` 2 = 2
+2 `clearBit` 3 = 2
+2 `clearBit` 32 = 2
+2 `clearBit` 64 = 2
+3 `clearBit` 0 = 2
+3 `clearBit` 1 = 1
+3 `clearBit` 2 = 3
+3 `clearBit` 3 = 3
+3 `clearBit` 32 = 3
+3 `clearBit` 64 = 3
+#
+4294967293 `complementBit` 0 = 4294967292
+4294967293 `complementBit` 1 = 4294967295
+4294967293 `complementBit` 2 = 4294967289
+4294967293 `complementBit` 3 = 4294967285
+4294967293 `complementBit` 32 = 4294967293
+4294967293 `complementBit` 64 = 4294967293
+4294967294 `complementBit` 0 = 4294967295
+4294967294 `complementBit` 1 = 4294967292
+4294967294 `complementBit` 2 = 4294967290
+4294967294 `complementBit` 3 = 4294967286
+4294967294 `complementBit` 32 = 4294967294
+4294967294 `complementBit` 64 = 4294967294
+4294967295 `complementBit` 0 = 4294967294
+4294967295 `complementBit` 1 = 4294967293
+4294967295 `complementBit` 2 = 4294967291
+4294967295 `complementBit` 3 = 4294967287
+4294967295 `complementBit` 32 = 4294967295
+4294967295 `complementBit` 64 = 4294967295
+0 `complementBit` 0 = 1
+0 `complementBit` 1 = 2
+0 `complementBit` 2 = 4
+0 `complementBit` 3 = 8
+0 `complementBit` 32 = 0
+0 `complementBit` 64 = 0
+1 `complementBit` 0 = 0
+1 `complementBit` 1 = 3
+1 `complementBit` 2 = 5
+1 `complementBit` 3 = 9
+1 `complementBit` 32 = 1
+1 `complementBit` 64 = 1
+2 `complementBit` 0 = 3
+2 `complementBit` 1 = 0
+2 `complementBit` 2 = 6
+2 `complementBit` 3 = 10
+2 `complementBit` 32 = 2
+2 `complementBit` 64 = 2
+3 `complementBit` 0 = 2
+3 `complementBit` 1 = 1
+3 `complementBit` 2 = 7
+3 `complementBit` 3 = 11
+3 `complementBit` 32 = 3
+3 `complementBit` 64 = 3
+#
+4294967293 `testBit` 0 = True
+4294967293 `testBit` 1 = False
+4294967293 `testBit` 2 = True
+4294967293 `testBit` 3 = True
+4294967293 `testBit` 32 = False
+4294967293 `testBit` 64 = False
+4294967294 `testBit` 0 = False
+4294967294 `testBit` 1 = True
+4294967294 `testBit` 2 = True
+4294967294 `testBit` 3 = True
+4294967294 `testBit` 32 = False
+4294967294 `testBit` 64 = False
+4294967295 `testBit` 0 = True
+4294967295 `testBit` 1 = True
+4294967295 `testBit` 2 = True
+4294967295 `testBit` 3 = True
+4294967295 `testBit` 32 = False
+4294967295 `testBit` 64 = False
+0 `testBit` 0 = False
+0 `testBit` 1 = False
+0 `testBit` 2 = False
+0 `testBit` 3 = False
+0 `testBit` 32 = False
+0 `testBit` 64 = False
+1 `testBit` 0 = True
+1 `testBit` 1 = False
+1 `testBit` 2 = False
+1 `testBit` 3 = False
+1 `testBit` 32 = False
+1 `testBit` 64 = False
+2 `testBit` 0 = False
+2 `testBit` 1 = True
+2 `testBit` 2 = False
+2 `testBit` 3 = False
+2 `testBit` 32 = False
+2 `testBit` 64 = False
+3 `testBit` 0 = True
+3 `testBit` 1 = True
+3 `testBit` 2 = False
+3 `testBit` 3 = False
+3 `testBit` 32 = False
+3 `testBit` 64 = False
+#
+bitSize 4294967293 = 32
+bitSize 4294967294 = 32
+bitSize 4294967295 = 32
+bitSize 0 = 32
+bitSize 1 = 32
+bitSize 2 = 32
+bitSize 3 = 32
+#
+isSigned 4294967293 = False
+isSigned 4294967294 = False
+isSigned 4294967295 = False
+isSigned 0 = False
+isSigned 1 = False
+isSigned 2 = False
+isSigned 3 = False
+#
+--------------------------------
+--Testing Word64
+--------------------------------
+testBounded
+(18446744073709551615,0,1)
+(18446744073709551614,18446744073709551615,0)
+testEnum
+[0,1,2,3,4,5,6,7,8,9]
+[0,2,4,6,8,10,12,14,16,18]
+[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
+[0,2,4,6,8,10,12,14,16,18,20]
+testReadShow
+[18446744073709551613,18446744073709551614,18446744073709551615,0,1,2,3]
+[18446744073709551613,18446744073709551614,18446744073709551615,0,1,2,3]
+testEq
+18446744073709551613 == 18446744073709551613 = True
+18446744073709551613 == 18446744073709551614 = False
+18446744073709551613 == 18446744073709551615 = False
+18446744073709551613 == 0 = False
+18446744073709551613 == 1 = False
+18446744073709551613 == 2 = False
+18446744073709551613 == 3 = False
+18446744073709551614 == 18446744073709551613 = False
+18446744073709551614 == 18446744073709551614 = True
+18446744073709551614 == 18446744073709551615 = False
+18446744073709551614 == 0 = False
+18446744073709551614 == 1 = False
+18446744073709551614 == 2 = False
+18446744073709551614 == 3 = False
+18446744073709551615 == 18446744073709551613 = False
+18446744073709551615 == 18446744073709551614 = False
+18446744073709551615 == 18446744073709551615 = True
+18446744073709551615 == 0 = False
+18446744073709551615 == 1 = False
+18446744073709551615 == 2 = False
+18446744073709551615 == 3 = False
+0 == 18446744073709551613 = False
+0 == 18446744073709551614 = False
+0 == 18446744073709551615 = False
+0 == 0 = True
+0 == 1 = False
+0 == 2 = False
+0 == 3 = False
+1 == 18446744073709551613 = False
+1 == 18446744073709551614 = False
+1 == 18446744073709551615 = False
+1 == 0 = False
+1 == 1 = True
+1 == 2 = False
+1 == 3 = False
+2 == 18446744073709551613 = False
+2 == 18446744073709551614 = False
+2 == 18446744073709551615 = False
+2 == 0 = False
+2 == 1 = False
+2 == 2 = True
+2 == 3 = False
+3 == 18446744073709551613 = False
+3 == 18446744073709551614 = False