Commit 82b886b9 authored by Ian Lynagh's avatar Ian Lynagh
Browse files

Wibble the num009 test

parent 55a206a7
...@@ -5,31 +5,35 @@ ...@@ -5,31 +5,35 @@
module Main(main) where module Main(main) where
import Control.Monad import Control.Monad
import Foreign.C
main = do let d = 1e20 :: Double main = do let d = 1e20 :: Double
f = 1e20 :: Float f = 1e20 :: Float
test "sind" sind sin 1e20 test "sind" sind sin d
test "sinf" sinf sin 1e20 test "sinf" sinf sin f
test "cosd" cosd cos 1e20 test "cosd" cosd cos d
test "cosf" cosf cos 1e20 test "cosf" cosf cos f
test "tand" tand tan 1e20 test "tand" tand tan d
test "tanf" tanf tan 1e20 test "tanf" tanf tan f
putStrLn "Done" putStrLn "Done"
test :: Floating a => String -> (a -> a) -> (a -> a) -> a -> IO () test :: (RealFloat a, Floating a, RealFloat b, Floating b)
test s f g x = do let y = f x => String -> (a -> a) -> (b -> b) -> b -> IO ()
test s f g x = do let y = realToFrac (f (realToFrac x))
z = g x z = g x
unless (y == z) $ do unless (y == z) $ do
putStrLn s putStrLn s
print y print y
print z print z
print $ decodeFloat y
print $ decodeFloat z
foreign import ccall "math.h sin" sind :: Double -> Double foreign import ccall "math.h sin" sind :: CDouble -> CDouble
foreign import ccall "math.h sinf" sinf :: Float -> Float foreign import ccall "math.h sinf" sinf :: CFloat -> CFloat
foreign import ccall "math.h cos" cosd :: Double -> Double foreign import ccall "math.h cos" cosd :: CDouble -> CDouble
foreign import ccall "math.h cosf" cosf :: Float -> Float foreign import ccall "math.h cosf" cosf :: CFloat -> CFloat
foreign import ccall "math.h tan" tand :: Double -> Double foreign import ccall "math.h tan" tand :: CDouble -> CDouble
foreign import ccall "math.h tanf" tanf :: Float -> Float foreign import ccall "math.h tanf" tanf :: CFloat -> CFloat
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment