X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FRoots%2FFast.hs;h=0deb1fd6237a5909ea7d15a252f09b524093d1bf;hb=d52e10c90c0b8263af2e6a0152cebf0ad3c70e62;hp=47fa512a75476310403d1faed03b9c54bdabe171;hpb=fe73028041fe3becce6ce1ff268181d55d54a011;p=numerical-analysis.git diff --git a/src/Roots/Fast.hs b/src/Roots/Fast.hs index 47fa512..0deb1fd 100644 --- a/src/Roots/Fast.hs +++ b/src/Roots/Fast.hs @@ -13,15 +13,16 @@ 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.Additive as Additive +import qualified Algebra.Algebraic as Algebraic +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 +62,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,9 +118,9 @@ 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, - Ord b) + Algebraic.C a, + RealField.C b, + Algebraic.C b) => (a -> a) -- ^ The function @f@ to iterate. -> b -- ^ The tolerance, @epsilon@. -> a -- ^ The initial value @x0@.