diff options
Diffstat (limited to 'lib/LinearAlgebra/Linear.hs')
-rw-r--r-- | lib/LinearAlgebra/Linear.hs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/LinearAlgebra/Linear.hs b/lib/LinearAlgebra/Linear.hs index 3e6c55d..7cd1a52 100644 --- a/lib/LinearAlgebra/Linear.hs +++ b/lib/LinearAlgebra/Linear.hs | |||
@@ -37,6 +37,8 @@ class (Container c e) => Linear c e where | |||
37 | divide :: c e -> c e -> c e | 37 | divide :: c e -> c e -> c e |
38 | -- | scale the element by element reciprocal of the object: @scaleRecip 2 (fromList [5,i]) == 2 |> [0.4 :+ 0.0,0.0 :+ (-2.0)]@ | 38 | -- | scale the element by element reciprocal of the object: @scaleRecip 2 (fromList [5,i]) == 2 |> [0.4 :+ 0.0,0.0 :+ (-2.0)]@ |
39 | scaleRecip :: e -> c e -> c e | 39 | scaleRecip :: e -> c e -> c e |
40 | equal :: c e -> c e -> Bool | ||
41 | -- numequal :: Double -> c e -> c e -> Bool | ||
40 | 42 | ||
41 | instance Linear Vector Double where | 43 | instance Linear Vector Double where |
42 | scale = vectorMapValR Scale | 44 | scale = vectorMapValR Scale |
@@ -46,6 +48,7 @@ instance Linear Vector Double where | |||
46 | sub = vectorZipR Sub | 48 | sub = vectorZipR Sub |
47 | mul = vectorZipR Mul | 49 | mul = vectorZipR Mul |
48 | divide = vectorZipR Div | 50 | divide = vectorZipR Div |
51 | equal u v = dim u == dim v && vectorMax (vectorMapR Abs (sub u v)) == 0.0 | ||
49 | 52 | ||
50 | instance Linear Vector (Complex Double) where | 53 | instance Linear Vector (Complex Double) where |
51 | scale = vectorMapValC Scale | 54 | scale = vectorMapValC Scale |
@@ -55,6 +58,7 @@ instance Linear Vector (Complex Double) where | |||
55 | sub = vectorZipC Sub | 58 | sub = vectorZipC Sub |
56 | mul = vectorZipC Mul | 59 | mul = vectorZipC Mul |
57 | divide = vectorZipC Div | 60 | divide = vectorZipC Div |
61 | equal u v = dim u == dim v && vectorMax (liftVector magnitude (sub u v)) == 0.0 | ||
58 | 62 | ||
59 | instance Linear Matrix Double where | 63 | instance Linear Matrix Double where |
60 | scale x = liftMatrix (scale x) | 64 | scale x = liftMatrix (scale x) |
@@ -64,6 +68,8 @@ instance Linear Matrix Double where | |||
64 | sub = liftMatrix2 sub | 68 | sub = liftMatrix2 sub |
65 | mul = liftMatrix2 mul | 69 | mul = liftMatrix2 mul |
66 | divide = liftMatrix2 divide | 70 | divide = liftMatrix2 divide |
71 | equal a b = cols a == cols b && cdat a `equal` cdat b | ||
72 | |||
67 | 73 | ||
68 | instance Linear Matrix (Complex Double) where | 74 | instance Linear Matrix (Complex Double) where |
69 | scale x = liftMatrix (scale x) | 75 | scale x = liftMatrix (scale x) |
@@ -73,6 +79,7 @@ instance Linear Matrix (Complex Double) where | |||
73 | sub = liftMatrix2 sub | 79 | sub = liftMatrix2 sub |
74 | mul = liftMatrix2 mul | 80 | mul = liftMatrix2 mul |
75 | divide = liftMatrix2 divide | 81 | divide = liftMatrix2 divide |
82 | equal a b = cols a == cols b && cdat a `equal` cdat b | ||
76 | 83 | ||
77 | -------------------------------------------------- | 84 | -------------------------------------------------- |
78 | 85 | ||