]> gitweb.michael.orlitzky.com - numerical-analysis.git/blobdiff - src/Roots/Fast.hs
Use RealField/RealRing where possible instead of their constituents.
[numerical-analysis.git] / src / Roots / Fast.hs
index 47fa512a75476310403d1faed03b9c54bdabe171..78c299ad6a2cc39629b409bff5eed86787a3ca20 100644 (file)
@@ -13,15 +13,14 @@ import Data.List (find)
 import Normed
 
 import NumericPrelude hiding (abs)
-import Algebra.Absolute
-import Algebra.Field
-import Algebra.Ring
-
-has_root :: (Algebra.Field.C a,
-             Ord a,
-             Algebra.Ring.C b,
-             Ord b,
-             Algebra.Absolute.C b)
+import qualified Algebra.Absolute as Absolute
+import qualified Algebra.Field as Field
+import qualified Algebra.RealRing as RealRing
+import qualified Algebra.RealField as RealField
+
+has_root :: (RealField.C a,
+             RealRing.C b,
+             Absolute.C b)
          => (a -> b) -- ^ The function @f@
          -> a       -- ^ The \"left\" endpoint, @a@
          -> a       -- ^ The \"right\" endpoint, @b@
@@ -61,11 +60,9 @@ has_root f a b epsilon f_of_a f_of_b =
     c = (a + b)/2
 
 
-bisect :: (Algebra.Field.C a,
-           Ord a,
-           Algebra.Ring.C b,
-           Ord b,
-           Algebra.Absolute.C b)
+bisect :: (RealField.C a,
+           RealRing.C b,
+           Absolute.C b)
        => (a -> b) -- ^ The function @f@ whose root we seek
        -> a       -- ^ The \"left\" endpoint of the interval, @a@
        -> a       -- ^ The \"right\" endpoint of the interval, @b@
@@ -119,8 +116,8 @@ fixed_point_iterations f x0 =
 --   We also return the number of iterations required.
 --
 fixed_point_with_iterations :: (Normed a,
-                                Algebra.Field.C b,
-                                Algebra.Absolute.C b,
+                                Field.C b,
+                                Absolute.C b,
                                 Ord b)
                             => (a -> a)  -- ^ The function @f@ to iterate.
                             -> b        -- ^ The tolerance, @epsilon@.