diff options
Diffstat (limited to 'lib/Numeric/LinearAlgebra/Tests')
-rw-r--r-- | lib/Numeric/LinearAlgebra/Tests/Properties.hs | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/lib/Numeric/LinearAlgebra/Tests/Properties.hs b/lib/Numeric/LinearAlgebra/Tests/Properties.hs index 7bb914f..405ce64 100644 --- a/lib/Numeric/LinearAlgebra/Tests/Properties.hs +++ b/lib/Numeric/LinearAlgebra/Tests/Properties.hs | |||
@@ -32,13 +32,13 @@ module Numeric.LinearAlgebra.Tests.Properties ( | |||
32 | svdProp1, svdProp1a, svdProp2, svdProp3, svdProp4, | 32 | svdProp1, svdProp1a, svdProp2, svdProp3, svdProp4, |
33 | svdProp5a, svdProp5b, svdProp6a, svdProp6b, svdProp7, | 33 | svdProp5a, svdProp5b, svdProp6a, svdProp6b, svdProp7, |
34 | eigProp, eigSHProp, eigProp2, eigSHProp2, | 34 | eigProp, eigSHProp, eigProp2, eigSHProp2, |
35 | qrProp, | 35 | qrProp, rqProp, |
36 | hessProp, | 36 | hessProp, |
37 | schurProp1, schurProp2, | 37 | schurProp1, schurProp2, |
38 | cholProp, | 38 | cholProp, |
39 | expmDiagProp, | 39 | expmDiagProp, |
40 | multProp1, multProp2, | 40 | multProp1, multProp2, |
41 | linearSolveProp | 41 | linearSolveProp, linearSolveProp2 |
42 | ) where | 42 | ) where |
43 | 43 | ||
44 | import Numeric.LinearAlgebra | 44 | import Numeric.LinearAlgebra |
@@ -177,10 +177,11 @@ svdProp6b m = s |~| s' && v |~| v' && s |~| s'' && u |~| u' | |||
177 | (s',v') = rightSVC m | 177 | (s',v') = rightSVC m |
178 | (u',s'') = leftSVC m | 178 | (u',s'') = leftSVC m |
179 | 179 | ||
180 | svdProp7 m = s |~| s' && u |~| u' && v |~| v' | 180 | svdProp7 m = s |~| s' && u |~| u' && v |~| v' && s |~| s''' |
181 | where (u,s,v) = svd m | 181 | where (u,s,v) = svd m |
182 | (s',v') = rightSV m | 182 | (s',v') = rightSV m |
183 | (u',s'') = leftSV m | 183 | (u',s'') = leftSV m |
184 | s''' = singularValues m | ||
184 | 185 | ||
185 | ------------------------------------------------------------------ | 186 | ------------------------------------------------------------------ |
186 | 187 | ||
@@ -201,6 +202,16 @@ eigSHProp2 m = fst (eigSH m) |~| eigenvaluesSH m | |||
201 | qrProp m = q <> r |~| m && unitary q && upperTriang r | 202 | qrProp m = q <> r |~| m && unitary q && upperTriang r |
202 | where (q,r) = qr m | 203 | where (q,r) = qr m |
203 | 204 | ||
205 | rqProp m = r <> q |~| m && unitary q && utr | ||
206 | where (r,q) = rq m | ||
207 | upptr f c = buildMatrix f c $ \(r',c') -> if r'-t > c' then 0 else 1 | ||
208 | where t = f-c | ||
209 | utr = upptr (rows r) (cols r) * r |~| r | ||
210 | |||
211 | upperTriang' m = rows m == 1 || down |~| z | ||
212 | where down = fromList $ concat $ zipWith drop [1..] (toLists (ctrans m)) | ||
213 | z = constant 0 (dim down) | ||
214 | |||
204 | hessProp m = m |~| p <> h <> ctrans p && unitary p && upperHessenberg h | 215 | hessProp m = m |~| p <> h <> ctrans p && unitary p && upperHessenberg h |
205 | where (p,h) = hess m | 216 | where (p,h) = hess m |
206 | 217 | ||
@@ -226,3 +237,8 @@ multProp1 (a,b) = a <> b |~| mulH a b | |||
226 | multProp2 (a,b) = ctrans (a <> b) |~| ctrans b <> ctrans a | 237 | multProp2 (a,b) = ctrans (a <> b) |~| ctrans b <> ctrans a |
227 | 238 | ||
228 | linearSolveProp f m = f m m |~| ident (rows m) | 239 | linearSolveProp f m = f m m |~| ident (rows m) |
240 | |||
241 | linearSolveProp2 f (a,x) = not wc `trivial` (not wc || a <> f a b |~| b) | ||
242 | where q = min (rows a) (cols a) | ||
243 | b = a <> x | ||
244 | wc = rank a == q | ||