diff --git a/gamma.cabal b/gamma.cabal
--- a/gamma.cabal
+++ b/gamma.cabal
@@ -1,5 +1,5 @@
 name:                   gamma
-version:                0.9.0.1
+version:                0.9.0.2
 stability:              provisional
 
 cabal-version:          >= 1.6
@@ -18,7 +18,8 @@
 tested-with:            GHC == 6.10.4,
                         GHC == 6.12.1, GHC == 6.12.3,
                         GHC == 7.0.1, GHC == 7.0.2,
-                        GHC == 7.2.1
+                        GHC == 7.2.1,
+                        GHC == 7.4.1-rc1
 
 extra-source-files:     extras/*.hs
 
diff --git a/src/Math/Gamma.hs b/src/Math/Gamma.hs
--- a/src/Math/Gamma.hs
+++ b/src/Math/Gamma.hs
@@ -18,7 +18,7 @@
 import Math.Sequence.Converge
 
 -- |Gamma function.  Minimal definition is ether 'gamma' or 'lnGamma'.
-class (Floating a, Factorial a) => Gamma a where
+class (Eq a, Floating a, Factorial a) => Gamma a where
     -- |The gamma function:  gamma z == integral from 0 to infinity of
     -- @\t -> t**(z-1) * exp (negate t)@
     gamma :: a -> a
diff --git a/src/Math/Gamma.hs-boot b/src/Math/Gamma.hs-boot
--- a/src/Math/Gamma.hs-boot
+++ b/src/Math/Gamma.hs-boot
@@ -2,7 +2,7 @@
 
 import Math.Factorial
 
-class (Floating a, Factorial a) => Gamma a where
+class (Eq a, Floating a, Factorial a) => Gamma a where
     -- |The gamma function:  gamma z == integral from 0 to infinity of
     -- @\t -> t**(z-1) * exp (negate t)@
     gamma :: a -> a
diff --git a/src/Math/Gamma/Incomplete.hs b/src/Math/Gamma/Incomplete.hs
--- a/src/Math/Gamma/Incomplete.hs
+++ b/src/Math/Gamma/Incomplete.hs
@@ -28,14 +28,14 @@
 -- From Abramowitz & Stegun (6.5.12).
 --
 -- Recommended for use when x < s+1
-lowerGammaHypGeom :: Floating b => b -> b -> b
+lowerGammaHypGeom :: (Eq b, Floating b) => b -> b -> b
 lowerGammaHypGeom 0 0 = 0/0
 lowerGammaHypGeom s x = x ** s * exp (negate x) / s * m_1_sp1 s x
 
 -- |Natural logarithm of lower gamma function, based on the same identity as
 -- 'lowerGammaHypGeom' and evaluated carefully to avoid overflow and underflow.
 -- Recommended for use when x < s+1
-lnLowerGammaHypGeom :: Floating a => a -> a -> a
+lnLowerGammaHypGeom :: (Eq a, Floating a) => a -> a -> a
 lnLowerGammaHypGeom 0 0 = 0/0
 lnLowerGammaHypGeom s x 
     = log ((signum x)**s * sign_m / signum s)
@@ -94,7 +94,7 @@
 -- |Natural logarithms of the convergents of the upper gamma function, 
 -- evaluated carefully to avoid overflow and underflow.
 -- Recommended for use when x >= s+1
-lnUpperGammaConvergents :: Floating a => a -> a -> [a]
+lnUpperGammaConvergents :: (Eq a, Floating a) => a -> a -> [a]
 lnUpperGammaConvergents s x = map (a -) (concat (eval theCF)) 
     where 
         eval = map (map evalSign) . modifiedLentzWith signLog addSignLog negateSignLog 1e-30
@@ -125,14 +125,14 @@
 -- 
 -- m_1_sp1 s z = M(1;s+1;z)
 -- 
-m_1_sp1 :: Fractional a => a -> a -> a
+m_1_sp1 :: (Eq a, Fractional a) => a -> a -> a
 m_1_sp1 s z = converge . scanl (+) 0 . scanl (*) 1 $
     [z / x | x <- iterate (1+) (s+1)]
 
-log_m_1_sp1 :: Floating a => a -> a -> (a,a)
+log_m_1_sp1 :: (Eq a, Floating a) => a -> a -> (a,a)
 log_m_1_sp1 s z = converge (concat (log_m_1_sp1_convergents s z))
 
-log_m_1_sp1_convergents :: Floating a => a -> a -> [[(a,a)]]
+log_m_1_sp1_convergents :: (Eq a, Floating a) => a -> a -> [[(a,a)]]
 log_m_1_sp1_convergents s z
     = modifiedLentzWith signLog addSignLog negateSignLog 1e-30
     $ sumPartialProducts (1:[z / x | x <- iterate (1+) (s+1)])
