diff options
author | Alberto Ruiz <aruiz@um.es> | 2007-12-03 10:43:52 +0000 |
---|---|---|
committer | Alberto Ruiz <aruiz@um.es> | 2007-12-03 10:43:52 +0000 |
commit | c520939e33cc895febed271d5c3218457317bba9 (patch) | |
tree | 8661410a5cb946a3ae40e0c0fbacccccd0fd5ada /examples/tests.hs | |
parent | d7d3b731c037fca41bd9128c3da2a582189cb4d9 (diff) |
lapack lu
Diffstat (limited to 'examples/tests.hs')
-rw-r--r-- | examples/tests.hs | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/examples/tests.hs b/examples/tests.hs index 60bef8f..e20f871 100644 --- a/examples/tests.hs +++ b/examples/tests.hs | |||
@@ -187,7 +187,22 @@ bf = (3>|<4) [7,11,15,8,12,16,9,13,17,10,14,18::Double] | |||
187 | 187 | ||
188 | ------------------------------------------------------- | 188 | ------------------------------------------------------- |
189 | 189 | ||
190 | detTest = det m == 26 && det mc == 38 :+ (-3) | 190 | feye n = flipud (ident n) :: Matrix Double |
191 | |||
192 | |||
193 | luTest1 m = m |~| p <> l <> u | ||
194 | where (l,u,p,_) = lu m | ||
195 | |||
196 | detTest1 = det m == 26 | ||
197 | && det mc == 38 :+ (-3) | ||
198 | && det (feye 2) == -1 | ||
199 | |||
200 | detTest2 m = s d1 |~| s d2 | ||
201 | where d1 = det m | ||
202 | d2 = det' m * det q | ||
203 | det' m = product $ toList $ takeDiag r | ||
204 | (q,r) = qr m | ||
205 | s x = fromList [x] | ||
191 | 206 | ||
192 | invTest m = degenerate m || m <> inv m |~| ident (rows m) | 207 | invTest m = degenerate m || m <> inv m |~| ident (rows m) |
193 | 208 | ||
@@ -394,6 +409,14 @@ tests = do | |||
394 | quickCheck $ \(PairM m1 m2) -> mulC m1 m2 == trans (mulF (trans m2) (trans m1 :: CM)) | 409 | quickCheck $ \(PairM m1 m2) -> mulC m1 m2 == trans (mulF (trans m2) (trans m1 :: CM)) |
395 | quickCheck $ \(PairM m1 m2) -> mulC m1 m2 == multiplyG m1 (m2 :: RM) | 410 | quickCheck $ \(PairM m1 m2) -> mulC m1 m2 == multiplyG m1 (m2 :: RM) |
396 | quickCheck $ \(PairM m1 m2) -> mulC m1 m2 == multiplyG m1 (m2 :: CM) | 411 | quickCheck $ \(PairM m1 m2) -> mulC m1 m2 == multiplyG m1 (m2 :: CM) |
412 | putStrLn "--------- lu ---------" | ||
413 | quickCheck (luTest1 :: RM->Bool) | ||
414 | quickCheck (luTest1 :: CM->Bool) | ||
415 | quickCheck (detTest2 . sqm :: SqM Double -> Bool) | ||
416 | quickCheck (detTest2 . sqm :: SqM (Complex Double) -> Bool) | ||
417 | runTestTT $ TestList | ||
418 | [ test "det1" detTest1 | ||
419 | ] | ||
397 | putStrLn "--------- svd ---------" | 420 | putStrLn "--------- svd ---------" |
398 | quickCheck (svdTest svdR) | 421 | quickCheck (svdTest svdR) |
399 | quickCheck (svdTest svdRdd) | 422 | quickCheck (svdTest svdRdd) |
@@ -462,7 +485,6 @@ tests = do | |||
462 | , exponentialTest | 485 | , exponentialTest |
463 | , integrateTest | 486 | , integrateTest |
464 | , polySolveTest | 487 | , polySolveTest |
465 | , test "det" detTest | ||
466 | ] | 488 | ] |
467 | 489 | ||
468 | bigtests = do | 490 | bigtests = do |
@@ -472,6 +494,7 @@ bigtests = do | |||
472 | , test "eigH" $ eigTestSH bigmatc | 494 | , test "eigH" $ eigTestSH bigmatc |
473 | , test "eigR" $ eigTest bigmat | 495 | , test "eigR" $ eigTest bigmat |
474 | , test "eigC" $ eigTest bigmatc | 496 | , test "eigC" $ eigTest bigmatc |
497 | , test "det" $ det (feye 1000) == 1 && det (feye 1002) == -1 | ||
475 | ] | 498 | ] |
476 | 499 | ||
477 | main = do | 500 | main = do |