packages feed

combinatorial-problems-0.0.5: CombinatorialOptimisation/TSP/TestFixedPoint.hs

-- don't know how to use small check at this point, going to go with an error based approach.

import FixedPoint
import System.Random

main :: IO()
main = do gen1<-newStdGen
          let testGroup1 = makeTestGroup 500 gen1
          gen2<-newStdGen
          let testGroup2 = makeTestGroup 500 gen2
          print "SUMMATIONS"
          print $ ("Floats",sum testGroup1)
          print $ ("Doubles",sum .con' $ testGroup1)
          print $ ("FPs",sum . con $ testGroup1)
          putStrLn ""
          print "RECIPROCALS"
          print $ ("Floats",sum $ map recip testGroup1)
          print $ ("Doubles",sum $ map recip $ con' testGroup1)
          print $ ("FPs",sum $ map recip $ con testGroup1)
          putStrLn ""
          print "SUM DIFF"
          print $ ("Floats",sum $ zipWith (-) testGroup1 testGroup2)
          print $ ("Doubles",sum $ zipWith (-) (con' testGroup1) (con' testGroup2))
          print $ ("FPs",sum $ zipWith (-) (con testGroup1) (con testGroup2))
          putStrLn ""
          print "SUM DIV"
          print $ ("Floats",sum $ zipWith (/) testGroup1 testGroup2)
          print $ ("Doubles",sum $ zipWith (/) (con' testGroup1) (con' testGroup2))
          print $ ("FPs",sum $ zipWith (/) (con testGroup1) (con testGroup2))
          putStrLn ""
          print "SUM MUL"
          print $ ("Floats",sum $ zipWith (*) testGroup1 testGroup2)
          print $ ("Doubles",sum $ zipWith (*) (con' testGroup1) (con' testGroup2))
          print $ ("FPs",sum $ zipWith (*) (con testGroup1) (con testGroup2))


makeTestGroup :: RandomGen g=>Int->g->[Float]
makeTestGroup s g = take s $ randomRs (0,500) g

con :: [Float]->[FP]
con = map realToFrac

con' :: [Float]->[Double]
con' = map realToFrac