diff options
author | Alberto Ruiz <aruiz@um.es> | 2010-09-08 08:58:35 +0000 |
---|---|---|
committer | Alberto Ruiz <aruiz@um.es> | 2010-09-08 08:58:35 +0000 |
commit | 945ae28d720ab6367a293d8f6a5723b8f7bf835d (patch) | |
tree | 5feee1e23cb70436690a71e85f6bcc4d7bacefc5 /lib/Numeric | |
parent | 06a4d3fecb9b918e4c0497269484b00c814605a4 (diff) |
fixed type of vector norms
Diffstat (limited to 'lib/Numeric')
-rw-r--r-- | lib/Numeric/Container.hs | 24 | ||||
-rw-r--r-- | lib/Numeric/LinearAlgebra/Algorithms.hs | 12 | ||||
-rw-r--r-- | lib/Numeric/LinearAlgebra/Tests.hs | 2 |
3 files changed, 19 insertions, 19 deletions
diff --git a/lib/Numeric/Container.hs b/lib/Numeric/Container.hs index fc4fb0d..a3a039a 100644 --- a/lib/Numeric/Container.hs +++ b/lib/Numeric/Container.hs | |||
@@ -216,13 +216,13 @@ class Num e => Vectors a e where | |||
216 | -- | dot (inner) product | 216 | -- | dot (inner) product |
217 | dot :: a e -> a e -> e | 217 | dot :: a e -> a e -> e |
218 | -- | sum of absolute value of elements (differs in complex case from @norm1@ | 218 | -- | sum of absolute value of elements (differs in complex case from @norm1@ |
219 | absSum :: a e -> e | 219 | absSum :: a e -> RealOf e |
220 | -- | sum of absolute value of elements | 220 | -- | sum of absolute value of elements |
221 | norm1 :: a e -> e | 221 | norm1 :: a e -> RealOf e |
222 | -- | euclidean norm | 222 | -- | euclidean norm |
223 | norm2 :: a e -> e | 223 | norm2 :: a e -> RealOf e |
224 | -- | element of maximum magnitude | 224 | -- | element of maximum magnitude |
225 | normInf :: a e -> e | 225 | normInf :: a e -> RealOf e |
226 | 226 | ||
227 | instance Vectors Vector Float where | 227 | instance Vectors Vector Float where |
228 | norm2 = toScalarF Norm2 | 228 | norm2 = toScalarF Norm2 |
@@ -239,18 +239,18 @@ instance Vectors Vector Double where | |||
239 | normInf = maxElement . vectorMapR Abs | 239 | normInf = maxElement . vectorMapR Abs |
240 | 240 | ||
241 | instance Vectors Vector (Complex Float) where | 241 | instance Vectors Vector (Complex Float) where |
242 | norm2 = (:+ 0) . toScalarQ Norm2 | 242 | norm2 = toScalarQ Norm2 |
243 | absSum = (:+ 0) . toScalarQ AbsSum | 243 | absSum = toScalarQ AbsSum |
244 | dot = dotQ | 244 | dot = dotQ |
245 | norm1 = (:+ 0) . sumElements . fst . fromComplex . vectorMapQ Abs | 245 | norm1 = sumElements . fst . fromComplex . vectorMapQ Abs |
246 | normInf = (:+ 0) . maxElement . fst . fromComplex . vectorMapQ Abs | 246 | normInf = maxElement . fst . fromComplex . vectorMapQ Abs |
247 | 247 | ||
248 | instance Vectors Vector (Complex Double) where | 248 | instance Vectors Vector (Complex Double) where |
249 | norm2 = (:+ 0) . toScalarC Norm2 | 249 | norm2 = toScalarC Norm2 |
250 | absSum = (:+ 0) . toScalarC AbsSum | 250 | absSum = toScalarC AbsSum |
251 | dot = dotC | 251 | dot = dotC |
252 | norm1 = (:+ 0) . sumElements . fst . fromComplex . vectorMapC Abs | 252 | norm1 = sumElements . fst . fromComplex . vectorMapC Abs |
253 | normInf = (:+ 0) . maxElement . fst . fromComplex . vectorMapC Abs | 253 | normInf = maxElement . fst . fromComplex . vectorMapC Abs |
254 | 254 | ||
255 | ---------------------------------------------------- | 255 | ---------------------------------------------------- |
256 | 256 | ||
diff --git a/lib/Numeric/LinearAlgebra/Algorithms.hs b/lib/Numeric/LinearAlgebra/Algorithms.hs index fa6c475..cf86904 100644 --- a/lib/Numeric/LinearAlgebra/Algorithms.hs +++ b/lib/Numeric/LinearAlgebra/Algorithms.hs | |||
@@ -645,9 +645,9 @@ instance Normed (Vector Double) where | |||
645 | pnorm Frobenius = norm2 | 645 | pnorm Frobenius = norm2 |
646 | 646 | ||
647 | instance Normed (Vector (Complex Double)) where | 647 | instance Normed (Vector (Complex Double)) where |
648 | pnorm PNorm1 = realPart . norm1 | 648 | pnorm PNorm1 = norm1 |
649 | pnorm PNorm2 = realPart . norm2 | 649 | pnorm PNorm2 = norm2 |
650 | pnorm Infinity = realPart . normInf | 650 | pnorm Infinity = normInf |
651 | pnorm Frobenius = pnorm PNorm2 | 651 | pnorm Frobenius = pnorm PNorm2 |
652 | 652 | ||
653 | instance Normed (Vector Float) where | 653 | instance Normed (Vector Float) where |
@@ -657,9 +657,9 @@ instance Normed (Vector Float) where | |||
657 | pnorm Frobenius = pnorm PNorm2 | 657 | pnorm Frobenius = pnorm PNorm2 |
658 | 658 | ||
659 | instance Normed (Vector (Complex Float)) where | 659 | instance Normed (Vector (Complex Float)) where |
660 | pnorm PNorm1 = realToFrac . realPart . norm1 | 660 | pnorm PNorm1 = realToFrac . norm1 |
661 | pnorm PNorm2 = realToFrac . realPart . norm2 | 661 | pnorm PNorm2 = realToFrac . norm2 |
662 | pnorm Infinity = realToFrac . realPart . normInf | 662 | pnorm Infinity = realToFrac . normInf |
663 | pnorm Frobenius = pnorm PNorm2 | 663 | pnorm Frobenius = pnorm PNorm2 |
664 | 664 | ||
665 | 665 | ||
diff --git a/lib/Numeric/LinearAlgebra/Tests.hs b/lib/Numeric/LinearAlgebra/Tests.hs index 5b42226..0b4e3bf 100644 --- a/lib/Numeric/LinearAlgebra/Tests.hs +++ b/lib/Numeric/LinearAlgebra/Tests.hs | |||
@@ -240,7 +240,7 @@ normsVTest = TestList [ | |||
240 | ] where v = fromList [1,-2,3:+4] :: Vector (Complex Double) | 240 | ] where v = fromList [1,-2,3:+4] :: Vector (Complex Double) |
241 | x = fromList [1,2,-3] :: Vector Double | 241 | x = fromList [1,2,-3] :: Vector Double |
242 | norm2PropR a = norm2 a =~= sqrt (dot a a) | 242 | norm2PropR a = norm2 a =~= sqrt (dot a a) |
243 | norm2PropC a = norm2 a =~= sqrt (dot a (conj a)) | 243 | norm2PropC a = norm2 a =~= realPart (sqrt (dot a (conj a))) |
244 | a =~= b = fromList [a] |~| fromList [b] | 244 | a =~= b = fromList [a] |~| fromList [b] |
245 | 245 | ||
246 | normsMTest = TestList [ | 246 | normsMTest = TestList [ |