From: sof Date: Fri, 30 Jan 1998 16:53:43 +0000 (+0000) Subject: [project @ 1998-01-30 16:53:35 by sof] X-Git-Tag: Approx_2487_patches~1033 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=d2dafe1248cf5b156fc0b0ad2606b744389cf5a9;p=ghc-hetmet.git [project @ 1998-01-30 16:53:35 by sof] - added regressions tests for Word, Int & Bits (pinched test file from Hugs dist.) - added NumExts regressions tests --- diff --git a/ghc/tests/numeric/should_run/arith011.hs b/ghc/tests/numeric/should_run/arith011.hs new file mode 100644 index 0000000..6499e01 --- /dev/null +++ b/ghc/tests/numeric/should_run/arith011.hs @@ -0,0 +1,138 @@ +--!!! Testing Int and Word +module Main(main) where +import Int +import Word +import Bits +import Ix -- added SOF + +main :: IO () +main = test + +test :: IO () +test = do + testIntlike "Int8" (0::Int8) + testIntlike "Int16" (0::Int16) + testIntlike "Int32" (0::Int32) + testIntlike "Word8" (0::Word8) + testIntlike "Word16" (0::Word16) + testIntlike "Word32" (0::Word32) + +testIntlike :: (Bounded a, Integral a, Ix a, Read a, Bits a) => String -> a -> IO () +testIntlike name zero = do + putStrLn $ "--------------------------------" + putStrLn $ "--Testing " ++ name + putStrLn $ "--------------------------------" + testBounded zero + testEnum zero + testReadShow zero + testEq zero + testOrd zero + testNum zero + testReal zero + testIntegral zero + testBits zero + putStrLn $ "--------------------------------" + +-- In all these tests, zero is a dummy element used to get +-- the overloading to work + +testBounded zero = do + putStrLn "testBounded" + print $ (minBound-1, minBound, minBound+1) `asTypeOf` (zero,zero,zero) + print $ (maxBound-1, maxBound, maxBound+1) `asTypeOf` (zero,zero,zero) + +testEnum zero = do + putStrLn "testEnum" + print $ take 10 [zero .. ] -- enumFrom + print $ take 10 [zero, toEnum 2 .. ] -- enumFromThen + print [zero .. toEnum 20] -- enumFromTo + print [zero, toEnum 2 .. toEnum 20] -- enumFromThenTo + +samples :: (Num a, Enum a) => a -> ([a], [a]) +samples zero = ([-3 .. -1]++[0 .. 3], [-3 .. -1]++[1 .. 3]) + +table1 :: (Show a, Show b) => String -> (a -> b) -> [a] -> IO () +table1 nm f xs = do + sequence [ f' x | x <- xs ] + putStrLn "#" + where + f' x = putStrLn (nm ++ " " ++ show x ++ " = " ++ show (f x)) + +table2 :: (Show a, Show b, Show c) => String -> (a -> b -> c) -> [a] -> [b] -> IO () +table2 nm op xs ys = do + sequence [ sequence [ op' x y | y <- ys ] >> putStrLn " " + | x <- xs + ] + putStrLn "#" + where + op' x y = putStrLn (show x ++ " " ++ nm ++ " " ++ show y + ++ " = " ++ show (op x y)) + +testReadShow zero = do + putStrLn "testReadShow" + print xs + print (map read_show xs) + where + (xs,zs) = samples zero + read_show x = (read (show x) `asTypeOf` zero) + +testEq zero = do + putStrLn "testEq" + table2 "==" (==) xs xs + table2 "/=" (/=) xs xs + where + (xs,ys) = samples zero + +testOrd zero = do + putStrLn "testOrd" + table2 "<=" (<=) xs xs + table2 "< " (<) xs xs + table2 "> " (>) xs xs + table2 ">=" (>=) xs xs + table2 "`compare`" compare xs xs + where + (xs,ys) = samples zero + +testNum zero = do + putStrLn "testNum" + table2 "+" (+) xs xs + table2 "-" (-) xs xs + table2 "*" (*) xs xs + table1 "negate" negate xs + where + (xs,ys) = samples zero + +testReal zero = do + putStrLn "testReal" + table1 "toRational" toRational xs + where + (xs,ys) = samples zero + +testIntegral zero = do + putStrLn "testIntegral" + table2 "`divMod` " divMod xs ys + table2 "`div` " div xs ys + table2 "`mod` " mod xs ys + table2 "`quotRem`" quotRem xs ys + table2 "`quot` " quot xs ys + table2 "`rem` " rem xs ys + where + (xs,ys) = samples zero + +testBits zero = do + putStrLn "testBits" + table2 ".&. " (.&.) xs ys + table2 ".|. " (.|.) xs ys + table2 "`xor`" xor xs ys + table1 "complement" complement xs + table2 "`shift`" shift xs [0..3] + table2 "`rotate`" rotate xs ([-3..3]) + table1 "bit" (\ x -> (bit x) `asTypeOf` zero) [(0::Int)..3] + table2 "`setBit`" setBit xs [0..3] + table2 "`clearBit`" clearBit xs [0..3] + table2 "`complementBit`" complementBit xs [0..3] + table2 "`testBit`" testBit xs [0..3] + table1 "bitSize" bitSize xs + table1 "isSigned" isSigned xs + where + (xs,ys) = samples zero diff --git a/ghc/tests/numeric/should_run/arith011.stdout b/ghc/tests/numeric/should_run/arith011.stdout new file mode 100644 index 0000000..1e13393 --- /dev/null +++ b/ghc/tests/numeric/should_run/arith011.stdout @@ -0,0 +1,7938 @@ +-------------------------------- +--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` 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` 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` 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` 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` 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` 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` 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` 1 = -3 +-3 `div` 2 = -2 +-3 `div` 3 = -1 + +-2 `div` -3 = 0 +-2 `div` -2 = 1 +-2 `div` -1 = 2 +-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` 1 = -1 +-1 `div` 2 = -1 +-1 `div` 3 = -1 + +0 `div` -3 = 0 +0 `div` -2 = 0 +0 `div` -1 = 0 +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` 1 = 1 +1 `div` 2 = 0 +1 `div` 3 = 0 + +2 `div` -3 = -1 +2 `div` -2 = -1 +2 `div` -1 = -2 +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` 1 = 3 +3 `div` 2 = 1 +3 `div` 3 = 1 + +# +-3 `mod` -3 = 0 +-3 `mod` -2 = -1 +-3 `mod` -1 = 0 +-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` 1 = 0 +-2 `mod` 2 = 0 +-2 `mod` 3 = 1 + +-1 `mod` -3 = -1 +-1 `mod` -2 = -1 +-1 `mod` -1 = 0 +-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` 1 = 0 +0 `mod` 2 = 0 +0 `mod` 3 = 0 + +1 `mod` -3 = -2 +1 `mod` -2 = -1 +1 `mod` -1 = 0 +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` 1 = 0 +2 `mod` 2 = 0 +2 `mod` 3 = 2 + +3 `mod` -3 = 0 +3 `mod` -2 = -1 +3 `mod` -1 = 0 +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` 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` 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` 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` 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` 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` 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` 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` 1 = -3 +-3 `quot` 2 = -1 +-3 `quot` 3 = -1 + +-2 `quot` -3 = 0 +-2 `quot` -2 = 1 +-2 `quot` -1 = 2 +-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` 1 = -1 +-1 `quot` 2 = 0 +-1 `quot` 3 = 0 + +0 `quot` -3 = 0 +0 `quot` -2 = 0 +0 `quot` -1 = 0 +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` 1 = 1 +1 `quot` 2 = 0 +1 `quot` 3 = 0 + +2 `quot` -3 = 0 +2 `quot` -2 = -1 +2 `quot` -1 = -2 +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` 1 = 3 +3 `quot` 2 = 1 +3 `quot` 3 = 1 + +# +-3 `rem` -3 = 0 +-3 `rem` -2 = -1 +-3 `rem` -1 = 0 +-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` 1 = 0 +-2 `rem` 2 = 0 +-2 `rem` 3 = -2 + +-1 `rem` -3 = -1 +-1 `rem` -2 = -1 +-1 `rem` -1 = 0 +-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` 1 = 0 +0 `rem` 2 = 0 +0 `rem` 3 = 0 + +1 `rem` -3 = 1 +1 `rem` -2 = 1 +1 `rem` -1 = 0 +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` 1 = 0 +2 `rem` 2 = 0 +2 `rem` 3 = 2 + +3 `rem` -3 = 0 +3 `rem` -2 = 1 +3 `rem` -1 = 0 +3 `rem` 1 = 0 +3 `rem` 2 = 1 +3 `rem` 3 = 0 + +# +testBits +-3 .&. -3 = -3 +-3 .&. -2 = -4 +-3 .&. -1 = -3 +-3 .&. 1 = 1 +-3 .&. 2 = 0 +-3 .&. 3 = 1 + +-2 .&. -3 = -4 +-2 .&. -2 = -2 +-2 .&. -1 = -2 +-2 .&. 1 = 0 +-2 .&. 2 = 2 +-2 .&. 3 = 2 + +-1 .&. -3 = -3 +-1 .&. -2 = -2 +-1 .&. -1 = -1 +-1 .&. 1 = 1 +-1 .&. 2 = 2 +-1 .&. 3 = 3 + +0 .&. -3 = 0 +0 .&. -2 = 0 +0 .&. -1 = 0 +0 .&. 1 = 0 +0 .&. 2 = 0 +0 .&. 3 = 0 + +1 .&. -3 = 1 +1 .&. -2 = 0 +1 .&. -1 = 1 +1 .&. 1 = 1 +1 .&. 2 = 0 +1 .&. 3 = 1 + +2 .&. -3 = 0 +2 .&. -2 = 2 +2 .&. -1 = 2 +2 .&. 1 = 0 +2 .&. 2 = 2 +2 .&. 3 = 2 + +3 .&. -3 = 1 +3 .&. -2 = 2 +3 .&. -1 = 3 +3 .&. 1 = 1 +3 .&. 2 = 2 +3 .&. 3 = 3 + +# +-3 .|. -3 = -3 +-3 .|. -2 = -1 +-3 .|. -1 = -1 +-3 .|. 1 = -3 +-3 .|. 2 = -1 +-3 .|. 3 = -1 + +-2 .|. -3 = -1 +-2 .|. -2 = -2 +-2 .|. -1 = -1 +-2 .|. 1 = -1 +-2 .|. 2 = -2 +-2 .|. 3 = -1 + +-1 .|. -3 = -1 +-1 .|. -2 = -1 +-1 .|. -1 = -1 +-1 .|. 1 = -1 +-1 .|. 2 = -1 +-1 .|. 3 = -1 + +0 .|. -3 = -3 +0 .|. -2 = -2 +0 .|. -1 = -1 +0 .|. 1 = 1 +0 .|. 2 = 2 +0 .|. 3 = 3 + +1 .|. -3 = -3 +1 .|. -2 = -1 +1 .|. -1 = -1 +1 .|. 1 = 1 +1 .|. 2 = 3 +1 .|. 3 = 3 + +2 .|. -3 = -1 +2 .|. -2 = -2 +2 .|. -1 = -1 +2 .|. 1 = 3 +2 .|. 2 = 2 +2 .|. 3 = 3 + +3 .|. -3 = -1 +3 .|. -2 = -1 +3 .|. -1 = -1 +3 .|. 1 = 3 +3 .|. 2 = 3 +3 .|. 3 = 3 + +# +-3 `xor` -3 = 0 +-3 `xor` -2 = 3 +-3 `xor` -1 = 2 +-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` 1 = -1 +-2 `xor` 2 = -4 +-2 `xor` 3 = -3 + +-1 `xor` -3 = 2 +-1 `xor` -2 = 1 +-1 `xor` -1 = 0 +-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` 1 = 1 +0 `xor` 2 = 2 +0 `xor` 3 = 3 + +1 `xor` -3 = -4 +1 `xor` -2 = -1 +1 `xor` -1 = -2 +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` 1 = 3 +2 `xor` 2 = 0 +2 `xor` 3 = 1 + +3 `xor` -3 = -2 +3 `xor` -2 = -3 +3 `xor` -1 = -4 +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 `shift` 0 = -3 +-3 `shift` 1 = -6 +-3 `shift` 2 = -12 +-3 `shift` 3 = -24 + +-2 `shift` 0 = -2 +-2 `shift` 1 = -4 +-2 `shift` 2 = -8 +-2 `shift` 3 = -16 + +-1 `shift` 0 = -1 +-1 `shift` 1 = -2 +-1 `shift` 2 = -4 +-1 `shift` 3 = -8 + +0 `shift` 0 = 0 +0 `shift` 1 = 0 +0 `shift` 2 = 0 +0 `shift` 3 = 0 + +1 `shift` 0 = 1 +1 `shift` 1 = 2 +1 `shift` 2 = 4 +1 `shift` 3 = 8 + +2 `shift` 0 = 2 +2 `shift` 1 = 4 +2 `shift` 2 = 8 +2 `shift` 3 = 16 + +3 `shift` 0 = 3 +3 `shift` 1 = 6 +3 `shift` 2 = 12 +3 `shift` 3 = 24 + +# +-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 + +-2 `setBit` 0 = -1 +-2 `setBit` 1 = -2 +-2 `setBit` 2 = -2 +-2 `setBit` 3 = -2 + +-1 `setBit` 0 = -1 +-1 `setBit` 1 = -1 +-1 `setBit` 2 = -1 +-1 `setBit` 3 = -1 + +0 `setBit` 0 = 1 +0 `setBit` 1 = 2 +0 `setBit` 2 = 4 +0 `setBit` 3 = 8 + +1 `setBit` 0 = 1 +1 `setBit` 1 = 3 +1 `setBit` 2 = 5 +1 `setBit` 3 = 9 + +2 `setBit` 0 = 3 +2 `setBit` 1 = 2 +2 `setBit` 2 = 6 +2 `setBit` 3 = 10 + +3 `setBit` 0 = 3 +3 `setBit` 1 = 3 +3 `setBit` 2 = 7 +3 `setBit` 3 = 11 + +# +-3 `clearBit` 0 = -4 +-3 `clearBit` 1 = -3 +-3 `clearBit` 2 = -7 +-3 `clearBit` 3 = -11 + +-2 `clearBit` 0 = -2 +-2 `clearBit` 1 = -4 +-2 `clearBit` 2 = -6 +-2 `clearBit` 3 = -10 + +-1 `clearBit` 0 = -2 +-1 `clearBit` 1 = -3 +-1 `clearBit` 2 = -5 +-1 `clearBit` 3 = -9 + +0 `clearBit` 0 = 0 +0 `clearBit` 1 = 0 +0 `clearBit` 2 = 0 +0 `clearBit` 3 = 0 + +1 `clearBit` 0 = 0 +1 `clearBit` 1 = 1 +1 `clearBit` 2 = 1 +1 `clearBit` 3 = 1 + +2 `clearBit` 0 = 2 +2 `clearBit` 1 = 0 +2 `clearBit` 2 = 2 +2 `clearBit` 3 = 2 + +3 `clearBit` 0 = 2 +3 `clearBit` 1 = 1 +3 `clearBit` 2 = 3 +3 `clearBit` 3 = 3 + +# +-3 `complementBit` 0 = -4 +-3 `complementBit` 1 = -1 +-3 `complementBit` 2 = -7 +-3 `complementBit` 3 = -11 + +-2 `complementBit` 0 = -1 +-2 `complementBit` 1 = -4 +-2 `complementBit` 2 = -6 +-2 `complementBit` 3 = -10 + +-1 `complementBit` 0 = -2 +-1 `complementBit` 1 = -3 +-1 `complementBit` 2 = -5 +-1 `complementBit` 3 = -9 + +0 `complementBit` 0 = 1 +0 `complementBit` 1 = 2 +0 `complementBit` 2 = 4 +0 `complementBit` 3 = 8 + +1 `complementBit` 0 = 0 +1 `complementBit` 1 = 3 +1 `complementBit` 2 = 5 +1 `complementBit` 3 = 9 + +2 `complementBit` 0 = 3 +2 `complementBit` 1 = 0 +2 `complementBit` 2 = 6 +2 `complementBit` 3 = 10 + +3 `complementBit` 0 = 2 +3 `complementBit` 1 = 1 +3 `complementBit` 2 = 7 +3 `complementBit` 3 = 11 + +# +-3 `testBit` 0 = True +-3 `testBit` 1 = False +-3 `testBit` 2 = True +-3 `testBit` 3 = True + +-2 `testBit` 0 = False +-2 `testBit` 1 = True +-2 `testBit` 2 = True +-2 `testBit` 3 = True + +-1 `testBit` 0 = True +-1 `testBit` 1 = True +-1 `testBit` 2 = True +-1 `testBit` 3 = True + +0 `testBit` 0 = False +0 `testBit` 1 = False +0 `testBit` 2 = False +0 `testBit` 3 = False + +1 `testBit` 0 = True +1 `testBit` 1 = False +1 `testBit` 2 = False +1 `testBit` 3 = False + +2 `testBit` 0 = False +2 `testBit` 1 = True +2 `testBit` 2 = False +2 `testBit` 3 = False + +3 `testBit` 0 = True +3 `testBit` 1 = True +3 `testBit` 2 = False +3 `testBit` 3 = 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` 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` 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` 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` 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` 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` 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` 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` 1 = -3 +-3 `div` 2 = -2 +-3 `div` 3 = -1 + +-2 `div` -3 = 0 +-2 `div` -2 = 1 +-2 `div` -1 = 2 +-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` 1 = -1 +-1 `div` 2 = -1 +-1 `div` 3 = -1 + +0 `div` -3 = 0 +0 `div` -2 = 0 +0 `div` -1 = 0 +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` 1 = 1 +1 `div` 2 = 0 +1 `div` 3 = 0 + +2 `div` -3 = -1 +2 `div` -2 = -1 +2 `div` -1 = -2 +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` 1 = 3 +3 `div` 2 = 1 +3 `div` 3 = 1 + +# +-3 `mod` -3 = 0 +-3 `mod` -2 = -1 +-3 `mod` -1 = 0 +-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` 1 = 0 +-2 `mod` 2 = 0 +-2 `mod` 3 = 1 + +-1 `mod` -3 = -1 +-1 `mod` -2 = -1 +-1 `mod` -1 = 0 +-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` 1 = 0 +0 `mod` 2 = 0 +0 `mod` 3 = 0 + +1 `mod` -3 = -2 +1 `mod` -2 = -1 +1 `mod` -1 = 0 +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` 1 = 0 +2 `mod` 2 = 0 +2 `mod` 3 = 2 + +3 `mod` -3 = 0 +3 `mod` -2 = -1 +3 `mod` -1 = 0 +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` 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` 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` 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` 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` 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` 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` 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` 1 = -3 +-3 `quot` 2 = -1 +-3 `quot` 3 = -1 + +-2 `quot` -3 = 0 +-2 `quot` -2 = 1 +-2 `quot` -1 = 2 +-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` 1 = -1 +-1 `quot` 2 = 0 +-1 `quot` 3 = 0 + +0 `quot` -3 = 0 +0 `quot` -2 = 0 +0 `quot` -1 = 0 +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` 1 = 1 +1 `quot` 2 = 0 +1 `quot` 3 = 0 + +2 `quot` -3 = 0 +2 `quot` -2 = -1 +2 `quot` -1 = -2 +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` 1 = 3 +3 `quot` 2 = 1 +3 `quot` 3 = 1 + +# +-3 `rem` -3 = 0 +-3 `rem` -2 = -1 +-3 `rem` -1 = 0 +-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` 1 = 0 +-2 `rem` 2 = 0 +-2 `rem` 3 = -2 + +-1 `rem` -3 = -1 +-1 `rem` -2 = -1 +-1 `rem` -1 = 0 +-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` 1 = 0 +0 `rem` 2 = 0 +0 `rem` 3 = 0 + +1 `rem` -3 = 1 +1 `rem` -2 = 1 +1 `rem` -1 = 0 +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` 1 = 0 +2 `rem` 2 = 0 +2 `rem` 3 = 2 + +3 `rem` -3 = 0 +3 `rem` -2 = 1 +3 `rem` -1 = 0 +3 `rem` 1 = 0 +3 `rem` 2 = 1 +3 `rem` 3 = 0 + +# +testBits +-3 .&. -3 = -3 +-3 .&. -2 = -4 +-3 .&. -1 = -3 +-3 .&. 1 = 1 +-3 .&. 2 = 0 +-3 .&. 3 = 1 + +-2 .&. -3 = -4 +-2 .&. -2 = -2 +-2 .&. -1 = -2 +-2 .&. 1 = 0 +-2 .&. 2 = 2 +-2 .&. 3 = 2 + +-1 .&. -3 = -3 +-1 .&. -2 = -2 +-1 .&. -1 = -1 +-1 .&. 1 = 1 +-1 .&. 2 = 2 +-1 .&. 3 = 3 + +0 .&. -3 = 0 +0 .&. -2 = 0 +0 .&. -1 = 0 +0 .&. 1 = 0 +0 .&. 2 = 0 +0 .&. 3 = 0 + +1 .&. -3 = 1 +1 .&. -2 = 0 +1 .&. -1 = 1 +1 .&. 1 = 1 +1 .&. 2 = 0 +1 .&. 3 = 1 + +2 .&. -3 = 0 +2 .&. -2 = 2 +2 .&. -1 = 2 +2 .&. 1 = 0 +2 .&. 2 = 2 +2 .&. 3 = 2 + +3 .&. -3 = 1 +3 .&. -2 = 2 +3 .&. -1 = 3 +3 .&. 1 = 1 +3 .&. 2 = 2 +3 .&. 3 = 3 + +# +-3 .|. -3 = -3 +-3 .|. -2 = -1 +-3 .|. -1 = -1 +-3 .|. 1 = -3 +-3 .|. 2 = -1 +-3 .|. 3 = -1 + +-2 .|. -3 = -1 +-2 .|. -2 = -2 +-2 .|. -1 = -1 +-2 .|. 1 = -1 +-2 .|. 2 = -2 +-2 .|. 3 = -1 + +-1 .|. -3 = -1 +-1 .|. -2 = -1 +-1 .|. -1 = -1 +-1 .|. 1 = -1 +-1 .|. 2 = -1 +-1 .|. 3 = -1 + +0 .|. -3 = -3 +0 .|. -2 = -2 +0 .|. -1 = -1 +0 .|. 1 = 1 +0 .|. 2 = 2 +0 .|. 3 = 3 + +1 .|. -3 = -3 +1 .|. -2 = -1 +1 .|. -1 = -1 +1 .|. 1 = 1 +1 .|. 2 = 3 +1 .|. 3 = 3 + +2 .|. -3 = -1 +2 .|. -2 = -2 +2 .|. -1 = -1 +2 .|. 1 = 3 +2 .|. 2 = 2 +2 .|. 3 = 3 + +3 .|. -3 = -1 +3 .|. -2 = -1 +3 .|. -1 = -1 +3 .|. 1 = 3 +3 .|. 2 = 3 +3 .|. 3 = 3 + +# +-3 `xor` -3 = 0 +-3 `xor` -2 = 3 +-3 `xor` -1 = 2 +-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` 1 = -1 +-2 `xor` 2 = -4 +-2 `xor` 3 = -3 + +-1 `xor` -3 = 2 +-1 `xor` -2 = 1 +-1 `xor` -1 = 0 +-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` 1 = 1 +0 `xor` 2 = 2 +0 `xor` 3 = 3 + +1 `xor` -3 = -4 +1 `xor` -2 = -1 +1 `xor` -1 = -2 +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` 1 = 3 +2 `xor` 2 = 0 +2 `xor` 3 = 1 + +3 `xor` -3 = -2 +3 `xor` -2 = -3 +3 `xor` -1 = -4 +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 `shift` 0 = -3 +-3 `shift` 1 = -6 +-3 `shift` 2 = -12 +-3 `shift` 3 = -24 + +-2 `shift` 0 = -2 +-2 `shift` 1 = -4 +-2 `shift` 2 = -8 +-2 `shift` 3 = -16 + +-1 `shift` 0 = -1 +-1 `shift` 1 = -2 +-1 `shift` 2 = -4 +-1 `shift` 3 = -8 + +0 `shift` 0 = 0 +0 `shift` 1 = 0 +0 `shift` 2 = 0 +0 `shift` 3 = 0 + +1 `shift` 0 = 1 +1 `shift` 1 = 2 +1 `shift` 2 = 4 +1 `shift` 3 = 8 + +2 `shift` 0 = 2 +2 `shift` 1 = 4 +2 `shift` 2 = 8 +2 `shift` 3 = 16 + +3 `shift` 0 = 3 +3 `shift` 1 = 6 +3 `shift` 2 = 12 +3 `shift` 3 = 24 + +# +-3 `rotate` -3 = -24545 +-3 `rotate` -2 = 16447 +-3 `rotate` -1 = -32642 +-3 `rotate` 0 = -3 +-3 `rotate` 1 = -5 +-3 `rotate` 2 = -9 +-3 `rotate` 3 = -17 + +-2 `rotate` -3 = -16353 +-2 `rotate` -2 = -32705 +-2 `rotate` -1 = 127 +-2 `rotate` 0 = -2 +-2 `rotate` 1 = -3 +-2 `rotate` 2 = -5 +-2 `rotate` 3 = -9 + +-1 `rotate` -3 = -8161 +-1 `rotate` -2 = -16321 +-1 `rotate` -1 = -32641 +-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 + +-2 `setBit` 0 = -1 +-2 `setBit` 1 = -2 +-2 `setBit` 2 = -2 +-2 `setBit` 3 = -2 + +-1 `setBit` 0 = -1 +-1 `setBit` 1 = -1 +-1 `setBit` 2 = -1 +-1 `setBit` 3 = -1 + +0 `setBit` 0 = 1 +0 `setBit` 1 = 2 +0 `setBit` 2 = 4 +0 `setBit` 3 = 8 + +1 `setBit` 0 = 1 +1 `setBit` 1 = 3 +1 `setBit` 2 = 5 +1 `setBit` 3 = 9 + +2 `setBit` 0 = 3 +2 `setBit` 1 = 2 +2 `setBit` 2 = 6 +2 `setBit` 3 = 10 + +3 `setBit` 0 = 3 +3 `setBit` 1 = 3 +3 `setBit` 2 = 7 +3 `setBit` 3 = 11 + +# +-3 `clearBit` 0 = -4 +-3 `clearBit` 1 = -3 +-3 `clearBit` 2 = -7 +-3 `clearBit` 3 = -11 + +-2 `clearBit` 0 = -2 +-2 `clearBit` 1 = -4 +-2 `clearBit` 2 = -6 +-2 `clearBit` 3 = -10 + +-1 `clearBit` 0 = -2 +-1 `clearBit` 1 = -3 +-1 `clearBit` 2 = -5 +-1 `clearBit` 3 = -9 + +0 `clearBit` 0 = 0 +0 `clearBit` 1 = 0 +0 `clearBit` 2 = 0 +0 `clearBit` 3 = 0 + +1 `clearBit` 0 = 0 +1 `clearBit` 1 = 1 +1 `clearBit` 2 = 1 +1 `clearBit` 3 = 1 + +2 `clearBit` 0 = 2 +2 `clearBit` 1 = 0 +2 `clearBit` 2 = 2 +2 `clearBit` 3 = 2 + +3 `clearBit` 0 = 2 +3 `clearBit` 1 = 1 +3 `clearBit` 2 = 3 +3 `clearBit` 3 = 3 + +# +-3 `complementBit` 0 = -4 +-3 `complementBit` 1 = -1 +-3 `complementBit` 2 = -7 +-3 `complementBit` 3 = -11 + +-2 `complementBit` 0 = -1 +-2 `complementBit` 1 = -4 +-2 `complementBit` 2 = -6 +-2 `complementBit` 3 = -10 + +-1 `complementBit` 0 = -2 +-1 `complementBit` 1 = -3 +-1 `complementBit` 2 = -5 +-1 `complementBit` 3 = -9 + +0 `complementBit` 0 = 1 +0 `complementBit` 1 = 2 +0 `complementBit` 2 = 4 +0 `complementBit` 3 = 8 + +1 `complementBit` 0 = 0 +1 `complementBit` 1 = 3 +1 `complementBit` 2 = 5 +1 `complementBit` 3 = 9 + +2 `complementBit` 0 = 3 +2 `complementBit` 1 = 0 +2 `complementBit` 2 = 6 +2 `complementBit` 3 = 10 + +3 `complementBit` 0 = 2 +3 `complementBit` 1 = 1 +3 `complementBit` 2 = 7 +3 `complementBit` 3 = 11 + +# +-3 `testBit` 0 = True +-3 `testBit` 1 = False +-3 `testBit` 2 = True +-3 `testBit` 3 = True + +-2 `testBit` 0 = False +-2 `testBit` 1 = True +-2 `testBit` 2 = True +-2 `testBit` 3 = True + +-1 `testBit` 0 = True +-1 `testBit` 1 = True +-1 `testBit` 2 = True +-1 `testBit` 3 = True + +0 `testBit` 0 = False +0 `testBit` 1 = False +0 `testBit` 2 = False +0 `testBit` 3 = False + +1 `testBit` 0 = True +1 `testBit` 1 = False +1 `testBit` 2 = False +1 `testBit` 3 = False + +2 `testBit` 0 = False +2 `testBit` 1 = True +2 `testBit` 2 = False +2 `testBit` 3 = False + +3 `testBit` 0 = True +3 `testBit` 1 = True +3 `testBit` 2 = False +3 `testBit` 3 = 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` 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` 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` 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` 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` 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` 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` 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` 1 = -3 +-3 `div` 2 = -2 +-3 `div` 3 = -1 + +-2 `div` -3 = 0 +-2 `div` -2 = 1 +-2 `div` -1 = 2 +-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` 1 = -1 +-1 `div` 2 = -1 +-1 `div` 3 = -1 + +0 `div` -3 = 0 +0 `div` -2 = 0 +0 `div` -1 = 0 +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` 1 = 1 +1 `div` 2 = 0 +1 `div` 3 = 0 + +2 `div` -3 = -1 +2 `div` -2 = -1 +2 `div` -1 = -2 +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` 1 = 3 +3 `div` 2 = 1 +3 `div` 3 = 1 + +# +-3 `mod` -3 = 0 +-3 `mod` -2 = -1 +-3 `mod` -1 = 0 +-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` 1 = 0 +-2 `mod` 2 = 0 +-2 `mod` 3 = 1 + +-1 `mod` -3 = -1 +-1 `mod` -2 = -1 +-1 `mod` -1 = 0 +-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` 1 = 0 +0 `mod` 2 = 0 +0 `mod` 3 = 0 + +1 `mod` -3 = -2 +1 `mod` -2 = -1 +1 `mod` -1 = 0 +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` 1 = 0 +2 `mod` 2 = 0 +2 `mod` 3 = 2 + +3 `mod` -3 = 0 +3 `mod` -2 = -1 +3 `mod` -1 = 0 +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` 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` 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` 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` 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` 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` 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` 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` 1 = -3 +-3 `quot` 2 = -1 +-3 `quot` 3 = -1 + +-2 `quot` -3 = 0 +-2 `quot` -2 = 1 +-2 `quot` -1 = 2 +-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` 1 = -1 +-1 `quot` 2 = 0 +-1 `quot` 3 = 0 + +0 `quot` -3 = 0 +0 `quot` -2 = 0 +0 `quot` -1 = 0 +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` 1 = 1 +1 `quot` 2 = 0 +1 `quot` 3 = 0 + +2 `quot` -3 = 0 +2 `quot` -2 = -1 +2 `quot` -1 = -2 +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` 1 = 3 +3 `quot` 2 = 1 +3 `quot` 3 = 1 + +# +-3 `rem` -3 = 0 +-3 `rem` -2 = -1 +-3 `rem` -1 = 0 +-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` 1 = 0 +-2 `rem` 2 = 0 +-2 `rem` 3 = -2 + +-1 `rem` -3 = -1 +-1 `rem` -2 = -1 +-1 `rem` -1 = 0 +-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` 1 = 0 +0 `rem` 2 = 0 +0 `rem` 3 = 0 + +1 `rem` -3 = 1 +1 `rem` -2 = 1 +1 `rem` -1 = 0 +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` 1 = 0 +2 `rem` 2 = 0 +2 `rem` 3 = 2 + +3 `rem` -3 = 0 +3 `rem` -2 = 1 +3 `rem` -1 = 0 +3 `rem` 1 = 0 +3 `rem` 2 = 1 +3 `rem` 3 = 0 + +# +testBits +-3 .&. -3 = -3 +-3 .&. -2 = -4 +-3 .&. -1 = -3 +-3 .&. 1 = 1 +-3 .&. 2 = 0 +-3 .&. 3 = 1 + +-2 .&. -3 = -4 +-2 .&. -2 = -2 +-2 .&. -1 = -2 +-2 .&. 1 = 0 +-2 .&. 2 = 2 +-2 .&. 3 = 2 + +-1 .&. -3 = -3 +-1 .&. -2 = -2 +-1 .&. -1 = -1 +-1 .&. 1 = 1 +-1 .&. 2 = 2 +-1 .&. 3 = 3 + +0 .&. -3 = 0 +0 .&. -2 = 0 +0 .&. -1 = 0 +0 .&. 1 = 0 +0 .&. 2 = 0 +0 .&. 3 = 0 + +1 .&. -3 = 1 +1 .&. -2 = 0 +1 .&. -1 = 1 +1 .&. 1 = 1 +1 .&. 2 = 0 +1 .&. 3 = 1 + +2 .&. -3 = 0 +2 .&. -2 = 2 +2 .&. -1 = 2 +2 .&. 1 = 0 +2 .&. 2 = 2 +2 .&. 3 = 2 + +3 .&. -3 = 1 +3 .&. -2 = 2 +3 .&. -1 = 3 +3 .&. 1 = 1 +3 .&. 2 = 2 +3 .&. 3 = 3 + +# +-3 .|. -3 = -3 +-3 .|. -2 = -1 +-3 .|. -1 = -1 +-3 .|. 1 = -3 +-3 .|. 2 = -1 +-3 .|. 3 = -1 + +-2 .|. -3 = -1 +-2 .|. -2 = -2 +-2 .|. -1 = -1 +-2 .|. 1 = -1 +-2 .|. 2 = -2 +-2 .|. 3 = -1 + +-1 .|. -3 = -1 +-1 .|. -2 = -1 +-1 .|. -1 = -1 +-1 .|. 1 = -1 +-1 .|. 2 = -1 +-1 .|. 3 = -1 + +0 .|. -3 = -3 +0 .|. -2 = -2 +0 .|. -1 = -1 +0 .|. 1 = 1 +0 .|. 2 = 2 +0 .|. 3 = 3 + +1 .|. -3 = -3 +1 .|. -2 = -1 +1 .|. -1 = -1 +1 .|. 1 = 1 +1 .|. 2 = 3 +1 .|. 3 = 3 + +2 .|. -3 = -1 +2 .|. -2 = -2 +2 .|. -1 = -1 +2 .|. 1 = 3 +2 .|. 2 = 2 +2 .|. 3 = 3 + +3 .|. -3 = -1 +3 .|. -2 = -1 +3 .|. -1 = -1 +3 .|. 1 = 3 +3 .|. 2 = 3 +3 .|. 3 = 3 + +# +-3 `xor` -3 = 0 +-3 `xor` -2 = 3 +-3 `xor` -1 = 2 +-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` 1 = -1 +-2 `xor` 2 = -4 +-2 `xor` 3 = -3 + +-1 `xor` -3 = 2 +-1 `xor` -2 = 1 +-1 `xor` -1 = 0 +-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` 1 = 1 +0 `xor` 2 = 2 +0 `xor` 3 = 3 + +1 `xor` -3 = -4 +1 `xor` -2 = -1 +1 `xor` -1 = -2 +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` 1 = 3 +2 `xor` 2 = 0 +2 `xor` 3 = 1 + +3 `xor` -3 = -2 +3 `xor` -2 = -3 +3 `xor` -1 = -4 +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 `shift` 0 = -3 +-3 `shift` 1 = -6 +-3 `shift` 2 = -12 +-3 `shift` 3 = -24 + +-2 `shift` 0 = -2 +-2 `shift` 1 = -4 +-2 `shift` 2 = -8 +-2 `shift` 3 = -16 + +-1 `shift` 0 = -1 +-1 `shift` 1 = -2 +-1 `shift` 2 = -4 +-1 `shift` 3 = -8 + +0 `shift` 0 = 0 +0 `shift` 1 = 0 +0 `shift` 2 = 0 +0 `shift` 3 = 0 + +1 `shift` 0 = 1 +1 `shift` 1 = 2 +1 `shift` 2 = 4 +1 `shift` 3 = 8 + +2 `shift` 0 = 2 +2 `shift` 1 = 4 +2 `shift` 2 = 8 +2 `shift` 3 = 16 + +3 `shift` 0 = 3 +3 `shift` 1 = 6 +3 `shift` 2 = 12 +3 `shift` 3 = 24 + +# +-3 `rotate` -3 = -1342177281 +-3 `rotate` -2 = 1610612735 +-3 `rotate` -1 = -1073741826 +-3 `rotate` 0 = -3 +-3 `rotate` 1 = -6 +-3 `rotate` 2 = -11 +-3 `rotate` 3 = -21 + +-2 `rotate` -3 = -805306369 +-2 `rotate` -2 = -1610612737 +-2 `rotate` -1 = 1073741823 +-2 `rotate` 0 = -2 +-2 `rotate` 1 = -4 +-2 `rotate` 2 = -7 +-2 `rotate` 3 = -13 + +-1 `rotate` -3 = -268435457 +-1 `rotate` -2 = -536870913 +-1 `rotate` -1 = -1073741825 +-1 `rotate` 0 = -1 +-1 `rotate` 1 = -2 +-1 `rotate` 2 = -3 +-1 `rotate` 3 = -5 + +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 + +-2 `setBit` 0 = -1 +-2 `setBit` 1 = -2 +-2 `setBit` 2 = -2 +-2 `setBit` 3 = -2 + +-1 `setBit` 0 = -1 +-1 `setBit` 1 = -1 +-1 `setBit` 2 = -1 +-1 `setBit` 3 = -1 + +0 `setBit` 0 = 1 +0 `setBit` 1 = 2 +0 `setBit` 2 = 4 +0 `setBit` 3 = 8 + +1 `setBit` 0 = 1 +1 `setBit` 1 = 3 +1 `setBit` 2 = 5 +1 `setBit` 3 = 9 + +2 `setBit` 0 = 3 +2 `setBit` 1 = 2 +2 `setBit` 2 = 6 +2 `setBit` 3 = 10 + +3 `setBit` 0 = 3 +3 `setBit` 1 = 3 +3 `setBit` 2 = 7 +3 `setBit` 3 = 11 + +# +-3 `clearBit` 0 = -4 +-3 `clearBit` 1 = -3 +-3 `clearBit` 2 = -7 +-3 `clearBit` 3 = -11 + +-2 `clearBit` 0 = -2 +-2 `clearBit` 1 = -4 +-2 `clearBit` 2 = -6 +-2 `clearBit` 3 = -10 + +-1 `clearBit` 0 = -2 +-1 `clearBit` 1 = -3 +-1 `clearBit` 2 = -5 +-1 `clearBit` 3 = -9 + +0 `clearBit` 0 = 0 +0 `clearBit` 1 = 0 +0 `clearBit` 2 = 0 +0 `clearBit` 3 = 0 + +1 `clearBit` 0 = 0 +1 `clearBit` 1 = 1 +1 `clearBit` 2 = 1 +1 `clearBit` 3 = 1 + +2 `clearBit` 0 = 2 +2 `clearBit` 1 = 0 +2 `clearBit` 2 = 2 +2 `clearBit` 3 = 2 + +3 `clearBit` 0 = 2 +3 `clearBit` 1 = 1 +3 `clearBit` 2 = 3 +3 `clearBit` 3 = 3 + +# +-3 `complementBit` 0 = -4 +-3 `complementBit` 1 = -1 +-3 `complementBit` 2 = -7 +-3 `complementBit` 3 = -11 + +-2 `complementBit` 0 = -1 +-2 `complementBit` 1 = -4 +-2 `complementBit` 2 = -6 +-2 `complementBit` 3 = -10 + +-1 `complementBit` 0 = -2 +-1 `complementBit` 1 = -3 +-1 `complementBit` 2 = -5 +-1 `complementBit` 3 = -9 + +0 `complementBit` 0 = 1 +0 `complementBit` 1 = 2 +0 `complementBit` 2 = 4 +0 `complementBit` 3 = 8 + +1 `complementBit` 0 = 0 +1 `complementBit` 1 = 3 +1 `complementBit` 2 = 5 +1 `complementBit` 3 = 9 + +2 `complementBit` 0 = 3 +2 `complementBit` 1 = 0 +2 `complementBit` 2 = 6 +2 `complementBit` 3 = 10 + +3 `complementBit` 0 = 2 +3 `complementBit` 1 = 1 +3 `complementBit` 2 = 7 +3 `complementBit` 3 = 11 + +# +-3 `testBit` 0 = True +-3 `testBit` 1 = False +-3 `testBit` 2 = True +-3 `testBit` 3 = True + +-2 `testBit` 0 = False +-2 `testBit` 1 = True +-2 `testBit` 2 = True +-2 `testBit` 3 = True + +-1 `testBit` 0 = True +-1 `testBit` 1 = True +-1 `testBit` 2 = True +-1 `testBit` 3 = True + +0 `testBit` 0 = False +0 `testBit` 1 = False +0 `testBit` 2 = False +0 `testBit` 3 = False + +1 `testBit` 0 = True +1 `testBit` 1 = False +1 `testBit` 2 = False +1 `testBit` 3 = False + +2 `testBit` 0 = False +2 `testBit` 1 = True +2 `testBit` 2 = False +2 `testBit` 3 = False + +3 `testBit` 0 = True +3 `testBit` 1 = True +3 `testBit` 2 = False +3 `testBit` 3 = 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 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` 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` 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` 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` 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` 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` 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` 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` 1 = 253 +253 `div` 2 = 126 +253 `div` 3 = 84 + +254 `div` 253 = 1 +254 `div` 254 = 1 +254 `div` 255 = 0 +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` 1 = 255 +255 `div` 2 = 127 +255 `div` 3 = 85 + +0 `div` 253 = 0 +0 `div` 254 = 0 +0 `div` 255 = 0 +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` 1 = 1 +1 `div` 2 = 0 +1 `div` 3 = 0 + +2 `div` 253 = 0 +2 `div` 254 = 0 +2 `div` 255 = 0 +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` 1 = 3 +3 `div` 2 = 1 +3 `div` 3 = 1 + +# +253 `mod` 253 = 0 +253 `mod` 254 = 253 +253 `mod` 255 = 253 +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` 1 = 0 +254 `mod` 2 = 0 +254 `mod` 3 = 2 + +255 `mod` 253 = 2 +255 `mod` 254 = 1 +255 `mod` 255 = 0 +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` 1 = 0 +0 `mod` 2 = 0 +0 `mod` 3 = 0 + +1 `mod` 253 = 1 +1 `mod` 254 = 1 +1 `mod` 255 = 1 +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` 1 = 0 +2 `mod` 2 = 0 +2 `mod` 3 = 2 + +3 `mod` 253 = 3 +3 `mod` 254 = 3 +3 `mod` 255 = 3 +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` 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` 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` 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` 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` 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` 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` 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` 1 = 253 +253 `quot` 2 = 126 +253 `quot` 3 = 84 + +254 `quot` 253 = 1 +254 `quot` 254 = 1 +254 `quot` 255 = 0 +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` 1 = 255 +255 `quot` 2 = 127 +255 `quot` 3 = 85 + +0 `quot` 253 = 0 +0 `quot` 254 = 0 +0 `quot` 255 = 0 +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` 1 = 1 +1 `quot` 2 = 0 +1 `quot` 3 = 0 + +2 `quot` 253 = 0 +2 `quot` 254 = 0 +2 `quot` 255 = 0 +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` 1 = 3 +3 `quot` 2 = 1 +3 `quot` 3 = 1 + +# +253 `rem` 253 = 0 +253 `rem` 254 = 253 +253 `rem` 255 = 253 +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` 1 = 0 +254 `rem` 2 = 0 +254 `rem` 3 = 2 + +255 `rem` 253 = 2 +255 `rem` 254 = 1 +255 `rem` 255 = 0 +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` 1 = 0 +0 `rem` 2 = 0 +0 `rem` 3 = 0 + +1 `rem` 253 = 1 +1 `rem` 254 = 1 +1 `rem` 255 = 1 +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` 1 = 0 +2 `rem` 2 = 0 +2 `rem` 3 = 2 + +3 `rem` 253 = 3 +3 `rem` 254 = 3 +3 `rem` 255 = 3 +3 `rem` 1 = 0 +3 `rem` 2 = 1 +3 `rem` 3 = 0 + +# +testBits +253 .&. 253 = 253 +253 .&. 254 = 252 +253 .&. 255 = 253 +253 .&. 1 = 1 +253 .&. 2 = 0 +253 .&. 3 = 1 + +254 .&. 253 = 252 +254 .&. 254 = 254 +254 .&. 255 = 254 +254 .&. 1 = 0 +254 .&. 2 = 2 +254 .&. 3 = 2 + +255 .&. 253 = 253 +255 .&. 254 = 254 +255 .&. 255 = 255 +255 .&. 1 = 1 +255 .&. 2 = 2 +255 .&. 3 = 3 + +0 .&. 253 = 0 +0 .&. 254 = 0 +0 .&. 255 = 0 +0 .&. 1 = 0 +0 .&. 2 = 0 +0 .&. 3 = 0 + +1 .&. 253 = 1 +1 .&. 254 = 0 +1 .&. 255 = 1 +1 .&. 1 = 1 +1 .&. 2 = 0 +1 .&. 3 = 1 + +2 .&. 253 = 0 +2 .&. 254 = 2 +2 .&. 255 = 2 +2 .&. 1 = 0 +2 .&. 2 = 2 +2 .&. 3 = 2 + +3 .&. 253 = 1 +3 .&. 254 = 2 +3 .&. 255 = 3 +3 .&. 1 = 1 +3 .&. 2 = 2 +3 .&. 3 = 3 + +# +253 .|. 253 = 253 +253 .|. 254 = 255 +253 .|. 255 = 255 +253 .|. 1 = 253 +253 .|. 2 = 255 +253 .|. 3 = 255 + +254 .|. 253 = 255 +254 .|. 254 = 254 +254 .|. 255 = 255 +254 .|. 1 = 255 +254 .|. 2 = 254 +254 .|. 3 = 255 + +255 .|. 253 = 255 +255 .|. 254 = 255 +255 .|. 255 = 255 +255 .|. 1 = 255 +255 .|. 2 = 255 +255 .|. 3 = 255 + +0 .|. 253 = 253 +0 .|. 254 = 254 +0 .|. 255 = 255 +0 .|. 1 = 1 +0 .|. 2 = 2 +0 .|. 3 = 3 + +1 .|. 253 = 253 +1 .|. 254 = 255 +1 .|. 255 = 255 +1 .|. 1 = 1 +1 .|. 2 = 3 +1 .|. 3 = 3 + +2 .|. 253 = 255 +2 .|. 254 = 254 +2 .|. 255 = 255 +2 .|. 1 = 3 +2 .|. 2 = 2 +2 .|. 3 = 3 + +3 .|. 253 = 255 +3 .|. 254 = 255 +3 .|. 255 = 255 +3 .|. 1 = 3 +3 .|. 2 = 3 +3 .|. 3 = 3 + +# +253 `xor` 253 = 0 +253 `xor` 254 = 3 +253 `xor` 255 = 2 +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` 1 = 255 +254 `xor` 2 = 252 +254 `xor` 3 = 253 + +255 `xor` 253 = 2 +255 `xor` 254 = 1 +255 `xor` 255 = 0 +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` 1 = 1 +0 `xor` 2 = 2 +0 `xor` 3 = 3 + +1 `xor` 253 = 252 +1 `xor` 254 = 255 +1 `xor` 255 = 254 +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` 1 = 3 +2 `xor` 2 = 0 +2 `xor` 3 = 1 + +3 `xor` 253 = 254 +3 `xor` 254 = 253 +3 `xor` 255 = 252 +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 `shift` 0 = 253 +253 `shift` 1 = 250 +253 `shift` 2 = 244 +253 `shift` 3 = 232 + +254 `shift` 0 = 254 +254 `shift` 1 = 252 +254 `shift` 2 = 248 +254 `shift` 3 = 240 + +255 `shift` 0 = 255 +255 `shift` 1 = 254 +255 `shift` 2 = 252 +255 `shift` 3 = 248 + +0 `shift` 0 = 0 +0 `shift` 1 = 0 +0 `shift` 2 = 0 +0 `shift` 3 = 0 + +1 `shift` 0 = 1 +1 `shift` 1 = 2 +1 `shift` 2 = 4 +1 `shift` 3 = 8 + +2 `shift` 0 = 2 +2 `shift` 1 = 4 +2 `shift` 2 = 8 +2 `shift` 3 = 16 + +3 `shift` 0 = 3 +3 `shift` 1 = 6 +3 `shift` 2 = 12 +3 `shift` 3 = 24 + +# +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 + +254 `setBit` 0 = 255 +254 `setBit` 1 = 254 +254 `setBit` 2 = 254 +254 `setBit` 3 = 254 + +255 `setBit` 0 = 255 +255 `setBit` 1 = 255 +255 `setBit` 2 = 255 +255 `setBit` 3 = 255 + +0 `setBit` 0 = 1 +0 `setBit` 1 = 2 +0 `setBit` 2 = 4 +0 `setBit` 3 = 8 + +1 `setBit` 0 = 1 +1 `setBit` 1 = 3 +1 `setBit` 2 = 5 +1 `setBit` 3 = 9 + +2 `setBit` 0 = 3 +2 `setBit` 1 = 2 +2 `setBit` 2 = 6 +2 `setBit` 3 = 10 + +3 `setBit` 0 = 3 +3 `setBit` 1 = 3 +3 `setBit` 2 = 7 +3 `setBit` 3 = 11 + +# +253 `clearBit` 0 = 252 +253 `clearBit` 1 = 253 +253 `clearBit` 2 = 249 +253 `clearBit` 3 = 245 + +254 `clearBit` 0 = 254 +254 `clearBit` 1 = 252 +254 `clearBit` 2 = 250 +254 `clearBit` 3 = 246 + +255 `clearBit` 0 = 254 +255 `clearBit` 1 = 253 +255 `clearBit` 2 = 251 +255 `clearBit` 3 = 247 + +0 `clearBit` 0 = 0 +0 `clearBit` 1 = 0 +0 `clearBit` 2 = 0 +0 `clearBit` 3 = 0 + +1 `clearBit` 0 = 0 +1 `clearBit` 1 = 1 +1 `clearBit` 2 = 1 +1 `clearBit` 3 = 1 + +2 `clearBit` 0 = 2 +2 `clearBit` 1 = 0 +2 `clearBit` 2 = 2 +2 `clearBit` 3 = 2 + +3 `clearBit` 0 = 2 +3 `clearBit` 1 = 1 +3 `clearBit` 2 = 3 +3 `clearBit` 3 = 3 + +# +253 `complementBit` 0 = 252 +253 `complementBit` 1 = 255 +253 `complementBit` 2 = 249 +253 `complementBit` 3 = 245 + +254 `complementBit` 0 = 255 +254 `complementBit` 1 = 252 +254 `complementBit` 2 = 250 +254 `complementBit` 3 = 246 + +255 `complementBit` 0 = 254 +255 `complementBit` 1 = 253 +255 `complementBit` 2 = 251 +255 `complementBit` 3 = 247 + +0 `complementBit` 0 = 1 +0 `complementBit` 1 = 2 +0 `complementBit` 2 = 4 +0 `complementBit` 3 = 8 + +1 `complementBit` 0 = 0 +1 `complementBit` 1 = 3 +1 `complementBit` 2 = 5 +1 `complementBit` 3 = 9 + +2 `complementBit` 0 = 3 +2 `complementBit` 1 = 0 +2 `complementBit` 2 = 6 +2 `complementBit` 3 = 10 + +3 `complementBit` 0 = 2 +3 `complementBit` 1 = 1 +3 `complementBit` 2 = 7 +3 `complementBit` 3 = 11 + +# +253 `testBit` 0 = True +253 `testBit` 1 = False +253 `testBit` 2 = True +253 `testBit` 3 = True + +254 `testBit` 0 = False +254 `testBit` 1 = True +254 `testBit` 2 = True +254 `testBit` 3 = True + +255 `testBit` 0 = True +255 `testBit` 1 = True +255 `testBit` 2 = True +255 `testBit` 3 = True + +0 `testBit` 0 = False +0 `testBit` 1 = False +0 `testBit` 2 = False +0 `testBit` 3 = False + +1 `testBit` 0 = True +1 `testBit` 1 = False +1 `testBit` 2 = False +1 `testBit` 3 = False + +2 `testBit` 0 = False +2 `testBit` 1 = True +2 `testBit` 2 = False +2 `testBit` 3 = False + +3 `testBit` 0 = True +3 `testBit` 1 = True +3 `testBit` 2 = False +3 `testBit` 3 = 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` 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` 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` 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` 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` 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` 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` 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` 1 = 65533 +65533 `div` 2 = 32766 +65533 `div` 3 = 21844 + +65534 `div` 65533 = 1 +65534 `div` 65534 = 1 +65534 `div` 65535 = 0 +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` 1 = 65535 +65535 `div` 2 = 32767 +65535 `div` 3 = 21845 + +0 `div` 65533 = 0 +0 `div` 65534 = 0 +0 `div` 65535 = 0 +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` 1 = 1 +1 `div` 2 = 0 +1 `div` 3 = 0 + +2 `div` 65533 = 0 +2 `div` 65534 = 0 +2 `div` 65535 = 0 +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` 1 = 3 +3 `div` 2 = 1 +3 `div` 3 = 1 + +# +65533 `mod` 65533 = 0 +65533 `mod` 65534 = 65533 +65533 `mod` 65535 = 65533 +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` 1 = 0 +65534 `mod` 2 = 0 +65534 `mod` 3 = 2 + +65535 `mod` 65533 = 2 +65535 `mod` 65534 = 1 +65535 `mod` 65535 = 0 +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` 1 = 0 +0 `mod` 2 = 0 +0 `mod` 3 = 0 + +1 `mod` 65533 = 1 +1 `mod` 65534 = 1 +1 `mod` 65535 = 1 +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` 1 = 0 +2 `mod` 2 = 0 +2 `mod` 3 = 2 + +3 `mod` 65533 = 3 +3 `mod` 65534 = 3 +3 `mod` 65535 = 3 +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` 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` 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` 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` 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` 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` 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` 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` 1 = 65533 +65533 `quot` 2 = 32766 +65533 `quot` 3 = 21844 + +65534 `quot` 65533 = 1 +65534 `quot` 65534 = 1 +65534 `quot` 65535 = 0 +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` 1 = 65535 +65535 `quot` 2 = 32767 +65535 `quot` 3 = 21845 + +0 `quot` 65533 = 0 +0 `quot` 65534 = 0 +0 `quot` 65535 = 0 +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` 1 = 1 +1 `quot` 2 = 0 +1 `quot` 3 = 0 + +2 `quot` 65533 = 0 +2 `quot` 65534 = 0 +2 `quot` 65535 = 0 +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` 1 = 3 +3 `quot` 2 = 1 +3 `quot` 3 = 1 + +# +65533 `rem` 65533 = 0 +65533 `rem` 65534 = 65533 +65533 `rem` 65535 = 65533 +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` 1 = 0 +65534 `rem` 2 = 0 +65534 `rem` 3 = 2 + +65535 `rem` 65533 = 2 +65535 `rem` 65534 = 1 +65535 `rem` 65535 = 0 +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` 1 = 0 +0 `rem` 2 = 0 +0 `rem` 3 = 0 + +1 `rem` 65533 = 1 +1 `rem` 65534 = 1 +1 `rem` 65535 = 1 +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` 1 = 0 +2 `rem` 2 = 0 +2 `rem` 3 = 2 + +3 `rem` 65533 = 3 +3 `rem` 65534 = 3 +3 `rem` 65535 = 3 +3 `rem` 1 = 0 +3 `rem` 2 = 1 +3 `rem` 3 = 0 + +# +testBits +65533 .&. 65533 = 65533 +65533 .&. 65534 = 65532 +65533 .&. 65535 = 65533 +65533 .&. 1 = 1 +65533 .&. 2 = 0 +65533 .&. 3 = 1 + +65534 .&. 65533 = 65532 +65534 .&. 65534 = 65534 +65534 .&. 65535 = 65534 +65534 .&. 1 = 0 +65534 .&. 2 = 2 +65534 .&. 3 = 2 + +65535 .&. 65533 = 65533 +65535 .&. 65534 = 65534 +65535 .&. 65535 = 65535 +65535 .&. 1 = 1 +65535 .&. 2 = 2 +65535 .&. 3 = 3 + +0 .&. 65533 = 0 +0 .&. 65534 = 0 +0 .&. 65535 = 0 +0 .&. 1 = 0 +0 .&. 2 = 0 +0 .&. 3 = 0 + +1 .&. 65533 = 1 +1 .&. 65534 = 0 +1 .&. 65535 = 1 +1 .&. 1 = 1 +1 .&. 2 = 0 +1 .&. 3 = 1 + +2 .&. 65533 = 0 +2 .&. 65534 = 2 +2 .&. 65535 = 2 +2 .&. 1 = 0 +2 .&. 2 = 2 +2 .&. 3 = 2 + +3 .&. 65533 = 1 +3 .&. 65534 = 2 +3 .&. 65535 = 3 +3 .&. 1 = 1 +3 .&. 2 = 2 +3 .&. 3 = 3 + +# +65533 .|. 65533 = 65533 +65533 .|. 65534 = 65535 +65533 .|. 65535 = 65535 +65533 .|. 1 = 65533 +65533 .|. 2 = 65535 +65533 .|. 3 = 65535 + +65534 .|. 65533 = 65535 +65534 .|. 65534 = 65534 +65534 .|. 65535 = 65535 +65534 .|. 1 = 65535 +65534 .|. 2 = 65534 +65534 .|. 3 = 65535 + +65535 .|. 65533 = 65535 +65535 .|. 65534 = 65535 +65535 .|. 65535 = 65535 +65535 .|. 1 = 65535 +65535 .|. 2 = 65535 +65535 .|. 3 = 65535 + +0 .|. 65533 = 65533 +0 .|. 65534 = 65534 +0 .|. 65535 = 65535 +0 .|. 1 = 1 +0 .|. 2 = 2 +0 .|. 3 = 3 + +1 .|. 65533 = 65533 +1 .|. 65534 = 65535 +1 .|. 65535 = 65535 +1 .|. 1 = 1 +1 .|. 2 = 3 +1 .|. 3 = 3 + +2 .|. 65533 = 65535 +2 .|. 65534 = 65534 +2 .|. 65535 = 65535 +2 .|. 1 = 3 +2 .|. 2 = 2 +2 .|. 3 = 3 + +3 .|. 65533 = 65535 +3 .|. 65534 = 65535 +3 .|. 65535 = 65535 +3 .|. 1 = 3 +3 .|. 2 = 3 +3 .|. 3 = 3 + +# +65533 `xor` 65533 = 0 +65533 `xor` 65534 = 3 +65533 `xor` 65535 = 2 +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` 1 = 65535 +65534 `xor` 2 = 65532 +65534 `xor` 3 = 65533 + +65535 `xor` 65533 = 2 +65535 `xor` 65534 = 1 +65535 `xor` 65535 = 0 +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` 1 = 1 +0 `xor` 2 = 2 +0 `xor` 3 = 3 + +1 `xor` 65533 = 65532 +1 `xor` 65534 = 65535 +1 `xor` 65535 = 65534 +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` 1 = 3 +2 `xor` 2 = 0 +2 `xor` 3 = 1 + +3 `xor` 65533 = 65534 +3 `xor` 65534 = 65533 +3 `xor` 65535 = 65532 +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 `shift` 0 = 65533 +65533 `shift` 1 = 65530 +65533 `shift` 2 = 65524 +65533 `shift` 3 = 65512 + +65534 `shift` 0 = 65534 +65534 `shift` 1 = 65532 +65534 `shift` 2 = 65528 +65534 `shift` 3 = 65520 + +65535 `shift` 0 = 65535 +65535 `shift` 1 = 65534 +65535 `shift` 2 = 65532 +65535 `shift` 3 = 65528 + +0 `shift` 0 = 0 +0 `shift` 1 = 0 +0 `shift` 2 = 0 +0 `shift` 3 = 0 + +1 `shift` 0 = 1 +1 `shift` 1 = 2 +1 `shift` 2 = 4 +1 `shift` 3 = 8 + +2 `shift` 0 = 2 +2 `shift` 1 = 4 +2 `shift` 2 = 8 +2 `shift` 3 = 16 + +3 `shift` 0 = 3 +3 `shift` 1 = 6 +3 `shift` 2 = 12 +3 `shift` 3 = 24 + +# +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 + +65534 `setBit` 0 = 65535 +65534 `setBit` 1 = 65534 +65534 `setBit` 2 = 65534 +65534 `setBit` 3 = 65534 + +65535 `setBit` 0 = 65535 +65535 `setBit` 1 = 65535 +65535 `setBit` 2 = 65535 +65535 `setBit` 3 = 65535 + +0 `setBit` 0 = 1 +0 `setBit` 1 = 2 +0 `setBit` 2 = 4 +0 `setBit` 3 = 8 + +1 `setBit` 0 = 1 +1 `setBit` 1 = 3 +1 `setBit` 2 = 5 +1 `setBit` 3 = 9 + +2 `setBit` 0 = 3 +2 `setBit` 1 = 2 +2 `setBit` 2 = 6 +2 `setBit` 3 = 10 + +3 `setBit` 0 = 3 +3 `setBit` 1 = 3 +3 `setBit` 2 = 7 +3 `setBit` 3 = 11 + +# +65533 `clearBit` 0 = 65532 +65533 `clearBit` 1 = 65533 +65533 `clearBit` 2 = 65529 +65533 `clearBit` 3 = 65525 + +65534 `clearBit` 0 = 65534 +65534 `clearBit` 1 = 65532 +65534 `clearBit` 2 = 65530 +65534 `clearBit` 3 = 65526 + +65535 `clearBit` 0 = 65534 +65535 `clearBit` 1 = 65533 +65535 `clearBit` 2 = 65531 +65535 `clearBit` 3 = 65527 + +0 `clearBit` 0 = 0 +0 `clearBit` 1 = 0 +0 `clearBit` 2 = 0 +0 `clearBit` 3 = 0 + +1 `clearBit` 0 = 0 +1 `clearBit` 1 = 1 +1 `clearBit` 2 = 1 +1 `clearBit` 3 = 1 + +2 `clearBit` 0 = 2 +2 `clearBit` 1 = 0 +2 `clearBit` 2 = 2 +2 `clearBit` 3 = 2 + +3 `clearBit` 0 = 2 +3 `clearBit` 1 = 1 +3 `clearBit` 2 = 3 +3 `clearBit` 3 = 3 + +# +65533 `complementBit` 0 = 65532 +65533 `complementBit` 1 = 65535 +65533 `complementBit` 2 = 65529 +65533 `complementBit` 3 = 65525 + +65534 `complementBit` 0 = 65535 +65534 `complementBit` 1 = 65532 +65534 `complementBit` 2 = 65530 +65534 `complementBit` 3 = 65526 + +65535 `complementBit` 0 = 65534 +65535 `complementBit` 1 = 65533 +65535 `complementBit` 2 = 65531 +65535 `complementBit` 3 = 65527 + +0 `complementBit` 0 = 1 +0 `complementBit` 1 = 2 +0 `complementBit` 2 = 4 +0 `complementBit` 3 = 8 + +1 `complementBit` 0 = 0 +1 `complementBit` 1 = 3 +1 `complementBit` 2 = 5 +1 `complementBit` 3 = 9 + +2 `complementBit` 0 = 3 +2 `complementBit` 1 = 0 +2 `complementBit` 2 = 6 +2 `complementBit` 3 = 10 + +3 `complementBit` 0 = 2 +3 `complementBit` 1 = 1 +3 `complementBit` 2 = 7 +3 `complementBit` 3 = 11 + +# +65533 `testBit` 0 = True +65533 `testBit` 1 = False +65533 `testBit` 2 = True +65533 `testBit` 3 = True + +65534 `testBit` 0 = False +65534 `testBit` 1 = True +65534 `testBit` 2 = True +65534 `testBit` 3 = True + +65535 `testBit` 0 = True +65535 `testBit` 1 = True +65535 `testBit` 2 = True +65535 `testBit` 3 = True + +0 `testBit` 0 = False +0 `testBit` 1 = False +0 `testBit` 2 = False +0 `testBit` 3 = False + +1 `testBit` 0 = True +1 `testBit` 1 = False +1 `testBit` 2 = False +1 `testBit` 3 = False + +2 `testBit` 0 = False +2 `testBit` 1 = True +2 `testBit` 2 = False +2 `testBit` 3 = False + +3 `testBit` 0 = True +3 `testBit` 1 = True +3 `testBit` 2 = False +3 `testBit` 3 = 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, 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` 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` 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` 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` 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` 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` 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` 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` 1 = 4294967293 +4294967293 `div` 2 = 2147483646 +4294967293 `div` 3 = 1431655764 + +4294967294 `div` 4294967293 = 1 +4294967294 `div` 4294967294 = 1 +4294967294 `div` 4294967295 = 0 +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` 1 = 4294967295 +4294967295 `div` 2 = 2147483647 +4294967295 `div` 3 = 1431655765 + +0 `div` 4294967293 = 0 +0 `div` 4294967294 = 0 +0 `div` 4294967295 = 0 +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` 1 = 1 +1 `div` 2 = 0 +1 `div` 3 = 0 + +2 `div` 4294967293 = 0 +2 `div` 4294967294 = 0 +2 `div` 4294967295 = 0 +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` 1 = 3 +3 `div` 2 = 1 +3 `div` 3 = 1 + +# +4294967293 `mod` 4294967293 = 0 +4294967293 `mod` 4294967294 = 4294967293 +4294967293 `mod` 4294967295 = 4294967293 +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` 1 = 0 +4294967294 `mod` 2 = 0 +4294967294 `mod` 3 = 2 + +4294967295 `mod` 4294967293 = 2 +4294967295 `mod` 4294967294 = 1 +4294967295 `mod` 4294967295 = 0 +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` 1 = 0 +0 `mod` 2 = 0 +0 `mod` 3 = 0 + +1 `mod` 4294967293 = 1 +1 `mod` 4294967294 = 1 +1 `mod` 4294967295 = 1 +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` 1 = 0 +2 `mod` 2 = 0 +2 `mod` 3 = 2 + +3 `mod` 4294967293 = 3 +3 `mod` 4294967294 = 3 +3 `mod` 4294967295 = 3 +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` 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` 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` 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` 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` 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` 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` 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` 1 = 4294967293 +4294967293 `quot` 2 = 2147483646 +4294967293 `quot` 3 = 1431655764 + +4294967294 `quot` 4294967293 = 1 +4294967294 `quot` 4294967294 = 1 +4294967294 `quot` 4294967295 = 0 +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` 1 = 4294967295 +4294967295 `quot` 2 = 2147483647 +4294967295 `quot` 3 = 1431655765 + +0 `quot` 4294967293 = 0 +0 `quot` 4294967294 = 0 +0 `quot` 4294967295 = 0 +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` 1 = 1 +1 `quot` 2 = 0 +1 `quot` 3 = 0 + +2 `quot` 4294967293 = 0 +2 `quot` 4294967294 = 0 +2 `quot` 4294967295 = 0 +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` 1 = 3 +3 `quot` 2 = 1 +3 `quot` 3 = 1 + +# +4294967293 `rem` 4294967293 = 0 +4294967293 `rem` 4294967294 = 4294967293 +4294967293 `rem` 4294967295 = 4294967293 +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` 1 = 0 +4294967294 `rem` 2 = 0 +4294967294 `rem` 3 = 2 + +4294967295 `rem` 4294967293 = 2 +4294967295 `rem` 4294967294 = 1 +4294967295 `rem` 4294967295 = 0 +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` 1 = 0 +0 `rem` 2 = 0 +0 `rem` 3 = 0 + +1 `rem` 4294967293 = 1 +1 `rem` 4294967294 = 1 +1 `rem` 4294967295 = 1 +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` 1 = 0 +2 `rem` 2 = 0 +2 `rem` 3 = 2 + +3 `rem` 4294967293 = 3 +3 `rem` 4294967294 = 3 +3 `rem` 4294967295 = 3 +3 `rem` 1 = 0 +3 `rem` 2 = 1 +3 `rem` 3 = 0 + +# +testBits +4294967293 .&. 4294967293 = 4294967293 +4294967293 .&. 4294967294 = 4294967292 +4294967293 .&. 4294967295 = 4294967293 +4294967293 .&. 1 = 1 +4294967293 .&. 2 = 0 +4294967293 .&. 3 = 1 + +4294967294 .&. 4294967293 = 4294967292 +4294967294 .&. 4294967294 = 4294967294 +4294967294 .&. 4294967295 = 4294967294 +4294967294 .&. 1 = 0 +4294967294 .&. 2 = 2 +4294967294 .&. 3 = 2 + +4294967295 .&. 4294967293 = 4294967293 +4294967295 .&. 4294967294 = 4294967294 +4294967295 .&. 4294967295 = 4294967295 +4294967295 .&. 1 = 1 +4294967295 .&. 2 = 2 +4294967295 .&. 3 = 3 + +0 .&. 4294967293 = 0 +0 .&. 4294967294 = 0 +0 .&. 4294967295 = 0 +0 .&. 1 = 0 +0 .&. 2 = 0 +0 .&. 3 = 0 + +1 .&. 4294967293 = 1 +1 .&. 4294967294 = 0 +1 .&. 4294967295 = 1 +1 .&. 1 = 1 +1 .&. 2 = 0 +1 .&. 3 = 1 + +2 .&. 4294967293 = 0 +2 .&. 4294967294 = 2 +2 .&. 4294967295 = 2 +2 .&. 1 = 0 +2 .&. 2 = 2 +2 .&. 3 = 2 + +3 .&. 4294967293 = 1 +3 .&. 4294967294 = 2 +3 .&. 4294967295 = 3 +3 .&. 1 = 1 +3 .&. 2 = 2 +3 .&. 3 = 3 + +# +4294967293 .|. 4294967293 = 4294967293 +4294967293 .|. 4294967294 = 4294967295 +4294967293 .|. 4294967295 = 4294967295 +4294967293 .|. 1 = 4294967293 +4294967293 .|. 2 = 4294967295 +4294967293 .|. 3 = 4294967295 + +4294967294 .|. 4294967293 = 4294967295 +4294967294 .|. 4294967294 = 4294967294 +4294967294 .|. 4294967295 = 4294967295 +4294967294 .|. 1 = 4294967295 +4294967294 .|. 2 = 4294967294 +4294967294 .|. 3 = 4294967295 + +4294967295 .|. 4294967293 = 4294967295 +4294967295 .|. 4294967294 = 4294967295 +4294967295 .|. 4294967295 = 4294967295 +4294967295 .|. 1 = 4294967295 +4294967295 .|. 2 = 4294967295 +4294967295 .|. 3 = 4294967295 + +0 .|. 4294967293 = 4294967293 +0 .|. 4294967294 = 4294967294 +0 .|. 4294967295 = 4294967295 +0 .|. 1 = 1 +0 .|. 2 = 2 +0 .|. 3 = 3 + +1 .|. 4294967293 = 4294967293 +1 .|. 4294967294 = 4294967295 +1 .|. 4294967295 = 4294967295 +1 .|. 1 = 1 +1 .|. 2 = 3 +1 .|. 3 = 3 + +2 .|. 4294967293 = 4294967295 +2 .|. 4294967294 = 4294967294 +2 .|. 4294967295 = 4294967295 +2 .|. 1 = 3 +2 .|. 2 = 2 +2 .|. 3 = 3 + +3 .|. 4294967293 = 4294967295 +3 .|. 4294967294 = 4294967295 +3 .|. 4294967295 = 4294967295 +3 .|. 1 = 3 +3 .|. 2 = 3 +3 .|. 3 = 3 + +# +4294967293 `xor` 4294967293 = 0 +4294967293 `xor` 4294967294 = 3 +4294967293 `xor` 4294967295 = 2 +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` 1 = 4294967295 +4294967294 `xor` 2 = 4294967292 +4294967294 `xor` 3 = 4294967293 + +4294967295 `xor` 4294967293 = 2 +4294967295 `xor` 4294967294 = 1 +4294967295 `xor` 4294967295 = 0 +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` 1 = 1 +0 `xor` 2 = 2 +0 `xor` 3 = 3 + +1 `xor` 4294967293 = 4294967292 +1 `xor` 4294967294 = 4294967295 +1 `xor` 4294967295 = 4294967294 +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` 1 = 3 +2 `xor` 2 = 0 +2 `xor` 3 = 1 + +3 `xor` 4294967293 = 4294967294 +3 `xor` 4294967294 = 4294967293 +3 `xor` 4294967295 = 4294967292 +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 `shift` 0 = 4294967293 +4294967293 `shift` 1 = 4294967290 +4294967293 `shift` 2 = 4294967284 +4294967293 `shift` 3 = 4294967272 + +4294967294 `shift` 0 = 4294967294 +4294967294 `shift` 1 = 4294967292 +4294967294 `shift` 2 = 4294967288 +4294967294 `shift` 3 = 4294967280 + +4294967295 `shift` 0 = 4294967295 +4294967295 `shift` 1 = 4294967294 +4294967295 `shift` 2 = 4294967292 +4294967295 `shift` 3 = 4294967288 + +0 `shift` 0 = 0 +0 `shift` 1 = 0 +0 `shift` 2 = 0 +0 `shift` 3 = 0 + +1 `shift` 0 = 1 +1 `shift` 1 = 2 +1 `shift` 2 = 4 +1 `shift` 3 = 8 + +2 `shift` 0 = 2 +2 `shift` 1 = 4 +2 `shift` 2 = 8 +2 `shift` 3 = 16 + +3 `shift` 0 = 3 +3 `shift` 1 = 6 +3 `shift` 2 = 12 +3 `shift` 3 = 24 + +# +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 + +4294967294 `setBit` 0 = 4294967295 +4294967294 `setBit` 1 = 4294967294 +4294967294 `setBit` 2 = 4294967294 +4294967294 `setBit` 3 = 4294967294 + +4294967295 `setBit` 0 = 4294967295 +4294967295 `setBit` 1 = 4294967295 +4294967295 `setBit` 2 = 4294967295 +4294967295 `setBit` 3 = 4294967295 + +0 `setBit` 0 = 1 +0 `setBit` 1 = 2 +0 `setBit` 2 = 4 +0 `setBit` 3 = 8 + +1 `setBit` 0 = 1 +1 `setBit` 1 = 3 +1 `setBit` 2 = 5 +1 `setBit` 3 = 9 + +2 `setBit` 0 = 3 +2 `setBit` 1 = 2 +2 `setBit` 2 = 6 +2 `setBit` 3 = 10 + +3 `setBit` 0 = 3 +3 `setBit` 1 = 3 +3 `setBit` 2 = 7 +3 `setBit` 3 = 11 + +# +4294967293 `clearBit` 0 = 4294967292 +4294967293 `clearBit` 1 = 4294967293 +4294967293 `clearBit` 2 = 4294967289 +4294967293 `clearBit` 3 = 4294967285 + +4294967294 `clearBit` 0 = 4294967294 +4294967294 `clearBit` 1 = 4294967292 +4294967294 `clearBit` 2 = 4294967290 +4294967294 `clearBit` 3 = 4294967286 + +4294967295 `clearBit` 0 = 4294967294 +4294967295 `clearBit` 1 = 4294967293 +4294967295 `clearBit` 2 = 4294967291 +4294967295 `clearBit` 3 = 4294967287 + +0 `clearBit` 0 = 0 +0 `clearBit` 1 = 0 +0 `clearBit` 2 = 0 +0 `clearBit` 3 = 0 + +1 `clearBit` 0 = 0 +1 `clearBit` 1 = 1 +1 `clearBit` 2 = 1 +1 `clearBit` 3 = 1 + +2 `clearBit` 0 = 2 +2 `clearBit` 1 = 0 +2 `clearBit` 2 = 2 +2 `clearBit` 3 = 2 + +3 `clearBit` 0 = 2 +3 `clearBit` 1 = 1 +3 `clearBit` 2 = 3 +3 `clearBit` 3 = 3 + +# +4294967293 `complementBit` 0 = 4294967292 +4294967293 `complementBit` 1 = 4294967295 +4294967293 `complementBit` 2 = 4294967289 +4294967293 `complementBit` 3 = 4294967285 + +4294967294 `complementBit` 0 = 4294967295 +4294967294 `complementBit` 1 = 4294967292 +4294967294 `complementBit` 2 = 4294967290 +4294967294 `complementBit` 3 = 4294967286 + +4294967295 `complementBit` 0 = 4294967294 +4294967295 `complementBit` 1 = 4294967293 +4294967295 `complementBit` 2 = 4294967291 +4294967295 `complementBit` 3 = 4294967287 + +0 `complementBit` 0 = 1 +0 `complementBit` 1 = 2 +0 `complementBit` 2 = 4 +0 `complementBit` 3 = 8 + +1 `complementBit` 0 = 0 +1 `complementBit` 1 = 3 +1 `complementBit` 2 = 5 +1 `complementBit` 3 = 9 + +2 `complementBit` 0 = 3 +2 `complementBit` 1 = 0 +2 `complementBit` 2 = 6 +2 `complementBit` 3 = 10 + +3 `complementBit` 0 = 2 +3 `complementBit` 1 = 1 +3 `complementBit` 2 = 7 +3 `complementBit` 3 = 11 + +# +4294967293 `testBit` 0 = True +4294967293 `testBit` 1 = False +4294967293 `testBit` 2 = True +4294967293 `testBit` 3 = True + +4294967294 `testBit` 0 = False +4294967294 `testBit` 1 = True +4294967294 `testBit` 2 = True +4294967294 `testBit` 3 = True + +4294967295 `testBit` 0 = True +4294967295 `testBit` 1 = True +4294967295 `testBit` 2 = True +4294967295 `testBit` 3 = True + +0 `testBit` 0 = False +0 `testBit` 1 = False +0 `testBit` 2 = False +0 `testBit` 3 = False + +1 `testBit` 0 = True +1 `testBit` 1 = False +1 `testBit` 2 = False +1 `testBit` 3 = False + +2 `testBit` 0 = False +2 `testBit` 1 = True +2 `testBit` 2 = False +2 `testBit` 3 = False + +3 `testBit` 0 = True +3 `testBit` 1 = True +3 `testBit` 2 = False +3 `testBit` 3 = 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 +# +-------------------------------- diff --git a/ghc/tests/numeric/should_run/arith012.hs b/ghc/tests/numeric/should_run/arith012.hs new file mode 100644 index 0000000..b3b212f --- /dev/null +++ b/ghc/tests/numeric/should_run/arith012.hs @@ -0,0 +1,72 @@ +--!!! Testing NumExts +module Main(main) where + +import NumExts + +main :: IO () +main = tst + +tst :: IO () +tst = do + test_doubleToFloat + test_floatToDouble + test_showHex + test_showOct + +---- +-- Test data: +doubles :: [Double] +doubles = [ -1.2 , 0, 0.1, 0.5, 1.0, 1234.45454, + 1.6053e4, 1.64022e12, 6.894e-4, 6.34543455634582173, + 5342413403.40540423255] +ints :: [Int] +ints = [ 0, 1, 255, 65513, 6029, 1024, 256, 201357245] + +integers :: [Integer] +integers = [ 0, 1, 255, 65513, 6029, 1024, 256, + 2343243543500233, 656194962055457832] +--- + +test_doubleToFloat :: IO () +test_doubleToFloat = do + test_banner "doubleToFloat" + putStrLn (show doubles) + putStrLn (show $ map doubleToFloat doubles) + +test_floatToDouble :: IO () +test_floatToDouble = do + test_banner "doubleToFloat" + putStrLn (show doubles) + putStrLn (show $ map doubleToFloat doubles) + putStrLn (show $ map (floatToDouble.doubleToFloat) doubles) + +test_showHex :: IO () +test_showHex = do + test_banner "showHex" + putStrLn (show ints) + putStrLn (showList' (map showHex ints)) + putStrLn (show integers) + putStrLn (showList' (map showHex integers)) + +showList' :: [ShowS] -> String +showList' [] = "[]" +showList' (x:xs) = showChar '[' . x $ showl xs "" + where + showl [] = showChar ']' + showl (x:xs) = showString ", " . x . showl xs + + +test_showOct :: IO () +test_showOct = do + test_banner "showOct" + putStrLn (show ints) + putStrLn (showList' (map showOct ints)) + putStrLn (show integers) + putStrLn (showList' (map showOct integers)) + +---- +test_banner :: String -> IO () +test_banner tst = do + putStrLn $ "--------------------------------" + putStrLn $ "--Testing " ++ tst + putStrLn $ "--------------------------------" diff --git a/ghc/tests/numeric/should_run/arith012.stdout b/ghc/tests/numeric/should_run/arith012.stdout new file mode 100644 index 0000000..366f98b --- /dev/null +++ b/ghc/tests/numeric/should_run/arith012.stdout @@ -0,0 +1,25 @@ +-------------------------------- +--Testing doubleToFloat +-------------------------------- +[-1.2, 0.0, 0.1, 0.5, 1.0, 1234.45454, 16053.0, 1.64022e12, 6.894e-4, 6.345434556345822, 5.342413403405404e9] +[-1.2, 0.0, 0.1, 0.5, 1.0, 1234.4546, 16053.0, 1.64022e12, 6.894e-4, 6.3454347, 5.3424133e9] +-------------------------------- +--Testing doubleToFloat +-------------------------------- +[-1.2, 0.0, 0.1, 0.5, 1.0, 1234.45454, 16053.0, 1.64022e12, 6.894e-4, 6.345434556345822, 5.342413403405404e9] +[-1.2, 0.0, 0.1, 0.5, 1.0, 1234.4546, 16053.0, 1.64022e12, 6.894e-4, 6.3454347, 5.3424133e9] +[-1.2000000476837158, 0.0, 0.10000000149011612, 0.5, 1.0, 1234.45458984375, 16053.0, 1.64021993472e12, 6.894000107422471e-4, 6.345434665679932, 5.342413312e9] +-------------------------------- +--Testing showHex +-------------------------------- +[0, 1, 255, 65513, 6029, 1024, 256, 201357245] +[0x0, 0x1, 0xff, 0xffe9, 0x178d, 0x400, 0x100, 0xc0077bd] +[0, 1, 255, 65513, 6029, 1024, 256, 2343243543500233, 656194962055457832] +[0x0, 0x1, 0xff, 0xffe9, 0x178d, 0x400, 0x100, 0x8532ae70855c9, 0x91b45d760b76c28] +-------------------------------- +--Testing showOct +-------------------------------- +[0, 1, 255, 65513, 6029, 1024, 256, 201357245] +[0o0, 0o1, 0o377, 0o177751, 0o13615, 0o2000, 0o400, 0o1400073675] +[0, 1, 255, 65513, 6029, 1024, 256, 2343243543500233, 656194962055457832] +[0o0, 0o1, 0o377, 0o177751, 0o13615, 0o2000, 0o400, 0o102462534702052711, 0o44332135354055666050]