diff options
Diffstat (limited to 'testsuite/tests/numeric/should_run/arith011.stdout-mips-sgi-irix')
-rw-r--r-- | testsuite/tests/numeric/should_run/arith011.stdout-mips-sgi-irix | 15138 |
1 files changed, 15138 insertions, 0 deletions
diff --git a/testsuite/tests/numeric/should_run/arith011.stdout-mips-sgi-irix b/testsuite/tests/numeric/should_run/arith011.stdout-mips-sgi-irix new file mode 100644 index 0000000000..0e86320b3a --- /dev/null +++ b/testsuite/tests/numeric/should_run/arith011.stdout-mips-sgi-irix @@ -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 +3 == 18446744073709551615 = False +3 == 0 = False +3 == 1 = False +3 == 2 = False +3 == 3 = True + +# +18446744073709551613 /= 18446744073709551613 = False +18446744073709551613 /= 18446744073709551614 = True +18446744073709551613 /= 18446744073709551615 = True +18446744073709551613 /= 0 = True +18446744073709551613 /= 1 = True +18446744073709551613 /= 2 = True +18446744073709551613 /= 3 = True + +18446744073709551614 /= 18446744073709551613 = True +18446744073709551614 /= 18446744073709551614 = False +18446744073709551614 /= 18446744073709551615 = True +18446744073709551614 /= 0 = True +18446744073709551614 /= 1 = True +18446744073709551614 /= 2 = True +18446744073709551614 /= 3 = True + +18446744073709551615 /= 18446744073709551613 = True +18446744073709551615 /= 18446744073709551614 = True +18446744073709551615 /= 18446744073709551615 = False +18446744073709551615 /= 0 = True +18446744073709551615 /= 1 = True +18446744073709551615 /= 2 = True +18446744073709551615 /= 3 = True + +0 /= 18446744073709551613 = True +0 /= 18446744073709551614 = True +0 /= 18446744073709551615 = True +0 /= 0 = False +0 /= 1 = True +0 /= 2 = True +0 /= 3 = True + +1 /= 18446744073709551613 = True +1 /= 18446744073709551614 = True +1 /= 18446744073709551615 = True +1 /= 0 = True +1 /= 1 = False +1 /= 2 = True +1 /= 3 = True + +2 /= 18446744073709551613 = True +2 /= 18446744073709551614 = True +2 /= 18446744073709551615 = True +2 /= 0 = True +2 /= 1 = True +2 /= 2 = False +2 /= 3 = True + +3 /= 18446744073709551613 = True +3 /= 18446744073709551614 = True +3 /= 18446744073709551615 = True +3 /= 0 = True +3 /= 1 = True +3 /= 2 = True +3 /= 3 = False + +# +testOrd +18446744073709551613 <= 18446744073709551613 = True +18446744073709551613 <= 18446744073709551614 = True +18446744073709551613 <= 18446744073709551615 = True +18446744073709551613 <= 0 = False +18446744073709551613 <= 1 = False +18446744073709551613 <= 2 = False +18446744073709551613 <= 3 = False + +18446744073709551614 <= 18446744073709551613 = False +18446744073709551614 <= 18446744073709551614 = True +18446744073709551614 <= 18446744073709551615 = True +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 = True +0 <= 18446744073709551614 = True +0 <= 18446744073709551615 = True +0 <= 0 = True +0 <= 1 = True +0 <= 2 = True +0 <= 3 = True + +1 <= 18446744073709551613 = True +1 <= 18446744073709551614 = True +1 <= 18446744073709551615 = True +1 <= 0 = False +1 <= 1 = True +1 <= 2 = True +1 <= 3 = True + +2 <= 18446744073709551613 = True +2 <= 18446744073709551614 = True +2 <= 18446744073709551615 = True +2 <= 0 = False +2 <= 1 = False +2 <= 2 = True +2 <= 3 = True + +3 <= 18446744073709551613 = True +3 <= 18446744073709551614 = True +3 <= 18446744073709551615 = True +3 <= 0 = False +3 <= 1 = False +3 <= 2 = False +3 <= 3 = True + +# +18446744073709551613 < 18446744073709551613 = False +18446744073709551613 < 18446744073709551614 = True +18446744073709551613 < 18446744073709551615 = True +18446744073709551613 < 0 = False +18446744073709551613 < 1 = False +18446744073709551613 < 2 = False +18446744073709551613 < 3 = False + +18446744073709551614 < 18446744073709551613 = False +18446744073709551614 < 18446744073709551614 = False +18446744073709551614 < 18446744073709551615 = True +18446744073709551614 < 0 = False +18446744073709551614 < 1 = False +18446744073709551614 < 2 = False +18446744073709551614 < 3 = False + +18446744073709551615 < 18446744073709551613 = False +18446744073709551615 < 18446744073709551614 = False +18446744073709551615 < 18446744073709551615 = False +18446744073709551615 < 0 = False +18446744073709551615 < 1 = False +18446744073709551615 < 2 = False +18446744073709551615 < 3 = False + +0 < 18446744073709551613 = True +0 < 18446744073709551614 = True +0 < 18446744073709551615 = True +0 < 0 = False +0 < 1 = True +0 < 2 = True +0 < 3 = True + +1 < 18446744073709551613 = True +1 < 18446744073709551614 = True +1 < 18446744073709551615 = True +1 < 0 = False +1 < 1 = False +1 < 2 = True +1 < 3 = True + +2 < 18446744073709551613 = True +2 < 18446744073709551614 = True +2 < 18446744073709551615 = True +2 < 0 = False +2 < 1 = False +2 < 2 = False +2 < 3 = True + +3 < 18446744073709551613 = True +3 < 18446744073709551614 = True +3 < 18446744073709551615 = True +3 < 0 = False +3 < 1 = False +3 < 2 = False +3 < 3 = False + +# +18446744073709551613 > 18446744073709551613 = False +18446744073709551613 > 18446744073709551614 = False +18446744073709551613 > 18446744073709551615 = False +18446744073709551613 > 0 = True +18446744073709551613 > 1 = True +18446744073709551613 > 2 = True +18446744073709551613 > 3 = True + +18446744073709551614 > 18446744073709551613 = True +18446744073709551614 > 18446744073709551614 = False +18446744073709551614 > 18446744073709551615 = False +18446744073709551614 > 0 = True +18446744073709551614 > 1 = True +18446744073709551614 > 2 = True +18446744073709551614 > 3 = True + +18446744073709551615 > 18446744073709551613 = True +18446744073709551615 > 18446744073709551614 = True +18446744073709551615 > 18446744073709551615 = False +18446744073709551615 > 0 = True +18446744073709551615 > 1 = True +18446744073709551615 > 2 = True +18446744073709551615 > 3 = True + +0 > 18446744073709551613 = False +0 > 18446744073709551614 = False +0 > 18446744073709551615 = False +0 > 0 = False +0 > 1 = False +0 > 2 = False +0 > 3 = False + +1 > 18446744073709551613 = False +1 > 18446744073709551614 = False +1 > 18446744073709551615 = False +1 > 0 = True +1 > 1 = False +1 > 2 = False +1 > 3 = False + +2 > 18446744073709551613 = False +2 > 18446744073709551614 = False +2 > 18446744073709551615 = False +2 > 0 = True +2 > 1 = True +2 > 2 = False +2 > 3 = False + +3 > 18446744073709551613 = False +3 > 18446744073709551614 = False +3 > 18446744073709551615 = False +3 > 0 = True +3 > 1 = True +3 > 2 = True +3 > 3 = False + +# +18446744073709551613 >= 18446744073709551613 = True +18446744073709551613 >= 18446744073709551614 = False +18446744073709551613 >= 18446744073709551615 = False +18446744073709551613 >= 0 = True +18446744073709551613 >= 1 = True +18446744073709551613 >= 2 = True +18446744073709551613 >= 3 = True + +18446744073709551614 >= 18446744073709551613 = True +18446744073709551614 >= 18446744073709551614 = True +18446744073709551614 >= 18446744073709551615 = False +18446744073709551614 >= 0 = True +18446744073709551614 >= 1 = True +18446744073709551614 >= 2 = True +18446744073709551614 >= 3 = True + +18446744073709551615 >= 18446744073709551613 = True +18446744073709551615 >= 18446744073709551614 = True +18446744073709551615 >= 18446744073709551615 = True +18446744073709551615 >= 0 = True +18446744073709551615 >= 1 = True +18446744073709551615 >= 2 = True +18446744073709551615 >= 3 = True + +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 = True +1 >= 1 = True +1 >= 2 = False +1 >= 3 = False + +2 >= 18446744073709551613 = False +2 >= 18446744073709551614 = False +2 >= 18446744073709551615 = False +2 >= 0 = True +2 >= 1 = True +2 >= 2 = True +2 >= 3 = False + +3 >= 18446744073709551613 = False +3 >= 18446744073709551614 = False +3 >= 18446744073709551615 = False +3 >= 0 = True +3 >= 1 = True +3 >= 2 = True +3 >= 3 = True + +# +18446744073709551613 `compare` 18446744073709551613 = EQ +18446744073709551613 `compare` 18446744073709551614 = LT +18446744073709551613 `compare` 18446744073709551615 = LT +18446744073709551613 `compare` 0 = GT +18446744073709551613 `compare` 1 = GT +18446744073709551613 `compare` 2 = GT +18446744073709551613 `compare` 3 = GT + +18446744073709551614 `compare` 18446744073709551613 = GT +18446744073709551614 `compare` 18446744073709551614 = EQ +18446744073709551614 `compare` 18446744073709551615 = LT +18446744073709551614 `compare` 0 = GT +18446744073709551614 `compare` 1 = GT +18446744073709551614 `compare` 2 = GT +18446744073709551614 `compare` 3 = GT + +18446744073709551615 `compare` 18446744073709551613 = GT +18446744073709551615 `compare` 18446744073709551614 = GT +18446744073709551615 `compare` 18446744073709551615 = EQ +18446744073709551615 `compare` 0 = GT +18446744073709551615 `compare` 1 = GT +18446744073709551615 `compare` 2 = GT +18446744073709551615 `compare` 3 = GT + +0 `compare` 18446744073709551613 = LT +0 `compare` 18446744073709551614 = LT +0 `compare` 18446744073709551615 = LT +0 `compare` 0 = EQ +0 `compare` 1 = LT +0 `compare` 2 = LT +0 `compare` 3 = LT + +1 `compare` 18446744073709551613 = LT +1 `compare` 18446744073709551614 = LT +1 `compare` 18446744073709551615 = LT +1 `compare` 0 = GT +1 `compare` 1 = EQ +1 `compare` 2 = LT +1 `compare` 3 = LT + +2 `compare` 18446744073709551613 = LT +2 `compare` 18446744073709551614 = LT +2 `compare` 18446744073709551615 = LT +2 `compare` 0 = GT +2 `compare` 1 = GT +2 `compare` 2 = EQ +2 `compare` 3 = LT + +3 `compare` 18446744073709551613 = LT +3 `compare` 18446744073709551614 = LT +3 `compare` 18446744073709551615 = LT +3 `compare` 0 = GT +3 `compare` 1 = GT +3 `compare` 2 = GT +3 `compare` 3 = EQ + +# +testNum +18446744073709551613 + 18446744073709551613 = 18446744073709551610 +18446744073709551613 + 18446744073709551614 = 18446744073709551611 +18446744073709551613 + 18446744073709551615 = 18446744073709551612 +18446744073709551613 + 0 = 18446744073709551613 +18446744073709551613 + 1 = 18446744073709551614 +18446744073709551613 + 2 = 18446744073709551615 +18446744073709551613 + 3 = 0 + +18446744073709551614 + 18446744073709551613 = 18446744073709551611 +18446744073709551614 + 18446744073709551614 = 18446744073709551612 +18446744073709551614 + 18446744073709551615 = 18446744073709551613 +18446744073709551614 + 0 = 18446744073709551614 +18446744073709551614 + 1 = 18446744073709551615 +18446744073709551614 + 2 = 0 +18446744073709551614 + 3 = 1 + +18446744073709551615 + 18446744073709551613 = 18446744073709551612 +18446744073709551615 + 18446744073709551614 = 18446744073709551613 +18446744073709551615 + 18446744073709551615 = 18446744073709551614 +18446744073709551615 + 0 = 18446744073709551615 +18446744073709551615 + 1 = 0 +18446744073709551615 + 2 = 1 +18446744073709551615 + 3 = 2 + +0 + 18446744073709551613 = 18446744073709551613 +0 + 18446744073709551614 = 18446744073709551614 +0 + 18446744073709551615 = 18446744073709551615 +0 + 0 = 0 +0 + 1 = 1 +0 + 2 = 2 +0 + 3 = 3 + +1 + 18446744073709551613 = 18446744073709551614 +1 + 18446744073709551614 = 18446744073709551615 +1 + 18446744073709551615 = 0 +1 + 0 = 1 +1 + 1 = 2 +1 + 2 = 3 +1 + 3 = 4 + +2 + 18446744073709551613 = 18446744073709551615 +2 + 18446744073709551614 = 0 +2 + 18446744073709551615 = 1 +2 + 0 = 2 +2 + 1 = 3 +2 + 2 = 4 +2 + 3 = 5 + +3 + 18446744073709551613 = 0 +3 + 18446744073709551614 = 1 +3 + 18446744073709551615 = 2 +3 + 0 = 3 +3 + 1 = 4 +3 + 2 = 5 +3 + 3 = 6 + +# +18446744073709551613 - 18446744073709551613 = 0 +18446744073709551613 - 18446744073709551614 = 18446744073709551615 +18446744073709551613 - 18446744073709551615 = 18446744073709551614 +18446744073709551613 - 0 = 18446744073709551613 +18446744073709551613 - 1 = 18446744073709551612 +18446744073709551613 - 2 = 18446744073709551611 +18446744073709551613 - 3 = 18446744073709551610 + +18446744073709551614 - 18446744073709551613 = 1 +18446744073709551614 - 18446744073709551614 = 0 +18446744073709551614 - 18446744073709551615 = 18446744073709551615 +18446744073709551614 - 0 = 18446744073709551614 +18446744073709551614 - 1 = 18446744073709551613 +18446744073709551614 - 2 = 18446744073709551612 +18446744073709551614 - 3 = 18446744073709551611 + +18446744073709551615 - 18446744073709551613 = 2 +18446744073709551615 - 18446744073709551614 = 1 +18446744073709551615 - 18446744073709551615 = 0 +18446744073709551615 - 0 = 18446744073709551615 +18446744073709551615 - 1 = 18446744073709551614 +18446744073709551615 - 2 = 18446744073709551613 +18446744073709551615 - 3 = 18446744073709551612 + +0 - 18446744073709551613 = 3 +0 - 18446744073709551614 = 2 +0 - 18446744073709551615 = 1 +0 - 0 = 0 +0 - 1 = 18446744073709551615 +0 - 2 = 18446744073709551614 +0 - 3 = 18446744073709551613 + +1 - 18446744073709551613 = 4 +1 - 18446744073709551614 = 3 +1 - 18446744073709551615 = 2 +1 - 0 = 1 +1 - 1 = 0 +1 - 2 = 18446744073709551615 +1 - 3 = 18446744073709551614 + +2 - 18446744073709551613 = 5 +2 - 18446744073709551614 = 4 +2 - 18446744073709551615 = 3 +2 - 0 = 2 +2 - 1 = 1 +2 - 2 = 0 +2 - 3 = 18446744073709551615 + +3 - 18446744073709551613 = 6 +3 - 18446744073709551614 = 5 +3 - 18446744073709551615 = 4 +3 - 0 = 3 +3 - 1 = 2 +3 - 2 = 1 +3 - 3 = 0 + +# +18446744073709551613 * 18446744073709551613 = 9 +18446744073709551613 * 18446744073709551614 = 6 +18446744073709551613 * 18446744073709551615 = 3 +18446744073709551613 * 0 = 0 +18446744073709551613 * 1 = 18446744073709551613 +18446744073709551613 * 2 = 18446744073709551610 +18446744073709551613 * 3 = 18446744073709551607 + +18446744073709551614 * 18446744073709551613 = 6 +18446744073709551614 * 18446744073709551614 = 4 +18446744073709551614 * 18446744073709551615 = 2 +18446744073709551614 * 0 = 0 +18446744073709551614 * 1 = 18446744073709551614 +18446744073709551614 * 2 = 18446744073709551612 +18446744073709551614 * 3 = 18446744073709551610 + +18446744073709551615 * 18446744073709551613 = 3 +18446744073709551615 * 18446744073709551614 = 2 +18446744073709551615 * 18446744073709551615 = 1 +18446744073709551615 * 0 = 0 +18446744073709551615 * 1 = 18446744073709551615 +18446744073709551615 * 2 = 18446744073709551614 +18446744073709551615 * 3 = 18446744073709551613 + +0 * 18446744073709551613 = 0 +0 * 18446744073709551614 = 0 +0 * 18446744073709551615 = 0 +0 * 0 = 0 +0 * 1 = 0 +0 * 2 = 0 +0 * 3 = 0 + +1 * 18446744073709551613 = 18446744073709551613 +1 * 18446744073709551614 = 18446744073709551614 +1 * 18446744073709551615 = 18446744073709551615 +1 * 0 = 0 +1 * 1 = 1 +1 * 2 = 2 +1 * 3 = 3 + +2 * 18446744073709551613 = 18446744073709551610 +2 * 18446744073709551614 = 18446744073709551612 +2 * 18446744073709551615 = 18446744073709551614 +2 * 0 = 0 +2 * 1 = 2 +2 * 2 = 4 +2 * 3 = 6 + +3 * 18446744073709551613 = 18446744073709551607 +3 * 18446744073709551614 = 18446744073709551610 +3 * 18446744073709551615 = 18446744073709551613 +3 * 0 = 0 +3 * 1 = 3 +3 * 2 = 6 +3 * 3 = 9 + +# +negate 18446744073709551613 = 3 +negate 18446744073709551614 = 2 +negate 18446744073709551615 = 1 +negate 0 = 0 +negate 1 = 18446744073709551615 +negate 2 = 18446744073709551614 +negate 3 = 18446744073709551613 +# +testReal +toRational 18446744073709551613 = 18446744073709551613 % 1 +toRational 18446744073709551614 = 18446744073709551614 % 1 +toRational 18446744073709551615 = 18446744073709551615 % 1 +toRational 0 = 0 % 1 +toRational 1 = 1 % 1 +toRational 2 = 2 % 1 +toRational 3 = 3 % 1 +# +testIntegral +18446744073709551613 `divMod` 18446744073709551613 = (1,0) +18446744073709551613 `divMod` 18446744073709551614 = (0,18446744073709551613) +18446744073709551613 `divMod` 18446744073709551615 = (0,18446744073709551613) +18446744073709551613 `divMod` 0 = divide by zero +18446744073709551613 `divMod` 1 = (18446744073709551613,0) +18446744073709551613 `divMod` 2 = (9223372036854775806,1) +18446744073709551613 `divMod` 3 = (6148914691236517204,1) + +18446744073709551614 `divMod` 18446744073709551613 = (1,1) +18446744073709551614 `divMod` 18446744073709551614 = (1,0) +18446744073709551614 `divMod` 18446744073709551615 = (0,18446744073709551614) +18446744073709551614 `divMod` 0 = divide by zero +18446744073709551614 `divMod` 1 = (18446744073709551614,0) +18446744073709551614 `divMod` 2 = (9223372036854775807,0) +18446744073709551614 `divMod` 3 = (6148914691236517204,2) + +18446744073709551615 `divMod` 18446744073709551613 = (1,2) +18446744073709551615 `divMod` 18446744073709551614 = (1,1) +18446744073709551615 `divMod` 18446744073709551615 = (1,0) +18446744073709551615 `divMod` 0 = divide by zero +18446744073709551615 `divMod` 1 = (18446744073709551615,0) +18446744073709551615 `divMod` 2 = (9223372036854775807,1) +18446744073709551615 `divMod` 3 = (6148914691236517205,0) + +0 `divMod` 18446744073709551613 = (0,0) +0 `divMod` 18446744073709551614 = (0,0) +0 `divMod` 18446744073709551615 = (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` 18446744073709551613 = (0,1) +1 `divMod` 18446744073709551614 = (0,1) +1 `divMod` 18446744073709551615 = (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` 18446744073709551613 = (0,2) +2 `divMod` 18446744073709551614 = (0,2) +2 `divMod` 18446744073709551615 = (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` 18446744073709551613 = (0,3) +3 `divMod` 18446744073709551614 = (0,3) +3 `divMod` 18446744073709551615 = (0,3) +3 `divMod` 0 = divide by zero +3 `divMod` 1 = (3,0) +3 `divMod` 2 = (1,1) +3 `divMod` 3 = (1,0) + +# +18446744073709551613 `div` 18446744073709551613 = 1 +18446744073709551613 `div` 18446744073709551614 = 0 +18446744073709551613 `div` 18446744073709551615 = 0 +18446744073709551613 `div` 0 = divide by zero +18446744073709551613 `div` 1 = 18446744073709551613 +18446744073709551613 `div` 2 = 9223372036854775806 +18446744073709551613 `div` 3 = 6148914691236517204 + +18446744073709551614 `div` 18446744073709551613 = 1 +18446744073709551614 `div` 18446744073709551614 = 1 +18446744073709551614 `div` 18446744073709551615 = 0 +18446744073709551614 `div` 0 = divide by zero +18446744073709551614 `div` 1 = 18446744073709551614 +18446744073709551614 `div` 2 = 9223372036854775807 +18446744073709551614 `div` 3 = 6148914691236517204 + +18446744073709551615 `div` 18446744073709551613 = 1 +18446744073709551615 `div` 18446744073709551614 = 1 +18446744073709551615 `div` 18446744073709551615 = 1 +18446744073709551615 `div` 0 = divide by zero +18446744073709551615 `div` 1 = 18446744073709551615 +18446744073709551615 `div` 2 = 9223372036854775807 +18446744073709551615 `div` 3 = 6148914691236517205 + +0 `div` 18446744073709551613 = 0 +0 `div` 18446744073709551614 = 0 +0 `div` 18446744073709551615 = 0 +0 `div` 0 = divide by zero +0 `div` 1 = 0 +0 `div` 2 = 0 +0 `div` 3 = 0 + +1 `div` 18446744073709551613 = 0 +1 `div` 18446744073709551614 = 0 +1 `div` 18446744073709551615 = 0 +1 `div` 0 = divide by zero +1 `div` 1 = 1 +1 `div` 2 = 0 +1 `div` 3 = 0 + +2 `div` 18446744073709551613 = 0 +2 `div` 18446744073709551614 = 0 +2 `div` 18446744073709551615 = 0 +2 `div` 0 = divide by zero +2 `div` 1 = 2 +2 `div` 2 = 1 +2 `div` 3 = 0 + +3 `div` 18446744073709551613 = 0 +3 `div` 18446744073709551614 = 0 +3 `div` 18446744073709551615 = 0 +3 `div` 0 = divide by zero +3 `div` 1 = 3 +3 `div` 2 = 1 +3 `div` 3 = 1 + +# +18446744073709551613 `mod` 18446744073709551613 = 0 +18446744073709551613 `mod` 18446744073709551614 = 18446744073709551613 +18446744073709551613 `mod` 18446744073709551615 = 18446744073709551613 +18446744073709551613 `mod` 0 = divide by zero +18446744073709551613 `mod` 1 = 0 +18446744073709551613 `mod` 2 = 1 +18446744073709551613 `mod` 3 = 1 + +18446744073709551614 `mod` 18446744073709551613 = 1 +18446744073709551614 `mod` 18446744073709551614 = 0 +18446744073709551614 `mod` 18446744073709551615 = 18446744073709551614 +18446744073709551614 `mod` 0 = divide by zero +18446744073709551614 `mod` 1 = 0 +18446744073709551614 `mod` 2 = 0 +18446744073709551614 `mod` 3 = 2 + +18446744073709551615 `mod` 18446744073709551613 = 2 +18446744073709551615 `mod` 18446744073709551614 = 1 +18446744073709551615 `mod` 18446744073709551615 = 0 +18446744073709551615 `mod` 0 = divide by zero +18446744073709551615 `mod` 1 = 0 +18446744073709551615 `mod` 2 = 1 +18446744073709551615 `mod` 3 = 0 + +0 `mod` 18446744073709551613 = 0 +0 `mod` 18446744073709551614 = 0 +0 `mod` 18446744073709551615 = 0 +0 `mod` 0 = divide by zero +0 `mod` 1 = 0 +0 `mod` 2 = 0 +0 `mod` 3 = 0 + +1 `mod` 18446744073709551613 = 1 +1 `mod` 18446744073709551614 = 1 +1 `mod` 18446744073709551615 = 1 +1 `mod` 0 = divide by zero +1 `mod` 1 = 0 +1 `mod` 2 = 1 +1 `mod` 3 = 1 + +2 `mod` 18446744073709551613 = 2 +2 `mod` 18446744073709551614 = 2 +2 `mod` 18446744073709551615 = 2 +2 `mod` 0 = divide by zero +2 `mod` 1 = 0 +2 `mod` 2 = 0 +2 `mod` 3 = 2 + +3 `mod` 18446744073709551613 = 3 +3 `mod` 18446744073709551614 = 3 +3 `mod` 18446744073709551615 = 3 +3 `mod` 0 = divide by zero +3 `mod` 1 = 0 +3 `mod` 2 = 1 +3 `mod` 3 = 0 + +# +18446744073709551613 `quotRem` 18446744073709551613 = (1,0) +18446744073709551613 `quotRem` 18446744073709551614 = (0,18446744073709551613) +18446744073709551613 `quotRem` 18446744073709551615 = (0,18446744073709551613) +18446744073709551613 `quotRem` 0 = divide by zero +18446744073709551613 `quotRem` 1 = (18446744073709551613,0) +18446744073709551613 `quotRem` 2 = (9223372036854775806,1) +18446744073709551613 `quotRem` 3 = (6148914691236517204,1) + +18446744073709551614 `quotRem` 18446744073709551613 = (1,1) +18446744073709551614 `quotRem` 18446744073709551614 = (1,0) +18446744073709551614 `quotRem` 18446744073709551615 = (0,18446744073709551614) +18446744073709551614 `quotRem` 0 = divide by zero +18446744073709551614 `quotRem` 1 = (18446744073709551614,0) +18446744073709551614 `quotRem` 2 = (9223372036854775807,0) +18446744073709551614 `quotRem` 3 = (6148914691236517204,2) + +18446744073709551615 `quotRem` 18446744073709551613 = (1,2) +18446744073709551615 `quotRem` 18446744073709551614 = (1,1) +18446744073709551615 `quotRem` 18446744073709551615 = (1,0) +18446744073709551615 `quotRem` 0 = divide by zero +18446744073709551615 `quotRem` 1 = (18446744073709551615,0) +18446744073709551615 `quotRem` 2 = (9223372036854775807,1) +18446744073709551615 `quotRem` 3 = (6148914691236517205,0) + +0 `quotRem` 18446744073709551613 = (0,0) +0 `quotRem` 18446744073709551614 = (0,0) +0 `quotRem` 18446744073709551615 = (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` 18446744073709551613 = (0,1) +1 `quotRem` 18446744073709551614 = (0,1) +1 `quotRem` 18446744073709551615 = (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` 18446744073709551613 = (0,2) +2 `quotRem` 18446744073709551614 = (0,2) +2 `quotRem` 18446744073709551615 = (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` 18446744073709551613 = (0,3) +3 `quotRem` 18446744073709551614 = (0,3) +3 `quotRem` 18446744073709551615 = (0,3) +3 `quotRem` 0 = divide by zero +3 `quotRem` 1 = (3,0) +3 `quotRem` 2 = (1,1) +3 `quotRem` 3 = (1,0) + +# +18446744073709551613 `quot` 18446744073709551613 = 1 +18446744073709551613 `quot` 18446744073709551614 = 0 +18446744073709551613 `quot` 18446744073709551615 = 0 +18446744073709551613 `quot` 0 = divide by zero +18446744073709551613 `quot` 1 = 18446744073709551613 +18446744073709551613 `quot` 2 = 9223372036854775806 +18446744073709551613 `quot` 3 = 6148914691236517204 + +18446744073709551614 `quot` 18446744073709551613 = 1 +18446744073709551614 `quot` 18446744073709551614 = 1 +18446744073709551614 `quot` 18446744073709551615 = 0 +18446744073709551614 `quot` 0 = divide by zero +18446744073709551614 `quot` 1 = 18446744073709551614 +18446744073709551614 `quot` 2 = 9223372036854775807 +18446744073709551614 `quot` 3 = 6148914691236517204 + +18446744073709551615 `quot` 18446744073709551613 = 1 +18446744073709551615 `quot` 18446744073709551614 = 1 +18446744073709551615 `quot` 18446744073709551615 = 1 +18446744073709551615 `quot` 0 = divide by zero +18446744073709551615 `quot` 1 = 18446744073709551615 +18446744073709551615 `quot` 2 = 9223372036854775807 +18446744073709551615 `quot` 3 = 6148914691236517205 + +0 `quot` 18446744073709551613 = 0 +0 `quot` 18446744073709551614 = 0 +0 `quot` 18446744073709551615 = 0 +0 `quot` 0 = divide by zero +0 `quot` 1 = 0 +0 `quot` 2 = 0 +0 `quot` 3 = 0 + +1 `quot` 18446744073709551613 = 0 +1 `quot` 18446744073709551614 = 0 +1 `quot` 18446744073709551615 = 0 +1 `quot` 0 = divide by zero +1 `quot` 1 = 1 +1 `quot` 2 = 0 +1 `quot` 3 = 0 + +2 `quot` 18446744073709551613 = 0 +2 `quot` 18446744073709551614 = 0 +2 `quot` 18446744073709551615 = 0 +2 `quot` 0 = divide by zero +2 `quot` 1 = 2 +2 `quot` 2 = 1 +2 `quot` 3 = 0 + +3 `quot` 18446744073709551613 = 0 +3 `quot` 18446744073709551614 = 0 +3 `quot` 18446744073709551615 = 0 +3 `quot` 0 = divide by zero +3 `quot` 1 = 3 +3 `quot` 2 = 1 +3 `quot` 3 = 1 + +# +18446744073709551613 `rem` 18446744073709551613 = 0 +18446744073709551613 `rem` 18446744073709551614 = 18446744073709551613 +18446744073709551613 `rem` 18446744073709551615 = 18446744073709551613 +18446744073709551613 `rem` 0 = divide by zero +18446744073709551613 `rem` 1 = 0 +18446744073709551613 `rem` 2 = 1 +18446744073709551613 `rem` 3 = 1 + +18446744073709551614 `rem` 18446744073709551613 = 1 +18446744073709551614 `rem` 18446744073709551614 = 0 +18446744073709551614 `rem` 18446744073709551615 = 18446744073709551614 +18446744073709551614 `rem` 0 = divide by zero +18446744073709551614 `rem` 1 = 0 +18446744073709551614 `rem` 2 = 0 +18446744073709551614 `rem` 3 = 2 + +18446744073709551615 `rem` 18446744073709551613 = 2 +18446744073709551615 `rem` 18446744073709551614 = 1 +18446744073709551615 `rem` 18446744073709551615 = 0 +18446744073709551615 `rem` 0 = divide by zero +18446744073709551615 `rem` 1 = 0 +18446744073709551615 `rem` 2 = 1 +18446744073709551615 `rem` 3 = 0 + +0 `rem` 18446744073709551613 = 0 +0 `rem` 18446744073709551614 = 0 +0 `rem` 18446744073709551615 = 0 +0 `rem` 0 = divide by zero +0 `rem` 1 = 0 +0 `rem` 2 = 0 +0 `rem` 3 = 0 + +1 `rem` 18446744073709551613 = 1 +1 `rem` 18446744073709551614 = 1 +1 `rem` 18446744073709551615 = 1 +1 `rem` 0 = divide by zero +1 `rem` 1 = 0 +1 `rem` 2 = 1 +1 `rem` 3 = 1 + +2 `rem` 18446744073709551613 = 2 +2 `rem` 18446744073709551614 = 2 +2 `rem` 18446744073709551615 = 2 +2 `rem` 0 = divide by zero +2 `rem` 1 = 0 +2 `rem` 2 = 0 +2 `rem` 3 = 2 + +3 `rem` 18446744073709551613 = 3 +3 `rem` 18446744073709551614 = 3 +3 `rem` 18446744073709551615 = 3 +3 `rem` 0 = divide by zero +3 `rem` 1 = 0 +3 `rem` 2 = 1 +3 `rem` 3 = 0 + +# +testConversions +Integer : [0,0,18446744073709551615] +Int : [0,0,-1] +Int8 : [0,0,-1] +Int16 : [0,0,-1] +Int32 : [0,0,-1] +Int64 : [0,0,-1] +Word8 : [0,0,255] +Word16 : [0,0,65535] +Word32 : [0,0,4294967295] +Word64 : [0,0,18446744073709551615] +testBits +18446744073709551613 .&. 18446744073709551613 = 18446744073709551613 +18446744073709551613 .&. 18446744073709551614 = 18446744073709551612 +18446744073709551613 .&. 18446744073709551615 = 18446744073709551613 +18446744073709551613 .&. 0 = 0 +18446744073709551613 .&. 1 = 1 +18446744073709551613 .&. 2 = 0 +18446744073709551613 .&. 3 = 1 + +18446744073709551614 .&. 18446744073709551613 = 18446744073709551612 +18446744073709551614 .&. 18446744073709551614 = 18446744073709551614 +18446744073709551614 .&. 18446744073709551615 = 18446744073709551614 +18446744073709551614 .&. 0 = 0 +18446744073709551614 .&. 1 = 0 +18446744073709551614 .&. 2 = 2 +18446744073709551614 .&. 3 = 2 + +18446744073709551615 .&. 18446744073709551613 = 18446744073709551613 +18446744073709551615 .&. 18446744073709551614 = 18446744073709551614 +18446744073709551615 .&. 18446744073709551615 = 18446744073709551615 +18446744073709551615 .&. 0 = 0 +18446744073709551615 .&. 1 = 1 +18446744073709551615 .&. 2 = 2 +18446744073709551615 .&. 3 = 3 + +0 .&. 18446744073709551613 = 0 +0 .&. 18446744073709551614 = 0 +0 .&. 18446744073709551615 = 0 +0 .&. 0 = 0 +0 .&. 1 = 0 +0 .&. 2 = 0 +0 .&. 3 = 0 + +1 .&. 18446744073709551613 = 1 +1 .&. 18446744073709551614 = 0 +1 .&. 18446744073709551615 = 1 +1 .&. 0 = 0 +1 .&. 1 = 1 +1 .&. 2 = 0 +1 .&. 3 = 1 + +2 .&. 18446744073709551613 = 0 +2 .&. 18446744073709551614 = 2 +2 .&. 18446744073709551615 = 2 +2 .&. 0 = 0 +2 .&. 1 = 0 +2 .&. 2 = 2 +2 .&. 3 = 2 + +3 .&. 18446744073709551613 = 1 +3 .&. 18446744073709551614 = 2 +3 .&. 18446744073709551615 = 3 +3 .&. 0 = 0 +3 .&. 1 = 1 +3 .&. 2 = 2 +3 .&. 3 = 3 + +# +18446744073709551613 .|. 18446744073709551613 = 18446744073709551613 +18446744073709551613 .|. 18446744073709551614 = 18446744073709551615 +18446744073709551613 .|. 18446744073709551615 = 18446744073709551615 +18446744073709551613 .|. 0 = 18446744073709551613 +18446744073709551613 .|. 1 = 18446744073709551613 +18446744073709551613 .|. 2 = 18446744073709551615 +18446744073709551613 .|. 3 = 18446744073709551615 + +18446744073709551614 .|. 18446744073709551613 = 18446744073709551615 +18446744073709551614 .|. 18446744073709551614 = 18446744073709551614 +18446744073709551614 .|. 18446744073709551615 = 18446744073709551615 +18446744073709551614 .|. 0 = 18446744073709551614 +18446744073709551614 .|. 1 = 18446744073709551615 +18446744073709551614 .|. 2 = 18446744073709551614 +18446744073709551614 .|. 3 = 18446744073709551615 + +18446744073709551615 .|. 18446744073709551613 = 18446744073709551615 +18446744073709551615 .|. 18446744073709551614 = 18446744073709551615 +18446744073709551615 .|. 18446744073709551615 = 18446744073709551615 +18446744073709551615 .|. 0 = 18446744073709551615 +18446744073709551615 .|. 1 = 18446744073709551615 +18446744073709551615 .|. 2 = 18446744073709551615 +18446744073709551615 .|. 3 = 18446744073709551615 + +0 .|. 18446744073709551613 = 18446744073709551613 +0 .|. 18446744073709551614 = 18446744073709551614 +0 .|. 18446744073709551615 = 18446744073709551615 +0 .|. 0 = 0 +0 .|. 1 = 1 +0 .|. 2 = 2 +0 .|. 3 = 3 + +1 .|. 18446744073709551613 = 18446744073709551613 +1 .|. 18446744073709551614 = 18446744073709551615 +1 .|. 18446744073709551615 = 18446744073709551615 +1 .|. 0 = 1 +1 .|. 1 = 1 +1 .|. 2 = 3 +1 .|. 3 = 3 + +2 .|. 18446744073709551613 = 18446744073709551615 +2 .|. 18446744073709551614 = 18446744073709551614 +2 .|. 18446744073709551615 = 18446744073709551615 +2 .|. 0 = 2 +2 .|. 1 = 3 +2 .|. 2 = 2 +2 .|. 3 = 3 + +3 .|. 18446744073709551613 = 18446744073709551615 +3 .|. 18446744073709551614 = 18446744073709551615 +3 .|. 18446744073709551615 = 18446744073709551615 +3 .|. 0 = 3 +3 .|. 1 = 3 +3 .|. 2 = 3 +3 .|. 3 = 3 + +# +18446744073709551613 `xor` 18446744073709551613 = 0 +18446744073709551613 `xor` 18446744073709551614 = 3 +18446744073709551613 `xor` 18446744073709551615 = 2 +18446744073709551613 `xor` 0 = 18446744073709551613 +18446744073709551613 `xor` 1 = 18446744073709551612 +18446744073709551613 `xor` 2 = 18446744073709551615 +18446744073709551613 `xor` 3 = 18446744073709551614 + +18446744073709551614 `xor` 18446744073709551613 = 3 +18446744073709551614 `xor` 18446744073709551614 = 0 +18446744073709551614 `xor` 18446744073709551615 = 1 +18446744073709551614 `xor` 0 = 18446744073709551614 +18446744073709551614 `xor` 1 = 18446744073709551615 +18446744073709551614 `xor` 2 = 18446744073709551612 +18446744073709551614 `xor` 3 = 18446744073709551613 + +18446744073709551615 `xor` 18446744073709551613 = 2 +18446744073709551615 `xor` 18446744073709551614 = 1 +18446744073709551615 `xor` 18446744073709551615 = 0 +18446744073709551615 `xor` 0 = 18446744073709551615 +18446744073709551615 `xor` 1 = 18446744073709551614 +18446744073709551615 `xor` 2 = 18446744073709551613 +18446744073709551615 `xor` 3 = 18446744073709551612 + +0 `xor` 18446744073709551613 = 18446744073709551613 +0 `xor` 18446744073709551614 = 18446744073709551614 +0 `xor` 18446744073709551615 = 18446744073709551615 +0 `xor` 0 = 0 +0 `xor` 1 = 1 +0 `xor` 2 = 2 +0 `xor` 3 = 3 + +1 `xor` 18446744073709551613 = 18446744073709551612 +1 `xor` 18446744073709551614 = 18446744073709551615 +1 `xor` 18446744073709551615 = 18446744073709551614 +1 `xor` 0 = 1 +1 `xor` 1 = 0 +1 `xor` 2 = 3 +1 `xor` 3 = 2 + +2 `xor` 18446744073709551613 = 18446744073709551615 +2 `xor` 18446744073709551614 = 18446744073709551612 +2 `xor` 18446744073709551615 = 18446744073709551613 +2 `xor` 0 = 2 +2 `xor` 1 = 3 +2 `xor` 2 = 0 +2 `xor` 3 = 1 + +3 `xor` 18446744073709551613 = 18446744073709551614 +3 `xor` 18446744073709551614 = 18446744073709551613 +3 `xor` 18446744073709551615 = 18446744073709551612 +3 `xor` 0 = 3 +3 `xor` 1 = 2 +3 `xor` 2 = 1 +3 `xor` 3 = 0 + +# +complement 18446744073709551613 = 2 +complement 18446744073709551614 = 1 +complement 18446744073709551615 = 0 +complement 0 = 18446744073709551615 +complement 1 = 18446744073709551614 +complement 2 = 18446744073709551613 +complement 3 = 18446744073709551612 +# +18446744073709551613 `shiftL` 0 = 18446744073709551613 +18446744073709551613 `shiftL` 1 = 18446744073709551610 +18446744073709551613 `shiftL` 2 = 18446744073709551604 +18446744073709551613 `shiftL` 3 = 18446744073709551592 +18446744073709551613 `shiftL` 32 = 18446744060824649728 +18446744073709551613 `shiftL` 64 = 0 + +18446744073709551614 `shiftL` 0 = 18446744073709551614 +18446744073709551614 `shiftL` 1 = 18446744073709551612 +18446744073709551614 `shiftL` 2 = 18446744073709551608 +18446744073709551614 `shiftL` 3 = 18446744073709551600 +18446744073709551614 `shiftL` 32 = 18446744065119617024 +18446744073709551614 `shiftL` 64 = 0 + +18446744073709551615 `shiftL` 0 = 18446744073709551615 +18446744073709551615 `shiftL` 1 = 18446744073709551614 +18446744073709551615 `shiftL` 2 = 18446744073709551612 +18446744073709551615 `shiftL` 3 = 18446744073709551608 +18446744073709551615 `shiftL` 32 = 18446744069414584320 +18446744073709551615 `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 + +# +18446744073709551613 `shiftR` 0 = 18446744073709551613 +18446744073709551613 `shiftR` 1 = 9223372036854775806 +18446744073709551613 `shiftR` 2 = 4611686018427387903 +18446744073709551613 `shiftR` 3 = 2305843009213693951 +18446744073709551613 `shiftR` 32 = 4294967295 +18446744073709551613 `shiftR` 64 = 0 + +18446744073709551614 `shiftR` 0 = 18446744073709551614 +18446744073709551614 `shiftR` 1 = 9223372036854775807 +18446744073709551614 `shiftR` 2 = 4611686018427387903 +18446744073709551614 `shiftR` 3 = 2305843009213693951 +18446744073709551614 `shiftR` 32 = 4294967295 +18446744073709551614 `shiftR` 64 = 0 + +18446744073709551615 `shiftR` 0 = 18446744073709551615 +18446744073709551615 `shiftR` 1 = 9223372036854775807 +18446744073709551615 `shiftR` 2 = 4611686018427387903 +18446744073709551615 `shiftR` 3 = 2305843009213693951 +18446744073709551615 `shiftR` 32 = 4294967295 +18446744073709551615 `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 + +# +18446744073709551613 `rotate` -3 = 13835058055282163711 +18446744073709551613 `rotate` -2 = 9223372036854775807 +18446744073709551613 `rotate` -1 = 18446744073709551614 +18446744073709551613 `rotate` 0 = 18446744073709551613 +18446744073709551613 `rotate` 1 = 18446744073709551611 +18446744073709551613 `rotate` 2 = 18446744073709551607 +18446744073709551613 `rotate` 3 = 18446744073709551599 + +18446744073709551614 `rotate` -3 = 16140901064495857663 +18446744073709551614 `rotate` -2 = 13835058055282163711 +18446744073709551614 `rotate` -1 = 9223372036854775807 +18446744073709551614 `rotate` 0 = 18446744073709551614 +18446744073709551614 `rotate` 1 = 18446744073709551613 +18446744073709551614 `rotate` 2 = 18446744073709551611 +18446744073709551614 `rotate` 3 = 18446744073709551607 + +18446744073709551615 `rotate` -3 = 18446744073709551615 +18446744073709551615 `rotate` -2 = 18446744073709551615 +18446744073709551615 `rotate` -1 = 18446744073709551615 +18446744073709551615 `rotate` 0 = 18446744073709551615 +18446744073709551615 `rotate` 1 = 18446744073709551615 +18446744073709551615 `rotate` 2 = 18446744073709551615 +18446744073709551615 `rotate` 3 = 18446744073709551615 + +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 = 13835058055282163712 +3 `rotate` -1 = 9223372036854775809 +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 +# +18446744073709551613 `setBit` 0 = 18446744073709551613 +18446744073709551613 `setBit` 1 = 18446744073709551615 +18446744073709551613 `setBit` 2 = 18446744073709551613 +18446744073709551613 `setBit` 3 = 18446744073709551613 +18446744073709551613 `setBit` 32 = 18446744073709551613 +18446744073709551613 `setBit` 64 = 18446744073709551613 + +18446744073709551614 `setBit` 0 = 18446744073709551615 +18446744073709551614 `setBit` 1 = 18446744073709551614 +18446744073709551614 `setBit` 2 = 18446744073709551614 +18446744073709551614 `setBit` 3 = 18446744073709551614 +18446744073709551614 `setBit` 32 = 18446744073709551614 +18446744073709551614 `setBit` 64 = 18446744073709551614 + +18446744073709551615 `setBit` 0 = 18446744073709551615 +18446744073709551615 `setBit` 1 = 18446744073709551615 +18446744073709551615 `setBit` 2 = 18446744073709551615 +18446744073709551615 `setBit` 3 = 18446744073709551615 +18446744073709551615 `setBit` 32 = 18446744073709551615 +18446744073709551615 `setBit` 64 = 18446744073709551615 + +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 + +# +18446744073709551613 `clearBit` 0 = 18446744073709551612 +18446744073709551613 `clearBit` 1 = 18446744073709551613 +18446744073709551613 `clearBit` 2 = 18446744073709551609 +18446744073709551613 `clearBit` 3 = 18446744073709551605 +18446744073709551613 `clearBit` 32 = 18446744069414584317 +18446744073709551613 `clearBit` 64 = 18446744073709551613 + +18446744073709551614 `clearBit` 0 = 18446744073709551614 +18446744073709551614 `clearBit` 1 = 18446744073709551612 +18446744073709551614 `clearBit` 2 = 18446744073709551610 +18446744073709551614 `clearBit` 3 = 18446744073709551606 +18446744073709551614 `clearBit` 32 = 18446744069414584318 +18446744073709551614 `clearBit` 64 = 18446744073709551614 + +18446744073709551615 `clearBit` 0 = 18446744073709551614 +18446744073709551615 `clearBit` 1 = 18446744073709551613 +18446744073709551615 `clearBit` 2 = 18446744073709551611 +18446744073709551615 `clearBit` 3 = 18446744073709551607 +18446744073709551615 `clearBit` 32 = 18446744069414584319 +18446744073709551615 `clearBit` 64 = 18446744073709551615 + +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 + +# +18446744073709551613 `complementBit` 0 = 18446744073709551612 +18446744073709551613 `complementBit` 1 = 18446744073709551615 +18446744073709551613 `complementBit` 2 = 18446744073709551609 +18446744073709551613 `complementBit` 3 = 18446744073709551605 +18446744073709551613 `complementBit` 32 = 18446744069414584317 +18446744073709551613 `complementBit` 64 = 18446744073709551613 + +18446744073709551614 `complementBit` 0 = 18446744073709551615 +18446744073709551614 `complementBit` 1 = 18446744073709551612 +18446744073709551614 `complementBit` 2 = 18446744073709551610 +18446744073709551614 `complementBit` 3 = 18446744073709551606 +18446744073709551614 `complementBit` 32 = 18446744069414584318 +18446744073709551614 `complementBit` 64 = 18446744073709551614 + +18446744073709551615 `complementBit` 0 = 18446744073709551614 +18446744073709551615 `complementBit` 1 = 18446744073709551613 +18446744073709551615 `complementBit` 2 = 18446744073709551611 +18446744073709551615 `complementBit` 3 = 18446744073709551607 +18446744073709551615 `complementBit` 32 = 18446744069414584319 +18446744073709551615 `complementBit` 64 = 18446744073709551615 + +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 + +# +18446744073709551613 `testBit` 0 = True +18446744073709551613 `testBit` 1 = False +18446744073709551613 `testBit` 2 = True +18446744073709551613 `testBit` 3 = True +18446744073709551613 `testBit` 32 = True +18446744073709551613 `testBit` 64 = False + +18446744073709551614 `testBit` 0 = False +18446744073709551614 `testBit` 1 = True +18446744073709551614 `testBit` 2 = True +18446744073709551614 `testBit` 3 = True +18446744073709551614 `testBit` 32 = True +18446744073709551614 `testBit` 64 = False + +18446744073709551615 `testBit` 0 = True +18446744073709551615 `testBit` 1 = True +18446744073709551615 `testBit` 2 = True +18446744073709551615 `testBit` 3 = True +18446744073709551615 `testBit` 32 = True +18446744073709551615 `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 18446744073709551613 = 64 +bitSize 18446744073709551614 = 64 +bitSize 18446744073709551615 = 64 +bitSize 0 = 64 +bitSize 1 = 64 +bitSize 2 = 64 +bitSize 3 = 64 +# +isSigned 18446744073709551613 = False +isSigned 18446744073709551614 = False +isSigned 18446744073709551615 = False +isSigned 0 = False +isSigned 1 = False +isSigned 2 = False +isSigned 3 = False +# +-------------------------------- +--Testing Integer +-------------------------------- +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 + +# +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 = -55340232221128654848 + +-2 `shiftL` 0 = -2 +-2 `shiftL` 1 = -4 +-2 `shiftL` 2 = -8 +-2 `shiftL` 3 = -16 +-2 `shiftL` 32 = -8589934592 +-2 `shiftL` 64 = -36893488147419103232 + +-1 `shiftL` 0 = -1 +-1 `shiftL` 1 = -2 +-1 `shiftL` 2 = -4 +-1 `shiftL` 3 = -8 +-1 `shiftL` 32 = -4294967296 +-1 `shiftL` 64 = -18446744073709551616 + +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 = 18446744073709551616 + +2 `shiftL` 0 = 2 +2 `shiftL` 1 = 4 +2 `shiftL` 2 = 8 +2 `shiftL` 3 = 16 +2 `shiftL` 32 = 8589934592 +2 `shiftL` 64 = 36893488147419103232 + +3 `shiftL` 0 = 3 +3 `shiftL` 1 = 6 +3 `shiftL` 2 = 12 +3 `shiftL` 3 = 24 +3 `shiftL` 32 = 12884901888 +3 `shiftL` 64 = 55340232221128654848 + +# +-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 = -1 +-3 `rotate` -2 = -1 +-3 `rotate` -1 = -2 +-3 `rotate` 0 = -3 +-3 `rotate` 1 = -6 +-3 `rotate` 2 = -12 +-3 `rotate` 3 = -24 + +-2 `rotate` -3 = -1 +-2 `rotate` -2 = -1 +-2 `rotate` -1 = -1 +-2 `rotate` 0 = -2 +-2 `rotate` 1 = -4 +-2 `rotate` 2 = -8 +-2 `rotate` 3 = -16 + +-1 `rotate` -3 = -1 +-1 `rotate` -2 = -1 +-1 `rotate` -1 = -1 +-1 `rotate` 0 = -1 +-1 `rotate` 1 = -2 +-1 `rotate` 2 = -4 +-1 `rotate` 3 = -8 + +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 = 0 +1 `rotate` -2 = 0 +1 `rotate` -1 = 0 +1 `rotate` 0 = 1 +1 `rotate` 1 = 2 +1 `rotate` 2 = 4 +1 `rotate` 3 = 8 + +2 `rotate` -3 = 0 +2 `rotate` -2 = 0 +2 `rotate` -1 = 1 +2 `rotate` 0 = 2 +2 `rotate` 1 = 4 +2 `rotate` 2 = 8 +2 `rotate` 3 = 16 + +3 `rotate` -3 = 0 +3 `rotate` -2 = 0 +3 `rotate` -1 = 1 +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 = 18446744073709551616 + +1 `setBit` 0 = 1 +1 `setBit` 1 = 3 +1 `setBit` 2 = 5 +1 `setBit` 3 = 9 +1 `setBit` 32 = 4294967297 +1 `setBit` 64 = 18446744073709551617 + +2 `setBit` 0 = 3 +2 `setBit` 1 = 2 +2 `setBit` 2 = 6 +2 `setBit` 3 = 10 +2 `setBit` 32 = 4294967298 +2 `setBit` 64 = 18446744073709551618 + +3 `setBit` 0 = 3 +3 `setBit` 1 = 3 +3 `setBit` 2 = 7 +3 `setBit` 3 = 11 +3 `setBit` 32 = 4294967299 +3 `setBit` 64 = 18446744073709551619 + +# +-3 `clearBit` 0 = -4 +-3 `clearBit` 1 = -3 +-3 `clearBit` 2 = -7 +-3 `clearBit` 3 = -11 +-3 `clearBit` 32 = -4294967299 +-3 `clearBit` 64 = -18446744073709551619 + +-2 `clearBit` 0 = -2 +-2 `clearBit` 1 = -4 +-2 `clearBit` 2 = -6 +-2 `clearBit` 3 = -10 +-2 `clearBit` 32 = -4294967298 +-2 `clearBit` 64 = -18446744073709551618 + +-1 `clearBit` 0 = -2 +-1 `clearBit` 1 = -3 +-1 `clearBit` 2 = -5 +-1 `clearBit` 3 = -9 +-1 `clearBit` 32 = -4294967297 +-1 `clearBit` 64 = -18446744073709551617 + +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 = -18446744073709551619 + +-2 `complementBit` 0 = -1 +-2 `complementBit` 1 = -4 +-2 `complementBit` 2 = -6 +-2 `complementBit` 3 = -10 +-2 `complementBit` 32 = -4294967298 +-2 `complementBit` 64 = -18446744073709551618 + +-1 `complementBit` 0 = -2 +-1 `complementBit` 1 = -3 +-1 `complementBit` 2 = -5 +-1 `complementBit` 3 = -9 +-1 `complementBit` 32 = -4294967297 +-1 `complementBit` 64 = -18446744073709551617 + +0 `complementBit` 0 = 1 +0 `complementBit` 1 = 2 +0 `complementBit` 2 = 4 +0 `complementBit` 3 = 8 +0 `complementBit` 32 = 4294967296 +0 `complementBit` 64 = 18446744073709551616 + +1 `complementBit` 0 = 0 +1 `complementBit` 1 = 3 +1 `complementBit` 2 = 5 +1 `complementBit` 3 = 9 +1 `complementBit` 32 = 4294967297 +1 `complementBit` 64 = 18446744073709551617 + +2 `complementBit` 0 = 3 +2 `complementBit` 1 = 0 +2 `complementBit` 2 = 6 +2 `complementBit` 3 = 10 +2 `complementBit` 32 = 4294967298 +2 `complementBit` 64 = 18446744073709551618 + +3 `complementBit` 0 = 2 +3 `complementBit` 1 = 1 +3 `complementBit` 2 = 7 +3 `complementBit` 3 = 11 +3 `complementBit` 32 = 4294967299 +3 `complementBit` 64 = 18446744073709551619 + +# +-3 `testBit` 0 = True +-3 `testBit` 1 = False +-3 `testBit` 2 = True +-3 `testBit` 3 = True +-3 `testBit` 32 = True +-3 `testBit` 64 = True + +-2 `testBit` 0 = False +-2 `testBit` 1 = True +-2 `testBit` 2 = True +-2 `testBit` 3 = True +-2 `testBit` 32 = True +-2 `testBit` 64 = True + +-1 `testBit` 0 = True +-1 `testBit` 1 = True +-1 `testBit` 2 = True +-1 `testBit` 3 = True +-1 `testBit` 32 = True +-1 `testBit` 64 = True + +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 + +# +isSigned -3 = True +isSigned -2 = True +isSigned -1 = True +isSigned 0 = True +isSigned 1 = True +isSigned 2 = True +isSigned 3 = True +# |