]> gitweb.michael.orlitzky.com - numerical-analysis.git/commitdiff
Rename "norm" to "norm_2" in the Vector class.
authorMichael Orlitzky <michael@orlitzky.com>
Wed, 17 Oct 2012 21:25:31 +0000 (17:25 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Wed, 17 Oct 2012 21:25:31 +0000 (17:25 -0400)
Add "norm_infty" to the Vector class.

src/TwoTuple.hs
src/Vector.hs

index 1b5e93e151f1f7d8b5f3774e454b4a4589c20b3b..3950fee9afeabd5bfb8d884ca6543c4689873c24 100644 (file)
@@ -21,7 +21,14 @@ instance Functor TwoTuple where
 instance (RealFloat a) => Vector (TwoTuple a) where
   -- The standard Euclidean 2-norm. We need RealFloat for the square
   -- root.
-  norm (TwoTuple x1 y1) = fromRational $ toRational (sqrt(x1^2 + y1^2))
+  norm_2 (TwoTuple x y) = fromRational $ toRational (sqrt(x^2 + y^2))
+
+  -- The infinity norm, i.e. the maximum entry.
+  norm_infty (TwoTuple x y) =
+    fromRational $ max absx absy
+    where
+      absx = abs (toRational x)
+      absy = abs (toRational y)
 
 -- | It's not correct to use Num here, but I really don't want to have
 --   to define my own addition and subtraction.
index 97bb5d8aea2c94a8100ed981bff988d6a9df60ab..6953031d10658a36a6f7da796d88a384458a18b9 100644 (file)
@@ -8,17 +8,22 @@ where
 import Data.Number.BigFloat
 
 class (Num a) => Vector a where
-  norm :: RealFrac b => a -> b
+  norm_2 :: RealFrac b => a -> b
+  norm_infty :: RealFrac b => a -> b
 
 -- Define instances for common numeric types.
 instance Vector Integer where
-  norm = fromInteger
+  norm_2 = fromInteger
+  norm_infty = fromInteger
 
 instance Vector Rational where
-  norm = fromRational
+  norm_2 = fromRational
+  norm_infty = fromRational
 
 instance Epsilon e => Vector (BigFloat e) where
-  norm = fromRational . toRational
+  norm_2 = fromRational . toRational
+  norm_infty = fromRational . toRational
 
 instance Vector Double where
-  norm = fromRational . toRational
+  norm_2 = fromRational . toRational
+  norm_infty = fromRational . toRational