{-# LANGUAGE MagicHash #-} import Control.Monad (unless, forM_) import GHC.Exts {-# NOINLINE aa #-} aa :: Int# -> Int# aa 1# = 42# aa 2# = 43# aa 3# = 43# aa 4# = 44# aa 5# = 44# aa 6# = 45# aa 7# = 45# aa 8# = 46# aa 9# = 46# aa 10# = 47# aa _ = 1337# {-# NOINLINE ab #-} ab :: Int# -> Int# ab 0# = 42# ab 1# = 42# ab 2# = 43# ab 3# = 43# ab 4# = 44# ab 5# = 44# ab 6# = 45# ab 7# = 45# ab 8# = 46# ab 9# = 46# ab 10# = 47# ab _ = 1337# {-# NOINLINE ac #-} ac :: Int# -> Int# ac 1# = 42# ac 2# = 43# ac 3# = 43# ac _ = 1337# {-# NOINLINE ad #-} ad :: Int# -> Int# ad 1# = 42# ad 2# = 43# ad 3# = 43# ad 4# = 44# ad _ = 1337# {-# NOINLINE ae #-} ae :: Int# -> Int# ae 1# = 42# ae 2# = 43# ae 3# = 43# ae 4# = 44# ae 5# = 44# ae _ = 1337# {-# NOINLINE af #-} af :: Int# -> Int# af -1# = 41# af 0# = 42# af 1# = 42# af 2# = 43# af 3# = 43# af 4# = 44# af 5# = 44# af 6# = 45# af 7# = 45# af 8# = 46# af 9# = 46# af 10# = 47# af _ = 1337# {-# NOINLINE ag #-} ag :: Int# -> Int# ag -10# = 37# ag -9# = 37# ag -8# = 38# ag -7# = 38# ag -6# = 39# ag -5# = 39# ag -4# = 40# ag -3# = 40# ag -2# = 41# ag -1# = 41# ag 0# = 42# ag 1# = 42# ag 2# = 43# ag 3# = 43# ag 4# = 44# ag 5# = 44# ag 6# = 45# ag 7# = 45# ag 8# = 46# ag 9# = 46# ag 10# = 47# ag _ = 1337# {-# NOINLINE ah #-} ah :: Int# -> Int# ah -20# = 32# ah -19# = 32# ah -18# = 33# ah -17# = 33# ah -16# = 34# ah -15# = 34# ah -14# = 35# ah -13# = 35# ah -12# = 36# ah -11# = 36# ah -10# = 37# ah 0# = 42# ah 1# = 42# ah 2# = 43# ah 3# = 43# ah 4# = 44# ah 5# = 44# ah 6# = 45# ah 7# = 45# ah 8# = 46# ah 9# = 46# ah 10# = 47# ah _ = 1337# {-# NOINLINE ai #-} ai :: Int# -> Int# ai -20# = 32# ai -19# = 32# ai -18# = 33# ai -17# = 33# ai -16# = 34# ai -15# = 34# ai -14# = 35# ai -13# = 35# ai -12# = 36# ai -11# = 36# ai -10# = 37# ai 1# = 42# ai 2# = 43# ai 3# = 43# ai 4# = 44# ai 5# = 44# ai 6# = 45# ai 7# = 45# ai 8# = 46# ai 9# = 46# ai 10# = 47# ai _ = 1337# {-# NOINLINE aj #-} aj :: Int# -> Int# aj -9223372036854775808# = -4611686018427387862# aj 0# = 42# aj 9223372036854775807# = 4611686018427387945# aj _ = 1337# {-# NOINLINE ak #-} ak :: Int# -> Int# ak 9223372036854775797# = 4611686018427387940# ak 9223372036854775798# = 4611686018427387941# ak 9223372036854775799# = 4611686018427387941# ak 9223372036854775800# = 4611686018427387942# ak 9223372036854775801# = 4611686018427387942# ak 9223372036854775802# = 4611686018427387943# ak 9223372036854775803# = 4611686018427387943# ak 9223372036854775804# = 4611686018427387944# ak 9223372036854775805# = 4611686018427387944# ak 9223372036854775806# = 4611686018427387945# ak 9223372036854775807# = 4611686018427387945# ak _ = 1337# {-# NOINLINE al #-} al :: Int# -> Int# al -9223372036854775808# = -4611686018427387862# al -9223372036854775807# = -4611686018427387862# al -9223372036854775806# = -4611686018427387861# al -9223372036854775805# = -4611686018427387861# al -9223372036854775804# = -4611686018427387860# al -9223372036854775803# = -4611686018427387860# al -9223372036854775802# = -4611686018427387859# al -9223372036854775801# = -4611686018427387859# al -9223372036854775800# = -4611686018427387858# al -9223372036854775799# = -4611686018427387858# al -9223372036854775798# = -4611686018427387857# al 9223372036854775797# = 4611686018427387940# al 9223372036854775798# = 4611686018427387941# al 9223372036854775799# = 4611686018427387941# al 9223372036854775800# = 4611686018427387942# al 9223372036854775801# = 4611686018427387942# al 9223372036854775802# = 4611686018427387943# al 9223372036854775803# = 4611686018427387943# al 9223372036854775804# = 4611686018427387944# al 9223372036854775805# = 4611686018427387944# al 9223372036854775806# = 4611686018427387945# al 9223372036854775807# = 4611686018427387945# al _ = 1337# {-# NOINLINE am #-} am :: Word# -> Word# am 0## = 42## am 1## = 42## am 2## = 43## am 3## = 43## am 4## = 44## am 5## = 44## am 6## = 45## am 7## = 45## am 8## = 46## am 9## = 46## am 10## = 47## am _ = 1337## {-# NOINLINE an #-} an :: Word# -> Word# an 1## = 42## an 2## = 43## an 3## = 43## an 4## = 44## an 5## = 44## an 6## = 45## an 7## = 45## an 8## = 46## an 9## = 46## an 10## = 47## an _ = 1337## {-# NOINLINE ao #-} ao :: Word# -> Word# ao 0## = 42## ao _ = 1337## {-# NOINLINE ap #-} ap :: Word# -> Word# ap 0## = 42## ap 1## = 42## ap _ = 1337## {-# NOINLINE aq #-} aq :: Word# -> Word# aq 0## = 42## aq 1## = 42## aq 2## = 43## aq _ = 1337## {-# NOINLINE ar #-} ar :: Word# -> Word# ar 0## = 42## ar 1## = 42## ar 2## = 43## ar 3## = 43## ar _ = 1337## {-# NOINLINE as #-} as :: Word# -> Word# as 0## = 42## as 1## = 42## as 2## = 43## as 3## = 43## as 4## = 44## as _ = 1337## {-# NOINLINE at #-} at :: Word# -> Word# at 1## = 42## at _ = 1337## {-# NOINLINE au #-} au :: Word# -> Word# au 1## = 42## au 2## = 43## au _ = 1337## {-# NOINLINE av #-} av :: Word# -> Word# av 1## = 42## av 2## = 43## av 3## = 43## av _ = 1337## {-# NOINLINE aw #-} aw :: Word# -> Word# aw 1## = 42## aw 2## = 43## aw 3## = 43## aw 4## = 44## aw _ = 1337## {-# NOINLINE ax #-} ax :: Word# -> Word# ax 1## = 42## ax 2## = 43## ax 3## = 43## ax 4## = 44## ax 5## = 44## ax _ = 1337## {-# NOINLINE ay #-} ay :: Word# -> Word# ay 0## = 42## ay 18446744073709551615## = 9223372036854775849## ay _ = 1337## {-# NOINLINE az #-} az :: Word# -> Word# az 18446744073709551605## = 9223372036854775844## az 18446744073709551606## = 9223372036854775845## az 18446744073709551607## = 9223372036854775845## az 18446744073709551608## = 9223372036854775846## az 18446744073709551609## = 9223372036854775846## az 18446744073709551610## = 9223372036854775847## az 18446744073709551611## = 9223372036854775847## az 18446744073709551612## = 9223372036854775848## az 18446744073709551613## = 9223372036854775848## az 18446744073709551614## = 9223372036854775849## az 18446744073709551615## = 9223372036854775849## az _ = 1337## {-# NOINLINE ba #-} ba :: Word# -> Word# ba 0## = 42## ba 1## = 42## ba 2## = 43## ba 3## = 43## ba 4## = 44## ba 5## = 44## ba 6## = 45## ba 7## = 45## ba 8## = 46## ba 9## = 46## ba 10## = 47## ba 18446744073709551605## = 9223372036854775844## ba 18446744073709551606## = 9223372036854775845## ba 18446744073709551607## = 9223372036854775845## ba 18446744073709551608## = 9223372036854775846## ba 18446744073709551609## = 9223372036854775846## ba 18446744073709551610## = 9223372036854775847## ba 18446744073709551611## = 9223372036854775847## ba 18446744073709551612## = 9223372036854775848## ba 18446744073709551613## = 9223372036854775848## ba 18446744073709551614## = 9223372036854775849## ba 18446744073709551615## = 9223372036854775849## ba _ = 1337## aa_check :: IO () aa_check = forM_ [(0,1337), (1,42), (2,43), (3,43), (4,44), (5,44), (6,45), (7,45), (8,46), (9,46), (10,47), (11,1337)] $ \(I# i,o) -> do let r = I# (aa i) unless (r == o) $ putStrLn $ "ERR: aa (" ++ show (I# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ab_check :: IO () ab_check = forM_ [(-1,1337), (0,42), (1,42), (2,43), (3,43), (4,44), (5,44), (6,45), (7,45), (8,46), (9,46), (10,47), (11,1337)] $ \(I# i,o) -> do let r = I# (ab i) unless (r == o) $ putStrLn $ "ERR: ab (" ++ show (I# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ac_check :: IO () ac_check = forM_ [(0,1337), (1,42), (2,43), (3,43), (4,1337)] $ \(I# i,o) -> do let r = I# (ac i) unless (r == o) $ putStrLn $ "ERR: ac (" ++ show (I# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ad_check :: IO () ad_check = forM_ [(0,1337), (1,42), (2,43), (3,43), (4,44), (5,1337)] $ \(I# i,o) -> do let r = I# (ad i) unless (r == o) $ putStrLn $ "ERR: ad (" ++ show (I# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ae_check :: IO () ae_check = forM_ [(0,1337), (1,42), (2,43), (3,43), (4,44), (5,44), (6,1337)] $ \(I# i,o) -> do let r = I# (ae i) unless (r == o) $ putStrLn $ "ERR: ae (" ++ show (I# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." af_check :: IO () af_check = forM_ [(-2,1337), (-1,41), (0,42), (1,42), (2,43), (3,43), (4,44), (5,44), (6,45), (7,45), (8,46), (9,46), (10,47), (11,1337)] $ \(I# i,o) -> do let r = I# (af i) unless (r == o) $ putStrLn $ "ERR: af (" ++ show (I# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ag_check :: IO () ag_check = forM_ [(-11,1337), (-10,37), (-9,37), (-8,38), (-7,38), (-6,39), (-5,39), (-4,40), (-3,40), (-2,41), (-1,41), (0,42), (1,42), (2,43), (3,43), (4,44), (5,44), (6,45), (7,45), (8,46), (9,46), (10,47), (11,1337)] $ \(I# i,o) -> do let r = I# (ag i) unless (r == o) $ putStrLn $ "ERR: ag (" ++ show (I# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ah_check :: IO () ah_check = forM_ [(-21,1337), (-20,32), (-19,32), (-18,33), (-17,33), (-16,34), (-15,34), (-14,35), (-13,35), (-12,36), (-11,36), (-10,37), (-9,1337), (-1,1337), (0,42), (1,42), (2,43), (3,43), (4,44), (5,44), (6,45), (7,45), (8,46), (9,46), (10,47), (11,1337)] $ \(I# i,o) -> do let r = I# (ah i) unless (r == o) $ putStrLn $ "ERR: ah (" ++ show (I# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ai_check :: IO () ai_check = forM_ [(-21,1337), (-20,32), (-19,32), (-18,33), (-17,33), (-16,34), (-15,34), (-14,35), (-13,35), (-12,36), (-11,36), (-10,37), (-9,1337), (0,1337), (1,42), (2,43), (3,43), (4,44), (5,44), (6,45), (7,45), (8,46), (9,46), (10,47), (11,1337)] $ \(I# i,o) -> do let r = I# (ai i) unless (r == o) $ putStrLn $ "ERR: ai (" ++ show (I# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." aj_check :: IO () aj_check = forM_ [(-9223372036854775808,-4611686018427387862), (-9223372036854775807,1337), (-1,1337), (0,42), (1,1337), (9223372036854775806,1337), (9223372036854775807,4611686018427387945)] $ \(I# i,o) -> do let r = I# (aj i) unless (r == o) $ putStrLn $ "ERR: aj (" ++ show (I# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ak_check :: IO () ak_check = forM_ [(9223372036854775796,1337), (9223372036854775797,4611686018427387940), (9223372036854775798,4611686018427387941), (9223372036854775799,4611686018427387941), (9223372036854775800,4611686018427387942), (9223372036854775801,4611686018427387942), (9223372036854775802,4611686018427387943), (9223372036854775803,4611686018427387943), (9223372036854775804,4611686018427387944), (9223372036854775805,4611686018427387944), (9223372036854775806,4611686018427387945), (9223372036854775807,4611686018427387945)] $ \(I# i,o) -> do let r = I# (ak i) unless (r == o) $ putStrLn $ "ERR: ak (" ++ show (I# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." al_check :: IO () al_check = forM_ [(-9223372036854775808,-4611686018427387862), (-9223372036854775807,-4611686018427387862), (-9223372036854775806,-4611686018427387861), (-9223372036854775805,-4611686018427387861), (-9223372036854775804,-4611686018427387860), (-9223372036854775803,-4611686018427387860), (-9223372036854775802,-4611686018427387859), (-9223372036854775801,-4611686018427387859), (-9223372036854775800,-4611686018427387858), (-9223372036854775799,-4611686018427387858), (-9223372036854775798,-4611686018427387857), (-9223372036854775797,1337), (9223372036854775796,1337), (9223372036854775797,4611686018427387940), (9223372036854775798,4611686018427387941), (9223372036854775799,4611686018427387941), (9223372036854775800,4611686018427387942), (9223372036854775801,4611686018427387942), (9223372036854775802,4611686018427387943), (9223372036854775803,4611686018427387943), (9223372036854775804,4611686018427387944), (9223372036854775805,4611686018427387944), (9223372036854775806,4611686018427387945), (9223372036854775807,4611686018427387945)] $ \(I# i,o) -> do let r = I# (al i) unless (r == o) $ putStrLn $ "ERR: al (" ++ show (I# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." am_check :: IO () am_check = forM_ [(0,42), (1,42), (2,43), (3,43), (4,44), (5,44), (6,45), (7,45), (8,46), (9,46), (10,47), (11,1337)] $ \(W# i,o) -> do let r = W# (am i) unless (r == o) $ putStrLn $ "ERR: am (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." an_check :: IO () an_check = forM_ [(0,1337), (1,42), (2,43), (3,43), (4,44), (5,44), (6,45), (7,45), (8,46), (9,46), (10,47), (11,1337)] $ \(W# i,o) -> do let r = W# (an i) unless (r == o) $ putStrLn $ "ERR: an (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ao_check :: IO () ao_check = forM_ [(0,42), (1,1337)] $ \(W# i,o) -> do let r = W# (ao i) unless (r == o) $ putStrLn $ "ERR: ao (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ap_check :: IO () ap_check = forM_ [(0,42), (1,42), (2,1337)] $ \(W# i,o) -> do let r = W# (ap i) unless (r == o) $ putStrLn $ "ERR: ap (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." aq_check :: IO () aq_check = forM_ [(0,42), (1,42), (2,43), (3,1337)] $ \(W# i,o) -> do let r = W# (aq i) unless (r == o) $ putStrLn $ "ERR: aq (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ar_check :: IO () ar_check = forM_ [(0,42), (1,42), (2,43), (3,43), (4,1337)] $ \(W# i,o) -> do let r = W# (ar i) unless (r == o) $ putStrLn $ "ERR: ar (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." as_check :: IO () as_check = forM_ [(0,42), (1,42), (2,43), (3,43), (4,44), (5,1337)] $ \(W# i,o) -> do let r = W# (as i) unless (r == o) $ putStrLn $ "ERR: as (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." at_check :: IO () at_check = forM_ [(0,1337), (1,42), (2,1337)] $ \(W# i,o) -> do let r = W# (at i) unless (r == o) $ putStrLn $ "ERR: at (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." au_check :: IO () au_check = forM_ [(0,1337), (1,42), (2,43), (3,1337)] $ \(W# i,o) -> do let r = W# (au i) unless (r == o) $ putStrLn $ "ERR: au (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." av_check :: IO () av_check = forM_ [(0,1337), (1,42), (2,43), (3,43), (4,1337)] $ \(W# i,o) -> do let r = W# (av i) unless (r == o) $ putStrLn $ "ERR: av (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." aw_check :: IO () aw_check = forM_ [(0,1337), (1,42), (2,43), (3,43), (4,44), (5,1337)] $ \(W# i,o) -> do let r = W# (aw i) unless (r == o) $ putStrLn $ "ERR: aw (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ax_check :: IO () ax_check = forM_ [(0,1337), (1,42), (2,43), (3,43), (4,44), (5,44), (6,1337)] $ \(W# i,o) -> do let r = W# (ax i) unless (r == o) $ putStrLn $ "ERR: ax (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ay_check :: IO () ay_check = forM_ [(0,42), (1,1337), (18446744073709551614,1337), (18446744073709551615,9223372036854775849)] $ \(W# i,o) -> do let r = W# (ay i) unless (r == o) $ putStrLn $ "ERR: ay (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." az_check :: IO () az_check = forM_ [(18446744073709551604,1337), (18446744073709551605,9223372036854775844), (18446744073709551606,9223372036854775845), (18446744073709551607,9223372036854775845), (18446744073709551608,9223372036854775846), (18446744073709551609,9223372036854775846), (18446744073709551610,9223372036854775847), (18446744073709551611,9223372036854775847), (18446744073709551612,9223372036854775848), (18446744073709551613,9223372036854775848), (18446744073709551614,9223372036854775849), (18446744073709551615,9223372036854775849)] $ \(W# i,o) -> do let r = W# (az i) unless (r == o) $ putStrLn $ "ERR: az (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." ba_check :: IO () ba_check = forM_ [(0,42), (1,42), (2,43), (3,43), (4,44), (5,44), (6,45), (7,45), (8,46), (9,46), (10,47), (11,1337), (18446744073709551604,1337), (18446744073709551605,9223372036854775844), (18446744073709551606,9223372036854775845), (18446744073709551607,9223372036854775845), (18446744073709551608,9223372036854775846), (18446744073709551609,9223372036854775846), (18446744073709551610,9223372036854775847), (18446744073709551611,9223372036854775847), (18446744073709551612,9223372036854775848), (18446744073709551613,9223372036854775848), (18446744073709551614,9223372036854775849), (18446744073709551615,9223372036854775849)] $ \(W# i,o) -> do let r = W# (ba i) unless (r == o) $ putStrLn $ "ERR: ba (" ++ show (W# i)++ ") is " ++ show r ++ " and not " ++ show o ++"." main = do aa_check ab_check ac_check ad_check ae_check af_check ag_check ah_check ai_check aj_check ak_check al_check am_check an_check ao_check ap_check aq_check ar_check as_check at_check au_check av_check aw_check ax_check ay_check az_check ba_check