diff --git a/approx-rand-test.cabal b/approx-rand-test.cabal
--- a/approx-rand-test.cabal
+++ b/approx-rand-test.cabal
@@ -1,5 +1,5 @@
 Name:          approx-rand-test
-Version:       0.1.0
+Version:       0.1.1
 License:       OtherLicense
 License-file:  LICENSE
 Copyright:     Copyright 2012 Daniël de Kok
@@ -22,7 +22,7 @@
 Source-Repository this
   Type:     git
   Location: git://github.com/danieldk/approx-rand-test.git
-  Tag:      0.1.0
+  Tag:      0.1.1
 
 Flag withCairo
   Description: Enable non-terminal histogram output, requiring Cairo.
@@ -35,8 +35,8 @@
   Build-Depends:   base >= 4 && < 5, vector >= 0.9 && < 0.11,
                    mersenne-random-pure64 == 0.2.0.*,
                    monad-mersenne-random == 0.1,
-                   mtl == 2.1.*, statistics == 0.10.*,
-                   transformers == 0.3.*
+                   mtl >= 2.0.1 && < 2.2, statistics == 0.10.*,
+                   transformers >= 0.2.2 && < 0.4
 
 
 Executable approx_rand_test
@@ -45,7 +45,7 @@
   HS-Source-Dirs: utils
   Ghc-Options:    -O2 -Wall
   Build-Depends:  base >= 4 && < 5, approx-rand-test,
-                  conduit >= 0.4 && < 0.6, text == 0.11.2.*,
+                  conduit >= 0.4 && < 1.1, text >= 0.11.1 && < 0.11.3,
                   containers == 0.4.*, vector >= 0.9 && < 0.11,
                   mersenne-random-pure64 == 0.2.0.*,
                   monad-mersenne-random == 0.1,
@@ -65,11 +65,11 @@
   HS-Source-Dirs: utils
   Ghc-Options:    -O2 -Wall
   Build-Depends:  base >= 4 && < 5, approx-rand-test,
-                  conduit >= 0.4 && < 0.6, text == 0.11.2.*,
+                  conduit >= 0.4 && < 1.1, text >= 0.11.1 && < 0.11.3,
                   containers == 0.4.*, vector >= 0.9 && < 0.11,
                   mersenne-random-pure64 == 0.2.0.*,
                   monad-mersenne-random == 0.1,
-                  mtl == 2.1.*, statistics == 0.10.*
+                  mtl >= 2.0.1 && < 2.2, statistics == 0.10.*
   if flag(withCairo)
     Hs-Source-Dirs: utils/cairo
     Build-Depends:  Chart >= 0.15 && < 0.17, colour == 2.3.*,
@@ -84,10 +84,11 @@
   Hs-Source-Dirs: tests
   Main-Is:        tests.hs
   ghc-options:    -Wall
-  Build-Depends:  base >= 4 && < 5, vector == 0.9.*,
-                  approx-rand-test,
+  Build-Depends:  base >= 4 && < 5, vector >= 0.9 && < 0.11,
+                  approx-rand-test, mtl >= 2.0.1 && < 2.2,
+                  ieee754 == 0.7.*,
                   mersenne-random-pure64 == 0.2.0.*,
                   monad-mersenne-random == 0.1,
-                  HUnit == 1.2.4.*,
+                  HUnit >= 1.2.4 && < 1.2.6,
                   test-framework == 0.6.*,
                   test-framework-hunit == 0.2.*
diff --git a/tests/tests.hs b/tests/tests.hs
--- a/tests/tests.hs
+++ b/tests/tests.hs
@@ -1,16 +1,18 @@
 module Main where
 
-import Control.Monad.Mersenne.Random (evalRandom)
-import System.Random.Mersenne.Pure64 (pureMT)
+import           Control.Monad.Error (runErrorT)
+import           Control.Monad.Mersenne.Random (evalRandom)
+import           Numeric.IEEE (IEEE, epsilon)
+import           System.Random.Mersenne.Pure64 (pureMT)
 import qualified Data.Vector.Unboxed as V
-import Statistics.Test.ApproxRand
-import Test.HUnit (assertEqual)
-import Test.Framework
-import Test.Framework.Providers.HUnit
+import           Statistics.Test.ApproxRand
+import           Test.HUnit (Assertion, assertBool, assertEqual)
+import           Test.Framework
+import           Test.Framework.Providers.HUnit
 
 tests :: Test
 tests = testGroup "Paired approximate randomization tests" $
-	concat [statTests, randomizationTests]
+  concat [statTests, randomizationTests]
 
 main :: IO ()
 main = defaultMain [ tests ]
@@ -22,8 +24,8 @@
 
 meanDifferenceTest :: Test
 meanDifferenceTest =
-	testEquality "mean difference robot competition"
-		(meanDifference cohenRobotsAlpha cohenRobotsBeta) 1.8
+  testIEEEEquality "mean difference robot competition"
+    1.8 $ meanDifference cohenRobotsAlpha cohenRobotsBeta
 
 -- Approximate andomization tests
 
@@ -32,18 +34,32 @@
 
 pairApproxExactTestScores :: Test
 pairApproxExactTestScores =
-	testEquality  "number of extreme values robot competition"
-		(length $ filter (>= 1.8) scores) 21
-	where
-		scores = evalRandom
-			(approxRandPairScores meanDifference 1024
-				cohenRobotsAlpha cohenRobotsBeta) $
-			pureMT 42
+  testEquality  "number of extreme values robot competition"
+    (Right 21) $ V.length `fmap` V.filter (>= 1.8) `fmap` scores
+  where
+    test = runErrorT $
+      approxRandPairStats differenceMean 1024 cohenRobotsAlpha cohenRobotsBeta
+    scores = evalRandom test $ pureMT 42
 
 -- Helper functions
 
 testEquality :: (Show a, Eq a) => String -> a -> a -> Test
 testEquality msg a b = testCase msg $ assertEqual msg a b
+
+testIEEEEquality :: IEEE a => String -> a -> a -> Test
+testIEEEEquality msg a b = testCase msg $ assertEqualIEEE msg a b
+
+assertEqualIEEE :: IEEE a => String -> a -> a -> Assertion
+assertEqualIEEE msg a b = assertBool msg $ fracEq epsilon a b
+
+-- Suggested in The Floating Point Guide: http://floating-point-gui.de/
+fracEq :: (Fractional a, Ord a) => a -> a -> a -> Bool
+fracEq eps a b
+  | a == b     = True
+  | a * b == 0 = diff < (eps * eps)
+  | otherwise  = diff / (abs a + abs b) < eps
+  where diff = abs (a - b)
+   
 
 -- Example from Cohen, 1995
 cohenRobotsAlpha :: V.Vector Double
