summaryrefslogtreecommitdiff
path: root/testsuite/tests/numeric/should_run/T9810.hs
blob: b8ce1ba83edb064b9175c2c162084b989f730e88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
main = do
    -- NOTE: the `abs` is to compensate for WAY=optllvm
    --       having a positive sign for 0/0

    putStrLn "## Double ##"
    print $ idRational ( 1/0 :: Double)
    print $ idRational (-1/0 :: Double)
    print $ abs $ idRational ( 0/0 :: Double)
    print $ idReencode ( 1/0 :: Double)
    print $ idReencode (-1/0 :: Double)
    print $ abs $ idReencode ( 0/0 :: Double)

    putStrLn "## Float ##"
    print $ idRational ( 1/0 :: Float)
    print $ idRational (-1/0 :: Float)
    print $ abs $ idRational ( 0/0 :: Float)
    print $ idReencode ( 1/0 :: Float)
    print $ idReencode (-1/0 :: Float)
    print $ abs $ idReencode ( 0/0 :: Float)
  where
    idRational :: (Real a, Fractional a) => a -> a
    idRational = fromRational . toRational

    idReencode :: (RealFloat a) => a -> a
    idReencode = uncurry encodeFloat . decodeFloat